嘿我正在尝试编写一个程序,该程序从日历中获取星期几(baja:string)并根据动态设置的时间(baja:time)停止空中处理程序。它需要输出一个时间值(baja:time)。
如果是星期天,则在下午2点停止 如果星期一然后在晚上8点停止
答案 0 :(得分:1)
完成每周AHU调度的最简单方法是使用BooleanSchedule
或EnumSchedule
对象(取决于您的占用变量是枚举还是布尔值)。两者都可以在“计划”模块中找到。
这些计划(以及类似的NumericSchedule
和StringSchedule
对象)具有“计划程序”视图,允许您根据星期几自定义转换发生的时间。有关如何有效使用调度程序视图的更多信息,请在Niagara帮助中搜索“每周调度程序视图”。
通常,您使用EnumSchedule
或BooleanSchedule
的输出槽直接控制设备,但如果您确定需要baja:Time
,则可以操纵任何计划对象的输出得到它。
提取下一个“关闭”时间将使用新计划中的两个插槽:nextTime和nextValue。 nextTime
是一个baja:AbsTime
对象,它始终显示下一次状态更改的时间 - 新状态是“关闭”还是“打开”。 nextValue
给出了下一次转换后计划输出的值。
假设您使用的是Niagara 3.6.x或更高版本,您可以将nextTime插槽连接到NumericLatch
的输入(来自kitControl面板),Niagara会自动将baja:AbsTime
对象转换为数字时间戳。然后,您可以使用逻辑将nextValue
连接到锁存器的“时钟”插槽,这样它只会在下一次“关闭”时更新。当您的每周时间表处于“开启”状态时,这将使用下一个“关闭”时间的timstamp更新锁存器的输出
最后,要获得baja:Time
,您需要将数字时间戳转换回时间对象。同样,假设您使用的是3.6.x或更高版本,您可以使用Expr
(来自kitControl模块)组件来完成这项工作:
Expr
,然后打开它的插页。 baja:StatusNumeric
类型的插槽,并确保选中“摘要”和“更改时执行”标志。 baja:AbsTime
类型的插槽,并确保选中Summary和Readonly标记Expr
对象的属性表,并在Expr属性中键入“timestampIn.value为'absTimeOut'”(不带双引号)此时,您有一个自定义Expr
,可将数字输入转换为baja:AbsTime
。将它连接到您的闩锁输出,您的每周时间表的下一个预定活动时间为baja:AbsTime
。
baja:Time
和baja:AbsTime
不完全相同,但AbsTime
实现了baja:Time
中的所有功能。但是,如果您绝对需要baja:Time
,则可以向类型为baja:Time的Expr
组件添加另一个插槽,然后在表达式中添加第二行以将baja:AbsTime
转换为{{ 1}}(您无法直接转到baja:Time
,因为数字时间会存储日期和时间信息,并且无法正确转换为baja:Time
。在第一行的末尾加上逗号,而不是添加一行
baja:Time