Еще один ф.блок не из OSCAT-овской библиотеки, но тоже бесплатной -"HBMutilities"
Цитата:
FUNCTION_BLOCK rand (* Generation of Pseudo Random Numbers *)
VAR_INPUT
initvalue: DWORD; (* Initialization value *)
END_VAR
VAR_OUTPUT
SRND: DWORD; (* procedure works like rnd, but it is *)
END_VAR (* improved [no util.lib, better input/ *)
VAR (* output definition ... *)
a1: BOOL;
a2: BOOL;
a5: BOOL;
a18: BOOL;
a0: BOOL;
Q: DWORD;
END_VAR
F Q=0 THEN
IF initvalue<>0 THEN
Q:=initvalue;
ELSE
Q:=123456;
END_IF;
END_IF;
a1:=Q.2;
a2:=Q.3;
a5:=Q.6;
a18:=Q.18;
a0:=(((a1 XOR a2) XOR a5) XOR a18);
Q:=2*Q;
Q.0:=a0;
SRND:=Q;