1、继电器板通用通信协议说明串口设置:波特率 9600,8 个数据位,一个停止位,无校验位。数据帧:每个数据帧包含 8 个字节。分别是:数据头(一字节),地址(一字节),功能码(一字节),数据(四字节),校验和(一字节)。上位机发送(8 个字节):数据头:一字节 固定为 0x55目标地址:一字节 如果目标地址为 1,则发送 1,目标地址是多少就发送多少。用来功能码:一字节数据内容:四字节,先发送第一字节,然后第二,三,四个字节校验:一字节,将前面的所有数据相加,取后八位得到。功能码与对应的数据说明(数据为十六进制):功能码 功能码说明 数据内容 备注0x00 读取当前继电器板的状态(最多支持 4
2、路)0x00,0x00,0x00,0x000x01 写入当期继电器板的状态(最多支持 4 路)四个字节代表四个继电器,1 代表断开,2 代表吸合,其他值无意义只支持四路单输出模块,因为最多支持到四路0x10 读取当前继电器板的状态(最多支持 32 路)0x00,0x00,0x00,0x00 支持查询所有继电器模块和开关量输输入输出模块。0x11 断开某一路 数据中的第四个字节代表断开第几路继电器,其他为 0。0x12 吸合某一路 数据中的第四个字节代表吸合第几路继电器,其他为 0。0x13 命令执行 数据中的第 3,4 个字节,每个字节 8 位,共 16 位。代表 16 路继电器的状态,1 代
3、表吸合 0 代表断开。最后一个字节的第 0位代表第一个继电器,依次类推。支持所有继电器模块(非指令控制的除外)0x14 组断开 数据中的第 3,4 个字节,每个字节 8 位,共 16 位。代表 16 个继电器的操作,1 代表断开 0 代表保持原来状态。最后一个字节的第 0 位代表第一个继电器,依次类推。0x15 组吸合 数据中的第 3,4 个字节,每个字节 8 位,共 16 位。代表 16 个继电器的操作,1 代表吸合 0 代表保持原来状态。最后一个字节的第 0 位代表第一个继电器,依次类推。0x16 组翻转 数据中的第 3,4 个字节,每个字节 8 位,共 16 位。代表 16 个继电器的操
4、作,1 代表状态翻转 0 代表保持原来状态。最后一个字节的第 0 位代表第一个继电器,依次类推。0x20 翻转单个继电器 数据中的第四个字节代表翻转第几路继电器,其他为 0。0x21 延时断开 数据的第 1,2,3 字节代表时间(高位字节在前,单位 ms),第 4 字节代表第几路继电器0x22 延时吸和 数据的第 1,2,3 字节代表时间(高位字节在前,单位 ms),第 4 字节代表第几路继电器0x40 读出从机地址 00x41 写入从机地址 从机地址0x42 读出从机频率段 00x43 写入从机频率段 从机频率段0x45 读出上电状态 00x46 写入上电状态 从机上电状态0x70-0X7F
5、 自定义回码 根据电路板不同,返回的码不同0xE1-0xF2 无返回指令 数据为单向发送,继电器不返回状态选择性支持说明:不同的功能码配合不同的数据内容代表不同的功能。并不是所有的继电器板都支持所有的功能码下位机返回(8 个字节):数据头:一字节 固定为 0x22目标地址:一字节 本机地址功能码:一字节 与主机发送的功能码保持一致数据内容:四字节,先发送第一字节,然后第二,三,四个字节。代表了本电路模块的当前状态。如果是继电器板,代表了当前继电器板输出的状态;如果是输入检测板,代表了当前模块输入的状态。校验:一字节,将前面的所有数据相加,取后 8 位得到。功能码与对应的数据说明(数据为十六进制
6、):功能码 功能码说明 数据内容0x00 读取当前继电器板的状态(最多支持 4 路)0x01 写入当期继电器板的状态(最多支持 4 路)模块当前状态继电器输出板:四个字节代表四个继电器,1 代表断开,2 代表吸合。0x10 读取当前继电器板的状态(最多支持 32 路)0x11 断开某一路0x12 吸合某一路0x13 命令执行0x14 组断开模块当前状态继电器输出板:数据中的第 3,4 共两个字节,每个字节 8 位,共 16 位。代表 16 路继电器的状态,1 代表吸合 0 代表断开。最后一个字节的第 0 位代表第一个继电器,依次类推。输入检测板:数据中的第 2,3,4 共三个字节,0x15 组
7、吸合0x16 组翻转0x20 翻转单个继电器每个字节 8 位,共 24 位。代表 24 路输入状态。1代表有输入。0 代表没有输入。输入输出板:第二个字节代表输入的状态,第四个字节代表输出的继电器状态。其他 与主机发送的功能码一致 需要读取的内容举例说明(假设地址为 1)上位机发送:55 01 10 00 00 00 00 66 查询当前的继电器状态55 01 11 00 00 00 01 68 断开第一路继电器55 01 11 00 00 00 02 69 断开第二路继电器55 01 12 00 00 00 01 69 吸合第一路继电器55 01 12 00 00 00 02 6A 吸合第二路继电器55 01 13 00 00 55 55 13 按照 55 55 两个字节的 16 个位来打开和关闭所有的继电器下位机回答:22 01 00 00 00 XX XX HH地址为 1 的继电器板 16 个继电器的状态用 XX XX 代表XX XX 一共两个字节,每个字节八位,一共十六个位, 代表 16 路继电器的实时状态 HH 代表校验和,校验和就是将前面的所有数据相加。说明:协议中无意义的字节留作将来升级