Посмотрел ваше видео: "Канал CALL.ChGroupReq для расширенной диагностики обмена по MODBUS TCP".
Попробовал сделать тоже самое, но не получается как в примере, данные в аргументах канала CALL.ChGroupReq не корректны.
Как провести диагностику переменной @e_TCP_ModBus двух и более соединений? В справочной системе мало информации.
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
В релизе 6.10.2, механизм @e_TCP_ModBus изменился и теперь настройка Параметр=65535 не поддерживается. e_TCP_ModBus работает с одним устройством, в Параметре системной переменной необходимо указывать номер устройства, а не 65535. Номер устройства в реальном времени «сидит» в 94м атрибуте С0, его можно менять в реальном времени, диагностируя разные устройства. В атрибут С5 пишется число 9 - это номер протокола (модбас )
Можно привязать к этой переменной канал CALL аналогично как показано в видео, но только тут одно устройство, в отличие от видео, поэтому всего 12 аргументов. Аргументы: Первые 4 - общая инфа. 0-общее число устройств Модбас 1-общее число устройств, которому не удается подключиться 2-общее число устройств с ошибками обмена 3-общее число устройств с ошибками обмена, выявленных в результате ответа устройства. Следующие 4 не используются. Последние 4 - по юниту. 8-статус соединения 9-время последнего обмена 10-код ошибки WinSoc 11-время последней попытки подключения к устройству.
Создаются и работают аргументы по логике, описанной в видео (т.е. 10й и 12й формат DATE_N_TIME, остальные – UINT). Получаемые значения расшифровываются как показано в видео. 1-При этом 254 атрибут RST показывает краткий статус обмена.
Если привязку осуществлять к числовому каналу, в реальном значении этого канала индицируется статус обмена в числовом виде (аналогично значению 9го аргумента при привязке к CALL). В атрибут 80й - CODE пишется адрес и порт. В атрибут 81 – COMMNT пишется текущий статус в текстовом виде, описание и номер ошибки.
Posted by ALcron (Участник № / Member № 1859) on :
Спасибо.
Тогда второй вопрос. Как формируются номера устройств в ModbusTCP. Первое устройство (номер 1, свой IP). Если выставить 2 (второе устройств, другой IP), диагностики нет, т.е. менять С0.
В узле проекта формируется файл tcp_modbus с адресами. Если выставить эти номера (UNIT), то диагностика идет. Первый 1, следующий 257, следующий 513. Причем присваивается по уменьшению IP адреса.
Верно ли будет говорить, что вот этот номер присваивается к каждому уникальному IP в диапазоне 256 как бы подключенных устройств?
Posted by ALcron (Участник № / Member № 1859) on :
Дополнение к предыдущему.
При этом адрес выставляю в атрибуте L0, т.к. C0 8 битный (0-255).
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
Номера устройств формируются со стороны Modbus-устройств. Каким образом они были заданы Trace Mode не важно.
Однако, я ряде случаев, при наличии нескольких однотипных устройств их нумерация в сети modbus не изменяется и остается одинаковой на всех устройствах (заводские настройки).
По этому, в рамках проекта, TM изменяет адресацию устройства modbus.
Вы можете использовать эти номера (из файла tcp_modbus) или на опрашиваемых устройствах задать уникальные номера устройств.