Наверное в любом случае необходимо развязать все события по времени.
Ниже следубщий код выполняется всегда, а надо выполнять например раз в 100 мс.
if Ton1.q then (*новая строка*)
IF port_opened THEN
sz := SysComRead( com_num, ADR( rcvBUF ), 10, 0 );
IF sz <> 0 THEN
Out2 := NOT Out2; (*Вот это одназначно приведет к дребезгу контактов используй <ТР>*)
END_IF
END_IF
end_if (*новая стока*)




