PDA

Просмотр полной версии : Persistent переменные



Dennstroyer
22.11.2023, 10:31
Здравствуйте!

После перезапуска ПЛК200 Persistent-переменные обнуляются. Похожая тема:

https://owen.ru/forum/showthread.php?t=38128

но там решение не приведено.

71791

Евгений Кислов
22.11.2023, 10:37
Здравствуйте!

После перезапуска ПЛК200 Persistent-переменные обнуляются. Похожая тема:

https://owen.ru/forum/showthread.php?t=38128

но там решение не приведено.

71791

Добрый день.
Свяжитесь со мной по телеграм (в подписи) и обеспечьте удаленный доступ по AnyDesk.

Евгений Кислов
22.11.2023, 11:48
Проблема была с "проблемной" SD-картой - из-за нее почти мгновенно забивался системный лог ("mmc0: skipping voltage switch") и сервис CODESYS не мог вычитать из него адрес сегмента MRAM-памяти.

DemonDy
06.12.2023, 10:32
Бывает иногда такое. Со 150 ПЛК200 с полностью одинаковыми прошивками, настройками и программами на нескольких периодически обнуляется Persistent.
Техподдержка говорит, что это может быть из-за проблем с напряжением.
Но после замены проблемных ПЛК на другие проблема исчезает :confused:

stalke-z
10.01.2024, 10:26
добрый день.
столкнулся с такой же проблемой, не видит SD-карту, хотя бук читает ее без проблем, в системном логе ("mmc0: skipping voltage switch") и не сохраняются ретайн переменные после перезагрузки по питанию.
вылечил полным сбросом контроллера до заводских настроек и извлечении SD-карты.

smnt
11.01.2024, 13:22
Извиняюсь за глупый вопрос. А что, для Persistent переменных обязательно нужна SD карта?

Евгений Кислов
11.01.2024, 13:28
Извиняюсь за глупый вопрос. А что, для Persistent переменных обязательно нужна SD карта?

Нет.
Для работы с энергонезависимой памятью контроллер должен знать некоторые характеристики микросхемы.
При запуске контроллера драйвер микросхемы выводит их в лог, а наш сервис считывает их оттуда и записывает в конфиг-файл CODESYS.
Если по каким-то причинам лог сразу после запуска забивается и начинает перезаписываться (например - из-за сообщений о проблемах с SD-картой; может и по другим причинам) -
то наш сервис не может их считать и работать с MRAM не получится.

chm
17.04.2025, 16:42
Здравствуйте.
Как сделать, чтобы можно было обновлять версию своей программы, а они сохраняли значения?

Евгений Кислов
17.04.2025, 17:12
Здравствуйте.
Как сделать, чтобы можно было обновлять версию своей программы, а они сохраняли значения?

Добрый день.
Используйте для этого PERSISTENT-переменные - они сохраняют свои значения после загрузки нового проекта.

DSV
23.04.2026, 07:07
Проблема была с "проблемной" SD-картой - из-за нее почти мгновенно забивался системный лог ("mmc0: skipping voltage switch") и сервис CODESYS не мог вычитать из него адрес сегмента MRAM-памяти.

Добрый день. Что в итоге было решено с "проблемной" SD-картой?
Столкнулся с аналогичной проблемой. Перебирать различные SD-карты? Или есть другой путь решения?

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


Перебирать различные SD-карты?

Другого варианта я не вижу.

soleg
28.04.2026, 14:25
Создал retain переменные, как обычно, а они обнуляются при перезагрузке ПЛК200-01

Наткнулся на эту тему и перенес их в созданный блок persist переменных. Все равно обнуляются!
сд-карт и флешек не воткнуто никаких
Переменные привязаны к модбас-слейву, но если мастера из сети удалить, то все равно обнуляются.

UPD. сбрасываются только привязанные в модбас-слейву. вне зависимости от подключенного мастера

Подскажите, куда копать дальше?

МихаилГл
28.04.2026, 15:14
Создал retain переменные, как обычно, а они обнуляются при перезагрузке ПЛК200-01

Наткнулся на эту тему и перенес их в созданный блок persist переменных. Все равно обнуляются!
сд-карт и флешек не воткнуто никаких
Переменные привязаны к модбас-слейву, но если мастера из сети удалить, то все равно обнуляются.

UPD. сбрасываются только привязанные в модбас-слейву. вне зависимости от подключенного мастера

Подскажите, куда копать дальше?

В исходный код. Переменные эти у вас по какому то условию перезаписываются.

Прикладывайте код.

kondor3000
28.04.2026, 15:15
Создал retain переменные, как обычно, а они обнуляются при перезагрузке ПЛК200-01
Переменные привязаны к модбас-слейву, но если мастера из сети удалить, то все равно обнуляются.

UPD. сбрасываются только привязанные в модбас-слейву. вне зависимости от подключенного мастера

Подскажите, куда копать дальше?

Значит они перезаписываются из программы при включении. Надо сделать так, чтобы при включении переменные из retain записывались в слейв.

soleg
28.04.2026, 15:16
переменная создана в перзисте и привязана к модбас-регистру. никаких записей в нее больше нет
затираются даже переменные, которые в проекте не используются
89029

МихаилГл
28.04.2026, 15:21
Ну у меня всё через код, как предлагал вам kondor3000, я при запуске ПЛК принудительно в слэйв область пишу данные из персистент, и только потом основная программа работает. При чем в персистент пишу уже только если данные в областях различны.

Евгений Кислов
28.04.2026, 16:31
Создал retain переменные, как обычно, а они обнуляются при перезагрузке ПЛК200-01

Наткнулся на эту тему и перенес их в созданный блок persist переменных. Все равно обнуляются!
сд-карт и флешек не воткнуто никаких
Переменные привязаны к модбас-слейву, но если мастера из сети удалить, то все равно обнуляются.

UPD. сбрасываются только привязанные в модбас-слейву. вне зависимости от подключенного мастера

Подскажите, куда копать дальше?

Добрый день.
Чтобы более обстоятельно изучить вашу ситуацию - напишите, пожалуйста, мне в телеграм.
Или, если такой возможности, нет на почту (см. ссылки в подписи).

soleg
28.04.2026, 17:17
Добрый день.
Чтобы более обстоятельно изучить вашу ситуацию - напишите, пожалуйста, мне в телеграм.
Или, если такой возможности, нет на почту (см. ссылки в подписи).

объявил модбас-регистровые переменные в модбас-слейве вместо persistent, сделал копию и при первом запуске восстанавливаю их копию из persistent. любые другие комбинации их затирали

Евгений Кислов
28.04.2026, 17:23
объявил модбас-регистровые переменные в модбас-слейве вместо persistent, сделал копию и при первом запуске восстанавливаю их копию из persistent. любые другие комбинации их затирали

Ок. Скорее всего, помогло бы это:
https://owen.ru/forum/showthread.php?t=28167&p=434909&viewfull=1#post434909

Но, думаю, важнее, что вы нашли подходящее вам решение.

soleg
28.04.2026, 20:35
хочется сделать нормально, а не гонять туда-сюда копии таблиц регистров

обновил версию. пробовал создавать переменные в соотнесении в компоненте, все равно обнуляются, если не копировать при загрузке
пробовал присваивать созданные в persistent и после очередного перезапуска заработало.

Спасибо!