
Сообщение от
Але-ндр
Добрый день.
Помогите сообразить!
Пишу свой код типа счетчика моточасов. Готовые решения не устраивают, поэтому не плюйтесь.
А вопрос в следующем. Необходимо сохранять счетчик при потере питания и соответственно восстанавливать данные после подачи питания. Для этого я, вне функционального блока создал энергонезависимую переменную. Вход куда я ее записываю, и выход который изменяет эту переменную. Но при старте программа не успевает перебросит данные с входа на выход и переменная обнуляется. Точнее если написать в начале кода (первой строкой Vaur OUT := Var IN) То она успевает перезаписать и все вроде нормально. Но если поместить ее строкой ниже или не дай бог засунуть в условие типа IF. то она конечно не успевает пере записаться и обнуляется.
Возможно я изобретаю велосипед, подскажите как реализовать правильно эту функцию.
И от сюда вытекает второй вопрос. В программе мне необходимо использовать 2 блока. 1 это инициализация (выполняется один раз при старте) и 2 в цикле. Я использовал оператор IF c защелкой. (решение мне самому не нравится). Сейчас играюсь с функциями WHILE и REPEAT UNTIL. мне кажется они более правильные.
Есть ли какие-то более гибкие и правильные реализации этих двух вопросов?
Не очень понятно, но, условно у вас есть счетчик А := А + time. Чтобы он был энергонезависмый, пишем Out := In + time, (In, Out - одна и та же энергонезависимая переменная на входе и на выходе).
По инициализации:
Код:
if init then
основное тело
else
что надо сделать в момент первого запуска
end_if
init := true;