PDA

Просмотр полной версии : ПЛК110 + СП307-Б работа с энергонезависимой памятью



БугиВуги
22.12.2022, 15:25
Добрый день!
На форуме достаточно тем описывающих как работает данный вид памяти в различных устройствах.
Основной посыл: при включении питания читаем значения переменных, при отключении\сбое питания пишем.

Так же есть понимание, что при мастере панели и слайве ПЛК Modbus переменные в ПЛК пишутся в энергонезависимою память.

Вопрос№1. Панель СП307-Б работает по такому же принципу?

В ходе разработки заказчик попросил сохранять уставки на панели. Соответственно привязываем элемент ввод данных к переменной типа PFW300, через макросы организовываем сначала считывание из PWM300, затем запись в MODBUS регистр. Далее в ПЛК.

Вопрос№2. С панелями особо не работал. Про энергонезависимость переменных по Modbus узнал не давно. Посоветуйте если ли другой, возможно более правильный, способ организации сохранения уставок.

Далее заказчик захотел рецепты. Согласно хэлпу все работает и пишется. Но после добавления рецептов, механизм записи уставок начал сбоить. То есть раньше значения сохранялись. Теперь после отключения питания и панели и ПЛК пишется как будто какой-то цифровой мусор. Для уставок использовал PFW300 и т.д до PFW310. Для рецептов PFW800 и далее (до PFW851).

Вопрос№3. Что пошло не так? В чем или куда(или что проверить) нужно смотреть?

Жду вопросов и предложений!

kondor3000
22.12.2022, 16:42
Макросы вообще тут не нужны, уставки копируются из регистров PFW сразу в регистры Модбас с помощью ФО. Всё.
С307 Б не работал, вроде там только изернета нет и флешка не втыкается, надо уточнить.
Рецепты возможно заработают если выкинуть макросы. А вообще проект надо выкладывать.

EFrol
22.12.2022, 16:57
Добрый!
Вообще-то чтение и запись происходит сразу во Flash. В хелпе об этом говориться (правда косвенно).
64754

И утвердение, что

... при мастере панели и слайве ПЛК Modbus переменные в ПЛК пишутся в энергонезависимою память.
неверно.
Чтобы значение из PFW попало в ПЛК, надо использовать либо функциональную кнопку, либо функциональную область, куда вписывается операция копирования регистров. И производить запись в ПЛК эти значения можно тогда, когда они действительно нужны, не используя RETAIN память.
RETAIN-память в ПЛК нужна, когда необходимо запустить процесс автоматически без участия оператора.

kondor3000
22.12.2022, 17:46
EFrol , если правильно понял, имеется ввиду все переменные в слейве ПЛК являются энергонезависимыми. А в панели флеш работает только, если в неё что то специально записать.
Но у ТС есть задание сохранять уставки в панели.
Их не надо (не желательно)часто перезаписывать. Один раз записал, потом только чтение при включении и копирование в модбас регистры.

EFrol
22.12.2022, 18:48
Вы, вероятно, путаете с сетевыми переменными в ПР.
В инструкции на CoDeSys v2.3 написано:
64755
Переменные объявленные в конфигурации, при сбросе питания обнуляются.

Приведу свой пример:
Централизованная мойка. Панель в регистрах PFW области хранит побитно состояние клапанов (что определяет маршрут подачи моющего раствора), а также его температуру и время подачи. Так как имеются разные растворы и разные объекты мойки, то оператор нажимает соответствующую ФК. Панель переносит соответствующие данные из PFW в ПЛК в одни и те же слэйв-переменные. Далее все делает ПЛК, но при сбое питания ПЛК все забывает. Чтобы запустить процесс снова, надо еще раз нажать нужную ФК на панели.

Если Вы хотите, чтобы после восстановления питания процесс продолжился, то Вам необходимо все параметры переписывать в RETAIN-переменные.
А в конфигурации задач указать вызов именованной процедуры при включении питания, в которой перенести из RETAIN-переменных обратно в слейв, чтобы ПЛК мог продолжить прерванный процесс.
Если честно у меня еще никогда не было повода использовать RETAIN-память. А вот PFW использую постоянно.
Хотя нет. Забыл. Храню в RETAIN значения счетчиков израсходованных растворов.
Но после инкрементации RETAIN-переменной, переношу её значение в слэйв, чтобы Панель могла отобразить на экране.

kondor3000
22.12.2022, 20:48
Вы, вероятно, путаете с сетевыми переменными в ПР.
В инструкции на CoDeSys v2.3 написано:
64755
Переменные объявленные в конфигурации, при сбросе питания обнуляются.

Ну вы даёте), это касается ПЛК мастера.
В панели PFW тоже использую постоянно, только потому, что предпочитаю панель слейв.
Сделал простой пример. В слейве ПЛК 2 регистра 0 и 1, панель мастер в эмуляции те же 2 регистра 4х0 и 4х1.
Записал в ПЛК программу, подключился в Онлайн эмуляции к ПЛК. С панели записал в модбас регистры 123 и 234. Никаких регистров PFW в панели и Retain в ПЛК не использовано.
Выключил эмуляцию панели и от ПЛК отключил питание, подождал 10 минут, включил и подключился снова. Вот скрин, как видите переменные в слейве ПЛК и считанные панелью сохранились. 64760
Можете повторить пример на любом ПЛК и эмуляцией в Панели ( или в живой панели если есть, можете туда напихать хоть 100 регистров). Главное чтобы панель при включении на перезаписывала их, на то и уставки, чтобы их читать. Удивительно, что такие вещи надо ещё доказывать людям)))

EFrol
23.12.2022, 08:04
Вы знаете, иногда всплывают всякие необъяснимые или недокументированные эффекты - я к такому уже привык.
Как вы думаете, что происходит когда в настройках целевой платформы включена вот эта опция?
64767

1exan
23.12.2022, 08:37
Вы знаете, иногда всплывают всякие необъяснимые или недокументированные эффекты - я к такому уже привык.
Как вы думаете, что происходит когда в настройках целевой платформы включена вот эта опция?
64767

Посмотрел - у меня везде включена. Это относится к загрузке проекта?

kondor3000
23.12.2022, 09:12
Вы знаете, иногда всплывают всякие необъяснимые или недокументированные эффекты - я к такому уже привык.
Как вы думаете, что происходит когда в настройках целевой платформы включена вот эта опция?
64767

Это начальное обнуление данных. Работает при загрузке проектов. В работе проекта уже не действует. В слейве переменные сохраняются.
Так жек как и в ПР в режиме слейв не работают галки перестановки регистров (байт).

БугиВуги
23.12.2022, 09:31
Добрый день!
Не ожидал такой реакции. Всем спасибо за Ваши ответы.
Ваши ответы толкнули меня в нужном направлении и кое-что стало более понятно. Теперь просто хочу уточнить. Возможно кто-то прочитает и все сразу станет на свои места, как у меня.

1. С помощью функциональной области с помощью функции "Копировать регистр" из PFW (энергонезависимых областей в панели) можно на прямую писать в регистры ПЛК по MODBUS (сами регистры в ПЛК могут быть не RETAIN). При этом макросы с командами Reads и Writes можно не использовать и убрать.

2. Регистры панели PFW надо менять как можно реже, поэтому архитектурно "спрятать" их в окне под паролем и если надо просто читать. В руководстве пользователя обратить особое внимание на изменение. То есть сам факт изменения переменной в примитиве "ввод данных" должен происходить как можно реже.

3. Так как функциональная область срабатывает только на открытом экране, то лучше сделать ее глобальной в проекте.

Теперь все таки хотелось бы уточнить ряд вопросов о самой функциональной области. Ответы как бы очевидны, но опять кто-то прочитает и все сразу станет понятно.
Вопрос №1. В одной области можно добавить разное количество функций. Но работать они будут только согласно настройке в закладке "Режим"?
Вопрос №2. Если нужна сработка например не "Цикл", а "Непрерывно" добавляем новую функциональную область?
Вопрос №3. Количество располагаемых функциональных областей (локальных) ограничено количеством режимов?
Вопрос №4. Предыдущий вопрос относиться и к глобальным функциональным областям?

Жду ответов и предложений! Еще раз всем спасибо!

1exan
23.12.2022, 10:54
Это начальное обнуление данных. Работает при загрузке проектов. В работе проекта уже не действует. В слейве переменные сохраняются.
Так жек как и в ПР в режиме слейв не работают галки перестановки регистров (байт).

У меня при полной загрузке проекта сетевые переменные в конфигурации (ПЛК слейв) обнуляются

1exan
23.12.2022, 10:59
...

1. С помощью функциональной области с помощью функции "Копировать регистр" из PFW (энергонезависимых областей в панели) можно на прямую писать в регистры ПЛК по MODBUS (сами регистры в ПЛК могут быть не RETAIN). При этом макросы с командами Reads и Writes можно не использовать и убрать.

...


Переменные, объявленные в конфигурации ПЛК в подэлементе «ModBus (slave)», являются сохраняемыми RETAIN переменными

EFrol
23.12.2022, 12:21
Т.е. если я через слейв переменную запустил в ПЛК процесс, а потом выключил панель, то я хоть сто раз сбрасывай питание на ПЛК, этот процесс я хрен остановлю?

1exan
23.12.2022, 12:37
Т.е. если я через слейв переменную запустил в ПЛК процесс, а потом выключил панель, то я хоть сто раз сбрасывай питание на ПЛК, этот процесс я хрен остановлю?

Если процесс завязан на состоянии сетевой переменной, то, очевидно, так и будет. Здесь (https://owen.ru/forum/showthread.php?t=27695&p=397083&viewfull=1#post397083)вот как раз такая ситуация возникла (не ПЛК, а ПР, но принцип тот-же)

petera
23.12.2022, 12:49
Т.е. если я через слейв переменную запустил в ПЛК процесс, а потом выключил панель, то я хоть сто раз сбрасывай питание на ПЛК, этот процесс я хрен остановлю?

В программе ПЛК в первом скане сделать сброс нужных переменных в слейве, и всего-то

ЗЫ.
64774

EFrol
23.12.2022, 12:51
Ладно пойду разбираться, почему у меня они обнуляются.

kondor3000
23.12.2022, 13:16
Регистры панели PFW надо менять как можно реже, поэтому архитектурно "спрятать" их в окне под паролем и если надо просто читать. В руководстве пользователя обратить особое внимание на изменение. То есть сам факт изменения переменной в примитиве "ввод данных" должен происходить как можно реже.
Теперь все таки хотелось бы уточнить ряд вопросов о самой функциональной области. Ответы как бы очевидны, но опять кто-то прочитает и все сразу станет понятно.
Вопрос №1. В одной области можно добавить разное количество функций. Но работать они будут только согласно настройке в закладке "Режим"?
Вопрос №2. Если нужна сработка например не "Цикл", а "Непрерывно" добавляем новую функциональную область?
Вопрос №3. Количество располагаемых функциональных областей (локальных) ограничено количеством режимов?
Вопрос №4. Предыдущий вопрос относиться и к глобальным функциональным областям?

На самом деле количество перезаписей области PFW заявлено около 70 000 циклов. Тут просто надо с умом подходить.
Были случаи, пытались в ограниченную область (например в одни и те же 10 регистров) писать раз в секунду, память сдохнет за 2,5-3 недели. Если же вы поменяете уставку 1 -2 раза в день, вам хватит ресурса лет на 100.

По вопросам.
1 Да
2 Да
3 нет
4 нет

RfSS
25.12.2022, 22:01
А зачем тогда такую память вводить ток 70к циклов

Валенок
26.12.2022, 00:56
А зачем тогда такую память вводить ток 70к циклов
флешками не пользуешься почему ?

kondor3000
26.12.2022, 08:47
А зачем тогда такую память вводить ток 70к циклов

Правильный вопрос будет:
Как правильно использовать заявленный ресурс?

БугиВуги
14.02.2023, 11:53
Добрый день!
Не хочу плодить новую тему. Вопрос о retain.
В документе ОВЕН четко написано, что при потере питания за счет заряда кондеров производиться запись retain переменных.
Есть соответствующая библиотека позволяющая принудительно записывать данные переменные.
Просто не совсем понятна работа.
Когда питание есть и переменной-retain присваивается значение исходя из условий срабатывания(логического) каждые 200мс(цикл задачи) данное значение пишется куда?
В ОЗУ? Или в энергонезависимую? Если в энергонезависимую тогда понятно почему ПЛК может выйти из строя за пару недель.
Возможно есть тема на форуме, но просмотреть все темы с упоминанием retain просто жалко времени.
Жду ответов и вопросов. Ну или ссылки на тему форума.

1exan
14.02.2023, 11:59
Добрый день!
Не хочу плодить новую тему. Вопрос о retain.
В документе ОВЕН четко написано, что при потере питания за счет заряда кондеров производиться запись retain переменных.
Есть соответствующая библиотека позволяющая принудительно записывать данные переменные.
Просто не совсем понятна работа.
Когда питание есть и переменной-retain присваивается значение исходя из условий срабатывания(логического) каждые 200мс(цикл задачи) данное значение пишется куда?
В ОЗУ? Или в энергонезависимую? Если в энергонезависимую тогда понятно почему ПЛК может выйти из строя за пару недель.
Возможно есть тема на форуме, но просмотреть все темы с упоминанием retain просто жалко времени.
Жду ответов и вопросов. Ну или ссылки на тему форума.

При наличии питания - в ОЗУ, в момент отключения питания переписываются в ПЗУ (MRAM)

petera
14.02.2023, 12:00
https://owen.ru/forum/attachment.php?attachmentid=16915&d=1425224217
Причем здесь СП307? Все вопросы касаются только ПЛК

БугиВуги
14.02.2023, 12:06
Спасибо за столь быстрый ответ.
Вот эту фразу:

При наличии питания - в ОЗУ, в момент отключения питания переписываются в ПЗУ (MRAM)
да в указанный документ и данного вопроса бы не возникло.
Еще раз спасибо!