最近在公司实习,做嵌入式相关,做了一个小东西.PLC控制智能家居面板按键同步,PLC和面板是公司自己研发生产的(标准的modbus主从站),之间通过MODBUS主从协议和串口485通信。
首先介绍串口485,提到485就会想到232,通过查资料就知道485其实是个加版的232,知道这个就好了,总之就是485比232好用。长距离用485,短距离用232。 (这里232和485的区别我就不多说了,网上多的是!!!)
MODBUS是我第一接触到,是个工业的通信协议。
Modbus协议包括RTU,ASCII,TCP三种模式,其中modbus RTU用的比较多。
modbus RTU通信格式:
地址码(一个字节)+功能码(一个字节)+数据地址(两个字节)+数据码(多个字节)+ CRC校验码(两个字节)
例如:上位机发送指令:fe 03 00 09 00 01 40 07
解析:
FE:设备号254
03:功能码
00 09:访问设备的寄存器地址
00 01:访问的寄存器个数
40 07:CRC校验码
同时控制面板也会回复指令:fe 03 02 00 05 6c 53
解析:
FE:设备号
03:功能码
02:读取到数据的个数
00 05:数据内容
6c 53:CRC校验码
这边特别要注意的就是CRC校验码,每发一串指令校验码都是根据指令生成的,要通过计算算一下。
其实这也就是基本的MODBUS使用,嵌入式设备的源代码还是要更深一步的去学习。
这边提供几个好的博客地址,我学习的时候都是参考他们的。
232与485的区别:
http://m.elecfans.com/article/567680.html
好吧,自己百度去吧......