1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Запись регистров в ПЛК с панели оператора и с OPC клиента

SCADA, серверы, АРМ верхнего уровня, диспетчерские

Модератор: Глоб.модераторы

Ответить

Автор темы
iikiikiik
здесь недавно
здесь недавно
Сообщения: 19
Зарегистрирован: 14 май 2021, 08:59
Имя: Артём
Благодарил (а): 8 раз

Запись регистров в ПЛК с панели оператора и с OPC клиента

Сообщение iikiikiik »

Здравствуйте! Пишу OPC клиент на C#.

Схема такая:
1) ПЛК + терминал Телеофис и OPC клиент связаны между собой OPC сервером.
2) ПЛК еще связан с панелью оператора.
3) Получается в этой схеме:
а) Панель оператора является мастером для ПЛК.
б) ПЛК с подключенным терминалом Телеофис является мастером для ОРС сервера, т.е. может писать и читать с сервера.
в) ОРС клиент, который пишется на C#, пишет в ОРС сервер и читает с него.

У меня вот какой вопрос назрел:

Мне нужно реализовать возможность задания, например, частоты, как с ОРС клиента, так и с панели оператора.

Когда панелька отправляет данные в ПЛК, то проблем нет, так как она при вводе значения на панели оператора единожды отправляет команду на запись этого регистра в ПЛК.

А вот в связке "ПЛК - ОРС сервер - ОРС клиент" возникнет такая проблемка:
1) ОРС клиент отправляет в ОРС сервер в тег "Задание частоты" значение, например, 10.
2) ПЛК циклично считывает с ОРС сервера этот тег и записывает себе в регистр уставки частоты.

Получается, что попытки записать это же значение с панели оператора будут безуспешны, так как ПЛК после каждого чтения с ОРС сервера будет его перезаписывать полученным значением равным 10.

Подскажите, пожалуйста, какие существуют способы решения этого вопроса?

SaNNy
освоился
освоился
Сообщения: 259
Зарегистрирован: 01 фев 2010, 10:37
Имя: Александр
Страна: Россия
город/регион: Брянск
Благодарил (а): 10 раз
Поблагодарили: 33 раза

Запись регистров в ПЛК с панели оператора и с OPC клиента

Сообщение SaNNy »

Вам нужно реализовать паттерн «команда».
В простейшем случае после задания частоты значение должно сбрасываться на дефолтное (например на ноль). Т.е. контроллер читает значение из тега OPC сервера, копирует его в свою внутреннюю переменную, а значение тега обнуляет.

Автор темы
iikiikiik
здесь недавно
здесь недавно
Сообщения: 19
Зарегистрирован: 14 май 2021, 08:59
Имя: Артём
Благодарил (а): 8 раз

Запись регистров в ПЛК с панели оператора и с OPC клиента

Сообщение iikiikiik »

SaNNy писал(а): 07 авг 2024, 18:41 Вам нужно реализовать паттерн «команда».
В простейшем случае после задания частоты значение должно сбрасываться на дефолтное (например на ноль). Т.е. контроллер читает значение из тега OPC сервера, копирует его в свою внутреннюю переменную, а значение тега обнуляет.
Спасибо за ответ! Мысль сделать тег "Команда на запись" крутилась в моей голове, а вот со сбросом на дефолтное нет. Пожалуй, приму за дефолтное что-то типа "-99999" и создам для каждой переменной на запись дополнительную переменную на запись. Таким образом будет две переменной:
1) Текущее значение, чтобы видеть текущее значение уставки
2) Значение на запись, которое от ПЛК будет принимать значение "-99999" после того, как ПЛК его запишет в текущее значение.
Ответить

Вернуться в «Верхний уровень автоматизации (отображение)»