1XJ9200D多功能表MODBUS的通讯协议(ver0.3)一.功能码介绍16码代表设置参数03码代表查询参数01码读继电器输出状态02码读数字输入状态05码是控制继电器20码是读取文件信息(SOE波形记录和故障录波信息)通讯应用格式说明1、读命令功能码03主机向从机读N个字的数据帧格式(数据为16进制):从机地址功能码起始地址高位起始地址低位读取数据个数高位读取数据个数低位CRC16高CRC16低00H03HxxHxxH00HxxHxxHxxH从机响应返回帧格式(数据为16进制):从机地址功能码BytescounterData0Data1………………00H03HN………………DataNCRC16HiCRC16LoxxHxxH说明:03码读取测量模拟显示,具体定义见后边附录1。也可以用03码读取设置信息。2、写命令功能码16查询数据帧功能码16(十进制)(十六进制为10H)允许用户改变多个寄存器的内容。主机向从机写N个字的数据帧格式:从机地址功能码起始地址高位起始地址低位DatacounterHiDatacounterLoBytescounter00H10HxxHxxH00HN2NData1Data2……Data2NCRC16HiCRC16Lo40H00H……xxHxxH预置多寄存器查询数据帧响应数据帧对于预置多寄存器请求的正常响应是在寄存器值改变以后回应机器地址、功能号、数据起始地址、数据个数、CRC校验码。如下表。从机功能起始地址起始地址DataDataCRC16CRC162地址码HiLocounterHicounterLoHiLo00H10HxxHxxH00HNxxHxxH预置多寄存器响应数据帧3、控制继电器控制和输出状态3.1继电器控制(功能码05)请求数据帧:AddrFunDOaddrhiDOaddrloValuehiValueloCRC16hiCRC16lo01H05Hxxxx55HFFHxxHxxH响应数据帧:AddrFunDOaddrhiDOaddrloValuehiValueloCRC16hiCRC16lo01H05Hxxxx55HFFHxxHxxH请求帧Value含义:Value名称注释0x55FF预备启动0X55AA继电器合上0x55CC继电器释放响应帧Value含义:Value名称注释0x55FF预备启动执行0X55AA继电器操作执行0x55CC无法执行该命令注:控制电器控制,先发启动命令,然后再发送“合”命令,继电器才动作。如果只发送“合”命令,继电器不动作。同样发送“分”命令,也是先发启动命令,再发释放命令。发送“启动”命令后,必须在30秒内发送“分”或者“合”命令,否则不予响应,如果超过30秒,还需要重新发送“启动”命令,然后在30秒内再发送“分”或者“合”命令。3.2.读继电器输出状态(功能码01)请求帧读取Relay1到Relay2的状态。AddrFunRelaystartreghiRelaystartregsloRelay#ofreghiRelay#ofregsloCRC16hiCRC16lo01H01H00H00H00H02H3DHC9H响应数据帧响应数据帧,从机回应主机的数据帧。包含从机地址、功能码、数据的数量和CRC错误校验,数据包中每个继电器状态占用一位(1=ON,0=OFF),第一个字节的最低位为寻址到的继电器状态值,其余的依次向高位排列,无用位填为0。读数字输出状态响应的实例。3AddrFunBytecountDataCRC16hiCRC16lo01H01H01H03H11H89HData字节内容(Relay1、Relay2ON)76543210000000114.读数字输入状态(功能码02)查询数据帧此功能允许用户获得数字输入量DI的状态ON/OFF(1=ON,0=OFF),除了从机地址和功能域,数据帧还需要在数据域中包含将被读取DI的初始地址和要读取的DI数量。XJ-RTU800系列中DI的地址从0000H开始(DI1=0000H,DI2=0001H...依次类推)。具体定义见附录表6数字量输入地址表。下边例子是从地址为01的从机读取DI1到DI6的状态AddrFunDIstartreghiDIstartregsloDInumhiDInumloCRC16hiCRC16lo01H02H00H00H00H02Hxxxx响应据数帧响应包含从机地址、功能码、数据的数量和CRC错误校验,数据帧中每个DI占用一位(1=ON,0=OFF),第一个字节的最低位为寻址到的DI值,其余的依次向高位排列,无用位填为0。下表所示为读数字输出状态(DI1=ON,DI2=ON,DI3=OFF,DI4=OFF,DI5=OFF,DI6=OFF)响应的实例。AddrFunBytecountDataCRC16hiCRC16lo01H02H01H03HE1H89HData76543210000000115、读取文件记录和SOE事件功能码20MODBUS协议规定可以用20码读取内存里的文件。每个文件包括10000个记录,标准MODBUS仅仅定义了10个文件,但是本协议扩展标准结构,定义成1~65535个组。本规范第1文件存的是SOE事件(见附录7)。第2文件存第1~5组故障录波,第3文件存6~10组故障录波,依次类推,第17文件存放75~80组故障录波。为了使主机能快速便捷查到最近发生的SOE时间和故障录波,在03码中可以查询最近信息存储的指针,具体见附录。20功能代码能读多组类型寄存器,组别之间的地址可分开,但组内的地址必须连续,也就是说一次请求数据可以同时请求不同组的数据,本协议规定一次最多只能请求10个不同的组,其它完全按照标准MODBUS协议模式。4下边以一个例子说明该协议的具体格式:请求帧:地址功能码字节数参考类型文件号(hi)文件号(lo)记录号(hi)记录号(lo)01H14H07H~F5H06H01H~FFFFH00H~270FH记录长度记录长度CRC16hiCRC16loNxxHxxH响应帧:地址功能码响应数据长度文件长度参考类型记录数据1(hi)记录数据1(lo)01H14H07H~F5H07H~F5H6xxHxxH…记录数据N(hi)记录数据N(lo)CRC16hiCRC16lo…xxHxxHxxHxxH例子:请求从机设备1两组类型寄存器数据。1组包括文件4的2个寄存器,寄存器起始地址00012组包括文件3的2个寄存器,寄存器起始地址0009本例子是同时请求两个组的文件,第一个组请求的文件4,请求2个字内容,第一组开始地址是0001。第二个组请求的文件3,请求2个字内容,第一组开始地址是0009。5请求帧FieldNameSlaveAddressFunctionByteCountSub–Req1,ReferenceTypeSub–Req1,FileNumberHiSub–Req1,FileNumberLoSub–Req1,StartingAddrHiSub–Req1,StartingAddrLoSub–Req1,RegisterCountHiSub–Req1,RegisterCountLoSub–Req2,ReferenceTypeSub–Req2,FileNumberHiSub–Req2,FileNumberLoSub–Req2,StartingAddrHiSub–Req2,StartingAddrLoSub–Req2,RegisterCountHiSub–Req2,RegisterCountLoErrorCheck(LRCorCRC)Example(Hex)1140E0600040001000206000300090002––具体文件定义附录表7,故障录波文件地址表和SOE文件表。注:本产品完全遵照标准的MODBUS协议的文件格式,可以一次读取几个文件里面的内容,为了方便解析,最好一次读取一个文件里面的内容,不要夸文件读取。附表:通讯地址表一.参数区:1.1系统参数区:本区域存储与设备工作相关的系统参数,包括通讯参数、接线方式、I/O设定等,可采用Modbus协议03号功能码读取,或使用16号功能码设置。地址参数数值范围数据类型读写属性0000H保护密码09999WordR/W0001H电压变比09999浮点数R/W0003H电流变比09999浮点数R/W0005H接线方式02(3LN3CT三相四线、2LL2CT三相三线、2LL3CT)WordR/W0006H通讯控制字(显示串口)波特率(BIT7~0):modbus地址波特率(BIT10~8):000:1200,001:2400WordR/W响应帧FieldNameSlaveAddressFunctionByteCountSub–Res1,ByteCountSub–Res1,ReferenceTypeSub–Res1,RegisterDataHiSub–Res1,RegisterDataLoSub–Res1,RegisterDataHiSub–Res1,RegisterDataLoSub–Res2,ByteCountSub–Res2,ReferenceTypeSub–Res2,RegisterDataHiSub–Res2,RegisterDataLoSub–Res2,RegisterDataHiSub–Res2,RegisterDataLoErrorCheck(LRCorCRC)Example(Hex)1140C05060DFE0020050633CD0040––6010:4800011:9600100:19200101:38400数据格式(BIT13~12):00:8,1,n01:8,1,even10:8,1,odd.0007H背光点亮时间0120(分钟)WordR/W0008H需量滑动窗时间130(分钟)WordR/W0009H最大值最小值清除0AHWordR/W清除全部电能0BH000AH变送设置0~25(3P4L)或0~10(3P3L)WordR/W000CH最大最小值清除方式0~30:不清除最大最小(除非采用清除命令清除)1:每小时清除一次2:每天清除3:每月清除WordR/W000EH通讯测试0~0xffff(如果在系统调试的时候,输入任意一个数值,所有的遥测量都是该数值,输入0代表测试状态退出。如果重新上电,测试状态也退出,如果测试状态一直运行超过1个小时,也自动退出测试状态)。WordR/W000FH装置故障指示0:无故障1:有故障Bit0:对时串口,未接到串口信息Bit1:对时脉冲未接到Bit2:CAN接口接到数据超时Bit3:RTC时钟不起振Bit4:铁电存储器出错Bit5:flash出错1.2数字量输入DI状态本区域为当前数字量输入DI状态,用户可采用Modbus协议02号功能码读取。地址参数数值范围数据类型读写属性0000HDI11=ON,0=OFFBitR0001HDI21=ON,0=OFFBitR0002HDI31=ON,0=OFFBitR0003HDI41=ON,0=OFFBitR0004HDI51=ON,0=OFFBitR0005HDI61=ON,0=OFFBitR71.3继电器状态本区域存储继电器状态,用户可使用Modbus协议01号功能码读取当前状态,使用05号功能码控制输出。地址参数数值范围数据类型读写属性0000HRelay11=ON,0=OFFBitR/W0001HRelay21=ON,0=OFFBitR/W说明:1.数据类型:“Bit”指二进制位,“Word”指16位无符号整数。2.读写属性:“R”为只读属性,数字输入量、继电器状态、数据参量分别用02号、01号和03号命令读取。“R/W”为可读可写属性,写数据参量用16号命令,写(控)继电器用05号命令。禁止向不具有可写属性的地址进行写操作。3.电度量是可写的,通过通讯对其进行清零或预置。二.时钟参数区本区域存储日历时钟参数,这些数据可使用Modbus协议03号功能码读取,可使用16号功能码设置。地址参数数值范围