Просмотр полной версии : 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-памяти.
Бывает иногда такое. Со 150 ПЛК200 с полностью одинаковыми прошивками, настройками и программами на нескольких периодически обнуляется Persistent.
Техподдержка говорит, что это может быть из-за проблем с напряжением.
Но после замены проблемных ПЛК на другие проблема исчезает :confused:
stalke-z
10.01.2024, 10:26
добрый день.
столкнулся с такой же проблемой, не видит SD-карту, хотя бук читает ее без проблем, в системном логе ("mmc0: skipping voltage switch") и не сохраняются ретайн переменные после перезагрузки по питанию.
вылечил полным сбросом контроллера до заводских настроек и извлечении SD-карты.
Извиняюсь за глупый вопрос. А что, для Persistent переменных обязательно нужна SD карта?
Евгений Кислов
11.01.2024, 13:28
Извиняюсь за глупый вопрос. А что, для Persistent переменных обязательно нужна SD карта?
Нет.
Для работы с энергонезависимой памятью контроллер должен знать некоторые характеристики микросхемы.
При запуске контроллера драйвер микросхемы выводит их в лог, а наш сервис считывает их оттуда и записывает в конфиг-файл CODESYS.
Если по каким-то причинам лог сразу после запуска забивается и начинает перезаписываться (например - из-за сообщений о проблемах с SD-картой; может и по другим причинам) -
то наш сервис не может их считать и работать с MRAM не получится.
Здравствуйте.
Как сделать, чтобы можно было обновлять версию своей программы, а они сохраняли значения?
Евгений Кислов
17.04.2025, 17:12
Здравствуйте.
Как сделать, чтобы можно было обновлять версию своей программы, а они сохраняли значения?
Добрый день.
Используйте для этого PERSISTENT-переменные - они сохраняют свои значения после загрузки нового проекта.
Проблема была с "проблемной" SD-картой - из-за нее почти мгновенно забивался системный лог ("mmc0: skipping voltage switch") и сервис CODESYS не мог вычитать из него адрес сегмента MRAM-памяти.
Добрый день. Что в итоге было решено с "проблемной" SD-картой?
Столкнулся с аналогичной проблемой. Перебирать различные SD-карты? Или есть другой путь решения?
Евгений Кислов
23.04.2026, 07:39
Добрый день.
Перебирать различные SD-карты?
Другого варианта я не вижу.
Создал 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 записывались в слейв.
переменная создана в перзисте и привязана к модбас-регистру. никаких записей в нее больше нет
затираются даже переменные, которые в проекте не используются
89029
МихаилГл
28.04.2026, 15:21
Ну у меня всё через код, как предлагал вам kondor3000, я при запуске ПЛК принудительно в слэйв область пишу данные из персистент, и только потом основная программа работает. При чем в персистент пишу уже только если данные в областях различны.
Евгений Кислов
28.04.2026, 16:31
Создал retain переменные, как обычно, а они обнуляются при перезагрузке ПЛК200-01
Наткнулся на эту тему и перенес их в созданный блок persist переменных. Все равно обнуляются!
сд-карт и флешек не воткнуто никаких
Переменные привязаны к модбас-слейву, но если мастера из сети удалить, то все равно обнуляются.
UPD. сбрасываются только привязанные в модбас-слейву. вне зависимости от подключенного мастера
Подскажите, куда копать дальше?
Добрый день.
Чтобы более обстоятельно изучить вашу ситуацию - напишите, пожалуйста, мне в телеграм.
Или, если такой возможности, нет на почту (см. ссылки в подписи).
Добрый день.
Чтобы более обстоятельно изучить вашу ситуацию - напишите, пожалуйста, мне в телеграм.
Или, если такой возможности, нет на почту (см. ссылки в подписи).
объявил модбас-регистровые переменные в модбас-слейве вместо persistent, сделал копию и при первом запуске восстанавливаю их копию из persistent. любые другие комбинации их затирали
Евгений Кислов
28.04.2026, 17:23
объявил модбас-регистровые переменные в модбас-слейве вместо persistent, сделал копию и при первом запуске восстанавливаю их копию из persistent. любые другие комбинации их затирали
Ок. Скорее всего, помогло бы это:
https://owen.ru/forum/showthread.php?t=28167&p=434909&viewfull=1#post434909
Но, думаю, важнее, что вы нашли подходящее вам решение.
хочется сделать нормально, а не гонять туда-сюда копии таблиц регистров
обновил версию. пробовал создавать переменные в соотнесении в компоненте, все равно обнуляются, если не копировать при загрузке
пробовал присваивать созданные в persistent и после очередного перезапуска заработало.
Спасибо!
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot