PDA

Просмотр полной версии : Сохранение переменной в памяти



fzr125
14.06.2014, 04:06
Всем привет)
Возник небольшой вопрос, но т.к. нет прямого доступа до ПЛК (до среды) не могу проверить сам. Гугл не помог, поиск по сайту тоже (или просто я слишком быстро сдался)

Вообщем есть переменная, к примеру так:

VAR
x1 : INT:=0;
END_VAR

где-то в программе я меняю её значение
x1 := 20;

Как мне сохранить это значение при отключении питания?
Понятное дело не определять её с 0-вым значением. Но как загрузить в неё значение 20 из памяти при включении?

Извиняюсь если вопрос глупый. Модель - плк73. Заранее спасибо)

fzr125
14.06.2014, 05:52
Ок. Почитал про Reatin переменные. Вот что сказано:
Эти перемененные сохраняют свои значения, даже при аварийном отключении питания (равносильно RESET на контроллере)

Значит ли это что как только я объявляю/меняю_значение переменной - она сразу пишется в память? И не вредно ли это для памяти - если менять придется до 1 раза в день или чаще. Сколько проживет так контроллер?

Хотелось бы иметь возможность самому говорить когда сохранять - а когда нет. Если так возможно - подскажите как это реализовать.

fzr125
14.06.2014, 06:28
Блин извиняюсь - тема закрыта.

Вот нашел ответ с этого форума:
То есть изменять значение переменных, объявленных как Retain Вы можете сколько угодно раз. Но запишутся их значения в ЕЕПРОМ только в момент пропадания питания.

Прошу прощения - тему можно удалить - или оставить для других крабиков.

Scream
14.06.2014, 08:38
Поправлю.
Много возился и разбирался с ними.
Retain записывается когда уже пропало питание, записывается от аккумулятора.
ТОесть здесь важную роль играет аккумулятор и он должен быть хорошим, но на практике 2 из 10 плк у меня были с плохими.

приборист
14.06.2014, 13:29
То есть изменять значение переменных, объявленных как Retain Вы можете сколько угодно раз. Но запишутся их значения в ЕЕПРОМ только в момент пропадания питания.


В свое время почитав много тем про RETAIN, увидел совет - читать из переменных RETAIN при включении ПЛК (флаг power и переменная start:bool:=false;)
И записываем в эти переменные по пропаданию питания (флаг power)
Даже есть примеры по этому делу.

Я все проекты сейчас именно так и делаю, но наталкиваясь на такие темы, и увидев высказывание:

Менять значение переменных, объявленных как Retain Вы можете сколько угодно раз. Но запишутся их значения в ЕЕПРОМ только в момент пропадания питания.
У меня складывается ощущение, что я делаю бесполезную работу :)

Итак, как правильно сохранять значения?
1. Переменная RETAIN - в неё пишем и из неё читаем при пропадании питания (power из statistic)
2. Просто переменные RETAIN
3. Запись переменных в файл, при изменении их значений (SysLiFile, но беря во внимание что способ не подойдет, при слишком частом изменении параметров - протрем флэш)

lazy
26.06.2014, 14:27
ты прав. на счет бесполезной работы )
пункт два и не парься )