Программирование контроллера Wiren Board с помощью MasterSCADA 4D
Описание
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, доступно два варианта: Wiren Board 6 и Wiren Board 7. И установите его по инструкции:
- Подключитесь к контроллеру по SSH.
- Создайте временную папку и перейдите в неё:
mkdir /home/masterscada && cd /home/masterscada
- Загрузите файлы для установки исполнительной системы в папку контроллера
/home/masterscada
, инструкция. - Сделайте скрипт установки исполняемым:
chmod u+x ./install.sh
- Запустите установку:
./install.sh --http-port=8043
- Временные файлы больше не нужны, их можно удалить:
cd ~ && rm -R /home/masterscada
Установка на контроллере завершена, консоль можно закрыть.
Изменение порта Мастерскады с 8043 на 80
Если требуется поменять порт мастерскаде на 80 то первое это изменить порт для Wirenboard и второе изменить порт для сервера мастерскады.
Изменение порта для веб морды wirenboard 7
Редактируем файл /mnt/data/etc/nginx/sites-enabled/default и рас комментировать строки, выставить порт на прием 8039
listen 8039; ## listen for ipv4; this line is default and implied
listen [::]:8039 default_server ipv6only=on; ## listen for ipv6
далее команда service nginx restart
Изменить порт для вебморды Мастерскады
https://euroec.by/assets/files/master_scada/user_guide_masterscada_4d.pdf стр. 2028
Редактируем файл /opt/mplc4/nginx/conf/nginx-mplc.conf
находим строку:
server {
listen 8043 default_server;
и меняем 8043 на 80
Далее в командной строке /etc/init.d/mplc4 restart
Создание проекта
Создание первого проекта хорошо показано в видео 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.
Если нужно использовать WBE2-I-RS485-ISO или WBE2-I-RS232 в мастерскаде то:
1. Создать файл /etc/udev/rules.d/99-RS485ISO-uart.rules с правами rw-r--r--;
2. Записать в него:
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"
3. Перезапустить контроллер.
Данное действие приведёт к тому, что в мастерскаде будет mod1 на порте 11, mod2 на порте 12, mod3 на порте 13. Далее вы выбираете тот порт в который у вас вставлен модуль. При этом вы не должны их использовать в других приложениях.
Отправка смс через модем WBC-4G v.2 напрямую из Мастерскады
Включаем модем в веб морде вайнборда
Выбор активной симку, например 1:
mmcli -m wbc --set-primary-sim-slot=1
Удалить сервис из автозапуска
systemctl disable ModemManager
Остановить ModemManager
systemctl stop ModemManager
Добавить wb-gsm в автозапуска
systemctl enable wb-gsm
Перезапустить wb-gsm
restart_if_broken; dmesg | tail
Далее создаем файл /usr/lib/udev/rules.d/99-RS485-to-USB.rules
И записываем в него с правами правами rw-r--r-- :
KERNEL=="ttyUSB1", SUBSYSTEM=="tty", SYMLINK+="ttyRS485-4", GROUP="dialout"
Перезагружаем контроллер. Заходим в консоль контроллера:
minicom -D /dev/ttyUSB1 -b 115200 -8 -a off
вводим:
AAAAAAAAAT
AT+IPR=115200
ATE0
AT&W
Потом CTRL+A отпускаем клавиши и "X" и энтер. Заливаем проект и пробуем https://drive.google.com/drive/folders/1LkJ85WhvyhYk6WmqsuG-v-sFNjMWdnZ4?usp=sharing
Полезные ссылки