Зачастую нужно, чтоб была возможность записи уставок с верхнего уровня по протолу modbus tcp.
3й функцией читать, 6/16 записывать.
Но тут есть такой подводный камень:
При выключении контроллера, все эти уставки обнулятся, так как они хранятся в области входов %I.
Как сделать, чтоб они сохраняли своё значение?
Можно конечно придумать костыль, добавить специальный флаг для записи и тогда читать уставку придётся читать из одного места, а записывать в другое.
Как правило системы верхнего уровня очень неповоротливые и не имеют возможности для таких костылей или просто не хотят, по крайней мере у нас обычно такие попадаются.
Так же у контроллеров ОВЕН зачем то сделано так, что нельзя писать из программы значения в область входов %I, что могло бы решить эту проблему.
Пробовал такую конструкцию:
Код:
VAR_GLOBAL RETAIN
aa AT %IW0 : WORD;
END_VAR
Но она не работает, переменная "аа" не сохраняет значение всё равно.
Были так же безумные идеи при старте контроллера писать по modbus tcp в самого себя сохранённые значения уставок, но это уже какое то жёсткое порно!
И даже этому не суждено быть, так как контроллер почему то на запросы по порту начинает отвечать не сразу, как стартует программа, а спустя какое то сферическое время, после старта программы, секунд 15-20.
Как быть то?
Работаю с СПК207-03-CS-WEB
КДС 3.5 SP5 Patch 5