В устройствах, работающих на операционной системе OpenWRT, порт USB может быть задействован как шлюз Ethernet-to-COM или Modbus TCP - Modbus RTU.
Чтобы этот функционал работал, в операционную систему OpenWRT нужно установить пакеты kmod-usb-core, kmod-usb-ochi, kmod-usb-echi, kmod-usb-serial и драйверы популярных чипов USB-COM: kmod-usb-serial-ch341, kmod-usb-serial-pl2303, kmod-usb-serial-ftdi, kmod-usb-serial-cp210x, kmod-usb-serial-ti-usb. Все устанавливать не нужно, а только те, которые будут реально использоваться. Если интересует функционал удалённого COM-порта, то добавляем пакет ser2net, а если шлюза Modbus то mbusd.
Определить на основе какого чипа сделан USB-Com адаптер очень просто, достаточно воткнуть его в любой ПК под управлением неурезанной версии Linux и набрать в терминале dmesg. Нижние строки системного лога расскажут о том какой чип добавлен в систему и какой путь к нему назначен. В Windows это сделать сложнее. Если драйвера чипа в системе нет, а по умолчанию это так, система будет предлагать варианты, но и это не гарантирует что правильный драйвер будет найден. Надёжнее зайти в Диспетчер устройств, посмотреть VID и PID устройства, драйвер которого не найден, и загуглить эти VID и PID. Это даст понимание того какой именно чип применён в адаптере. Для этого чипа надо скачать драйвер, для пущей безопасности лучше с сайта производителя, и установить его.
Файл настроек шлюза Ethernet-to-COM находиться здесь /etc/config/ser2net. Заходим на устройство используя WinSCP и правим.
Содержимое файла выглядит примерно так, комментарии по тексту:
Проприетарные протоколы последовательного порта с CRC в конце сообщения могут не очень хорошо пролазить через такого рода шлюзы, при этом чем длиннее посылка и чем меньше максимально допустимое время ожидания ответа от устройства, тем ситуация будет хуже.
На клиентской стороне если клиент на Linux или драйвер проприетарного протокола в Node-RED, то обычно предусматривается обращение к удалённому Com-порту вида IPадрес:порт.
Если на клиентской стороне какая-то Windows программа, то обращение вида IPадрес:порт чаще всего не предусмотрено. Соответственно, необходимо установить драйвер виртуального Com-порта. Готовые устройства виртуальных Com-портов производят множество фирм. Каждая из них предлагает свой фирменный драйвер удалённого Com-порта. Можно воспользоваться любым из них, если конечно этот драйвер не проверяет “родное” это для него устройство или нет. Мне нравиться драйвер Tibbo TDST
Если внесли какие-либо изменения в настройки при помощи WinSCP нужно зайти на WEB интерфейс устройства System -> Startup найти название пакета, в данном случае ser2net и нажать кнопку Reload напротив него для того чтобы настройки применились или перезапустить пакет полностью кнопкой Restart там же.
Файл настроек шлюза Modbus TCP – Modbus RTU находиться здесь /etc/config/mbusd
Выглядит файл примерно так, комментарии по тексту:
Внутреннее устройство OpenWRT таково, что для унификации настроек пакетов различных производителей, файл /etc/config/mbusd на самом деле не является тем файлом настроек с которым работает пакет. Это файл настроек пакета в OpenWRT. Операционная система OpenWRT преобразовывает его к виду понятному для пакета и даже проверяет его прежде чем применить. Полное описание настроек пакета mbusd можно почитать тут
Что касается максимального количества одновременных соединений не следует забывать, что Com-порт для всех этих соединений будет общим устройством (shared media), соответственно, одновременно два и более устройств работать не смогут не мешая друг другу. Если всё же такая задача стоит, то нужно применять не шлюз устройств Modbus, а сервер устройств Modbus. Серверы устройств Modbus работают иначе чем шлюзы, за счёт некоторой задержки в передаче информации исключаются коллизии.
Замечена особенность, может быть конкретной версии 0.5.0-r4 пакета шлюза. При первом обращении к шлюзу Node-RED пишет ошибку в системный лог о том, что порт закрыт, но данные получает нормально. Соответственно, чтобы Node-RED не “сорил” ошибками timeout в конфигурационном файле должен быть больше чем период опроса.
Вся эта информация есть в открытом доступе, всё используемое ПО с открытым исходным кодом или свободно распространяемое. Поэтому, при наличии доступа к интернету, нет проблем изучить какой-то нюанс глубже. Эта инструкция исключительно для того, чтобы была ИНСТРУКЦИЯ, то есть информация по минимуму, но всё в одном месте.
Успехов!
Ссылка на статью про IES.