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