ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:45.89KB ,
资源ID:4722685      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4722685.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ModBus通讯规约印刷前面总的1.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ModBus通讯规约印刷前面总的1.docx

1、ModBus通讯规约印刷前面总的1Modbus_RTU通讯规约(本协议采用主从问答方式)一、 Modbus通讯协议概述Modbus通讯规约允许TDS系列仪表/变送器与施耐德、西门子、AB、GE等多个国际著名品牌的可编程顺序控制器(PLC)、RTU、SCADA系统、DCS或与第三方具有Modbus兼容的监控系统之间进行信息交换和数据传送。TDS系列仪表/变送器只要简单地增加一套基于计算机(或工控机)的监控软件(如:组态王、Intouch、iFIX、synall等)就可以构成一套工况监控系统。1、 广泛的系统集成TDS系列仪表/变送器提供了标准的RS-485/422通讯接口及ModBus通讯协议,

2、这个通讯协议已广泛被国内外工控行业作为系统集成的标准。2、 通讯数据的类型及格式 信息传输为异步方式,并以字节为单位。主站和从站之间传递的通讯信息为1:10位格式:(1位起始位,8位数据位,1位停止位,无奇偶校验)2:11位格式:(1位起始位,8位数据位,2位停止位,无奇偶校验)3:11位格式:(1位起始位,8位数据位,1位停止位,1位奇校验)4:11位格式: (1位起始位,8位数据位,1位停止位,1位偶校验)仪表出厂按第2种方式,11位格式:(1位起始位,8位数据位,2位停止位,无奇偶校验),设置方法参看详细的使用说明书。仪表无此项设置参数为第2种方式。 通讯数据(信息帧)格式数据格式起始结

3、构地址码功能码数据区CRC校检结束结构数据长度T1T2T3T41字节1字节N字节16位 (CRC码)T1T2T3T4发送数据之前要求数据总线静止时间(即无数据时间)大于3.5个字节,可以通过传输波特率计算(9600bps约为5ms),信息帧中表示为起始结构(T1T2T3T4),T1、T2、T3、T4分别代表一个字节的静止时间。当最后一个字节传输完,数据总线静止时间(即无数据时间)还需大于3.5个字节后,才可以开始发送新的数据,信息帧中表示为停止结构(T1T2T3T4)。一条完整的信息帧必须是连续的信息流,字节间的间隔时间小于1.5个字节。TDS系列仪表/变送器收到完整的信息帧后延时250ms左

4、右将数据连续送出,当收到本机地址码、正确的功能码后,但无法接收全后面的完整数据信息帧则在2秒左右后回复初始接收状态。 注:1、1个字节由8位二进制数组成(既8 bit)。 2、ModBus是Modicon公司的注册商标。 3、“从机”在本文件中既为TDS系列仪表/变送器。二、 通讯信息传输过程当通讯命令由发送设备(主机)发送至接收设备(从机)时,在CRC校验无误情况下,从机地址与地址码相符的从机接收通讯命令(TDS系列仪表/变送器以本机的地址码和功能码2个字节作为同步字),并根据功能码及相关要求处理信息,执行相应的任务,然后把执行结果(数据)返送给主机。返回的信息中包括地址码、功能码、执行后的

5、数据以及CRC校验码。如果CRC校验出错就不返回任何信息。TDS系列仪表/变送器使用的Modbus功能码(16进制)功能码定 义操 作(二进制)02 HEX读开关量读取开关量设置数据;一个或多个开关量控制/报警状态数据03 HEX读寄存器数据读取单路或多路工况数据;单路或多路控制/报警设置数据05 HEX写开关量写一个开关量设置数据06 HEX写单个寄存器写单个功能寄存器或单路控制/报警设置数据10 HEX写多路寄存器写多路功能寄存器或多路控制/报警设置数据TDS系列仪表/变送器Modbus协议的数据地址表中数据地址使用直接地址,在组态软件中通讯口可选用莫迪康(Modicon)PLC的RTU,

6、对应的地址如下:02 功能 Read Input Status,10001对应0000H。03 功能 Read Holding Registers,40001对应0000H地址。05 功能 Force Single Coil,00001对应0000H地址。06 功能 Preset Single Register,40001对应0000H地址。10 功能 Preset Multiple Registers,40001对应0000H地址。但组态软件产生的通讯报文都是直接地址,与功能码说明中的报文是一致的。如:TDS-04006400智能数字温度巡检控制仪中的数据地址表中读或写寄存器:如地址0000

7、H003FH对应4000140064。读开关量:如地址0400H043FH对应1102511088,0440H047FH对应1108911152。写开关量:如地址0300H033FH对应0076900832。1、 地址码 地址码是每次通讯信息帧的第一字节(8位),从01H到FFH。每个从机都必须有唯一的地址码,仪表说明书中将这唯一的地址码称为“从机号”或“从机地址”。所有地址的从机都将接收由主机发送来的信息,只有符合地址码的从机才响应要求,回送信息。当从机回送信息时,回送数据均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机返回的地址码表明回送的从机地址。2、 功能码 是每次

8、通讯信息帧传送的第二个字节。ModBus通讯规约可定义的功能码为0到127。TDS系列仪表/变送器仅用到其中的一部分功能码。作为主机请求发送,通过功能码告诉从机应执行什么动作。作为响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。3、 数据区数据区包括需要由主机发送、从机回送何种信息或执行什么动作。这些信息可以是数据(如:开关量、模拟量、仪表参数设置值等)或参考地址等。如:主机通过功能码03告诉从机返回单路或多路工况数据寄存器的值或“单路或多路控制/报警设置值(包括要读取寄存器的起始地址及读取寄存器的长度等),则返回的数据包括寄存器的数据长度及数据内容

9、。对于不同型号的仪表/变送器,寄存器地址和数据信息都不相同(见数据地址表)。功能码 03 HEX、06 HEX、10 HEX读取或写“寄存器”,每个地址为一个寄存器,一个寄存器为16位(2 字节)的二进制数据(整型),高位在前、低位在后,最高位为符号位,其后15位数据位。(如1500D 05DCH;-500D 81F4H)。数据地址表如果不作特别说明,则数据的通用转换方法为:小数点在十位,仪表回送的工况数据都是整数,上位机如果转换为实型,可以除十处理,如果转换成字符串型,可以直接将小数点插入在十位。如1:工况温度值=60.0,小数点在十位仪表回送数据=60010 =25816 = 000000

10、10010110002如2:温度值=-60.0,小数点在十位仪表回送数据=-60010 =825816 = 10000010010110002小数点在百位,如果转换为实型,可以除百处理,如果转换成字符串型,可以直接将小数点插入在百位。功能码02 HEX、05 HEX读/写开关量,数据都为开关量,每个地址为一个位,以bit位为单位。从机数据返回是以 bit 位为单元的二进制数组成(即 8 bit 为1个字节)多字节数据。TDS响应的命令格式是从机地址、功能码、数据区及CRC码。数据区的数据为多字节开关量数据或模拟量数据。三、 Modbus功能码介绍以64路TDS仪表为例作如下说明1、 功能码02

11、 HEX:读开关量 开关量状态:1为 ON,0为OFF。例如:从机其中的48路开关量设定数据(内容:10110001B(1-8路由右到左),01110011B,10100110B,11111011B,00010101B,11001101B),主机要读取从机地址为01的从机第3路到第22路巡检状态开关量设置数据,数据地址为0302H开始20bit 位(内容:11101100B,10011100B,XXXX1001B)。(未参加巡检时,该路数的开关量数据0)主机发送的报文格式主机发送字节数发送的信息举例说明从机地址101H 发送至地址为01的从机功能码102H 读取开关量设置数据起始地址(高)10

12、3H数据地址0302H起始地址(低)102H单元数(高)100H20bit 位20路巡检状态单元数(低)114HCRC码2XXXXH由主机计算得到CRC码从机(TDS)响应返回的报文从机响应字节数返回的信息举例说明从机地址101H 来自从机01功能码102H 读取开关量设置数据字节数103H数据区字节数开关量设置数据111101100B8 bit位设置数据(103路)开关量设置数据110011100B8 bit位设置数据(1811路)开关量设置数据1XXXX1001B4 bit位设置数据(2219路)CRC码2XXXXH 由从机计算得到CRC码2、 功能码03 HEX:读多路寄存器例如:从机地

13、址01的工况数据值(仪表测量到的数据,如温度、压力等)如下表,其中第2路未参加巡检。(未参加巡检时,该路数的工况数据为0000H)巡检路数数据(16进制)01路1784H02路0000H03路178AH主机要读取从机地址为01,数据地址为0000H开始的3路工况数据。主机发送的报文格式:主机发送字节数发送的信息举例说明从机地址101H发送至地址为01的从机功能码103H读取工况数据起始地址(高)100H起始地址为0000H(1路)起始地址(低)100H单元数(高)100H读取3路工况数据单元数(低)103HCRC码2XXXXH由主机计算得到CRC码从机(TDS)响应返回的报文格式从机响应字节数

14、返回的信息举例说明从机地址101H 来自从机01功能码103H 读取工况数据 字节数106H0000H数据(高)117H1路数据为1784H0000H数据(低)184H0001H数据(高)100H2路数据为0000H0001H数据(低)100H0002H数据(高)117H 3路数据为178AH0002H数据(低)18AHCRC码2XXXXH 由从机计算得到CRC码3、 功能码05 HEX:写开关量数据FF00H为ON,数据0000H为OFF。例如:主机要设置从机地址为01的从机第9路参加巡检(数据FF00H代表ON该路参加巡检;数据0000H代表OFF该路不参加巡检)。主机发送的报文格式主机发

15、送字节数发送的信息举例说明从机地址101H 发送至地址为01的从机功能码105H 写开关量设置数据数据地址(高)103H地址为0308H(第9路)数据地址(低)108H1 FFH写入ON,参加巡检。100HCRC码2XXXXH由主机计算得到CRC码从机(TDS)响应返回的报文格式从机响应字节数返回的信息举例说明从机地址101H来自从机01功能码105H写开关量设置数据数据地址(高)103H地址为0308H(第9路)数据地址(低)108H数据(高)1FFH数据(低)100HCRC码2XXXXH 由从机计算得到CRC码4、 功能码06 HEX:写单路寄存器主机利用这个功能码把单路二进制控制/报警设

16、置数据保存到从机的数据存储器中去(寄存器)。例如:主机要把04B0H保存到从机第6路上上限寄存器中去(从机地址码为01)。通讯数据保存结束后,TDS表内 第6路上上限为04B0H:主机发送数据地址和数据为:数据地址 数据0205H04B0H主机发送的报文格式主机发送字节数发送的信息举例说明从机地址101H发送至从机01功能码106H写单路寄存器数据地址(高)102H地址为0205H(第6路上上限寄存器)数据地址(低)105H数据(高)104H写入数据04B0H数据(低)1B0HCRC码2XXXXH由主机计算得到的CRC码从机(TDS)响应返回的报文格式从机响应字节数返回的信息举例说明从机地址1

17、01H来自从机01功能码106H写多路寄存器数据地址(高)102H地址为0205H(第6路上上限寄存器)数据地址(低)105H数据(高)104H数据(低)1B0HCRC码2XXXXH由从机计算得到的CRC码5、 功能码10 HEX:写多路寄存器主机利用这个功能码把多路二进制控制/报警设置数据保存到从机的数据存储器中去(寄存器)。例如:主机要把04B0H,保存到从机第1路上限寄存器中去;1388H保存到从机第2路上限寄存器中去(从机地址码为01)。通讯数据保存结束后,TDS表内第1路上限为04B0H;、第2路上限为1388H:主机发送数据地址和数据为数据地址 数据0100H04B0H0101H1

18、388H主机发送的报文格式主机发送字节数发送的信息举例说明从机地址101H发送至从机01功能码110H写多路寄存器起始地址(高)101H地址为0100H(第1路开始)起始地址(低)100H单元数(高)100H2路设定数据单元数(低)102H字节数104H保存数据1(高)104H写入数据为04B0H保存数据1(低)1B0H保存数据2(高)113H写入数据为1388H保存数据2(低)188HCRC码2XXXXH由主机计算得到的CRC码从机(TDS)响应返回的报文格式从机响应字节数返回的信息举例说明从机地址101H来自从机01功能码110H写多路寄存器起始地址(高)101H地址为0100H(第1路开

19、始)起始地址(低)100H单元数(高)100H保存2路设定数据单元数(低)102HCRC码2XXXXH由从机计算得到的CRC码四、 错误校验码(CRC校验)主机或从机可用校验码进行判别接收信息是否正确。由于电子噪声或一些其它干扰,信息在传输过程中有时会发生错误,错误校验码(CRC)可以检验主机或从机在通讯数据传送过程中的信息是否有误,错误的数据可以放弃(无论是发送还是接收),这样增加了系统的安全和效率。MODBUS通讯协议的CRC(冗余循环码)包含2个字节,即16位二进制数。CRC码由发送设备(主机)计算,放置于发送信息帧的尾部。接收信息的设备(从机)再重新计算接收到信息的CRC,比较计算得到

20、的CRC是否与接收到的相符,如果两者不相符,则表明出错。在进行CRC计算时只用8个数据位,起始位、停止位和奇偶校验位都不参与CRC计算。CRC码的计算方法 1、预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为 CRC寄存器;2、把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC 寄存器的低8位相异或,把结果放于CRC寄存器;3、把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查最低位(LSB位被提取出来检测);如果最低位为1:移位后 CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;如果最低位为0:不作处理;4、重复步骤

21、3,直到右移8次,这样整个8位数据全部进行了处理;5、重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;6、最后得到的CRC寄存器内容即为:CRC码。注意:报文中的CRC码低八位(低字节)在前,高八位(高字节)在后。Pascal高级语言直接计算CRC码举例如下:/ 输入参数: Cauarray计算的报文字节数组,Count字节数,函数返回CRC码。Function CauCRC(CauArray:array of byte; Count:byte):word;var TempCRC:Word;/存放CRC计算的临时变量。CRC :Word;/存放CRC码。RCRC :Word;/判定最低位为

22、1的临时变量。i,j :Word;begin CRC :=$FFFF; for i:=0 to Count-1 do begin TempCRC := (CRC and $00FF) xor CauArrayi; TempCRC := TempCRC or (CRC and $FF00); for j:=1 to 8 do begin RCRC := TempCRC and $0001; TempCRC := TempCRC and $FFFE; TempCRC := TempCRC shr 1; if RCRC =1 then TempCRC := TempCRC xor $A001; en

23、d; CRC := TempCRC; end; Result:= CRC;end;五、 通讯错误信息及数据的处理当从机检测到除了CRC码出错以外的错误时,必须向主机回送信息,功能码的最高位置为1,即从机返送给主机的功能码是在主机发送的功能码的基础上加128 。以下的这些代码表明有意外的错误发生。从机(TDS)接收到的信息如有CRC错误,则将被从机忽略,不返回信息。从机(TDS)返送的错误码的格式如下(共5个字节): 地址码: 1字节 功能码: 1字节(最高位为1,例:03H功能码变为83H) 错误码: 1字节 CRC码:2字节从机(TDS)响应回送如下错误码: 81:非法的数据地址。 指定的数

24、据地址超出从机“数据地址表”的范围或不在从机“数据地址表”的范围。 82:非法的数据值。 接收到主机发送的数据值超出从机“数据地址表”相应数据地址的数据可改范围。如从机(TDS)01正确收到主机报文,但数据地址不在其“数据地址表”范围。则从机响应返回的数据地址出错报文。从机响应字节数返回的信息举例说明从机地址101H来自从机01功能码183H读多路寄存器错误错误码181H非法的数据地址CRC码2XXXXH由从机计算得到的CRC码开关量控制/报警状态(只读)0400H043FH0400H043FH共64 bit分别代表64路断阻报警状态。每8个单元组成1字节,每8个字节为一组,第1字节最末位代表

25、第1路控制/报警状态,第8字节最高位代表第64路控制/报警状态。数据类型单元地址说明开关量控制/报警状态(只读)0440H047FH0440H047FH共64 bit分别代表上限/下限控制/报警状态。每8个单元组成1字节,每8个字节为一组,第1字节最末位代表第1路控制/报警状态,第8字节最高位代表第64路控制/报警状态。0480H04BFH0480H04BFH共64 bit分别代表上上限/上限控制/报警状态。每8个单元组成1字节,每8个字节为一组,第1字节最末位代表第1路控制/报警状态,第8字节最高位代表第64路控制/报警状态。说明:1、工况数据就是指仪表测量到的数据,如温度、压力等2、附加功

26、能也可以通过具体的仪表参数或设置参数获得,具体请看仪表说明书。输入信号为热电阻的(cu50、Pt100),小数点固定在十位。3、开关量为位地址单元,一个地址存放一位(bit)。4、本表数据地址为TDS-6400巡检控制仪的数据地址,实际应根据相应仪表的路数缩减数据地址。如:TDS-1600十六路巡检巡检控制仪工况数据地址只从0000H000FH,如果 “巡检总路数”(仪表设置参数)设为14,那么工况数据地址只从0000H000DH。如果读取的数据地址范围超过,则回送错误码:81非法的数据地址。5、如果现场使用的仪表路数小于“最大巡检路数”,而上位机按读取“最大巡检路数”的数据寄存器发送数据报文

27、,这时必须保持 “巡检总路数”(仪表设置参数)为“最大巡检路数”,然后使用 “消隐路数”(仪表设置参数)去掉不要的巡检路。如:TDS-163377M只需要前14路,必须保持 “巡检总路数”(仪表设置参数)为16路,然后将15、16路“消隐”(仪表设置参数),具体操作请参看仪表说明书。6、对于消隐的路,也就是不参加巡检的路(仪表可设定),该路回送工况数据值为0.0。7、对于上限、上上限控制方式:0100H013FH为上限寄存器,0200H023FH为上上限寄存器。对于下限、上限控制方式:0100H013FH为下限寄存器,0200H023FH为上限寄存器附录6:TDS3300智能数字温度控制仪数据

28、地址表寄存器地址数据类型单元地址 说明工况数据(只读)0000H温度分辨率由具体仪表设定确定0001H温度max附加功能(只读)0002H单元前字节低4位代表控制/报警方式:0000 单显示0001 下限报警0010 上限报警0011 下下限/下限报警 0100 下限/上限报警 0101 上限/上上限报警前字节高4位代表工况数据类型:0000 Cu50 (-50.0150.0)0001 Pt100(-50.0150.0)0010Cu50/Pt100通用(-30.0130.0)0011 Pt100(-100.0300.0)0100 Pt100(-200600)单元后字节低4位代表工况数据小数点位置:0000 无小数点0001 小数点在十位0010 小数点在百位0011 小数点在千位设定数据寄存器(可改)0100H第一控制/报警单报警或前报警设定0101H第二控制/报警后报警设定开关量地址数据类型单元地址 说明开关量控制/报警状态(只读)03000302H从0300H到0302H每个单元为1 bit,共3 bit(单元)。0300H第一控制/报警状态0301H第二控制/报警状态0302H 工况输入断阻

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1