Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
он массив читает из сокета, и наверняка объявил его байтовым, соответственно траснслятор поставил вв адресах куда пришлось
Код:
VAR
	flag		: BOOL;
	count	: INT:=0;
	result	: REAL;
	inPtr	: POINTER TO BYTE;
	outPtr	: POINTER TO REAL;
	stuff	: ARRAY[0..7] OF BYTE;
	tik		: TON;
END_VAR
(* @END_DECLARATION := '0' *)
IF tik.Q THEN
	inPtr:=ADR(TEMPO);
	stuff[count]:=inPtr^;
	inPtr:=inPtr+1;
	stuff[count+1]:=inPtr^;
	inPtr:=inPtr+1;
	stuff[count+2]:=inPtr^;
	inPtr:=inPtr+1;
	stuff[count+3]:=inPtr^;
	outPtr:=ADR(stuff[count]);
	flag:=NOT DWORD_TO_BOOL(outPtr MOD 4);
(*	IF flag THEN*)
		result:=outPtr^;
(*	END_IF; *)
	count:=(count+1) MOD 5;
END_IF;
tik(IN:=NOT tik.Q,PT:=T#2s);
END_FUNCTION_BLOCK
таким кодом у меня получилось перегрузить плк, когда указатель становится не кратным четырем, единственное чего я не добился, чтоб изначально указатель принял не кратное четырем значение, почему это вдруг транслятор, как Вы пишите, должен раздавать адреса на куда попало?