机房UPS一般采用自定义协议,例如:
串口发送:Q1<CR>
UPS回复:(MMM.M NNN.N PPP.P QQQ RRR.R SS.S TT.T b7b6b5b4b3b2b1b0<CR>
状态信息描述:[ 每个量之间都有一个空格符 ]
起始字符:'(',就是十六进制的28H
输入电压(I/P voltage):MMM.M,M为 0~9 的整数,状态量单位为 Vac
输入故障电压(I/P fault voltage):NNN.N,N 为 0~9 的整数,状态量单位为 Vac
输出电压(O/P voltage):PPP.P,P 为 0~9 的整数,状态量单位为 Vac
输出电流(O/P current):QQQ,QQQ 是一个相对于最大允许电流的百分比,不是一个绝对值
输入频率(I/P frequency):RR.R,R 为 0~9 的整数,状态量单位为 Hz
电池电压(Battery voltage):SS.S 或 S.SS,S 为 0~9 的整数
机内温度(Temperature):TT.T,T 为 0~9 的整数,单位为 °C
UPS 开关量状态:<U>
这种协议不利于统一管理。现在需要一个网关将UPS协议转化为Modbus TCP协议。卓岚网关ZLAN5107-C的使用方法如下:
| 变量 | 功能码 | 寄存器地址 | 长度 | 类型 |
|---|---|---|---|---|
| MMM.M | 3 | 0 | 4 | 浮点 |
| NNN.N | 3 | 2 | 4 | 浮点 |
| PPP.P | 3 | 4 | 4 | 浮点 |
| RRR.R | 3 | 6 | 4 | 浮点 |
| SS.S或者S.SS | 3 | 8 | 4 | 浮点 |
| TT.T | 3 | 10 | 4 | 浮点 |
| QQQ | 3 | 12 | 4 | 整形 |
| B0 | 3 | 14 | 2 | 整形 |
| B1 | 3 | 15 | 2 | 整形 |
| B2 | 3 | 16 | 2 | 整形 |
| B3 | 3 | 17 | 2 | 整形 |
| B4 | 3 | 18 | 2 | 整形 |
| B5 | 3 | 19 | 2 | 整形 |
| B6 | 3 | 20 | 2 | 整形 |
| B7 | 3 | 21 | 2 | 整形 |
| Online在线标志 | 3 | 22 | 2 | 整形 |
可以读取任意个数的寄存器。请使用Modbus TCP指令。
串口每隔1秒输出 Q1<CR> 。
通过22寄存器可以读取是否在线的信息。如果在线就是1。
假如串口回复的数据是:
(111.1 222.2 333.3 444 555.5 66.6 77.7 11000001
则Modbus显示的数据是:
各寄存器按照上述地址表对应解析
假如SS.S变为S.SS则同样可以得到正确的结果。
注意除了SS.S和S.SS可以变化外,其它的数据的位置和小数点都不能变化,如果高位没有数据则需要补0。
请使用正确的浮点和整形格式进行解析。
其中的QQQ是整形数据,B0~B7是正序排列在寄存器里面的(串口数据是反序从B7到B0的)。
