В принципе kondor3000 в п#2 показал как без всяких таймеров. И про "конфигурационный" тоже.
Вложение 69125
Писать в "конфиг" из проекта можно, но мутно (см. arm_specific/save_parameter). Про это либо прослушали (у техподдержки) и либо там стажер "техподдерживал".
Работать "почти" это никак. Real тут незачем.В общем, сменил тип переменной "ST1" с uint на real стало работать, почти, как нужно:
Если не хочется возни с save_parameter, то простейший способ:
"оперативный" + явный ретайн.
Например:
Ретайн_старт нигде больше не трогаемКод:var retain ретайн_старт : ХХХ := ....; end_var var (*не ретайн !*) init : bool; (*дефолтный фальсе*) end_var где-то в меню, оперативное, c ненапутанным адресом и доступное для изменения по сети старт : XXX --------------- if not init then (*где то в начале) init := true; старт := ретайн_старт; end_if ретайн_старт := старт;
Пишем-читаем старт где угодно.
Всё.
Если батарейка жива - как часы.
(В квадратики - сами)
Ничего не понятно, но очень интересно ...
С поддержкой я переписывался, а не разговаривал, они об этом мне не написали ничего, только что нужно создавать переменные в конфиг меню и они автоматически становятся ретейн и с сетевыми регистрами.
Ваша ссылка не работает.
Последний раз редактировалось evgenykip; 23.07.2023 в 16:39.
Это нормально для поддержки, они не обязаны знать не документированные ходы.
Добавлю, что батарейка влияет только на часы. Запись ретайн во влэш идёт на ёмкости конденсатора в БП по немаскируемому прерыванию от БП - напряжение пропало, сейчас будем выключаться.
Так ТП и предлагала использовать соответствующую библиотеку, насколько я понимаю.
Под ретэйн ТП видимо понимала, что значения с экрана сохраняются во флэш.
Я пропустил про биб-ку?..в поддержке сказали что нужно создать переменную в конфигурационном меню прибора ( в программе ), что она автоматически станет ретейн и будет иметь сетевой регистр, так и сделал, она также в программе состояние меняла, но в меню прибора были нули и по сети тоже, в поддержке ответили что у меня программа не позволяет записывать эту переменную, поэтому значения в сети не менялись....
Ну так и есть - в ТП эльфийский стажер не работавший "в полях" раз не видит сути стандартной задачи
Кратко : ретайн* и менять любого места (сеть/меню/проект)
*энергонезависимость, тип побоку
Я предложил простой способ.
Причем 4-е лишнее, т.к. является неотъемлемым свойством (при заказе омлета уточнять что "из яйца" не требуется обычно)
Последний раз редактировалось Валенок; 23.07.2023 в 19:54.
1) Переменные в конфигурации слейва, являются глобальными и RETAIN.
2) Переменные которые не в конфигурации, что бы стали RETAIN, объявляют так 1 RETAIN.jpg Заметьте, ей присвоена 1 и при первом включении, будет 1. А при последующих, что присвоите в работе. Если нужен 0, то убрать присвоение 1.
3) Если переменные сохраняются (Хоть одна), значит RETAIN работает (запись значения при выключении питания).
А конкретная переменная ST1 не сохраняется, значит её при включении перезаписывает или мастер или ваша программа. Надо найти откуда.
4) Ввод новой переменной ST1_ret для этого и сделан. В работе в неё записывается из ST1.
А при перезагрузке из ST1_ret записывается в ST1.
Так как вы всё время утверждаете, что RETAIN не работает, а оказывается, все остальные переменные сохраняются.
Последний раз редактировалось kondor3000; 24.07.2023 в 15:44.