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(填表)指令
不过建议你可以考虑用指针来做,会更加灵活
提问者对于答案的评价:
谢谢
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc294548.html