C#实现PLC Modbus通信协议信捷PLC测试与问题解析

项目概述

开发工具:Visual Studio 2008

测试设备:信捷 PLC

开发者水平:菜鸟(自己编写,欢迎批评指正)

功能码支持

  • 01 读取开关
  • 05 写入开关
  • 03 读取单路寄存器
  • 06 写入单路寄存器
  • 10 写入多路寄存器

测试情况与问题

在使用过程中,我测试了读取多位寄存器功能,发现在读取超过8个寄存器时,结果出现了错误。例如,发送命令 03 00 06 62 03 00 16 请求读取22个寄存器,接收数据时出现了以下错误:

接收数据:

03 00 00 00 00 2F 62 03 2C 00 01 00 02 00 03 00 00 00 00 00 00 00 00 00 00 03 00

从第二行开始,数据与第一次重复,导致获取的寄存器信息不正确。此问题可能与数据解析、缓冲区处理或设备设置有关。

请求帮助

请各位专家帮忙诊断并提供改进建议,特别是针对Modbus 协议的读取和写入功能。

开发代码

此项目是基于前人发布的Modbus 类进行修改的,如果功能不全或者有缺陷,欢迎提出。

感谢大家的支持与帮助!

rar 文件大小:207.68KB