2.3 Контроллер 750-819 (LON) Q: Как инициализировать входные SNVT-переменные? A [А. Быков]: К сожалению, непосредственной инициализации (например, как в Nodebuilder'е) нет, но возможно несколько вариантов. 2. Создаем в приложении на Codesys функциональный блок, который будет формировать другую переменную на основе входной сетевой. Например, так: VAR_INPUT SNVT_in: INT; Default_value: INT; END_VAR VAR_OUTPUT SNVT_out: INT; END_VAR VAR SNVT_previous: INT; Start: BOOL; END_VAR ---------------------------- IF NOT Start THEN SNVT_out := Default_value; Start := TRUE; END_IF IF SNVT_in <> SNVT_previous THEN SNVT_out := SNVT_in; SNVT_previous := SNVT_in; END_IF Обратите внимание, что при этом способе значение SNVT останется нулевым. Т.е., чтобы обработать приходящее потом из сети LON нулевое значение, неплохо бы, например, использовать в плагине time out value (см. ниже).
Q: Как сохранить входную SNVT в энергонезависимой памяти? A [А. Быков]: Возможны два варианта: 1. Использовать в проекте LON-овской сети template контроллера 819, имя которого оканчивается на "02", там 5 последних переменных сохраняются в EEPROM Neuron chip'а (по умолчанию имеют имена "nci"). 2. Создать функциональный блок (подобный приведенному выше блоку для инициализации), который будет сохранять значение переменной в RETAIN.
Q: Как сделать, чтобы при принятии на одну входную SNVT переменную последовательно двух и более одинаковых значений из сети, в контроллере происходило действие при каждом "NV update", а не только при первом? Например, несколько раз поступает команда SCENE RECALL 2 для SNVT_scene. A [А. Быков]: В плагине Toplon-prio в разделе NVI есть параметр TimeOut(s), а BOOL_OUT/VAR_OUT галка "use timeout" и значение "timeout value". Т.е. при задействовании этих параметров по истечению времени тайм-аута после обновления переменной нейрон-чип контроллера автоматически "заресетит" входную переменную т.н. "инвалидным" значением, при этом в приложении для Codesys по этому "инвалидному" значению не должно производится никаких действий. Например, для SNVT_setting сделайте timeout value для полей function и setting = 255, а в программе проверяйте, что значения <> 255.
Q: Изменения конфигурационных переменных (SCPT) проходят в хост-процессор (т.е. на котором "крутится" само приложение под Codesys) только при использовании встроенного браузера плагина Toplon-Prio, а из сети LON (со SCADA, Lonmaker'а итд - нет). Хотя значение самой SCPT при этом изменяется. A [А. Быков]: Для передачи значения SCPT в контроллер необходимо отправить на переменную Node object значение : object_id = 65000; project_request = 15 (RQ_PROGRAM).
Q: Сколько значений можно передавать между сетью LON и приложением на Codesys? A [А. Быков]: Суммарное количество доступных пользователю LON-овских переменных SNVT (входных и выходных) - 52, есть также три переменных UNVT (nvo_di_outpa, nvo_do_outpa, nvi_i_inpa), представляющих собой 31-байтные массивы. Максимальное количество переменных, передаваемых между приложением на Codesys и нейрон-чипом (определяемых в области двухпортовой памяти) - 255. Причем не стОит приближаться к максимуму (речь про 255 кодесисовских), поскольку при этом возникают большие задержки при обмене контроллера данными по сети (секунд по 5 и даже более). Q: Можно ли загрузить программу в контроллер по сети LON? A [М. Ананских]: Да, такая возможность предусмотрена в плагине TOPLON PRIO. Но чтобы отлаживать программу в контроллере, все равно придется соединиться через кабель для программирования. |