或者
使用项目检查功能,可以在向导的帮助下执行多项项目检查。 项目检查向导将指导您根据常见 KNX 规划和设计规则完成项目检查的过程。
这是一个离线测试。 ETS将不会连接到总线。
可以通过工具栏中的 3 个点启动项目检查。
在项目中实施了5个不同等级的检查。
- 设备检查
- 群组地址检查
- 拓扑图检查
- 产品信息检查
- 检查从以前版本的 ETS 导入的项目
设备检查
设备检查验证了什么?
- 如果设备至少有一个组对象被关联到一个组地址
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
| device.ActiveComObjectInstances.Count > 0 | 是否有活动组对象与组地址相关联? | 警告:设备 "{device.DisplayName}" 没有与组地址相关联的组对象。 |
- 如果所有设备标识符都与 ETS3 插件兼容
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
| device.Description.length > 80? | 错误:描述长度超过 80 个字符。 这可能会导致 ETS3 插件出现问题 | |
| device.Name.length > 50? | 错误:名称长度超过 50 个字符。 这可能会导致 ETS3 插件出现问题。 | |
| foreach comObject.Description.length > 80? | 错误:描述长度超过 80 个字符。 这可能会导致 ETS3 插件出现问题。 |
群组地址检查
组地址检查验证了什么?
- 如果使用了所有组地址(至少与一个组对象链接)
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
| 组地址与 PL 段相关联 | 对于设置了 connector.Acknowledge 标志的组地址的每个连接器,都要计算群组调用者个数。 为此,将保存父网段的域地址(connector.ParentDevice.Segment),如果有另一个连接器设置了应答标志,该值将增加。 如果数值大于 1,则创建报告条目。 | 对于组地址 "{groupAddress.DisplayName}",有太多与之相关联的设备,它们都会发送 LL-Ack 报文。 |
| groupAddress.ObjectSize != null | groupAddress.Connectors.Count < 2 | 只有一个组对象链接到组地址 "{groupAddress.DisplayName}" |
| groupAddress.ObjectSize != null | groupAddress.Connectors.Count < 1 | 没有组对象链接到组地址 "{groupAddress.DisplayName}" |
| groupAddress.ObjectSize == null | 没有组对象链接到组地址 "{groupAddress.DisplayName}" |
- 扩展组地址是否链接到插件设备
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
| GroupAddress.Address >0x7FFF 和 groupAddress.Connectors.Count > 0 和 groupAddress.Connector.ParentDevice.HasDownloadPlugin |
警告:设备对象 {connector.ParentComObjectInstance.Number} 与 16 位组地址 {groupAddress.AddressString} {groupAddress.Name}相关联。 |
- 所有组地址标识符是否与ETS3插件兼容
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
|
groupAddress.Description.length > 80? groupRange.Description.length > 80? |
错误:描述长度超过 80 个字符。 这可能会导致 ETS3 插件出现问题 | |
|
groupAddress.Name.length > 50? groupRange.Name.length > 50? |
错误:名称长度超过 50 个字符。 这可能会导致 ETS3 插件出现问题。 |
拓补检查
拓扑检查验证了什么?
- 比较设备电流要求和TP电源提供的电流
- 如果设备上的设备属性"功耗"可用,则使用该属性;否则,使用10mA的平均电流
- 如果设备属性"电流"在电源上可用,则使用它;否则,使用平均的320mA电流
- TP段中的电源和扼流圈数量
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
| line.MainSegment.IsTpSegment 和 line.Devices.Any() |
计算出每条线路的电源数量。 如果 powerSupplyCount 等于 0,则会创建一条信息 |
信息:线路“{line.DisplayName}”未规划供电 |
| line.MainSegment.IsTpSegment 和 line.Devices.Any() | 计算出每条线路的电源数量。 如果 powerSupplyCount > 2,则会生成一条错误信息。 | 错误:线路 "{line.DisplayName}" 的电源超过 2 个 |
| line.MainSegment.IsTpSegment 和 line.Devices.Any() | 或计算每条线路的电源和扼流圈数量。 如果 powerSupplyCount != chokeCount,则会生成一条警告信息。 | 警告:线路“{line.DisplayName}" 的扼流圈数量与电源数量不符。 |
- 主干区是否缺少耦合器
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
| 多条拥有TP主干段和设备的线路 |
如果 line.MainSegment 中没有耦合器,则会显示错误信息 |
错误:线路 "{line.DisplayName}" 没有线路耦合器 |
| 多个 !area.MainLine.MainSegment.IsIpSegment和 area.MainLine.Devices.Any() | 如果 area.MainLine.MainSegment 没有耦合器存在 ,则显示错误信息 | 错误:区域 "{area.DisplayName}" 没有区域耦合器。 |
| line.MainSegment.IsPlSegment || line.MainSegment.IsRfSegment |
line.MainSegment.IsPlSegment:检查是否存在掩码版本为 0x1900 的设备,如果不存在,将显示错误信息。 line.MainSegment.IsRfSegment:检查是否存在掩码版本为 0x2920 的设备。 否则将显示错误信息。 |
错误:如果 line.IsMainLine ”{area.DisplayName}" 区域的主线 {line.DisplayName}中没有介质耦合器。 否则: 线路 "{line.DisplayName}" 没有介质耦合器。 |
- 子段中是否缺少段耦合器
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
| 如果存在 TP 中继器(无段耦合器功能) | 警告:线路 "{segment.DisplayName}" 通过中继器耦合,其没有过滤功能。 考虑用段耦合器取代它,以降低总线数据量。 | |
| 如果存在传统介质耦合器(无段耦合器功能) | 警告:线路 "{segment.DisplayName}" 通过介质耦合器耦合,该耦合器可望作为主线或主干线上的耦合器使用,且不能被用于分段耦合。 检查设备文档。 |
|
| 未检测到耦合器 | 错误:线路 "{segment.DisplayName}" 没有段耦合器。 |
- 是否主干线应该是IP
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
|
如果存在 line.Address == 0 && Line.ParentArea.Address == 0 的线路,则会进行检查,否则会生成错误信息 |
警告:没有主干线路。 建议创建一条主干线路,并将其设置为 "IP"。 |
|
|
如果存在主干线路,它还会检查地址 = 0 且 maskVersion = 0x091a 的设备是否存在。 存在一个 ApplicationProgramIpConfig = ApplicationProgramIpConfig.Custom 的耦合器,以及另一个 ApplicationProgramIpConfig != ApplicationProgramIpConfig.Custom 的耦合器。 如果是,则会生成一条错误信息。 |
警告:虽然项目中只存在具有自定义管理功能的 IP 路由器,但主干线路不属于 "IP "类型。 建议将主干线路设置为 "IP"。 |
- 是否满足存在KNX/IP路由器的拓扑的要求:此检查仅适用于现有的KNX/IP路由器。
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
| Line.Devices 中有一个地址 = 0 、device.IsCoupler 和 device.MaskVersion = 0x091a 的设备。 |
线路不是主线:对于 x.y.0 IP 路由器,必须不存在 x.0.0 路由器 |
错误:存在一个区域耦合器,而该区域耦合器下方也存在一个 "IP "类型的线路耦合器(KNX/IP 路由器)。 这是不允许的 |
| Line.Devices 中有一个地址 = 0 、device.IsCoupler 和 device.MaskVersion = 0x091a 的设备。 | 线路不是主线路:对于 x.y.0 IP 路由器,如果存在此 IP 路由器,主线的介质类型应该是 IP。 | 错误:在介质类型不是 "IP "的主线路下方有一个 "IP " 类型的线路耦合器(KNX/IP 路由器)。 如果下面配置了 KNX/IP 路由器,主线路的介质类型必须设置为 "IP"。 |
| Line.Devices 中有一个地址 = 0 、device.IsCoupler 和 device.MaskVersion = 0x091a 的设备。 | line.Address != 0:对于 y != 0 的 x.y.0 IP 路由器,必须不存在其它非 IP 路由器 x.y.0 | 错误: 在同一区域内,"IP" 类型的线路耦合器(KNX/IP 路由器)和非 IP 耦合器混用。 这是不允许的 |
| Line.Devices 中有一个地址 = 0 、device.IsCoupler 和 device.MaskVersion = 0x091a 的设备。 | 对于 x.y.0 IP 路由器或 x.0.0 IP 路由器,主干线路的介质类型应为 IP(如果存在) | 错误:存在 "IP"(KNX/IP 路由器)类型的耦合器,而主干线路 (0.0)介质类型不是 "IP"。 如果配置了 KNX/IP 路由器,主干线路的介质类型必须设置为 "IP"。 |
| Line.Devices 中有一个地址 = 0 、device.IsCoupler 和 device.MaskVersion = 0x091a 的设备。 | 如果 installation.BackboneLine.MainSegment.IsTpSegment 和存在 line.MainSegment.IsIpSegment,则会生成错误信息 | 错误:线路 {line.DisplayName} 的介质类型必须不是 IP,因为主干线路是 TP 介质类型 |
| Line.Devices 中有一个地址 = 0 、device.IsCoupler 和 device.MaskVersion = 0x091a 的设备。 | 检查 TP 主线路下是否有 IP 线路 | 错误:线路 {0} 的介质类型必须不是 IP,因为主线路的介质类型是 TP。 |
- 是否所有拓扑标识符都与ETS3插件兼容
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
| line.Name.length > 50? | 错误:名称长度超过 50 个字符。 这可能会导致 ETS3 插件出现问题。 | |
| area.Name.length > 50? | 错误:名称长度超过 50 个字符。 这可能会导致 ETS3 插件出现问题。 | |
| buildingPart.Name.length > 50? | 错误:名称长度超过 50 个字符。 这可能会导致 ETS3 插件出现问题。 | |
| trade.Name.length > 50? | 错误:名称长度超过 50 个字符。 这可能会导致 ETS3 插件出现问题。 | |
| line.Description.length > 80? | 错误:描述长度超过 80 个字符。 这可能会导致 ETS3 插件出现问题。 | |
| area.Description.length > 80? | 错误:描述长度超过 80 个字符。 这可能会导致 ETS3 插件出现问题。 | |
| buildingPart.Description.length > 80? | 错误:描述长度超过 80 个字符。 这可能会导致 ETS3 插件出现问题。 | |
| trade.Description.length > 80? | 错误:描述长度超过 80 个字符。 这可能会导致 ETS3 插件出现问题。 | |
| buildingPart.Number.Length > 20? | 错误:数字长度大于 20 个字符。 这可能会导致 ETS3 插件出现问题 | |
| trade.Number.Length > 20? | 错误:数字长度大于 20 个字符。 这可能会导致 ETS3 插件出现问题 |
产品信息检查
在某些情况下,会出现KNX产品的更新,其包含相同产品版本的改进或BUG修订。 借助此检查,可以打印出显示所有此类设备的列表。 该列表还包含设备的“指纹”(制造商可以使用它们来区分设备的不同形态,即使版本相同)。
检查从以前版本的 ETS 导入的项目
对从早期版本ETS导入的项目的检查验证了什么?
- 如果所有设备地址都有效
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
| device.Address != null 且 device.line != null | device.Address < 0 || device.Address > 255 | 错误:{device.DisplayName}" 的地址 "{device.Address}" 超出范围。 |
| device.Address != null 且 device.line != null | device.Address 在线路中是唯一的 | 错误:地址 "{device.Address}" 不唯一。 |
| device.Address != null 且 device.line != null | !device.Hardware.HasIndividualAddress | 错误:设备 "{device.DisplayName}" 必须没有地址,但其有地址 "{device.Address}" |
| device.Address != null 且 device.line != null | device.Address == 0 && !device.IsCoupler | 错误:设备地址 0 专用于耦合器 |
| device.Address == null || device.Line == null | device.Hardware.HasIndividualAddress | 错误:"{device.DisplayName}" 没有地址 |
- 是否区域和线的地址都有效
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
| area.Address > 15 | 错误:“{area.Name}" 的地址 "{area.Address}" 超出范围。 | |
| 该项目是否有相同地址的区域? | 错误:地址 "{area.Address}" 不唯一 |
- 是否组范围有效
| 先决条件 | 检查 | 如果检查失败,则报告此项目 |
|---|---|---|
|
组地址(组范围地址)是否有效?
|
错误:”{groupAddress.DisplayName}" 的地址 "{groupAddress.Address}" 超出范围。 或 “{groupRange.DisplayName}" 的地址 "{groupRange.Address}" 超出范围。 |
|
| 项目是否有相同地址的 groupAddress / group Range? |
错误:地址 "{groupAddress.Address}" 不唯一。 或 ”{groupRange.Address}" 地址并不唯一。 |
|
| 三级分组样式:组地址是否为 0/0/0? | 错误:组地址 0/0/0 无效。 |
- 传统中继器计数
结果会显示在同一个窗口,并可以储存,复制及打印。
可以全局性禁用所有检查,并且可以在相应的选项页中禁用检查的各个步骤。