Mi viene in mente qualcosa tipo questo:
VAR
WValue : ARRAY[0..3] OF WORD;
IValue : ARRAY[0..1] OF LINT;
END_VAR
// Min value: -9223372036854775808 16#8000000000000000
WValue[0]:=16#8000; //MSW
WValue[1]:=16#0000;
WValue[2]:=16#0000;
WValue[3]:=16#0000; //LSW
IValue[0]:=WValue[0];
IValue[0]:=(IValue[0]*16#10000)+TO_ULINT(WValue[1]);
IValue[0]:=(IValue[0]*16#10000)+TO_ULINT(WValue[2]);
IValue[0]:=(IValue[0]*16#10000)+TO_ULINT(WValue[3]);
// Max value: +9223372036854775807 16#7FFFFFFFFFFFFFFF
WValue[0]:=16#7FFF; //MSW
WValue[1]:=16#FFFF;
WValue[2]:=16#FFFF;
WValue[3]:=16#FFFF; //LSW
IValue[1]:=WValue[0];
IValue[1]:=(IValue[1]*16#10000)+TO_ULINT(WValue[1]);
IValue[1]:=(IValue[1]*16#10000)+TO_ULINT(WValue[2]);
IValue[1]:=(IValue[1]*16#10000)+TO_ULINT(WValue[3]);
Nell’esempio ho riportato i due valori estremi di una variabile LINT.