①:打开博途,创建新项目并添加CPU设备
②:程序块内添加函数块FC和数据块DB
程序块的结构
③:编辑“函数块FC”
变量表,创建了一个包含10个元素的数组Array
IF #Start THENn FOR #i:= 0 TO 8 DOn FOR #j:= 0 TO 8-#i DOn IF #Array[#j] > #Array[#j+1] THENn #temp1:= #Array[#j];n #Array[#j]:= #Array[#j+1];n #Array[#j+1]:= #temp1;n END_IF;n END_FOR;n END_FOR;nEND_IF;
可以看出,整个子程序有两层FOR循环,外层循环9次。
外层循环第一次(i=0),则内层j取值0-8,循环9次。j=0时,比较第1和第2个元素;j=1时,比较第2和第3个元素......依次类推,内层9个循环分别将9组相邻的数据两两比较,大者置后,元素中的最大值将移至数组最后;
外层循环第二次(i=1),则内层j取值0-7,循环8次(最大值已在最后,只需处理前9个元素),依次将8组相邻数据两两比较,结果元素中第二大值移至数组倒数第二位;
....................
外层循环结束,所有元素将按从小到大顺序排列完成。
注意:FC的临时变量仅在此扫描周期,被调用的此FC中赋值有效。
④:编辑数据块,对数组内元素赋初值:
⑤:主程序调用FC子程序:
M2.0控制是否执行
⑥:仿真运行并测试