Здравствуйте! Пишу OPC клиент на C#.
Схема такая:
1) ПЛК + терминал Телеофис и OPC клиент связаны между собой OPC сервером.
2) ПЛК еще связан с панелью оператора.
3) Получается в этой схеме:
а) Панель оператора является мастером для ПЛК.
б) ПЛК с подключенным терминалом Телеофис является мастером для ОРС сервера, т.е. может писать и читать с сервера.
в) ОРС клиент, который пишется на C#, пишет в ОРС сервер и читает с него.
У меня вот какой вопрос назрел:
Мне нужно реализовать возможность задания, например, частоты, как с ОРС клиента, так и с панели оператора.
Когда панелька отправляет данные в ПЛК, то проблем нет, так как она при вводе значения на панели оператора единожды отправляет команду на запись этого регистра в ПЛК.
А вот в связке "ПЛК - ОРС сервер - ОРС клиент" возникнет такая проблемка:
1) ОРС клиент отправляет в ОРС сервер в тег "Задание частоты" значение, например, 10.
2) ПЛК циклично считывает с ОРС сервера этот тег и записывает себе в регистр уставки частоты.
Получается, что попытки записать это же значение с панели оператора будут безуспешны, так как ПЛК после каждого чтения с ОРС сервера будет его перезаписывать полученным значением равным 10.
Подскажите, пожалуйста, какие существуют способы решения этого вопроса?
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Запись регистров в ПЛК с панели оператора и с OPC клиента
Модератор: Глоб.модераторы
-
- освоился
- Сообщения: 259
- Зарегистрирован: 01 фев 2010, 10:37
- Имя: Александр
- Страна: Россия
- город/регион: Брянск
- Благодарил (а): 10 раз
- Поблагодарили: 33 раза
Запись регистров в ПЛК с панели оператора и с OPC клиента
Вам нужно реализовать паттерн «команда».
В простейшем случае после задания частоты значение должно сбрасываться на дефолтное (например на ноль). Т.е. контроллер читает значение из тега OPC сервера, копирует его в свою внутреннюю переменную, а значение тега обнуляет.
В простейшем случае после задания частоты значение должно сбрасываться на дефолтное (например на ноль). Т.е. контроллер читает значение из тега OPC сервера, копирует его в свою внутреннюю переменную, а значение тега обнуляет.
-
- здесь недавно
- Сообщения: 19
- Зарегистрирован: 14 май 2021, 08:59
- Имя: Артём
- Благодарил (а): 8 раз
Запись регистров в ПЛК с панели оператора и с OPC клиента
Спасибо за ответ! Мысль сделать тег "Команда на запись" крутилась в моей голове, а вот со сбросом на дефолтное нет. Пожалуй, приму за дефолтное что-то типа "-99999" и создам для каждой переменной на запись дополнительную переменную на запись. Таким образом будет две переменной:SaNNy писал(а): ↑07 авг 2024, 18:41 Вам нужно реализовать паттерн «команда».
В простейшем случае после задания частоты значение должно сбрасываться на дефолтное (например на ноль). Т.е. контроллер читает значение из тега OPC сервера, копирует его в свою внутреннюю переменную, а значение тега обнуляет.
1) Текущее значение, чтобы видеть текущее значение уставки
2) Значение на запись, которое от ПЛК будет принимать значение "-99999" после того, как ПЛК его запишет в текущее значение.