Цитата Сообщение от mastrik Посмотреть сообщение
Модуль простой, 6 последовательных регистров со значениями интовыми и столько же "безопасных" значений, которые ставятся, если превышен сетевой таймаут, только их каждый цикл обновлять нельзя, там память имеет ресурс.
Такие вещи, как безопасные значения, обычно конфигурируются отдельно.
Но если Вы хотите в своем коде это сделать, то лучше на первом скане записать безопасные значения, а далее работать только с текущими.


Цитата Сообщение от mastrik Посмотреть сообщение
Прочитал вашу документацию и залип только в одном месте - правильно сформировать буфер на отправку значений.
Неужели будет просто:
FOR i:=1 TO 6 DO
pData := ADR(Mdl.AO[i]); (*mdl с новым типом для этого модуля, у которого есть массив из 6 интов под аналоговый выход АО*)
Mdl.pDisp^.SendBuffer[i-1] := pData^;
END_FOR;
?
Еще нужно добавить:
pData := pData + 1;
Mdl.pDisp^.SendBuffer[i] := pData^;

Иначе получается, что Вы только первый байт от INT кладете в буфер.