Modbus и последовательные клиенты на одном порту RS485
У меня есть ПК, выступающий в роли мастера / клиента. На порту RS485 есть ведомое устройство Modbus (микропроцессор, прошивка, разработанная мной) и последовательное устройство (собственный последовательный протокол). Я настроил libmodbus для связи с ведомым устройством Modbus. Теперь мне нужно подключиться к ведомому устройству и связаться с ним. Но порт уже открыт libmodbus.
Что делать?
Возможные подходы:
- подключать / отключать libmodbus и последовательный порт каждый раз, когда необходимо отправить сообщение; звучит довольно тяжело
- немного отредактируйте libmodbus, чтобы можно было вернуть дескриптор последовательного файла, и использовать его для связи через последовательный порт; должен изменить libmodbus и быть осторожным с одновременным доступом (... в любом случае, на самом деле)
- используйте modbus_send_raw_request; запрос недостаточно "сырой", хотя (будет добавлен заголовок /CRC), хотя я могу отредактировать libmodbus, чтобы предотвратить это
- последнее, но не менее важное: измените прошивку ведомого устройства Modbus, чтобы использовать не Modbus, а собственный последовательный протокол; таким образом, я могу использовать любую последовательную библиотеку для связи с обоими устройствами; минусы, придется править почти готовую прошивку, а также интерфейс на стороне ПК
Какой, на ваш взгляд, лучший подход?
Для дальнейшего ознакомления я закончил тем, что изменил прошивку ведомого устройства для использования протокола ASCII. Будет подключен только к моему мастеру, поэтому стандартные протоколы использовать не нужно.