Получилось так, что одно устройство из 5 висящих на RS-485 (Modbus-RTU) никак не хочет держать связь с ПЛК100 на частоте 115200, на 9600 работает нормально. На 115200 это устройство отвечает, но ПЛК ответ не принимает почему то. Скорость обмена с 115200 до 9600 понижать для всех устройств не хочется, т.к. системе требуется хорошее быстродействие

Хочу менять скорость опроса на лету при опросе этого устройства.
Есть у кого-нибудь готовые примеры или советы решения подобной проблемы?

Пробую следующим образом, но что-то не работает:

(* Устанавливаем настройки COM-порта: *)
(* comPortOpened=0 - первое открытие порта, comPortOpened=3 - изменение скорости обмена *)
IF comPortOpened=0 OR comPortOpened=3 THEN
IF modbusOpSelect = 5 THEN
comSettings.Port:=0;
comSettings.dwBaudRate:=9600;(* скорость *)
comSettings.byParity:=0; (* 0 = NOPARITY, 1 = ODDPARITY, 2 = EVENPARITY *)
comSettings.dwTimeout:=0;
comSettings.byStopBits:=2; (* 0 = ONESTOPBIT, 1=ONE5STOPBITS, 2=TWOSTOPBITS *)
comSettings.dwBufferSize:=0;
comSettings.dwScan:=0;
ELSE
comSettings.Port:=0;
comSettings.dwBaudRate:=115200;(* скорость *)
comSettings.byParity:=0; (* 0 = NOPARITY, 1 = ODDPARITY, 2 = EVENPARITY *)
comSettings.dwTimeout:=0;
comSettings.byStopBits:=2; (* 0 = ONESTOPBIT, 1=ONE5STOPBITS, 2=TWOSTOPBITS *)
comSettings.dwBufferSize:=0;
comSettings.dwScan:=0;
END_IF
END_IF

(* Открываем COM порт *)
comService(Enable:=(comPortOpened=0) , Settings:=comSettings , Task:=OPEN_TSK);

(* применение новых настроек порта *)
comService(Enable:=(comPortOpened=3) , Settings:=comSettings , Task:=RESET_TSK);

(* Если ком порт открыт, то переходим к обмену данными *)
IF comService.ready THEN
(* здесь обмен с пятью устройствами *)
(* в конце обмена с предпоследним устройством comPortOpened приравнивается к 3 чтобы установить 9600*)
(* после обмена с ним comPortOpened снова приравнивается к 3 чтобы вернуть скорость на 115200 *)
.................................................. ....
END_IF