回复:应用探讨——S7-200 PLC Modbus通讯应用探讨

Automann

  • 帖子

    6168
  • 精华

    138
  • 被关注

    308

论坛等级:至圣

注册时间:2004-12-23

普通 普通 如何晋级?

发布于 2011-07-28 19:40:59

25楼

modbus的报文传输模式
串行链路上的modbus协议有ASCII和RTU(远程终端单元)这两种报文传输模式,同一modbus网络上所有的站都必须选择相同的传输模式和串口参数。
(1)ASCII模式
当控制器设为在modbus网络上以ASCII(美国标准信息交换代码)模式通信时,报文帧中的每个8位字节都转换为两个ASCII字符发送。下面是ASCII模式的报文格式:
:地址 功能码 数据字节数 数据1……数据n LRC高字节 LRC低字节 回车 换行
报文中的每个ASCII字符都由十六进制字符组成,传输的每个字符包含一个起始位、7个数据位、一个奇偶校验位和一个停止位;如果没有校验位,则有两个停止位。modbus协议需要对数据进行校验,串行协议中除了奇偶校验外,ASCII模式采用纵向冗余校验(LRC),计算LRC时不包括开始的冒号符、LRC本身和回车换行符。
(2)RTU模式
modbus网络上的RTU模式的报文以字节为单位进行传输,一个字节由两个十六进制数组成。在同样的波特率下,传输效率比ASCII模式的高。
传输的每个字节包含一个起始位,8个数据位(先发送最低的有效位),奇偶校验位、停止位与ASCII模式的相同,报文最长为256字节。
modbus的RTU模式报文的最后两个字节是循环冗余校验码(CRC)。其校验方式是将整个报文的所有字节(不包括最后两个字节)按规定的方式进行位移并进行XOR(异或)计算。接收方在收到该字符串时按同样的方式进行计算,并将结果与收到的循环冗余校验码进行比较,如果一致则认为通信正确,如果不一致,则认为通信有误,从站将发送CRC错误应答。modbus中RTU采用CRC-16的冗余校验方式。
下图是modbus RTU通信帧的基本结构,从站地址为0~247,它和功能码均占一个字节,命令帧中PLC地址区的起始地址和CRC各占一个字,数据以字或字节为单位(与功能码有关),以字为单位时高字节在前,低字节在后。但是CRC的低字节在前,高字节在后。
地址 功能码 数据1……数据n CRC高字节 CRC低字节
modbus包括多种功能,每一功能都有相应的功能代码。最基本的功能主要包括AI/AO、DI/DO数据的传送。
modbus除了定义通信功能码外,同时还定义了出错码,这有助于通信主站发现通信的错误内容和原因,并采取相应措施,从而保证了通信的可靠进行。
modbus定义的出错信息为:指定的地址错误、指定的数据量出错、从站自身的错误、无法应答请求或执行要求指令、从站无暇处理主站发送的通信请求指令等。错误信息对应错误代码。主站在接收到错误码后,根据错误的原因采取相应措施。例如改变数据地址、加大发送间隔和重发等。
《PLC编程及应用》和《S7-1200编程及应用》详细介绍了实现PLC与其他设备的modbus RTU通信的方法。
追求完美
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33265条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。