В большинстве случаев, для интеграции RS485 в систему Modbus RTU достаточно использовать готовые библиотеки или драйверы, которые уже реализуют все необходимые функции. Например:
LibModbus (для C/C++): Одна из самых популярных библиотек для работы с Modbus. Она поддерживает как Modbus RTU (через последовательный порт), так и Modbus TCP. Вам нужно лишь правильно настроить параметры подключения (например, COM-порт, скорость передачи, параметры адресации) и вызвать соответствующие функции для отправки и получения данных.
PyModbus (для Python): Это библиотека, которая также поддерживает Modbus RTU. С помощью нее можно легко настроить взаимодействие через COM-порт (или USB-RS485 адаптер), а также отправлять и получать данные по стандарту Modbus.
Большинство брендовых контроллеров несут на себе драйвера и настройки по работе Modbus поверх RS485, в т.ч. и так, как это делаете Вы, относительно Овена, я их не знаю и никогда с ними не работал, но насколько мне известно их разработчик доступен и Вам стоит связаться с их техподдержкой.
Для работы с RS485 в таких библиотеках обычно достаточно указать:
Параметры порта (COM-порт, скорость передачи данных, четность, количество стоп-бит).
Адресацию устройств Modbus.
Функции чтения/записи регистров.
Пример на Python с использованием PyModbus:
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
# Настройка клиента для Modbus RTU через последовательный порт RS485
client = ModbusClient(method='rtu', port='/dev/ttyUSB0', baudrate=9600, stopbits=1, bytesize=8, parity='N')
# Подключение к устройству с адресом 1
client.connect()
# Чтение 10 регистров начиная с адреса 0
result = client.read_holding_registers(0, 10, unit=1)
print(result.registers)
# Закрытие соединения
client.close()