前段时间,其他部门需要测试采集软件,需要我们PLC部提供比较多的数据。我用的是STEP7 的SCL包,下面是SCL实现PLC伪随机数的程序:
i,j,k,m,k1:INT;
n:INT;
b:BOOL;
l,n1:WORD;
CurDateTime:DT; //存系统时间
Cur_DT_Byte AT CurDateTime : STRUCT
Year : BYTE;
Month : BYTE;
Day : BYTE;
Hour : BYTE;
Minute : BYTE;
Second : BYTE;
rand1 : INT; //把系统时间最后两个字节当做int
END_STRUCT;
END_VAR
VAR_TEMP
temp:INT;
END_VAR
BEGIN
temp:=READ_CLK(CDT := CurDateTime// OUT: DATE_AND_TIME
); // 读取系统时间
k:= Cur_DT_Byte.rand1; //给DW0赋初值,中间有数据类型转换的过程
l:=INT_TO_WORD(k);
DB4.DW0:=l;
FOR n:=0 TO 10000 BY 2 //这里加2是因为WORD占两个字节
DO
k1:=WORD_TO_INT(DB4.DW[n]);
m:=(3373*k1+ 1)MOD 32767;
n1:=INT_TO_WORD(m);
DB4.DW[n+2]:=n1;
END_FOR;
END_FUNCTION