您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > hgm6500通讯协议V10
HGM6500通讯协议1.引言本通讯协议详细描述了本机串行口通讯的读写命令格式及内部信息数据的定义,以便第三方开发使用。MODBUS通讯规约允许本装置与施耐德、西门子、Modicon等多个国际知名品牌的可编程顺序装置(PLC)、RTU、SCADA系统、DCS或第三方具有MODBUS兼容的监控系统之间进行信息和数据的有效传递。只要增加一套基于PC(或工控机)的中央通讯主控显示软件(如:组态王,Intouch、FIX、synall等)就可建立一套监控系统。2.ModBus基本规则:●所有RS232通讯回路都应遵照主、从方式。依照这种方式,数据可以在一个主站(如:PC)和32个子站之间传递。●主站将初始化的装置在RS232通讯回路上传递的所有信息。●任何一次通讯都不能从子站开始。●在RS232回路上的所有通讯都以“信息帧”方式传递。●如果主站或子站接收到含有未知命令的信息帧,则不予响应。3.数据帧格式:通讯传输为异步方式,并以字节(数据帧)为单位。在主站和子站之间传递的每一个数据帧都是以11位的串行数据流。数据帧格式:起始位1位数据位8位奇偶校验位无停止位1位4.通信规约:当通信命令发送至仪器时,符合相应的地址码的设备接收通信命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务,然后把执行结果返送给发送者。返送的信息中包括地址码、执行动作的功能码、执行动作后的数据以及错误校验码(CRC)。如果出错就不发送任何信息。●信息帧格式:初始结构地址码功能码数据区错误校验结束结构延时(相当于4个字节的时间)1字节8位1字节8位N字节N*8位2字节16位延时(相当于4个字节的时间)●地址码(ADDRESS):地址码为每次通信传送的信息帧中的第一个数据帧(8位),从0到255。单个设备的地址范围是1-247,这个字节表明由用户设定的地址码的子机将接收由主机发送来的信息,并且每个子机都有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送来的地址码表明将发送到的子机地址,而子机发送的地址码表明回送的子机地址。●功能码(FUNCTIONCODE)功能码是每次通信传送的第二个数据。ModBus通讯规约定义功能码为1-255(01H-0FFH)。本机利用其中的一部分功能码。作为主机请求发送,通过功能码告诉子机执行什么动作。作为子机响应,子机发送的功能码与主机发送来的功能码一样,并表明子机已响应主机进行操作。如果子机发送的功能码的最高位是1(功能码127),则表明子机没有响应或出错。下表列出功能码具体的含义及操作。ModBus部分功能码功能码定义操作01H读开关量读取单个或多个开关量03H读寄存器读取一个或多个寄存器数据05H置单个开关量置单个开关量06H写单个寄存器把一个16位二进制数写入寄存器1.01H读开关量主机可以利用功能码为01的通讯命令,读取装置内的各种开关量(如开关合闸、分闸、故障,自动或手动状态等)。2.03H读寄存器主机利用功能码为03H的通讯命令,读取装置内的数值寄存器,数值寄存器内保存的是采集到的各种模拟量和参数的设定值)。功能码03H映射的数据区的输入寄存器值都是16位(2字节)。这样从装置读取的寄存器值都是2字节。一次最多可读取的寄存器数是125个。子机响应的命令格式是子机地址、功能码、数据区及CRC码。数据区的数据都是每二个字节为一组的双字节数,且高字节在前。3.05H置单个开关量主机利用这条命令把单个开关量数据保存到装置内的位存储器(如控制ATS转换的开关量)。子机也用这个功能码向主机返送信息。4.06H写单点寄存器主机利用这条命令把单点数据保存到装置内的存储器。ModBus通讯规约中寄存器指的是16位(即2字节),并且高位在前。这样装置的点都是二字节。命令格式是子机地址、功能码、数据区及CRC码。●数据区(DATA):数据区随功能码不同而不同。1、与功能码01H对应的数据区格式:主机发送数据顺序12数据含义起始地址读开关量个数字节数22子机应答:数据顺序12数据含义回送字节数N个开关量数据字节数112、与功能码03H对应的数据区格式:主机发送数据顺序12数据含义起始地址读寄存器个数字节数22子机应答:数据顺序12数据含义回送字节数N个寄存器数据字节数1N3、与功能码05H对应的数据区格式:主机发送数据顺序12数据含义开关量地址强制单个开关量值字节数22子机应答:数据顺序12数据含义开关量地址单个开关量值字节数224、与功能码06H对应的数据区格式:主机发送数据顺序12数据含义寄存器地址寄存器值(二个字节)字节数22子机应答:数据顺序12数据含义寄存器地址寄存器值(二个字节)字节数22●错误校验码(CRC):主机或子机可用校验码进行判别接收信息是否出错。有时,由于电子噪声或其它一些干扰,信息在传输过程中会发生细微的变化,错误校验码保证了主机或子机对在传送过程中出错的信息不起作用。这样增加了系统的安全和效率。错误校验码采用CRC-16校验方法。二字节的错误校验码,低字节在前,高字节在后。*注意:信息帧的格式都是相同的:地址码、功能码、数据区及错误校验码。冗余循环码(CRC)包含2个字节,即16位二进制。CRC码由发送端计算,放置于发送信息的尾部。接收端的设备再重新计算接收信息的CRC码是否与接收到的相同,如果二者不同,则表明出错。CRC码的计算方法是,先预置16位寄存器全为1。再逐渐把每8位数据信息进行处理。在进行CRC码计算时只用8位数据位,起始位及停止位都不参与CRC码计算。在计算CRC码时,8位数据与寄存器的数据相异或,得到的结果向低位位移一位,用0填补最高位。再检查最低位,如果最低位为1,把寄存器的内容与预置数异或,如果最低位为0,不进行异或运算。这个过程一直重复次。第8次移位后,下一个8位再与现在的寄存器的内容相异或,这个过程与上次一样重复8次。当所有的数据信息处理完后,最后寄存器的内容即为CRC码值。CRC-16码的计算步骤为:1、置16位CRC寄存器为十六进制FFFF;2、把一个8位数据与CRC寄存器的低8位相异或,把结果放于CRC寄存器;3、把CRC寄存器的内容右移一位,用0填补最高位,检查移出位。4、如果最低位为0:重复第3步(再次移位)。如果最低位为1:CRC寄存器与十六进制数A001进行异或。5、重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理。6、重复步骤2到5,进行下一个数据处理。7、最后得到的CRC寄存器值即为CRC码,传送时将低8位先发送,高8位最后发送。注:CRC码的计算从<子机地址>开始,除<CRC码>的所有字节。●信息帧格式举例◎功能码01H子机地址为00,读取起始地址为0000H的20H(十进制32)个开关量主机发送字节数举例(十六进制)子机地址101送至子机01功能码101读取开关量起始地址200起始地址为000000读取个数200读取28个开关量1CCRC码23D由主机计算得到的CRC码C3子机响应字节数举例(十六进制)子机地址101返回子机地址01功能码101读取开关量读取字节数104返回开关量数量:28个开关量(共4个字节)数据1130地址为07-00内的内容数据2100地址为0F-08内的内容数据3193地址为17-10内的内容数据410A地址为1C-18内的内容CRC码218由子机计算得到的CRC码26开关量07–00的值用十六进制表示为30H,用二进制表示为00110000,开关量07是字节的高位,00是低位,开关量07-00的状态是:OFF-OFF-ON-ON-OFF-OFF-OFF-OFF。◎功能码03H子机地址为01,起始地址为0026H的3个点此例中点数据地址为:地址数据(十六进制)0026001400280014002A0005主机发送字节数举例(十六进制)子机地址101送至子机01功能码103读取点寄存器起始地址200起始地址为002626读取个数200读取3个点(共6个字节)03CRC码2E4由主机计算得到的CRC码00子机响应字节数举例(十六进制)子机地址101返回子机地址01功能码103读取点寄存器读取字节数1063个点(共6个字节)点1数据200地址为0026内的内容14点2数据200地址为0028内的内容14点3数据200地址为002A内的内容05CRC码291由子机计算得到的CRC码71◎功能码05H子机地址为01,起始地址为0002H的1个开关量,置0002单元为1此例中开关量数据地址为:地址数据(十六进制)000000001100020说明:十六进制值FF00强制开关量为1,0000H强制为0,其它值则为非法且不影响开关量的状态主机发送字节数举例(十六进制)子机地址101送子机地址01功能码105强制开关量起始地址200起始地址为000000数据2FF开关量置100CRC码2CD由主机计算得到的CRC码FB子机响应字节数举例(十六进制)子机地址101返回子机地址01功能码105强制开关量起始地址200起始地址为000000数据2FF开关量置100CRC码2CD由主机计算得到的CRC码FB◎功能码06H子机地址为01,置起始地址为0026H的1个点的内容为0014H此例中点数据地址为:主机发送字节数举例(十六进制)子机地址101送子机地址01功能码106写单点寄存器起始地址200起始地址为0026H26数据200置1个点数据(共2个字节)14CRC码268由主机计算得到的CRC码0E子机响应字节数举例(十六进制)子机地址101返回子机地址功能码106写单点寄存器置值起始地址200起始地址为0026H26数据200置1个点数据(共2个字节)14CRC码268由主机计算得到的CRC码0E●出错处理当装置检测到了CRC码出错以外的错误时,必须向主机返送信息,功能码的最高位置1,即子机返送的功能码是在主机发送的功能码的基础上加128。以下的这些代码表明有意外的错误发生。从主机接收到的信息如有CRC错误,则被装置忽略。子机返送的错误码的格式如下(CRC除外):地址码1字节功能码1字节(最高位是1)错误码1字节CRC码2字节错误功能码:01非法的功能码接收到的功能码不支持02非法的数据地址指定的地址超出子机的范围03非法的数据值接收到主机发送的数据值超出相应地址的数据范围。附录:地址和数据表1:功能码01H所映射的开关量区开关量地址项目(Item)说明0000H公共报警为1有效0001H公共警告报警为1有效0002H公共停机报警为1有效0003H公共电气跳闸报警为1有效0004H保留0005H保留0006H保留0007H保留0008H紧急停机报警为1有效0009H高水温报警停机为1有效000AH低油压报警停机为1有效000BH发电超速报警停机为1有效000CH发电欠速停机为1有效000DH速度信号丢失报警为1有效000EH发电过频报警停机为1有效000FH发电欠频停机为1有效0010H发电过压停机为1有效0011H发电欠压停机为1有效0012H发电过流停机为1有效0013H起动失败报警为1有效0014H油压传感器开路报警为1有效0015H输入口1停机为1有效0016H输入口2停机为1有效0017H输入口3停机为1有效0018H输入口4停机为1有效0019H输入口5停机为1有效001AH输入口6停机为1有效001BH输入口7停机为1有效001CH输入口8停机为1有效001DH输入口9停机为1有效001EHMSC连接故障为1有效001FH失磁故障停机0020H过功率停机0021H电流不平衡停机0022H逆功率停机0023HCANECU连接失败0024HCANECU报警停机0025H低油位报警停机0026H合闸故障停机0027H分闸故障停机0028H发电机相序错停机0029H母排相序错停机002AH零线电流故障002BHMSCID错误002CH保养时间到002DH母排输入故障002EH保留002FH保留0030H保留0031H保留0032H保留0033H保留0034H保留0035H保留0036H保留0037H保留0038H发电
本文标题:hgm6500通讯协议V10
链接地址:https://www.777doc.com/doc-2876072 .html