实点科技XB6S系列串行通讯模块,支持RS485/RS422/RS232三种通讯接口,支持Modbus RTU主从/Modbus ASCII主从/Freeport多种通讯模式。对比常规配置Modbus用法,若节点参数配置数量少于实际使用或替换其他品牌又不想程序做过多变更,需用到编程进行报文通讯,下面就讲解一下自由口模式下程序编辑Modbus报文用法。
↑实点科技串行通讯模块XB6S-C01SP
一、自由口和Modbus联系
从本质上来说都属于串口通讯,基于串口线(485/422/232)基础上进行报文通讯。Modbus对报文要求存在格式限制,包含帧结构 = 地址 + 功能码 + 数据 + 校验,但自由口本身不存在任何限制,即为编写发送统一形式,没有报文的格式要求。所以在一定程度下,通过自由口编辑,只要符合Modbus报文的格式,即可以对设备进行Modbus通讯。
二、参数配置
串口参数与连接保持一致即可,通讯模式选择自由口请求模式(包含请求过程以及等待延时),并打开了控制与状态模式且对错误行为改成保持。
根据手册可对模块自由口进行配置:节点1参数1配置请求模式控制字16#20(10#32),节点2参数1输入配置16字节-16#D04(10#3332),节点3参数1输出配置16字节-16#E04(10#3589),以及输出结束加上CRC16校验16#F02(3842)。此步骤是铺垫报文占用,以及添加对报文校验。
三、过程数据
设定参数完成,现在就可以对过程数据进行填写了。
报文举例 01 03 00 00 00 02 C4 0B
返回 01 03 04 AB CD 12 34 46 9F
这里希望模块通过03功能码编辑报文读取到01从站地址00 00后00 02个保持型寄存器内部数据,此次通过Modbus Slave进行Modbus从站仿真。
下行数据:
输出数据1:控制报文使能;
输出数据2:输出报文的字节总长度(这里的8包含填写报文以及自动添加的CRC检验);
输出数据3、4:异常清零动作(配置参数里的错误行为改为保持时,此处默认0即可);
输出数据5:发送报文的第一个数据。
上行数据:
输入数据1:返回报文的状态字;
输入数据2:返回报文是否存在错误;
输入数据3:接受的报文长度(可以比较Modbus标准报文进行校准,返回是否正常);
输入数据4、5:接收异常计数(数据长度不完全匹配则会产生此类计数告警);
输入数据6、7:接收数据计数(每次返回数据则计数加1,可检验是否是新的报文);
输入数据8:接收报文的第一个数据。
我们通过截断数据区可以看到ab,cd,12,34为寄存器内当前的数据,即完成在自由口上的Modbus通讯。
注:具体参数定义如图所示
以上就是串行通讯模块XB6S-C01SP自由口模式下程序编辑Modbus报文用法,感谢您的观看!