Спасибо.
У меня ещё вопрос. В программах полезности, пример работы с COMSERICE есть такой фрагмент..

(*Вызываем таймер ожидания ответа*)
T1();
(*В переменную byte_read мы получаем число принятых байт при чтении порта*)
byte_read:=SysComRead(port_number, ADR(buf_otvet), 8, 0);
(*Если мы получили ответ от устройства, то принятую информацию собираем в более большой буфер ответа
то есть собираем ответ в удобный для обработки формат*)
IF byte_read>0 THEN
FOR i:=0 TO byte_read-1 DO
otvet[l+i]:=buf_otvet[i];
END_FOR
l:=l+byte_read;

(*В данном месте программы необходимо реализовать обработку принятой из порта информации*)
(*Дабы сильно не перегружать пример информации ниже используется подобие заглушки*)
(*Известно что длина ответа на используемые в программе запросы сторого 8 байт*)
(*Поэтому ниже производится анализ размера принятого ответа*)
(*Как только приходит за отведенный интервал времени нужное количество байт, начинаем обработку принятой команды*)
IF ( l=7) THEN
(*Получили нужное количество байт*)
(*Производим распаковку ответа и записываем его на выход блока*)
p1:=ADR(otvet[4]);
p:=ADR(rez);
p^:=p1^;
p1:=ADR(otvet[3]);
p:=p+1;
p^:=p1^;
(*Останавливаем таймер ожидания ответа*)
T1(IN:=FALSE, PT:=T#0s );
(*Ошибок нет*)
errors:=0;
(*Значиния на выходе блока сформированы, их можно использовать в программе*)
ready:=TRUE;
(*Переводим блок в режим отправки запроса*)
status:=1;
END_IF

Вопрос по таймеру Т1: Почему вызов таймера написан просто Т1(); без указания времени и переменной на входе...например Т1(in:=TRUE, PT:=#1s);
Но при этом подразумевается, что этот таймер был включен (шёл отсчёт времени), до тех пор пока не поступила команда
(*Останавливаем таймер ожидания ответа*)
T1(IN:=FALSE, PT:=T#0s );
Мне как то странно ..Неужто, если я просто вызову Т1(); то он у меня сразу запустится без подачи команды на вход???????