==APC Smart UPS RS232通讯协议说明== ===硬件层协议=== *RS232接口,使用2400bit/s的波特率,1位起始位,8位数据位,1位停止位,无奇偶校验位。 *通讯码制是ASCII码。 ===部分通讯命令描述=== *以下协议中,ASCII码区分大小写字符,所有的UPS返回信息后面都加上回车换行符(即0d 0a )结束符。以下分为5类命令: 连接UPS通讯命令, UPS状态命令, 电池参数命令, 输出UPS的电参数信息命令, UPS自动返回的警告信息. 前面4个命令是:查询方式,也就是上位机发什么命令,UPS就对应的返回什么数据上来。 滴类是UPS自动向上位机发送警告字符,因为这是RS232通讯的,RS232是全双工的工作模式。 {| class="wikitable sortable" |- ! 发送UPS命令 !! UPS返回信息 !! UPS延时时间长度 !! 含义说明 !! 备注 |- |连接UPS通讯命令 |- |Y || SM || 50ms || 设置UPS当前在Smart Mode 这个UPS当前在以ASCII码连接通讯。 || 要与这个UPS进行通讯,必须要先用这个命令设置UPS当前状态。 |- |以下是UPS状态命令 |- |C ||ddd.d:10进制的ASCII码的数据格式||80ms||UPS内部温度|| |- |Q ||dd:是16进制的ASCII码数据格式。如:返回ASCII码:“08”,说明UPS当前在线||50ms|| UPS starte Bit7:返回电池状态 Bit6:电池电压过低状态 Bit5:UPS超载运行 Bit4:UPS使用电池逆变 Bit3:UPS在线 Bit2:UPS内部工作模式;总是为0,此位可以不用理睬 Bit1:此位总是为0,可以不用理睬 Bit0:UPS运行时间校准,此位可以不用理睬 || |- |一下是电池参数命令 |- |g ||Ddd:10进制的ASCII码的数据格式||60ms||UPS电池电压:如电池电压是48V,则返回“48“。 |- |B ||dd.dd||80ms||返回电池电压。 |- |f ||f ddd.d:10进制的ASCII码的数据格式||80ms||返回UPS的电池容量的百分比:如满容量是:100% |- |输出UPS的电参数信息命令: |- |/ ||dd.dd:10进制的ASCII码的数据格式||80ms||负载电流信息 |- |\ ||ddd.d: 10进制的ASCII码的数据格式 ||80ms ||负载工作功率:单位是VA。 |- |L ||ddd.d:10进制的ASCII码的数据格式 ||80ms ||UPS输出在线电压 |- |M ||ddd.d:10进制的ASCII码的数据格式 ||80ms ||UPS输出在线最大电压 |- |N ||ddd.d:10进制的ASCII码的数据格式 ||80ms ||UPS输出在线最小电压 |- |O ||ddd.d:10进制的ASCII码的数据格式 ||80ms ||UPS输出当前电压 |- |F ||dd.dd:10进制的ASCII码的数据格式 ||80ms ||UPS输出电压频率 |- |UPS自动返回的警告信息 |- |% ||||电池电压过低警告|| |- |# ||||UPS自动测试电池失败返回信息|| |- |Ctrl+D ||||UPS内部温度过高警告|| |- |! ||||UPS使用电池逆变输出|| |- |$ ||||表示UPS刚刚从使用的电池切换到使用市电电压逆变|| |- |输入UPS电参数信息 |- |Ctrl+I ||dd.dd:ddd.d数据与数据的中间以分好隔开;这是实际测出的数据结果49.98;225.2;225.2;225.2, 49.98表示输入电的频率,225.2表示A相电压;225.2表示B相电压;225.2表示C相电压|||| | |} 以上协议中:发送的ASCII字符无0d 0a结束符,也无校验。 ===程序流程如下:=== #开始 #发送链接通讯命令Y #发送UPS命令 #处理返回状态数据 #以同样的方法发送命令及处理返回