Программируемые логические контроллеры с поддержкой технологии OPC применяются в системах автоматизации, где данные из ПЛК необходимо передавать в SCADA, операторские станции, MES, системы диспетчеризации и производственного учёта. Через OPC внешнее программное обеспечение получает значения технологических параметров, состояния оборудования, диагностические сообщения и счётчики. При наличии прав на запись в контроллер можно передавать уставки и команды оператора.
OPC представляет собой семейство технологий для стандартизированного обмена данными между промышленным оборудованием и программами верхнего уровня. С помощью OPC значения переменных ПЛК передаются в SCADA, операторские интерфейсы, MES, системы диспетчеризации, архивирования и производственного учёта.
OPC DA расшифровывается как OPC Data Access, то есть «доступ к данным». Это технология семейства OPC Classic, предназначенная прежде всего для передачи текущих значений технологических переменных. Вместе со значением могут передаваться время его получения и признак качества.
OPC UA расшифровывается как OPC Unified Architecture, то есть «унифицированная архитектура OPC». Это современная платформонезависимая технология, которая объединяет обмен данными, структурированное представление информации и механизмы безопасности.
OPC DA основан на технологиях Microsoft COM/DCOM, поэтому OPC DA-сервер обычно работает на компьютере с Windows. OPC UA не зависит от COM/DCOM, поэтому сервер может работать непосредственно в промышленном контроллере.
В обоих случаях обмен строится между сервером и клиентом. OPC-сервер предоставляет доступ к переменным, а OPC-клиент читает их значения, получает обновления и, при наличии соответствующих прав, записывает новые значения.
Например, ПЛК получает от модуля аналогового ввода значение температуры и записывает его в переменную. OPC-сервер предоставляет эту переменную SCADA. SCADA отображает температуру на экране оператора и сохраняет её в архив. Если оператор изменяет уставку, новое значение через OPC передаётся в разрешённую для записи переменную контроллера.