Данная статья является продолжением этой статьи:

Протоколы (устройства) системы DevelSCADA (часть 1)
Система DevelSCADA, как и любая SCADA система, в первую очередь предназначена для взаимодействия с к...
habr.com

Перед прочтением данной статьи, желательно ознакомиться с предыдущей, так как в ней может находиться информация, необходимая для понимания текущей.

Устройство "OPC UA"

Протокол OPC является наиболее универсальным, так как поддерживает все популярные типы данных и механизмы обмена информации, поэтому многие SCADA системы в принципе не поддерживают никаких дополнительных протоколов, помимо OPC, и подключение к другим протоколам осуществляют посредством сторонних OPC серверов. В DevelSCADA же работа с наиболее популярными протоколами ведется напрямую, а OPC используется для работы с протоколами, поддержка которых еще не реализована в ядре.

В DevelSCADA используется версия протокола OPC UA, так как он на данный момент является наиболее популярным и кросплатформенным. Так же протокол OPC UA имеет множество механизмов по защите соединения, что может быть актуальным при работе по незащищенном каналам связи (к примеру через сеть интернет).

К основным настройкам OPC UA относятся URI - адрес сервера и TCP порт.

По умолчанию в DevelSCADA в них забиты, так же как в Modbus, настройки нашего тестового сервера, на котором можно производить эксперименты.

Флаг игнорирования ошибок сертификата может быть необходим, когда на сервере имеются с ним проблемы, к примеру когда он просрочен (что не редко). Если соединение выполняется с корректно настроенным сервером, то рекомендуется этот флаг снимать.

Так как протокол OPC UA может использовать достаточно широкий набор алгоритмов шифрования, далеко не все устройства весь этот набор поддерживают. Чтобы определить какой набор методов шифрования поддерживает устройство, можно использовать кнопку «Поиск доступных».

При нажатии на эту кнопку, на сервер отправляется запрос списка поддерживаемых им методов шифрования, после чего он сравнивается со списком, который поддерживает клиент и далее открывается всплывающее окно, в котором этот список предоставлен, и кнопкой «Выбрать» можно выбрать необходимый, поддерживаемый обеими сторонами (при этом неактивная кнопка информирует о том, что одна из сторон не поддерживает данный метод).

Так же имеется возможность выбирать методы шифрования вручную, при необходимости.

Так же имеется возможность выбирать методы шифрования вручную, при необходимости.

В отличие от более примитивных протоколов, OPC UA позволяет получить список тегов автоматически с сервера, без необходимости вносить их список вручную. Чтобы найти все доступные теги сервера, необходимо нажать кнопку «Найти теги», после чего загрузится список доступных тегов сервера.

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

Развернув и включив необходимые теги, мы сразу же увидим хранимые в них данные. Имя переменной автоматически подтягивается с сервера, но мы со своей стороны можем его отредактировать так, чтобы нам в дальнейшем было удобно с ними работать. Поля значений подсвечены желтым цветом, что сигнализирует о том, что данные так же доступны и для записи, их редактирование возможно как из среды исполнения, так и в окне конфигурации устройства.

Устройство "Память"

Устройство Память, так же как и Часы, является виртуальным устройством, и не предназначено для обмена данными с внешним миром, но при этом оно является достаточно важным и удобным механизмом взаимодействия различных подсистем DevelSCADA. Его удобство заключается в том, что с ним можно работать теми же средствами DevelSCADA, что и с обычными устройствами, обращаясь к его переменным/регистрам. К примеру делать к ним привязки, обращаться к ним из скриптов GUI или ПЛК, получать к нему доступ из приложений, записывать их изменения в журнал или архив. Так же в устройстве памяти удобно хранить конфигурацию системы, либо глобальные данные, от которых зависит логика работы алгоритмов системы, при этом контролируя их значения в процессе работы системы в окне конфигурации устройства.

Переменные устройства Память могут быть оперативные и постоянные, что выбирается флагом ПостояннаяОперативные переменные хранят свое значение только во время работы самой платформы. При перезагрузке системы, значения переменных из оперативных переменных пропадают. Такие переменные обычно используются для хранения внутреннего состояния системы только в процессе работы. В свою очередь постоянные переменные сохраняют свои значения в энергонезависимой памяти платформы, и восстанавливают свои значения после перезагрузки платформы. Такие переменные удобно использовать для хранения конфигурации системы.

Так же устройство Память можно использовать для эмуляции какого-то реального устройства в целях эксперимента, однако если в дальнейшем потребуется его заменить на реальное устройство, то придется переносить все привязки в системе на новое устройство, что неудобно, поэтому в таких случаях рекомендуется использовать режим эмуляции реального устройства.

Режим эмуляции устройств и маскирование

В процессе наладки не редко возникает необходимость создать специфичную ситуацию на устройстве, чтобы проверить отработку алгоритмов SCADA системы. Однако это не всегда возможно сделать (к примеру когда оборудование в работе, и его останов недопустим). В таком случае можно воспользоваться режимами эмуляции устройств или маскирования переменных.

Эмуляции включается через переключатель режимов работы устройства.

В этом режиме SCADA отключается от реального устройства, и все значения его регистров становятся доступным для редактирования из конфигуратора (даже те, которые в реальном устройстве только для чтения).

Для проверки режимов создадим подключение по Modbus к тестовому серверу, а на экране разместим текстовое поле с привязкой к переменной устройства. Запустим проект, убедившись что все корректно работает.

В данном случае, на экране среды исполнения мы видим реальное значение регистра устройства.

Теперь переведем устройство в режим «Эмуляция». Теперь мы можем выставлять любое значение вместо реального в регистр устройства, оно не повлияет на состояние самого устройства, при этом в окне среды исполнения мы увидим не реальное значение, а эмулируемое, выставленное нами вручную.

Вернув режим работы устройства обратно, в состояние «Работа», мы снова увидим реальные значения с устройства.

Если необходимо эмулировать не все регистры устройства, а только выборочные, для этого можно воспользоваться режимом маскирования. Данный режим так же не влияет на работу устройства, при этом не происходит отключение от него, перестает опрашиваться только тот регистр, который переведен в этот режим. В остальном данный регистр начинает работать так же как и в режиме эмуляции.

Режим маскирования активируется при клике на пиктограмме маски напротив нужного регистра устройства.