MasterSCADA on Wiren Board: различия между версиями

Нет описания правки
 
(не показано 25 промежуточных версий 4 участников)
Строка 2: Строка 2:
{{DISPLAYTITLE: Программирование контроллера Wiren Board с помощью MasterSCADA 4D}}
{{DISPLAYTITLE: Программирование контроллера Wiren Board с помощью MasterSCADA 4D}}
== Описание ==
== Описание ==
[[Image: MasterSCADA 4D Runtime.png |300px|thumb|right| Интеграция MasterSCADA 4D с контроллером Wiren Board]]
[[Image: MasterSCADA 4D Runtime.png |300px|thumb|right| Интеграция MasterPLC с контроллером 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]] и запускать интерактивные дашборды прямо на контроллере.


Для этого нужно установить на контроллер исполнительную систему MasterSCASA 4D Runtime, добавить в проект библиотеку для контроллера Wiren Board и настроить связь с MQTT-брокером на контроллере. Ещё есть [[MasterSCADA_on_PC |Стандартная интеграция через MQTT или OPC UA]].
Для этого нужно установить на контроллер исполнительную систему MasterPLC, добавить в проект библиотеку для контроллера Wiren Board и настроить связь с MQTT-брокером на контроллере. Ещё есть [[MasterSCADA_on_PC |Стандартная интеграция через MQTT или OPC UA]].


Если вы собираетесь использовать драйвер Modbus RTU — выключите опрос используемых для этого портов в [[wb-mqtt-serial]].
Если вы собираетесь использовать встроенный в  MasterPLC драйвер Modbus RTU — выключите опрос портов в [[wb-mqtt-serial]].


== Установка исполнительной системы ==
== Установка исполнительной системы ==
Для установки исполнительной системы MasterPLC на контроллер Wiren Board 7 с [[Wiren_Board_Firmware_Update | релизом]] ПО wb-2307 и новее подключитесь к контроллеру по [[SSH]] и выполните обновление:
Для установки исполнительной системы MasterPLC на контроллер Wiren Board 7 с [[Wiren_Board_Software| релизом]] ПО 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>


== Создание проекта ==
== Создание проекта ==
Строка 76: Строка 102:
Image: Mscada web interface.png | Веб-интерфейс прикладной программы
Image: Mscada web interface.png | Веб-интерфейс прикладной программы
</gallery>
</gallery>
== Работа с последовательными портами ==
Для того чтобы понять какой номер порта использовать при работе с ними непосредственно из runtime можно выполнить следующую команду:
<syntaxhighlight lang="console">
# 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
</syntaxhighlight>
Например, нам нужно обратиться к порту <code>ttyRS485-1</code>, мы видим, что симлинк указывает на порт <code>ttyS2</code>.
В 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 Скачать пример проекта].


== Полезные ссылки ==
== Полезные ссылки ==