PLC堆栈的问题。
新手!想问下,PLC什么时候会将数据放入堆栈中?是每一个逻辑运算结果都会放进去?这里的结果是指什么?是输出Q的时候,还是每个A,O操作都算?比如,LDI0.0;AI0.1...
新手!想问下,PLC什么时候会将数据放入堆栈中?是每一个逻辑运算结果都会放进去?这里的结果是指什么?是输出Q的时候,还是每个A,O操作都算?比如,LD I0.0;A I0.1;O I0.3;AN I0.2 ;= Q0.0;,这直接哪里会进行堆栈操作?望高手指点!!
展开
3个回答
展开全部
楼主,我是这样理解的。
PLC中CPU进行运算过程中,在需要进堆栈的时候才进堆栈。
比如:
1、不需要进堆栈的
LD X0
AND X1
OUT Y0.
这样的不需要进堆栈,因为每次运算的结果都存在CPU累加器A里面。(书上讲的)
2、需要进堆栈的,这段指令在执行过程中,就有数据进堆栈。(分号后加注释)
LD X0 ;取了X0的状态放进累加器
OR X1;把X1的状态与累加器内状态进行 或 运算。
LD X2;这时候如果直接取X2的状态进累加器,那前面两条指令的就白干了。
所有这条指令有隐 含操作,那就是把前面两条指令运算的结果,进行进堆栈保护,
然后再把X2的状态取进累加器。
OR X3;接着,取X3的状态与累加器或 运算
ANB ;这条执行是,就是将堆栈最上面的状态值(也就是前面进堆栈被保护的)
与当前累加器的状态进行与运算。这也就是书上说的,块 与指令。
OUT Y0;输出。
从上面分析我总结了,只要是出现LD,必须要有输出。没输出,再有LD,那必定有进堆栈操作。
这个进堆栈是PLC系统自己完成。只要你编程正确,也没必要理会他。
但是要理解倒地是怎么执行,我是这样理解的,你参考哈!!!
祝你愉快!!!!
PLC中CPU进行运算过程中,在需要进堆栈的时候才进堆栈。
比如:
1、不需要进堆栈的
LD X0
AND X1
OUT Y0.
这样的不需要进堆栈,因为每次运算的结果都存在CPU累加器A里面。(书上讲的)
2、需要进堆栈的,这段指令在执行过程中,就有数据进堆栈。(分号后加注释)
LD X0 ;取了X0的状态放进累加器
OR X1;把X1的状态与累加器内状态进行 或 运算。
LD X2;这时候如果直接取X2的状态进累加器,那前面两条指令的就白干了。
所有这条指令有隐 含操作,那就是把前面两条指令运算的结果,进行进堆栈保护,
然后再把X2的状态取进累加器。
OR X3;接着,取X3的状态与累加器或 运算
ANB ;这条执行是,就是将堆栈最上面的状态值(也就是前面进堆栈被保护的)
与当前累加器的状态进行与运算。这也就是书上说的,块 与指令。
OUT Y0;输出。
从上面分析我总结了,只要是出现LD,必须要有输出。没输出,再有LD,那必定有进堆栈操作。
这个进堆栈是PLC系统自己完成。只要你编程正确,也没必要理会他。
但是要理解倒地是怎么执行,我是这样理解的,你参考哈!!!
祝你愉快!!!!
推荐于2017-10-05 · 知道合伙人教育行家
关注
展开全部
想了解关于堆栈的什么问题?
堆栈是一种执行“后进先出”算法的数据结构。
设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种结构的特点。
堆栈就是这样一种数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做“栈底”。数据一个一个地存入,这个过程叫做“压栈”。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面一个单元中,堆栈指示器中的地址自动加1。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减 1。这个过程叫做“弹出pop”。如此就实现了后进先出的原则。
堆栈是一种执行“后进先出”算法的数据结构。
设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种结构的特点。
堆栈就是这样一种数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做“栈底”。数据一个一个地存入,这个过程叫做“压栈”。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面一个单元中,堆栈指示器中的地址自动加1。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减 1。这个过程叫做“弹出pop”。如此就实现了后进先出的原则。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般运算的时候都会进栈的,前一个数被压入栈,后一个进来,前一个就会向下压,而他们的运算结果会存于栈顶。
追问
额。。我也知道一般是会的。。就是不知道什么时候会而已。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询