机房自动化监控手把手分享给你 - 6 UPS设备对接

发布时间:2024年01月05日

本文章是一个项目系列文章的第七篇,这个系列文章非常详细,真的可以说是手把手拉着你在现场做实际的项目一样。如果你还不了解前面的内容,请参考

机房自动化监控手把手分享给你 - 0 总体说明

机房自动化监控手把手分享给你 - 1 项目前期准备

机房自动化监控手把手分享给你 - 2 温湿度传感器的对接

机房自动化监控手把手分享给你 - 3 漏水传感器的对接?

机房自动化监控手把手分享给你 - 4 空调设备对接

机房自动化监控手把手分享给你 - 5 电流监测模块对接?

前面的文章,我们完成了温湿度和漏水传感器的安装和配置,精密空调和电流模块的对接。到目前,我们现场的设备也就剩下UPS设备了。这个UPS设备和之前的又有所不同。

1 设备连接和参数配置

机房选用APC的UPS,主机设备有AP9631网络管理模块支持,此网络管理模块接口支持ModbusTCP协议,只需要一根网线接入内网交换机就行。

??

但是,我们在调试这个设备时,碰到一些坑。

首先,这个设备必须先使用主机提供的九针口(RS232)接口,进行配置。同时这个九针口排列又不是标准的RS232接口——必须使用厂家提供的连接电缆。我们在此凭着自己的经验栽了跟斗。

对此,我能告诉你的是:对于一个你第一次接触的设备,特别是贵重或重要的设备,必须仔细研读厂家提供的手册和技术资料。否则,你不仅可能会在实施现场撞墙壁,没法推进项目过程;而且还可能造成其他一些麻烦。

我们还是使用之前的USB-RS232-RS485转接头,对接厂家的RS232电缆,连接UPS。然后使用超级终端,通过COM3连接设备:这个波特率是2400.

超级终端连接之后,多按几次回车键,UPS就会提示你输入用户密码,你只需要输入apc就行。

后续,你只需要使用tcpip 和 modbus这两个命令配置UPS组件的网络地址和参数,以及Modbus TCP协议的使能和使用的端口。

详细内容,你可以参考这个:

APC UPS 网络管理卡(型号apc ap9631)的配置

总之,配置好之后,UPS直接通过网线连接交互机。我的项目ups IP地址和端口为:192.168.5.12:5001。当然,在软件配置前,你可以通过ping命令或telnet命令尝试连接此ip和端口,确保这个端口已经被监听了。

2 软件配置

2.1?配置接入、通道和设备

我们还是继续之前IOT-Tree项目管理主界面中,点击"Connectors",在菜单中选择“Tcp Client”,或者在"Tcp Client"分组上鼠标右键,选择"Add Connection",这都可以弹出一个Tcp Client接入编辑对话框,我们填写内容如下:

??

然后,我们在中间项目根it_room上鼠标右键,选择“New Channel” ,编辑新的通道upseth,并且选择驱动为Modbus TCP。Modbus TCP是基于Tcp链路的Modbus数据格式定义,与Modbus RTU在数据格式上稍微有点区别(我没记错的话应该是不需要CRC16验证了)。而我们之前的设备都是Modbus RTU协议,但通过串口服务器的透明转发最终也是行走在Tcp链路上(但内部的数据格式还是RTU格式)。请注意这些差别!

??

完成之后,我们点击接入upseth右边的连接方框,不松开移动到通道upseth节点左边的连接方框,松开鼠标,建立接入upseth到通道upseth的关联。

??

接下来,我们新建UPS设备。在upseth通道上鼠标右键, 选择“New Device”,填写设备Name=apc9631,其他都可不填写:

??

完成之后,点击apc9631这个设备节点,右边选择[Tags]选项卡,我们就可以在里面点击"+Add Tag"按钮添加数据标签了——后续的标签数据编辑界面就不做此操作说明了,直接给你显示编辑内容。

2.1?配置UPS数据

由于UPS也是比较复制的设备,Modbus数据点位也比较多,我也就照着厂家手册,按照典型的数据点描述配置说明。

??

?

??

??

2.1.1 UPS运行状态标签数据

我们需要从UPS 40001? 40004这两个地址提取4个状态:市电在线on online、电池供电on battery、旁路on bypass、过载on overload。这是个状态是我们最关心的UPS工作状态,正常情况下都应该在市电在线on online,只要不在这个状态下,那都应该报警。

UPS的状态和空调很相似,取到某个地址的16bit数据,里面的某个bit位对应某种状态,所有,我们分别定义4个标签数据,每个数据都需要使用JS的位运算,输出bool值。

参考上面的表格,我们新增标签数据如下(本文就不截图标签数据编辑窗口了,如果不熟悉请参考前面的文章)

Name=ups_st_on_bypass? ?Title=UPS on bypass

Data type=int16? ?R/W=Read Only

Address=40001

Transfer=js? Data type=bool

return ($input & 62)>0;

Name=ups_st_online? ?Title=UPS on line

Data type=int16? ?R/W=Read Only

Address=40004

Transfer=js? Data type=bool

return ($input & 1<<3)>0;

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;

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;
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制作监控画面。其实,这样的文章写起来很繁琐,你现场软件操作可能几秒钟的事,我教你的时候写文字那可费老劲了。唉:谁让我取名“手把手”的呢!

?

文章来源:https://blog.csdn.net/qq_40065619/article/details/135381707
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。