А также:

2.3 LON

2.3 Контроллер 750-819 (LON)

Q: Как инициализировать входные SNVT-переменные?

A [А. Быков]: К сожалению, непосредственной инициализации (например, как в Nodebuilder'е) нет, но возможно несколько вариантов.
1. В плагине Toplon-Prio в разделе NVO есть галка "send on reset". Для инициализации входной переменной создаем выходную, которая при запуске контроллера будет слать начальное значение, и связываем со входной посредством сетевого инструментария типа LonMaker. Минус - задействование дополнительной выходной переменной.

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. Но чтобы отлаживать программу в контроллере, все равно придется соединиться через кабель для программирования.