一般应用中控制中心做为客户端,分站做为服务器端,工作的过程是客户端请求,服务器端响应。但在有些报警系统中要求当分站主动向控制中心上报数据。下面的描述将这种通信方式称为主动上报。主动上报时请求和响应数据格式的对应次序关系与客户端请求的数据的过程正好相反。
也就是说,正常的轮训工作流程是中心站向分站做数据请求,分站做应答,而主动上传是分站直接做应答(相当于收到了中心站的数据请求做应答而已),中心站收主动上传的数据后发生一包数据请求做应道(相当于是需要向这个分站请求数据,只是分站应答提前到了而已)。
分站的主动上传 “请求与响应内容”与普通的轮询中做的“应答响应”格式和内容完全相同,只是需要将“捷麦标示头”变成主动上传标示(4F 3F 2F 1F 5F 5F),将“通信头的”包类型字段换成主动上传类型(0x84).
主站收到分站的主动上传数据后,需要做出响应,分站的主动上传响应中的“请求与响应内容”与普通的轮询中做的“请求数据”格式和内容完全相同,只需要将“通信头的”包类型字段换成主动上传类型(0x04),注意“捷麦标示头”还是普通的轮询标示(4F 3F 2F 1F 5F 6F).
下面举一个例子是关于主动上报离散输入(20-38):
主动上报(分站发起) | |
字段名称 | (Hex) |
功能 起始地址低位 起始地址高位 离散数量低位 离散数量高位 27-20的输出状态 35-28的输出状态 38-36的输出状态 | 01 |
13 | |
00 | |
13 | |
00 | |
CD | |
6B | |
05 |
主动上报的响应(主站响应) | |
字段名称 | (Hex) |
功能 起始地址低位 起始地址高位 离散数量低位 离散数量高位 | 01 |
13 | |
00 | |
13 | |
00 |
十六进制数CD或二进制数1100 1101包含了输出位27的状态“1”。输出位27是这个字节的最高位,输出位20为这个字节的最地位。
在通常的情况下,一个字节的左边是最高有效位,右边是最低有效位。这样输出的第一个字节从左边到右边依次是位27到20,下一个字节从左到右依次是位35到28。当传输这些输出状态时,从最低有效位到最高有效位:20…27,28…35依次类推。
在最后一个字节,十六进制数05或二进制数0000 0101是输出位38-36的状态。输出位38是从左边开始数的第六位,输出位36是这个字节的最低位。剩余的五个高位用0补。
分站一包完整的主动上传的数据包为:
(假设分配的设备号为25 7D,包标示为5,中心站的地址为0,自己为7)
4F 3F 2F 1F 5F 5F 25 7D 05 00 0C 00 84 EF FF F0 00 00 00 00 07 00 BF 7D 01 01 01 13 00 13 00 CD 6B 05 34 50
分站完整的主动上传响应包为:
4F 3F 2F 1F 5F 6F 25 7D 05 00 09 00 04 EF FF F0 00 00 07 00 00 00 B7 DD 01 01 01 13 00 13 00 3E 65
北京捷麦部分RTU产品,有主动上传功能,可设置上传通道、上传周期、DI/DO/AI各自的上传数量。如果是通过捷麦云通道上传,还要设置主站地址。
北京捷麦RTU的主动上传功能,无需上位机做出响应。
主动上传数据定时向上位机发送,一包数据里面包含了所以需要上传的变量信息。解析如下:
指令头 | 主动上传识别码(无需关心) | 模块地址 | CRC1 | ||
4F 3F 2F 1F 5F 5F | 10 01 03 00 23 00 84 00 00 00 00 00 04 00 | 01 00 | B2 19 | ||
有效数据段 | 段1 | 数据段1内容 | 段2 | 段2内容 | |
03 | 01 | 02 18 00 03 00 02 | 02 | 01 00 00 02 00 00 | |
段3 | 段3内容 | CRC2 | |||
03 | 36 00 00 03 00 00 00 00 00 94 9A 26 41 00 00 00 00 | FE 61 |
CRC1为灰色字段的CRC。CRC2为橙色字段的CRC。
此上传包完整包内容如下:
4F 3F 2F 1F 5F 5F 10 01 03 00 23 00 84 00 00 00 00 00 04 00 01 00 B2 19 03 01 02 18 00 03 00 02 02 01 00 00 02 00 00 03 36 00 00 03 00 00 00 00 00 94 9A 26 41 00 00 00 00 FE 61
数据段内容解析(起始地址无需关心,变量个数即在设置软件中填写的上传数量):
变量类型 | 功能码 | 起始地址 | 变量个数 | 内容 | 说明 |
离散输入DI | 02 | 18 00 | 03 00 | 02 | DI1=1,其它为0 |
离散输出DO | 01 | 00 00 | 02 00 | 00 | 都为0 |
模拟量输入AI | 36 | 00 00 | 03 00 | 00 00 00 00 94 9A 26 41 00 00 00 00 | AI1=10.4,AI0和AI2为0 |