PT-A Modbus通讯规约(Vcom1.4)
MODBUS通讯规约
小电流接地选线保护装置MODBUS规约一、物理界面1.接口标准终端机带有RS-232和RS-485硬件接口,分别为三线制和二线制接线。
2.通讯帧格式异步通讯方式,一位起始位,八位数据位,一位停止位,无校验。
通讯速率(波特率):1200,2400,4800,9600,19200 bit/s选址范围:1-254通讯方式:1:1或1:N,主从查询制二、数据交换界面1、RTU帧格式地址功能码数据效验8-BITS 8-BITS N*8-BITS 16-BITS2.CRC-16校验X16+X15+X2+13.数据请求帧(下行)按遥测量上送接地数据装置地址1字节功能码1字节数据起始地址(高位)数据起始地址(低位)请求数据字数(高位)请求数据字数(低位)CRC(高位)CRC(低位)1~0FEH 04 00 00 00 36CRC校验范围注释:其中数据起始地址和数据字数均表示取得的数据是字为单位而不是字节为单位。
4.数据响应帧(上行)装置地址,1字节功能码1字节数据字节数,1字节数据0…. 数据NCRC(高位)CRC(低位)1~0FEH 04 DataLen DataLenCRC校验范围三、规约的使用1、本规约只提供故障事件的查询,查询故障事件帧的类型为04。
本规约提供一个事件缓冲区,如下:序号事件列表1 母线1下的故障事件,包括(接地故障、母线故障、电压告警)2 母线2下的故障事件,同上3 母线3下的故障事件,同上4 母线4下的故障事件,同上5 历史故障事件16 历史故障事件2…………36 历史故障事件321-4事件默认为4段母线下的当前实时故障事件,5-36为32个历史故障事件。
(每个事件帧占内存18个字节,即9个字)1事件帧的内存格式说明,如下:(每个事件帧占内存 18个字节,即9个字)ID 1 2 3 4 5 6 7 8字节数 2 2 1 1 1 1 1 1位描述故障线路号故障时刻母线电压值故障母线号故障类型 SSec SMin SHour SDay9 10 11 12 13 14 15 161 1 1 1 1 1 1 1Smon SYear ESec EMin EHour EDay EMon Eyear事件帧详细说明:*故障线路号:4-51只是线路序号(占内存2个字节),低位在前,高位在后*故障时刻母线电压值:(占内存2个字节)低位在前,高位在后*故障母线号:0-3代表母线的序号*故障类型:0-无故障,1-母线故障,2-零序电压过高报警,3-接地故障*其中带S的时间为故障起始时间,E的时间为结束时间。
标准MODBUS规约格式
标准MODBUS规约格式1.帧格式下发:地址域1B+功能码域1B+reg开始地址高1B+reg开始地址低1B+寄存器个数高1B+寄存器个数低1B+校验码高+校验码低上行(16位模式,一个数据用一个或两个寄存器表示均可,看规定)地址域1B+功能码域1B+字节数1B(2*寄存器个数)+第一个寄存器数据高1B +第一个寄存数据低1B +第二个寄存器数高1B +第二个寄存器数低1B+校验码高+校验码低上行(32位模式, 一个数据用一个或两个寄存器表示均可,看规定)地址域1B+功能码域1B+字节数1B(2*寄存器个数)+第一个寄存器数据高2B +第一个寄存数据低2B +第二个寄存器数高2B +第二个寄存器数低2B+校验码高+校验码低注:B为字节的意思。
地址域总为从机的地址1B。
功能码域有03h和10h两种,03h为读寄存器数据,10h为写寄存器。
校验域进行16位的CRC校验。
2.报文举例01 03 02 BC 00 38 84 44 //召唤YM设备地址功能码(YM)协议地址(700) 寄存器数量CRC校验码01 03 70 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 05 00 00 00 设备地址功能码(YM)字节数数据区00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 49 14//4个字节表示1个YM 高字节在前低字节在后应答YM召唤01 01 00 32 01 12 1C 58设备地址功能码(YX)协议地址YX数量CRC校验码01 01 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 设备地址功能码(YX)字节数数据区00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F9 CB//1个字节表示8个YX 应答yc召唤01 03 02 58 00 2C C4 7C //召唤YC设备地址功能码(YC)协议地址(600) YC数量CRC校验码01 03 58 0D CB 0D C6 00 00 00 00 00 00 00 00 00 00 00 设备地址功能码(YC)字节数数据区00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63 6D//2个字节表示1YC 高字节在前低字节在后应答yc召唤01 0f 01 90 00 01 01 01 2B 4C //遥控令设备地址功能码起始协议地址控制的寄存器数量字节数数据区(16位表示16个遥控,双点遥控) CRC校验码01 0f 01 90 00 01 95 DA //遥控令应答01 0f 01 90 00 01 02 00 00 cd 01 //遥控复归令设备地址功能码协议地址控制数量字节数数据区CRC校验码01 0f 01 90 00 0a ce 02 //遥控令应答成功发完遥控令后,必须发遥控复归令清零。
MODBUS等规约
MODBUS(摸得巴斯):XDPS-2.0控制系统采用Modbus通信规约通信,Modbus通信规约电力系统使用很多,且XDPS-2.0的DCS工程师站提供了Modbus接口的数据服务程序。
Modbus通信规约要求一方为从站,一方为主站,为方便灵活配置采集周期,我们把实时查询系统端作为主站,DCS端作为从站。
实时查询系统的数据采集程序通过串口按Modbus通信方式每隔一定周期向Modbus接口的服务程序发送命令完成从DCS获取机组运行数据。
按数据包传递格式分,MODBUS通讯规约有两种,一种是MODBUS ASCII,一种是MODBUSRTU。
一般来说,通讯数据量少而且主要是文本的通讯则采用MODBUS ASCII 规约,通讯数据量大而且是二进制数值时,多采用MODBUSRTU规约。
由于实时查询系统要传输的内容是数值且数据传输频繁,所以数据包传递选用RTU数据格式。
为了提高数据传输效率,模拟量和开关量测点的数值表示方法是不一样的,开关量只用1个byte就可以了,即1个字节可以传输8个开关量测点的状态;模拟量是浮点数,应该用4个字节才能精确表示,在满足精度和不增加计算难度的条件下,也可以采用工程计算方法只用2个字节整数表示即可。
可以采取的工程计算方法有直接影射和放大缩小两种办法。
所谓放大缩小就是把绝对值比较小的数进行放大若干倍后再进行传输,接收方把收到的数值缩小若干倍变为原来的实际数值,同理对于比较大的数先缩小再放大,该方法要求倍数设置要很合理,否则失真很大。
本系统中采用的是直接影射办法来表示测点的模拟量。
所谓直接影射就是把测点取值范围直接影射到2字节的整数可以表示的范围进行传输。
发送方把实际数值进行计算转换成工程值,接收方收到后再把工程值进行相反计算转换成实际数据在电力行业,采集RTU数据经常会选择CDT规约,而物理链路上一般走串口232转485。
如果是短距离传输,不需要转发器,传输距离长了最好232转485后转光纤再转485转232,防止信号衰败丢失通讯规约通信规约是随着现代通信技术和计算机网络技术的发展而发展的。
MODBUS规约说明书
MODBUS 规约说明1.MODBUS规约MODBUS规约是MODICOM公司开发的一个为很多厂商支持的开放规约Modbus 协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。
它已经成为一通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。
它描述了控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共格式。
当在Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。
如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。
这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
标准的Modbus口是使用RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。
控制器能直接或经由Modem组网。
控制器通信使用主—从技术,即仅设备(主设备)能初始化传输(查询)。
其它设备(从设备)根据主设备查询提供的数据做出相应反应。
典型的主设备:主机和可编程仪表。
典型的从设备:可编程控制器。
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。
如果单独通信,从设备返回消息作为回应,如果是以广播方式查询的,则不作任何回应。
Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、错误检测域。
从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和错误检测域。
如果在消息接收过程中发生错误,或从设备不能执行其命令,从设备将建立错误消息并把它作为回应发送出去。
在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。
Modbus规约完整版
0
GB/T ××××—××××
第一部分:Modbus 协议
欢迎来到控制中文网
1 http://www.cechinamag.com
GB/T ××××—××××
第一部分:Modbus 协议
1 引言 1.1 范围
MODBUS 是 OSI 模型第 7 层上的应用层报文传输协议, 它在连接至不同类型总线或网络的设备 之间提供客户机/服务器通信。 自从 1979 年出现工业串行链路的事实标准以来, MODBUS 使成千上万的自动化设备能够通信。 目前,继续增加对简单而雅观的 MODBUS 结构支持。互联网组织能够使 TCP/IP 栈上的保留系统端 口 502 访问 MODBUS。 MODBUS 是一个请求/应答协议,并且提供功能码规定的服务。MODBUS 功能码是 MODBUS 请求/应答 PDU 的元素。本文件的作用是描述 MODBUS 事务处理框架内使用的功能码。 1.2 规范性引用文件
MODBUS 协议定义了一个与基础通信层无关的简单协议数据单元(PDU) 。特定总线或网络上 的 MODBUS 协议映射能够在应用数据单元(ADU)上引入一些附加域。
3
GB/T ××××—××××
ADU 地址域 功能码 PDU
图 3:通用 MODBUS 帧 启动 MODBUS 事务处理的客户机创建 MODBUS 应用数据单元。 功能码向服务器指示将执行哪 种操作。 MODBUS 协议建立了客户机启动的请求格式。 用一个字节编码 MODBUS 数据单元的功能码域。有效的码字范围是十进制 1-255(128-255 为 异常响应保留) 。当从客户机向服务器设备发送报文时,功能码域通知服务器执行哪种操作。 向一些功能码加入子功能码来定义多项操作。 从客户机向服务器设备发送的报文数据域包括附加信息,服务器使用这个信息执行功能码定义 的操作。这个域还包括离散项目和寄存器地址、处理的项目数量以及域中的实际数据字节数。 在某种请求中,数据域可以是不存在的(0 长度) ,在此情况下服务器不需要任何附加信息。功 能码仅说明操作。 如果在一个正确接收的 MODBUS ADU 中,不出现与请求 MODBUS 功能有关的差错,那么服 务器至客户机的响应数据域包括请求数据。如果出现与请求 MODBUS 功能有关的差错,那么域包 括一个异常码,服务器应用能够使用这个域确定下一个执行的操作。 例如, 客户机能够读一组离散量输出或输入的开/关状态, 或者客户机能够读/写一组寄存器的数 据内容。 当服务器对客户机响应时,它使用功能码域来指示正常(无差错)响应或者出现某种差错(称 为异常响应) 。对于一个正常响应来说,服务器仅对原始功能码响应。
MODBUS规约解析
5)遥测值计算方法:
电压4095对应1.2倍的额定值1.2*100 = 120V电流4095对应1.2倍的额定值1.2*5 =6A功率4095对应1.2倍的额定值(1.2*57.77*1.2*5)*3 = 1248W频率4095对应1.2倍的额定值1.2*50 = 60Hz功率因素4095对应1倍的额定值1.000本例中:6AA0为第一个遥测值(频率),它被放大8倍,满量程值为4095,对应60Hz(50Hz的1.2倍)。
BIT15~BIT3 =被测值(MVAL),范围-4096~4095
3)“设备状态字”占用两个字节,它的低字节的D0位为1表示有实遥信和虚遥信变位,要求主站使用“读全遥信”报文来读取,一旦执行了“读全遥信”,则“设备状态字的D0位变为0;“设备状态字”的D1位为1:表示保护装置有事件记录,要求主站使用连续执行“读单个事件记录”来读取事件记录,子站没有新的事件记录时,D1位自动变为0。通讯管理机可以根据需要选择是否使用“设备状态字”。
最大传输距离:1200米。
通讯介质:推荐采用0.5mm的双绞线,不带屏蔽层。(原因是如果使用屏蔽双绞线,但现场接地处理不好反而影响通讯质量)。
网络连接主站数目:1个。
网络连接从站数目:最多31个。
应答时间:小于4.5个byte传输时间(帧间隔最小时间) + 10ms。[1]
编辑本段2.通讯连接方式
RS-485网络的匹配电阻选取:双绞线网络两端的匹配电阻选取,以现场通信正常为准,一般地1.2km时取120Ω,600m时取220Ω,300m时取330Ω,如通信误码率较大,观察通信时的波形,匹配电阻做适当改变
标准ModBus规约说明
变电站标准ModBus规约说明编写:陈渲文1.基本设置1.模板保留参数遥测参数设置保留参数1~3: 依次为功能码(1Byte)、起始地址(2Byte)、查询寄存器数量(1Byte)遥信参数设置保留参数4~6: 依次为功能码(1Byte)、起始地址(2Byte)、查询寄存器询数量(1Byte)遥脉参数可置保留参数7~9: 依次为功能码(1Byte)、起始地址(2Byte)、查询寄存器数量(1Byte)保留参数10依次对应: 遥测标度调整系数(1Byte)、遥信每个寄存器代表遥信数目(1Byte)、遥控起始地址(2Byte)遥控的相关参数只跟保留参数10的遥控起始地址有关,标准程序中只支持功能码为0x05(可修改),合闸命令下发0xFF00,分闸命令下发0x0000(可修改)上图为一个规约中常见的约定格式,不难看出,功能码设为03 04都可以,起始地址为2000,访问数量0D(从00到0C,一共13个,在保留参数中是16进制格式)则可将保留参数1设为0x0320000D上图是规约文本中遥测备注,①数据都是先高后低传送,301C/301D解析也是先高后低,如果文本中注明是先低后高,则需要改程序;②U16是301C/301D遥测解析的常规类型,如果是U32就做到遥脉里(在保留参数7~9里设置),如果是S16,则需要修改程序(现在现场有很多多余的遥测数据,如果不需要导入,则尽量不导入,特别是系统外的站,很多遥测数据都不知道其意义)③这个放大缩小倍数,是做模板时标度设置要参考的。
比如明确说传输过程中已被放大10倍,那模板里标度就填10。
2.前置机参数设置这是标准的参数,有的特殊设置可能有奇偶校验、或者停止位是2位,注意设置一致就OK 2.基本结构1.功能码地址功能码起始地址高起始地址低询问数量高询问数量低CRC-高CRC-低以上是标准的ModBus询问形式,301C\301D程序里都是这样询问,如果规约文本里要求不一致,则需要修改程序,目前我们的问询功能码只支持1~4(目前大多数使用该规约的厂家也这么设定的,而遥控或者定值修改的功能码,我们默认为5,如果现场需要用到遥控或定值修改功能,功能码又不是5的话,则需要修改)如下图,遥控的Fun是5,遥调和GPS校时是6和10. 所以需要用到遥调和GPS校时功能时,需修改程序。
MODBUS规约与保文解析详细说明
MODBUS协议一般说明1.1.1交换特点MODBUS是一种主/从规约,它允许读或写一个或多个字(16位)操作,但任何情况下都不支持字节的读/写。
信息交换是以主站采取主动实现的,即由主站启动交换。
除广播命令外,所有的一个完整交换由下行和上行两个报文组成:·下行报文:主站发出的一个请求·上行报文:从站发回的一个回答图1.1 一般信息交换图图1.2 广播方式信息交换图自主站发出的请求,一般情况下,只可发送到某一指定的从站(由请求帧第一个字节中规定的从站号码来辨认),如图1.1所示。
在广播方式下(从站号码为0),此请求则发送到全部从站,当然,规约规定广播命令必须是写命令,并且从站也不发送回答,如图1.2所示。
1.1.2报文格式所有交换的RTU类型报文(帧),无论上/下行,具有相同的结构:每帧报文包含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使用如下的功能码:2.2 功能码与数据分类在本手册中,功能码与相应的数据的对应关系如下所示:在MODBUS 规约中,地址的起始编号为0。
如Q0005的规约地址为0004。
2.3 功能码详解2.3.1 01读线圈状态1.描述实现对从站中测点Q 和M (分类前缀为0x )ON/OFF 状态的读请求。
2.主站请求请求信文定义读取测点的起始地址和数量。
起始规约地址为0:Q1~Q2048的地址为0~2047;M1~M4096的地址为3000~7095。
科林公司MODBUS通讯规约1
通讯规约V1.1(科林公司内部MODBUS协议)此规约适用于系列微机远动的遥测、遥控、遥信各单元与主控单元的通讯,及主控单元同维护计算机的通讯。
对于功能码小于AFH的命令为主控(维护计算机)到单元设备,对于B0H-DFH的功能码为维护计算机到主控。
通讯方式为RS485半双工方式,以主控单元为主,其他各单元为从,每个相同功能的从单元有各自唯一的地址号,主控单元查询某个从单元时,被查询的单元做出相应的回应。
扩展说明:1、在召测设备时如果设备发生遥信变位,则除当前召测类型为(遥控选择、遥控执行、读写参数、设置表底)外,都返回遥信数据帧。
2、召测设备时如果数据长度为零,则按该召测类型的有效长度来回应。
3、对子站命令的功能说明:下面以地址号为01H的子站为例,详细介绍各种功能的主站命令和子站回应的规约格式。
(1)读数字量输入状态(Read DI Status)(功能码:02)下行:该命令读取子站的遥信输入状态,它包括子站地址、功能码、遥信起上行:此回应包括子站地址、功能码、数据长度、遥信数据和CRC校验码。
其中遥信特征数据的每一位从低到高分别代表1~n路遥信输入状态,1表示ON,0表示OFF。
(假设1到16路的遥信输入状态为“1”,17到32路的遥信32路,KLD-8100:8路。
(2)读内存数据(Read Data)(功能码:03)下行:该命令将使主站获得子站的遥测实时数据,它包括子站地址、功能码、上行:此回应包括子站地址、功能码、数据长度、遥测数据、和CRC校验码。
类型设备的遥测数据:KLD-8100、KLD-8200、KLD-7100等。
(3)广播对时(功能码:04)下行:该命令是用来为各单元对时,格式如下:(4)写数字量输出状态(Control DO)(功能码:05)下行:该命令改变设备开关量中任何一路的输出状态。
它包括子站地址、功能码、开关量地址、特征数据和CRC校验码。
其中开关量的地址范围是0000H—00FFH,特征数据FF00H使遥控开关量输出状态为ON,即遥控输出继电器接点闭合,特征数据0000H使遥控开关量输出状态为OFF,即遥控输出继电器接点打开。
MODBUS通讯协议及编程(VC)
MODBUS通讯协议及编程ModBus通讯协议分为RTU协议和ASCII协议。
下面就ModBus RTU协议简要介绍如下:一、通讯协议(一)、通讯传送方式:通讯传送分为独立的信息头,和发送的编码数据。
以下的通讯传送方式定义也与MODBUS RTU 通讯规约相兼容:编码8位二进制起始位1位数据位8位奇偶校验位1位(偶校验位)停止位1位错误校检CRC(冗余循环码)初始结构= ≥4字节的时间地址码= 1 字节功能码= 1 字节数据区= N 字节错误校检= 16位CRC码结束结构= ≥4字节的时间地址码:地址码为通讯传送的第一个字节。
这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。
并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:通讯传送的第二个字节。
ModBus通讯规约定义功能号为1到127。
本仪表只利用其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机执行什么动作。
作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。
如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。
数据区:数据区是根据不同的功能码而不同。
数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。
CRC码:二字节的错误检测码。
(二)、通讯规约:当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。
返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。
如果出错就不发送任何信息。
1.信息帧结构地址码功能码数据区错误校验码8位8位N × 8位16位地址码:地址码是信息帧的第一字节(8位),从0到255。
这个字节表明由用户设置地址的从机将接收由主机发送来的信息。
国电南自modbus规约
国电南自modbus规约摘要:一、国电南自modbus规约简介二、国电南自modbus规约的主要特点1.通信协议概述2.数据传输方式及速率3.报文结构与解析4.应用场景与优势三、国电南自modbus规约的实践应用1.硬件设备选型与配置2.软件开发与调试3.典型应用案例解析四、国电南自modbus规约的拓展与优化1.与其他通信协议的对比分析2.国电南自modbus规约的不足与改进3.未来发展趋势与应用前景正文:一、国电南自modbus规约简介国电南自modbus规约,是一种基于串行通信的工业自动化通信协议,起源于20世纪70年代。
在我国,国电南自modbus规约得到了广泛的应用,尤其在电力、石化、水处理等领域的自动化控制系统之中。
二、国电南自modbus规约的主要特点1.通信协议概述国电南自modbus规约是一种主从式通信协议,支持单主多从的网络结构。
通信过程中,主设备向从设备发送查询报文,从设备回应响应报文。
2.数据传输方式及速率国电南自modbus规约支持异步通信和同步通信两种数据传输方式。
异步通信采用字节传输,传输速率较慢;同步通信采用比特传输,传输速率较快。
3.报文结构与解析国电南自modbus规约的报文结构主要包括:起始符、长度字段、数据字段、校验和、结束符等。
在数据字段中,包含了设备地址、功能码、数据长度等信息。
4.应用场景与优势国电南自modbus规约适用于各种工业自动化设备之间的通信,具有以下优势:- 传输速率较高,适用于实时性要求较高的场景;- 具有较强的抗干扰能力,适应恶劣的工业环境;- 协议开放,易于与其他通信协议兼容;- 丰富的功能码,满足各种设备控制需求。
三、国电南自modbus规约的实践应用1.硬件设备选型与配置在使用国电南自modbus规约进行通信时,需要选择支持该协议的硬件设备。
常见的设备包括:modbus主站模块、modbus从站模块、智能终端等。
在选型完成后,根据实际需求进行合理的配置,如:通信速率、数据位、停止位等。
MODBUS规约
(注意: MODBUS 通讯规约中的寄存器指的是 16 位(即2字节),并且高位在前。
)1,功能码01(0x01):读1路或多路开关量输出状态例:要读取地址为01,输出开关量第0,1路的共2路输出状态主机发送: 01 01 0000 0002 BD CB (共8字节)地址功能码起始位读开关量个数 CRC16Lo CRC16Hi从机响应:01 01 01 02 D0 49 (共6字节)地址功能码数据长度 OUT状态数据 CRC16Lo CRC16Hi2,功能码03(0x03):读多路寄存器例:主机要读取地址为01,开始地址为0004H的2个从机寄存器(16位)数据主机发送: 01 03 0004 0002 (85 CA)地址功能码起始地址数据长度 CRC码从机响应: 01 03 04 0106 0001 (DA 0E)地址功能码返回字节数寄存器数据1 寄存器数据2 CRC码3,功能码05(0x05):写1路开关量输出"FF00"为输出开关量为"1",即控制继电器"合";"0000"为输出开关量为"0",即控制继电器"分"。
例:主机要控制地址为01,第1路开关量DO1(或继电器)"合"主机发送: 01 05 0001 FF00 (DD FA)地址功能码输出Bit位控制命令 CRC码从机响应:与主机发送的报文格式及数据内容完全相同4,功能码06(0x06):写一个寄存器主机发送: 地址功能码寄存器地址(2Byte) 寄存器数据(2Byte) CRC16从机响应:与主机发送的报文格式及数据内容完全相同5,功能码0F(0x0F):写多路开关量输出例:主机要控制地址为01,从第3路到第13路共10路继电器同时改变输出;主机发送: 01 0F 0003 000A 02 CD 01 (70 5B)地址功能码起始位地址输出数量(位数) 输出字节计数输出数据 CRC码从机响应:01 0F 0003 000A (25 CC)地址功能码起始位地址输出数量 CRC码位: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0状态:- - - 0 1 1 1 0 0 1 1 0 1 - - -输出数据(CD 01):高8位(CD)←-[⑧起始位+7(bi t0A)...②起始位+1(bit04)①起始位(bit03)]低8位(01)←-[ ⑧补零... ①起始位+8(bit0B)]6,功能码10(0x10):写多路寄存器例:主机要把0001,0014保存到地址为0004,0005 的从机寄存器(16位)中去(从机地址码为01)。
国电南自modbus规约
国电南自modbus规约(原创实用版)目录1.国电南自 modbus 规约概述2.modbus 规约的特点3.国电南自 modbus 规约的应用4.国电南自 modbus 规约的优势5.国电南自 modbus 规约的未来发展正文一、国电南自 modbus 规约概述国电南自 modbus 规约是一种串行通信协议,由 Modicon 公司于1979 年开发,现为全球广泛应用的工业通信协议之一。
其主要应用于工业自动化和控制系统中,以实现设备间的通信和数据交换。
二、modbus 规约的特点1.通用性:modbus 规约支持多种数据类型,适用于各种工业自动化和控制系统。
2.灵活性:modbus 规约支持点对点、多点、广播等多种通信方式,可根据实际应用场景进行选择。
3.可靠性:modbus 规约采用奇偶校验、CRC 校验等错误检测机制,确保数据传输的可靠性。
4.易于维护:modbus 规约采用标准的串行通信接口,设备连接简单,易于维护。
三、国电南自 modbus 规约的应用国电南自作为我国电力设备制造行业的领军企业,将 modbus 规约广泛应用于各类电力自动化设备中,如保护装置、测控装置、通讯装置等,实现设备间的高效通信和数据交换。
四、国电南自 modbus 规约的优势1.提高设备间通信效率:通过采用 modbus 规约,国电南自的设备能够快速、准确地进行数据交换,提高电力系统的运行效率。
2.降低系统维护成本:modbus 规约的通用性和易于维护性,使得国电南自的设备具有较低的维护成本。
3.提高系统安全性:modbus 规约的可靠性校验机制,有助于保障电力系统的安全稳定运行。
Modbus通讯规约
Modbus通讯规约MODBUS通讯规约MODBUS通讯规约 V2.01.通讯参数和传输特性传输方式:异步串行通信方式。
MODBUS规约模式: RTU模式。
传输速率:2400 bps,4800bps,9600bps,19200bps。
串行口通讯数据格式:1 个起始位,8 个数据位, 无校验位,1个停止位。
最大传输距离:1200米。
通讯介质:推荐采用0.5mm的双绞线,不带屏蔽层。
(原因是如果使用屏蔽双绞线,但现场接地处理不好反而影响通讯质量)。
网络连接主站数目:1个。
网络连接从站数目:最多31个。
应答时间:小于 4.5个byte传输时间(帧间隔最小时间) + 10ms。
2.网络连接RS-485网络的匹配电阻选取:双绞线网络两端的匹配电阻选取,以现场通信正常为准,一般地1.2km时取120Ω,600m时取220Ω,300m时取330Ω,如通信误码率较大,观察通信时的波形,匹配电阻做适当改变:末端匹配电阻合适末端匹配电阻偏小末端匹配电阻偏大3.通信参数选择通信站号:在通讯参数中修改装置地址,范围1~99,禁止使用0作为装置地址,地址0作为广播地址使用。
通信波特率: 通讯参数中修改装置485口,修改通信波特率:选择范围: 2400bps, 4800bps,9600bps,19200bps。
4.MODBUS协议通用格式4.1 支持的MODBUS功能码功能码02H: 读取开关量输入(读实遥信和虚遥信)。
功能码03H: 读取保持寄存器(读事件记录等) 功能码04H: 读取输入寄存器(读远动遥测)功能码05H: 强制单点继电器输出(远方复归、单步的遥控跳闸、遥控合闸)。
功能码06H: 向保持寄存器写单个字(遥控跳闸、遥控合闸的选择和执行操作)功能码10H: 向保持寄存器(内存区)写多个16位的字(通讯对时)。
1MODBUS通讯规约4.2 异常响应报文格式由于软件编程错误,对协议理解错误或通讯干扰等原因,MODBUS通信子站接收到主站的报文后,可以采用异常响应报文给予回答,异常响应报文格式举例如下:主站=>子站:远方复归 FC 05H 异常响应报文子站=>主站报文内容含义备注报文内容含义备注 MODBUS地址 1字节01H 举例 1字节 MODBUS地址 01H 举例 1字节功能码 05H 1字节功能码 85H 1字节01H 1字节 02H 线圈地址高字节异常代码 1字节线圈地址低字节 07H 1字节 CRC高字节 C3H 1字节强制线圈数值高字节FFH 1字节 CRC低字节 51H 强制线圈数值低字节 1字节00H 1字节 CRC高字节3CH CRC低字节 1字节07H 子站通过校验,发现主站报文有问题,将响应报文将主站的功能码最高位(D7)置1,如例子中的85H,异常响应报文中有固定的一个字节作为“异常代码”,表示异常原因。
ModBus规约
ModBus_RTU规约(本协议采用主从问答方式)PDM系列仪表/变送器:PDM系列仪表/变送器采用全新的设计,革命性地改变了传统电表的概念;具有多功能、高精度、数字式、可编程、结构紧凑、多画面显示的特点,它可以满足电力工业未来对电表的需求。
ModBus通讯协议: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校验无误,则执行相应的任务,然后把执行结果(数据)返送给主机。
返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。
如果CRC校验出错就不返回任何信息。
地址码:地址码是每次通讯信息帧的第一字节(8位),从0到255。
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搜集协议收支进去即可.所以正在那里尔仅介绍一下Modbus的ASCII战RTU协议. 下表是ASCII协媾战RTU协议举止的比较:通过比较不妨瞅到,ASCII协媾战RTU协议相比拥有启初战中断标记表记标帜,果此正在举止步调处理时能越收便当,而且由于传输的皆是可睹的ASCII字符,所以举止调试时便越收的曲瞅,其余它的LRC校验也比较简单.然而是果为它传输的皆是可睹的ASCII字符,RTU传输的数据每一个字节ASCII皆要用二个字节去传输,比圆RTU传输一个十六进造数0xF9,ASCII 便需要传输’F’’9’的ASCII码0x39战0x46二个字节,那样它的传输的效用便比较矮.所以普遍去道,如果所需要传输的数据量较小不妨思量使用ASCII协议,如果所需传输的数据量比较大,最佳能使用RTU协议.底下对付二种协议的校验举止一下介绍.1、LRC校验LRC域是一个包罗一个8位二进造值的字节.LRC值由传输设备去估计并搁到消息帧中,接支设备正在接支消息的历程中估计LRC,并将它战接支到消息中LRC域中的值比较,如果二值不等,证明有过失.LRC校验比较简朴,它正在ASCII协议中使用,检测了消息域中除启初的冒号及中断的回车换止号中的真质.它只是是把每一个需要传输的数据按字节叠加后与反加1即可.底下是它的VC代码: BYTE GetCheckCode(const char *pSendBuf, int nEnd)//赢得校验码 { BYTE byLrc = 0; char pBuf[4]; intnData = 0; for(i=1; i<end; i+=2) //i初初为1,躲启“启初标记表记标帜”冒号 { //每二个需要收支的ASCII码转移为一个十六进造数 pBuf [0] = pSendBuf ; pBuf [1] = pSendBuf [i+1]; pBuf [2] = '\0';sscanf(pBuf,"%x",& nData); byLrc += nData; } byLrc = ~ byLrc; byLrc ++; return byLrc; } 2、CRC校验 CRC域是二个字节,包罗一16位的二进造值.它由传输设备估计后加进到消息中.接支设备沉新估计支到消息的CRC,并与接支到的CRC域中的值比较,如果二值分歧,则有误.CRC是先调进一值是齐“1”的16位寄存器,而后调用一历程将消息中连绝的8位字节各目前寄存器中的值举止处理.仅每个字符中的8Bit数据对付CRC灵验,起初位战停止位以及奇奇校验位均无效.CRC爆收历程中,每个8位字符皆单独战寄存器真质相大概(OR),截止背最矮灵验位目标移动,最下灵验位以0弥补.LSB被提与出去检测,如果LSB为1,寄存器单独战预置的值大概一下,如果LSB为0,则不举止.所有历程要沉复8次.正在终尾一位(第8位)完毕后,下一个8位字节又单独战寄存器的目前值相大概.最后寄存器中的值,是消息中所有的字节皆真止之后的CRC值.CRC增加到消息中时,矮字节先加进,而后下字节.底下是它的VC代码: WORDGetCheckCode(const char * pSendBuf, int nEnd)//赢得校验码 { WORD wCrc = WORD(0xFFFF);for(int i=0; i<nEnd; i++){wCrc ^=WORD(BYTE(pSendBuf));for(int j=0; j<8; j++)2、{if(wCrc & 1){3、wCrc >>= 1; wCrc ^= 0xA001; }else{wCrc >>= 1; }}}return wCrc;}对付于一条RTU协议的下令不妨简朴的通过以下的步调转移为ASCII协议的下令:1、把下令的CRC校验去掉,而且估计出LRC校验与代.2、把死成的下令串的每一个字节转移成对付应的二个字节的ASCII码,比圆0x03转移成0x30,0x33(0的ASCII码战3的ASCII码).3、正在下令的启头加上起初标记表记标帜“:”,它的ASCII码为0x3A.4、正在下令的尾部加上中断标记表记标帜CR,LF(0xD,0xA),此处的CR,LF表示回车战换止的ASCII 码.所以以下咱们仅介绍RTU协议即可,对付应的ASCII协议不妨使用以上的步调去死成.下表是Modbus支援的功能码:正在那些功能码中较少使用的是1、2、3、4、5、6号功能码,使用它们即可真止对付下位机的数字量战模拟量的读写支配. 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、写数字量(线圈状态):估计机收支下令:[设备天面] [下令号05] [需下置的寄存器天面下8位] [矮8位] [下置的数据下8位] [矮8位] [CRC校验的矮8位] [CRC校验的下8位] 例:[11][05][00][AC][FF][00][CRC矮][CRC下] 意思如下:<1>设备天面战上头的相共.<2>下令号:写数字量的下令号牢固为05.<3>需下置的寄存器天面下8位,矮8位:标明白需要下置的启关的天面.<4>下置的数据下8位,矮8位:标明需要下置的启关量的状态.例子中为把该启关关合.注意,此处只不妨是[FF][00]表示关合[00][00]表示断启,其余数值非法.<5>注意此下令一条只可下置一个启关量的状态. 设备赞同:如果乐成把估计机收支的下令本样返回,可则不赞同. 4、读可读写模拟量寄存器(脆持寄存器):估计机收支下令:[设备天面] [下令号03] [起初寄存器天面下8位] [矮8位] [读与的寄存器数下8位] [矮8位] [CRC校验的矮8位] [CRC 校验的下8位] 例:[11][03][00][6B][00][03][CRC矮][CRC下] 意思如下:<1>设备天面战上头的相共.<2>下令号:读模拟量的下令号牢固为03.<3>起初天面下8位、矮8位:表示念读与的模拟量的起初天面(起初天面为0).比圆例子中的起初天面为107.<4>寄存器数下8位、矮8位:表示从起初天面启初读几个模拟量.例子中为3个模拟量.注意,正在返回的疑息中一个模拟量需要返回二个字节. 设备赞同:[设备天面] [下令号03] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的矮8位] [CRC校验的下8位] 例:[11][03][06][02][2B][00][00][00][64][CRC矮][CRC下] 意思如下:<1>设备天面战下令号战上头的相共.<2>返回的字节个数:表示数据的字节个数,也便是数据1,2...n中的n的值.例子中返回了3个模拟量的数据,果为一个模拟量需要2个字节所以共6个字节.<3>数据1...n:其中[数据1][数据2]分别是第1个模拟量的下8位战矮8位,[数据3][数据4]是第2个模拟量的下8位战矮8位,以此类推.例子中返回的值分别是555,0,100.<4>CRC校验共上. 5、读只可读模拟量寄存器(输进寄存器):战读与死存寄存器类似,不过第二个字节的下令号不再是2而是4. 6、写单个模拟量寄存器(脆持寄存器):估计机收支下令:[设备天面] [下令号06] [需下置的寄存器天面下8位] [矮8位] [下置的数据下8位] [矮8位] [CRC校验的矮8位] [CRC校验的下8位] 例:[11][06][00][01][00][03][CRC矮][CRC下] 意思如下:<1>设备天面战上头的相共.<2>下令号:写模拟量的下令号牢固为06.<3>需下置的寄存器天面下8位,矮8位:标明白需要下置的模拟量寄存器的天面.<4>下置的数据下8位,矮8位:标明需要下置的模拟量数据.比圆例子中便把1号寄存器的值设为3.<5>注意此下令一条mym级别: 总版主粗华: 41收帖: 3956威视: 9957 面款项: 9431 Gold孝敬值: 601 面伙伴圈: ifix技能群正在线时间:539(小时)备案时间:2005-02-02终尾登录:2008-01-25 Modbus通讯协议MODBUS通讯协议简介工业统造已从单机统造走背集结监控、集集统造,此刻已加进搜集时代,工业统造器连网也为搜集管造提供了便当.Modbus便是工业统造器的搜集协议中的一种.一、概括Modbus 协议是应用于电子统造器上的一种通用谈话.通过此协议,统造器相互之间、统造器经由搜集(比圆以太网)战其余设备之间不妨通疑.它已经成为一通用功业尺度.有了它,分歧厂商死产的统造设备不妨连成工业搜集,举止集结监控.此协议定义了一个统造器能认识使用的消息结构,而不管它们是通过何种搜集举止通疑的.它形貌了一统造器哀供考察其余设备的历程,如果回应去自其余设备的哀供,以及何如侦测过失并记录.它造定了消息域格局战真质的大众要收.当正在一Modbus搜集上通疑时,此协议决断了每个统造器须要知讲它们的设备天面,辨别按天面收去的消息,决断要爆收何种止径.如果需要回应,统造器将死成反馈疑息并用Modbus协议收出.正在其余搜集上,包罗了Modbus协议的消息变换为正在此搜集上使用的帧大概包结构.那种变换也扩展了根据简曲的搜集办理节天面、路由路径及过失检测的要收.1、正在Modbus搜集上转输尺度的Modbus心是使用一RS-232C兼容串止接心,它定义了对接心的针足、电缆、旗号位、传输波特率、奇奇校验.统造器能间接大概经由Modem组网.统造器通疑使用主—只可下置一个模拟量的状态. 设备赞同:如果乐成把估计机收支的下令本样返回,可则不赞同.从技能,即仅一设备(主设备)能初初化传输(查询).其余设备(从设备)根据主设备查询提供的数据做出相映反应.典型的主设备:主机战可编程仪容.典型的从设备:可编程统造器.主设备可单独战从设备通疑,也能以广播办法战所有从设备通疑.如果单独通疑,从设备返回一消息动做回应,如果是以广播办法查询的,则不做所有回应.Modbus协议建坐了主设备查询的要收:设备(大概广播)天面、功能代码、所有要收支的数据、一过失检测域.从设备回应消息也由Modbus协议形成,包罗确认要止径的域、所有要返回的数据、战一过失检测域.如果正在消息接支历程中爆收一过失,大概从设备不克不迭真止其下令,从设备将建坐一过失消息并把它动做回应收支进去.2、正在其余典型搜集上转输正在其余搜集上,统造器使用对付等技能通疑,故所有统造皆能初初战其余统造器的通疑.那样正在单独的通疑历程中,统造器既可动做主设备也可动做从设备.提供的多个里里通讲可允许共时爆收的传输进程.正在消息位,Modbus协议仍提供了主—从准则,纵然搜集通疑要收是“对付等”.如果一统造器收支一消息,它不过动做主设备,并憧憬从从设备得到回应.共样,当统造器接支到一消息,它将建坐一从设备回应要收并返回给收支的统造器.Modbus是Modicon 公司为其PLC与主机之间的通讯而收明的串止通讯协议.其物理层采与RS232、485等同步串止尺度.由于其启搁性而被洪量的PLC及RTU厂家采与.Modbus通讯办法采与主从办法的查询-相映体造,惟有主站收出查询时,从站才搞给出赞同,从站不克不迭主动收支数据.主站不妨背某一个从站收出查询,也不妨背所有从站广播疑息.从站只赞同单独收给它的查询,而不赞同广播消息.Modbus的串止心的通讯参数(如波特率、奇奇校验)可由用户采用.二、MODBUS协议传递办法MODBUS通讯协议有二种传递办法:RTU办法战ASCII办法,二种办法如下所示:名目 RTU办法 ASCII办法字节少度 8 BITS 7 BITS奇奇校验 1 BIT OR 0 BIT 1 BIT OR 0 BIT字节中止 1 BIT OR 2 BITS 1 BIT OR 2 BITS启初标记表记标帜不要 :(冒号)中断标记表记标帜不要 CR,LF数据隔断 < 24 BIT < 1S堕落考验办法 CRC-16 LRC统造器能树坐为二种传输模式(ASCII大概RTU)中的所有一种正在尺度的Modbus搜集通疑.用户采用念要的模式,包罗串心通疑参数(波特率、校验办法等),正在摆设每个统造器的时间,正在一个Modbus搜集上的所有设备皆必须采用相共的传输模式战串心参数.三、Modbus消息帧二种传输模式中(ASCII大概RTU),传输设备以将Modbus消息转为有起面战终面的帧,那便允许接支的设备正在消息起初处启初处事,读天面调配疑息,推断哪一个设备被选中(广播办法则传给所有设备),判知何时疑息已完毕.部分的消息也能侦测到而且过失能树坐为返回截止.1、ASCII帧使用ASCII模式,消息以冒号(:)字符(ASCII码 3AH)启初,以回车换止符中断(ASCII 码 0DH,0AH).其余域不妨使用的传输字符是十六进造的0...9,A...F.搜集上的设备不竭侦测“:”字符,当有一个冒号接支到时,每个设备皆解码下个域(天面域)去推断是可收给自己的.消息中字符间收支的时间隔断最少不克不迭超出1秒,可则接支的设备将认为传输过失.2、RTU帧使用RTU模式,消息收支起码要以3.5个字符时间的停顿隔断启初.正在搜集波特率下百般的字符时间,那是最简单真止的(如下图的T1-T2-T3-T4所示).传输的第一个域是设备天面.不妨使用的传输字符是十六进造的0...9,A...F.搜集设备不竭侦测搜集总线,包罗停顿隔断时间内.当第一个域(天面域)接支到,每个设备皆举止解码以推断是可收往自己的.正在终尾一个传输字符之后,一个起码3.5个字符时间的停顿标定了消息的中断.一个新的消息可正在此停顿后启初.所有消息帧必须动做一连绝的流转输.如果正在帧完毕之前有超出1.5个字符时间的停顿时间,接支设备将刷新不完备的消息并假定下一字节是一个新消息的天面域.共样天,如果一个新消息正在小于3.5个字符时间内接着前个消息启初,接支的设备将认为它是前一消息的延绝.那将引导一个过失,果为正在终尾的CRC域的值不可能是粗确的.3、天面域消息帧的天面域包罗二个字符(ASCII)大概8Bit(RTU).大概的从设备天面是0...247 (十进造).单个设备的天面范畴是1...247.主设备通过将要联结的从设备的天面搁进消息中的天面域去选通从设备.当从设备收支回应消息时,它把自己的天面搁进回应的天面域中,以便主设备知讲是哪一个设备做出回应.天面0是用做广播天面,以使所有的从设备皆能认识.当Modbus协议用于更下程度的搜集,广播大概不允许大概以其余办法代替.4、怎么样处理功能域消息帧中的功能代码域包罗了二个字符(ASCII)大概8Bits(RTU).大概的代码范畴是十进造的1...255.天然,有些代码是适用于所有统造器,有此是应用于某种统造器,另有些死存以备后用.当消息从主设备收往从设备时,功能代码域将告之从设备需要真止哪些止为.比圆去读与输进的启关状态,读一组寄存器的数据真质,读从设备的诊疗状态,允许调进、记录、校验正在从设备中的步调等.当从设备回当令,它使用功能代码域去指示是平常回应(无误)仍旧有某种过失爆收(称做同议回应).对付平常回应,从设备仅回应相映的功能代码.对付同议回应,从设备返回一等共于平常代码的代码,然而最要害的位子为逻辑1.比圆:一从主设备收往从设备的消息央供读一组脆持寄存器,将爆收如下功能代码:0 0 0 0 0 0 1 1 (十六进造03H)对付平常回应,从设备仅回应共样的功能代码.对付同议回应,它返回: 1 0 0 0 0 0 1 1 (十六进造83H)除功能代码果同议过失做了建改中,从设备将一特殊的代码搁到回应消息的数据域中,那能报告主设备爆收了什么过失. 主设备应用步调得到同议的回应后,典型的处理历程是沉收消息,大概者诊疗收给从设备的消息并报告给支配员. 5、数据域数据域是由二个十六进造数集中形成的,范畴00...FF.根据搜集传输模式,那不妨是由一对付ASCII字符组成大概由一RTU字符组成. 从主设备收给从设备消息的数据域包罗附加的疑息:从设备必须用于举止真止由功能代码所定义的所为.那包罗了象不连绝的寄存器天面,要处理项的数目,域中本质数据字节数. 比圆,如果主设备需要从设备读与一组脆持寄存器(功能代码03),数据域指定了起初寄存器以及要读的寄存器数量.如果主设备写一组从设备的寄存器(功能代码10十六进造),数据域则指明白要写的起初寄存器以及要写的寄存器数量,数据域的数据字节数,要写进寄存器的数据. 如果不过失爆收,从从设备返回的数据域包罗哀供的数据.如果有过失爆收,此域包罗一同议代码,主设备应用步调不妨用去推断采与下一步止径. 正在某种消息中数据域不妨是不存留的(0少度).比圆,主设备央供从设备回应通疑事变记录(功能代码0B十六进造),从设备不需所有附加的疑息. 6、过失检测域尺度的Modbus搜集有二种过失检测要收.过失检测域的真质视所选的检测要收而定. ASCII 当采用ASCII 模式做字符帧,过失检测域包罗二个ASCII字符.那是使用LRC (纵背冗少检测)要收对付消息真质估计得出的,不包罗启初的冒号符及回车换止符.LRC字符附加正在回车换止符前里. RTU 当采用RTU模式做字符帧,过失检测域包罗一16Bits值(用二个8位的字符去真止).过失检测域的真质是通过对付消息真质举止循环冗少检测要收得出的.CRC域附加正在消息的终尾,增加时先是矮字节而后是下字节.故CRC的下位字节是收支消息的终尾一个字节.7、字符的连绝传输当消息正在尺度的Modbus系列搜集传输时,每个字符大概字节以如下办法收支(从左到左):最矮灵验位...最下灵验位四、过失检测要收尺度的Modbus串止搜集采与二种过失检测要收.奇奇校验对付每个字符皆可用,帧检测(LRC大概CRC)应用于所有消息.它们皆是正在消息收支前由主设备爆收的,从设备正在接支历程中检测每个字符战所有消息帧. 用户要给主设备摆设一预先定义的超常常间隔断,那个时间隔断要足够少,以使所有从设备皆能动做平常反应.如果从设备测到一传输过失,消息将不会接支,也不会背主设备做出回应.那样超时事变将触收主设备去处理过失.收往不存留的从设备的天面也会爆收超时. 1、奇奇校验用户不妨摆设统造器是奇大概奇校验,大概无校验.那将决断了每个字符中的奇奇校验位是怎么样树坐的. 如果指定了奇大概奇校验,“1”的位数将算到每个字符的位数中(ASCII模式7个数据位,RTU中8个数据位).比圆RTU字符帧中包罗以下8个数据位: 1 1 0 0 0 1 0 1 所有“1”的数目是4个.如果便用了奇校验,帧的奇奇校验位将是0,便得所有“1”的个数仍是4个.如果便用了奇校验,帧的奇奇校验位将是1,便得所有“1”的个数是5个. 如果不指定奇奇校验位,传输时便不校验位,也不举止校验检测.代替一附加的停止位弥补至要传输的字符帧中.2、LRC检测使用ASCII模式,消息包罗了一鉴于LRC要收的过失检测域.LRC域检测了消息域中除启初的冒号及中断的回车换止号中的真质. LRC域是一个包罗一个8位二进造值的字节.LRC值由传输设备去估计并搁到消息帧中,接支设备正在接支消息的历程中估计LRC,并将它战接支到消息中LRC域中的值比较,如果二值不等,证明有过失. LRC要收是将消息中的8Bit的字节连绝乏加,拾弃了进位. LRC简朴函数如下: static unsigned char LRC(auchMsg,usDataLen) unsigned char *auchMsg ; /* 要举止估计的消息 */ unsigned short usDataLen ; /* LRC 要处理的字节的数量*/ { unsigned char uchLRC = 0 ; /* LRC 字节初初化 */ while (usDataLen--) /* 传递消息 */ uchLRC += *auchMsg++ ; /* 乏加*/ return ((unsigned char)(-((char_uchLRC))) ; } 3、CRC检测使用RTU模式,消息包罗了一鉴于CRC要收的过失检测域.CRC域检测了所有消息的真质. CRC域是二个字节,包罗一16位的二进造值.它由传输设备估计后加进到消息中.接支设备沉新估计支到消息的CRC,并与接支到的CRC域中的值比较,如果二值分歧,则有误. CRC是先调进一值是齐“1”的16位寄存器,而后调用一历程将消息中连绝的8位字节各目前寄存器中的值举止处理.仅每个字符中的8Bit数据对付CRC灵验,起初位战停止位以及奇奇校验位均无效. CRC爆收历程中,每个8位字符皆单独战寄存器真质相大概(OR),截止背最矮灵验位目标移动,最下灵验位以0弥补.LSB被提与出去检测,如果LSB为1,寄存器单独战预置的值大概一下,如果LSB为0,则不举止.所有历程要沉复8次.正在终尾一位(第8位)完毕后,下一个8位字节又单独战寄存器的目前值相大概.最后寄存器中的值,是消息中所有的字节皆真止之后的CRC值. CRC增加到消息中时,矮字节先加进,而后下字节.ModBus搜集是一个工业通疑系统,由戴智能终端的可编步调统造器战估计机通过公用线路大概局部博用线路对接而成.其系统结构既包罗硬件、亦包罗硬件.它可应用于百般数据支集战历程监控.ModBus搜集惟有一个主机,所有通疑皆由他收出.搜集可支援247个之多的近程从属统造器,然而本质所支援的从机数要由所用通疑设备决断.采与那个系统,各PC不妨战核心主机接换疑息而不做用各PC 真止自己的统造任务.(1)ModBus的传输办法正在ModBus 系统中有2种传输模式可采用.那2种传输模式与从机PC通疑的本收是共等的.采用时应视所用ModBus主机而定,每个ModBus系统只可使用一种模式,不允许2种模式混用.一种模式是ASCII(好国疑息接换码),另一种模式是RTU(近程终端设备).ASCII可挨印字符便于障碍检测,而且对付于用下档谈话(如Fortan)编程的主估计机及主PC很相宜.RTU则适用于呆板谈话编程的估计机战PC主机. 用RTU模式传输的数据是8位二进造字符.如欲变换为ASCII模式,则每个RTU字符最先应分为下位战矮位二部分,那二部分各含4位,而后变换成十六进造等量值.用以形成报文的ASCII字符皆是十六进造字符.ASCII模式使用的字符虽是RTU模式的二倍,然而ASCII数据的译玛战处理更为简单一些,别的,用RTU模式时报笔墨符必须以连绝数据流的形式传递,用ASCII模式,字符之间可爆收少达1s的隔断,以符合速度较快的呆板. (2)ModBus的数据校验办法 CRC-16(循环冗余过失校验) CRC-16过失校验步调如下:报文(此处只波及数据位,不指起初位、停止位战任选的奇奇校验位)被瞅做是一个连绝的二进造,其最下灵验位(MSB)尾选收支.报文先与X↑16相乘(左移16位),。
PCK-A Modbus通讯规约(Vcom1.3)
UNT-PCK智能PC测控装置
ModBus通讯规约
(Vcom1.3)
编制:
审核:
批准:
保定尤耐特电气有限公司
PCK2 ModBus通讯规约
遥信量及模拟量(功能码04)
遥控量(功能码05)
主机通过功能码04可以得到是否有新的SOE以及所有SOE的数量,然后通过功能码0A向从机索要指定索引号的SOE。
以下举例说明:
从机的响应举例说明如下:
修改说明:
在V1.23的基础上做了一下修改:
1.用04功能码读取遥信量的时候将16个遥信量合成一个字,共用一个地址。
2.将3I0的单位改成0.01A。
3.04功能码能读取的最大地址为26,地址26为暂时保留。
4.广播地址加上0。
5.SOE的第11个字节代表子源,如果是合跳闸,1代表成功,2代表失败。
6.SOE中加上装置故障。
7.3I0的单位改成0.1A。
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网络协议发送出去即可.所以在这里我仅介绍一下Modbus的ASCII和RTU协议. 下表是ASCII协议和RTU协议进行的比力:通过比力可以看到, ASCII协议和RTU协议相比拥有开始和结束标识表记标帜, 因此在进行法式处置时能更加方便, 而且由于传输的都是可见的ASCII字符, 所以进行调试时就更加的直观, 另外它的LRC校验也比力容易.可是因为它传输的都是可见的ASCII字符, RTU传输的数据每一个字节ASCII都要用两个字节来传输, 比如RTU传输一个十六进制数0xF9,ASCII就需要传输’F’’9’的ASCII码0x39和0x46两个字节, 这样它的传输的效率就比力低.所以一般来说, 如果所需要传输的数据量较小可以考虑使用ASCII协议, 如果所需传输的数据量比力年夜, 最好能使用RTU协议.下面对两种协议的校验进行一下介绍.1、LRC校验LRC域是一个包括一个8位二进制值的字节.LRC值由传输设备来计算并放到消息帧中, 接收设备在接收消息的过程中计算LRC, 并将它和接收到消息中LRC域中的值比力, 如果两值不等, 说明有毛病.LRC 校验比力简单, 它在ASCII协议中使用, 检测了消息域中除开始的冒号及结束的回车换行号外的内容.它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可.下面是它的VC代码: BYTEGetCheckCode(const char * pSendBuf, int nEnd)//获得校验码{ BYTE byLrc = 0; char pBuf[4]; int nData = 0; for(i=1; i<end;i+=2) //i初始为1, 避开“开始标识表记标帜”冒号 { //每两个需要发送的ASCII码转化为一个十六进制数 pBuf [0] = pSendBuf ; pBuf [1] = pSendBuf [i+1]; pBuf [2] = '\0'; sscanf(pBuf,"%x",& nData);byLrc += nData; } byLrc = ~ byLrc; byLrc ++; return byLrc; } 2、CRC校验 CRC域是两个字节, 包括一16位的二进制值.它由传输设备计算后加入到消息中.接收设备重新计算收到消息的CRC, 并与接收到的CRC域中的值比力, 如果两值分歧, 则有误.CRC是先调入一值是全“1”的16位寄存器, 然后调用一过程将消息中连续的8位字节各以后寄存器中的值进行处置.仅每个字符中的8Bit数据对CRC有效, 起始位和停止位以及奇偶校验位均无效.CRC发生过程中, 每个8位字符都独自和寄存器内容相或(OR), 结果向最低有效位方向移动, 最高有效位以0填充.LSB被提取出来检测, 如果LSB为1, 寄存器独自和预置的值或一下, 如果LSB为0, 则不进行.整个过程要重复8次.在最后一位(第8位)完成后, 下一个8位字节又独自和寄存器的以后值相或.最终寄存器中的值, 是消息中所有的字节都执行之后的CRC值.CRC添加到消息中时, 低字节先加入, 然后高字节.下面是它的VC代码: WORDGetCheckCode(const char * pSendBuf, int nEnd)//获得校验码{ WORD wCrc = WORD(0xFFFF);for(int i=0; i<nEnd; i++){wCrc^= WORD(BYTE(pSendBuf));for(int j=0; j<8; j++)2、{if(wCrc & 1){3、wCrc >>= 1; wCrc ^= 0xA001; }else{wCrc >>= 1; }}}return wCrc;}对一条RTU协议的命令可以简单的通过以下的步伐转化为ASCII协议的命令:1、把命令的CRC校验去失落, 而且计算出LRC校验取代.2、把生成的命令串的每一个字节转化成对应的两个字节的ASCII码, 比如0x03转化成0x30,0x33(0的ASCII码和3的ASCII码).3、在命令的开头加上起始标识表记标帜“:”, 它的ASCII码为0x3A.4、在命令的尾部加上结束标识表记标帜CR,LF(0xD,0xA), 此处的CR,LF暗示回车和换行的ASCII码.所以以下我们仅介绍RTU协议即可, 对应的ASCII协议可以使用以上的步伐来生成.下表是Modbus支持的功能码:在这些功能码中较长使用的是1、2、3、4、5、6号功能码, 使用它们即可实现对下位机的数字量和模拟量的读写把持. 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、写数字量(线圈状态):计算机发送命令:[设备地址] [命令号05] [需下置的寄存器地址高8位] [低8位] [下置的数据高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位] 例:[11][05][00][AC][FF][00][CRC低][CRC高] 意义如下:<1>设备地址和上面的相同.<2>命令号:写数字量的命令号固定为05.<3>需下置的寄存器地址高8位, 低8位:标明了需要下置的开关的地址.<4>下置的数据高8位, 低8位:标明需要下置的开关量的状态.例子中为把该开关闭合.注意, 此处只可以是[FF][00]暗示闭合[00][00]暗示断开, 其他数值非法.<5>注意此命令一条只能下置一个开关量的状态. 设备响应:如果胜利把计算机发送的命令原样返回, 否则不响应. 4、读可读写模拟量寄存器(坚持寄存器):计算机发送命令:[设备地址] [命令号03] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位] 例:[11][03][00][6B][00][03][CRC低][CRC高] 意义如下:<1>设备地址和上面的相同.<2>命令号:读模拟量的命令号固定为03.<3>起始地址高8位、低8位:暗示想读取的模拟量的起始地址(起始地址为0).比如例子中的起始地址为107.<4>寄存器数高8位、低8位:暗示从起始地址开始读几多个模拟量.例子中为3个模拟量.注意, 在返回的信息中一个模拟量需要返回两个字节. 设备响应:[设备地址] [命令号03] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位] [CRC校验的高8位] 例:[11][03][06][02][2B][00][00][00][64][CRC低][CRC高] 意义如下:<1>设备地址和命令号和上面的相同.<2>返回的字节个数:暗示数据的字节个数, 也就是数据1, 2...n中的n的值.例子中返回了3个模拟量的数据, 因为一个模拟量需要2个字节所以共6个字节.<3>数据1...n:其中[数据1][数据2]分别是第1个模拟量的高8位和低8位, [数据3][数据4]是第2个模拟量的高8位和低8位, 以此类推.例子中返回的值分别是555, 0, 100.<4>CRC校验同上. 5、读只可读模拟量寄存器(输入寄存器):和读取保管寄存器类似, 只是第二个字节的命令号不再是2而是4. 6、写单个模拟量寄存器(坚持寄存器):计算机发送命令:[设备地址] [命令号06] [需下置的寄存器地址mym级别: 总版主精华: 41发帖: 3956威望: 9957 点金钱: 9431 Gold贡献值: 601 点朋友圈: ifix技术群在线时间:539(小时)注册时间:2005-02-02最后登录:2008-01-25 Modbus通讯协议MODBUS通讯协议简介工业控制已从单机控制走向集中监控、集散控制, 如今已进入网络时代, 工业控制器连网也为网络管理提供了方便.Modbus就是工业控制器的网络协议中的一种.一、概述Modbus 协议是应用于电子控制器上的一种通用语言.通过此协议, 控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信.它已经成为一通用工业标准.有了它, 分歧厂商生产的控制设备可以连成工业网络, 进行集中监控.此协议界说了一个控制器能认识使用的消息结构,而不论它们是经过何种网络进行通信的.它描述了一控制器请求访问其它设备的过程, 如果回应来自其它设备的请求, 以及怎样侦测毛病并记录.它制定了消息高8位] [低8位] [下置的数据高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位] 例:[11][06][00][01][00][03][CRC低][CRC高] 意义如下:<1>设备地址和上面的相同.<2>命令号:写模拟量的命令号固定为06.<3>需下置的寄存器地址高8位, 低8位:标明了需要下置的模拟量寄存器的地址.<4>下置的数据高8位, 低8位:标明需要下置的模拟量数据.比如例子中就把1号寄存器的值设为3.<5>注意此命令一条只能下置一个模拟量的状态. 设备响应:如果胜利把计算机发送的命令原样返回, 否则不响应.域格局和内容的公共格式.当在一Modbus网络上通信时, 此协议决定了每个控制器须要知道它们的设备地址, 识别按地址发来的消息, 决定要发生何种行动.如果需要回应, 控制器将生成反馈信息并用Modbus协议发出.在其它网络上, 包括了Modbus协议的消息转换为在此网络上使用的帧或包结构.这种转换也扩展了根据具体的网络解决节地址、路由路径及毛病检测的方法.1、在Modbus网络上转输标准的Modbus口是使用一RS-232C兼容串行接口, 它界说了连接口的针脚、电缆、信号位、传输波特率、奇偶校验.控制器能直接或经由Modem组网.控制器通信使用主—从技术, 即仅一设备(主设备)能初始化传输(查询).其它设备(从设备)根据主设备查询提供的数据作出相应反应.典范的主设备:主机和可编程仪表.典范的从设备:可编程控制器.主设备可独自和从设备通信, 也能以广播方式和所有从设备通信.如果独自通信, 从设备返回一消息作为回应, 如果是以广播方式查询的, 则不作任何回应.Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一毛病检测域.从设备回应消息也由Modbus协议构成, 包括确认要行动的域、任何要返回的数据、和一毛病检测域.如果在消息接收过程中发生一毛病, 或从设备不能执行其命令, 从设备将建立一毛病消息并把它作为回应发送出去.2、在其它类型网络上转输在其它网络上, 控制器使用对等技术通信, 故任何控制都能初始和其它控制器的通信.这样在独自的通信过程中, 控制器既可作为主设备也可作为从设备.提供的多个内部通道可允许同时发生的传输进程.在消息位, Modbus协议仍提供了主—从原则, 尽管网络通信方法是“对等”.如果一控制器发送一消息, 它只是作为主设备, 并期望从从设备获得回应.同样, 当控制器接收到一消息, 它将建立一从设备回应格式并返回给发送的控制器.Modbus是Modicon公司为其PLC与主机之间的通讯而发明的串行通讯协议.其物理层采纳RS232、485等异步串行标准.由于其开放性而被年夜量的PLC及RTU厂家采纳.Modbus通讯方式采纳主从方式的查询-相应机制, 只有主站发出查询时, 从站才华给出响应, 从站不能主动发送数据.主站可以向某一个从站发出查询, 也可以向所有从站广播信息.从站只响应独自发给它的查询, 而不响应广播消息.Modbus的串行口的通讯参数(如波特率、奇偶校验)可由用户选择.二、MODBUS协议传送方式MODBUS通讯协议有两种传送方式:RTU方式和ASCII方式,两种方式如下所示:项目 RTU方式 ASCII方式字节长度 8 BITS 7 BITS奇偶校验 1 BIT OR 0 BIT1 BIT OR 0 BIT字节中止 1 BIT OR2 BITS 1 BIT OR 2 BITS开始标识表记标帜不要 :(冒号)结束标识表记标帜不要 CR,LF数据间隔 < 24 BIT < 1S犯错检验方式 CRC-16 LRC控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信.用户选择想要的模式, 包括串口通信参数(波特率、校验方式等), 在配置每个控制器的时候, 在一个Modbus网络上的所有设备都必需选择相同的传输模式和串口参数.三、Modbus消息帧两种传输模式中(ASCII或RTU), 传输设备以将Modbus消息转为有起点和终点的帧, 这就允许接收的设备在消息起始处开始工作, 读地址分配信息, 判断哪一个设备被选中(广播方式则传给所有设备), 判知何时信息已完成.部份的消息也能侦测到而且毛病能设置为返回结果.1、ASCII帧使用ASCII模式, 消息以冒号(:)字符(ASCII码 3AH)开始, 以回车换行符结束(ASCII码 0DH,0AH).其它域可以使用的传输字符是十六进制的0...9,A...F.网络上的设备不竭侦测“:”字符, 当有一个冒号接收到时, 每个设备都解码下个域(地址域)来判断是否发给自己的.消息中字符间发送的时间间隔最长不能超越1秒, 否则接收的设备将认为传输毛病.2、RTU帧使用RTU模式, 消息发送至少要以3.5个字符时间的停顿间隔开始.在网络波特率下多样的字符时间, 这是最容易实现的(如下图的T1-T2-T3-T4所示).传输的第一个域是设备地址.可以使用的传输字符是十六进制的0...9,A...F.网络设备不竭侦测网络总线, 包括停顿间隔时间内.当第一个域(地址域)接收到, 每个设备都进行解码以判断是否发往自己的.在最后一个传输字符之后, 一个至少3.5个字符时间的停顿标定了消息的结束.一个新的消息可在此停顿后开始.整个消息帧必需作为一连续的流转输.如果在帧完成之前有超越1.5个字符时间的停登时间, 接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域.同样地, 如果一个新消息在小于3.5个字符时间内接着前个消息开始, 接收的设备将认为它是前一消息的延续.这将招致一个毛病, 因为在最后的CRC域的值不成能是正确的.3、地址域消息帧的地址域包括两个字符(ASCII)或8Bit(RTU).可能的从设备地址是0...247 (十进制).单个设备的地址范围是1...247.主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备.当从设备发送回应消息时, 它把自己的地址放入回应的地址域中, 以便主设备知道是哪一个设备作出回应.地址0是用作广播地址, 以使所有的从设备都能认识.当Modbus协议用于更高水准的网络, 广播可能不允许或以其它方式取代.4、如何处置功能域消息帧中的功能代码域包括了两个字符(ASCII)或8Bits(RTU).可能的代码范围是十进制的1...255.固然, 有些代码是适用于所有控制器, 有此是应用于某种控制器, 还有些保管以备后用.当消息从主设备发往从设备时, 功能代码域将告之从设备需要执行哪些行为.例如去读取输入的开关状态, 读一组寄存器的数据内容, 读从设备的诊断状态, 允许调入、记录、校验在从设备中的法式等.当从设备回应时, 它使用功能代码域来指示是正常回应(无误)还是有某种毛病发生(称作异议回应).对正常回应, 从设备仅回应相应的功能代码.对异议回应, 从设备返回一同等于正常代码的代码, 但最重要的位置为逻辑1.例如:一从主设备发往从设备的消息要求读一组坚持寄存器, 将发生如下功能代码:0 0 0 0 0 0 1 1 (十六进制03H)对正常回应, 从设备仅回应同样的功能代码.对异议回应, 它返回: 1 0 0 0 0 0 1 1 (十六进制83H)除功能代码因异议毛病作了修改外, 从设备将一共同的代码放到回应消息的数据域中, 这能告诉主设备发生了什么毛病. 主设备应用法式获得异议的回应后, 典范的处置过程是重发消息, 或者诊断发给从设备的消息并陈说给把持员. 5、数据域数据域是由两个十六进制数集合构成的, 范围00...FF.根据网络传输模式, 这可以是由一对ASCII字符组成或由一RTU字符组成. 从主设备发给从设备消息的数据域包括附加的信息:从设备必需用于进行执行由功能代码所界说的所为.这包括了象不连续的寄存器地址, 要处置项的数目, 域中实际数据字节数. 例如, 如果主设备需要从设备读取一组坚持寄存器(功能代码03), 数据域指定了起始寄存器以及要读的寄存器数量.如果主设备写一组从设备的寄存器(功能代码10十六进制), 数据域则指明了要写的起始寄存器以及要写的寄存器数量, 数据域的数据字节数, 要写入寄存器的数据. 如果没有毛病发生, 从从设备返回的数据域包括请求的数据.如果有毛病发生, 此域包括一异议代码, 主设备应用法式可以用来判断采用下一步行动. 在某种消息中数据域可以是不存在的(0长度).例如, 主设备要求从设备回应通信事件记录(功能代码0B十六进制), 从设备不需任何附加的信息. 6、毛病检测域标准的Modbus网络有两种毛病检测方法.毛病检测域的内容视所选的检测方法而定. ASCII 被选用ASCII模式作字符帧, 毛病检测域包括两个ASCII字符.这是使用LRC(纵向冗长检测)方法抵消息内容计算得出的, 不包括开始的冒号符及回车换行符.LRC字符附加在回车换行符前面. RTU 被选用RTU模式作字符帧, 毛病检测域包括一16Bits值(用两个8位的字符来实现).毛病检测域的内容是通过抵消息内容进行循环冗长检测方法得出的.CRC域附加在消息的最后, 添加时先是低字节然后是高字节.故CRC的高位字节是发送消息的最后一个字节.7、字符的连续传输当消息在标准的Modbus系列网络传输时, 每个字符或字节以如下方式发送(从左到右):最低有效位...最高有效位四、毛病检测方法标准的Modbus 串行网络采纳两种毛病检测方法.奇偶校验对每个字符都可用, 帧检测(LRC或CRC)应用于整个消息.它们都是在消息发送前由主设备发生的, 从设备在接收过程中检测每个字符和整个消息帧. 用户要给主设备配置一预先界说的超时时间间隔, 这个时间间隔要足够长, 以使任何从设备都能作为正常反应.如果从设备测到一传输毛病, 消息将不会接收, 也不会向主设备作出回应.这样超时事件将触发主设备来处置毛病.发往不存在的从设备的地址也会发生超时. 1、奇偶校验用户可以配置控制器是奇或偶校验, 或无校验.这将决定了每个字符中的奇偶校验位是如何设置的. 如果指定了奇或偶校验, “1”的位数将算到每个字符的位数中(ASCII模式7个数据位, RTU中8个数据位).例如RTU 字符帧中包括以下8个数据位: 1 1 0 0 0 1 0 1 整个“1”的数目是4个.如果便用了偶校验, 帧的奇偶校验位将是0, 便得整个“1”的个数仍是4个.如果便用了奇校验, 帧的奇偶校验位将是1, 便得整个“1”的个数是5个. 如果没有指定奇偶校验位, 传输时就没有校验位, 也不进行校验检测.取代一附加的停止位填充至要传输的字符帧中. 2、LRC检测使用ASCII模式, 消息包括了一基于LRC方法的毛病检测域.LRC域检测了消息域中除开始的冒号及结束的回车换行号外的内容. LRC域是一个包括一个8位二进制值的字节.LRC值由传输设备来计算并放到消息帧中, 接收设备在接收消息的过程中计算LRC, 并将它和接收到消息中LRC域中的值比力, 如果两值不等, 说明有毛病. LRC方法是将消息中的8Bit的字节连续累加, 抛弃了进位. LRC简单函数如下: static unsigned char LRC(auchMsg,usDataLen) unsigned char *auchMsg ; /* 要进行计算的消息 */ unsigned short usDataLen ; /* LRC 要处置的字节的数量*/ { unsigned char uchLRC = 0 ; /* LRC 字节初始化 */ while (usDataLen--) /* 传送消息 */ uchLRC += *auchMsg++ ; /* 累加*/ return ((unsigned char)(-((char_uchLRC))) ; } 3、CRC检测使用RTU模式, 消息包括了一基于CRC方法的毛病检测域.CRC域检测了整个消息的内容. CRC域是两个字节, 包括一16位的二进制值.它由传输设备计算后加入到消息中.接收设备重新计算收到消息的CRC, 并与接收到的CRC域中的值比力, 如果两值分歧, 则有误. CRC是先调入一值是全“1”的16位寄存器, 然后调用一过程将消息中连续的8位字节各以后寄存器中的值进行处置.仅每个字符中的8Bit数据对CRC有效, 起始位和停止位以及奇偶校验位均无效. CRC发生过程中, 每个8位字符都独自和寄存器内容相或(OR), 结果向最低有效位方向移动, 最高有效位以0填充.LSB被提取出来检测, 如果LSB为1, 寄存器独自和预置的值或一下, 如果LSB为0, 则不进行.整个过程要重复8次.在最后一位(第8位)完成后, 下一个8位字节又独自和寄存器的以后值相或.最终寄存器中的值, 是消息中所有的字节都执行之后的CRC值. CRC添加到消息中时, 低字节先加入, 然后高字节.ModBus网络是一个工业通信系统, 由带智能终真个可编法式控制器和计算机通过公用线路或局部专用线路连接而成.其系统结构既包括硬件、亦包括软件.它可应用于各种数据收集和过程监控.ModBus网络只有一个主机, 所有通信都由他发出.网络可支持247个之多的远程附属控制器, 但实际所支持的从机数要由所用通信设备决定.采纳这个系统, 各PC可以和中心主机交换信息而不影响各PC执行自己的控制任务.(1)ModBus的传输方式在ModBus系统中有2种传输模式可选择.这2种传输模式与从机PC通信的能力是。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
37
保留
38
保留
39
保留
40
保留
41
保留
42
保留
43
保留
44
保留
45
保留
46
保留
47
Ua(Uab)
3
单位是0.1V.
Ub
4
单位是0.1V.
Uc(Ucb)
5
单位是0.1V.
3U0
6
单位是0.1V.
F
7
单位是0.01HZ
Uac
8
单位是0.1V.
保留
9--26
主机每隔一段时间发送广播对时命令(使用功能码09),报文格式举例说明如下
27
保留
28
保留
29
保留
30
遥信量及模拟量(功能码04)
名称
内部地址
备注
通讯地址
位地址
开入1
0
0
开入2
1
开入3
2
开入4
3
开入5
4
开入6
5
开入7
6
开入8
7开入98开源自109保护:母线过压
10
保护:零序过压
11
保护:低压I段
12
保护:低压II段
13
保护:低压III段
14
保护:PT断线
15
动态压板-母线过压
UNT-PT智能PT监测单元
ModBus通讯规约
(Vcom1.4)
编制:
审核:
批准:
保定尤耐特电气有限公司
PT2 Modbus通讯规约
遥信量(功能码02)
遥信量名称
内部地址
备注
开入1
0
开入2
1
开入3
2
开入4
3
开入5
4
开入6
5
开入7
6
开入8
7
开入9
8
开入10
9
保护:母线过压
10
保护:零序过压
11
保护:低压I段
1
16
动态压板-零序过压
17
动态压板-低压I段
18
动态压板-低压II段
19
动态压板-低压III段
20
动态压板-PT断线
21
动作信号
22
装置故障
23
可编程开出1状态
24
可编程开出2状态
25
可编程开出3状态
26
保护:电压不平衡
27
保留
28
保留
29
保留
30
保留
31
保留
2
32
保留
33
保留
34
保留
35
保留
36
主机发送
字节数
数据(Hex)
备注
从机地址
1
FF
广播地址FF或0代表该报文所有从机都接收
功能码
1
09
广播对时
起始地址
2
0000
起始地址为0000
数据长度
2
0008
对时数据为8个字节
年
1
07
年(相对于2000年的偏移值):代表2007年
月
1
09
月(1-12):代表9月
日
1
1B
日(1-31):代表27日
时
3. 04功能码能读取的最大地址为26,地址9—26暂时保留。
12
保护:低压II段
13
保护:低压III段
14
保护:PT断线
15
动态压板-母线过压
16
动态压板-零序过压
17
动态压板-低压I段
18
动态压板-低压II段
19
动态压板-低压III段
20
动态压板-PT断线
21
动作信号
22
装置故障
23
可编程输出1状态
24
可编程输出2状态
25
可编程输出3状态
26
保护:电压不平衡
1
09
时(0-23):代表9时
分
1
1C
分(0-59):代表28分
秒
1
3A
秒(0-59):代表58分
毫秒高字节
1
02
毫秒(0-999):代表692毫秒
毫秒低字节
1
B4
CRC码
2
0F71
修改说明:在V1.3的基础上作了以下修改:
1.用04功能码读取遥信量的时候将16个遥信量合成一个字,共用一个地址。
2.广播地址加上0。