Modbus协议的常用基本定义——(RS485总线系统应用之2)续

发布者:和谐共融最新更新时间:2015-10-13 来源: eefocus关键字:Modbus协议  基本定义  RS485总线 手机看文章 扫描二维码
随时随地手机看文章
表1. ModBus功能码定义

功能码

名      称

作                     用

01

读取线圈状态

取得一组逻辑线圈的当前状态(ON/OFF)

02

读取输入状态

取得一组开关输入的当前状态(ON/OFF)

03

读取保持寄存器

在一个或多个保持寄存器中取得当前的二进制值。

04

读取输入寄存器

在一个或多个输入寄存器中取得当前的二进制值。

05

强置单线圈

强置一个逻辑线圈的通断状态。

06

预置单寄存器

把二进制值装入一个保持寄存器。

07

读取异常状态

取得8个内部线圈的通断状态,线圈的地址由控制器决定,用户逻辑可将这些线圈定义,以说明从机状态,短报文适宜于迅速读取状态。

08

回送诊断校验数据

把诊断校验数据发送到从机,以对通信结果进行评鉴

09

编程(只用于484)

使主机模拟编程器作用,修改PC从机逻辑。

10

控询(只用于484)

可使主机与一台正在执行长程序任务的从机通信,探询该从机是否已完成操作任务。仅在含功能码9的报文发送后,本功能码才得发送。

11

读取事件计数

可使主机发出单询问,并随即判定操作是否成功,尤其是在该功能或其应答产生通信错误时。

12

读取通信事件记录

可使主机检索每台从机的Modbus事务处理通信事件记录。如果某项事务处理未完成,记录会给出有关错误。

13

编程(184/384 484 584)

可使主机模拟编程器功能,修改PC从机逻辑。

14

探询(184/384 484 584)

可使主机与正在执行长程序任务的从机通信,定期探询该从机是否已完成程序操作。仅在含有功能13的报文发送后,本功能码才得发送。

15

强置多线圈

强置一串连续逻辑线圈的通断。

16

预置多寄存器

把二进制值装入一串连续的保持寄存器。

17

报告从机标识

可使主机判断编址从机的类型及该从机运行指示灯的状态。

18

编程(884和Micro84)

可使主机模拟编程功能,修改PC状态逻辑。

19

重置通信链路

发生非可修正错误后,使从机复位于已知状态。可重置顺序字节。

20

读取通用参数( 584L)

显示扩展存储器文件中的数据信息。

21

写入通用参数(584L)

把通用参数写入扩展存储器文件,或修改。

22~64

保留,作扩展功能备用

 

65~72

保留,作用户功能备用

留作用户功能的扩展编码。

73~119

非法功能

 

120~127

保留

留作内部用。

128~255

保留

用于异常应答。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

表2. ModBus功能码对应的数据类型表

功能码

功能

返回的数据类型

01

02

03

整形,字符型,浮点型,状态字

04

整形,浮点型,状态字

05

06

整形,字符型,浮点型,状态字

08

N/A

重复“回路反馈”信息

15

16

整形,字符型,浮点型,状态字

17

字符型

 [page]

当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为。例如去读取输入的开关状态,或读一组寄存器的数据内容,或读从设备的诊断状态,或允许在从设备中调入、记录、校验程序等。

当从设备回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应)。对正常回应,从设备仅回应相应的功能代码。对异议回应,从设备返回功能代码的最高位为“1”。例如:

一条主设备发往从设备的消息要求读一组保持寄存器,将产生如下功能代码:

0 0 0 0 0 0 1 1 (十六进制03H)

对正常回应,从设备返回同样的功能代码。对异议回应,它将返回:

1 0 0 0 0 0 1 1 (十六进制83H)

除功能代码因异议回应作了修改外,从设备还将一个独特的代码放到回应消息的数据域中,告诉主设备发生了什么错误。

主设备得到异议回应后,典型的处理过程是重发消息。或者请求技术员,帮助诊断发给从设备的消息是否有错。

3.5 数据域

根据网络传输模式,数据域可以由若干个ASCII字符或RTU字节组成。数据域的值由十六进制数构成,范围为00H~FFH。

主设备发给从设备消息的数据域包含从设备必须完成的由功能代码所定义的行为。其中包括了不连续的寄存器地址、要处理项的数目、域中实际数据字节数。

例如,如果主设备需要从从设备读取一组保持寄存器(功能代码03),则必须在数据域中指定起始寄存器地址以及要读的寄存器个数。如果主设备需要向从设备写一组的寄存器(功能代码10十六进制),则必须在数据域中指明要写的寄存器起始地址、要写的寄存器个数以及要写入的数据。

在某种消息中,数据域可以是不存在的(0长度)。例如,主设备要求从设备回应通信事件记录(功能代码0BH),从设备不需任何附加的信息。

3.6 错误检测域

标准的Modbus网络有两种错误检测模式。错误检测域的内容视所选的检测模式而定。

ASCII模式:

当选用ASCII模式时,错误检测域包含两个ASCII字符。这是使用LRC(纵向冗长检测)方法对消息内容计算得出的,不包括开始的冒号符及回车换行符。LRC字符处在回车换行符前面。

RTU模式:

当选用RTU模式时,错误检测域包含一个16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过CRC(循环冗长检测)方法得出的。CRC域附加在消息的最后,CRC的高位字节是发送消息的最后一个字节。

4. Modbus的错误检测方法

    标准的Modbus串行网络采用两种错误检测方法。奇偶校验对每个字符都可用,帧检测(LRC或CRC)应用于整个消息。它们都是在消息发送前由主设备产生的,从设备在接收过程中检测每个字符和整个消息帧。

    用户要给主设备配置一个预先定义的超时时间间隔,这个时间间隔要足够长,以使任何从设备都能作出正常反应。如果从设备检测到传输错误,消息将不会被接收,也不会向主设备作出回应。这样产生的超时事件将触发主设备来处理错误。发往不存在的从设备的地址也会产生超时。

4.1 奇偶校验

    用户可以配置控制器是奇校验或偶校验,也可以是无校验。如果指定了奇或偶校验,将计算每个字符(8个Bit)中“1”的位数(ASCII模式7个数据Bit,RTU中8个数据Bit)。例如字符C5H包含以下8个数据Bit:

1 1 0 0 0 1 0 1

    整个字符“1”的位数是4个。如果便用了偶校验,因为4是偶数,帧的奇偶校验位将是0,使得整个帧的“1”的个数仍是偶数(4)。如果使用了奇校验,帧的奇偶校验位将是1,便得整个帧的“1”的个数是奇数(4+1=5)。

    如果没有指定奇偶校验位,传输时就没有校验位,也不进行校验检测。此时,在要传输的字符帧中增加一个停止位。

4.2 LRC校验

    被应用于ASCII模式,消息包括了一个基于LRC方法的错误检测域。LRC域检测了消息域中除开始的冒号及结束的回车换行号以外的内容。

    LRC域是一个包含8位二进制值的字节。LRC值由发送设备计算并放到消息帧中,接收设备在接收消息的过程中重新计算LRC,并将它和接收消息中的LRC值比较,如果两值不等,说明有错误。

LRC方法是将消息中的8Bit的字节连续累加,丢弃了进位。

4.3 CRC校验

    被应用于RTU模式,消息包括了一个基于CRC方法的错误检测域。CRC域检测了整个消息的内容。

CRC域是两个字节,包含一个16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。

CRC方法比LRC方法繁琐得多,受篇幅限制在此不作介绍。如需了解,请参见本人发表的《CRC校验原理与程序设计》一文。

一个通信实例:

表3是一个以RTU方式读取整数数据的例子。主机向01H号从机发出04H号(读取输入寄存器) 功能码,要求读取从0000H地址开始的2个(16Bit) 输入寄存器的值。CB71H是01H、04H、00H、00H、00H、02H六个数据的CRC校验值。从机应答时将地址和功能码原样发回,并将2个(16Bit)输入寄存器的值0107H和0251H分成4个(8Bit)数据01H、07H、02H、51H发回。258BH是01H、04H、04H、01H、07H、02H、51H七个数据的CRC校验值。

主机请求消息帧(8个字节)

地址

功能码

被读首个寄存器的高位地址

被读首个寄存器的低位地址

被读寄存器的数量的高位

被读寄存器的数量的低位

CRC低位

CRC高位

    

01

04

00

00

00

02

71

CB

从机应答消息帧(9个字节)

地址

功能码

数据个数

第1个数据

第2个数据

第3个数据

第4个数据

CRC低位

CRC高位

01

04

04

01

07

02

51

8B

25

表3. 以RTU方式读取整数数据

 

 

参考文献:

① GB/T 19582.1-2008《基于Modbus协议的工业自动化网络规范》

② Modbus协议中文版  可在互联网上下载

关键字:Modbus协议  基本定义  RS485总线 引用地址:Modbus协议的常用基本定义——(RS485总线系统应用之2)续

上一篇:Modbus协议的常用基本定义——(RS485总线系统应用之2)
下一篇:LIN(Local Interconnect Network)总线技术介绍

推荐阅读最新更新时间:2024-05-03 00:01

多处理器模式下RS485总线在飞机配电系统中的应用
  .引言   飞机配电系统的功能是实现飞机电能的输送、分配及保护控制。随着航空、电子以及计算机技术的高速发展,机载 设备 的数量大幅增加,供电系统容量迅速增长 ,飞机配电系统逐步向着以通信总线为基础的自动配电系统发展。RS485 总线以其协议简单、配置灵活等特点,常作为一种余度总线,用于含有多种数据总线的飞机自动配电系统中 。本文主要探讨多处理器模式下 RS485 总线在飞机配电系统中的应用。   2 .飞机配电系统的结构及通信要求   飞机自动配电系统包括一次配电系统和二次配电系统,其中,一次配电系统的核心控制部件是汇流条功率 控制器  BPCU(Bus Power Control Unit);二次配电系统的控制部件是二次配电
[嵌入式]
RS485总线基本常识
RS485总线协议:在要求通信距离在几十米到上千米时,官方采用RS485总线通信标准。RS485采用平衡发送和差分接受,因此具有抑制共模干扰的能力。又加上总线收发器有高灵敏度,能检查低至200MV的电压,故传输信号能在千米以外得到回复。RS485采用半双工工作莫,任何时候只能有一点处于发送状态,因此,在发送电路有使信号加以控制。RS485用于多点互连时非常方便,可以省去许多信号线。               RS485总线具有以下特性:       1. RS485的电气特性:逻辑“1”以两线间的电压差为+(2—6)V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的
[嵌入式]
基于Modbus协议实现单片机与PLC之间的通讯
1 引言 HMI(人机界面)以其体积小,高性能,强实时等特点,越来越多的应用于工业自动化系统和设备中。它有字母、汉字、图形和图片等不同的显示,界面简单友好。配有长寿命的薄膜按钮键盘,操作简单。它一般采用具有集成度高、速度快、高可靠且价格低等优点的单片机 作为其核心控制器,以实现实时快速处理。 PLC和单片机结合不仅可以提 PLC的数据处理能力,还可以给用户带来友好简洁的界面。本文以 Modbus通讯协议为例,详细讨论了一个人机系统中,如何用C51实现单片机和PLC之间通讯的实例。 2 Modbus通讯协议 Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信
[单片机]
采用Modbus协议实现DCS系统中监控级数据集成
    摘要: Modbus协议实现水泥生产生料系统中不同操作站的监控数据集成,采用ATL开发出基于Modbus通讯协议的一种通用接口组件,使得各异构成站点可以方便地互连。介绍网络的拓扑结构和实现方法,并把Modbus和其它几种协议如NetDDE、OPC的集成方式作了比较和讨论。     关键词: DCS 监控数据集成 Modbus COM 数据集成是DCS系统中的关键。一个典型DCS系统从结构上可分为四层 :现场级、控制级、监控级和管理级。本文讨论的是监控级,在这一级有许多并列的子站,一般采用计算机作为为机接口,各站点可按功能划分,分别采集相应的现场信号和控制某些局部设备。但是,各站点之间不是孤立的,它们必须
[应用]
基于Modbus协议实现单片机与PLC之间的通讯
1 引言 HMI(人机界面)以其体积小,高性能,强实时等特点,越来越多的应用于工业自动化系统和设备中。它有字母、汉字、图形和图片等不同的显示,界面简单友好。配有长寿命的薄膜按钮键盘,操作简单。它一般采用具有集成度高、速度快、高可靠且价格低等优点的单片机 作为其核心控制器,以实现实时快速处理。 PLC和单片机结合不仅可以提 PLC的数据处理能力,还可以给用户带来友好简洁的界面。本文以 Modbus通讯协议为例,详细讨论了一个人机系统中,如何用C51实现单片机和PLC之间通讯的实例。 2 Modbus通讯协议 Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信
[应用]
基于MODBUS协议智能控制系统设计
摘要:针对工业化生产的实际需求,改变工控仪表和控制器价格较高的现状同时降低成本,设计了基于MODBUS协议的智能控制系统。下位机由AVR单片机实现基于MODBUS协议的数据采集和显示,再通过控制电路控制数据变量;上位机用VC++6.0编写基于MODBUS协议的程序,实现数据在上位机界面显示,并且将采集的数据值保存到SQLsever2000数据库,同时绘制数据的动态曲线图,上下位机通过RS-485总线通讯。系统结构简单,成本低廉,具有一定实用价值。 关键词:AVR单片机;MODBUS协议;VC++6.0;SQLsever2000;RS-485总线 O 引言 现场总线作为生产过程自动化发展的重点,对推动自动化技术起到巨大的推动作
[工业控制]
基于<font color='red'>MODBUS协议</font>智能控制系统设计
基于ARM的医用数据采集系统的人机接口设计
0 引言 医用数据采集系统能够为医务人员及时有效的提供患者的第一手数据,有助于加强医院的现代化信息管理和提高工作效率。而在家庭保健方面,它能够满足人们在快节奏的工作生活中及时准确的获知自身及家人的健康状况。在设备的日常使用中,良好的人机接口设计,也将为设备使用人员节约大量的时间并提供极大的便捷。本文主要以LM3S3748为核心,并采用TFT液晶作为系统的显示设备,而用触摸屏和手柄控制器作为系统的控制设备,介绍了其人机接口的设计方法。 1 系统硬件设计    系统人机接口主要包括TFT液晶、触摸屏和手柄控制器,其结构框图如图1所示。其中TFT液晶亮度好,对比度高,层次感强,颜色鲜艳,因此,在不考虑耗电的情况下,TFT
[医疗电子]
基于ARM的医用数据采集系统的人机接口设计
如何提高应用在工业现场RS485总线的稳定性和可靠性
在当今信息通讯高速发展的阶段,人们在充分享受网络给人类带来的喜悦。随着网络的普及和发展,使得各种控制设备网络化成为可能。自动化监控、安全防护、门禁考勤及工业自动化系统得到迅速普及和应用。在工业控制设备之间中长距离通信的诸多方案中,RS-485系统总线因硬件设计简单、控制方便、成本低廉等优点广泛应用于工厂自动化、工业控制、小区监控、水利自动测控等领域,随着RS485总线系统的广泛应用,RS485总线系统也越来越大,RS485总线外挂的485设备越来越多,从而导致485总线的稳定性越来越差。现在市场上已经有可以负载128,256台甚至400台485设备的转换器,由于485总线使用总线连接形式,形成如果有一个485设备出现问题,就导致整个
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved