• 大小: 21.34MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-02
  • 语言: C/C++
  • 标签: windows7  modbus  rtu  master  C  

资源简介

亲测windows7下可用

资源截图

代码片段和文件信息

#include 
#ifndef _MSC_VER
#include 
#endif
#include 
#include 
#include 

#include “modbus.h“














#define LOOP            1
#define SERVER_ID       17
#define ADDRESS_START   0
#define ADDRESS_END     99




int main(void)
{
  modbus_t *ctx;
  int rc;
  int nb_fail;
  int nb_loop;
  int addr;
  int nb;
  uint8_t *tab_rq_bits;
  uint8_t *tab_rp_bits;
  uint16_t *tab_rq_registers;
  uint16_t *tab_rw_rq_registers;
  uint16_t *tab_rp_registers;


  ctx = modbus_new_rtu(“COM3“ 19200 ‘N‘ 8 1);
  modbus_set_slave(ctx SERVER_ID);

  modbus_set_debug(ctx TRUE);

  if(modbus_connect(ctx)==-1)
  {
    fprintf(stderr “Connection failed: %s\n“ 
    modbus_strerror(errno));
modbus_free(ctx);
return -1;
  }

  
  nb = ADDRESS_END-ADDRESS_START;

  
  tab_rq_bits = (uint8_t *)malloc(nb * sizeof(uint8_t));
  memset(tab_rq_bits 0 nb * sizeof(uint8_t));

  tab_rp_bits = (uint8_t *)malloc(nb * sizeof(uint8_t));
  memset(tab_rp_bits 0 nb * sizeof(uint8_t));

  tab_rq_registers = (uint16_t *)malloc(nb * sizeof(uint16_t));
  memset(tab_rq_registers 0 nb * sizeof(uint16_t));

  tab_rp_registers = (uint16_t *)malloc(nb * sizeof(uint16_t));
  memset(tab_rp_registers 0 nb * sizeof(uint16_t));

  tab_rw_rq_registers = (uint16_t *)malloc(nb * sizeof(uint16_t));
  memset(tab_rw_rq_registers 0 nb * sizeof(uint16_t));

  nb_loop = nb_fail = 0;
  while(nb_loop++  {

    for(addr = ADDRESS_START; addr < ADDRESS_END;addr++)
{
  int i;


  for(i=0; i   {
    tab_rq_registers[i] = 
(uint16_t)(65535.0*rand()/(RAND_MAX+1.0));
tab_rw_rq_registers[i]=~tab_rq_registers[i];
tab_rq_bits[i] = tab_rq_registers[i] % 2;
  }
  nb = ADDRESS_END - addr;

 
  rc = modbus_write_bit(ctx addr tab_rq_bits[0]);
  if(rc!=1)
  {
    printf(“ERROR modbus_write_bit (%d)\n“ rc);
printf(“Address = %d value = %d\n“ addr tab_rq_bits[0]);
nb_fail++;
  }
  else
  {

    rc = modbus_read_bits(ctx addr 1 tab_rp_bits);
if(rc!= 1 || tab_rq_bits[0]!=tab_rp_bits[0])
{
  printf(“ERROR modbus_read_bits single (%d)\n“ rc);
  printf(“address = %d\n“ addr);
  nb_fail++;
}
  }


  rc = modbus_write_bits(ctx addr nb tab_rq_bits);
  if(rc != nb)
  {
    printf(“ERROR modbus_write_bits (%d)\n“ rc);
printf(“Address = %d nb = %d\n“ addr nb);
nb_fail++;
  }
  else
  {

    rc = modbus_read_bits(ctx addr nb tab_rp_bits);
if(rc != nb)
{
  printf(“ERROR modbus_read_bits\n“);
  printf(“Address = %d nb = %d\n“ addr nb);
  nb_fail++;
}
else
{

  for(i=0;i   {
    if(tab_rp_bits[i] != tab_rq_bits[i])
{
  printf(“ERROR modbus_read_bits\n“);
  printf(“Addr=%d Val=%d(0x%X) != %d (0x%x)\n“
      addr tab_rq_bits[i] tab_rq_bits[i]
  tab_rp_bits[i] tab_rp_bits[i]);
  nb_fail+

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-06-29 09:56  TestRtuMaster\
     目录           0  2017-06-29 09:05  TestRtuMaster\Debug\
     文件       32256  2017-06-20 13:04  TestRtuMaster\Debug\TestRtuMaster.exe
     文件         406  2017-06-20 13:04  TestRtuMaster\Debug\TestRtuMaster.exe.manifest
     文件      363372  2017-06-20 13:04  TestRtuMaster\Debug\TestRtuMaster.ilk
     文件      445440  2017-06-20 13:04  TestRtuMaster\Debug\TestRtuMaster.pdb
     目录           0  2017-06-29 09:46  TestRtuMaster\Release\
     文件        9728  2017-06-29 09:46  TestRtuMaster\Release\TestRtuMaster.exe
     文件      289792  2017-06-29 09:46  TestRtuMaster\Release\TestRtuMaster.pdb
     目录           0  2017-06-29 09:05  TestRtuMaster\TestRtuMaster\
     目录           0  2017-06-29 09:05  TestRtuMaster\TestRtuMaster\Debug\
     文件       15230  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\CL.read.1.tlog
     文件         354  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\CL.write.1.tlog
     文件        1034  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.Build.CppClean.log
     文件         381  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.exe.intermediate.manifest
     文件          51  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.lastbuildstate
     文件        2133  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.log
     文件       39304  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.obj
     文件           0  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\TestRtuMaster.write.1.tlog
     文件         674  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\cl.command.1.tlog
     文件        1388  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\link.command.1.tlog
     文件        2800  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\link.read.1.tlog
     文件         692  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\link.write.1.tlog
     文件         450  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\mt.command.1.tlog
     文件         174  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\mt.read.1.tlog
     文件         290  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\mt.write.1.tlog
     文件      396288  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\vc100.idb
     文件      110592  2017-06-20 13:04  TestRtuMaster\TestRtuMaster\Debug\vc100.pdb
     目录           0  2017-06-29 09:46  TestRtuMaster\TestRtuMaster\Release\
     文件       15386  2017-06-29 09:46  TestRtuMaster\TestRtuMaster\Release\CL.read.1.tlog
     文件         362  2017-06-29 09:46  TestRtuMaster\TestRtuMaster\Release\CL.write.1.tlog
............此处省略32个文件信息

评论

共有 条评论