TOC

  1. Intro
  2. TagModel
  3. Structure
    1. 概述
    2. 容器
    3. 站点
    4. 设备
      1. 点的分类
      2. 点 最小值/最大值
      3. 点游标
      4. 点的写入
      5. Point His
    5. 天气
      1. 天气点
      2. 天气示例
      3. 天气vs外部标签
  4. TimeZones
  5. Units
  6. Grids
  7. Filters
  8. Zinc
  9. Json
  10. Trio
  11. Csv
  12. Rest
  13. Ops
  14. Auth
  15. VFDs
  16. Networks
  17. Energy
  18. Zones
  19. AHUs
  20. VAVs
  21. UnitaryEquips
  22. Chillers
  23. Boilers
  24. Tanks
  25. ElecPanels
  26. Lighting
  27. Builds
  28. Bacnet
  29. ChangeLog
  30. License

Structure

概述

Haystack模型的主要结构是基于三个实体的层次结构:

此三级层次结构定义了跨项目使用的主实体。其他核心实体包括:

下图说明了这个基本的三级层次结构以及它们如何交叉引用:

siteEquipPoint

容器

Haystack本身不是基于“树结构”,但是可以使用[reference tags]`TagModel#tagKinds`.来定义树结构。由于给定的实体可以拥有多个引用标签,因此可以很容易地定义多维树结构。

核心站点/装备/点模型用作主树结构和基本框架。然而,替代结构对于分析同样重要:

由于域的复杂性,您不能假设任何一个树结构都可用于完整地描述建筑物及其设备。最好把Haystack项目看作一个数据图,其中实体使用引用标签定义了多个关系。

站点

站点实体使用 site 标签对单个设施进行建模。在对任何楼宇进行建模时,一个很好的经验法则是将其街道地址作为自己的站点。 例如,在对校园进行建模时,更好的方式是把每个建筑物作为一个站点,而不是把整个校园作为一个站点。

站点使用的核心标签:

以下是一个使用地理位置标签充分展示一个站点实体的示例:

id: @whitehouse
dis: "White House"
site
area: 55000ft²
tz: "New_York"
weatherRef: @weather.washington
geoAddr: "1600 Pennsylvania Avenue NW, Washington, DC"
geoStreet: "1600 Pennsylvania Ave NW"
geoCity: "Washington D.C."
geoCountry: "US"
geoPostalCode: "20500"
geoCoord: C(38.898, -77.037)

设备

设备使用 equip 标签进行建模。设备通常是一个物理资产,如AHU,锅炉或冷水机。然而,设备也可以用于对诸如冷水机组之类的进行逻辑分组建模。

所有设备都应使用 siteRef 标签在单个站点内建立关联。反过来,设备通常会包含使用 equipRef 标签与设备相关联的点。

以下是AHU设备实体的示例:

id: @whitehouse.ahu3
dis: "White House AHU-3"
equip
siteRef: @whitehouse
ahu

equipRef 标签可以根据需要用于设备实体,以此来模拟嵌套设备和容器关系。

点通常是一个数字或模拟传感器或执行器实体(有时称为*hard points*)。点也可以表示配置值,例如设定值或计划日志(有时称为*soft points*)。点实体用`point`标签标记。

所有点进一步分类为*sensors*,*commands*或*setpoints*,使用以下三个标签之一:

所有的点必须使用 siteRef 标签与站点相关联, 使用 equipRef 标签与特定的设备相关联。如果某一点没有物理设备关系,则使用虚拟装备实体对逻辑分组进行建模。

按照约定,使用多个标签来模拟一个点的作用:

以下是AHU排气温度输入点的示例:

id: @whitehouse.ahu3.dat
dis: "White House AHU-3 DischargeAirTemp"
point
siteRef: @whitehouse
equipRef: @whitehouse.ahu3
discharge
air
temp
sensor
kind: "Number"
unit: "°F"

点的分类

点使用`kind`标签,可以分为Bool,Number或Str三类:

点 最小值/最大值

以下标签可用于定义点的最小值或最大值:

当这些标签应用于某个 sensor 点时,它们会模拟传感器可读取值和报告值的范围。超出这些范围的值可能表示传感器出现故障。

当这些标签应用于 cmdsp,在对点执行指令时,它们规范有效的用户输入范围。

点游标

术语 cur 表示点的当前实时值的同步。实时通常意味着每过几秒钟就会更新一次。如果一个点支持当前或现场的实时值,那么它应该用 cur 标签标记。

以下标签用于表示当前值和状态:

点的写入

可写点是对输出或设定值进行建模并可被指令控制的点。可写点在BACnet 16级优先级数组上建模,作为有效的第17级,而非默认值。可写点可以由 pointWrite 操作发送指令,并使用 writable 标签进行标记。

以下级别有特殊的行为:

当许多不同的控制应用程序可能争夺给定点的控制权时,优先级数组提供了争用解决方案。诸如时间表这样的的低级应用程序通常控制级别为14,15或16。那么用户可以在级别8上覆写。但是可以使用更高级别(如2到7)来胜过用户覆写(例如一个需要更高级别需求响应的能源事务)。

要写入的实际值通过从第1级开始解析,并且逐级下调至默认值以找到第一个非空值。在所有级别都为空的情况下,总写入输出为空(这又可能是另一个系统的自动/空值)。无论何时将空值写入优先级,我们认为该级别已设置为自动或释放(这允许下一个最高级别对输出进行控制)。

以下标签用于建模点的可写状态:

Point His

如果一个点被标记为 historized ,这意味着我们在一个时间范围内可以对点的值进行时间序列抽样。历史点有时称为 logged 点或 trended 点。历史点应该用标签 his 标记。

历史点可以使用[hisRead]`Ops#hisRead`和[hisWrite]`Ops#hisWrite`操作通过HTTP读取/写入其时间序列数据

如果一个点实现`his`标签,那么它也应该实现这些标签:

目前的历史状态建模为:

天气

建筑作业和能源使用受到天气条件的严重影响。这使得天气数据的建模成为了项目Haystack的一个关键功能。由于气象站和测量通常在多个建筑物之间共享,因此天气不会被建模为[site]`#site`的一部分。相反,`weather` 标签建立了一个独立的顶级实体,代表气象站或天气观测的逻辑分组。

所有天气实体都应该定义一个 tz 标签。他们还可以选择性地定义地理位置标记,如 geoCountrygeoCitygeoCoord

天气点

天气数据遵循与[points]`#point`相同的约定,但是为了表明它们与天气实体相关联,而不是一个站点实体,我们使用特殊标记 weatherPoint 来指示天气相关点。

以下天气点由标准库定义:

天气点与使用 weatherRef 标签其天气实体相关联。

天气示例

以下是气象站及其相关点的示例:

id: @weather.washington
dis: "Weather in Washington, DC"
weather
geoCoord: C(38.895, -77.036)

id: @weather.washington.temp
dis: "Weather in Washing, DC - Temp"
weatherRef: @weather.washington
weatherPoint
point
temp
sensor
kind: "Number"
unit: "°F"

id: @weather.washington.humidity
dis: "Weather in Washing, DC - Humidity"
weatherRef: @weather.washington
weatherPoint
point
humidity
sensor
kind: "Number"
unit: "%RH"

天气vs外部标签

我们经常模拟本地的气象传感器和官方气象站的数据。本地传感器通常用于HVAC控制序列。 但是我们可能会使用官方天气数据来检查本地传感器校准或基准能量归一化。在Haystack中,气象站数据用 weatherPoint 标注,而本地站点传感器使用 outside 标注: