Привет коллеги!
Хочу вставить панель между ПР200 и шлюзом к облаку, дабы иметь возможность и на панели мониторить и управлять. Как это правильно реализовать?
Вид для печати
Привет коллеги!
Хочу вставить панель между ПР200 и шлюзом к облаку, дабы иметь возможность и на панели мониторить и управлять. Как это правильно реализовать?
Здравствуйте. Подскажите, пожалуйста: каким образом наиболее правильно вызвать макрос при изменении значения какого-либо тега?
Панель работает в режиме slave. Значения тегов, на изменение которых нужно реагировать, меняет подключенное устройство.
В панели есть слово управления, биты которого должны сбрасываться после прочтения их контроллером. Для этого хочу сделать отдельный тег в панели, по изменению битов которого будет происходить сброс соответствующих битов слова управления (т.к. если перезаписывать само слово управления целиком, то биты, которые были установлены между последним чтением и записью могут перезатереться нулями).
Видел объект "функциональная область", в котором можно вызывать макрос по изменению определённого бита (как раз то, что нужно), но на каждый бит создавать отдельную глобальную функциональную область наверное слишком избыточно. Хотел сделать общий макрос, который бы вызывался по изменению тега целиком и в нём уже отслеживать изменения. Но т.к. в самом макросе нельзя хранить значения между вызовами, то наверное ещё запутаннее будет.
Возможно это всё как-то проще делается, буду рад, если подскажете другой способ реализации.
Не очень понял, зачем нужна промежуточная переменная.
Контроллер не может сам сбросить конкретный бит в слове управления?
Можно в макросе использовать статические переменные (с ключевым словом static) - они сохраняют свои значения между вызовами.Цитата:
Но т.к. в самом макросе нельзя хранить значения между вызовами
Или можно использовать для хранения этих значений регистры панели.
Наверное может. Просто через промежуточный регистр показалось удобнее - слать биты для сброса вместе со всеми остальными данными в одном из регистров. (Пока только начинаю знакомится со всем этим оборудованием.)
Правильно ли я понимаю, что для того чтобы так сделать нужно разместить слово управления (PSW) в части регистров, на которую накладывается область (PSB). (PSB же накладывается на PSW?) и 5-ой функцией Modbus сбрасывать PSB?
PSB и PSW не накладываются.
Регистры PSW не поддерживают запись отдельных битов через функцию 5 - контроллер должен на своей стороне сбросить бит в слове управления и перезаписать его в панель целиком (функцией 6 или 16).
Если так делать, то биты, которые выставились во временном промежутке "после последнего запроса на чтение и до перезаписи тега целиком" не прочитаются контроллером и перезапишутся в нули. Как следствие: контроллер не реагирует на нажатие кнопок, к которым они привязаны.
Когда организовывал связь через конфигуратор (Codesys 2.3) обмен данными был очень медленный и это было очень заметно. Сейчас сделал на Modbus.lib и всё летает, скорее всего теперь нормально будет.
Добрый день.
Подскажите, пожалуйста, можно ли скрыть глобальные функциональные области и макросы на экранах конфигуратора? Очень сильно захламляют картинку и мешают работать.