VERTIV GXE UPS 通信协议

UPS机器随机附送的软件名称为 SiteManager,只能运行于 Windows 主机上。本文协议内容非官方,是通过串口抓包,以及编写软件模拟串口响应来观察 SiteManager 软件反应整理得出的。

连接方式

  1. USB-B 端口连接

    此种方式连接后,PC端识别为 USB-ACM 设备,可映射为串口或TTY设备,数据收发方式与串口连接无异。

  2. 串口连接(RS232)

    串口波特率为 9600,8 数据位 1 停止位,无奇偶校验

请求响应帧

基本格式:数据以ASCII码字符形式收发,以~符号开始,换行符\d结束,内容由0~9 A~F以及空格组成。

请求格式: aabbccddee...ffff

  • aa: 地址 10 表示广播
  • bb: 00 表示广播 01 表示请求地址
  • cc: 值为 2A 作用不详
  • dd: 命令
  • ee: 参数, 最少4字节
  • ffff: 校验码

响应格式: aabbccddeeffgg...hhhh

  • aa: 地址
  • bb: 值为 01 作用不详
  • cc: 值为 2A 作用不详
  • dd: 响应错误码 00 正常 01 地址错误 02 校验码错误
  • ee: 数据标签
  • ff: 后续数据长度
  • gg: 数据,如ee为0则没有该项
  • hhhh: 校验码

校验码

校验码计算方法:从起始字符之后,每个字符的 ASCII 码值(即二进制数值)相加,直到数据结束,然后用 0x10000 减去相加之和,结果表示为 4 位十六进制文本即可。

文章最后有校验码计算工具。

请求命令

注:后续表示的数字,如未特殊说明,均为16进制

  • 50 查找设备
  • 42 读取模拟量
  • 43 读取逻辑量(枚举类型)
  • 44 读取逻辑量
  • 45 遥控命令
  • 47 读取EEPROM配置
  • 49 遥调命令
  • E6 不详

50 查找设备

  • 参数 0000
  • 响应数据类型为 0000,长度为 00

42 读取模拟量

  • 参数 0000
  • 响应数据类型为 0050,长度为 56

43 读取逻辑量(枚举类型)

  • 参数 0000
  • 响应数据类型为 00B0,长度为 14

44 读取逻辑量

  • 参数 0000
  • 响应数据类型为 0070,长度为 36

45 遥控命令

  • 参数 aaaabbbb

  • aaaa: 值为 C004 作用不详

  • bbbb: 命令

    1001: 开始电池有无自检
    1002: 开始电池维护自检
    1003: 结束电池自检
    2001: UPS开机
    2002: UPS关机
    2003: UPS关闭

49 遥调命令

  • 参数 aaaabbcccc

  • aaaa: 值为 A006 作用不详

  • bb: 地址

  • cccc: 值

    EF: 电池自检周期 0000:禁止周期自检 0001:3个月 0002:6个月 0003:9个月 0004:12个月
    F0: ECO模式 0001:禁止 0002:允许
    F1: 电池EOD自动开机 0001:允许 0002:禁止
    F2: 设备地址 00xx:xx=1~99 (测试无效果)

读取模拟量

举例设备返回下列字符串(不含起始及结尾符号):

21012A005056005960 5630 0000 0FF5138A 081387596000000000000004D8138A017DEE61

其中 21 为设备地址,50 为数据标签,56 为数据长度,最后 4 字节 EE61 为校验码。

数据长度后面填充 2 字节 00,之后为第一个模拟量数值。空格符号填充区域可能为该设备不支持的数据字段。

例中第一个值为 5960,表示输入电压,将其转换为 10 进制后为 22880,即输入电压为 228.80V。后续字段数值,除电池后备时间外,均为上述格式,2 位小数精度。电池后备时间精确到分钟。

各字段含义及单位如下:

  1. 输入电压 V
  2. 空白
  3. 空白
  4. 输出电压 V
  5. 空白
  6. 空白
  7. 输出电流 A
  8. 空白
  9. 空白
  10. 电池电压 V
  11. 输出频率 Hz
  12. 空白
  13. 空白
  14. 输入频率 Hz
  15. 旁路电压 V
  16. 旁路电流 A
  17. 有功功率 KW
  18. 视在功率 KVA
  19. 负载率 %
  20. 旁路频率 Hz
  21. 电池后备时间 Min

读取逻辑量

逻辑量分枚举类型和逻辑类型两种。枚举类型对于一个字段,可能有多种状态。

举例请求 43 命令后,设备返回下列字符串(不含起始及结尾符号):

21012A00B014000107E1E1E1E0E0 E1

设备地址、数据类型、数据长度、校验码部分不再赘述。数据中每个字节(连续两个字符)表示一个逻辑量。每个逻辑量值似乎只有低4位有效。

各字段含义如下:

  1. 未知,值为 00

  2. 状态流动图

    • 0: 不供电,电池充电
    • 1: 市电逆变供电,电池充电
    • 2: 旁路供电,电池充电
    • 3: 旁路供电,电池充电
    • 4及以上: 不供电,电池不充电
  3. 不详,值为 07

  4. 供电方式

    • 1: 市电逆变供电
    • 2: 电池逆变供电
  5. 电池充放电

    • 0: 非充非放
    • 1: 浮充
    • 2: 均充
    • 3: 放电
  6. 电池自检

    • 0: 自检中
    • 1: 不在自检
  7. 电池允许自检

    • 0: 允许
    • 1: 禁止
  8. 电池电压低预告警

    • 0: 正常
    • 1: 预告警
  9. 未知

  10. 开关机状态

    • 0: 关机
    • 1: 开机

举例请求 44 命令后,设备返回下列字符串(不含起始及结尾符号):

21012A0070360000F00000F000 0E000000000000000000000000000000000000F358

数据中每个字节(连续两个字符)表示一个逻辑量。每个逻辑量高 4 位为 0 表示假(正常状态) F 表示真(告警状态)。

各字段含义及错误提示、严重等级如下:

  1. 未知
  2. 未知
  3. 主路异常 告警 一般
  4. 整流器 故障 严重
  5. 逆变器 故障 严重
  6. 旁路 告警 一般
  7. 电池电压 故障 严重
  8. 未知,值为 0E
  9. 功率模块过温 故障 严重
  10. 风扇 告警 一般
  11. 输入缺零故障 故障 严重
  12. 母线异常关机 故障 严重
  13. 充电器 故障 严重
  14. 电池放电终止 异常 一般
  15. 辅助电源 故障 严重
  16. 输出过载 告警 一般
  17. 输出线路 短路 严重
  18. 过载超时 告警 一般
  19. 并机均流异常 告警 一般
  20. 并机连接线异常 告警 一般
  21. 并机地址错误 告警 一般
  22. 内部通讯异常 告警 一般
  23. 系统过载 告警 一般
  24. 紧急关机 紧急关机 一般
  25. 电池接反 告警 一般
  26. 电池无 告警 一般
  27. 未知
输入(不含起始字符、结束字符、校验码)

校验码