Начиная с версии 4.4 операционной системы контроллеров линейки S7-1200 появилась возможность опрашивать их по протоколу OPC UA. В настоящий момент времени поддерживается только серверная часть (ПЛК может отвечать на запросы клиентов), клиентская часть — не поддерживается.
В настройке OPC UA сервера на S7-1200 есть отличия от S7-1500 (забегая вперед, скажу, что серверный интерфейс требуется создавать вручную, без этого ПЛК не будет отдавать никаких пользовательских данных, хотя и разрешит входящие подключения).
В первую очередь заходим в свойства и включаем сервер OPC UA.
Не забываем так же указать в настройках, что лицензия на OPC UA была приобретена.
То есть, если не вдаваться в важные тонкости, вроде шифрования трафика и вопросов ограничения доступа, все делаем, как и для S7-1500. Чтобы продемонстрировать ошибочность этого подхода, выполним загрузку CPU прямо сейчас и подпробуем к нему подключиться. В качестве клиента OPC UA применяется та же программа, которая использовалась в примерах работы протокола для линейки S7-1500. Единственное отличие заключается в том, что при установленной на программатор Windows 10 программу-клиент мне приходится запускать с администраторскими полномочиями.
Подключимся к ПЛК.
Сколько ни крути, сколько ни ищи, но никаких переменных пользовательской программы мы сейчас не найдем. Только разного рода вспомогательная информация по серверу.
Связано это с тем, что у нас не создан серверный интерфейс, то есть, не указаны переменные, которые сервер будет отдавать клиенту. В серии S7-1500 этот интерфейс создается по-умолчанию в настройках CPU, и по умолчанию OPC UA сервер отдает все тэги, для которых проставлены разрешения к доступу по OPC UA. Посмотрим скрин-шот настройки серверы для CPU S7-1516
Для 1200ой серии необходимо найти в дереве проекта OPC UA Communications > Server Interfaces и нажать там Add new server interface
Далее перетащим из правой части экрана в левую те тэги, доступ к котором необходимо предоставить по протоколу OPC UA
Выполним компиляцию и загрузим ПЛК. Теперь попробуем подключиться к OPC UA заново. Теперь у нас появился интерфейс Server interface_1 и все заданные в нем переменные.
Значение переменной успешно читается.
AndreyDmitriev
А ОPC UA методы клиенту можно вызывать или только статические переменные поддерживаются?
xztau
Чтение и запись переменных по OPC UA.
как то так
akcount Автор
Пока что так:
A S7-1200 CPU does not support methods.
В будущих версиях прошивки ситуация может измениться.
akcount Автор
Ну, а для продвинутой серии 1500 методы давно поддерживаются
Кстати, коллега, раз уж Вы заговорили… Лично я, в силу убогости фантазии, совершенно не понимаю, зачем нужны эти методы? Ведь проще же по старинке поднять булевый флаг на ПЛК, по взведению которого программа ПЛК сама все отработает.
AndreyDmitriev
В некоторых случаях методы удобнее и проще чем булевы флаги и могут заменить классическое «рукопожатие» с двумя булевыми битами (handshake я имею ввиду), особенно если оно должно выполняться с таймаутом и обмен подразумевает несколько переменных — там всё в метод встроено, плюс бонусом вы получаете возвращаемый параметр, что заметно уменьшает количество «обвеса» переменным. А так да, в принципе любой метод можно заменить логикой «по старинке». Я б посоветовал изначально делать именно по старинке, а потом на этапе рефакторинга посмотреть, где можно заменить логику методами.
Stasik0
Плюс во многих companion specs предусматриваются методы, например управление переходами между состояниями автомата PackML.
Применение OPC UA просто шире, чем цикличные ПЛК.
akcount Автор
[вздыхает]
К сожалению, от моего скудного асушного ума ускользает и смысл спецификации компаньона.
Stasik0
Общие типы и интерфейсы неплохи. Ну например: стандартная спецификация сигналов с верхней и нижней границей и единицей измерения (opc ua di) — вот у тебя и возможность цеплять скаду и hmi полуавтоматически.
Или стандартные типы представления автоматов через объекты для состояний и переходов (opc ua ns0 или packml) — можно использовать для мониторинга и расчета oee.
Или стандартные параметры сенсоров (opc ua di и pa dim), например серийные номера устройств итд.
Есть plcopen companion. Через него можно, в теории, браузить и менять логику в плк через стандартный интерфейс...