您的位置:首页 > 其它

MODBUS通信协议精析(未完成待续)

2016-01-09 19:07 141 查看
今天突然碰到了MODBUS问题:

modbus协议是一种协议标准:他主要有三种形式:

Modbus
协议包括
ASCII

RTU

TCP
等,并没有规定物理层
ASCII、RTU、TCP等,并没有规定物理层(也就是没有规定以何种电平形式进行传输RS232还是RS485)。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。

下面我来简单的给大家介绍一下,对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。所以在这里我仅介绍一下Modbus的ASCII和RTU协议。

下表是ASCII协议和RTU协议进行的比较:

协议

开始标记

结束标记

校验

传输效率

程序处理

ASCII

:(冒号)

CR,LF

LRC



直观,简单,易调试

RTU





CRC



不直观,稍复杂

而这两个协议的一个主要不同点还有一个数据的发送方式不一样,比方说我要发送一个数值255,在ASC码协议和RTU里分别发送不同的16进制数。
255是10进制数,变成16进制数是00FF,

通过比较可以看到,ASCII协议和RTU协议相比拥有开始和结束标记,因此在进行程序处理时能更加方便,而且由于传输的都是可见的ASCII字符,所以进行调试时就更加的直观,另外它的LRC校验也比较容易。但是因为它传输的都是可见的ASCII字符,RTU传输的数据每一个字节ASCII都要用两个字节来传输,比如RTU传输一个十六进制数0xF9,ASCII就需要传输’F’’9’的ASCII码0x39和0x46两个字节,这样它的传输的效率就比较低。所以一般来说,如果所需要传输的数据量较小可以考虑使用ASCII协议,如果所需传输的数据量比较大,最好能使用RTU协议。

Modbus
协议包括
ASCII

RTU

TCP
等,并没有规定物理层
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: