MODBUS通信规约解析
- 格式:doc
- 大小:91.50 KB
- 文档页数:13
ModBus通信详解,可收藏!导语:ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。
其系统结构既包括硬件、亦包括软件。
它可应用于各种数据采集和过程监控。
ModBus网络只有一个主机,所有通信都由他发出。
网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。
采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。
了解Modbus通讯协议是怎么回事,在现场就可以用各种第三方的小软件做通讯测试了。
Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。
此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。
标准的Modicon控制器使用RS232C实现串行的Modbus。
Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master 端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。
Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。
另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave 站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。
因此,Modbus协议的可靠性较好。
对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU 协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。
1通讯传送方式:通讯传送分为独立的信息头,和发送的编码数据。
MODBUS协议一般说明1.1.1交换特点MODBUS是一种主/从规约,它允许读或写一个或多个字(16位)操作,但任何情况下都不支持字节的读/写。
信息交换是以主站采取主动实现的,即由主站启动交换。
除广播命令外,所有的一个完整交换由下行和上行两个报文组成:·下行报文:主站发出的一个请求·上行报文:从站发回的一个回答图1.1 一般信息交换图图1.2 广播方式信息交换图自主站发出的请求,一般情况下,只可发送到某一指定的从站(由请求帧第一个字节中规定的从站号码来辨认),如图1.1所示。
在广播方式下(从站号码为0),此请求则发送到全部从站,当然,规约规定广播命令必须是写命令,并且从站也不发送回答,如图1.2所示。
1.1.2报文格式所有交换的RTU类型报文(帧),无论上/下行,具有相同的结构:从站号功能码数据区CRC16校验和1字节1字节n字节2字节每帧报文包含4种类型的信息:1.1.2.1 从站号从站号为1字节,取值范围为0~FFH.例外的,如果此值为0,则作为主站的广播信文标识.因此,物理上使用的从站号只能在01H~FFH之间(即1~255之间)。
1.1.2.2 功能码功能码为1字节,它被用来选择一个命令(读、写或回答校验是否正确等),有效功能码范围为1~255之间,本手册支持的功能码将在第2章中加以详述。
1.1.2.3 数据区数据区为n字节,它包含与功能码相关的一串十六进制数据。
2.1 功能码概述在本手册中,MODBUS使用如下的功能码:功能码(十进制)含义01 读线圈状态02 读输入状态03 读保持型寄存器04 读输入型寄存器05 强制单个线圈06 写单个寄存器15 强制多个线圈16 写多个寄存器20 读变量21 写变量2.2 功能码与数据分类在本手册中,功能码与相应的数据的对应关系如下所示:在MODBUS 规约中,地址的起始编号为0。
如Q0005的规约地址为0004。
2.3 功能码详解2.3.1 01读线圈状态1.描述实现对从站中测点Q 和M (分类前缀为0x )ON/OFF 状态的读请求。
104规约详细介绍及报文解析【原创实用版】目录1.104 规约的概述2.104 规约的特点3.104 规约的报文结构4.104 规约的报文解析实例5.104 规约的应用场景正文一、104 规约的概述104 规约,全称为 Modbus RTU 通讯协议,是一种串行通信协议,主要应用于工业自动化领域。
它是由 Modicon 公司于 1979 年开发的,现在已成为工业控制领域中应用最广泛的通讯协议之一。
104 规约具有传输速度快、可靠性高、兼容性好等特点,广泛应用于 PLC、PAC、智能仪表等工业控制设备的通讯。
二、104 规约的特点1.传输速度快:104 规约采用二进制编码方式,传输速率最高可达1Mbps,满足了工业自动化领域对通讯速度的要求。
2.可靠性高:104 规约具有强大的错误检测和纠正能力,可以有效地防止通讯错误,确保通讯的可靠性。
3.兼容性好:104 规约支持多种工业控制设备,如 PLC、PAC、智能仪表等,具有很好的兼容性。
4.拓展性强:104 规约具有丰富的功能指令,可以满足各种工业自动化应用的需求。
三、104 规约的报文结构104 规约的报文由帧头、地址、命令、数据、校验和、结束符等部分组成。
其中,帧头用于标识报文的开始和结束;地址用于标识通讯设备的地址;命令用于指示通讯的类型和功能;数据是通讯的核心内容;校验和用于检验数据是否正确;结束符用于标识报文的结束。
四、104 规约的报文解析实例以读取保持型输入为例,假设设备地址为 1,输入寄存器地址为 0,对应的报文如下:- 帧头:0x03 0x03(表示报文开始和结束)- 地址:0x01(表示设备地址为 1)- 命令:0x04(表示读取保持型输入)- 数据:0x00 0x01(表示输入寄存器地址为 0)- 校验和:0x12(用于检验数据是否正确)- 结束符:0x03 0x03(表示报文结束)五、104 规约的应用场景104 规约广泛应用于工业自动化领域的通讯,如 PLC 与 PAC 之间的通讯、智能仪表的数据采集等。
modbus rtu通讯协议格式详细说明MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规约进行数据通讯或传输,不同的系统就可以通讯。
目前,在RS232/RS485通讯过程中,更是广泛采用这种规约。
常用的MODBUS 通讯规约有两种,一种是MODBUS ASCII,一种是MODBUS RTU。
一般来说,通讯数据量少而且主要是文本的通讯则采用MODBUS ASCII规约,通讯数据数据量大而且是二进制数值时,多采用MODBUS RTU规约。
在实际的应用过程中,为了解决某一个特殊问题,人们喜欢自己修改MODBUS规约来满足自己的需要(事实上,人们经常使用自己定义的规约来通讯,这样能解决问题,但不太规范)。
更为普通的用法是,少量修改规约,但将规约格式附在软件说明书一起,或直接放在帮助中,这样就方便了用户的通讯。
modbus rtu通讯传送方式通讯传送分为独立的信息头,和发送的编码数据。
以下的通讯传送方式定义也与MODBUS RTU通讯规约相兼容:初始结构= 4字节的时间地址码= 1 字节功能码= 1 字节数据区= N 字节错误校检= 16位CRC码结束结构= 4字节的时间地址码:地址码为通讯传送的第一个字节。
这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。
并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:通讯传送的第二个字节。
ModBus通讯规约定义功能号为1到127。
本仪表只利用其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机执行什么动作。
作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。
如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。
第一章Modbus协议□介绍Modbus协议介绍□两种串行传输模式□信息帧□错误检查方法Modbus协议介绍Modbus可编程控制器之间可相互通讯,也可与不同网络上的其他设备进行通讯,支撑网络有Modicon的Modbus和Modbus+工业网络。
网络信息存取可由控制器内置的端口,网络适配器以及Modicon提供的模块选件和网关等设备实现,对OEM(机械设备制造商)来说,Modicon可为合作伙伴提供现有的程序,可使Modbus+网络紧密地集成到他们的产品设计中去。
Modicon的各种控制器使用的公共语言被称为Modbus协议,该协议定义了控制器能识别和使用的信息结构。
当在Modbus网络上进行通讯时,协议能使每一台控制器知道它本身的设备地址,并识别对它寻址的数据,决定应起作用的类型,取出包含在信息中的数据和资料等,控制器也可组织回答信息,并使用Modbus协议将此信息传送出去。
在其他网络上使用时,数据包和数据帧中也包含着Modbus协议。
如,Modbus+或MAP网络控制器中有相应的应用程序库和驱动程序,实现嵌入式Modbus协议信息与此网络中用子节点设备间通讯的特殊信息帧的数据转换。
该转换也可扩展,处理节点地址,路由,和每一个特殊网络的错误检查方法。
如包含在Modbus协议中的设备地址,在信息发送前就转换成节点地址,错误检查区也用于数据包,与每个网络的协议一致,最后一点是需用Modbus协议,写入嵌入的信息,定义应处理的动作。
图1说明了采用不同通讯技术的多层网络中设备的互连方法。
在信息交换中,嵌入到每个网络数据包中的图1:Modbus 协议应用示意图* MB+为 Modbus主处理器4个Modus 设备或网络编程器 编程器(去MB+)S980(去MAP) AT/HC-984和HOST/MMHI AT/HC-984 HOST/MMHI 984A/B 和 S985Modbus 上的数据传输Modicon 控制器上的标准Modbus 端口是使用一个RS-232兼容的串行接口,定义了连接器,接线电缆,信号等级,传输波特率,和奇偶校验,控制器可直接或通过调制解调器(以后简称Modems)接入总线(网络)。
电力系统常用通信规约简介电力系统通信规约是指为了实现电力系统中各个设备之间的信息传输而制定的一系列规则和标准。
这些规约发挥了重要的作用,使得电力系统能够进行高效、可靠的信息传输,为电力系统的运行与管理提供了有力的支持。
本文将介绍电力系统中常见的通信规约及其特点。
1. Modbus通信协议Modbus通信协议是一种常见的工业通信协议,广泛应用于电力系统中各类自动化设备之间的通信。
Modbus通信协议具有简单易用、性能稳定等特点。
它定义了数据通信规约、数据传输方式、信息检验、网络传输容错处理等内容,通过网络传输数据实现设备之间的通信。
Modbus通信协议中包括了从机地址、功能码、寄存器地址、数据类型、数据长度等要素。
其中,从机地址和功能码用于识别被访问的设备及其数据类型,寄存器地址用于定位数据存储位置,数据类型和数据长度用于确定数据格式和数据长度。
Modbus通信协议可以基于串口、以太网等多种通信介质。
2. IEC 61850通信规约IEC 61850通信规约是指基于MMS(Manufacturing Message Specification,制造业信息规范)的一种通信规约,用于电力设备之间的通信。
IEC 61850通信规约标准化、模块化、灵活性高,可以实现快速、可靠的信息传输。
IEC 61850通信规约包括了各种功能模块,如GOOSE(Generic Object Oriented Substation Event,通用面向对象的变电站事件)和SV(Sampled Value,采样值)等。
其中,GOOSE是用于信息传递所需时间非常短的应用程序序列,主要负责保护数据传输。
SV则用于传输在每个采样周期内的电压、电流值等实时数据。
IEC 61850通信规约的优点在于可以实现快速、可靠的信息传输,从而提高了电力系统的可靠性和稳定性,减少了对设备维护的需求。
3. DNP3通信规约DNP3通信规约是DesignaNet协议的简称,是一个可靠性高、安全性强的通信协议,主要用于智能配电网、远程自动化和监控等领域。
变电所Modbus与IEC 60870-5-103通信规约变电所是电力系统中的重要组成部分,它起着电能传输、分配和转换的重要作用。
为了实现变电所内部各种设备之间的信息交互和控制管理,通信协议就显得尤为关键。
本文将介绍变电所中常用的通信协议之一——Modbus和IEC 60870-5-103通信规约,以及它们在变电所中的应用。
一、Modbus通信协议Modbus是一种串行通信协议,用于实现在工业领域中的设备之间的通信。
Modbus协议包括Modbus RTU和Modbus TCP两种形式,分别适用于串行通信和以太网通信。
Modbus通信协议基于主从架构,主机向从机发送查询命令,从机进行响应。
Modbus通信协议主要包括以下几个方面的内容:1. Modbus数据模型Modbus数据模型主要包括线圈(Coil)、输入线圈(Input Coil)、保持寄存器(Holding Register)和输入寄存器(Input Register)四种数据类型。
线圈和输入线圈是用于控制和监测的开关量数据类型,保持寄存器和输入寄存器是用于控制和监测的模拟量数据类型。
2. Modbus功能码Modbus通信协议中定义了一系列功能码,用于实现不同的功能操作,如读取线圈状态、读取输入线圈状态、读取保持寄存器、读取输入寄存器等。
3. Modbus协议格式Modbus通信协议的数据帧格式分为Modbus RTU格式和Modbus TCP格式,其中Modbus RTU格式使用二进制进行数据传输,Modbus TCP格式则采用了TCP/IP协议进行数据传输。
二、IEC 60870-5-103通信规约IEC 60870-5-103通信规约是针对远动终端和主站之间的通信而制定的一种通信规约。
该通信规约主要应用于电力系统中的远动通信和监控系统中,用于实现远端设备与主站之间的数据交互和控制管理。
IEC 60870-5-103通信规约主要包括以下几个方面的内容:1. IEC 60870-5-103数据模型IEC 60870-5-103通信规约定义了一种数据模型,包括单点信息、双点信息、归一化值、标度值、步位置信息等数据类型,用于描述远端设备的状态和参数信息。
在Java中解析Modbus RTU协议的报文,可以使用开源库如j2mod。
以下是一个简单的示例,展示如何使用j2mod库解析Modbus RTU协议的报文:1.首先,添加j2mod库到你的项目中。
如果你使用Maven,可以在pom.xml中添加以下依赖:2.xml复制代码<dependency><groupId>com.ghgande</groupId><artifactId>j2mod</artifactId><version>2.1.5</version><!-- 使用时请检查最新版本 --></dependency>1.编写代码来解析Modbus RTU报文:2.java复制代码import com.ghgande.j2mod.modbus.Modbus;import .RTUEncodedMessage;import com.ghgande.j2mod.modbus.procimg.SimpleRegister;import com.ghgande.j2mod.modbus.util.SerialParameters;import com.ghgande.j2mod.modbus.ModbusException;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Arrays;public class ModbusRTUParser {public static void main(String[] args) {// 模拟Modbus RTU报文的数据流(你需要从实际的设备读取)byte[] data = new byte[]{0x00, 0x01, 0x03, 0x00, 0x00, 0x01, 0x0F, 0x31}; // 例如:读取保持寄存器的请求报文InputStream inputStream = new ByteArrayInputStream(data);OutputStream outputStream = System.out; // 用于输出响应数据,这里只是输出到控制台,实际应用中可能需要发送给设备。
附录一:MODBUS_RTU通讯规约(本协议采用主从问答方式)PDM系列仪表/变送器:PDM系列仪表/变送器采用全新的设计,革命性地改变了传统电表的概念;具有多功能、高精度、数字式、可编程、结构紧凑、多画面显示的特点,它可以满足电力工业未来对电表的需求。
For personal use only in study and research; not for commercial useMODBUS通讯协议:ModBus通讯规约允许PDM系列仪表/变送器与施耐德、西门子、AB、GE等多个国际著名品牌的可编程顺序控制器(PLC)、RTU、SCADA系统、DCS或与第三方具有ModBus 兼容的监控系统之间进行信息交换和数据传送。
PDM系列仪表/变送器只要简单地增加一套基于计算机(或工控机)的监控软件(如:组态王、Intouch、FIX、synall等)就可以构成一套电力监控系统。
广泛的系统集成:PDM系列仪表/变送器提供了标准的RS-485/422通讯接口及ModBus通讯协议,这个通讯协议已广泛被国内外电力行业及工控行业作为系统集成的标准。
通讯数据的类型及格式:信息传输为异步方式,并以字节为单位。
在主站和从站之间传递的通讯信息是11位的字格式:字格式(串行数据)11位二进制起始位1位数据位8位奇偶校验位1位:有奇偶校验位/无:无奇偶校验位停止位1位:有奇偶校验位/2位:无奇偶校验位●通讯数据(信息帧)格式数据格式:地址码功能码数据区错误校检数据长度:1字节1字节N字节16位CRC码(冗余循环码)★注:1、1个字节由8位二进制数组成(既8 bit)。
2、ModBus是Modicon公司的注册商标。
3、“从机”在本文件中既为PDM。
一、通讯信息传输过程:当通讯命令由发送设备(主机)发送至接收设备(从机)时,符合相应地址码的从机接收通讯命令,并根据功能码及相关要求读取信息,如果CRC校验无误,则执行相应的任务,然后把执行结果(数据)返送给主机。
Modbus RTU通用规约说明、模板及规约配置说明文档一、Modbus RTU通用规约说明1.1Modbus协议简介Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。
此协议支持传统的串口链路RS-232、RS-422、RS-485和以太网设备。
许多工业设备包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。
Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。
此协议定义了控制器能够认识和使用的报文结构,而不管它们是经过何种网络进行通信的。
标准的Modicon控制器使用RS232C实现串行的Modbus。
Modbus的ASCII、RTU协议规定了报文、数据的结构、询问和应答的方式,数据通讯采用主/从方式,主站发出数据请求报文,从站接收到正确报文后就可以发送数据到主站端以响应请求;主站也可以直接发报文修改从站的数据,实现双向读写。
1.2Modbus通用规约介绍Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC 校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。
另外,Modbus采用主从问答方式收发数据,在实际使用中如果某从站站点断开后(如故障或失电),主站可以诊断出来,而当故障修复后,网络又可自动接通。
因此Modbus协议的可靠性较好。
Modbus协议在串行链路中RTU模式使用的最多,通用性很强,所以在这里仅介绍一下Modbus RTU协议即Modbus通用规约。
下表是Modbus Rtu支持的功能码:在工程现场我们经常遇到第三方设备需要进行通信,如果是特殊规约,那就需要工自研究所专门做规约与模板。
如果是标准通信规约比如说CDT-91,MODBUS-RTU,103规约等,我们就可以根据厂家要到的规约与点表,自行配置模板进行通信。
modbus规约Modbus规约是一种使用在串行通信以及工业以太网网络中的通信协议,由Modicon公司于1979年提出,并于1985年开始广泛使用。
它是最广泛使用的工业控制协议,用于不同的可编程逻辑控制器和计算机之间的信息交互。
Modbus支持多种数据类型,包括单字节,双字节或双字,以及32个字节的浮点数。
Modbus协议采用了简单可靠的客户端/服务器通信框架,服务器负责处理请求和处理器的状态数据,客户端用于发送控制信息并接收状态数据。
Modbus主要有三种不同的实现:Modbus RTU,Modbus ASCII 和Modbus TCP/IP。
Modbus RTU是一种基于串行通信协议,它使用2进制字符作为数据传输格式,由Modbus介质访问控制器(MAC)来提供控制。
它使用RJ-45连接器实现全双工的物理连接,可以有效的降低电缆的复杂度,并且可以支持广泛的通信范围。
Modbus RTU使用书报文格式定义功能码,以及读/写寄存器或记录缓冲器,可以用来编程仪器或控制器,包括控制器,控制器,电表和传感器等。
Modbus ASCII是基于串行通信网络的另一种协议,它使用7位ASCII字符作为数据传输格式,并在结构上与Modbus RTU类似。
Modbus ASCII可以使用两种不同的物理连接,第一种是RS-232,它使用一根电缆,第二种是RS-485,它使用分组线,可以支持最多20个设备。
Modbus ASCII也可以使用功能码来定义,读/写寄存器或记录缓冲器,它不仅可以编程仪器或控制器,还可以实现诸如控制应用,表格插入/提取等功能。
Modbus TCP/IP是一种基于以太网的协议,它使用8位字节报文格式进行传输,并且可以支持大量设备连接到一个以太网网络中。
Modbus TCP/IP采用定义的功能码像Modbus RTU和Modbus ASCII一样,允许客户端服务器在以太网上读取/写入寄存器或记录缓冲器,用于仪器及控制器的编程等功能。
附录一:MODBUS_RTU通讯规约(本协议采用主从问答方式)PDM系列仪表/变送器:PDM系列仪表/变送器采用全新的设计,革命性地改变了传统电表的概念;具有多功能、高精度、数字式、可编程、结构紧凑、多画面显示的特点,它可以满足电力工业未来对电表的需求。
MODBUS通讯协议:ModBus通讯规约允许PDM系列仪表/变送器与施耐德、西门子、AB、GE等多个国际著名品牌的可编程顺序控制器(PLC)、RTU、SCADA系统、DCS或与第三方具有ModBus兼容的监控系统之间进行信息交换和数据传送。
PDM系列仪表/变送器只要简单地增加一套基于计算机(或工控机)的监控软件(如:组态王、Intouch、FIX、synall等)就可以构成一套电力监控系统。
广泛的系统集成:PDM系列仪表/变送器提供了标准的RS-485/422通讯接口及ModBus通讯协议,这个通讯协议已广泛被国内外电力行业及工控行业作为系统集成的标准。
通讯数据的类型及格式:信息传输为异步方式,并以字节为单位。
在主站和从站之间传递的通讯信息是11位的字格式:字格式(串行数据1位二进起始数据奇偶校验有奇偶校验无:无奇偶校验停止位1位:有奇偶校验位/2位:无奇偶校验位●通讯数据(信息帧)格式数据格式:地址码功能码数据区错误校检数据长度:1字节1字节N字节16位CRC码(冗余循环码)★注:1、1个字节由8位二进制数组成(既8 bit)。
2、ModBus是Modicon公司的注册商标。
3、“从机”在本文件中既为PDM。
一、通讯信息传输过程:当通讯命令由发送设备(主机)发送至接收设备(从机)时,符合相应地址码的从机接收通讯命令,并根据功能码及相关要求读取信息,如果CRC校验无误,则执行相应的任务,然后把执行结果(数据)返送给主机。
返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。
如果CRC校验出错就不返回任何信息。
1.1 地址码:地址码是每次通讯信息帧的第一字节(8位),从0到255。
许继MODBUS 通信规约协议说明(Modbus-RTU 规约,版本:1.0,日期:2020-06-23)一、概述本文档描述了我公司各个系列装置的Modbus 通信协议,应用于装置作为从机时与主机监控设备之间的通信。
二、通信数据的传输方式传输模式:RTU(Remote Terminal Unit 远程终端设备)模式 通信接口:RS485 信息传输方式:异步方式通信速率:1200\2400\4800\9600\19200kbps 可选通信格式:一位起始码,八位数据位,一位停止位,校验位可选择无校验、奇校验或偶校验。
每个字节以如下方式发送(从左到右最低有效位...最高有效位):有奇偶校验:启始位D0D1D2D3D4D5D6D7奇偶位停止位无奇偶校验:启始位D0D1D2D3D4D5D6D7停止位三、数据帧基本形式地址码功能码数据区CRC 效验码1字节1字节n 字节CRC 低位CRC 高位地址码:地址码是信息帧的第一字节(8位)。
这个字节表明由用户设置地址的从机将接收由主机发送来的信息。
每个从机都必须有唯一地址码,并且只有符合地址码的从机才能相应回送。
当从机回送信息时,相应的地址码表明该信息来自于相应地址的从机。
功能码:主机发送的功能码告诉从机执行怎么样的任务,从机的功能码则表明从机响应主机相应任务进行了操作。
下表列出了所用功能码的具体含义及操作。
功能码列表:功能码含义注释02H 读取状态按位读取装置的遥信状态03H 读取保持寄存器读取装置的定值04H 读取输入寄存器读取装置的模拟量、电度量05H 强置单线圈控制装置合、分闸及装置复归06H 预置单寄存器定值区切换、压板投退10H 预置多寄存器修改定值及对装置校时18H读FIFO 队列逐个读取装置的SOE数据格式:数据长度:数据区:数据区是根据不同的功能码而不同。
当功能码告诉从机读取寄存器的值,则数据区必须包含要读取的寄存器的起始地址及读取长度。
如果功能码告诉从机设置某一寄存器的值,则数据区还要包含此寄存器数值。
BSCX系列继电器通讯协议——MODBUS(RTU)1.总则●本规则适用RS485通信。
本规约为轮询方式的应答式规约,允许一个主站对应32个从站。
●主站将初始化和控制所有在RS485通信回路上传递的信息●任何情况从站只能响应主站一个请求●采用异步通讯方式,8位数据位,1位起始位,1位停止位,一帧最多可含255个字节。
●采用CRC-16校验,校验码为一个字●上、下行命令由地址域(1个字节)、功能码(1个字节)、数据(多个字)和CRC-16校验码(1个字)组成●均采用高字节在前、低字节在后的原则(校验码除外)●所有值采用整数化的小数传送(采用16位方式)2.功能码3.帧格式●长度为所有数据域的字节数●校验码为除校验域的所有字节的CRC-16校验码,发生器多项式为(X16+X15+X2+1)●从站地址为00时为广播方式4.指令集4.1写寄存器该命令可用于修改保护定值、通信地址、波特率以及遥控和校时等,可一次修改一个或多个定值项,一次命令写寄存器总个数不能超过70个。
必须注意的是该命令只对可写的寄存器有效。
寄存器的具体定义见对应的【继电器寄存器表】,部分型号的装置没有设置命令,要根据具体的装置来看。
下述类别仅是例子,仅供参考。
第3个寄存器数据2012C该寄存器地址为003EH第4个寄存器数据2AA AA该寄存器地址为003FH CRC162B5C8CRC校验码4.2读寄存器该命令可用于读实时测量值、保护定值、开入量、通信地址、波特率等,可一次读一个或多个值,一次命令读寄存器总个数不能超过70个。
寄存器的具体定义见对应的【继电器寄存器表】4.3对时命令对时命令可以对装置的时钟进行校时,校时的下发的地址为0x00,装置不做应答处理。
如下校正时间到2011年5月8日4点8分58秒210毫秒对时命令针对BS-CX70/CX80/90有效第1个寄存器数据20408高字节为时,低字节分第2个寄存器数据2E362单位ms,如58.210秒第3个寄存器数据20508高字节为月,低字节为日第4个寄存器数据207DB年CRC162009F CRC校验码5.异常响应当主站发送了一个非法的消息帧给从站时,异常的数据响应就会产生。
104规约详细介绍及报文解析摘要:1.104 规约概述2.104 规约的特点3.104 规约的报文结构4.104 规约报文解析实例5.104 规约的应用领域正文:一、104 规约概述104 规约,全称为MODBUS RTU/ASCII协议,是一种串行通信协议,主要用于工业自动化领域。
它是由美国Modicon公司于1979年开发的,现在已经成为工业自动化领域中应用最广泛的通信协议之一。
104规约具有传输速度快、可靠性高、兼容性好等特点,广泛应用于PLC、PAC、工控机等工业控制设备的通信。
二、104 规约的特点1.传输速度快:104 规约采用二进制编码方式,传输速度快,实时性强。
2.可靠性高:104 规约具有帧校验、地址校验、CRC 校验等多重校验机制,确保数据传输的可靠性。
3.兼容性好:104 规约支持多种数据传输方式,如串行、以太网、无线等,能够满足不同工业场景的需求。
4.扩展性强:104 规约具有丰富的功能代码,可以支持各种工业现场的测量、控制、监测等需求。
三、104 规约的报文结构104 规约的报文由帧头、地址、控制域、数据域、校验域、结束符等部分组成。
其中,帧头包括起始符、同步域、标识符等;地址域用于标识通信双方设备;控制域包含了通信协议的类型、数据传输方向等信息;数据域用于传输实际的工业数据;校验域主要用于检测数据传输中的错误;结束符则表示报文的结束。
四、104 规约报文解析实例以一个简单的104 规约报文为例:帧头:0x03 0x03 0x00 0x01地址:0x01 0x02控制域:0x03 0x01数据域:0x00 0x01 0x00 0x02 0x00 0x03校验域:0x04结束符:0x17该报文的含义是:设备01 向设备02 发送一个03 类型(读取保持寄存器)的请求,数据长度为6 个字节,数据值为0x00 0x01 0x00 0x02 0x00 0x03,校验和为0x04。
MODBUS_RTU通讯规约一、通讯数据的类型及格式信息传输为异步方式,并以字节为单位,在主机和从机之间传递的通讯信息是11位的字格式,包含1个起始位(0),8个数据位,2个停止位(1)。
信息帧格式:二、通讯信息传输过程通讯命令由主机发送至从机时,与主机发送的地址码相符的从机接收通讯命令,如果CRC校验无误,则执行相应的操作,然后把执行结果(数据)返送给主机。
返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。
如果CRC校验出错就不返回任何信息。
2.1 地址码地址码是每个通讯信息帧的第个1字节,从0到100。
每个从机必须有总线内唯一的地址码,只有与主机发送的地址码相符的从机才能响应回送信息。
当从机回送信息时,回送数据均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,从机返回的地址码表明回送的从机地址,相应的地址码表明该信息来自于何处。
2.2 功能码每个通讯信息帧的第个2字节。
主机发送,通过功能码告诉从机应执行什么动作。
从机响应,从机返回的功能码与从主机发送来的功能码一样,表明从机已响应主机并已执行了相关的操作。
仪表支持以下2个功能码:2.3 数据区数据区随功能码不同而不同。
这些数据可以是数值、参考地址等。
对于不同的从机,地址和数据信息都不相同(应给出通讯信息表)。
主机利用通讯命令(功能码03H和10H),可以任意读取和修改从机数据寄存器,一次读取或写入的数据长度应不超过数据寄存器地址有效范围。
三、功能码简介3.1 功能码03H:读寄存器例如:主机要读取从机地址为01H,起始寄存器地址为0CH的2个寄存器数据。
主机发送:如果从机寄存器0CH、0DH的数据为0000H、1388H,从机返回:3.2功能码10H:写多路寄存器例如:主寄存器地址为00H的3个寄存器中。
主机发送:从机返回:四、16位CRC校验码主机或从机可用校验码判别接收信息是否正确。
由于电子噪声或一些其它干扰,信息在传输过程中可能会发生错误,校验码可以检验主机或从机通讯信息是否有误。
ModBus 介绍文本MODBUS协仪详解什么是MODBUS?MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规约进行数据通讯或传输,不同的系统就可以通讯。
目前,在RS232/RS485通讯过程中,更是广泛采用这种规约。
常用的MODBUS 通讯规约有两种,一种是MODBUS ASCII,一种是MODBUS RTU。
一般来说,通讯数据量少而且主要是文本的通讯则采用MODBUS ASCII规约,通讯数据数据量大而且是二进制数值时,多采用MODBUS RTU规约。
在实际的应用过程中,为了解决某一个特殊问题,人们喜欢自己修改MODBUS规约来满足自己的需要(事实上,人们经常使用自己定义的规约来通讯,这样能解决问题,但不太规范)。
更为普通的用法是,少量修改规约,但将规约格式附在软件说明书一起,或直接放在帮助中,这样就方便了用户的通讯。
MODBUS-RTU通讯协议简介在本章主要讲述如何利用软件通过通讯口来操控该系列仪表。
本章内容的掌握需要您具有MODBUS协议的知识储备并且通读了本册其它章节所有内容,对本产品功能和应用概念有较全面了解。
本章内容包括:MODBUS协议简述,通讯应用格式详解,本机的应用细节及参量地址表。
1.1MODBUS协议简述ACRXXXE系列仪表使用的是MODBUS-RTU通讯协议,MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。
MODBUS协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。
首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。
MODBUS协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。
MODBUS通信规约
第一章MODBUS协议简介
MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。
MODBUS协议在一对通讯线上使用主从应答式连接(半双工),这意味着在一对单独的通讯线上信号沿着相反的两个方向传输。
首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。
MODBUS协议只允许在主计算机和终端设备之间通讯,而不允许独立的设备之间的数据交换,这样各终端设备不会在它们初始化时占用通讯线路,而仅限于响应到达本机的查询信号。
1.1 传输方式
传输方式是一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与MODBUS协议-RTU方式相兼容的传输方式。
◆Coding System 二进制编码8位
◆Start bit 起始位1位
◆Data bits 数据位8位
◆Parity 校验无奇偶校验
◆Stop bit 停止位1位
Error checking 错误检测CRC(循环冗余校验)1.2协议
当数据帧到达终端设备时,它通过一个简单的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加到取得的“信封”中,把数据帧返回给发送者。
返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。
发生任何错误都不会有成功的响应。
1.2.1数据帧格式
1.2.2地址(Address)域
地址域在帧的开始部分,由一个字节8位(0~255)组成,这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。
每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。
当终端发送回一个响应,响应中的从机地址数据便告诉了主机哪台终端正与之通信。
1.2.3功能(Function)域
功能于域代码告诉了被寻址到的终端执行何种功能。
参见表1-1。
1.2.4数据(Data)域
数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。
这些数据的内容可能是数值、参考地址或者设定值。
例如:功能码告诉终端读取一个寄存器,数据域则需要指明从哪个寄存器开始及读取了多少个数据,内嵌的地址和数据依照类型和从机之间的不同内容而有所不同。
1.2.5错误校验(Check)域
该域允许主机和终端检查传输过程中的错误。
有时,由于电噪音和
其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些变化,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,出错校验使用了16位循环冗余的方法(CRC16)。
1.3错误检测
循环冗余校验(CRC)域占用两个字节,包含了一个16位的二进制值。
CRC值由传送设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较,如果这两个值不相等,就发生了错误。
CRC运算时,首先将一个16位的寄存器预置为全1,然后连续把数据帧中的每个字节中的8位与该寄存器的当前值进行运算,仅仅每个字节的8个数据位参与生成CRC,起始位和终止位以及可能使用的奇偶位都不影响CRC。
在生成CRC时,每个字节的8位与寄存器中的内容进行异或,然后将结果向低位移位,高位则用“0”补充,最低位(LSB)移出并检测,如果是1,该寄存器就与一个预设的固定值(0A001H)进行一次异或运算,如果最低位为0,不作任何处理。
上述处理重复进行,直到执行完了8次移位操作,当最后一位(第8位)移完以后,下一个8位字节与寄存器的当前值进行异或运算,同样
进行上述的另一个8次移位异或操作,当数据帧中的所有字节都作了处理,生成的最终值就是CRC值。
生成一个CRC的流程为:
1.预置一个16位寄存器为0FFFFH(全1),称之为CRC寄存器。
2.把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异
或运算,结果存回CRC寄存器。
3.将CRC寄存器向右移一位。
4.如果最低位为0:重复第三步(下一次移位)。
如果最低位为1:将CRC寄存器与一个预设的固定值(1010 0000 0000 0001)进行异或运算。
5.重复第三步和第四步直到8次移位。
这样处理完了一个完整的八
位。
6.重复第2步到第5步来处理下一个八位,直到所有的字节处理结
束。
7.最终CRC寄存器得到的值就是CRC的值。
8.CRC寄存器发送时将高低位互换,即高位在前,低位在后。
第二章MODBUS功能详解
本章所述协议将尽可能的使用下图所示的格式。
(数字为16进制)
注:
Addr:从机地址
Fun:功能码
Data start reg hi:数据起始地址寄存器高位
Data start reg lo:数据起始地址寄存器低位
Data #of regs hi:数据读取个数寄存器高位
Data #of regs lo:数据读取个数寄存器低位
CRC16 Hi:循环冗余校验高位
CRC16 lo:循环冗余校验低位
2.1读数字输出状态(功能码01)
查询数据帧
此功能允许用户获得指定地址的从机控制的特定地址的DO输出状态ON/OFF(1=ON,0=OFF),除了从机地址和功能域,数据帧还需要
在数据域中包含被读取DO的初始地址和要读取的DO数量。
下图的例子是从地址为17的从机读取DO1到DO6的状态。
响应数据帧
响应包含从机地址、功能码、数据的数量和CRC错误校验,数据包中每个DO占用一位(1=ON,0=OFF),第一个字节的最低位为寻址到的DO值,其余的在后面。
下图所示为读数字输出状态响应的实例。
(DO1=OFF,DO2=ON,DO3=OFF,DO4=ON,DO5=OFF,DO6=ON)
DO状态
2.2读数字输入状态(功能码02)
查询数据帧
此功能允许用户获得DI 的状态ON/OFF(1=ON,0=OFF),除了从机地址和功能域,数据帧还需要在数据域中包含被读取DI 的初始地址和要读取的DI 数量。
下图的例子是从地址为17的从机读取DI1到DI16的状态。
响应数据帧
响应包含从机地址、功能码、数据的数量和CRC 错误校验,数据包中每个DI 占用一位(1=ON ,0=OFF ),第一个字节的最低位为寻址到的DI 值,其余的在后面。
下图所示为读数字输出状态响应的实例。
(DI1=ON ,DI2=ON ,DI3=OFF ,DI4=OFF ,DI5=ON ,DI6=ON, DI7=OFF ,DI8=OFF ,
DI9=OFF ,DI10=ON ,DI11=ON ,DI12=ON, DI13=OFF ,DI14=OFF ,DI15=ON ,DI16=ON )
Data1
Data2
2.3 读数据(功能码03)
查询数据帧
此功能允许用户获得设备采集与记录的数据及系统参数。
下图的例子是从17号从机读3个采集到的基本数据(数据帧中每个地址占用2个字节)U1,U2,U3。
响应数据帧
响应包含从机地址、功能码、数据的数量和CRC错误校验
下图所示为读U1,U2,U3(U1=03E8H,U2=03E7H,U3=03E9H)响应的实例。
2.4 控制DO (功能码05)
查询数据帧
该数据帧强行设置一个独立的DO 为ON 或
OFF ,数据FF00H 将设DO 为ON 状态,而0000H 将设DO 为OFF 状态。
下图的例子是从17号从机设置DO1为ON 状态。
响应数据帧
响应包含从机地址、功能码、数据的数量和CRC 错误校验 对这个命令请求的正常响应是在DO 状态改变以后回传接收到的数据。
2.5 预置多寄存器(功能码16)
查询数据帧
功能码16(十进制)(十六进制为10H)允许用户改变多个寄存器的内容。
注意:禁止对不具有可写属性的单元使用此命令改写。
下图的例子是预置17号从机正向有功电度EP+为178077833Kwh.EP+的地址是0040H,EP+占用32位,共4个字节。
响应数据帧
对于预置单寄存器请求的正常响应是在寄存器值改变以后将接收到的数据传送回去。
一般原则:
1.模拟量采用MODBUS-RTU通讯规约的03号命令读出。
2.开入量采用MODBUS-RTU通讯规约的02号命令读出。
3.开出量采用MODBUS-RTU通讯规约的01号命令读出,05号命令写入。
4.SOE记录可用MODBUS-RTU通讯规约的03号命令读出,16号命令清除。