- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录
第一章 MODBUS 协议简介
传输方式
协议
数据帧格式
地址(Address)域
功能(Function)域
数据域
错误校验域
错误检测
第二章 MODBUS 功能详解
读数字输出状态(功能码 01)
读数字输入状态(功能码 02)
读数据(功能码 03)
控制 DO (功能码 05)
预置多寄存器(功能码 16)
第一章 MODBUS 协议简介
MODBUS 协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。
MODBUS 协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。
MODBUS 协议只允许在主计算机和终端设备之间通讯,而不允许独立的设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。
传输方式
传输方式是一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与 MODBUS 协议– RTU 方式相兼容的传输方式。
Coding System
Start bit
Data bits
Parity
Stop bit
二进制编码
起始位数据位校 验 停止位
8 位
1 位
8 位
无奇偶校验
1 位
Error checking 错误检测
CRC(循环冗余校验)
[注]瑞士 DAE 公司的网络电力仪表响应查询的时间为 0.1 ~ 1.0 秒(典型值为 0.4 秒) 响应查询的时间指主机命令发出到收到回复的时间。
协议
当数据帧到达终端设备时,它通过一个简单的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、 执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任何错误都不会有成功 的响应。
数据帧格式
Address
Address
8-Bits
Function
8-Bits
Data
N x 8-Bits
Check
16-Bits
地址(Address)域
图 1 – 1 .数据帧格式
地址域在帧的开始部分,由一个字节 8 位(0 ~ 255)组成,这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。当终端发送回一个响应,响应中的从机地址数据便告诉了主机哪台终端正与之进行通信。
功能(Function)域
功能域代码告诉了被寻址到的终端执行何种功能。表 1 – 1 列出了瑞士 DAE 网络电力仪表用到的功能码,以及它们的意义和功能。
表 1 – 1 功能码
代码
意义
行为
01
读 DO 状态
获得数字(继电器)输出的当前状态(ON/OFF)
02
读 DI 状态
获得数字输入的当前状态(ON/OFF)
03
读数据寄存器
获得一个或多个寄存器的当前二进制值
05
控制 DO
控制数字(继电器)输出状态(ON/OFF)
16
预置多寄存器
设定二进制值到一系列多寄存器中
数据(Data)域
数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这 些数据的内容可能是数值、参考地址或者设置值。例如:功能域码告诉终端读取一个寄存器, 数据域则需要指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机 之间的不同内容而有所不同。
错误校验(Check)域
该域允许主机和终端检查传输过程中的错误。有时,由于电噪声和其它干扰,一组数 据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,出错校验使用了 16 位循环冗余的方法(CRC16)。
[注] 发送序列总是相同的 – 地址、功能码、数据和与方向相关的出错校验。
错误检测
循环冗余校验(CRC)域占用两个字节,包含了一个 16 位的二进制值。CRC 值由传
送设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算 CRC 值,然后与接收到的 CRC 域中的值进行比较,如果这两个值不相等,就发生了错误。
CRC 运算时,首先将一个 16 位的寄存器预置为全 1,然后连续把数据帧中的每个字节中的 8 位与该寄存器的当前值进行运算,仅仅每个字节的8 个数据位参与生成 CRC,起始位和终止位以及可能使用的奇偶位都不影响 CRC。
在生成 C
原创力文档


文档评论(0)