大家好,
我现在正学习scl 编程.
看到一个程序例子,请看附件图片.
该例子是用scl建立一个FB,
然后通过调用FC105读入模拟量,9个模拟量中去除最大值和最小值,
然后求平均值.
关于这个程序我有个地方不明白,
1,我的概念是,在一个扫描周期里不是只能读进来一个模拟量吗?
FB也只能运行一次,那么这9个模拟量是怎么存入到DATA_STORE0到DATA_STORE1
里面去的呢? 是不是应该加一段程序,
就是把模拟量依此放入DATA_STORE1-9 的程序?
2,那个LOOP_COUNT的循环语句,是把DATA_STORE1放到DATA_STORE0,
DATA_STORE2放到DATA_STORE1里,依此类推.但是这里面没有模拟量数值,
循环感觉没什么意义.
3,LOOP_COUNT的循环语句是不是在FOR和END_FOR之间循环9次,
但是后面出来一个把模拟量数赋值给DATA_STORE9的语句,感觉这
个赋值语句应该写在LOOP_COUNT的循环语句语句里而不是外面.
问题补充:
请管理员把问题放到, 自动化系统SIMATIC S7 300/400里面去好吗?第一次提问,没找到怎么把问题放到合适的版块.
图片说明:
最佳答案
1、这个程序执行的顺序,是先FIFO堆栈,不过是从下往上堆的,就是先吧d1放到d0里面,d2放到d1里面......d9放到d8里面,然后d9里面放当前值,就这样,然后d8里面就是上个周期的值,d9还是当前值,PLC开始运行的第一次扫描没大多意思倒是真的,因为d0到d9里面是0,但是9个扫描周期过去之后,里面的数值就填满了
2、这个问题在第一个问题里面基本上也说了,也就前几个周期里面是空的,9个周期以后,数据就正常了
3 也是这个原理啊,能看明白第一段就都明白了
一个周期采集一个当前数据,放到For循环里面,每次循环都采集9次,9个一模一样的数据了,就就不是平均值了~
提问者对于答案的评价:
两个回答的都很好,很及时.
忧郁了半天,还是觉得后一个说的更具体.
谢谢二位.
最佳答案作者回复:
很高兴能帮到你~
能看明白就好,就怕叙述的你看不明白
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc177572.html