16 885
правок
Brainroot (обсуждение | вклад) (→Создание проекта: убрал # Вместо протокола DCON используйте встроенный в библиотеку протокол Wirenboard_MQTT.) |
|||
(не показаны 33 промежуточные версии 4 участников) | |||
Строка 2: | Строка 2: | ||
{{DISPLAYTITLE: Программирование контроллера Wiren Board с помощью MasterSCADA 4D}} | {{DISPLAYTITLE: Программирование контроллера Wiren Board с помощью MasterSCADA 4D}} | ||
== Описание == | == Описание == | ||
[[Image: MasterSCADA 4D Runtime.png |300px|thumb|right| Интеграция | [[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-интеграция — такой способ использования позволяет программировать логику с помощью языков [[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]]. | ||
Если вы собираетесь использовать драйвер Modbus RTU — выключите опрос | Если вы собираетесь использовать встроенный в MasterPLC драйвер Modbus RTU — выключите опрос портов в [[wb-mqtt-serial]]. | ||
== Установка исполнительной системы == | == Установка исполнительной системы == | ||
[[ | Для установки исполнительной системы MasterPLC на контроллер Wiren Board 7 с [[Wiren_Board_Software| релизом]] ПО wb-2307 и новее подключитесь к контроллеру по [[SSH]] и выполните обновление: | ||
<syntaxhighlight lang="bash"> | |||
apt update && apt upgrade | |||
</syntaxhighlight> | |||
Затем запустите команду для установки: | |||
<syntaxhighlight lang="bash"> | |||
apt install mplc4-wirenboard7 | |||
</syntaxhighlight> | |||
===Установка на контроллер со старым релизом ПО=== | |||
[[Image: MasterSCADA 4D Runtime Installing.png |300px|thumb|right| Процесс установки MasterSCADA 4D Runtime]] | |||
Если вы используете устаревшее ПО, то сначала запросите дистрибутив исполнительной системы для контроллера в техподдержке MasterSCADA, доступно два варианта: Wiren Board 6 и Wiren Board 7. И установите его по инструкции: | |||
# Подключитесь к контроллеру по [[SSH]]. | # Подключитесь к контроллеру по [[SSH]]. | ||
# Создайте временную папку и перейдите в неё: | # Создайте временную папку и перейдите в неё: | ||
Строка 37: | Строка 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> | |||
== Создание проекта == | == Создание проекта == | ||
Строка 42: | Строка 76: | ||
Отличия от видеоинструкции: | Отличия от видеоинструкции: | ||
# Прежде чем добавлять контроллер, подключите библиотеку Wiren Board. Это позволит выбрать тип контроллера ''Wirenboard6''. | # Прежде чем добавлять контроллер, подключите библиотеку Wiren Board. Это позволит выбрать тип контроллера ''Wirenboard6'' или ''Wirenboard7''. | ||
# После добавления контроллера, справа на панели укажите: | # После добавления контроллера, справа на панели укажите: | ||
#* фактический IP-адрес вашего контроллера, например, 192.168.2.22 | #* фактический IP-адрес вашего контроллера, например, 192.168.2.22 | ||
#* Порт для Web-сервера — 8043, его мы указывали при установке исполнительной системы. | #* Порт для Web-сервера — 8043, его мы указывали при установке исполнительной системы. | ||
# Далее добавьте в '''Контроллер''' → '''Встроенные модули''' канал DIO, и | # Далее добавьте в '''Контроллер''' → '''Встроенные модули''' канал DIO, и заполните поля так: | ||
#* Имя — Buzzer | #* Имя — Buzzer | ||
#* Topic — <code>/devices/buzzer/controls/enabled</code>. Адреса топиков можно узнать в стандартном веб-интерфейсе контроллера, раздел [[Wiren Board Web Interface#mqtt-channels |MQTT Channels]]. | #* Topic — <code>/devices/buzzer/controls/enabled</code>. Адреса топиков можно узнать в стандартном веб-интерфейсе контроллера, раздел [[Wiren Board Web Interface#mqtt-channels |MQTT Channels]]. | ||
Если вы используете Mоdbus TCP сервер в проекте (выполняемый runtime) отключите сервис '''wb-mqtt-mbgate''' контроллера, так как по умолчанию он использует тот же '''502''' порт. | |||
В остальном видеоинструкция актуальна и для работы на контроллерах Wiren Board. | В остальном видеоинструкция актуальна и для работы на контроллерах Wiren Board. | ||
Строка 66: | Строка 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 Скачать пример проекта]. | |||
== Полезные ссылки == | == Полезные ссылки == |