modbus命令格式

modbus命令格式
modbus命令格式

Modbus命令介绍

1 命令格式

MODBUS 协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的MODBUS 协议映射能够在应用数据单元(ADU)上引入一些附加域。通用Modbus帧如下图。

以下介绍常见功能码与PDU。

2常见的功能码

功能码01

01用于读数字量模块的输出状态。

请求指令:01 01 00 11 00 08

响应指令的格式为:

例:线圈2与7 为ON,其他为OFF

响应为:01 01 01 42

42h 即为二进制的0100 0010

功能码02

02用于读数字量模块的输入状态。

例:读模块第1~8个通道的输入(地址为00001~00008)

请求指令:01 02 00 01 00 08

响应为:01 02 01 60

60h 即为二进制的0110 0000

功能码03/04

03/04用于读模块的寄存器的值。

请求指令的格式为:

例:读模拟量输入第1~2个通道的输入(地址为40001~40002)

请求指令:01 04 00 01 00 02

若寄存器为16位。则最小值为0,最大值为FFFF,0对应量程最小值,FFFF对应量程最大值。假设量程为4~20mA,则0对应4mA,FFFF对应20mA

例:模拟量为0~10V,输入通道1的值为5V,通道2的值为6.5V

响应为:01 04 04 7F FF A6 65。7FFF对应5V,A665对应6.5V。

(一个指令来回的字节数是6+2+3+2*8+2=29个字节)

功能码05

05用于写线圈为ON/OFF。ON/OFF的状态用数据序列表示。FF 00hex表示为ON,00 00hex 表示为OFF,FF FF hex表示释放。

例:设置线圈3(地址为00003)为ON

请求指令:01 05 00 03 FF00

功能码06

06用于写单个寄存器的值。

例:设置寄存器40002的值为00 04 h

请求指令:01 06 00 02 00 04

响应指令的格式为:

响应指令为请求指令的重复。

功能码08

08用于诊断回路。发送的信息可以为任意长度,其最大值为数据缓冲器的长度减去8个字节。

请求指令的格式为:

例:

请求指令:01 08 00 02 00 04

响应为:01 08 00 02 00 04

功能码15(0Fh)

15用于设置线圈序列的值为ON/OFF

请求指令的格式为:

例:设置10个线圈的值,起始地址为00017(11hex)

请求指令:01 0F 00 11 00 0A 02 CD 01。CD 01 等价于二进制的1100 1101 0000 0001。

例:01 0F 00 11 00 0A

功能码16(10h)

16用于设置多个保持寄存器的值

请求指令的格式为:

请求指令:01 10 00 09 00 02 04 42 C8 00 00。

模块的地址映射表可见4000/6000的英文手册附录。

公文命令标准格式

公文命令标准格式 公文命令适用于依照有关法律公布行政法规和规章;宣布施行重大强制性行政措施;嘉奖有关单位及人员,撤销下级机关不适当的决定。下文是公文命令标准格式,欢迎阅读! 命令通常由三部分构成: (1)命令的标题 直接标明什么命令(令);也可在命令(令)的前面标明发布命令(令)的机关名称或领导人的职务。 发文机关标志由发文机关全称加“命令”或“令”字组成,居中排布,上边缘至版心上边缘为20 mm,推荐使用红色小标宋体字。 (2)命令的正文 发文机关标志下空二行居中编排令号,令号下空二行编排正文。 命令的正文多由“原因”和“使命指挥”构成。前者说明为什么要发布该项命令,后者要说明命令所属机关必须遵照执行的事项,生效与执行的时限。 (3)命令的签署 标示签发此项命令的机关或法定作者,签发的日期,并盖上印章。 命令的撰写,要求文字非常简明扼要,篇幅简短,主要传达领导机关的决定,不必作具体意义的阐发。行文结构要严谨,文句要精炼准确,语气要坚决肯定,不能使用商量或模棱两可的口吻。

签发人职务、签名章和成文日期的编排见党政机关公文格式(GB/T 9704-2012)7.3.5.3加盖签发人签名章的公文。 公文命令标准格式二公布令的格式 公布令由四部分构成: (1)标题 公布令的标题通常也包括发文机关、发文事由和文种类别三部分,但使用时只写明发文机关与文种即可。如“中华人民共和国全国人民代表大会常务委员会委员长令”、“中华人民共和国国务院令”,等等。 (2)正文 公布令的正文一般很简短,主要写明经过什么机关或会议,在什么日期通过批准了何种法令文件,开始生效与执行的日期。属于修订的文件,也应在正文中说明。 (3)签署 标明签署公布令的发文机关或法定作者,签署日期。如需盖印的,要盖上公(私)印章。 (4)附件 公布令是为颁布某项法律制度而发出的,所以必须附上所颁布的法制文书。 公布令的写作,要求简短明确,在颁布法律条文时甚至连理由和目的也无需说明。公布令的附件,应随令文同时公布。 公布令正文结尾处,一般要用“特令公布施行”、“现予公布”、

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 例子:

单独传感器标准MODBUS485通讯协议

A、读取数据(标准modbus协议) 地址默认为0x01,可以更改 1、读取数据 主机呼: 0103 00 0000 01 840A 从机答: 0103 02 XX XX XX XX 上面02,XX等均为一个字节。数据为两个字节,高位字节在前。每帧的开头和结尾至少有3。5个字节时间的间隔. 2。读设备地址 0020 CRC (4个字节)(读取:00 20 0068) 00 20 Adress CRC (5个字节) 3.写设备地址 00 10 Adress CRC (5个字节)(地址设为01:00 10 01 BD C0) 00 10CRC?(4个字节)(返回:00 1000 7C) 说明: 1.读写地址命令的地址位必须是00。 2。Adress为1个字节,范围为0-255。 用户在为主机编程时,除了站号(地址)和CRC校验码之外,其它字节的字符均采用上面的内容不变。主机格式中的读取点数为01。从机回答帧中的功能码(03)和读单元字节数(01)不变。

计算CRC码的步骤: 1、预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器; 2、把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器; 3、把寄存器的内容右移一位(朝低位),用0填补最高位,并检查右移后的移出位; 4、如果最低位为0:重复第3步(再次移位) 如果最低位为1:CRC寄存器与多项式A001(10100000 0000 0001)进行异或; 5、重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理; 6、重复步骤2到步骤5,进行下一步8位数据的处理; 7、最后得到的CRC寄存器即为CRC码; 8、将CRC结果放入信息帧时,将高低位交换,低位在前。 //************************************************************************************************ //**名称:CRC16 //**说明:CRC效验函数 //**形参:*p效验帧的指针帧长 datalen //**返回值:效验字 //************************************************************************************************ unsignedint CRC16(unsigned char * p, uint16 datalen ) { unsigned char CRC16Lo,CRC16Hi,CL,CH,SaveHi,SaveLo; int i,Flag; CRC16Lo =0xFF; CRC16Hi= 0xFF; CL = 0x01; CH= 0xA0; for(i=0;i>= 1 ; //高位右移一位,低位右移一位if ((SaveHi &0x01) ==0x01) //如果高位字节最后一位为1 CRC16Lo|=0x80 ; //则低位字节右移后前面补1否则自动补0 if ((SaveLo&0x01) ==0x01) //如果LSB为1,则与多项式码进行异或 { CRC16Hi^= CH;CRC16Lo ^= CL;} } }

oracle常用命令及格式

oracle常用命令及格式 一:关于日志管理的 1.切换日志:sql> alter system switch logfile; 2.切换checkpoints:sql> alter system checkpoint; 3.增加日志组:sql> alter database add logfile [group 4] sql> ('/disk3/log4a.rdo','/disk4/log4b.rdo') size1m; 4.增加日志成员 sql> alter database add logfile member sql> '/disk3/log1b.rdo' to group 1, sql> '/disk4/log2b.rdo' to group 2; 5.改变日志文件名字或路径 sql> alter database rename file 'c:/oracle/oradata/oradb/re do01.log' sql> to 'c:/oracle/oradata/redo01.log'; (此处注意,那个文件路径的输入格式) 6.删除日志文件组:sql> alter database drop logfile group 3;

7.删除日志文件成员 sql> alter database drop logfile member 'c:/oracle/oradata/ redo01.log'; 8.清除日志文件内容 sql> alter database clear [unarchived] logfile 'c:/oracle/l og2a.rdo'; 二、关于表空间管理的 1.创建表空间 sql> create tablespace tablespace_name datafile 'c:\oracle\ oradata\file1.dbf' size100m, sql> 'c:\oracle\oradata\file2.dbf' size100mminimum extent 5 50k [logging/nologging] sql> default storage (initial 500k next 500k maxextents 500 pctinccease 0) sql> [online/offline] [permanent/temporary] [extent_managem ent_clause]

通讯格式、传输方式及MODBUS协议简介

MODBUS协议、通讯格式、传输方式 淘宝店铺: MODBUS简介 MODBUS是一种单主站的主/从通信模式。MODBUS网络上只能有一个主站存在,主站在MODBUS网络上没有地址,从站的地址范围为 0 - 247,其中 0 为广播地址,从站的实际地址范围为 1 - 247。 MODBUS通信标准协议可以通过各种传输方式传播,如 RS232C、RS485、光纤、无线电等。 MODBUS具有两种串行传输模式,ASCII和RTU。它们定义了数据如何打包、解码的不同方式。支持MODBUS协议的设备一般都支持 RTU 格式。 通信双方必须同时支持上述模式中的一种。 实际也就是发送与接收双方商量一下,定好规则,发送方想要接收方做某件事,就发送某种格式的信息给接收方,接收方收到信息后,按照事先约定好的规则分析信息,执行命令。 您如果愿意,也可以自己定义一个通讯规范,用PLC 或是VB 语言按照您自己定义的这个规范处理,如果您定义的这个规范可靠性、便于分析性超过MODBUS,那您的通讯规范就是最流行的了! MODBUS 的通讯规范: 起始符 + 设备地址 + 功能代码 + 数据 + 校验和 + 结束符

通讯格式 通讯格式设置举例:9600,o,8,1 即: 波特率为9600; 校验方式为奇校验; 数据位为八位; 停止位为一位; ------------------------------------------------------------ 1、波特率: 波特率是每秒钟传输的数据位数;什么是位数呢? 计算机处理的语言是"0"和"1"组合而成的信息,即机器语言! 一个"0"或是一个"1"就是一个位; 设置波特率的作用? 如果把波特率设为9600,即一秒钟之内能够传输9600个"0"或是"1",它决定了通讯的数据传输速度。 常用的波特率数值有:2400、4800、9600、19200、38400、57600、115200;

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

Modbus 通讯协议的原理和标准

Modbus 通讯协议的原理和标准 工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。Modbus 就是工业控制器的网络协议中的一种。 一、Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。 当在一Modbus 网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus 协议发出。在其它网络上,包含了Modbus 协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 1、在Modbus 网络上转输 标准的Modbus 口是使用一RS-232C 兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem 组网。 控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据做出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。 主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus 协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。 从设备回应消息也由Modbus 协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。 2、在其它类型网络上转输 在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。这样在单独的通信过程中,控制器既可作为主设备也可作为从设备。提供的多个内部通道可允许同时发生的传输进程。 在消息位,Modbus 协议仍提供了主—从原则,尽管网络通信方法是“对等”。如果一控制器发送一消息,它只是作为主设备,并期望从从设备得到回应。同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。 3、查询—回应周期 (1)查询 查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03 是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。

调度命令规范格式

调度命令规范格式 一、发布行车调度命令的原则1.指挥列车运行的命令和口头指示,只能由列车调 度员发布。旅客列车的加开、停运、折返、变更径路及车辆甩挂的命令,经铁道部、铁路局客运调度分别报告值班处长、值班主任同意签字后,由客运调度员发布。 2.调度命令发布前,应详细了解现场情况,听取有关人员的意见,书写命令内容、 受令处所必须正确、完整、清晰。 3.采用计算机发布调度命令时,必须严格遵守一拟、二签(按规定需领导、值班主 任签发)、三下达、四确认签收的发布程序。受令人必须认真核对命令内容并及时签收。 4.采用电话发布调度命令时,必须严格遵守一拟、二签(按规定需领导、值班主任 签发)、三发布、四复诵核对、五下达命令号码和时间的发布程序办理。发布、接收调度命令时,应填记《调度命令登记簿》(《技规》附件七),并记明发收人员姓名及时刻。 5.铁路局列车调度员发布行车命令,要一事一令,不得填写其他内容。遇有不正确 的文字不准涂改,应圈掉后重新书写。使用常用行车调度命令用语(见附件2)时,不用字句圈掉,不用项圈掉项号。已发布的调度命令,遇有错、漏时,必须取消前发命令,重新发布。 6.铁道部发布的常用行车调度命令用语未涉及的项目,铁路局确需发布行车调度命令,由铁路局制定调度命令用语。 7.设有双线双向闭塞设备的区间且作用良好,需要连续反方向行车时,可一次发布 调度命令。 8.不准以月度施工方案代替施工调度命令。施工主管部门(单位)要将次日施工计划,提前上报施工调度员。施工调度员应提前向行车有关单位发布施工计划调度命令,发布施工计划调度命令,不准夹带与受令处所无关的内容和命令。实际施工调度命令由列车调度员发布。 9.施工封锁或开通的调度命令,列车调度员必须得到车站值班员的请求(ctc区段 无车站值班员的车站,由施工单位负责人请求)后,方可发布。 10.发布有关线路、道岔限速的调度命令,必须注明起止里程(包括站内线别、道 岔号码)及时间。发布事故救援命令、月度施工计划或施工电报涉及限速的有关线路、道岔必须注明里程。 11.指定时间段内的维修作业,车站值班员在维修作业完毕销记后应立即报告列车 调度员,列车调度员不再发布维修作业结束恢复行车的命令。如需延长作业时间须列车调度员发布调度命令批准。

Modbus标准通讯协议格式

Modbus通讯协议 Modbus协议 Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用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网络协议发送出去即可。所以在这里我仅介绍一下

指令格式

指令格式

附录一FANUC 数控指令格式 数控程序是若干个程序段的集合。每个程序段独占一行。每个程序段由若干个字组成,每个字由地址和跟随其后的数字组成。地址是一个英文字母。一个程序段中各个字的位置没有限制,但是,长期以来以下排列方式已经成为大家都认可的 方式: N- G- X- Y- Z- ????F- S- T - M- LF 行号准备功能位置代码进给速 度主轴转速刀具号辅助功能行结束 在一个程序段中间如果有多个相同地址的字出现,或者同组的G功能,取最后一个有效。 1 行号 Nxxxx 程序的行号,可以不要,但是有行号,在编辑时会方便些。行号可以不连续。行号最大为9999,超过后从再从1开始。 选择跳过符号“/”,只能置于一程序的起始位置,如果有这个符号,并且机床操作面板上“选择跳过”打开,本条程序不执行。这个符号多用在调试程序,如在开冷却液的程序前加上这个符号,

在调试程序时可以使这条程序无效,而正式加工时使其有效。 2 准备功能 地址“G”和数字组成的字表示准备功能,也称之为G功能。G功能根据其功能分为若干个组,在同一条程序段中,如果出现多个同组的G功能,那么取最后一个有效。 G功能分为模态与非模态两类。一个模态G功能被指令后,直到同组的另一个G功能被指令才无效。而非模态的G功能仅在其被指令的程序段中有效。 例: …… N10 G01 X250. Y300. N11 G04 X100 N12 G01 Z-120. N13 X380. Y400. …… 在这个例子的N12这条程序中出现了“G01”功能,由于这个功能是模态的,所以尽管在N13这条程序中没有“G01”,但是其作用还是存在的。

MODBUS协议简介

第一章MODBUS协议简介 MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。 MODBUS协议在一根通讯线上使用RS485应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,在相反的方向上终端设备发出的应答信号传输给主机。 MODBUS协议只允许在主计算机和终端设备之间,而不允许独立的设备之间的数据交换,这就不会在使它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。 1.1传输方式 传输方式是一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与MODBUS 协议– RTU方式相兼容的传输方式。 ◆Coding System 二进制编码8位 ◆Start bit 起始位1位 ◆Data bits 数据位8位 ◆Parity 校验无奇偶校验 ◆Stop bit 停止位1位 ◆Error checking 错误检测CRC(循环冗余校验) [注]瑞士DAE公司的网络电力仪表响应查询信号的时间为0.1 ~ 1.0秒(典型值为0.4秒) 1.2协议 当数据帧到达终端设备时,它通过一个简单的“口”进入寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任何错误都不会有成功的响应。 1.2.1数据帧格式 图 1 – 1 .数据帧格式 1.2.2地址(Address)域 地址域在帧的开始部分,由一个字节8位(0 ~ 255)组成,这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。当终端发送回一个响应,响应中的从机地址数据便告诉了主机哪台终端正与之进行通信。

MODBUS协议解析

MODBUS协议解析 Modbus是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。目前,可以通过下列三种方式实现Modbus通信: 以太网上的TCP/IP; 各种介质(有线:EIA/TIA-232-F、EIA-422、EIA/TIA-485-A;光纤、无线等)上的异步串行传输; Modbus PLUS,一种高速令牌传递网络。 作为中国国家标准的“基于Modbus协议的工业自动化网络规范”在描述Modbus应用协议的基础上,提供了Modbus应用协议在串行链路和TCP/IP上的实现指南。 Modbus 通信线 Modbus数据单元 Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU),特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引入一些附加域。启动Modbus事务处理的客户机创建Modbus PDU,其中的功能码向服务器指示将执行哪种操作,功能码后面是含有请求和响应参数的数据域。 通用Modbus帧 当Modbus应用在串行链路上时,Modbus ADU的地址域只含有从站地址,而差错校验码是根据报文内容执行“冗余校验”计算的结果,根据使用的传输模式(RTU或ASCII)采用不同的计算方法。 串行链路上的Modbus帧 当Modbus应用在TCP/IP上时,将使用一种专用报文头——MBAP报文头(Modbus应用协议报文头)来识别Modbus应用数据单元。 TCP/IP上的Modbus帧

Modbus标准功能码 Modbus协议定义了三种功能码: 公共功能码:被确切定义的、唯一的功能码,由Modbus-IDA组织确认、可进行一致性测试且已在MB IETF RFC中归档 用户定义的功能码:用户无需Modbus-IDA组织的任何批准就可以选择和实现的功能码,但是不能保证被选功能码的使用是唯一的 保留功能码:某些公司在传统产品上现行使用的功能码,不作为公共使用。 公共功能码定义如下表所示。 Modbus通信原理 Modbus是一种简单的客户机/服务器型应用协议,其通信遵循以下的过程: 客户端准备请求并向服务器发送请求; 服务器分析并处理客户端的请求,然后向客户端发送结果; 如果出现任何差错,服务器将返回一个异常功能码。 Modbus事务处理 统一的标准 Modbus串行链路、Modbus PLUS和Modbus TCP/IP使用的是一种统一的应用协议,因而使得信息从一个网络传输到另一个网络而不需改变通讯协议成为了可能。 当Modbus在TCP/IP上实施时,用户还可以从IP路由功能中得益,使得分布于世界任何地方的设备之间都可以进行通讯。施耐德电气还提供了全套的网关,用于实现Modbus TCP/IP网络与现有的Modbus PLUS 或Modbus串行链路网络之间的互连。 IANA委员会给施耐德电气公司分配了已为大家熟知的TCP 502端口,以专为Modbus协议保留。由此可见,Modbus协议现在已经成为Internet标准。Modbus和Modbus TCP/IP 也被IEC 61158国际标准承认为一种现场总线,同时它们还是由ITEI管理的中国国家标准。 Modbus拥有著名的TCP端口502 Modbus TCP/IP是唯一个被分配到互联网端口的工业以太网专题">工业以太网协议! 23 -Telnet 远程登录协议 21 -FTP 文件传输协议 161 -SNMP 简单网络管理协议 25 -SMTP 简单邮件传输协议 53 -DNS 域名解析服务

Modbus+RTU+标准通讯协议格式

HLP_SV Modbus RTU 标准通讯协议格式 通信资料格式 Address Function Data CRC check 8 bits 8 bits N×8bits 16bits 1)Address通讯地址:1-247 2)Function:命令码8-bit命令 01 读线圈状态 上位机发送数据格式: ADDRESS 01 ADDRH ADDRL NUMH NUML CRC 注: ADDR: 00000 --- FFFF(ADDR=线圈地址-1);NUM: 0010-----0040 (NUM为要读线圈状态值的二进制数位数) 正确时变频器返回数据格式: ADDRESS 01 BYTECOUNT DA TA1 DA TA2 DA TA3 DA TAN CRC 注: BYTECOUNT:读取的字数 错误时变频器返回数据格式: ADDRESS 0X81 Errornum CRC 注: Errornum为错误类型代码 如:要检测变频器的输出频率 应发送数据:01 01 00 30 00 10 3D C9(16进制) 变频器返回数据:01 01 02 00 20 B8 24(16进制) 发送数据:0030hex(线圈地址49) 返回的数据位为“0020”(16进制),高位与低位互换,为2000。即输出频率为 303(Max Ref)的50%。关于2000对应50%,具体见图1。

03读保持寄存器 上位机发送数据格式: ADDRESS 03 ADDRH ADDRL NUMH NUML CRC 注:ADDR: 0 --- 0XFFFF;NUM: 0010-----0040 (NUM为要读取数据的字数) ADDR=Parameter Numbe r×10-1 正确时变频器返回数据格式: ADDRESS 03 BYTECOUNT DA TA1 DA TA 2 DA TA 3 DA TAN CRC 注: BYTECOUNT:读取的字节数 错误时变频器返回数据格式: ADDRESS 0X83 Errornum CRC 如:要读变频器参数303的设定值 应发送数据:01 03 0B D5 00 02 95 BC (16进制) Parameter 303(3029)=0BD5HEX 变频器返回数据:“:”01 03 04 00 00 EA 60 B5 7B 返回的数据位为“00 00 EA 60”(16进制)转换为10进制数为60000, 表示303设置值为60.000 ※当参数值为双字时,NUM的值必须等于2。否则无法读取或读取错误。 05 写单个线圈状态 上位机发送数据格式: ADDRESS 05ADDRH ADDRL DA TAH DA TAL CRC 注:ADDR: 0 ---- 0XFFFF(ADDR=线圈地址-1);DATA=0000HEX(OFF) OR FF00(ON) HEX 正确时变频器返回数据格式: ADDRESS 05 DATAH DATAL BYTECOUNT CRC 错误时变频器返回数据格式: ADDRESS 0X85 Errornum CRC 如:要使写参数为写入RAM和EEPROM 应发送数据:01 05 00 40 FF 00 CRC(16进制) 变频器返回数据:01 05 FF 00 00 01 CRC(16进制) 发送数据:0040hex(线圈地址65) 06 写单个保持寄存器值(只能写参数值为单个字的参数) 上位机发送数据格式: ADDRESS 06 ADDRH ADDRL DA TAH DA TAL CRC 注:ADDR: ADDR=Parameter Numbe r×10-1 正确时变频器返回数据格式: ADDRESS 06 ADDRH ADDRL DA TAH DA TAL CRC 错误时变频器返回数据: ADDRESS 0X86 Errornum CRC 如:要对变频器参数101写入1 应发送数据:01 06 00 03 F1 00 01 19 BD(16进制) 变频器返回数据:01 06 03 F1 00 01 19 BD(16进制) PARAMETER 101(1009)=03F1 HEX

8279的命令字及其格式

8279的命令字及其格式 (说明:读者也可直接根据本实验讲义第24页8279命令一览表设置命令字) 8279的各种工作方式都要通过对命令寄存器的设置来实现。8279共有8种命令,通过这些命令设置工作寄存器,来选择各种工作方式。命令寄存器共8位,格式为: 命令类型命令内容 如上图,8279的一条命令由两大部分组成,一部分表征命令类型,为命令特征位,由命令寄存器高3位D7---D5决定。D7---D5三位的状态可组合出8种形式,对应8类命令。另一部分为命令的具体内容,由D4---D0决定。每种特征所代表的命令如表3.3所示 下面详细说明各种命令中,D4---D0各位的设置方法,以便确定各种命令字。 (1)键盘/显示命令 特征位D7 D6 D5=000 D4、D3两位用来设定4种显示方式,D2---D0三位用以设定8种键盘/显示扫描方式,分别如表3.4和表3.5所示。

表3.5中所谓译码扫描指扫描代码直接由扫描线SL0---SL3输出,每次只有1位是低电平(4选1)。所谓编码扫描是指扫描代码经SL0---SL3外接译码器输出。 由于键盘最大8*8=64个键,由SL0---SL2接3---8译码器,译码器的8位输出作为键盘扫描输出线(列线),RL0---RL7为输入线(行线)。 8279最多驱动16位显示器,故可由SL0---SL3接4---16译码器,译码器的16位输出作为显示扫描输出线(16选1),决定第几位显示。显示字段码由OUTA0---OUTA3和OUTB0---OUTB3输出。 表3.3、表3.4、表3.5三个表相互组合可得到各种键盘显示命令。 例1:若希望设置8279为键盘译码扫描方式、N键轮回,显示8个字符、右端入口方式,确定其命令字。 根据题目要求可进行分析,因为具有下列条件: 是键盘/显示命令特征位:D7 D6 D5=000 (表3.3); 8个字符右端入口显示:D4 D3=10(表3.4); 键盘译码扫描,N键轮回:D2 D1 D0=011(表3.5); 所以8位命令器存器状态D7---D0=00010011B,即该命令字13H送入命令寄存器口地址则可满足题目要求。 例2:若已知命令字为08H,判断8279工作方式。 因为命令字为08H即D7---D0=00001000B,显然D7 D6 D5=000,该条命令为键盘/显示命令,D4D3=01为16字符左端入口显示方式,D2D1D0=000,键盘为编码扫描、双键锁定方式。 (2)时钟编程命令 特征位D7 D6 D5=001 D4---D0用来设定分频系数,分频系数范围在0---31之间。 有的设计会用单片机的ALE端接8279的CLK端,但ALE端输出的脉冲频率比8279所需工作时钟频率(100KHz)高出很多,通过设置分频系数就可使8279得到所需的时钟频率。(注意:实验板上8279的CLK并不直接连到ALE)。 例:若8279 CLK的输入信号频率为3.1 MHz,则分频系数应为31D=1FH,于是D4---D0=11111,则控制字为:D7---D0=00111111B=3FH

MODBUS-TCP协议介绍

MODBUS-TCP ~ ~~ IEEE 802.3 CSMA/CD 10Mb/s (1)10 Base 5 RG-8 500m (2)10 Base 2 RG-58 185m (3)10 Base T UTP STP 100m ~~ 100Mb/s 802.3a 100 Base Tx 100 Base Fx ~~ 10/100M 100M “ ” (UTP) 100m 2 3km 100km 1000Mb/s 802.3z/802.3ab 10Gb/s 802.3ae ~ ~~ IEEE802.3 EN50081-2 EN50082-2 1 DIN UTP STP( ) ~TCP/IP 1. TCP/IP ~~ TCP/IP 20 80 X.25 TCP/IP ( ) TCP/IP TCP/IP TCP/IP

Internet TCP/IP TCP/IP ~~ TCP/IP OSI OSI TCP/IP 1 TCP/IP 2. Internet Protocol(IP) ~~IP Internet https://www.360docs.net/doc/8714181102.html, RFC79 ( RFC: Request For Comments ) ~~IP IP “ ” I/O IP IP IP “IP ” “ ” “ ” “ ” IP IP ~~IP IP 2

~~IP 4 ( 3 ) A 16387064 (1 126) B 64516 ( 128 191) C 254 ( 192 223) D (“0.0.0.0”) 1 (“255.255.255.255”) 3. Transmission Control Protocol (TCP) ~~TCP ( 4 ) RFC793 TCP TCP TCP

MODBUS TCPIP协议 介绍

1.该规范的发展概况 原始版本1997年9月3日作为公共评论的草案。 再版1999年3月29日,即修订版1.0。 没有大的技术改动,仅作了补充说明。增加了附录A和B作为对一些常用执行问题的回应。 该Modbus/TCP规范在万维网上公开发行。它表明开发者的意愿是把它作为工业自动化领域具有互用性的标准。 既然MODBUS和MODBUS/TCP作为事实上的“实际”标准,而且很多生产商已经实现了它的功能,此规范主要是阐述在互连网上具有普遍可用性的基于TCP通讯协议的MODBUS 报文的特殊编码。 2. 概述 MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品。显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC’s,I/O模块,以及连接其它简单域总线或I/O模块的网关服务的。 MODBUS/TCP协议是作为一种(实际的)自动化标准发行的。既然MODBUS已经广为人知,该规范只将别处没有收录的少量信息列入其中。然而,本规范力图阐明MODBU S中哪种功能对于普通自动化设备的互用性有价值,哪些部分是MODBUS作为可编程的协议交替用于PLC’s的“多余部分”。

它通过将配套报文类型“一致性等级”,区别那些普遍适用的和可选的,特别是那些适用于特殊设备如PLC’s的报文。 2.1 面向连接 在MODBUS中,数据处理传统上是无国界的,使它们对由噪音引起的中断有高的抵抗力,而且在任一端只需要最小的维护信息。 编程操作,另一方面,期望一种面向连接的方法。这种方法对于简单变量通过唯一的“登录”符号完成,对于Modbus Plus变量,通过明确的“程序路径”容量来完成,而“程序路径”容量维持了一种双向连接直到被彻底击穿。 MODBUS/TCP处理两种情况。连接在网络协议层很容易被辨认,单一的连接可以支持多个独立的事务。此外,TCP允许很大数量的并发连接,因而很多情况下,在请求时重新连接或复用一条长的连接是发起者的选择。 熟悉MODBUS的开发者会感到惊讶:为什么面向连接TCP协议比面向数据报的UDP 要应用广泛。主要原因是通过封装独立的“事务”在一个连接中,此连接可被识别,管理和取消而无须请求客户和服务器采用特别的动作。这就使进程具有对网络性能变化的适应能力,而且容许安全特色如防火墙和代理可以方便的添加。 类似的推理被最初的万维网的开发者所采用,他们选用TCP及端口80去实现一个作为单一事务的最小的环球网询问。 2.2 数据编码

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不同。它需要一个专门的协处理器来处理类似的高速令牌旋转。

相关文档
最新文档