Как скриптом или состоянием регистра вкл/откл. симуляцию соединения?

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 ....

и таблица подстановок реальный регистр – симуляция. 
Функция смотрит на флаг симуляции – и либо копирует данные из реального соединения в симцляцию, либо нет. 
Это также полезно, когда нужно быстро “отрезать” объект управления при отладке, когда обнаружена ошибка в алгоритме, флаг симуляции перестает обновлять “реальные” выходы и можно спокойно разобраться что происходит в программе. 

#1

Пожалуйста войдите или зарегистрируйтесь чтобы добавить ответ