Нужна ясность по серверу opc ua и клиенту opc ua
Я хотел бы создать приложение для промышленной автоматизации, которое будет выполнять следующие функции:
- Считывание значений из ПЛК, SCADA и DCA
- Обработать эти значения и уведомить об ошибках супервизора и техника.
Я новичок в индустрии промышленной автоматизации и Интернета вещей, и я знал, что у нас есть OPC UA на помощь.
Я наткнулся на множество веб-сайтов и видеороликов на YouTube, чтобы понять OPC UA и его предшественников (OPC DA, OPC A&E, OPC HDA). И я установил сервер Matrikon OPC и проводник (клиент), чтобы узнать больше.
Допустим, я хочу читать сигналы от ПЛК SIMATIC S7-1200, насколько я понимаю, сервер OPC UA поставляется с ПЛК для преобразования информации OPC UA в информацию Profinet.
Итак, мои вопросы:
- Где мне нужно писать логику для чтения значений? OPC-сервер или клиент?
- Я собираюсь использовать NODE-OPC-UA. Есть ли какой-нибудь графический интерфейс клиента OPC с открытым исходным кодом?
- Как написать собственный OPC-сервер для ПЛК, не имеющий претензий к OPC UA?
Если кто поделится какими-то ресурсами, буду признателен!
3 ответа
Где мне нужно писать логику для чтения значений? OPC-сервер или клиент?
В OPC UA сервер, как правило, представляет собой устройство или компонент, который предоставляет данные клиентам OPC UA. В вашем случае сервером OPC UA является SIMATIC S7. Затем используется клиент OPC UA для чтения значений переменных с этого сервера.
Для отладки и проверки вы можете использовать, например, бесплатный (коммерческий) инструмент UaExpert. Вы можете использовать его только для просмотра текущих данных сервера, вы не можете использовать его для программирования своей логики вокруг него.
Наконец, чтобы ответить на ваш вопрос: вам необходимо использовать SDK клиента OPC UA для чтения значений с сервера OPC UA и реализации своей собственной логики вокруг него. Доступны коммерческие стеки OPC UA и стеки с открытым исходным кодом. Список стеков с открытым исходным кодом можно найти здесь: Open Source OPC UA Stacks.
Я знаю, что стек open62541 может подключаться к Simatic S7 и считывать значения из узлов переменных.
Я собираюсь использовать NODE-OPC-UA. Есть ли какой-нибудь графический интерфейс клиента OPC с открытым исходным кодом?
Клиентский графический интерфейс OPC - довольно общий термин. Какова ваша цель для графического интерфейса? Если он нужен просто для отладки и проверки, воспользуйтесь UaExpert. Поскольку OPC UA - это просто определение структуры и протокола, вам необходимо самостоятельно запрограммировать логику значений. В настоящее время на самом деле не существует общего графического интерфейса пользователя OPC UA, с помощью которого вы могли бы легко определить свою собственную логику в качестве клиента OPC UA. Для этого используйте любой клиентский SDK OPC UA.
Как написать собственный OPC-сервер для ПЛК, не имеющий претензий к OPC UA?
На этот вопрос нельзя дать общий ответ. Это сильно зависит от того, какое оборудование ПЛК вы используете. Например, можно ли напрямую поместить свою программу в ПЛК? Он полностью закрыт, и вам нужно использовать интерфейс fieldbus для связи с ПЛК?
Типичным решением для этого может быть реализация сервера OPC UA на внешнем устройстве, например, ПК. Этот ПК напрямую связан с ПЛК. Затем внутри вашей реализации вам необходимо реализовать связь с ПЛК, а затем сопоставить полученные значения ПЛК с переменными сервера OPC UA. Таким образом, ваш сервер OPC UA выступает в качестве шлюза.
Забудьте о предыдущих версиях OPC (OPC DA, OPC A&E, OPC HDA), они являются устаревшими версиями и заменены на OPC UA.
Кроме того, устаревшие версии основаны на Windows DCOM и поэтому могут быть установлены только на компьютере с Windows.
Напротив, OPC UA не зависит от платформы и даже может быть установлен в самом ПЛК, как некоторые производители ПЛК, которые уже предлагают интегрированный сервер OPC UA.
Если вы используете ПЛК со встроенным сервером, вам понадобится только клиент OPC UA для чтения и записи данных ПЛК.
Если вместо этого ПЛК не имеет сервера OPC UA, то сервер OPC UA должен быть установлен на компьютере, который, с одной стороны, считывает или записывает данные из ПЛК, используя протокол, который понимает ПЛК (Profinet, Ethernet/IP, Modbus, Fins и т. д. ...), а с другой стороны клиенты OPC UA могут читать и писать
Насколько я помню, S7-1200 не имеет встроенного сервера OPC UA, а S7-1500 есть.
Как написать собственный OPC-сервер для ПЛК, не имеющий претензий к OPC UA?
Йо не может этого сделать. В ПЛК со встроенным сервером OPC UA он встроен в свою прошивку, и только производитель может его запрограммировать.