PDA

Просмотр полной версии : Изменение энергонезависимых переменных в цикле программы.



lnikita
09.12.2024, 10:36
Здравствуйте, ПЛК 210. (язык ST)
Есть протокол, необходимо сделать сквозную нумерацию.

Задаю PersistentVars.
VAR_GLOBAL PERSISTENT RETAIN
N_Protokol: INT ;
END_VAR

Где нужно, в цикле программы, при формировании протокола, прописываю условие N_Protokol := N_Protokol + 1;
При снятии питания с ПЛК, переменная опять возвращается в значение 0. Как быть?

kondor3000
09.12.2024, 10:40
Здравствуйте, ПЛК 210.
Есть протокол, необходимо сделать сквозную нумерацию.

Задаю PersistentVars.
VAR_GLOBAL PERSISTENT RETAIN
N_Protokol: INT ;
END_VAR

Где нужно, в цикле программы, при формировании протокола, прописываю условие N_Protokol := N_Protokol + 1;
При снятии питания с ПЛК, переменная опять возвращается в значение 0. Как быть?

Для переменных PERSISTENT есть свой отдельный блок, его надо добавить и в него уже ваши переменные.
Так же как добавляете глобальные переменные, так и переменные PERSISTENT, блок со значком похожим на букву Т

lnikita
09.12.2024, 10:47
Вы имеете ввиду, правой кнопкой мыши на APPLICATION, добавление объекта, PersistentVars ?
там и задавал. Пробовал и с RETAIN переменными, тоже сбрасываются.

kondor3000
09.12.2024, 10:50
Что за блок?

блок со значком похожим на букву Т, по клику правой кнопкой мыши на Applicachion, в дереве проектов

lnikita
09.12.2024, 11:00
Тогда так и объявил переменные изначально. Тут сложность скорей всего в том, как бы задавать значение переменной из цикла программы.

Евгений Кислов
09.12.2024, 11:39
Добрый день.


Где нужно, в цикле программы, при формировании протокола, прописываю условие N_Protokol := N_Protokol + 1;
При снятии питания с ПЛК, переменная опять возвращается в значение 0.

Если убрать из проекта весь ваш код, оставив только "N_Protokol := N_Protokol + 1" (можно в безусловно вызывать его в основной программе) - то что произойдет со значением переменной после перезагрузки контроллера?

lnikita
09.12.2024, 11:48
Значение переменной N_Protokol становится = 0.

Евгений Кислов
09.12.2024, 11:50
Значение переменной N_Protokol становится = 0.

Тогда, пожалуйста, напишите мне в телеграм (см. в подписи) и подготовьте доступ по AnyDesk.

lnikita
10.12.2024, 04:53
Созвонились, Евгений помог.
Большое спасибо.
Проблема оказалась с моей стороны, когда загружал проект на контроллер, не создавал загрузочное приложение.