Просмотр полной версии : OPC UA, опрос переменных
nikutuzov
16.09.2024, 19:03
Здравствуйте!
Прошу подсказать по следующей проблеме с использованием OPC UA на ПЛК 210. Есть контроллер ПЛК 210 и панель Weintek. В контроллере есть булевая переменная X, которая включена в символьную конфигурацию, и доступна к обмену по OPC. В интерфейсе панели weintek есть битовый переключатель, через него меняется и отображается значение данной переменной X. Предположим на контроллер приходит внешний сигнал, о необходимости задать X=false. Теперь каждый цикл в контроллере записывается X=false. Значение на панели соответственно изменилось, условный тумблер выключен. Но когда на панели я включаю данный тумблер (задаю X=true), он не выключается автоматически, то есть тумблер остается включенным, при том что он вроде бы должен автоматически выключиться (так как в контроллере задается X=false). При этом в памяти контроллера X=false, получается значение битового переключателя и переменной в этот момент "не связаны". Подскажите, в чем может быть причина?
kondor3000
16.09.2024, 19:21
Здравствуйте!
Прошу подсказать по следующей проблеме с использованием OPC UA на ПЛК 210. Есть контроллер ПЛК 210 и панель Weintek. В контроллере есть булевая переменная X, которая включена в символьную конфигурацию, и доступна к обмену по OPC. В интерфейсе панели weintek есть битовый переключатель, через него меняется и отображается значение данной переменной X. Предположим на контроллер приходит внешний сигнал, о необходимости задать X=false. Теперь каждый цикл в контроллере записывается X=false. Значение на панели соответственно изменилось, условный тумблер выключен. Но когда на панели я включаю данный тумблер (задаю X=true), он не выключается автоматически, то есть тумблер остается включенным, при том что он вроде бы должен автоматически выключиться (так как в контроллере задается X=false). При этом в памяти контроллера X=false, получается значение битового переключателя и переменной в этот момент "не связаны". Подскажите, в чем может быть причина?
Любое изменение в панели или в ПЛК, приводит к перезаписи булевой переменной. Это нормально.
Если вам нужен другой порядок работы кнопки, сделайте не инверсию, а включение пока нажато. Так же можно сделать и в ПЛК, например через таймер PT.
Вот видео по OPC UA и символьной конфигурации https://www.youtube.com/watch?v=z3lIr7cyWb4
nikutuzov
16.09.2024, 20:07
Благодарю, но дело то тут в том что в плк значение X=false, а переключатель показывает True. Представьте что X - включение выключение нагрева. Первоначально нагрев был включен, с панели. Затем по сигналу с датчика температуры (превышение температуры) нагрев отключается в программе плк (и выключается тумблер на панели). Но когда я вновь включаю тумблер, он встаёт в положение True, при том что в плк значение X = false, так как сигнал с датчика температуры автоматически каждый цикл сбрасывает resetом значение X. Собственно это можно видеть при отладке на плк. Таким образом в плк X=false, а на панели X = true, то есть значение битового переключателя не соответствует плк. Такое происходит только если значение X регулярно сбрасывается (если скажем X сбросить по фронту бита превышения температуры, то все нормально).
Я подумал, что здесь дело в выставлении флагов изменения переменных в opc ua, Я значение записываю, оно тут же сбрасывается и флаг не выставляется, и на панели значение не меняется и не соответствует истинному.
Собственно вот хочу понять, правильно ли я догадываюсь
kondor3000
16.09.2024, 21:10
Благодарю, но дело то тут в том что в плк значение X=false, а переключатель показывает True. Представьте что X - включение выключение нагрева. Первоначально нагрев был включен, с панели. Затем по сигналу с датчика температуры (превышение температуры) нагрев отключается в программе плк (и выключается тумблер на панели). Но когда я вновь включаю тумблер, он встаёт в положение True, при том что в плк значение X = false, так как сигнал с датчика температуры автоматически каждый цикл сбрасывает resetом значение X. Собственно это можно видеть при отладке на плк. Таким образом в плк X=false, а на панели X = true, то есть значение битового переключателя не соответствует плк. Такое происходит только если значение X регулярно сбрасывается (если скажем X сбросить по фронту бита превышения температуры, то все нормально).
Я подумал, что здесь дело в выставлении флагов изменения переменных в opc ua, Я значение записываю, оно тут же сбрасывается и флаг не выставляется, и на панели значение не меняется и не соответствует истинному.
Собственно вот хочу понять, правильно ли я догадываюсь
Ну проверить это можно, отвязать переменную от сброса на время или сделать сброс через R_trig например. Постоянно сброс не должен работать, а должен сбросить разово, поэтому с панели и не управляется.
Евгений Кислов
17.09.2024, 06:15
Благодарю, но дело то тут в том что в плк значение X=false, а переключатель показывает True. Представьте что X - включение выключение нагрева. Первоначально нагрев был включен, с панели. Затем по сигналу с датчика температуры (превышение температуры) нагрев отключается в программе плк (и выключается тумблер на панели). Но когда я вновь включаю тумблер, он встаёт в положение True, при том что в плк значение X = false, так как сигнал с датчика температуры автоматически каждый цикл сбрасывает resetом значение X. Собственно это можно видеть при отладке на плк. Таким образом в плк X=false, а на панели X = true, то есть значение битового переключателя не соответствует плк. Такое происходит только если значение X регулярно сбрасывается (если скажем X сбросить по фронту бита превышения температуры, то все нормально).
Я подумал, что здесь дело в выставлении флагов изменения переменных в opc ua, Я значение записываю, оно тут же сбрасывается и флаг не выставляется, и на панели значение не меняется и не соответствует истинному.
Собственно вот хочу понять, правильно ли я догадываюсь
Добрый день.
Чтобы добиться того поведения, которое вы ожидаете - в EasyBuilder в расширенных настройках OPC UA (они скрываются за кнопкой Безопасность, Аутентификация) установите Режим обновления = Режим запроса.
78635
Здравствуйте!
Прошу подсказать по следующей проблеме с использованием OPC UA на ПЛК 210. Есть контроллер ПЛК 210 и панель Weintek. В контроллере есть булевая переменная X, которая включена в символьную конфигурацию, и доступна к обмену по OPC. В интерфейсе панели weintek есть битовый переключатель, через него меняется и отображается значение данной переменной X. Предположим на контроллер приходит внешний сигнал, о необходимости задать X=false. Теперь каждый цикл в контроллере записывается X=false. Значение на панели соответственно изменилось, условный тумблер выключен. Но когда на панели я включаю данный тумблер (задаю X=true), он не выключается автоматически, то есть тумблер остается включенным, при том что он вроде бы должен автоматически выключиться (так как в контроллере задается X=false). При этом в памяти контроллера X=false, получается значение битового переключателя и переменной в этот момент "не связаны". Подскажите, в чем может быть причина?
Предлагаю добавить ещё пару переменных "Включить нагрев" и "Выключить нагрев", которые будут управлять состоянием переменной нагрева (управление импульсное, по фронту сигнала). На панели можно управлять видимостью кнопок "Включить нагрев" и "Выключить нагрев" по состоянию Х.
Данный режим более однозначен при использовании и избавляет от подобных проблем с "обратной связью"
korben_um
17.06.2025, 19:17
Добрый день.
Чтобы добиться того поведения, которое вы ожидаете - в EasyBuilder в расширенных настройках OPC UA (они скрываются за кнопкой Безопасность, Аутентификация) установите Режим обновления = Режим запроса.
78635
А можете пожалуйста подробнее объяснить разницу между этими двумя режимами
Евгений Кислов
17.06.2025, 20:14
А можете пожалуйста подробнее объяснить разницу между этими двумя режимами
Режим запроса - клиент (панель) циклически отправляет запрос на чтение переменных, сервер (ПЛК) в ответ отправляет их значения (даже если они не изменились с момента предыдущего запроса).
Подписка - сервер (ПЛК) с заданным периодом (см. скриншот) отправляет клиенту (панели) информацию об изменившихся с момента предыдущей отправки переменных (т. е. если у переменных изменились значения или статус).
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot