学习modbus第一,二天
modbus是将一个A能同时连接多个B的一种协议,支持RS232(全双工)和RS485串口(半双工)
协议内容一般是"设备地址域+功能码+数据+校验位"
进行调试模拟时需要3个设备---一个是vspd(用于建立两个串口之间的连接,比如COM3和COM4),一个是Modbus Poll(主站模拟),最后一个是Modbus Slave(从站模拟)



在这些软件中设置好设备地址,寄存器地址,寄存器数量,功能码,以及一些其他的寄存器数据就可以直接进行连接通信,不需要自己写协议的代码
modbus通信和TCP,UDP差不多,都是一个设备A向另一个设备B发送信息,然后另一个设备B接受到后进行解析、处理,处理好再把对应的响应包发送给A,A再进行解析
在modbus协议中的数据部分包括寄存器的地址+操作的寄存器的数量(至少主站向从站发送的数据包是这样的),而寄存器的地址在一些操作手册中都有,一些PLC的寄存器地址可以换算为modbus寄存器地址(学校里有焊接机器人的设备,是不是也可以用modbus读取对应PLC处的参数?)
modbus协议有两种数据包类型,一个是ASCII数据包,一个是RTU数据包(常用)
ASCII数据包是有起始标记位,具体数据包格式为"开始位(字符':')+设备地址+功能码+数据+LRC校验位+结束位",特点是发送数据包时连续,通过起始位识别数据包,速度快
RTU数据包是每个数据包的发送之间都有至少3.5个字符的发送时间(和波特率有关),所以是靠这个时间差来识别数据包的,当然和ASCII数据包的区别是没有起始位以及校验方式是CRC校验(具体校验方式不需要了解,都有具体代码,开放时直接调用就行),还有校验位是将这个包的数据进行特定计算得到,作用是防止传输过程数据包改变
一些常见的功能码有:01--读线圈状态,02--读离散输入状态,03--读保持寄存器,04--读输入寄存器,05--写单个线圈,06--写单个保持寄存器,15--写多个线圈,16--写多个保持寄存器
浙公网安备 33010602011771号