关于s7-200引入队列的程序
林慧玲
发布于2014-03-28 18:01
1
0
标签:
1.电流源模拟量不断输入plc,模拟量转换为数字量(这步不知道可不可以不要)
2.引入队列,每过1s读取模拟量,并把这个值放入队列的一个栈中。1s后,这个值又进入队列的下一个栈,以此类推。(6个栈)
3.当i0.3闭合,不停读取第3个栈里的数据,并累加给m3.0,累加后,该存储单位复位置零表示已经提走数值,直到i0,3断开。i0.4闭合,不停读取第4个栈的数据,累加给m3.0。i0.5,i0.6以此类推累加给m3.1。
这是要做的程序的基本思路,本来想用一个个赋值做的,可是可能不止6个变量需要提取。比如要30个变量,i0.3不停的取第15个变量的值,会很繁琐。所以想能不能用队列做,可是书上确实讲的不多,没有提到队列用梯形图怎么弄。
当然可能对队列理解不对,
佳答案
1.电流源模拟量不断输入plc,模拟量转换为数字量(这步不知道可不可以不要)?
答:这个问题有点含糊,plc内部处理的必然是数字量,那么只是这个数字量是裸数据还是工程量的区别
譬如外部的模拟量测量的是温度,生活中用的肯定是多少度这个值,那么如果plc经过a/d转换后,得到一个16000这个数值,并不能直接的反应温度的值,如果需要使用的数字量可以直接反应实际的温度值,还需要进行工程量的转换
3.当i0.3闭合,不停读取第3个栈里的数据,并累加给m3.0,累加后,该存储单位复位置零表示已经提走数值,直到i0,3断开。i0.4闭合,不停读取第4个栈的数据,累加给m3.0。i0.5,i0.6以此类推累加给m3.1?
答:首先不可能用m3.0这个位变量来存储累加和,至少需要一个16位的整型数据类型来存储如vw8,鉴于需要不断的累加,为了防止数据溢出,建议,好采用32位长的数据类型来存储累加和如vd100
还有问题描述的不是很清楚,不好直接回答累加和计算的问题
西门子200plc和队列有关的指令在表指令的大项下
有lifo(后进先出),fifo(先进先出),ad_t_tbl(填表)指令
不过建议可以考虑用指针来做,会更加灵活