Name=ups_st_on_battery Title=UPS On battery
Data type=int16 R/W=Read Only
Address=40004
Transfer=js Data type=bool
>
return ($input & 1<<4)>0;
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">
Name=ups_st_overload Title=UPS Overload
Data type=int16 R/W=Read Only
Address=40004
Transfer=js Data type=bool
>
return ($input & 1<<5)>0;
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}" onclick="hljs.signin(event)">
2.1.2 电池充电状态机(%)
40006这个地址是电池充电状态——0-100的百分比,直接提取数据就行
Name=battery_soc Title=电池充电状态
Data type=int16 R/W=Read Only
Address=40006
2.1.3 电池运行剩余分钟数
40007这个地址是电池在当前功耗情况下,如果市电断开,电池能够支持的剩余分钟数。此数据会根据你当前UPS输入功率动态变化。
Name=rt_remain Title=运行时剩余分钟
Data type=int16 R/W=Read Only
Address=40007
2.1.4 UPS内部温度
40009这个地址是UPS内部温度,也即是电池温度。
Name=in_temp Title=UPS内部温度
Data type=int16 R/W=Read Only
Address=40009
2.1.5 UPS输入输出电压
40018是UPS输入电压
Name=inputv Title=输入电压
Data type=int16 R/W=Read Only
Address=40018
40015是UPS实际输出电压
Name=ioutv_actual Title=实际输出电压
Data type=int16 R/W=Read Only
Address=40015
2.1.6 UPS电池低电压持续时间(分钟)——这是一个坑
40032是UPS电池低电压之后还能够支撑的分钟数
Name=battery_low_dur Title=Low Battery Duration
Data type=int16 R/W=Read Only
Address=40032
2.2 UPS最终数据列表
机房环境很好,我这个项目目前使用这些数据也够了。如果你在更复杂的场合,那么请根据需要配置更多的监控数据即可。

3 运行测试
3.1 一个Modbus协议的坑
以上数据配置看着都正常,但我在现场启动此项目时,发现battery_low_dur这个标签一直取不到数据。而其他数据确实好的。从数据地址上看,这个标签数据地址从十几一下子第32个位置。这个很明显就和Modbus协议数据包大小有关。
这里我补充一个Modbus协议细节,主设备发起请求和从设备应答数据,这个数据包有个最大值,在Modbus协议中好像是128(我如果弄错请指出来)。但我在实际项目接触的各种设备中,我发现一些设备实现此协议的时候,可能受到单片机限制,很可能这个数据包会更小,比如甚至都不能超过30个字。因此,我就怀疑我发送请求的时候,允许的数据包大小还是太大了。那么如何解决呢。往下看
3.2 发现并解决办法
请点击apc9631这个设备节点,然后在右边点击Properties选项卡。如图:

找到这个设备和Modbus相关的分组 Block Size。缺省情况下是四种读取数据的模式最大都是32个。如果我们配置的标签数据超过这个值,那么会被切分成多次请求。我在现场把下面两个字读取的最大值都设置成20,这样就减少了一次读取的数据大小(修改之后,还需要点击Apply确保起作用)。然后问题就解决了。
重新启动刚才的项目。这下一切正常,那么你会看到UPS数据都能显示正常。你可以尝试在UPS上手工切换by pass模式(这个不会影响UPS对外供电,除非你运气极差正好外部供电停电了),看看里面的状态数据是否跟随变化。
4 设备相关工作完成
至此,我们已经完成了对接现场全部设备和模块工作,接下来主要工作就是在软件上使用这些数据了。后面我们还需要使用软件制作监控画面,并且部署到现场的触摸屏监控计算机中;还需要对接短信平台推送报警信息。
为了体现本系列文章手把手的高要求,我们准备下一篇单独详细告诉你如何使用IOT-Tree制作监控画面。其实,这样的文章写起来很繁琐,你现场软件操作可能几秒钟的事,我教你的时候写文字那可费老劲了。唉:谁让我取名“手把手”的呢!
data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/qq_40065619/article/details/135381707","extend1":"pc","ab":"new"}">>
评论记录:
回复评论: