【写在前面】
随机数可以用于模拟显示或者在某种特定情况下的需求,一般来说人机界面或者上位机都可以通过相关的脚本来实现。
【程序设计思路】
程序思维来自西门子论坛。
建立一个FC功能,采用SCL编辑:
IF #Change_p=1 THEN
IF #Change_index<100THEN
#Change_index := #Change_index + 1;
END_IF;
IF #Change_index >= 100THEN
#Change_index := 1;
END_IF;
END_IF;
#TEMP1:= NORM_X(MIN := 0, VALUE := #Change_index, MAX := 255);
#Random_OUT:= SCALE_X(MIN := #Range_MIN, VALUE := #TEMP1, MAX := #Range_MAX);
通过修改功能里面的数据可以调整相关产生随机数不同。
测试:
change_p采用的是时钟的秒钟,我们可以调整这个脉冲,从而控制变化频率。
修改功能
"R_TRIG_DB11"(CLK:="Clock_1Hz",
Q=>#P1);
IF #P1 THEN
#RT_SEC := #RT_SEC + 1;
END_IF;
IF #RT_SEC>#Change_RTsetsec THEN
IF #Change_index < 100 THEN
#Change_index := #Change_index + 1;
END_IF;
IF #Change_index >= 100 THEN
#Change_index := 1;
END_IF;
END_IF;
IF #RT_SEC>#Change_RTsetsec THEN
#RT_SEC := 0;
END_IF;
#TEMP1:= NORM_X(MIN := 0, VALUE := #Change_index, MAX := 255);
#Random_OUT:= SCALE_X(MIN := #Range_MIN, VALUE := #TEMP1, MAX := #Range_MAX);
测试:
通过设置采样时间秒,当达到采样间隔后,随机数才会产生。 |