Я бы тогда взял бы библиотеку OCL и создал бы свой FB, который отслеживал бы изменения и решал - надо ли записать или нет.
И закрутил это реально в массив FB в цикл. Ща, под ночь плохо поясняю, буду писать криво.
1. Массив FB - чтобы окучивать их в цикле последовательно и, если FB нам говорит, что значение изменилось - то тогда его и писать в OCL.
Пусть бы FB имел внутри Текущее и Предыдущее значения. Если они не равны - выдавал некий флаг.
И на входе у него тоже был бы флаг типа Reset, который скидывал бы выходной флаг.
Смысл в том, что Modbus - медленная хреновина. И если все FB сразу обновятся - он этого не отловит.
Поэтому FB, как обновился, ставит какой-то флаг.
А наш цикл идёт по каждому FB и выдаёт его в OCL для записи в Modbus и только потом этот флаг скидывает.
2. Чтобы в коде красиво обращаться к массиву FB - забахать для его индексов константы. Чтобы было типа arrValues[PRESSURE_AIR_OUTDOOR].Value, а не arrValues[322].Value





Ответить с цитированием
