文章目录
1 实验原理
1.1 实验目标
在Workplace中利用时间表及模拟函数,实现对温度的比较控制。配合Lead Lag Runtime
组件,通过比较两个水泵的运行时间,让热水泵轮流工作,避免热水泵因经常工作或不经常使用而出现故障。
1.2 实验要求
参照实验练习手册实验练习4的要求,对照完成利用时间表实现热水泵控制。使用Lead Lag Runtime组件来平衡每个设备的运行时间。
1.3 相关模块介绍
本次实验需要用到Lead Lag Runtime组件,该组件用来平衡每个设备的运行时间,根据累计运行时间,控制运行时间少的设备启动。它可以提供2到10个设备的控制,并使一次只有一个受控设备处于活动状态。Lead Lag Runtime属性如下表1-1所示。
属性 | 含义 |
---|---|
In | 是StatusBoolean类型的输入,用于控制否应该打开受控设备。如果此输入为True,根据运行时间的计算一个输出将处于活动状态。 |
Numeric Outputs | 设置受控制设备(输出)的数量。 |
Max Runtime | 最大运行时间 |
Feedback | 是StatusBoolean类型的输入,用于提供受控设备启动的正反馈。如果反馈值在反馈延迟时间内未显示为True,则当前受控输出将显示反馈信号警报,并且LeadLagRuntime的输出将切换到下一个受控设备。此值设置为将禁用反馈警报功能。 |
Feedback Delay Time | 用于评估所控对象的反馈延迟时间(如果存在反馈输入的情况)。 |
Out A~J | StatusBoolean输出,该输出通常连接到带有DiscreteTotalizerExt 扩展功能的BooleanWritable点上。输出通常用于控制某种类型的负载。 |
Runtime A~J | 这些是RelTime输入,用于受控对象运行时间的输入。这些输入通常链接到受控对象的DiscreteTotalizerExt扩展功能的ElapsedActiveTime属性,该属性会测量相应的运行时间。 |
DiscreteTotalizerExt | 是控制点扩展,用于累记运行时间,即二进制或枚举值的状态变化次数。 |
2 实验过程
2.1 启动平台
首先在Niagara软件中启动平台。输入用户名和密码进入platform,并在Application Director界面,将站点启动。如下图2.1所示。
站点启动后,双击站点名并输入密码可以进入该站点。
2.2 添加组件
进入PumpControl文件夹的Wire Sheet界面,断开时间表与热水泵之间的连接。
在Palette界面的KitControl
组件库中找到HVAC
文件夹,如下图2.3所示。
将其中的LeadLagRutime添加到Wire Sheet界面,并命名为PumpLL
。
双击PumpLL组件设置其属性,将Max Runtime
属性数值改为5分钟
。表示每个热水泵的最长运行时间为5分钟。
将时间表PumpSchedule组件的Out端口连接到PumpLL模块上的In
,将PumpLL模块上的OutA连接到HotWaterPump_1的In16
引脚,将OutB连接到HotWaterPump_2的In16
引脚。
2.3 设置组件属性
打开HotWaterPump_1的属性面板,将Palette界面KitControl
组件库中的ControlPalette
–> Extensions
文件夹内的DiscreteTotalizerExt
组件,拖拽到HotWaterPump_1组件的设置面板。打开DiscreteTotalizerExt属性,将Change of State Count Transition
属性设置为To Action
。
对HotWaterPump_2也进行相同的扩展操作,添加扩展并将Change of State Count Transition属性设置为To Action。
回到Wire Sheet界面,右键单击HotWaterPump_1,选择Composite。在Composite Editor界面添加Elapsed Active Time
,并将其命名为RunTime
。
添加Reset Elapsed Active Time
组件,将其重命名为ResetRunTime
。
对HotWaterPump_2执行相同的操作,添加两个组件并重命名。
回到Wire Sheet界面,将HotWaterPump_1组件的RunTime输出引脚连接到PumpLL的RunTimeA
输入引脚。同样,将HotWaterPump_2组件的RunTime输出引脚连接到PumpLL的RunTimeB
输入引脚。如下图2.10所示。
从KitControl调色板的Logic
文件夹中查找组件,将OR
组件添加到Wire Sheet界面。
将该组件命名为PumpStatusOR
。
将OR的输出Out连接到PumpLL的Feedback输入。
打开PumpLL的属性页面,将Feedback设置成true
。
右键单击PumpLL,选择Actions
-> Clear Alarm Status
。
右键单击OR组件,选择Views
-> AX Slot Sheet
。在该界面找到InA,将其重命名为Pump1StatusIn
。
将InB设置为Pump2StatusIn
。
最终的效果如下图所示。
3 实验结果
本次实验主要实现了两部分内容,一个是以Tstat组件为中心的温度阈值比较部分;另一个是以Lead Lag Runtime组件为中心的时间表自动控制部分。
3.1 温度比较控制
阈值比较部分由Ramp组件产生斜坡函数数据,用来模拟室外的温度数值。利用Tstat组件将模拟的温度数据与设定的温度阈值进行比较,将比较结果输入到热水泵的In5引脚。该部分主要组件如下图3.1红框中所示。
当室外温度高于设定的温度时,Tstat组件输出为Null,即输出为空,不去控制热水泵;当室外温度低于设定温度时,Tstat组件输出为True,控制热水泵为开启状态。
3.2 正反馈控制
自动控制部分是由PumpSchedule日程表作为输入,由日程表的设定控制热水泵的启动状态。PumpSchedule将输出连接至Lead Lag Runtime组件,Lead Lag Runtime组件可以用来收集组件的运行时间,并且可以通过设置正反馈、调节反馈时间等方式,控制两个热水泵交替运行。该部分的主要组件如下图3.2红框中所示。
由于该部分的控制输出是输入到了In16引脚,其优先级比In5引脚低,所以只有当室外温度高于设定的阈值时,自动控制部分才能起作用。
自动控制部分的核心组件是Lead Lag Runtime组件,其In引脚用于输入控制指令;Runtime用来收集不同组件的运行时间;Out用来输出自动控制的结果。Feedback用来设置组件的正反馈调节,Feedback Delay用来设置反馈时间。
正反馈的意思是,如果热水泵A或B中有任意一个处于开启状态,那么只要这个已开启的水泵不被意外停止,它就会一直保持开启状态。可以在Lead Lag Runtime组件中开启反馈功能,如下图3.3所示。
当开启反馈功能后,可以用“逻辑或”组件收集当前的热水泵启动状态,并将逻辑运算结果输入到Lead Lag Runtime的Feedback引脚。只要有一个热水泵开启,逻辑运算结果就是true,此时Lead Lag Runtime会维持输出状态,也就是会让某个热水泵一直加热。只有当这个处于开启状态的热水泵被强制关闭,导致两个热水泵都处于关闭状态时,逻辑运算结果输出false,此时如果在反馈调节时间内没有任何热水泵开启,那么自动控制就会将启动指令输出到下一个热水泵,并显示警报。这是一种正反馈调节,一直让某个水泵工作,直到这个水泵被意外关闭。
3.3 水泵轮流工作
如果关闭反馈功能,只用反馈时间和警报功能,就可以实现让两个水泵在规定时间内轮流工作,平衡两水泵的运行时间。设置Lead Lag Runtime组件的属性,调节反馈时间和警告清除时间,如下图3.4所示,就可以让两个水泵在规定时间内轮流工作。
设置完成后,切断由“逻辑或”到Feedback的输出,Lead Lag Runtime
会首先在某个输出端口发出警告,并在另一个输出端口输出启动信号。如下图3.5所示。
经过反馈延时时间后,警告信号清除,输出信号转到下一个热水泵,并重新发出警告信号。如下图3.6所示。
这样,两个热水泵就会以反馈时间为间隔,循环开启并轮流工作。
4 实验过程中存在的问题及解决方案
平台启动失败问题及解决方案
在打开软件启动平台时,有可能会因为Niagara服务尚未运行而导致平台启动失败。如下图4.1所示。
解决办法是在任务管理器中找到Niagara服务并启动,如下图4.2所示。
5 实验总结
本次实验在原有的热水泵控制实验基础上,实现了对热水泵的温度阈值控制和时间表自动控制两种控制方式。温度阈值控制是利用Tstat组件,比较室外温度和设定的阈值温度,实现水泵的开关控制。时间表自动控制是利用时间表组件设置的计划开关时间,自动控制水泵的开闭。时间表配合Lead Lag Runtime组件,收集热水泵的运行时间,并通过设置反馈调节时间实现两水泵的轮流工作。Feedback属性可以设置水泵运行的正反馈调节,使某个水泵一直工作。
关于反馈功能的应用,目前我还不太熟悉,课后需要继续练习。
原文链接:https://blog.csdn.net/ZHJ123CSDN/article/details/106444822