山特UPS串口通讯协议研究

这篇具有很好参考价值的文章主要介绍了山特UPS串口通讯协议研究。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

      山特中高端UPS默认配备串口通讯,可以通过串口获取UPS运行信息,通过自带电源管理软件WinPower可以实现断电远程关机功能。

        网上关于山特UPS串口通讯协议,有一些简单的文档和研究,但是通过深入了解,发现这些文档已经和现在的实际情况有较大的出入。因为山特官方没有串口通讯协议相关文档可以公开下载,所以把能获取到的信息分享一下。

目录

硬件准备

数据分析

通过分析数据,了解到以下内容:

循环发送命令返回的数据分析如下:

不固定的循环命令,返回数据都不知道具体含义:

数据重现

分析发现以下几点内容:

进一步测试,发现以下内容:

断电测试,查看故障码

总结


  • 硬件准备

        山特UPS一台,型号C3K,机身内自带12V/9AH电池6节。如果是C3KS,则不带内置电池,需要外挂电池柜。

        山特C3K,3000VA输出待机4.5分钟,2400W输出待机10.5分钟。这里VA是视在功率的单位,用S表示;W是有功功率的单位,用P表示;还有一个Var是无功功率的单位,用Q表示。有功功率P/视在功率S就是功率因数。

山特UPS串口通讯协议研究   串口通讯,串口配置为串口波特率2400,数据位8位,停止位1位,无校验位。需要注意串口线为直连线,不能用交叉线。现在电脑没有串口,用USB转串口默认是交叉线,所以连接后始终无反应,只能找了一台台式机,用直连线连接。

  • 数据分析

        在电脑上安装WinPower软件,运行后按照操作说明,搜索到UPS,具体UPS运行数据如下图所示。

        数据共六组10个,包括:输入电压和频率、输出电压和频率、负载有功功率和视在功率、电池电压和预计待机时间、电池温度、负载百分比。

山特UPS串口通讯协议研究

 

        使用串口抓包软件,获取数据包如下:

 

通过分析数据,了解到以下内容:

  1. 发送命令为字符串,返回数据也是字符串,没有二进制编码。
  2. 数据发送以\CR,也就是回车作为结束符,16进制编码0D。
  3. 接收数据以(开头,二进制编码28,以\CR,也就是回车作为结束符,16进制编码0D。
  4. 循环发送命令Q6、WA、WC、RT,再加上一个不固定的循环命令。
  5. 不固定的循环命令包括EB?、TD?、LM?、BM?、BO?、SL?、BV?、QP,这几个组成一个打的循环,也就是发送完上面4个命令,就发送EB?,然后再发送一次上面4个命令,发送TD?,一直循环到最后一个命令QP,然后再到EB?。
  6. 其中Q6为主要数据查询命令,返回的数据包含了大部分显示的内容。

循环发送命令返回的数据分析如下:

  1. Q6命令

山特UPS串口通讯协议研究

 

        返回数据为输入电压,后面两个可能是异常电压的高值和低值,也可能是保留的其他内容。然后是输入频率。输出电压,保留内容两个,输出频率。013不知道是什么数据。081.9是电池电压,是6节12V电池的总电压。保留字节不知道什么内容。39.0是温度。后面几个数字都不知道什么含义。两个00000000应该是状态字。全是零代表状态正常。后面11不知道什么含义。

  1. WA命令

山特UPS串口通讯协议研究

 

        前面不知道什么含义,010为负载百分比,00000000应该是状态码。

  1. WC命令

山特UPS串口通讯协议研究

 

        0239代表有功功率239W,0322代表视在功率322VA。

  1. RT命令

山特UPS串口通讯协议研究

 

        应该是设备信息,版本之类的数据。

不固定的循环命令,返回数据都不知道具体含义:

        EB?、TD?、LM?、BM?、BO?、SL?、BV?、QP

山特UPS串口通讯协议研究

山特UPS串口通讯协议研究 

山特UPS串口通讯协议研究 

山特UPS串口通讯协议研究 

  • 数据重现

        通过串口通讯软件,发送串口数据,结果如下:

山特UPS串口通讯协议研究

 

分析发现以下几点内容:

  1. 串口发送已知的指令,返回内容格式和抓包内容格式一致。
  2. 命令发送,直接回车换行,带\CR\LF也可以发送成功,获得返回内容。
  3. 有时候会返回NAK,只需要重新发送一遍就可以正确获取到返回内容。
  4. 原来的文章介绍的命令Q1仍可以使用,返回内容和文章介绍一致。

以下是原来的分析文章拿过来的内容,即Q1指令返回内容格式:

(   MMM.M   NNN.N   PPP.P   QQQ RR.R    S.SS    TT.T    U

(   237.1   237.9   220.0   006 49.9    2.29    28.8    00000001

起始码0x28  输入电压    输入故障电压    输出电压    负载%   市电频率Hz  电池电压    温度    状态码

进一步测试,发现以下内容:

山特UPS串口通讯协议研究

 

  1. Q1到Q8指令,只有Q1、Q4、Q6指令有效。
  2. Q4指令除了已知的Q1内容,多了电池总电压,其他内容,361、358应该是输入的相角,其他的猜不出来什么内容。
  3. 无效指令返回NAK,有时候有效指令也会返回NAK,重新查询一次就可以获取正确的返回数据。

断电测试,查看故障码

山特UPS串口通讯协议研究

 

        Q1命令返回故障码10000000,Q6返回故障么00000088。

  • 总结

        上面的测试,虽然很多数据不知道具体含义,但是也足够用了。

        WinPower界面显示的六组10个数据,包括:输入电压和频率、输出电压和频率、负载有功功率和视在功率、电池电压和预计待机时间、电池温度、负载百分比。

        Q6命令,可以获取6个数据:输入电压和频率、输出电压和频率、电池电压、电池温度。

山特UPS串口通讯协议研究

        WA命令,可以获取1个数据:负载百分比。

山特UPS串口通讯协议研究

 

        WC命令,可以获取到两个数据:负载有功功率和视在功率。

山特UPS串口通讯协议研究

 

        Q1命令,可以获取到输入电压、输出电压和频率、电池温度、负载百分比,相比Q6命令,多了负载百分比,少了输入频率和电池电压。

        Q4命令,可以获取到输入电压、输出电压和频率、电池温度、电池电压、负载百分比,相比Q6命令,多了负载百分比,少了输入频率。

山特UPS串口通讯协议研究 

        WinPower界面显示唯一获取不到的,是预计待机时间。通过数据推算,可能的公式如下:

(电池电压-电池终止电压7V*6节电池)*电池容量9AH/输出功率瓦

        具体数据计算为:

(81.9-7*6)*9/238 = 1.5088 = 1小时30分。

        这里取电池终止电压为7V,取值太低,所以以电池终止电压10.5V计算,实际待机时间为:

(81.9-10.5*6)*9/238 = 0.7147 = 43分。

        如果负载百分比为100%,即2400瓦,则待机时间为

(81.9-10.5*6)*9/2400 = 0.0708 = 4.25分。

        这个数值,和产品说明中的2400瓦计算不符,反而符合3000VA的说明值。

        外接电源关闭后,至少需要2分钟来确认是真正的停电,短时间无法送电。剩下2分钟根本来不及关机。所以负载为50%左右较为合理。

        如果负载百分比为50%,即1200瓦,则待机时间为

(81.9-10.5*6)*9/1200 = 0.1418 = 8.5分。

        剩余关机时间为5分多钟。文章来源地址https://www.toymoban.com/news/detail-456293.html

到了这里,关于山特UPS串口通讯协议研究的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 串口RS232 RS485最本质的区别!-!I2C通讯协议 最简单的总线通讯!-深入理解SPi通讯协议!

    来自 先讲串口通讯,因为不管是R4232还是R485,都是串口通讯的变种。知道了串口通讯,再来看232和485,就很容易理解了。串口通讯非常容易实现,它在两个芯片之间就可以实现信号的传输。在进行串口通讯时,首先要约定好真格式和波特率。这是一帧我们常见的帧格式,一共

    2024年02月04日
    浏览(47)
  • ARM--day5(C语言点灯实验、总线、串口通信信息、串口通讯协议)

      gpio.c: gpio.h: main.c:

    2024年02月12日
    浏览(39)
  • 第10课【STM32 USB通讯协议实战】HID键盘+CDC虚拟串口组合设备

    文章中的部分概念可参考第9课【USB协议】USB总线 接口 端点 管道 数据包 枚举 STM32_USB-FS-Device_Lib V4.1.0 USB协议中为了提供对多样设备的支持,定义了许多外部设备子类,常见的包括: 人机交互类设备HID(Human Interface Device) 通信类设备CDC(Communicate Device Class) 大容量存储设备

    2024年02月04日
    浏览(59)
  • STM32(2)-串口通讯实际应用:串口屏

    文章以UART基础知识和串口屏实际应用来说明串口的作用。 、 UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)的缩写,是一种串行通讯协议,通常用于将计算机或微处理器与其他设备(如传感器、模块、显示器等)进行通信。UART可以将数据以一定速率和格式(

    2024年02月16日
    浏览(40)
  • FPGA高端项目:纯verilog的 UDP 协议栈,提供11套工程源码和技术支持

    FPGA高端项目:纯verilog的 UDP 协议栈,提供11套工程源码和技术支持 目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但中间的FIFO或者RAM等调用了IP,或者不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,

    2024年02月03日
    浏览(51)
  • stm32----串口通讯,通过串口控制LED灯

    1.初始化LED灯(根据原理图修改pin和gpio): 2.初始化串口 3.编译中断函数: 以下是完整代码: 效果如下

    2024年02月11日
    浏览(39)
  • 电脑通过串口助手和51单片机串口通讯

    今天有时间把电脑和51单片机之间的串口通讯搞定了,电脑发送的串口数据,单片机能够正常接收并显示到oled屏幕上,特此记录一下,防止后面自己忘记了怎么搞得了。 先来两个图片看看结果吧! 下面是串口3.c的文件全部内容: 下面是oled.h的全部内容: 下面是oled.c的全部内

    2024年02月07日
    浏览(53)
  • FPGA 高端项目:基于 SGMII 接口的 UDP 协议栈,提供2套工程源码和技术支持

    FPGA 高端项目:基于 SGMII 接口的 UDP 协议栈,提供2套工程源码和技术支持 目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但中间的FIFO或者RAM等调用了IP,或者不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的

    2024年01月21日
    浏览(47)
  • Arduino| 串口通讯、入门示例

    串口通讯:串口通信是用来在不同电子设备之间交换数据用的技术,其实就是要实现不同电子设备之间的“通讯对话”。 串口给通讯应用例子:刚拿到Arduino进行Blink测试,程序通过引脚控制了小灯亮起,但是如果我们想要改变当前小灯的亮度,想要把这个“想法”传递给Ar

    2024年01月16日
    浏览(39)
  • UART串口通讯乱码分析

    1:串口通讯乱码最主要的原因就是波特率不对,乱码的话请先检查波特率是否正确; 2:波特率正确的条件下,请检查设备两端电压是否稳定,电压不稳也会导致乱码; 3:当我们无法确认串口波特率的时候,可以参考下面的方式进行排查 大部分的通讯设备中间都是要经过电

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包