или
С помощью функции проверки проекта можно выполнить несколько проверок проекта с помощью мастера. Мастер проверки проекта проведет вас через процесс проверки вашего проекта на соответствие общим правилам планирования и проектирования KNX.
Это автономный тест. ETS не подключается к шине.
Проверка проекта может быть вызвана тремя точками на панели инструментов.
Есть 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 >0x7FF и 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.
- Если свойство устройства энергопотребления доступно на устройствах, оно используется; в противном случае используется в среднем 10 мА
- Если текущее свойство устройства доступно для источников питания, оно используется; в противном случае используется в среднем 320 мА
- Количество источников питания и дросселей в сегментах 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. |
линия не является магистральной: для IP-маршрутизатора x.y.0 не должно существовать маршрутизатора x.0.0 |
Ошибка: Существует зональный соединитель, в то время как под ним также существует линейный соединитель типа 'IP' (KNX/IP-маршрутизатор). Это не разрешается |
| В line.Devices есть устройство с адресом == 0, device.IsCoupler и device.MaskVersion == 0x091a. | линия не является магистральной: для IP-маршрутизатора x.y.0 тип среды магистральной линии должен быть IP, если он существует | Ошибка: Линейный соединитель типа 'IP' (KNX/IP маршрутизатор) существует под основной линией, которая не имеет тип среды 'IP'. Тип среды главной линии должен быть установлен на 'IP', если ниже настроен KNX/IP-маршрутизатор. |
| В line.Devices есть устройство с адресом == 0, device.IsCoupler и device.MaskVersion == 0x091a. | line.Address != 0: для IP-маршрутизатора x.y.0 с y != 0 не должно существовать другого неIP-маршрутизатора x.y.0 | Ошибка: В пределах одной зоны смешиваются линейные соединители типа 'IP' (маршрутизаторы KNX/IP) и соединители, не относящиеся к IP. Это не разрешается |
| В line.Devices есть устройство с адресом == 0, device.IsCoupler и device.MaskVersion == 0x091a. | Для IP-маршрутизатора x.y.0 или IP-маршрутизатора x.0.0 тип среды магистральной линии должен быть IP, если он существует | Ошибка:Существует соединитель типа 'IP' (KNX/IP-маршрутизатор), а магистральная линия (0.0) не имеет носителя типа 'IP'. Тип среды магистральной линии должен быть установлен на 'IP', если настроен KNX/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. | Проверьте, нет ли линий IP под основной линией TP | Ошибка: Тип среды линии {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 | |
| Торговый.Номер.Длина > 20? | Ошибка: Длина номера превышает 20 символов. Это может вызвать проблемы с плагинами ETS3 |
Проверка информации о продукте
В некоторых случаях доступно обновление записи продукта KNX, содержащее улучшения или исправления ошибок для той же версии продукта. С помощью этой проверки можно распечатать список всех таких устройств. Список также содержит «отпечатки пальцев» устройств (они могут использоваться производителями, чтобы различать несколько вариантов устройства, даже если версия одна и та же).
Проверяет наличие проектов, импортированных из более ранних версий ETS
Что проверяют проверки для проектов, импортированных из более ранних версий ETS?
- Если все адреса устройств действительны
| Требования | Проверьте | Запись в отчете при неудачной проверке |
|---|---|---|
| device.Address != null и device.line != null | device.Address < 0 || device.Address > 255 | Ошибка: Адрес "{device.Address}" от "{device.DisplayName}" находится вне диапазона. |
| 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.Address}" от "{area.Name}" находится вне диапазона. | |
| Имеет ли проект область с таким же адресом? | Ошибка: Адрес "{area.Address}" не является уникальным. |
- Если диапазоны групп действительны
| Требования | Проверьте | Запись в отчете при неудачной проверке |
|---|---|---|
|
Адрес группы (адрес диапазона групп) действителен?
|
Ошибка: Адрес "{groupAddress.Address}" от "{groupAddress.DisplayName}" находится вне диапазона. или Адрес "{groupRange.Address}" от "{groupRange.DisplayName}" находится вне диапазона. |
|
| Есть ли у проекта группаАдрес/группа Диапазон с тем же адресом? |
Ошибка: Адрес "{groupAddress.Address}" не является уникальным. или Адрес "{groupRange.Address}" не является уникальным. |
|
| Трехуровневый стиль группы: Имеет ли группа адрес 0/0/0? | Ошибка: Групповой адрес 0/0/0 недействителен. |
- Устаревшее количество повторителей
Результат отображается в том же окне. Его можно сохранить, скопировать в буфер обмена и распечатать.
Все проверки можно отключить глобально, а отдельные этапы проверок можно отключить на соответствующей вкладке.