Как узнать, может ли устройство KNX отправлять расширенные фреймы?
В настоящее время я работаю над добавлением автоматического обнаружения устройств KNX в составе драйверов Apache PLC4X KNX (в настоящее время работаю над версией Golang). Я добился большого прогресса в проверке устройств KNX, но только что столкнулся с ситуацией, когда устройство утверждает, что максимальное APDU составляет 55 байтов, но при чтении некоторой памяти оно отвечает только стандартными кадрами, которые могут нести только 12 байтов полезной нагрузки.
Я хотел бы иметь возможность заранее определить, может ли устройство отправлять более 12 байт. Но я немного не уверен, как это сделать. Дескриптор устройства - 0701, который указывает на устройство BIM M112. Имеет ли этот профиль устройств фиксированный размер APDU 15? У меня есть несколько устройств с одним и тем же профилем, и они не отвечают Max APDU (они возвращаются со счетом 0, что означает «недоступно» или «не разрешено»), поэтому я по умолчанию 15. Это конкретное устройство ABB, однако, отвечает с 55, но не отправляет более 12 байтов (что идентично максимальному APDU, равному 15).
Помощь очень ценится.
Крис
1 ответ
К сожалению, есть некоторые устаревшие устройства, которые в принципе поддерживают MaxApduLength> 15, но имеют ограничения на определенные службы, такие как службы памяти, ограниченные 12 байтами.
Нет никаких конкретных открытий, кроме проб и ошибок.
В любом случае вам придется реализовать возврат к 15 байтам, поскольку значение, указанное в PID_MAX_APDU_LENGTH, может быть совершенно неправильным (я видел такие устройства ...). Кроме того, между интерфейсом и целевым устройством могут быть соединители, дополнительно ограничивающие полезную длину APDU.