一、什么是MODBUS?
1.基本概念
MODBUS是MODICON公司(现为施耐德电气公司的一个品牌)Zui先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规约进行数据通讯或传输,不同的系统就可以通讯。目前,在RS232/RS485通讯过程中,更是广泛采用这种规约。
常用的MODBUS 通讯规约有两种,一种是MODBUSASCII,一种是MODBUSRTU。 一般来说,通讯数据量少主要是文本的通讯则采用MODBUSASCII规约,通讯数据数据量大是二进制数值时,多采用MODBUSRTU规约。
在实际的应用过程中,为了解决某一个特殊问题,人们喜欢自己修改MODBUS规约来满足自己的需要(事实上,人们经常使用自己定义的规约来通讯,这样能解决问题,但不太规范)。更为普通的用法是,少量修改规约,但将规约格式附在软件说明书一起,或直接放在帮助中,这样就方便了用户的通讯。
2.MODBUS协议简述
ACRE系列仪表使用的是MODBUS-RTU通讯协议,MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。MODBUS协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着的两个方向传输。主计算机的信号寻址到一台唯一的终端设备(从机),终端设备发出的应答信号以的方向传输给主机。
MODBUS协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而jinxian于响应到达本机的查询信号。
3.查询—回应周期
查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。
回应
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:如寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。
4.传输方式:
传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与MODBUS协议–RTU方式相兼容的传输方式。
每个字节的位:
· 1个起始位
· 8个数据位,Zui小的有效位先发送
· 无奇偶校验位
· 1个停止位
错误检测(Error checking):CRC(循环冗余校验)
5.协议
当数据帧到达终端设备时,它通过一个简单的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任何错误都不会有成功的响应,或者返回一个错误指示帧。
6.数据帧格式
Address | Function | Data | Check |
8-Bits | 8-Bits | N x 8-Bits | 16-Bits |