Цитата Сообщение от Валенок Посмотреть сообщение
Вы вообще ответы читаете ? За 600мс много чего может навалится в порт
Конечно читаю Я просто не придумал как оградить буфер от переполнения, поэтому и методом тыка, увидел, что при меньшем времени буфер не успевает завалить данными, и ПЛК не ребутится...

Цитата Сообщение от Валенок Посмотреть сообщение
Сначала надо определится, что является разделением пакетов - символы и/или время ? (таймаут - отдельная песня).
Пошагово отлаживал программу, заметил, что наполнение массива otvet после каждого запроса выполняется правильно, так же как я вижу через снифер. Совпадает с описанием протокола обмена.
Но когда запускаю без точек останова, то вижу что данные сначала идут верные, а потом идет абракадабра и ребут ПЛК.
Код:
byte_read:=SysComRead(port_number, ADR(buf_otvet), 7, 0);
			FOR i:=0 TO byte_read-1 DO
				otvet[l+i]:=buf_otvet[i];
			END_FOR
Еще для эксперимента, поменял скорость обмена на 9600, и Время ожидания ответа = 300ms; Задержка между запросами=T#1000ms;
В итоге данные получаю стабильным id прибора (string), а t1 (real) через раз или два верное значение каждого опроса...
Подскажите как можно правильно контролировать начало массива otvet? По протоколу, ответ каждого запроса одинаковы первые 3 байта: 16#10, 16#FF, 16#90