文档库 最新最全的文档下载
当前位置:文档库 › modbus 数据帧格式

modbus 数据帧格式

modbus 数据帧格式
modbus 数据帧格式

寄存器地址是任意指定的。参数设置及数据读取采用标准的MODBUS-RTU 模式完成。一、首先是设定系统的通讯速率:地址01,设定0x0002地址寄存器为读写寄存器可以设置对应的速率01=2400,N,8,1 02=4800,N,8,1

03=9600,N,8,1 ,04=19200,8,N,1 1、读取内部寄存器(通讯速率)命令发送:01 03 00 02 00 01 CRC 01 03 00 02 00 01 CRC 系统地址功能码寄存器地址寄存器数量软件自动产生的CRC16校验位回答:01 03 02 00 03 CRC 01 03 02 00 03 CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位数据段数据为0003H = 3 表示系统速率是9600 2、修改内部寄存器(通讯速率)命令【把9600(代码03)改为19200(代码04)】发送:01 06 00 02 00 04 CRC 01 06 00 02 00 04 CRC 系统地址功能码寄存器地址修改的新值软件自动产生的CRC16校验位回答:F8 3F 3F 6A FF (因速率已改变,所以回答的数据是无效的)验证是否成功(把主机的串口波特率改为19200 后)发送:01 03 00 02 00 01 CRC 01 03 00 02 00 01 CRC 系统地址功能码寄存器地址寄存器数量软件自动产生的CRC16校验位回答:01 03 02 00 04 CRC 01 03 02 00 04 CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位数据

段数据为0004H = 4 表示系统新速率是19200(04)二、校时数据帧格式(地址02,设定0x0003 0004 0005 0006 寄

存器放置时间参数从低到高,格式:2011:02:12 18:36:25) 将十进制2011:02:12 18:36:25(07DB:020C 0018 2419) 写入寄存器:写时间数据帧02 06 00 03 00 04 24 19 02 0C 07 BD CRC 02 06 00 03 00 04 24 19 00 18 02 0C 07 BD CRC 系统地址功能码寄存器地址寄存器数量数据段数据0003 0004 0005 0006 软件自动产生的CRC16校验位应答:02 03 08 24 19 0018 020C 07BD CRC 02 06 08 24 19 00 18 020C 07BD CRC 系统地址功能码数据段的字节数量

数据段数据0003 0004 0005 0006 CRC16校验位三、采样频率数据帧格式(地址为03,0x0007 寄存器放置采样频率参数0-300 ,(0000-012C))发送:03 06 00 00 07 01 2C CRC 03 06 00 07 01 2C CRC 系统地址功能码寄存器地址修改的新值软件自动产生的CRC16校验位回答:03 06 02 01 2C CRC (表示修改成功)03 06 02 01 2C CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位四、启动采样点设定数据帧格式要求(地址为04,寄存器为0x0008,采用频率设置范围是0032-2710,

50Hz-10000Hz)发送:04 06 00 08 27 10 CRC 04 06 00 08 27 10 CRC 系统地址功能码寄存器地址修改的新值软件自动产生的CRC16校验位回答:04 06 02 27 10 CRC (表示修改成功)04 06 02 27 10 CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位四、数据计算RF

设定帧要求(地址05,寄存器为0x0009, 参数范围

0001-9999 (0001-270F)) 发送:05 06 00 08 27 10 CRC 05 06 00 09 27 0F CRC 系统地址功能码寄存器地址修改的新值软件自动产生的CRC16校验位回答:05 06 02 27 0F CRC (表示修改成功)05 06 02 27 0F CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位五、读取4 路电桥传感器数据数据帧要求:(地址为06,寄存器

地址0x0010 0x0011 0x0012 0x0013) 发送:06 03 00 10 00 04 CRC 06 03 00 10 00 04 CRC 系统地址功能码寄存器地址寄存器数量软件自动产生的CRC16校验位回答:06 03 08 01 32 01 98 03 FF 00 4E CRC 06 03 08 01 32 01 98 03 FF 00 4E CRC 系统地址功能码数据段的字节数量数据段数

据0x0010 0x0011 0x0012 0x0013 CRC16校验位五、读取温度数据帧要求:地址07,寄存器0x0014, 发送:07 03 00 14 00 01 CRC 07 03 00 14 00 01 CRC 系统地址功能码寄存器地址寄存器数量软件自动产生的CRC16校验位回答:07 03 02 01 22 CRC 07 03 02 01 22 CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位七、读取3

路加速度数据帧要求:地址08,寄存器地址0x0015 0x0016 0x0017 发送:08 03 00 15 00 03 CRC 08 03 00 15 00 03 CRC 系统地址功能码寄存器地址寄存器数量软件自动

产生的CRC16校验位回答:08 03 06 01 32 01 98 03 FF

CRC 08 03 06 01 32 01 98 03 FF CRC 系统地址功能码数据段的字节数量数据段数据0x0015 0x0016 0x0017 CRC16校验位

HDLC数据帧的格式

1、HDLC数据帧格式: 起始标志要传输的数据块结束标志 011111100011011000010110011011101111110 包括起始和终止标志的信息块称为HDLC的“数据帧”。起始和终止标志采用相同的帧间隔符“01111110”,即在HDLC规程中,帧与帧之间用“01111110” 所分隔,“帧”构成了通信双方交换的最小单位。 2、一些术语: HDLC来源于IBM公司的SDLC,因此也采用了一些SDLC的术语和说明。

说明: (1)F :帧间隔模式:“01111110”——同步符号、 帧之间的填充字符。 011111101111100001111000101011111101010100111111101010 01111110 (2)A :地址字段:通信对方的地址 (3)C :控制字段:用于区分帧的类型(数据帧、监控帧、无编号帧) (4)I :信息字段:携带高层用户数据,可以是任意的二进制位串; (5)FCS :校验码:对A 、C 、I 字段进行循环校验。 g(x)=x 16 +x 12 +x 5 +1 (CCITT 和ISO 使用); g(x)=x 16 +x 15 +x 2 +1 (IBM 的SDLC 使用)。 由于帧中至少含有A (地址)、C (控制)和FCS (帧校验序列)字段,因此整个帧长度应大于32位。 5、“0”比特插入法 为了保证帧间隔符“01111110”的唯一性和帧内数据的透明性,保证A (地址字段)、C (控制字段)、I (信息字段)、FCS (帧校验序列)中不出现01111110的位模式,HDLC 采用了‘0’位插入法。 发送端:发送“01111110”后,开始数据发送,并在数据发送过程中,检查发送的位流,一旦发现连续的5个‘1’,则自动在其后插(附)上1个‘0’,并继续传输后继的位流;数据发送结束后,追加帧间隔符“01111110”。 接收端: 执行相反的动作:一旦识别出帧间隔符“01111110”之后的位流不是“01111110”,则启动接收过程;若识别出连续5个‘1’和1个‘0’,则自动丢弃该‘0’,以恢复原来的位流;若识别出连续的6个‘1’,表示数据结束,该数据帧接收完成。 6、HDLC 控制帧格式: 说明: (1)信息帧(I ):用于传输用户数据,控制字段的第0位规定为‘0’;

MAC帧格式分析与应用

IEEE 802.3 MAC帧格式的分析与应用 学生姓名:学号:指导老师: 摘要本文介绍了IEEE802.3标准中规定的两种以太网帧格式,基本帧格式和扩展帧格式。得出以下结论,IEEE802.3-2005基本帧格式,主要由前导、SDF、DA、SA、Length/Type、DATA、Pad、FCS等8部分组成,还可增添4字节的扩展部分,其总长度为64-1518字节。扩展帧格式在基本帧格式上增加了“802.1Q TAG”类型和TCI字段,可实现对用户优先级和VLAN加标帧的控制。 关键词 IEEE 802.3 基本帧格式扩展帧格式 Abstract This essay introduces two different kinds of Ethernet MAC frame,the basic and Q-tagged. We concluded that,the basic MAC frame of IEEE 802.3-2005,whose length is 64-1518 bytes, are mainly consisted of by 8 parts,including Preabmle, SDF,DA,SA,Length/Type,Data,Pad,FCS, and additional part,sized 4 bytes. While, the Q-tagged frame adds another two parts on the bisas of the basic one, that is ‘802.1Q TAQ’ and ‘TCI’, whose fuction are dividually to control the VLAN Tagged Frame and the user’s priority. Keyword IEEE 802.3 Basic Frame Q-tagged Frame

modbus功能码及格式

1、“01”读取线圈状态 发送: 功能代码1字节0x01 起始地址2字节0x0000~0xFFFF 线圈数量2字节1~2000(0x7D0)接收: 功能代码1字节0x01 字节数1字节N 线圈状态n字节n = N/N+1 N=读取线圈个数/ 8 ,如果余数不为0则N=N+1 出错时的返回: 功能代码1字节0x81 错误代码1字节01/02/03/04 例子: 2、“02”读取输入状态 功能代码1字节0x02 起始地址2字节0x0000~0xFFFF 输入点数量2字节1~2000(0x7D0) 功能代码1字节0x02 字节数1字节N 输入点状态n字节n = N/N+1 出错时的返回: 功能代码1字节0x82 错误代码1字节01/02/03/04 例子:

3、“03”保持型寄存器读取 发送: 功能代码1字节0x03 起始地址2字节0x0000~0xFFFF 寄存器数量2字节1~125(0x7D)接收: 功能代码1字节0x03 字节数1字节2*N 寄存器值N*2字节 N=寄存器数量 出错时的返回: 功能代码1字节0x83 错误代码1字节01/02/03/04 例子: 4、“05”写单一线圈 功能代码1字节0x05 线圈地址2字节0x0000~0xFFFF 写入值2字节0x0000或0xFF00 功能代码1字节0x05 线圈地址2字节0x0000~0xFFFF 写入值2字节0x0000或0xFF00出错时的返回: 功能代码1字节0x85 错误代码1字节01/02/03/04 例子:

5、“06”写单一寄存器 功能代码1字节0x06 寄存器地址2字节0x0000~0xFFFF 写入值2字节0x0000~0xFFFF 功能代码1字节0x06 寄存器地址2字节0x0000~0xFFFF 写入值2字节0x0000~0xFFFF 功能代码1字节0x86 错误代码1字节01/02/03/04 例子: 6、“15(0x0F)”写多线圈 发送: 功能代码1字节0x0F 起始地址2字节0x0000~0xFFFF 写入线圈个数2字节0x0001~0x07B0写入字节数1字节N 写入值N字节 功能代码1字节0x0F 起始地址2字节0x0000~0xFFFF 写入线圈个数2字节0x0001或0x07B0 功能代码1字节0x8F 错误代码1字节01/02/03/04 例子:

HART命令帧格式

前段时间做了一部分有线HART的解析,整理了一下基本的帧结构,在此做个笔记 HART帧结构: [cpp]view plain copy 1.|-------------------------------------------------------------------| 2.| PREAMBLE[5..20] | START | ADDR | COM | BCNT | STATUS | DATA | CHK | 3.|-------------------------------------------------------------------| 4. 5. 6.FF FF FF FF FF 82 A6 06 B2 BF 01 0F 00 21 1. PREAMBLE 引导码, 一般是5..20个0xFF, 他是一组同步传输的同步信号, 用以保证信息的同步. 在开始通讯的时候,使用的是20个FF引导码, 从机应答0信号时将告之主机他“希望”接收几个字节的引导码, 另外主机也可以用59号命令告诉从机应答时应用几位引导码. 2. START(1Byte) 起始字节, 说明结构为“长”还是“短”, 消息源, 是否是“突发”模式消息. [cpp]view plain copy 1.0x02: 主机到从机的短帧 2.0x82: 主机到从机的长帧 3.0x06:从机到主机的短帧 4.0x86: 从机到主机的长帧 5.0x01: 突发模式的短帧 6.0x81: 突发模式的长帧 一般设备进行通讯接收到2个FF字节后, 就表示数据位的接收已经同步, 就将侦听起始位. 3. ADDR(1/5Bytes)

MODBUS协议(功能码及报文解析)

MODBUS协议 Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制 Modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和remote terminal unit (RTU)。 Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口EIA-485物理层进行[1]。 对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Modbus RTU是一种紧凑的,采用二进制表示数据的方式,Modbus ASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通讯(serial communication)方式。RTU 格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。

对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/ TCP变种,这种方式不需要校验和的计算。 对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。 Modbus 有一个扩展版本Modbus Plus(Modbus+或者MB +),不过此协定是Modicon专有的,和Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。它使用1Mb it/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PCMCIA 总线的板卡。 Modbus协议是一个master/slave 架构的协议。有一个节点是master 节点,其他使用Modbus协议参与通信的节点是slave 节点。每一个slave 设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。 一个ModBus命令包含了打算执行的设备的Modbus地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址0例外,指定地址0 的指令是广播指令,所有收到指令的设备都会执行,不过不回应指令)。所有的Modbus命令包含了检查码,以确定到达的命令没有被破坏。基本的ModBus命令能指令一个R

CAN报文的传送和帧结构

CAN 报文的传送和帧结构 9.2.2 CAN 报文的传送和帧结构 在进行数据传送时,发出报文的节点为该报文的发送器。该节点在总线空闲或丢失仲裁前恒为发送器,如果一个节点不是报文发送器,并且总线不处于空闲状态,则该节点为接收器。 构成一帧的帧起始、仲裁场、控制场、数据场和CRC 序列均借助位填充规则进行编码。当发送器在发送的位流中检测到5位连续的相同数值时,将自动在实际发送的位流中插入一个补码位。而数据帧和远程帧的其余位场则采用固定格式,不进行填充,出错帧和超载帧同样是固定格式。报文中的位流是按照非归零(NZR )码方法编码的,因此一个完整的位电平要么是显性,要么是隐性。 在“隐性”状态下, CAN 总线输出差分电压 =— 近似为零, 在“显性”状态下,以大于最小阈值的差分电压表示,如图9.2所示。在总线空闲或“隐性”位期间,发送“隐性”状态。在“显性”位期间,“隐性”状态改写为“显性”状态。 图9.2总线上的位电平表示 CAN 有两种不同的帧格式,不同之处为识别符场的长度不同:具有11位识别符的帧称之为标准帧;而含有29位识别符的帧为扩展帧。CAN 报文有以下4个不同的帧类型: ● 数据帧:数据帧将数据从发送器传输到接收器。 ● 远程帧:总线节点发出远程帧,请求发送具有同一识别符的数据帧。 ● 错误帧:任何节点检测到总线错误就发出错误帧。 ● 过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。 数据帧和远程帧可以使用标准帧及扩展帧两种格式。它们用一个帧间空间与前面的帧分 隔。 1. 数据帧 数据帧由7个不同的位场组成:帧起始(Start of Frame )、仲裁场(Arbitration Frame )、控制场(Control Frame )、数据场(Data Frame )、CRC 场(CRC Frame )、应答场(ACK Frame )、帧结尾(End of Frame )。数据场的长度为0到8位。报文的数据帧一般结构如图9.3所示。 diff V CANH V CANL V

实验3 分析MAC帧格式分析

实验3 分析MAC帧格式 3.1 实验目的 1.了解MAC帧首部的格式; 2.理解MAC帧固定部分的各字段含义; 3.根据MAC帧的内容确定是单播,广播。 3.2 实验设备 Winpcap、Wireshark等软件工具 3.3 相关背景 1.据包捕获的原理:为了进行数据包,网卡必须被设置为混杂模式。在现实的网络环境中,存在着许多共享式的以太网络。这些以太网是通过Hub 连接起来的总线网络。在这种拓扑结构的网络中,任何两台计算机进行通信的时候,它们之间交换的报文全部会通过Hub进行转发,而Hub以广播的方式进行转发,网络中所有的计算机都会收到这个报文,不过只有目的机器会进行后续处理,而其它机器简单的将报文丢弃。目的机器是指自身MAC 地址与消息中指定的目的MAC 地址相匹配的计算机。网络监听的主要原理就是利用这些原本要被丢弃的报文,对它们进行全面的分析,这样就可以得到整个网络中信息的现状。 2.Tcpdump的简单介绍:Tcpdump是Unix平台下的捕获数据包的一个架构。Tcpdump最初有美国加利福尼亚大学的伯克利分校洛仑兹实验室的Van Jcaobson、Craig Leres和Steve McCanne共同开发完成,它可以收集网上的IP数据包文,并用来分析网络可能存在的问题。现在,Tcpdump已被移植到几乎所有的UNIX系统上,如:HP-UX、SCO UNIX、SGI Irix、SunOS、Mach、Linux和FreeBSD等等。更为重要的是Tcpdump是一个公开源代码和输出文件格式的软件,我们可以在Tcpdunp的基础上进行改进,加入辅助分析的功能,增强其网络分析能力。(详细信息可以参看相关的资料)。 3.Winpcap的简单介绍:WinPcap是由意大利Fulvio Risso和Loris Degioanni等人提出并实现的应用于Win32 平台的数据包捕获与分析的一种软件包,包括内核级的数据包监听设备驱动程序、低级动态链接库(Packet.dll)和高级系统无关库(Winpcap.dll),其基本结构如图3-1所示:

MODBUS协议(功能码及报文解析)要点

Modbus是一种串行通信协议,是于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制 Modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和remoteterminalunit(RTU)。 Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口物理层进行。 对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。ModbusRTU是一种紧凑的,采用二进制表示数据的方式,ModbusASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通讯(serialcommunication)方式。RTU格式后续的命令/数据带有的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。 对于通过(例如)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和的计算。 对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。 Modbus有一个扩展版本ModbusPlus(Modbus+或者MB+),不过此协定是Modicon 专有的,和Modbus不同。它需要一个专门的协处理器来处理类似的高速令牌旋转。

以太网数据帧的格式分析比较

一、 以太网数据帧的格式分析 大家都知道我们目前的局域网大多数是以太网,但以太网有多种标准,其数据帧有多种格式,恐怕有许多人不是太清楚,本文的目的就是通过帧格式和Sniffer捕捉的数据包解码来区别它们。 以太网这个术语一般是指数字设备公司(Digital Equipment)、英特尔公司(Intel)和施乐公司(Xerox)在1982年联合公布的一个标准(实际上它是第二版本,第一版本早在1972年就在施乐公司帕洛阿尔托研究中心PARC里产生了)。它是目前TCP/IP网络采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection)。它的速率为10 Mb/s,地址为48 bit。 1985年,IEEE(电子电气工程师协会) 802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。这三者的共同特性由802.2标准来定义,那就是802网络共有的逻辑链路控制(LLC)。不幸的是,802.2和802.3定义了一个与以太网不同的帧格式,加上1983年Novell为其Netware 开发的私有帧,这些给以太网造成了一定的混乱,也给我们学习以太网带来了一定的影响。 1、通用基础 注:* VLAN Tag帧和Gigabit Jumbo帧可能会超过这个限制值 图1-1 图1-1中,数据链路层头(Header)是数据链路层的控制信息的长度不是固定的,根据

Modbus通讯格式详解教程

Modbus通讯协议格式 Modbus通讯协议格式为 主机发送:[开始] [从机地址] [功能代码] [起始寄存器地址高8 位] [低8位] [写单寄存器数高8 位] [低8 位] [LRC 校验码] [CR] [LF] 所以本文依据格式逐个介绍解疑: [开始] 为: [从机地址] 为已知; [功能代码] 的名称、作用将在下面介绍; [寄存器地址]分配及寄存器中值的含义将在下面介绍; [LRC 校验码] 可以用Commix软件算出来,详细请参考Commix相关资料; 最后是实例加以说明验证。 功能码名称作用 01 读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值 04 读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值 05 强置单线圈强置一个逻辑线圈的通断状态 06 预置单寄存器把具体二进值装入一个保持寄存器 07 读取异常状态取得8个内部线圈的通断状态,这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和MICRO 84)可使主机模拟编程功能,修改PC状态逻辑 19 重置通信链路发生非可修改错误后,是从机复位于已知状态,可重置顺序字节 20 读取通用参数(584L)显示扩展存储器文件中的数据信息 21 写入通用参数(584L)把通用参数写入扩展存储文件,或修改之 22~64 保留作扩展功能备用 65~72 保留以备用户功能所用留作用户功能的扩展编码 73~119 非法功能 120~127 保留留作内部作用 128~255 保留用于异常应答 保护器Modbus 通讯协议: 半双工RS485 口,传输距离≤1200 米。 波特率:9600bt; 1 个起始位;8 个数据位,1 位停止位,无奇偶校验位。 选用ASCII 模式,LRC 检测。 保持寄存器分配:

数据帧格式

习题一 1.局域网络标准对应OSI模型的_____层. A..下2层 B. 下3层 C. 下4层. D. 上3层 2.局域网总线/树拓扑的多点介质传输系统中,要使多个站点共享单个数据通道,需要特别考虑解决_(1)___和__(2)___这两个问题..例如采用50欧同轴电缆作为传输介质并构成总线拓扑的网络系统,可使用基带技术传输数字信号,总线上——⑶----,总线两端加上终端匹配器用以———(4)---。 (1)A. 数据帧格式 B. 介质访问控制方法 C.通信协议类型 D. 信道分配方案 (2)A. 信号平衡 B. 站点之间性能匹配 C.数据编码方案 D. 介质传输性能 (3)A. 整个带宽由单个信号占用 B. 整个带宽被分成多路数据数据信道 C. 可传输视频或音频信号 D. 数据只能单向传输 (4)A. 防止信号衰减, B. 增强抗干扰能力 C.降低介质损耗 D. 阻止信号反射 3.1980年2月,电器和电子工程协会成立了IEEE 802委员会,当时个人计算机联网刚刚兴起,该委员会针对局域网提出了一系列标准,称做IEEE802标准,该标准很快成为国际标准,现在局域网的连接都是采用该标准。 问题1:按照IEEE802标准,局域网体系结构分成哪几部分? 问题2:在哪个部分进行地址识别? 问题3:局域网一般采用哪两种访问控制方式?这两种访问控制方式一般选用什么样的拓扑结构? 4.需求分析时要考虑操作系统的是———。 A.用户要求,B,应用需求,C,计算机平台需求,D,网络需求 5.客户机/服务器(简称C/S)模式属于以——(1)——为中心的网络计算模式,其工作过程是客户端——(2)——,服务器——(3——,并——(4)——,它的主要优点是——(5)——。 (1),A大型、小型机,B,服务器,C,通信,D,交换, (2),A,向服务器发出命令请求,B,向服务器发出查询请求, C,向网络发送查询请求,D,在本机上发出自我请求, (3),A,接收请求并告诉请求再发一次, B,接收请求,进入中断服务程序,打印本次请求内容, C,响应请求并在服务器端执行相应请求服务, D,把响应请求传回到请求端并执行, (4),A,把执行结果在打印服务器上输出, B,把显示内容送回客户机 C,把整个数据库内容送回客户机, D,把执行结果送回客户机,

Modbus标准通讯协议格式【最新】

Modbus通讯协议 下表是Modbus的功能格式: 1、读可读写数字量寄存器(线圈状态): 计算机发送命令:[设备地址] [命令号01] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位] 例:[11][01][00][13][00][25][CRC低][CRC高] 意义如下: <1>设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。例子中为想和17号(十进制的17是十六进制的11)通讯。 <2>命令号01:读取数字量的命令号固定为01。 <3>起始地址高8位、低8位:表示想读取的开关量的起始地址(起始地址为0)。比如例子中的起始地址为19。 <4>寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。例子中为37个开关量。

<5>CRC校验:是从开头一直校验到此之前。在此协议的最后再作介绍。此处需要注意,CRC校验在命令中的高低字节的顺序和其他的相反。 设备响应:[设备地址] [命令号01] [返回的字节个数][数据1][数据2]...[数据n][CRC 校验的低8位] [CRC校验的高8位] 例:[11][01][05][CD][6B][B2][0E][1B][CRC低][CRC高] 意义如下: <1>设备地址和命令号和上面的相同。 <2>返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。 <3>数据1...n:由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。比如例子中,表示20号(索引号为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合...如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。 <4>CRC校验同上。 2、读只可读数字量寄存器(输入状态): 和读取线圈状态类似,只是第二个字节的命令号不再是1而是2。 3、写数字量(线圈状态):

modbus数据帧格式

寄存器地址是任意指定的。 参数设置及数据读取采用标准的MODBUS-RTU模式完成。 一、首先是设定系统的通讯速率:地址01,设定0x0002地址寄存器为读写寄存器可以设置对应的速率01=2400,N,8,1 02=4800,N,8,1 03=9600,N,8,1 ,04=19200,8,N,1 1、读取内部寄存器(通讯速率)命令 发送:01 03 00 02 00 01 CRC 01 03 00 02 00 01 CRC 系统地址功能码寄存器地址寄存器数量软件自动产生的CRC16校验位 回答:01 03 02 00 03 CRC 01 03 02 00 03 CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位数据段数据为0003H = 3 表示系统速率是9600 2、修改内部寄存器(通讯速率)命令【把 9600(代码03)改为19200(代码04)】 发送:01 06 00 02 00 04 CRC 01 06 00 02 00 04 CRC 系统地址功能码寄存器地址修改的新值软件自动产生的CRC16校验位回答:F8 3F 3F 6A FF (因速率已改变,所以回答的数据是无效的) 验证是否成功(把主机的串口波特率改为 19200 后) 发送:01 03 00 02 00 01 CRC 01 03 00 02 00 01 CRC 系统地址功能码寄存器地址寄存器数量软件自动产生的CRC16校验位回答:01 03 02 00 04 CRC

01 03 02 00 04 CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位数据段数据为0004H = 4 表示系统新速率是19200(04) 二、校时数据帧格式(地址02,设定0x0003 0004 0005 0006 寄存器放置时间 参数从低到高,格式:2011:02:12 18:36:25) 将十进制2011:02:12 18:36:25(07DB:020C 0018 2419) 写入寄存器: 写时间数据帧02 06 00 03 00 04 24 19 02 0C 07 BD CRC 02 06 00 03 00 04 24 19 00 18 02 0C 07 BD CRC 系统地址功能码寄存器地址寄存器数量数据段数据0003 0004 0005 0006 软件自动产生的 CRC16校验位应答:02 03 08 24 19 0018 020C 07BD CRC 02 06 08 24 19 00 18 020C 07BD CRC 系统地址功能码数据段的字节数量数据段数据0003 0004 0005 0006 CRC16校验位 三、采样频率数据帧格式(地址为03,0x0007寄存器放置采样频率参数0-300 ,(0000-012C)) 发送:03 06 00 00 07 01 2C CRC 03 06 00 07 01 2C CRC 系统地址功能码寄存器地址修改的新值软件自动产生的CRC16校验位 回答:03 06 02 01 2C CRC (表示修改成功) 03 06 02 01 2C CRC 系统地址功能码数据段的字节数量数据段数据CRC16校验位 四、启动采样点设定数据帧格式要求(地址为04,寄存器为0x0008,采用频率 设置范围是0032-2710,50Hz-10000Hz)

常见规约帧格式一览表:

常见规约帧格式一览表 一.C dt规约 1.帧格式 同步字6B+控制字6B+信息字1(6B)….+信息字n(6B) 2.同步字(6B) EB 90 EB 90 EB 90 3.控制字(6B) 控制字节1B+帧类别码1B+信息字数1B+源站地址1B+目的站地址1B+校验码1B (1)控制字节 (2)帧类别码 (3)信息字数 (4)源站地址 (5)目的站地址 (6)校验码,从控制字节到目的站址的CRC校验码 4. 信息字(6B) 功能码+信息+校验码 二.101规约 1.固定帧长帧格式

2 3.控制域:

4.数据单元 类型地址+可变结构限定词+传送原因+应用服务数据单元公共地址+信息地址+信息元素集……. 三.103规约 103规约帧格式基本与101格式相同,只是在可变帧结构中链路用户数据部分不同,103规约应用服务数据单元的定义如下: 类型标识+可变结构限定词+传送原因+应用服务数据单元公共地址+功能类型+信息序号+信息元素集+信息体时标(可选择) 此数据单元在妆容范围内共有31种,其中ASDU6用于下行时间同步,ASDU7用于下行总查询,ASDU10用于下行通用分类数据,ASDU20用于下行一般命令,ASDU21用于下行通用分类命令,ASDU24用于下行扰动数据传输命令,ASDU25用于下行拢动数据舆的认可。 ASDU10用于上行通用分类数据,ASDU1用于上行带时标的报文,ASDU2用于上行具有相对时间的带时标的报文,ASDU6用于上行时间同步 ASDU1信息元素: DPI(一个字节的低两位)+二进制时间(4B) ASDU2信息元素: DPI+相对时间+故障序号+二进制时间(4B)+附加信息 ASDU10信息元素: 返回信息标识符+通用分类数据集数目+组号+条目号+描述类别+数据类型+数据宽度(规定几个字节一个数据)+数据的数目(最后一位为后续状态位)+标识数据(数据宽度*数目) 四.V4.1规约 下发查询命令: 表址1B+55H+标志地址低字节1B+标志高字节1B+数据长度1B+累加校验和1B +结束码0DH 其中数据长度决定了电度表要上送的内容,没有的以00H补充上送,对应的顺序依次为:正向有功,总感性无功,反向有功,总容性无功……总共有41项数据,各项数据的标志地址和字节数及单位已作规定 查询应答命令: 表址+命令标志字+标志地址低+标志地址高+数据长度+数据1低字节…数据1高字节+数据N低字节+数据N高字节+累加校验和+结束码 广播对时命令: BC BC 年的后两位月日时分累加校验和0D 此命令无反馈 五.部颁规约(DL/T645-1997) 1.帧格式

MODBUS协议功能码及报文解析要点

M O D B U S协议功能码及报文解析要点

Modbus是一种串行通信协议,是于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有: 公开发表并且无版税要求 相对容易的工业网络部署 对供应商来说,修改移动原生的位或字节没有很多限制 Modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus 通常用来连接监控计算机和remoteterminalunit(RTU)。 Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口物理层进行。 对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。Mo dbusRTU是一种紧凑的,采用二进制表示数据的方式,ModbusASCII是一种人类可读的,冗长的表示方式。这两个变种都使用串行通讯(serialcommunication)方式。RTU格式后续的命令/数据带有的校验和,而ASCII格式采用纵向冗余校验的校验和。被配置为RTU 变种的节点不会和设置为ASCII变种的节点通信,反之亦然。 对于通过(例如)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和的计算。 对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。

实际上MODBUSRTU与ASCII的内容是完全相同的,不同的的ASCII方式用“:”标识帧起始,用“CRLF”标识帧结束。校验采用LRC,把RTU帧中一个字节的内容换成了2个ASCII字符。比如在RTU方式下设备地址01只有一个字节,在ASCII方式下转换成字符串

网络通信的数据包(帧)的结构及原理

网络通信的数据包(帧)的结构及原理 在网络通信中,”包”(Packet)和”帧”(Frame)的概念相同,均指通信中的一个数据块.对于具体某种通信网络,一般使用术语”帧”.一种网络的帧格式可能与另一种网络不同,通常使用术语”包”来指一般意义的帧.串行通信的数据格式有面向字符型的数据格式,如单同步、双同步、外同步;也有面向比特型的数据格式,这以帧为单位传输,每帧由六个部分组成,分别是标志区、地址区、控制区、信息区、帧校验区和标志区. ?串行通信协议属于ISO国际参考标准的第三层,数据链路层.数据链路层必须使用物理层提供给它的服务.物理层所做的工作是接收个一个原始的比特流,并准备把它交给目的地.不能保证这个比特流无差错.所接收的比特的数量也许少于,也许等于或多于所传递的比特的数量,它们具有不同的值.一直要上到数据链路层才能进行检测,如果需要的话,纠正错误.对于数据层,通常的方法是把比特流分成离散的帧,并对每一帧计算出校验和…….当一帧到达目的地后重新计算校验和时,如果新算出的校验和不同于帧中所包括的值,数据链路层就知道出现差错了,从而会采取措施处理差错(即,丢弃坏帧,并发回一个差错报告). ?数据链路层的任务是在两个相邻接点间的线路上无差错地传送以帧为单位的数据.每一帧包括数据和必要的控制信息.人们发现,对于经常产生误码的实际链路,只要加上合适的控制规程,就可以使通信变为比较可靠的.如IBM公司推出了着名的体系结构SNA,在SNA的数据链路规程采用了面向比特的规程SDLC,后来ISO把它修改后称为HDLC,译为高级数据链路控制.在INTERNET 中,用户与ISP(INTERNET服务提供者)之间的链路上使用得最多的协议就是SLIP和PPP. ?

Modbus通讯 功能码及实例

功能码名称作用 01 读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值 04 读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值 05 强置单线圈强置一个逻辑线圈的通断状态 06 预置单寄存器把具体二进值装入一个保持寄存器 07 读取异常状态取得8个内部线圈的通断状态,这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和MICRO 84)可使主机模拟编程功能,修改PC状态逻辑 19 重置通信链路发生非可修改错误后,是从机复位于已知状态,可重置顺序字节 20 读取通用参数(584L)显示扩展存储器文件中的数据信息

常见报文格式帧结构

常见报文格式汇总 1.1Ethernet数据包格式(RFC894) 1、目的Mac的最高字节的第8位如果为1,表明此包是以太网组播/广播包,送给CPU处理。 2、将目的Mac和本端口的MAC进行比较,如果不一致就丢弃。 3、获取以太网类型字段Type/Length。 0x0800→IP 继续进行3层的IP包处理。 0x0806→ARP 送给CPU处理。 0x8035→RARP 送给CPU处理。 0x8863→PPPoE discovery stage 送给CPU处理。 0x8864→PPPoE session stage 继续进行PPP的2层包处理。 0x8100→VLAN 其它值当作未识别包类型而丢弃。 4、Tag帧。 Type:长度为2字节,取值为0x8100,表示此帧的类型为802.1Q Tag帧。 PRI:长度为3比特,可取0~7之间的值,表示帧的优先级,值越大优先级越高。该优先级主要为QoS差分服务提供参考依据(COS)。 VID(Vlan ID):长度12bits,可配置的VLAN ID取值范围为1~4094。通常vlan 0和vlan 4095预留,vlan1为缺省vlan,一般用于网管。 1.2PPP数据包格式 1、获取PPP包类型字段。 0x0021→IP 继续进行3层的IP包处理。 0x8021→IPCP 送给CPU处理。 0xC021→LCP 送给CPU处理。 0xc023→PAP 送给CPU处理。 0xc025→LQR 送给CPU处理。 0xc223→CHAP 送给CPU处理。 0x8023→OSICP 送给CPU处理。 0x0023→OSI 送给CPU处理。 其它值当作未识别包类型而丢弃。

PPP数据帧的格式

PPP数据帧的格式 [ 2007-5-17 11:43:00 ] PPP协议也许大家都听说过,可以说现在家里的ADSL都是通过PPP协议进行链路的搭建,今天就说说PPP到底是个啥东东。 想要了解PPP,个人认为有3个关键的知识点。 1、PPP数据帧的格式; 2、PPP的几种报文; 3、PPP的状态转移 首先说说的PPP数据帧的格式,因为PPP是链路层协议,所以我们将它的数据单位称为帧, 7E FF 03 7E 标志地址控制协议域信息域校验标志 1B 1B 1B 2B 缺省1500B 2B 1B 每一个PPP数据帧均是以一个标志字节起始和结束的,该字节为0x7E(这样很容易区分出每个PPP帧) 紧接在起始标志字节后的一个字节是地址域,该字节为0xFF。我们熟知网络是分层的,且对等层之间进行相互通信,而下层为上层提供服务。当对等层进行通信时首先需获知对方的地址,而对不同的网络,在数据链路层则表现为需要知道对方的MAC地址、X.121地址、ATM地址等;在网络层则表现为需要知道对方的IP地址、IPX地址等;而在传输层则需要知道对方的协议端口号。例如如果两个以太网上的主机希望能够通信的话,首先发送端需获知对端的MAC地址。但由于PPP协议是被运用在点对点的链路上的特殊性,它不像广播或多点访问的网络一样,因为点对点的链路就可以唯一标示对方,因此使用PPP协议互连的通信设备的两端无须知道对方的数据链路层地址,所以该字节已无任何意义,按照协议的规定将该字节填充为全1的广播地址。同地址域一样,PPP数据帧的控制域也没有实际意义,按照协议的规定通信双方将该字节的内容填充为0x03。(既然无意义,就可以随便赋值了吧,呵呵,只要大家都遵守一个标准就行)就PPP协议本身而言,我们最关心的内容应该是它的协议域和信息域。协议域可用来区分PPP数据帧中信息域所承载的数据报文的内容。协议域的内容必须依据ISO 3309的地址扩展机制所给出的规定。该机制规定协议域所填充的内容必须为奇数,也即是要求低字节的最低位为“1”,高字节的最低位为“0”。如果当发送端发送的PPP数据帧的协议域字段不符合上述规定,则接收端会认为此数据帧是不可识别的,那么接收端会向发送端发送一个Protocol-Reject报文,在该报文尾部将完整地填充被拒绝的报文。 信息域缺省时最大长度不能超过1500字节,其中包括填充域的内容,1500字节大小等于PPP协议中配置参数选项MRU(Maximum Receive Unit)的缺省值,在实际应用当中可根据实际需要进行信息域最大封装长度选项的协商。信息域如果不足1500字节时可被填充,但不是必须的,如果填充则需通信双方的两端能辨认出有用与无用的信息方可正常通信。 协议域和信息域是需要合在一起看的,目前主要用到的协议类型有LCP、NCP和普通的IP协议,而他们相对应的协议域字段则为0×C021、0×8021和

Modbus功能码一览

Modbus功能码一览 Modbus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。下表1是ModBus的功能码定义。

Modbus网络只是一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。表2是ModBus各功能码对应的数据类型。 (1) 在ModBus系统中有2种传输模式可选择。这2种传输模式与从机PC通信的能力是同等的。选择时应视所用ModBus主机而定,每个ModBus系统只能使用一种模式,不允许2种模式混用。一种模式是ASCII(美国信息交换码),另一种模式是RTU(远程终端设备)这两种模式的定义见表3

编程的主计算机及主PC很适宜。RTU则适用于机器语言编程的计算机和PC主机。 用RTU模式传输的数据是8位二进制字符。如欲转换为ASCII模式,则每个RTU字符首先应分为高位和低位两部分,这两部分各含4位,然后转换成十六进制等量值。用以构成报文的ASCII字符都是十六进制字符。ASCII模式使用的字符虽是RTU模式的两倍,但ASCII数据的译玛和处理更为容易一些,此外,用RTU模式时报文字符必须以连续数据流的形式传送,用ASCII模式,字符之间可产生长达1s的间隔,以适应速度较快的机器。表4给出了以RTU 方式读取整数据的例子 ( CRC-16(循环冗余错误校验) CRC-16错误校验程序如下:报文(此处只涉及数据位,不指起始位、停止位和任选的奇偶校验位)被看作是一个连续的二进制,其最高有效位(MSB)首选发送。报文先与X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示为二进制数 11000000000000101。整数商位忽略不记,16位余数加入该报文(MSB先发送),成为2个CRC校验字节。余数中的1全部初始化,以免所有的零成为一条报文被接收。经上述处理而含有CRC 字节的报文,若无错误,到接收设备后再被同一多项式(X↑16+X↑15+X↑2+1)除,会得到一个零余数(接收设备核验这个CRC字节,并将其与被传送的CRC 比较)。全部运算以2为模(无进位)。 习惯于成串发送数据的设备会首选送出字符的最右位(LSB-最低有效位)。而在生成CRC情况下,发送首位应是被除数的最高有效位MSB。由于在运算中不用进位,为便于操作起见,计算CRC时设MSB在最右位。生成多项式

相关文档