Проблема м.б. например потому, что Вы постоянно, в каждом цикле, пытаетесь открыть порт. Должно быть как то так:
Код:
IF ComPortState = 0 THEN
Settings.Port:= 1; (*номер COM-порта*)
Settings.dwBaudRate:=115200; (*скорость*)
Settings.byParity:=0;
...
END_IF
IF ComPortState <> 2 THEN
(*Открываем COM-порт*)
COM_SERVICE1(Enable:=(ComPortState=0) , Settings:=Settings , Task:=OPEN_TSK );
(*Если COM-порт открыт, то переходим к приему и передачи данных *)
IF COM_SERVICE1.ready THEN
ComPortState:= 2;
END_IF
END_IF