当前位置:首页 > MODBUS学习笔记
Modbus学习笔记-20150414
一、 MODBUS学习参考资料:
1、 参考了阳光光伏逆变器,科诺伟业,上能的MODBUS通信协议,并学习了他
们的通信例程介绍。 2、 MODBUS的ModScan32调试助手功能学习应用。
3、 网上搜索例程和学习资料,参考了ModbusRTUSlave例程。
二、 MODBUS简介:
Modbus 协议是由莫迪康提出的一种串口驱动通信协议。Modbus协议是主从结构,即主机发送请求给从机,从机收到请求后根据要求返回主机需要的数据或状态。
Modbus协议有两种数据格式:RTU和ASCII模式,在相同的波特率下,RTU的能够传输的数据量比较大。
目前应用较多的是Modbus RTU和Modbus TCP/IP两种协议。最常用的Modbus通信调试工具就是ModScan32和ModSim32。通过调试工具可以模拟主从收发协议通信状态。同时可以更改发送数据内容。MODBUS通过CRC校验方式(待续)。
这里所说的寄存器信息地址是存放于控制器中的地址,不一定是PLC地址,可以是任意控制器中的地址,一般用10进制描述。
具体见MODSAN32使用说明。
在Modbus Point Type就是要读取的寄存器区:
“01 : COIL STATUS ” 指1号命令DO读线圈状态寄存器
“02 : INPUT STATUS ” 指2号命令DI读开关输入状态寄存器 “03 : HOLDING REGUSTER ” 指3号命令AO读保存寄存器 “04 : INPUT REGISTER ” 指4号命令AI读输入寄存器
在Connection中选择PC中的COM口,和协议格式,需要保持一致。Address表示的是寄存器的起始地址,Device Id表示设备地址,Length表示寄存器的数据长度。
Modbus Point Type表示的是命令类型,以上几点必须和ModScan32设置保持一致。
串口监控抓到的数据。01 03 00 00 00 10 44 06
01:从机地址。03:控制命令字。00 00:寄存器起始地址,高位在前,地位在后。 00 10:寄存器数据长度,高位在前,地位在后。
44 06:CRC校验值,低位在前,高位在后。
CRC的计算:
CRC计算是通过查表获得CRC校验值和传输过来的CRC值进行比较,来验证。 CRC计算方式代码如下:
传递数据去除最后两位CRC位获取CRC值,CRC计算值低位在前,高位在后。 CRC表入下图:
一帧数据的判断方式:按帧间隔时间来判断。(100ms以上)
共分享92篇相关文档