Преобразователь протокола modbus rtu в МЭК 60870-5-104 на базе платы Nanopi Neo

Nanopi Neo - это интересная плата на ARM Linux, не смотря на небольшой размер, плата обладает высокими показателями производительности, с приятными размерами и ценой.

Параметры:

Allwinner H3 Cortex A7 (32-битная архитектура, 4 ядра, частота до 1200Hz).

512МБ DDR3

40x40x17 мм

100Mbps Ethernet

1 USB выход

Nanopi Neo имеет 2 аппаратных интерфейса UART на гребенке GPIO. Распиновку GPIO можно посмотреть здесь. Интерфейс UART можно преобразовать в RS-485 с помощью модулей преобразователей UART-RS485. Имейте ввиду, что выходное напряжение UART составляет 3.3 вольта. Поэтому преобразователь UART-RS485 надо брать на 3.3 вольта либо универсальный.

И с помощью этого железа мы сейчас создадим шлюз из протокола modbus rtu в МЭК 60870-5-104.

На плату я установил ОС Linux Armbian ubuntu.

Поиск СОМ-портов:

Вводим команду ls /dev/ttyS* и видим,

/dev/ttyS0  /dev/ttyS1  /dev/ttyS2  /dev/ttyS3

Где /dev/ttyS0 - отладочный порт, а /dev/ttyS1  /dev/ttyS2  -  2 UARTа, которые нам нужны.

Теперь приступим к установке ПО. Нам понадобится МЭК 60870-5-104 - Slave. Он будет опрашивать контроллеры по протоколу ModBus RTU и передавать их в протоколе МЭК 60870-5-104 и ModBus.

Скачайте архив, распакуйте его. В папке есть папка ARMv7. Скопируйте содержимое папки на плату. Я обычно это делаю с помощью программы WinSCP.

Распакуйте архив на плате:

sudo tar -xvzf opctomb.tar.gz -C /etc

Теперь настроим прием данных от контроллеров в Windows-конфигураторе. Перейдите в папку modbus_slave\Win_conf. Запустите Conf_web_scada.exe. Выберите пункт меню Настройки – Настройка протокола ModBus. Нажмите на кнопку "Добавить устройство", введите параметры, добавьте группы регистров, которые следует опрашивать. После настройки устройства можно массово добавить все его тэги в главную таблицу нажав на кнопку "Экспорт всех тэгов в таблицу". Можно быстро сгенерировать адреса для МЭК 60870-5-104 - Slave. Для этого нажмите на кнопку «Сгенерировать адреса для Modbus Slave». Теперь настройте передачу по протоколу МЭК-60870-5-104. Выберите пункт меню Настройки – Настройки МЭК-60870-5-104 и Modbus slave. Поставьте галочку «Использовать МЭК-104», введите ТСР-порт, по умолчанию 2404. Коэффициенты k  и w по умолчанию 12 и 8. Можно одновременно с передачей по МЭК 60870-5-104 вести передачу по протоколу Modbus.

Так же можно задействовать Web-сервер, с помощью которого можно отображать мнемосхемы в браузере.

Сохраните. Загрузите проект на Linux машину. Из папки Win_conf с помощью WinSCP скопируйте в папку /etc/opctomb файлы main.gpr и Modbus.cfg.

Запустите:

sudo /etc/opctomb/opctomb

Осталось добавить ModBus-Slave в автозагрузку. Для этого введите команду

sudo nano /etc/rc.local

Откроется текстовый редактор в котором в конце файла перед строкой exit 0 напишите строку

/etc/opctomb/opctomb