Banana PI BPI M2 Ultra одноплатный четырёх-ядерный компьютер построенный на базе Allwinner R40. Плата несёт на борту 2 Гбайт DDR3 SDRAM ОЗУ, eMMC на 8 Гбайт. BPI-m2u имеет 4 аппаратных интерфейса UART на гребенке GPIO, а также 1 Gigabit Ethernet (10/100/1000 LAN). Распиновку GPIO можно посмотреть здесь. Интерфейс UART можно преобразовать в RS-485 с помощью модулей преобразователей UART-RS485. Имейте ввиду, что выходное напряжение UART составляет 3.3 вольта. Поэтому преобразователь UART-RS485 надо брать на 3.3 вольта либо универсальный.
На плату я установил ОС Linux debian 9 stretch lite. Её можно установить как на карту памяти, так и на eMMC. Чтобы задействовать все 4 UART необходимо пересобрать u-boot. Я за Вас эту работу уже сделал, Вам нужно скачать файл BPI_M2U_720P.img.gz по ссылке http://linux.opc-servers.ru/downloads/BPI_M2U_720P.img.gz
Затем ввести команды:
git clone https://github.com/BPI-SINOVOIP/bpi-tools.git
cd bpi-tools
sudo cp -a bpi-* /usr/bin/
bpi-tools -u
sudo bpi-bootsel BPI_M2U_720P.img.gz /dev/mmcblk0
и перезагрузиться: sudo reboot
Вводим команду ls /dev/ttyS* и видим,
/dev/ttyS0 /dev/ttyS2 /dev/ttyS3 /dev/ttyS4 /dev/ttyS5 /dev/ttyS7
Где /dev/ttyS0 - отладочный порт, а /dev/ttyS2 /dev/ttyS4 /dev/ttyS5 /dev/ttyS7 - 4 UARTа, которые нам нужны.
Теперь приступим к установке ПО. Нам понадобится OPC UA сервер СЭТ-4ТМ и ModBus-Slave. OPC UA сервер СЭТ-4ТМ будет опрашивать счетчики, ModBus-Slave будет получать данные от OPC UA сервера и передавать их в протоколе ModBus.
Скачайте архивы, распакуйте их. В каждой папке есть папка ARMv7. Скопируйте содержимое папки на плату. Я обычно это делаю с помощью программы WinSCP.
Распакуйте архивы на плате:
Распаковка OPC UA сервера СЭТ-4ТМ:
sudo tar -xvzf set4d.tar.gz -C /etc
Распаковка ModBus-Slave:
sudo tar -xvzf opctomb.tar.gz -C /etc
Перейдите к настройке в OPC UA сервера СЭТ-4ТМ Windows-конфигураторе. В папке Set4_win_conf запустите SET4TMserver.exe. Сконфигурируйте счетчик, в поле порт выберите, например, /dev/ttyS2 (это UART2). Нажмите ОК. Настройте порт ОРС UA (по умолчанию 16672). Файл SET4TM.cfg скопируйте на плату в папку /etc/set4d. Запустите OPC UA сервер СЭТ-4ТМ:
sudo /etc/set4d/set4opcd
Должен пойти обмен со счетчиком. Откройте Web-интерфейс ОРС-сервера, для этого наберите в адресной строке браузера http://192.168.0.101:8077. 192.168.0.101 - IP-адрес платы, 8077 - порт Web-сервера ОРС-сервера (можно менять).
Теперь настроим прием данных от ОРС-сервера. Перейдите в папку modbus_slave\Win_conf. Запустите Conf_web_scada.exe.
Для настройки выберите пункт меню «Настройки – Драйверы устройств». Нажмите кнопку добавить. Введите имя на английском языке, строка подключения выглядит следующим образом:
opc.tcp://192.168.0.101:16672
192.168.0.101 – IP-адрес компьютера, на котором запущен драйвер.
16672 – порт, который указывался при настройке OPC UA – драйвера.
Нажмите проверить соединение.
Есть возможность получить все тэги списком, выделить их все или часть и добавить выделенные в конфигурацию. Для этого нажмите на кнопки «Получить все тэги списком», «Выделить все» и «Добавить выделенные в таблицу». Нажмите ОК. В главной таблице окажутся тэги. Т.к. OPC UA – сервер и клиент находятся на одном компьютере, то поменяйте строку подключения на opc.tcp://127.0.0.1:16672. Нажмите ОК.
Можно быстро сгенерировать Modbus адреса. Для этого нажмите на кнопку «Сгенерировать адреса для Modbus Slave».
Теперь настройте передачу данных по ModBus. Введите адрес ModBus, например, Для ModBus-ТСР поставьте галочку «Использовать ModBus-ТСР», галочка «Режим ModBus-RTU поверх TCP» снята, введите ТСР-порт, например, 502. Так же можно настроить Web-сервер, через который можно смотреть получаемые данные в табличном виде. Сохраните. Загрузите проект на Linux машину. Из папки Win_conf с помощью WinSCP скопируйте в папку /etc/opctomb файл main.gpr. Запустите:
sudo /etc/opctomb/opctomb
Подключитесь ModBus-мастером. Так же можете подключиться OPC UA - клиентом к OPC UA серверу СЭТ-4ТМ.
Осталось добавить OPC UA сервер СЭТ-4ТМ и ModBus-Slave в автозагрузку. Для этого введите команду
sudo nano /etc/rc.local
Откроется текстовый редактор в котором в конце файла перед строкой exit 0 напишите 2 строки
/etc/set4d/set4opcd
/etc/opctomb/opctomb