|
|
(не показана 21 промежуточная версия 3 участников) |
Строка 2: |
Строка 2: |
| {{DISPLAYTITLE: Программирование контроллера Wiren Board с помощью MasterSCADA 4D}} | | {{DISPLAYTITLE: Программирование контроллера Wiren Board с помощью MasterSCADA 4D}} |
| == Описание == | | == Описание == |
| [[Image: MasterSCADA 4D Runtime.png |300px|thumb|right| Интеграция MasterPLC с контроллером Wiren Board]] | | [[Image: MasterSCADA 4D Runtime.png |300px|thumb|right| Интеграция MasterSCADA 4D с контроллером Wiren Board]] |
| [https://masterscada.ru/masterscada4d MasterSCADA 4D] — программная платформа для создания АСУТП, MES, решения задач учета и диспетчеризации объектов промышленности, ЖКХ и автоматизации зданий. | | [https://masterscada.ru/masterscada4d MasterSCADA 4D] — программная платформа для создания АСУТП, MES, решения задач учета и диспетчеризации объектов промышленности, ЖКХ и автоматизации зданий. |
|
| |
|
| В этой статье описывается Runtime-интеграция [https://masterscada.ru/masterplc MasterPLC] — такой способ использования позволяет программировать логику с помощью языков [[IEC 61131-3 | МЭК 61131-3]] и запускать интерактивные дашборды прямо на контроллере. | | В этой статье описывается Runtime-интеграция [https://masterscada.ru/masterplc MasterPLC] — такой способ использования позволяет программировать логику с помощью языков [[IEC 61131-3 | МЭК 61131-3]] и запускать интерактивные дашборды прямо на контроллере. |
|
| |
|
| Для этого нужно установить на контроллер исполнительную систему MasterPLC, добавить в проект библиотеку для контроллера Wiren Board и настроить связь с MQTT-брокером на контроллере. Ещё есть [[MasterSCADA_on_PC |Стандартная интеграция через MQTT или OPC UA]]. | | Для этого нужно установить на контроллер исполнительную систему MasterSCASA 4D Runtime, добавить в проект библиотеку для контроллера Wiren Board и настроить связь с MQTT-брокером на контроллере. Ещё есть [[MasterSCADA_on_PC |Стандартная интеграция через MQTT или OPC UA]]. |
|
| |
|
| Если вы собираетесь использовать встроенный в MasterPLC драйвер Modbus RTU — выключите опрос портов в [[wb-mqtt-serial]]. | | Если вы собираетесь использовать драйвер Modbus RTU — выключите опрос используемых для этого портов в [[wb-mqtt-serial]]. |
|
| |
|
| == Установка исполнительной системы == | | == Установка исполнительной системы == |
| Для установки исполнительной системы MasterPLC на контроллер Wiren Board 7 с [[Wiren_Board_Software| релизом]] ПО wb-2307 и новее подключитесь к контроллеру по [[SSH]] и выполните обновление: | | Для установки исполнительной системы MasterPLC на контроллер Wiren Board 7 с [[Wiren_Board_Firmware_Update | релизом]] ПО wb-2307 и новее подключитесь к контроллеру по [[SSH]] и выполните обновление: |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| apt update && apt upgrade | | apt update && apt upgrade |
Строка 45: |
Строка 45: |
|
| |
|
| Установка на контроллере завершена, консоль можно закрыть. | | Установка на контроллере завершена, консоль можно закрыть. |
|
| |
| === Изменение порта MasterPLC с 8043 на 80 ===
| |
| Если требуется поменять порт MasterPLC на 80 то сперва надо изменить порт для веб-интерфейса Wiren Board и потом изменить порт для сервера MasterPLC.
| |
|
| |
| ==== Изменение порта для веб-интерфейса Wiren Board 7 ====
| |
|
| |
| Редактируем файл <code>/mnt/data/etc/nginx/sites-enabled/default</code> и раскомментировать строки, выставить порт на прием 8039
| |
| <syntaxhighlight lang="console">
| |
| listen 8039; ## listen for ipv4; this line is default and implied
| |
| listen [::]:8039 default_server ipv6only=on; ## listen for ipv6
| |
| </syntaxhighlight>
| |
| далее команда <code>service nginx restart</code>
| |
|
| |
| ==== Изменить порт для веб-интерфейса MasterPLC ====
| |
| https://euroec.by/assets/files/master_scada/user_guide_masterscada_4d.pdf стр. 2028
| |
|
| |
| Редактируем файл <code>/opt/mplc4/nginx/conf/nginx-mplc.conf</code>
| |
|
| |
| находим строку:
| |
| <syntaxhighlight lang="console">
| |
| server {
| |
| listen 8043 default_server;
| |
| </syntaxhighlight>
| |
| и меняем 8043 на 80
| |
|
| |
| Далее в командной строке <code>/etc/init.d/mplc4 restart</code>
| |
|
| |
|
| == Создание проекта == | | == Создание проекта == |
Строка 104: |
Строка 78: |
|
| |
|
| == Работа с последовательными портами == | | == Работа с последовательными портами == |
| Для того чтобы понять какой номер порта использовать при работе с ними непосредственно из runtime можно выполнить следующую команду: | | Для того чтобы понять какой номер порта использовать при работе с ними непосредстенно из runtime можно выполнить следующую команду: |
| <syntaxhighlight lang="console"> | | <syntaxhighlight lang="console"> |
| # ls -l /dev/ |grep tty[A-Z] | | # ls -l /dev/ |grep tty[A-Z] |
Строка 119: |
Строка 93: |
|
| |
|
| В MasterPLC нумерация портов начинается с 1, а в Linux с 0, поэтому нам надо увеличить номер найденного порта ttyS* на 1. Получается, чтобы обратиться из MasterPLC к порту <code>ttyRS485-1</code>, надо использовать порт 2+1=3. | | В MasterPLC нумерация портов начинается с 1, а в Linux с 0, поэтому нам надо увеличить номер найденного порта ttyS* на 1. Получается, чтобы обратиться из MasterPLC к порту <code>ttyRS485-1</code>, надо использовать порт 2+1=3. |
|
| |
| Если вам нужно использовать модули WBE2-I-RS485-ISO или WBE2-I-RS232, то из-за того, что в среде разработке MasterSCADA 4D используется шаблон имен для последовательных портов <code>/dev/ttyRS485-%d</code> нужно:
| |
| # Создать файл <code>/etc/udev/rules.d/99-RS485ISO-uart.rules</code> с правами <code>rw-r--r--</code>;
| |
| # Записать в него:
| |
| #:<syntaxhighlight lang="console">
| |
| KERNEL=="ttyS7", SUBSYSTEM=="tty", SYMLINK+="ttyRS485-10", GROUP="dialout"
| |
| KERNEL=="ttyS6", SUBSYSTEM=="tty", SYMLINK+="ttyRS485-11", GROUP="dialout"
| |
| KERNEL=="ttyS5", SUBSYSTEM=="tty", SYMLINK+="ttyRS485-12", GROUP="dialout"
| |
| </syntaxhighlight>
| |
| # Перезапустить контроллер.
| |
|
| |
| Это действие приведёт к тому, что в мастерскаде будет mod1 на порте 11, mod2 на порте 12, mod3 на порте 13. Далее вы выбираете тот порт в который у вас вставлен модуль. При этом вы не должны их использовать в других приложениях.
| |
|
| |
| == Отправка смс через модуль 4G-модема напрямую из MasterPLC ==
| |
| Для работы с модемом из MasterPLC нужно настроить модем в веб-интерфейсе и отключить штатный ModemManager:
| |
| # Включить модем в стандартном веб-интерфейсе контроллера.
| |
| # Подключиться к контроллеру по [[SSH]].
| |
| # Выбрать активную симку, например 1:
| |
| #:<syntaxhighlight lang="bash">
| |
| mmcli -m wbc --set-primary-sim-slot=1
| |
| </syntaxhighlight>
| |
| #Удалить сервис ModemManager из автозапуска
| |
| #:<syntaxhighlight lang="bash">
| |
| systemctl disable ModemManager
| |
| </syntaxhighlight>
| |
| # Остановить ModemManager
| |
| #:<syntaxhighlight lang="bash">
| |
| systemctl stop ModemManager
| |
| </syntaxhighlight>
| |
| #Добавить wb-gsm в автозапуск:
| |
| #:<syntaxhighlight lang="bash">
| |
| systemctl enable wb-gsm
| |
| </syntaxhighlight>
| |
| #Перезапустить wb-gsm:
| |
| #:<syntaxhighlight lang="bash">
| |
| restart_if_broken; dmesg | tail
| |
| </syntaxhighlight>
| |
|
| |
| Создайте файл:
| |
| # Откройте файл в редакторе:
| |
| #:<syntaxhighlight lang="bash">
| |
| nano /usr/lib/udev/rules.d/99-RS485-to-USB.rules
| |
| </syntaxhighlight>
| |
| #Добавьте в него строки:
| |
| #:<syntaxhighlight lang="bash">
| |
| KERNEL=="ttyUSB1", SUBSYSTEM=="tty", SYMLINK+="ttyRS485-4", GROUP="dialout"
| |
| </syntaxhighlight>
| |
| # Перезагрузите контроллер.
| |
| # Подключитесь к консоли контроллера по [[SSH]].
| |
| # Откройте AT-терминал модема:
| |
| #:<syntaxhighlight lang="bash">
| |
| minicom -D /dev/ttyUSB1 -b 115200 -8 -a off
| |
| </syntaxhighlight>
| |
| # Введите модему команды:
| |
| #:<syntaxhighlight lang="bash">
| |
| AAAAAAAAAT
| |
| AT+IPR=115200
| |
| ATE0
| |
| AT&W
| |
| </syntaxhighlight>
| |
| # Выйдите из терминала minicom: нажмите на клавиатуре клавиши <kbd>CTRL</kbd>+<kbd>A</kbd>, отпустите нажмите клавишу и <kbd>X</kbd>, а потом <kbd>Enter</kbd>.
| |
|
| |
| Залейте проект и проверьте работу (если у вас MasterPLC на порту 8043 то в демо-проекте сделайте 8043), при запуске в контроллере будет создан файл <code>/temp/sms.txt</code> если туда что-то записать то отправится смс. [https://github.com/wirenboard/wb-community/blob/main/third-party-soft-demo/master-scada-4d/sms-wb-demo.zip Скачать пример проекта].
| |
|
| |
|
| == Полезные ссылки == | | == Полезные ссылки == |
Программа на FBD для контроллера Wiren Board
Описание
Интеграция MasterSCADA 4D с контроллером Wiren Board
MasterSCADA 4D — программная платформа для создания АСУТП, MES, решения задач учета и диспетчеризации объектов промышленности, ЖКХ и автоматизации зданий.
В этой статье описывается Runtime-интеграция MasterPLC — такой способ использования позволяет программировать логику с помощью языков МЭК 61131-3 и запускать интерактивные дашборды прямо на контроллере.
Для этого нужно установить на контроллер исполнительную систему MasterSCASA 4D Runtime, добавить в проект библиотеку для контроллера Wiren Board и настроить связь с MQTT-брокером на контроллере. Ещё есть Стандартная интеграция через MQTT или OPC UA.
Если вы собираетесь использовать драйвер Modbus RTU — выключите опрос используемых для этого портов в wb-mqtt-serial.
Установка исполнительной системы
Для установки исполнительной системы MasterPLC на контроллер Wiren Board 7 с релизом ПО wb-2307 и новее подключитесь к контроллеру по SSH и выполните обновление:
apt update && apt upgrade
Затем запустите команду для установки:
apt install mplc4-wirenboard7
Установка на контроллер со старым релизом ПО
Процесс установки MasterSCADA 4D Runtime
Если вы используете устаревшее ПО, то сначала запросите дистрибутив исполнительной системы для контроллера в техподдержке MasterSCADA, доступно два варианта: Wiren Board 6 и Wiren Board 7. И установите его по инструкции:
- Подключитесь к контроллеру по SSH.
- Создайте временную папку и перейдите в неё:
mkdir /home/masterscada && cd /home/masterscada
- Загрузите файлы для установки исполнительной системы в папку контроллера
/home/masterscada
, инструкция.
- Сделайте скрипт установки исполняемым:
- Запустите установку:
./install.sh --http-port=8043
- Временные файлы больше не нужны, их можно удалить:
cd ~ && rm -R /home/masterscada
Установка на контроллере завершена, консоль можно закрыть.
Создание проекта
Создание первого проекта хорошо показано в видео MasterSCADA 4D. Быстрый старт. Часть 1, наш пример можно взять на Github, а MasterSCADA 4D на официальном сайте.
Отличия от видеоинструкции:
- Прежде чем добавлять контроллер, подключите библиотеку Wiren Board. Это позволит выбрать тип контроллера Wirenboard6 или Wirenboard7.
- После добавления контроллера, справа на панели укажите:
- фактический IP-адрес вашего контроллера, например, 192.168.2.22
- Порт для Web-сервера — 8043, его мы указывали при установке исполнительной системы.
- Далее добавьте в Контроллер → Встроенные модули канал DIO, и заполните поля так:
- Имя — Buzzer
- Topic —
/devices/buzzer/controls/enabled
. Адреса топиков можно узнать в стандартном веб-интерфейсе контроллера, раздел MQTT Channels.
Если вы используете Mоdbus TCP сервер в проекте (выполняемый runtime) отключите сервис wb-mqtt-mbgate контроллера, так как по умолчанию он использует тот же 502 порт.
В остальном видеоинструкция актуальна и для работы на контроллерах Wiren Board.
- Добавление библиотеки, контроллера, канала
Загрузка проекта в контроллер
Чтобы запустить загрузить программу в контроллер и запустить её, выберите режим Исполнение и нажмите кнопку Подключить выбранный узел (с загрузкой конфигурации).
- Загрузка программы в контроллер
Загрузка проекта в контроллер и пуск
Интерфейс прикладной программы, вывод состояния в среду разработки
Веб-интерфейс прикладной программы
Работа с последовательными портами
Для того чтобы понять какой номер порта использовать при работе с ними непосредстенно из runtime можно выполнить следующую команду:
# ls -l /dev/ |grep tty[A-Z]
lrwxrwxrwx 1 root root 5 Oct 18 13:02 ttyCONSOLE -> ttyS0
lrwxrwxrwx 1 root root 5 Oct 18 13:02 ttyMOD1 -> ttyS7
lrwxrwxrwx 1 root root 5 Oct 18 13:02 ttyMOD2 -> ttyS6
lrwxrwxrwx 1 root root 5 Oct 18 13:02 ttyMOD3 -> ttyS5
lrwxrwxrwx 1 root root 5 Oct 18 13:02 ttyMOD4 -> ttyS3
lrwxrwxrwx 1 root root 5 Oct 18 13:02 ttyRS485-1 -> ttyS2
lrwxrwxrwx 1 root root 5 Oct 18 13:02 ttyRS485-2 -> ttyS4
Например, нам нужно обратиться к порту ttyRS485-1
, мы видим, что симлинк указывает на порт ttyS2
.
В MasterPLC нумерация портов начинается с 1, а в Linux с 0, поэтому нам надо увеличить номер найденного порта ttyS* на 1. Получается, чтобы обратиться из MasterPLC к порту ttyRS485-1
, надо использовать порт 2+1=3.
Полезные ссылки
Поддерживаемые контроллером Wiren Board системы верхнего уровня, приложения, способы программирования, протоколы и устройства
Протоколы
|
Опрос датчиков и работа с устройствами (в базовой комплектации)
|
1-Wire • DLMS/COSEM • Modbus RTU/TCP Master • ГОСТ МЭК 61107 • СПОДЭС (ГОСТ Р 58940-2020)
|
Опрос датчиков и работа с устройствами (с помощью модулей расширения)
|
KNX • eBUS • OpenTherm • Z-Wave • Zigbee
|
Опрос контроллера из систем верхнего уровня и с других устройств
|
KNX • Modbus RTU/TCP Slave • MQTT • OPC UA • SNMP • Zabbix • МЭК 104 • SmartWeb (Гидролого)
|
Системы верхнего уровня
|
Системы мониторинга и SCADA
|
Grafana • Home Assistant • IntraHouse • IntraSCADA • Sprut.hub • MasterSCADA • Nagios • SimpLight SCADA • Rapid SCADA • SAYMON • Zabbix • iRidium Server
|
Приложения
|
Управление с телефона |
MQTT Dash • iRidium • Home Assistant • Apple Home • Дом с Алисой • Салют! Умный дом
|
Голосовые помощники
|
Siri • Салют • Алиса
|
Способы программирования
|
Языки программирования ПЛК |
FBD, ST, LD, SFC (МЭК 61131-3)
|
Визуальное программирование |
Node-RED
|
Упрощённый текстовый движок правил
|
wb-rules
|
Стандартное программирование
|
Python • C++ • Go • Node.js
|
Протестированные устройства сторонних производителей
|
Адаптеры протоколов
|
ECODim DALI GW2 • HDL KNX-DALI Gateway M/DALI.1 • Arlight DALI-LOGIC-LITE-PS-x1
|
Аудиоресиверы сетевые
|
URRI A1
|
Датчики климата
|
DS18B20 и клоны • Kvadro 1WIRE-RS485 • RLDA NL-3DPAS-M • RLDA NL-1S111 • Wellpro WP3066ADAM • Даджет MT8057/MT8057S • РД MSU21 • РД MSU24 • РД MSU34+TLP • РД MSU34+THLP • Эксис ИВТМ-7 М 3
|
Датчики уровня
|
ЭСКОРТ ДБ-2
|
Универсальные датчики
|
TESLiOT (BLE)
|
Диммеры
|
DALI • Philio PAD07-RU • Uniel UCH-M131RC/0808 • Uniel UCH-M141RC/0808 • РД DDL04R • РД DDL24 • РД DDL84R-V • РД DDM845R
|
Домофоны
|
VIZIT (ВИЗИТ), Элтис, Цифрал, Техком, Метаком, Beward и другие координатного типа
|
Конвекторы
|
Varmann QTherm
|
Кондиционеры
|
Haier YCJ-A002 • Z-Wave ИК-передатчик PAR01-RU • GREE (ONOKOM-AIR-GR-1-MB-B) • AUX (ONOKOM-AIR-AUX-1-MB-B) • Mitsubishi Electric (ONOKOM-AIR-ME-1-MB-B) • Daikin (ONOKOM-AIR-DK-1-MB-B) • Hisense (ONOKOM-AIR-HS-3-MB-B) • Haier (ONOKOM-AIR-HR-1-MB-B)
|
Рекуператоры / вентиляция
|
Рекуператор VAKIO Base Smart • ПВУ Royal Clima Soffio Primo RCS-350-P • Komfovent • Royal Clima VENTO
|
Контроллеры вентиляции и климата
|
Mautomatics JL204C5 (Breezart 550 Lux) • GTC (General Thermo Controllers) Syberia 5.0 • SystemAir VR 300 • Тепломаш КЭВ-БЛОК-МК
|
Контроллеры холодильного оборудования
|
Carel BASIC(PYEZ)/EASY(PJEZ) • Danfoss EKC 204A1/AK-CC 210 • Danfoss EKC 202B • Danfoss EKC 202D • Danfoss ERC 211/ERC 213/ERC 214 • Eliwell IDPlus 974
|
Метеостанции
|
Netatmo Urban Weather Station • Сокол-М
|
Модули ввода-вывода
|
Wellpro WP8026ADAM • Wellpro WP8027ADAM • Wellpro WP8028ADAM • Wellpro WP9038ADAM
|
Модули реле
|
РД DRB88 • Rubetek TZ78 • ICP DAS tM-P3R3 • ICP DAS LC-103 • Uniel UCH-M111RX/0808 • Uniel UCH-M121RX/0808
|
Моторы для штор/Электрокарнизы
|
Akko AM82 • Dooya DM35EQ • Dooya DT82 • WinDeco • Somfy SDN • SunFlower KT82TV • Somfy RS485 RTS transmitter • Беспроводные Dooya/Somfy • Dauerhaft CM5 • Dauerhaft Roll 35/45 • A-OK AM68 (LM100) • A-OK AM35
|
Панели управления
|
Cityron ПУ-3 (Modbus) • Sonoff NSPanel (fw NXPanel) • EKF PRO-Screen • Skirell Panel
|
Счётчики воды
|
Пульсар • Пульсар-М • Элехант СВД-15 • Элехант СВД-20 • Счётчики с импульсным выходом
|
Счётчики тепла
|
Пульсар
|
Счётчики электроэнергии
|
CSQ PD561Z-9SY • Peacefair PZEM-016 • Eastron SDM120M • Eastron SDM220M • Меркурий 200 • Меркурий 201 • Меркурий 203.2T • Меркурий 204 • Меркурий 206 • Меркурий 208 • Меркурий 230 • Меркурий 231 • Меркурий 234 • Меркурий 236 • Меркурий 238 • Милур 104 • Милур 105 • Милур 107 • Милур 305 • Милур 307 • Нева МТ 113 • Нева МТ 123 • Нева МТ 124 • Нева МТ 323 • Нева МТ 324 • Энергомера CE301 • Энергомера CE102M • Энергомера CE303 • Энергомера CE308
|
Термостаты
|
BAC-002ALN • BAC-6000ALN • BAC-6000ELNW • BHT-6000 Series • Heatit Z-TEMP2 • Hessway • Siemens RDF302 • Ridan Greencon-R
|
Увлажнители
|
CAREL Humisonic
|
Управление двигателями (преобразователи частоты)
|
Vacon/Danfoss 10 • Danfoss VLT Microdrive FC51 • T13-400W-12-H/T13-750W-12-H
|
Прочее
|
DIY • Shelly UNI • Tasmota • ESPHome
|
Устройства с аналоговым или цифровым выходом
|
Низковольтная нагрузка
|
Реле с управляющим напряжением 12–24 В • Светодиоды • Низковольтные вентиляторы • Низковольтные сигнальные лампы
|
Датчики с аналоговым выходом
|
Датчики температуры, давления и другие, имеющие на выходе ток или напряжение
|
Счётчики с импульсным выходом
|
Счётчики электроэнергии, воды, тепла и другие с импульсным выходом
|
Устройства с выходом «открытый коллектор»
|
Устройства с выходом «открытый коллектор»
|
Устройства с питанием 220 В
|
Лампы • Контакторы и другое оборудование с питанием от 220 В
|