cr:=SysComRead(com_num,ADR(rcvBUFstr),1,0);
IF cr>0 THEN
rcvBUFfull:=CONCAT(rcvBUFfull,LEFT(rcvBUFstr,DWORD _TO_INT(cr)));
END_IF

1. Вы принимает 1, только 1 байт, какие Left и CONCAT вообще нужны?
2. Вы уверены, что принимаете только символы? Может прийти и символ с кодом 0x00 - он будет гарантированно потерян.
Попробуйте следующий код:

(* rcvBUFstr:='';*)
i:=0;
STRCOPY(rcvBUFfull,"",1);
END_IF
ELSE
cr:=SysComRead(com_num,ADR(rcvBUFfull+i),1,0);
IF cr>0 THEN
i:=i+1;
END_IF
END_IF