Modbus и последовательные клиенты на одном порту RS485

У меня есть ПК, выступающий в роли мастера / клиента. На порту RS485 есть ведомое устройство Modbus (микропроцессор, прошивка, разработанная мной) и последовательное устройство (собственный последовательный протокол). Я настроил libmodbus для связи с ведомым устройством Modbus. Теперь мне нужно подключиться к ведомому устройству и связаться с ним. Но порт уже открыт libmodbus.

Что делать?

Возможные подходы:

  • подключать / отключать libmodbus и последовательный порт каждый раз, когда необходимо отправить сообщение; звучит довольно тяжело
  • немного отредактируйте libmodbus, чтобы можно было вернуть дескриптор последовательного файла, и использовать его для связи через последовательный порт; должен изменить libmodbus и быть осторожным с одновременным доступом (... в любом случае, на самом деле)
  • используйте modbus_send_raw_request; запрос недостаточно "сырой", хотя (будет добавлен заголовок /CRC), хотя я могу отредактировать libmodbus, чтобы предотвратить это
  • последнее, но не менее важное: измените прошивку ведомого устройства Modbus, чтобы использовать не Modbus, а собственный последовательный протокол; таким образом, я могу использовать любую последовательную библиотеку для связи с обоими устройствами; минусы, придется править почти готовую прошивку, а также интерфейс на стороне ПК

Какой, на ваш взгляд, лучший подход?


Для дальнейшего ознакомления я закончил тем, что изменил прошивку ведомого устройства для использования протокола ASCII. Будет подключен только к моему мастеру, поэтому стандартные протоколы использовать не нужно.

0 ответов

Другие вопросы по тегам