SCADA «BortX» с поддержкой языка управления в рамках ANSI -ISA-88 для ESP8266

в 12:29, , рубрики: esp8266, IoT, scada разработка программирование, автоматизация дома, визуализация данных, Интернет вещей, программирование микроконтроллеров, Разработка для интернета вещей, умный дом

Признаюсь честно — очень люблю cовременные микроконтроллеры. В частности, производства китайского производителя Espressif Systems с интерфейсом Wi-Fi. Речь, естественно, идет о ESP8266 и ESP32, которые обладают большим потенциалом в образовательном контексте.

image

Конечно, у них есть свои недостатки. Но цена. Это чудо. В частности, если покупаешь условный «Witty Cloud» за три доллара, в котором даже не надо мучаться вопросами питания и программирования. Сфера применения в IoT позволяет создать собственные проекты автоматизации различными путями — классическим образом: путем написания кода и работы в IDE. Или через тот же FLProg. Однако, как всегда, есть нюансы, несколько тормозящие репрезентацию работы в рамках типового применения ESP8266 как аппаратной основы. И проблема вовсе не в сетевом подключении, осуществляемой к домашней/офисной локальной сети с выходом в Internet через роутер. Устройства работают прилежно и могут выступать их в качестве Zigbee-координаторов при определенной конфигурации.

ESP8266/ESP32 могут работать как в роли точки доступа так и оконечной станции. При нормальной работе в локальной сети ESP8266 конфигурируется в режим оконечной станции. Для этого устройству необходимо задать SSID Wi-Fi сети и, в закрытых сетях, пароль доступа. Для первоначального конфигурирования этих параметров удобен режим точки доступа. В режиме точки доступа устройство видно при стандартном поиске сетей в планшетах и компьютерах. Остается подключиться к устройству, открыть HTML страничку конфигурирования и задать сетевые параметры. После чего устройство штатно подключится к локальной сети в режиме оконечной станции.

Управление и визуализация данными в реальном времени – важная задача. Однако, далеко не всегда доступен быстрый старт в этом деле. А ведь после этого необходим их анализ. Важна также роль линии времени на графике — показать частоту и равномерность измерений. История процесса нужна для анализа и диагностики. Без необходимых знаний и анализа весь потенциал данных остается недоиспользованным, что является недоработкой и вызывает необходимость в инструменте, который может придавать значение цифрам и процентам наглядность и облегчать понимание и интерпретацию данных. Это необходимо в области научного эксперимента и в производственном процессе.

Онлайн-инструменты визуализации данных являются подходящим ответом на этот вызов времени. Отдельной задачей видится объединение данных, то есть синтез информации. Масштабирование во времени, выделение участка просмотра, масштабирование по оси Y, сдвиг по оси Y – все это необходимые атрибуты инструментов визуализации, благодаря которым даже самые сложные графики и диаграммы, просмотр которых вы осуществляете в панели (dashboard), будут наглядны и понятны. Одним из вариантов онлайн-визуализации данных с поддержкой SCADA является новый проект BortX.

Полагаю, что ознакомление с ним поможет вам в проведении экспериментов в реальном масштабе времени (например — в простой реализации ваших замыслов в образовательном процессе). Для работы нужно лишь зашить скетч «Спутник» на ваш ESP8266. С его кодом вы можете ознакомиться по ссылке. Модификация на ваше усмотрение — обязательное условие работы: ввести SSID и пароль для подключения ESP к вашему маршрутизатору. Кстати, пилотный проект спутника находится по адресу.

После загрузки скетча микропроцессор выводит информацию в интернет в виде web-страницы. Регистрация не нужна, ибо каждый микропроцессор имеет уникальный номер и по этому номеру осуществляется доступ через интернет. Сам ID можно узнать, открыв окно состояния COM-порта в Arduino IDE (115кбод/с):

image

По умолчанию идет TCP-порт 6110 использует протокол управления передачей данных (TCP), который является одним из основных протоколов в сетях TCP/IP. TCP является протоколом с установлением соединения и требует квитирования для установки сквозной связи. Только после установления соединения пользовательские данные могут пересылаться в обоих направлениях. Есть возможность установки пароля на страничку и т.д. Но наиболее важным элементом данной «системы» является условная поддержка языка управления из АСУ ТП.

Язык управления BS-88 основан на стандарте ISA S-88. Пример графического аналога — SFC. Язык управления позволяет ESP принимать решения о стратегиях управления на основе текущих условий и позволяет упорядочивать управление ESP в соответствии с потребностями некоторых действий. Этот язык отличается от традиционных языков программирования. Причина в том, что язык описывает действия по управлению производственным процессом.

В соответствии с BS-88, производственный процесс состоит из операций, которые могут происходить одновременно, например, нагрева воды и приготовления компонентов раствора.
В свою очередь операции состоят из фаз, которые выполняются последовательно. Существует только два типа операторов языка управления:

  1. Активные операторы.
  2. Операторы перехода (с условием или без условия) (transition).

Например, операция нагрева воды:
Фаза 1: открываем водяной клапан;
когда срабатывает датчик уровня, переходим на фазу 2
Фаза 2: закрыть водяной клапан;
включить нагреватель;;
когда температура достигает 60 градусов, переход к фазе 3
Фаза 3: выключить нагреватель;
стоп;

Предположим, что водяной клапан подключен к DO, датчик уровня воды подключен к D5, нагреватель подключен к D1, а A0 — это датчик температуры.

Сценарий выглядит следующим образом:

1: $ D0 = 1; // phase1
if($D1 = 1) trans {2}; // wait_for_D5_become_ "on"
2: $ D0 = 0; // phase2
$D2 = 1;
if($А0 >= 60) trans {3}; // wait_for_tempeature
3: $D2 = 0;
stop; // end_of_script

Язык использует написание переменных, таких как принято для ардуино, но на панели переменные могут иметь другое имя, например: Uakk, Set_Ux, Set_temp. Замена имен возможна в редакторе конфигурации. Чтобы получить доступ к редактору, нажмите на значок шестеренки на панели. Есть также переменные для внутренних вычислений или $ X0- $ X9 памяти. У них нет своих полей для отображения, но их можно увидеть, когда мы установим их значения для переменной.

$X9 = $ X9 + 1; // автоматическое приращение
$ S3 = $ X9; // отображаем $ X9 в поле S3 приборной панели.

Более полная инструкция по языку управления АСУ ТП размещена на сайте. В режиме конфигурации онлайн прямо с сайта можно задавать сценарии работы:

image

И задавать (менять) названия переменных пинов:

image

Автор: Вячеслав Денисович

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js