Проблема м.б. например потому, что Вы постоянно, в каждом цикле, пытаетесь открыть порт. Должно быть как то так:
Код:
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