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

На данный момент DevelSCADA поддерживает следующие типы устройств:

  • Часы

  • Modbus

  • OPC UA

  • Память

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

Добавление устройства

Для добавления устройства, необходимо кликнуть правой кнопкой в дереве проектов на разделе «Устройства», в выпадающем списке выбрать пункт «Добавить», либо же выделить раздел «Устройства» и в нем нажать кнопку «Добавить».

Откроется всплывающее окно, в котором необходимо будет выбрать тип добавляемого устройства.

Устройство "Часы"

Устройство «Часы» представляет собой виртуальное устройство, задачей которого - получение текущего времени той системы, на которой работает среда исполнения (важно понимать, что время берется не с той системы, на которой запущен будет клиент, той, на которой непосредственно работает сервер). Зачастую данное устройство применяется лишь для вывода текущего времени/даты на экран, либо для отладочных целей, чтобы иметь возможность получать изменяющиеся во времени данные.

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

Все устройства в системе DevelSCADA, находящиеся в режиме Работа, предоставляют свои данные в режиме реального времени, а так же позволяют их изменять (если это разрешено параметрами доступа самого устройства) в окне конфигуратора устройства. Это достаточно удобно в процессе наладки, и позволяет получить информацию об устройстве без необходимости запуска самой системы. В случае с устройством Часы, оно предоставляет свои данные только для чтения (для изменения системного времени, необходимо воспользоваться функцией скриптов pm.sysSetDate).

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

Далее запустим проект на исполнение, и у видим значения времени в текстовом поле.

Устройство "Modbus"

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

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

Все полноценные устройства в системе DevelSCADA имеют ряд общих настроек, а так же настройки, индивидуальные, в зависимости от типа используемого протокола. К общим настройками относятся:

  • Режим

  • Состояние

  • Флаг включения журнала

Режим позволяет управлять состоянием устройства, а состояние - отображает, соответственно, текущее состояние устройства.

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

При выборе режима «Работа», SCADA система запускает процедуру установки связи с устройством, и если она прошла успешно, то запускает цикл обмена данными с устройством.

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

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

Флаг включения журнала (Записывать изменения состояний в журнал логов) позволяет включить запись обо всех изменений состояния в системный журнал. Это иногда необходимо для проведения анализа причин возникающих неполадок с устройством, или при часто меняющихся сообщений о состоянии устройства.

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

Параметр «Тип протокола» указывает каким образом у нас подключено устройство. Тип TCP подразумевает подключение устройства посредством шины Ethernet или Wi-Fi, а тип RTU - по последовательной шине (RS-232, RS-485 и т.д.). В зависимости от выбранного типа протокола, становятся доступны настройки, соответствующие ему.

Поле «адрес устройства» задает адрес на шине Modbus. Он необходим для адресации устройств на последовательной шине (в режиме RTU), но так же он рудиментарно присутствует и при работе в сети Ethernet. В сети ethernet обычно этот адрес не нужен, так как стек TCP/IP предоставляет свои механизмы адресации (IP адрес и порт), однако иногда устройства все равно дополнительно привязываются еще и к этому адресу, и не отвечают по отличному от него. Так же этот адрес бывает полезен при использовании преобразователей шин по типу «Ethernet to RS-485». При использовании таких преобразователей, для настройки связи используется первичный протокол TCP, с указанием IP адреса преобразователя, а внутри преобразователя, для пересылки данных к нужному устройству на последовательной шине, уже используется адрес устройства из протокола Modbus.

Для протокола TCP доступны следующие поля для настройки:

  • IP - ip адрес устройства, или его доменное имя;

  • порт - TCP порт, на котором устройство принимает соединение.

Для протокола RTU доступны следующие поля для настройки:

  • Порт - последовательный порт системы, к которому подключена шина с устройствами;

  • скорость - скорость обмена данными по шине;

  • четность - включение бита четности;

  • стоповый бит - выбор размера стопового бита.

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

При выборе протокола TCP, по умолчанию выставляются настройки тестового сервера, в частности имя хоста modbus.develscada.ru и порт 8502.

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

Создадим две переменные с именем myVar1 и myVar2 с одним и тем же адресом, но разными типами доступа (R - только для чтения, RW - для чтения и записи), обоим зададим тип беззнаковый 16 бит. В реальных устройствах зачастую регистры для чтения и для чтения/записи имеют разные адресные пространства, и соответственно, хранят разные данные, в нашем устройстве они объединены.

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

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

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

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

Сразу же после добавления нового регистра, мы увидим как в него приходят новые данные с устройства.

Так же в режиме реального времени мы можем задать новое значение для регистра myVar2, а для регистра myVar1 при этом не можем, так как он только для чтения, но так как они находятся в общем адресном пространстве, заданное нами значение мы увидим сразу в обоих регистрах.

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

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

Протоколы (устройства) системы DevelSCADA (часть 2)
Данная статья является продолжением этой статьи: Протоколы (устройства) системы DevelSCADA (часть 1)...
habr.com