串口485+modbus通信协议

最近在公司实习,做嵌入式相关,做了一个小东西.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

好吧,自己百度去吧......

猜你喜欢

转载自blog.csdn.net/sinat_39440759/article/details/84978987