ModBus简单来说就是一种半双工通讯的一主多从闭环式传输方式。
核心就是主机发送查询从机命令。
无论是查询还是写入都是一种查询机制!
从机不会主动发送任何数据在总线上。主机会发布查询消息,查询某一从机的状态,从机负责回复状态。
为了实现一主多从,消息帧内加入了地址选项。也就是每一个从机对应一个地址
数据接收到一帧数据后以3.5个字符时间作为一帧数据结束的标志!
这句话这么理解,如果是串口,串口接收完这么一堆数据后如何判定这是ModBus的数据,就是看有没有这后面的T1-T2-T2-T4时间段。这时间段就是用3.5个字符传输时间总和来计算的。
判定一帧数据结束:3.5Byte时间。
假设速度9600bit/s
那么1字节=10位=1起始位+8数据位+0校验位+1结束位
1秒传输960Byte
1Byte =1.04ms
3.5Byte =3.64ms
总结:如果用单片机定时器以1Ms定时器计算,就是4ms以上定时判定Modbus的结束标志。
自此我们可以去设计一下实现方法:
单片机资源:
定时器一个,串口一个
单片