假设需要读取100个随机数,存入有100个成员的数组。做这个练习是为了学习一下SCL编程。随机数使用系统时钟纳秒数来线性转换。
新建项目,选用1500PLC(6ES7 513-1AL02-0AB0,当然可以选用其它型号),设定本地时区,建立网络。
新建DB,建立变量,取消优化块的访问。
新建FC,先建立内部变量如下截图
在该FC下写SCL程序段
FOR #i := 0 TO 99 DO
#Ret := RD_LOC_T(#Current_DT);
#nanosecond := #Current_DT.NANOSECOND;
#nanosecond_real := DINT_TO_REAL(#nanosecond MOD 100000); (* 取纳秒后4位数*)
#m_real := DINT_TO_REAL(#m);
#n_real := DINT_TO_REAL(#n);
#nanosecond_1 := #nanosecond_real / 9999.0 * (#n_real - #m_real) + #m_real;
#random_dint := REAL_TO_DINT(#nanosecond_1);
#Array_dint[#i] := #random_dint;
END_FOR;
在OB1调用该FC
通过WINCC画面给m和n赋值,就可以产生不断变化的数组中的数值了。可以通过使Pause为1来暂停随机数产生。