Программирование контроллера Wiren Board с помощью MasterSCADA 4D
This is the approved revision of this page, as well as being the most recent.
Описание
MasterPLC можно установить на контроллеры Wiren Board 7. Поддержка новых версий контроллера Wiren Board прекращена разработчиком платформы. MasterSCADA 4D — программная платформа для создания АСУТП, MES, решения задач учета и диспетчеризации объектов промышленности, ЖКХ и автоматизации зданий.
В этой статье описывается Runtime-интеграция MasterPLC — такой способ использования позволяет программировать логику с помощью языков МЭК 61131-3 и запускать интерактивные дашборды прямо на контроллере.
Для этого нужно установить на контроллер исполнительную систему MasterPLC, добавить в проект библиотеку для контроллера Wiren Board и настроить связь с MQTT-брокером на контроллере. Ещё есть Стандартная интеграция через MQTT или OPC UA.
Если вы собираетесь использовать встроенный в MasterPLC драйвер Modbus RTU — выключите опрос портов в wb-mqtt-serial.
Установка исполнительной системы на Wiren Board 7
Для установки исполнительной системы MasterPLC на контроллер Wiren Board 7 с релизом ПО wb-2307 и новее подключитесь к контроллеру по SSH и выполните обновление:
apt update && apt upgrade
Затем запустите команду для установки:
apt install mplc4-wirenboard7
Изменение порта MasterPLC с 8043 на 80
Если требуется поменять порт MasterPLC на 80, то сперва надо изменить порт для веб-интерфейса Wiren Board и потом изменить порт для сервера MasterPLC.
Изменение порта для веб-интерфейса Wiren Board 7
В релизах до wb-2507 редактировать файл /mnt/data/etc/nginx/sites-enabled/default и раскомментировать строки, выставить порт на приём 8039.
Начиная с релиза wb-2507 редактировать /etc/nginx/includes/default.wb.d/listen.conf.
listen 8039; ## listen for ipv4; this line is default and implied
listen [::]:8039 default_server ipv6only=on; ## listen for ipv6
Далее команда:
service nginx restart
Изменить порт для веб-интерфейса MasterPLC
Редактируем файл /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, то из-за того, что в среде разработке MasterSCADA 4D используется шаблон имен для последовательных портов /dev/ttyRS485-%d нужно:
- Создать файл
/etc/udev/rules.d/99-RS485ISO-uart.rulesс правамиrw-r--r--; - Записать в него:
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"
- Перезапустить контроллер.
Это действие приведёт к тому, что в мастерскаде будет mod1 на порте 11, mod2 на порте 12, mod3 на порте 13. Далее вы выбираете тот порт в который у вас вставлен модуль. При этом вы не должны их использовать в других приложениях.
Отправка смс через модуль 4G-модема напрямую из MasterPLC
Для работы с модемом из MasterPLC нужно настроить модем в веб-интерфейсе и отключить штатный ModemManager:
- Включить модем в стандартном веб-интерфейсе контроллера.
- Подключиться к контроллеру по SSH.
- Выбрать активную симку, например 1:
mmcli -m wbc --set-primary-sim-slot=1
- Удалить сервис ModemManager из автозапуска
systemctl disable ModemManager
- Остановить ModemManager
systemctl stop ModemManager
- Добавить wb-gsm в автозапуск:
systemctl enable wb-gsm
- Перезапустить wb-gsm:
restart_if_broken; dmesg | tail
Создайте файл:
- Откройте файл в редакторе:
nano /usr/lib/udev/rules.d/99-RS485-to-USB.rules
- Добавьте в него строки:
KERNEL=="ttyUSB1", SUBSYSTEM=="tty", SYMLINK+="ttyRS485-4", GROUP="dialout"
- Перезагрузите контроллер.
- Подключитесь к консоли контроллера по SSH.
- Откройте AT-терминал модема:
minicom -D /dev/ttyUSB1 -b 115200 -8 -a off
- Введите модему команды:
AAAAAAAAAT AT+IPR=115200 ATE0 AT&W
- Выйдите из терминала minicom: нажмите на клавиатуре клавиши CTRL+A, отпустите нажмите клавишу и X, а потом Enter.
Залейте проект и проверьте работу (если у вас MasterPLC на порту 8043 то в демо-проекте сделайте 8043), при запуске в контроллере будет создан файл /temp/sms.txt если туда что-то записать то отправится смс. Скачать пример проекта.
Решение проблем
Если проект не загружается
Иногда после установке, среда разработки не дает загрузить проект т.к. версия среды исполнения проекта и контроллера отличаются.
Если при обновлении среды исполнении вышла ошибка то требуется удалить среду исполнения.
Но перед этим нужно скачать требуемую среду исполнения
https://download.mps-soft.ru/support/Updates/Installation/MasterSCADA_4D/RunTime/wirenboard7/
Логин: ftpGuestSupport
Пароль: 21B74F6E
Если в предыдущей ссылки нет нужной версии (mplc4-wirenboard7-ХХХХХХХХХХХХ-armhf.deb), то переходим
https://download.mps-soft.ru/support/Updates/Installation/MasterSCADA_4D/Archive/
Проходим в нужную версию и выбираем контроллер с нужной релизом
Например
Скачиваем и открываем 7-zip. Проваливаемся до
\mplc4-wirenboard7-1.3.4.18803-armhf.deb\data.tar\.\opt\
Далее выделяем mplc4_installer и извлекаем.
Открываем WinSCP, подключаемся к контроллеру.
Проходим в каталог opt и удаляем mplc4_installer.
Затем копируем наш распакованный файл, вместо удаленного.
Проходим opt/mplc4_installer.
Даем права на запуска install.sh -rwxr-xr-x Далее можно закрыть WinSCP.
Подключимся через консоль вводим команду:
/etc/init.d/mplc4 stop
Далее переходим cd opt/mplc4/
Запускаем скрип удаления среды:
./uninstall.sh
После удачного удаления переходимым в консоли cd opt/mplc4_installer
Запускаем команду установки
./install.sh
Если все прошло нормально то будет предложено ознакомиться с хелпом :
Help for MasterPLC:
Вводим в консоль :
/etc/init.d/mplc4 start
Если среда стартовала то вы увидите такое сообщение:
Starting MasterPLC... OK
Далее пробуете загружать свой проект.
Если если желание перед установкой изменить порт среды исполнения то открываем opt/mplc4_installer/cfg и меняем
NGINX_HTTP_POTR=8043
на нужные циферки.
Полезные ссылки
- Сайт MasterSCADA
- Пример проекта
- Создание базовой настройки для множественного копирования проекта на Wiren Board 7 для среды разработки MasterSCADA 4D