全站数据
8 4 2 0 5 8 1

关于C#编写modbus通讯协议的求助

教师成长笔记 | 简单学习,快乐成才!         
问题更新日期:2024-10-14 06:35:48

问题描述

关于C#编写modbus通讯协议的求助希望能解答下
精选答案
最佳答案

C#的行吗 可以的话我再给你大概的代码

拿读数据做例子,其他的功能重要改掉03功能码就行

先组成命令的byte数组

byte[] Dp = new byte[8];

byte[] DpC = new byte;

Dp[0] = 0x01;//这是表的地址,假定是01

Dp = 0x03;//这是功能码,03是读寄存器数据

Dp = 0x00;

Dp = 0x03;//表的相应寄存器地址

Dp = 0x00;

Dp = 0x0C;//表的相应寄存器参数,根据功能码和表的不同,这几个编码有变化

for (int i = 0; i

{

DpC[i] = Dp[i];

}

uint ValCRC;

ValCRC = CRC(DpC);//CRC为自己写的CRC-16校验码的函数,具体的实现这里不给要的话可以发给你

Dp = (byte)(ValCRC % 256);

Dp[7] = (byte)(ValCRC / 256);

然后把这个数组发给串口,编程语言不同发送方式不同

还在程序可以设置波特率,校验什么的,编程语言不同设置方式也不同

然后接受数据,也是一个byte数组

然后自己解析数组,把需要的转化成10进制或者你需要的格式