PDA

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



Александр Недашковский
09.03.2023, 17:34
Здравствуйте, коллеги!
Помогите человеку, развращенному Тиа Порталом, разобраться, как организовать сохранение переменных в энергонезависимой памяти ПЛК210, полученных по Modbus RTU от панели Weintek.

В чем проблема:
Есть панель Weintek, подключенная к ПЛК210, она передает на ПЛК ряд переменных, которые должны сохраняться при отключении питания. У панели есть несколько объектов "Число" и несколько битовых переключателей. И тут возникает проблема: панель записывает их состояние в регистры временного хранения ПЛК (IW). Я их считываю оттуда и отправляю в ретайн переменную. При отключении питания и повторном его включении регистры временного хранения обнуляются, а записать сохраненную переменную я в них не могу, только в выходные регистры Modbus (QW). Теперь, чтобы сохраненная переменная отобразилась на панели, я вынужден читать выходной регистр ПЛК. Но считанная переменная не отправляется панелью автоматически в соответствующий регистр временного хранения ПЛК и там остается 0, который запишется в ретайн переменную, если считывать значение IW регистра в цикле программы. Можно конечно производить считывание только при изменении значения регистра IW, но тогда не получится поставить переменную равную 0, так как регистр и так имеет значение 0 и соответственно изменение не произошло и ретайн переменная не записалась.

Евгений Кислов
09.03.2023, 17:39
Здравствуйте, коллеги!
Помогите человеку, развращенному Тиа Порталом, разобраться, как организовать сохранение переменных в энергонезависимой памяти ПЛК210, полученных по Modbus RTU от панели Weintek.

В чем проблема:
Есть панель Weintek, подключенная к ПЛК210, она передает на ПЛК ряд переменных, которые должны сохраняться при отключении питания. У панели есть несколько объектов "Число" и несколько битовых переключателей. И тут возникает проблема: панель записывает их состояние в регистры временного хранения ПЛК (IW). Я их считываю оттуда и отправляю в ретайн переменную. При отключении питания и повторном его включении регистры временного хранения обнуляются, а записать сохраненную переменную я в них не могу, только в выходные регистры Modbus (QW). Теперь, чтобы сохраненная переменная отобразилась на панели, я вынужден читать выходной регистр ПЛК. Но считанная переменная не отправляется панелью автоматически в соответствующий регистр временного хранения ПЛК и там остается 0, который запишется в ретайн переменную, если считывать значение IW регистра в цикле программы. Можно конечно производить считывание только при изменении значения регистра IW, но тогда не получится поставить переменную равную 0, так как регистр и так имеет значение 0 и соответственно изменение не произошло и ретайн переменная не записалась.

Добрый день.
См. видео для Modbus TCP:
https://youtu.be/jPj2v3vAKRw

Для Modbus RTU всё будет по аналогии, только вместо MB_TcpSlave надо будет использовать MB_SerialSlave и COM_Control.

IVM
09.03.2023, 21:39
Здравствуйте, коллеги!
Помогите человеку, развращенному Тиа Порталом, разобраться, как организовать сохранение переменных в энергонезависимой памяти ПЛК210, полученных по Modbus RTU от панели Weintek.

В чем проблема:
Есть панель Weintek, подключенная к ПЛК210, она передает на ПЛК ряд переменных, которые должны сохраняться при отключении питания. У панели есть несколько объектов "Число" и несколько битовых переключателей. И тут возникает проблема: панель записывает их состояние в регистры временного хранения ПЛК (IW). Я их считываю оттуда и отправляю в ретайн переменную. При отключении питания и повторном его включении регистры временного хранения обнуляются, а записать сохраненную переменную я в них не могу, только в выходные регистры Modbus (QW). Теперь, чтобы сохраненная переменная отобразилась на панели, я вынужден читать выходной регистр ПЛК. Но считанная переменная не отправляется панелью автоматически в соответствующий регистр временного хранения ПЛК и там остается 0, который запишется в ретайн переменную, если считывать значение IW регистра в цикле программы. Можно конечно производить считывание только при изменении значения регистра IW, но тогда не получится поставить переменную равную 0, так как регистр и так имеет значение 0 и соответственно изменение не произошло и ретайн переменная не записалась.

А что мешает хранить переменные в энергонезависимой памяти панели Weintek. В панелях Weintek с энергонезависимой памятью все чики-пики.

kondor3000
09.03.2023, 21:57
Сами себе проблемы и создаёте, храните переменные (уставки) в энергонезависимой памяти панели, ПЛК только их читать будет ( либо панель в ПЛК будет записывать)

Александр Недашковский
10.03.2023, 11:05
Большое спасибо - все получилось!

Вадим Ижевск
29.05.2023, 22:00
Здравствуйте, коллеги.
Есть ли возможность в ПЛК-210 сохранения переменных (в Retain, в файле или еще где-либо) по событию пропадания питания, как это было в ПЛК-100? Попробовал использовать задний фронт таргет-переменной TargetVars.stPlc210.xPowerInput1 - не получилось.

Евгений Кислов
30.05.2023, 06:14
Здравствуйте, коллеги.
Есть ли возможность в ПЛК-210 сохранения переменных (в Retain, в файле или еще где-либо) по событию пропадания питания, как это было в ПЛК-100? Попробовал использовать задний фронт таргет-переменной TargetVars.stPlc210.xPowerInput1 - не получилось.

Добрый день.
Значения RETAIN-переменных сохраняются в момент изменения любой из переменных.
Соответственно, после пропадания питания они будут иметь те значения, которые имели до пропадания питания.