开放型 MODBUS-TCP规范(中文版)2

本文详细介绍了MODBUS-TCP通信协议,包括强制多点线圈、读写一般参考值、掩膜写寄存器、读/写寄存器等指令的请求和响应格式,以及异常代码和处理。此外,还探讨了MODBUS/TCP的客户机和服务器设计,包括多线程和单线程服务器的实现,并提供了性能和超时设定的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导读:
   5.3 等级2指令详述
   5.3.1 强制多点线圈 (FC 15)
  
   请求
  
  Byte 0: FC = 0F (16进制)
  Byte 1-2: 参考数值
  Byte 3-4: 比特数 (1-800)
  Byte 5: 字节数 (B = (比特数 + 7)/8)
  Byte 6-(B+5): 写入的数据 (最小意义位 = 第一个线圈)
  
   响应
  
  Byte 0: FC = 0F (16进制)
  Byte 1-2: 参考数值
  Byte 3-4: 比特数
  
   异常
  
  Byte 0: FC = 8F (16进制)
  Byte 1: 异常代码 = 01 or 02
  
   示例
  
  当参考值为0(在Modicon 984中为00001)时给3线圈写入值0,0,1
  
  0F 00 00 00 03 01 04 => 0F 00 00 00 03
  
  注意到返回的数据的格式和big-endian 体系结构不同。而且此请求如果调用乘法指令字且这些指令不以16位为界排列,那么该请求将在从站得到计算强化。
  
   5.3.2 读一般参考值 (FC 20)
  
   请求
  
  Byte 0: FC = 14 (16进制)
  Byte 1: 请求余项的字节数 (=7 x 组数)
  Byte 2: 第一组的参考值类型 = 适合于 6xxxx 扩展寄存外存储器的06
  Byte 3-6: 第一组的参考数值
  = 适于 6xxxx 外存储器的存储器偏移量
  = 适于 4xxxx 寄存器的32位参考数值
  Byte 7-8: 第一组的指令
  Bytes 9-15: (至于2-8字节,适于第二组)
  . . .
  
   响应
  
  Byte 0: FC = 14 (16进制)
  Byte 1: 响应的全部字节数
  (=组数+ 组的总的字节数)
  Byte 2: 第一组的字节数 (B1=1 + (2 x 指令数))
  Byte 3: 第一组的参考类型
  Byte 4-(B1+2): 第一组的寄存器值
  Byte (B1+3): 第二组的字节数 (B2=1 + (2 x 指令数))
  Byte (B1+4): 第二组的参考类型
  Byte (B1+5)-(B1+B2+2): 第二组的寄存器值
  . . .
  
   异常
  
  Byte 0: FC = 94 (16进制)
  Byte 1: 异常代码 = 01 或 02或03或04
  
   示例
  
  参考值为1时读1扩展寄存器: 2 (在 Modicon 984中外存储器1偏移量2)得到 16进制值1234
  
  14 07 06 00 01 00 02 00 01 => 14 04 03 06 12 34
  
  (将来)
  
  参考值0时读1寄存器返回16进制值1234,参考值5时读2寄存器返回16进制值5678和9abc。
  
  14 0E 04 00 00 00 00 00 01 04 00 00 00 05 00 02 => 14 0A 03 04 12 34 05 04 56 78 9A BC
  
  注意传输尺寸限制很难用数学公式精确定义。概括说来,由于缓冲的大小的限制以及考虑到每个请求和响应数据帧的总长度请求和响应的消息尺寸均限于256个字节。如果从站由于响应太大而拒绝发送此消息将产生异常类型04。
  
   5.3.3 写一般参考值(FC 21)
  
   请求
  
  Byte 0: FC = 15 (16进制)
  Byte 1: 请求余额的字节数
  Byte 2: 第一组的参考值类型= 6xxxx 扩展寄存器存储器的06
  Byte 3-6: 第一组的参考数值
  = 适于 6xxxx 外存储器的存储器偏移量
  = 用于 4xxxx 寄存器的32 位的参考数值
  Byte 7-8: 第一组的指令数 (W1)
  Byte 9-(8 + 2 x W1): 第一组的寄存器数据
  
  (从字节2开始为其它组复制组的数据帧)
  . . .
  
   响应
  
  响应是对询问的直接回应
  
  Byte 0: FC = 15 (16进制)
  Byte 1: 请求余额的字节数
  Byte 2: 第一组的参考值类型 = 6xxxx 扩展寄存器存储器的06
  Byte 3-6: 第一组的参考数值
  = 6xxxx 外存储器的存储器偏移量
  =用于 4xxxx 寄存器的32 位的参考数值
  Byte 7-8: 第一组的指令数 (W1)
  Byte 9-(8 + 2 x W1): 第一组的寄存器数据
  
  (从字节2开始为其它组复制组的数据帧)
  . . .
  
   异常
  
  Byte 0: FC = 95 (16进制)
  Byte 1: 异常代码= 01 或 02或03或04
  
   示例
  
  参考值为1时写1扩展寄存器: 2 (在 Modicon
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值