Свяжитесь, пожалуйста, со мной по телеграм (см. в подписи) и продемонстрируйте вашу проблему по AnyDesk.
Добрый вечер. Вопрос может банальный, но всё же: есть ПЛК и две ПР-ки. с одной плк читает переменную, в другую её пишет. Как писать переменную во вторую ПР только по её изменению? Какой триггер выбрать? Или сохранять в третьей локальной переменной состояние, сравнивать входящую и, если изменилась, то писать её с триггером "приложение"? и как это кстати делается с таким триггером?
Сделать можно как угодно, достаточно сравнить новую и записанную переменную, если изменилась, то выставить флаг на 1 цикл или 100-300 мс.
Только сегодня выложил ФБ для управления из 2 мест (сравнения переменных), вам надо сравнить одну переменную, значит ФБ можно сократить вдвое и прикрутить булевый флаг и триггер (таймер ТР), который включит триггер записи.
https://owen.ru/forum/showthread.php...st456513#11223
выставить флаг - это с выбором триггера "передний фронт, получается". Как и в каких случаях писать переменную с триггером "приложение"?
Дополнение: и еще, если я прям из программы пишу значение в переменную напрямую, а слейва два - как объявлять тогда переменную, как правильно выбрать слейв? вот написал я "iSomeVar AT %QW0 : INT; - и как ПЛК догадается, в какой ПР она, если и в обоих слейвах есть такой канал?
Вложение 81776 вот так я могу писать переменную в ПР по изменению? просто она так не доходит до ПР... Вложение 81777Вложение 81778
Если вы записываете ПЛК мастером в два слейва, у слейвов разные адреса, значит надо сделать 2 слейва.
В двух слейвах сделайте два разных бита для записи по переднему фронту. Какой бит включите тот слейв и запишите.
ФБ вы просто скопировали половину ( и то не правильно), а бит записи с триггером не добавили.
Короче для начала сделайте просто запись по фронту бита. Проверьте, что она работает, записав бит руками.
Потом делайте запись по изменению, с выставлением бита записи.
как писать по переднему фронту булевой команды, я разобрался, благодарю, всё получилось и пишется. Очень хочется понять, как работает триггер "приложение", и как писать переменные в слейвах с таким триггером в обоих вариантах: либо привязывая переменную из программы к входу, либо объявляя адрес хранения переменной с помощью "AT %..." - и в этом варианте актуален вопрос с двумя слейвами с одинаковыми именами каналов, как правильно выбрать нужный слейв