PDA

Просмотр полной версии : Свой псевдо-OPC сервер



PupaJr
12.07.2023, 13:33
Доброго дня всем. Возможно не в том разделе, поправьте если что модераторы.
Задача - нужно регистрировать 4 параметра установки во времени - 2 температуры, влажность и давление в камере. Плюсом бы ещё датчики аварий и концевички. Когда надо потом ещё поднять архив записей. В идеале бы ещё задавать параметры с ПК а не только с панели HMI.
Контроллер свежий СПК107[M01] с Ethernet.
Почитав форумы узнал что встроенный "тренд" глючит при внезапном отключении питания+износ встроенной памяти+пр...
Было решено перенести это всё на простой ПК оператора/технолога, который сидит за стеной в соседней комнате.
Вариантов особо не много - сторонний OPC(платный/бесплатный) и писать для него софт на какой-то SCADA, или сразу писать своё, задача простецкая и платить кило-рубли за рисование графика.. как-то не айс...
Подключившись снифером на 485 я прекрасно вижу все данные АЦП датчиков, и все порты вв/выв. То есть самый простой "быдло-код" покажет мне полную картину о состоянии всей установки на любом офисном ПК под удобным GUI написанным под любую WIN. Также, панель специально купленная с Ethernet, чтобы подключиться в заводскую сеть ну или на прямую в LAN пк.
Теперь самое интересное - как это делают "фирменные" OPC/SCADA ?? Для того чтобы считывать данные с модулей достаточно их просто "слушать" - что я и сделал. Другое дело если надо включать-выключать принудительно элементы на объекте или задавать режимы работы как на экране СПК в поле ввода, "мастер" на ModBusRTU только один, да и след. пакет затрёт твои данные, тоесть надо как-то договариваться с встроенным контроллером - кто в данный момент управляет оборудованием. Также должна быть возможность работать полностью автономно - но уже без регистрации тренда.
Если контроллер всегда выступает мастером на шине то OPC сервер подключаясь к шине должен быть "прописан в проекте" как некий объект со своими параметрами - виртуальные входа/кнопки управления оборудованием и поля ввода параметров (допустим температура). Причём я его могу подключить как ModBusTRU_Over_Eternet.
Алгоритм:
1)если мне нужно получить просто графики - сканирую 485, выхватываю пакеты АЦП и дальше их обрабатываю как надо.
2)если мне нужно ещё подёргать принудительно каким-либо клапаном/реле мне надо "сказать" контроллеру что управление "беру на себя" - это можно создать из ПК виртуальный модуль ввода и ПЛК его читая видит что установлен скажем бит приоритета ПК и отдаёт ему управление на некоторое оборудование продолжая выполнять основную программу.
3)если мне нужно передать новые значения режима работы (давление/температура) то тут сложнее - уже вклиниться с протокол не получится - так как эта информация храниться внутри СПК107. В связи с этим вопрос - как это делают OPC/SCADA?

Всё это конечно выглядит как "велосипед", но чтобы решить простую задачу надо кучу софта ставить, у которого есть куча версий и несовместимостей, изучить конкретный OPC и к нему ещё конкретную SCADA...
Должно быть всё локанично - вкл/выкл, окно параметров.. всё. Посмотрев на то что есть и каким длинным путём они настраиваются, + наверняка встроенные баги и пр. проблемы с обновлениями и т.д.

Основной вопрос и стоит в том, как передать в СПК107 новые параметры техпроцесса по сети 485 или Ethernet (прописать ещё какое-то устройство в проекте ? и как его настроить). Может есть уже , но поиск не дал информации.
П.. е в нужном направлении.
Спасибо :) .

1exan
12.07.2023, 14:37
Ну если для вас писать своё - задача лёгкая (и дешёвая), то вперёд.
А вообще практически все скады имеют бесплатные версии на 32 тега, опс сервер овна вообще бесплатный вроде. Делаете СПК слейвом, читаете с тего нужные данные и при необходимости дёргаете нужные регистры для внешнего управления
Баги, длинный путь - да, есть такое, но ваш путь возможно получится ещё длиннее

EFrol
12.07.2023, 15:04
Ни ЧЕ не понял! Но очень интересно!
Вы бродили вокруг да около (истины), но так ее и не увидели.
В любом СПК или ПЛК память делится на видимую извне и невидимую часть.
Видимая часть доступна, например, через Modbus-сервер, т.е. это те данные, которые видны как внутренней программе, так и внешним устройствам.
Теперь представим себе, что ПЛК имеет общую Modbus-таблицу, которая будет доступна через его RS-232, RS-485 и Ethernet порты.
Соответственно теперь можно управлять и задавать/считывать параметры с любого внешнего устройства.
У меня на заводе несколько контроллеров, которые разбросаны в разных цехах и очень надо, иногда, заглянуть в оперативные параметры ПЛК за сотню метров от текущего места. Ставлю панели СП3xx и через Ethernet все вижу и управляю.
Отдельно стоит ПК, на котором крутится самописный сборщик данных, который через ModbusTCP собирает те же данные в SQL.
На всех рабочих местах крутится самописная прога, которая делает выборку данных из SQL и визуализирует все, что кому приспичит.
Я не использую OPC и Scada. А зачем? Все итак работает классно! И все довольны. Зная протокол, можно в сборщик впихнуть опрос любых устройств.
Чтобы не подраться с ПЛК за ресурсы, в код ПЛК встраиваю условие, что если в этом месте установлен бит ручного управления, то такой выход/ы не трогать.
Все просто и логично. Не надо усложнять.

melky
12.07.2023, 17:06
а можно не делать мозг с самописаниной взять любую бесплатную Scada.... причем взять сразу со встроенным Modbus

Нужное направление вам уже дали, ПЛК, являясь мастером некой сети должен быть слейвом для Scada. Все. Остальное настраивается согласно выбранной Scada. А их великое множество.
Чисто с Modbus есть масса вариантов, только под Винду, только под Linux, и под то и под другое...

Еще раз, есть бесплатные не на 32/64 тега а куда больше тегов...

EFrol
12.07.2023, 17:25
Можно и не "делать мозг", если он есть конечно.
Здесь каждый выбирает сам:
Один ограничивает себя своей фантазией, а другой - фантазиями и багами других программистов.
Выбирать только Вам.

Игорюня
12.07.2023, 17:46
То же понадобилась простенькая скада, сделал за неделю в лазарусе с подключенным компонентом PASCALSCADA. Пока работает.

EFrol
12.07.2023, 19:30
То же понадобилась простенькая скада, сделал за неделю в лазарусе с подключенным компонентом PASCALSCADA. Пока работает.

Сам факт того, что этих Scada большое разнообразие, говорит о том, что не всем по вкусу один и тот же хлеб, операционная система, интернет браузер, архиватор, сотовый телефон, мышь компьютерная. Кого-то что-то все равно не устраивает - от сюда разнообразие вещей, мнений, языков программирования и т.д.

BETEP
12.07.2023, 22:11
........Подключившись снифером на 485 .........
Посоветуйте нормальный халявный сниффер компорта под семёрку и десятку 64. Т.е. не тупо переходником в линию, а именно порт компа слушать.

kon48
13.07.2023, 07:03
То же понадобилась простенькая скада, сделал за неделю в лазарусе с подключенным компонентом PASCALSCADA. Пока работает.

Уважаемый коллега по форуму восхищен вами. Просто класс - разрабтать СКАДУ за неделю !!! И все же может вы удовлетворите мое люботытство: а какие функции она выполняет?
А так успехов вам, и, чтобы СКАДА работала не пока, а и дальше.

Игорюня
13.07.2023, 07:39
Уважаемый коллега по форуму восхищен вами. Просто класс - разрабтать СКАДУ за неделю !!! И все же может вы удовлетворите мое люботытство: а какие функции она выполняет?
А так успехов вам, и, чтобы СКАДА работала не пока, а и дальше.

Она заточена на три объекта, только эти объекты, показывает температуры и давления, графики относительные показывает, тип операторам проще работать, больше не надо, я и писал, наипростейшая, базз данных нет, все равно никто не смотрит.
68797

melky
13.07.2023, 08:35
BETEP пользуюсь Advanced Serial Data Logger в trial режиме, вполне хватает. Если надо очень долго снифить, тогда не знаю... Это переходником в линию, так как собственный порт слушать, он будет занимать, но вроде тоже может.

Есть еще вариант, это цепляете устройство через преобразователь Ethernet-RS485(232) и ставите виртуальный COM порт Tibbo VPS Manager, и в комплекте есть монитор порта, тоже им часто пользуюсь

Игорюня и функционала только под вашу задачу. Но за неделю потраченного времени это еще нормально...

kon48
13.07.2023, 08:35
Она заточена на три объекта, только эти объекты, показывает температуры и давления, графики относительные показывает, тип операторам проще работать, больше не надо, я и писал, наипростейшая, базз данных нет, все равно никто не смотрит.
68797

Мнемосхема выглядит хорошо, для операторов котельной информативна. Заинтриговали меня возможностями Лазаруса. В какой версии Лазаруса реализован компонент SCADA. Очень любопытно.
С уважением

melky
13.07.2023, 08:44
То же понадобилась простенькая скада, сделал за неделю в лазарусе с подключенным компонентом PASCALSCADA. Пока работает.

kon48 так написал же человек компонент

Игорюня
13.07.2023, 12:40
Мнемосхема выглядит хорошо, для операторов котельной информативна. Заинтриговали меня возможностями Лазаруса. В какой версии Лазаруса реализован компонент SCADA. Очень любопытно.
С уважением

Последняя версия. Глючная,зато бесплатная. Компонент брал в сетевом менеджере самого лазаруса. Дольше рисовал, чем писал. Там на форму накидал и все работает

kon48
13.07.2023, 13:07
Последняя версия. Глючная,зато бесплатная. Компонент брал в сетевом менеджере самого лазаруса. Дольше рисовал, чем писал. Там на форму накидал и все работает

Спасибо за ответ. Про какую последнюю версию идет речь (Лазаруса или кмпонента)? Час назад установил Лазарус версии 2.2.0. Компонента PascalScada в нем нет. Нашел на Git, но что-то не идет.

Игорюня
13.07.2023, 15:53
Спасибо за ответ. Про какую последнюю версию идет речь (Лазаруса или кмпонента)? Час назад установил Лазарус версии 2.2.0. Компонента PascalScada в нем нет. Нашел на Git, но что-то не идет.

Версия 2.2.0 В меню "пакет"-"сетевой диспетчер пакетов" там найдете в списке, галочку, установить, соглашаетесь на пересборку и будет Вам счастье

kon48
14.07.2023, 08:19
Версия 2.2.0 В меню "пакет"-"сетевой диспетчер пакетов" там найдете в списке, галочку, установить, соглашаетесь на пересборку и будет Вам счастье

Добрый день. Спасибо за ответ!
Подсказкой воспользовался. Посмотрел в деле возможности компонентов. С некоторыми из них знаком, и использовал по-отдельности в деле в среде DELPHI. Позволяют разрабатывать прикладные программы со специализированными требованиями, отличными от возможностей SCADA. Но для промышленного применения сторонник использования проверенных решений. Их много. И для решения не больших задач они доступны.

PupaJr
15.07.2023, 05:16
Ох сколько написали, всем спасибо. так всё же, какую простую и лёгкую стыковку можно сделать - OPC+ SCADA? + Ethernet для СПК107М01 ? Писать можно, кое-что есть уже для тестов..
Задачи действительно бывают очень простые, и ставить тяжеловесов не имеет смысла.

PupaJr
15.07.2023, 05:18
OPC овна не может работать с моей панелью - нет в списке поддержки.. или я что-то не увидел.. я бы сразу туда - ан.нет..

1exan
15.07.2023, 06:39
OPC овна не может работать с моей панелью - нет в списке поддержки.. или я что-то не увидел.. я бы сразу туда - ан.нет..

У OwenOpcServer нет таких ограничений, можете использовать

imaex
15.07.2023, 07:46
какую простую и лёгкую стыковку можно сделать - OPC+ SCADA? + Ethernet для СПК107М01 ?

А в чём прикол использования OPC в этой связке? С моей т.з. использование OPC оправдано только в том случае, если нет никаких вариантов получения данных с устройства напрямую. КМК, любая SCADA должна поддерживать Modbus TCP искаропки, что называется. Мне вот, например, пришлось для обмена с как раз 107-ой панелью использовать сторонний OPC-сервер, поскольку разработчик реализовал в ней только OPC UA сервер, а рычагов влияния на него не было никаких. Как только появилась возможность забирать напрямую - эта связка была выброшена без раздумий.

melky
15.07.2023, 11:16
PupaJr каких тяжеловесов, вы о чем? Если использовать MasterScada, то да, тяжеловес. А если у вас только протокол Modbus есть системы гораздо легче

kondor3000
15.07.2023, 13:21
OPC овна не может работать с моей панелью - нет в списке поддержки.. или я что-то не увидел.. я бы сразу туда - ан.нет..

У вас панель свободно программируемая, какой тут может быть шаблон?
Вы сами, по своим адресам регистров, можете создать теги и читать, писать с панели СПК107М01.