Сообщение от
slonegd
видимо нельзя записывать так: (TempPtB+1)^;
(давно не писал подзабыл правила, компилятор всегда поправит)
попробуйте так:
TempPtB:=TempPtB+1;
Buffer[1]:=TempPtB^;
а вообще тут цикл напрашивается:
TempPtB:=ADR(...);
FOR i:=0 TO 3 DO
Buffer[i]:=TempPtB^;
TempPtB:=TempPtB+1;
END_FOR
PS я когда то так же организовывал связь по модбасу, использовал кейс и просто перебирал все адреса и регистры в сети. Жизнь научила, что некоторые вещи надо опрашивать быстрее (датчики положения), а некоторые реже (датчики температуры), а некоторые вообще только при изменении (в моих системах это му110-6у). А то выходило, что необходимо больше секунды жать кнопку ПУСК где-то на установке, чтоб до проги дошло, что её нажали.
PPS лучше использовать не числовые константы в кейсе (16, 17), а создать список и ссылаться на него (WriteInBuffer, ModBusFunction16). В скобках это пример, мне не известен смысл записи в 17 шаге, возможно это установка частоты привода, тогда и называть по смыслу.