Вход

Просмотр полной версии : сохранение значений переменных



Лёша
12.11.2009, 07:57
здравствуйте, у меня есть программа с множеством параметров, значение которых пользователь меняет в ходе работы. есть ли какая-нибудь возможность сохранять эти значения в режиме онлайн и присваивать их параметрам в следующем сеансе? либо подскажите как сделать перезагрузку изменённого проекта без обнуления переменных.

lara197a
12.11.2009, 08:19
объявите эти переменные как Retain

DARNER
12.11.2009, 09:24
почитайте стр.5-4, 5-5 руководства "Руководство пользователя
по программированию ПЛК в CoDeSys 2.3".

Лёша
12.11.2009, 09:49
Я использую переменные MODBUS (Slave), а они на сколько я знаю являются переменными RETAIN. И когда я отключаю питание и произвожу сброс их значения остаются, а вот если я хочу загрузить новую программу отличающуюся от старой даже двумя строчками, они сбрасываются. К слову у меня 2 модуля, для каждого модуля по 8 рецептов, в каждом рецепте по 26 параметров итого 26х8х2=416.

magirus
12.11.2009, 09:55
а что мешает перед загрузкой нового проекта сохранить файл с ретейн переменными на компе, а после загрузки проекта - залить обратно?

Филоненко Владислав
12.11.2009, 09:59
Это возможно, только если конфигурация переменных в slave не меняется.
Наиболее полное управление сохранением retain можно достичь только если вы сами будете это делать.
В Вашем случае рекомендую использовать доп. файл, в который вы по известному событию будете сохранять память из slave, а при старте восстанавливать.

Лёша
12.11.2009, 10:11
я так и делаю, для каждого параметра (26шт) у меня создан массив Retain переменных состоящий из 2 строк (на каждый модуль по строке) и 8 столбцов ( на каждый рецепт по столбцу), при каждом изменении значения параметра, он сохраняется в массиве, а когда перезаливаю программу массив пуст!!!

Филоненко Владислав
12.11.2009, 10:41
Retain действует именно так. И это описано в документации и является стандартом.
Если Вам необходимо иное поведение - надо его сделать самому.
Берете указатель на первый параметр slave, считываете массив данных, записываете его в файл.
Если надо - восстанавливаете из файла. В этом случае - все в Ваших руках.

Лёша
12.11.2009, 10:49
видимо тогда мой вопрос должен звучать так: " а как сохранить массив данных в файл ?"

Филоненко Владислав
12.11.2009, 11:37
даете в функцию FileWrite адрес массива и его размер.