24.11.12更新
在用hsl的库来进行tcp通讯的时候发现新的高于7.00的库的时候 用
busTcpClient.ReadFromCoreServer(HslCommunication.BasicFramework.SoftBasic.HexStringToBytes( textBox13.Text ) );
这句来进行报文通讯会收发特别慢而且只能通讯一次在查问题的时候在官网看到了新版的方法这个报文不需要加mbap头
官网:
http://api.hslcommunication.cn/html/dc91004f-2a78-e371-c080-b27480978b5d.htm
工作记录
深层原理不记录网上都是
报文分为
mbap头 +PDU(功能码+数据 )
MBAP头:
事务标识符:先理解为和返回的要对应相当于这次沟通事件的名字上传的 00 01 那返回的开头是00 01 的就是这个上传的返回 因为返回和上传可能会有很多所有要区分(简单理解上传的这里是多少返回的就得是多少 上传00 02那返回就是00 02开头)
协议标识符:00 00 就是modbus协议的(这个协议就是modbus tcp所有这里可以默认就是写死的)
后面的报文长度:就是数后面多少位数据(不同的功能码数据的长度会不同,比如写的话还要有写几位写入的数据等等)
从站地址:这个一般在要通讯的东西上设置(这次要通讯的是电批控制器就可以看控制器上设置的多少一般一台就是01 )
PDU ;这部分可以理解为modbus rtu的上传数据少一个从站地址因为从站地址已经在前面的MBAP头里有的
读的03
例子:00 01 00 00 00 06 01 03 00 4A 00 01
读寄存器4A的一个长度
返回
例子00 01 00 00 00 05 01 03 02 00 08