Судя по монитору modbus-эмулятора, запрос идёт только на один койл. И опять же, я бы понял, если бы запросы шли, но валились в отлуп (рост 2-го, 3-го или 4-го регистра диагностики связи). Но они тоже не растут.
Вид для печати
Совершенно верно, это нулевой бит 322-го регистра. Именно он в контроллере и должен отвечать за открытие этого окна. Биты 1, 2 и 3 этого же регистра должны были отвечать за открытие других окон.
Вот объявление этой переменной в CodeSys:
CV_WordOfBits_MBUSout AT %QD161 : DWORD; (* WordOfBits *)
Так вам надо сначала проверить, что этот бит приходит (или не приходит) в панель, без всяких окон. Может есть смещение адресов регистров или бит.
Проще всего поставить несколько целочисленных дисплеев с адресами 321, 322 и 323 и проверить число, в соответствии биту.
322 адрес число 1 соответствует 0 биту.
Да-да, ещё он может оказаться не 0вым, а 7мым, например, из-за особенностей модбас...
Посоветую поступить так:
1. сделать документ эксель и переписать туда все действующие регистры с ПЛК (позволит не ошибаясь и наглядно знать что используется в проекте, где есть разрывы). Заставить (временно) все эти регистры "шевелиться - менять значения", привязать прибавлялки.
2. сделать в СП3*** темповый пустой проект, с одним главным окном (прям шевелящимся горохом). Вывести туда все эти регистры числами. Станет нагляднее и виднее что шевелится, что перестает. Потом будете усложнять окна, как разберетесь в причинах
Скорее всего это должно помочь разнести проблему на части, но если нет:
Далее пробовать используя Modbus Pool/ Modbus Slave заменяя то ПЛК, то панель - искать виновное звено.
Там у Wago есть свои правила по обращению с памятью. Попробуйте поискать разрывы и если они есть, то заполните/объявите
Ещё можно убрать запросы к коилам, и переделать на запросы к битам регистра. СП это вроде может делать без проблем. Или я уже с чем то другим путаю...
С адресацией всё в порядке. В контроллере задействованы регистры с 256 по 365 (без разрывов). И пока всё крутилось на одном экране, никаких проблем не было.
В данном случае я специально для исследования проблемы оставил в панели только один запрос, не меняя программу контроллера.
Это было сделано изначально. С момента начала проекта.
Собственно, пока не понадобилось делать окна, всё на одном экране замечательно крутилось. Вот примерный вид экрана.
Вложение 87083
Я использовал mdbus32 вместо контроллера, и как уже писал, проблема при этом уходит. Вместо панели я использую скаду, которая тоже всё прекрасно читает и пишет.
Но почему панель перестаёт генерировать modbus-запросы, когда открывается или закрывается окно?