登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:现场总线Modbus

点击:1411 回复:1

      modbus是美国的modicon公司开发的一种报文传输协议,1979年该公司成为施耐德公司的一部分。modbus协议在工业控制中得到了广泛的应用,它已经成为一种通用的工业标准,该协议支持rs-232、rs-422、rs-485和以太网设备。不同厂商生产的控制设备通过modbus协议可以连成通信网络,进行集中监控。许多工控产品,例如plc、变频器、人机界面、dcs和自动化仪表等,都在广泛地使用modbus协议。
      根据传输网络类型的不同分为串行链路上的modbus和基于tcp/ip协议的modbus。
      modbus串行链路协议是一个主-从协议,采用请求-响应方式,主站发出带有从站地址的请求报文,具有该地址的从站接收到后发出响应报文进行应答。
      modbus协议位于osi模型的第二层。串行总线中只有一个主站,可以有1~247个从站。modbus通信只能由主站发起,从站在没有收到来自主站的请求时,不会发送数据,从站之间也不会互相通信。
      2.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通信的方法。
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=129031&Name=liaochangchu
10-11-15 08:43
modbus串行链路协议是一个主-从协议,采用请求-响应方式,主站发出带有从站地址的请求报文,具有该地址的从站接收到后发出响应报文进行应答。
      modbus协议位于osi模型的第二层。串行总线中只有一个主站,可以有1~247个从站。modbus通信只能由主站发起,从站在没有收到来自主站的请求时,不会发送数据,从站之间也不会互相通信。
楼主这一小段话是什么意思,,,能不能详细解说下???
10-11-15 10:06

工控新闻

更多新闻资讯