首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐
2025年6月24日 星期二 3:15am

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

  • 25-03-08 00:41
  • 3187
  • 7095
blog.csdn.net

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

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

 

注:本文转载自blog.csdn.net的柱子jason的文章"https://blog.csdn.net/qq_40065619/article/details/135381707"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top