30 Apr Как скриптом или состоянием регистра вкл/откл. симуляцию соединения?
Здравствуйте. Есть два соединения: одно – для опроса датчика по Модбасу, второе – внутреннее. Во внутреннем, например есть регистр D0. Если в этом регистре 1, надо, чтобы другое соединение, которое принимает данные по Модбасу, переходило в состояние симуляции устройства, и, соответственно – наоборот, при 0 – возвращалось в нормальный режим. Можно ли (и как) это сделать LUA-скриптом, или, на худой конец – свойствами регистров? Спасибо.
1 answer
Добрый день, именно так как Вы хотите – нет. Но этого функционала можно тем не менее добиться . В сложных проектах, где нужно “безопасно” отладить алгоритмы я например поступаю след. образом:
создаю копию “реального” соединения на внутр. регистрах. проект – визуализация, алгоритмы и т.п. привязаны к копии, или симуляции.
в скриптах заводится функция
mapping(simFlag, mappingTable) if (not simFlag) for src, target in pairs(mappingTable) do WriteReg(target, src) end ....
и таблица подстановок реальный регистр – симуляция.
Функция смотрит на флаг симуляции – и либо копирует данные из реального соединения в симцляцию, либо нет.
Это также полезно, когда нужно быстро “отрезать” объект управления при отладке, когда обнаружена ошибка в алгоритме, флаг симуляции перестает обновлять “реальные” выходы и можно спокойно разобраться что происходит в программе.