西门子S7 200PLC堆栈指令问题

来自:    更新日期:早些时候
西门子200plc 入栈和堆栈指令怎么在指令库里面找不到的呢?~

西门子200plc 入栈、堆栈、出栈指令用LPS、LRD、LPP指令。


谈到这个问题你首先得了解计算机的数据存储区。西门子和三菱等都一样可以用这样的方式输出的。三菱的是 [MOV 255 K2Y0] ,它们的工作方式是把输出的位组合成字节,一个字节占8各位,你可以 MOV_B 16#FF 到VB0里,那么同理,你也可以把输出的Q点以连续的8个为单位组成一个输出的字节来用,所以就有QB0的出现。那么前面的16#FF是什么意思呢?那就是一个字节能单位存储区能存的十六进制最大的数据,用十进制表示就是255,用二进制表示就是11111111。在这里你可以看十六进制,也可以看十进制,但是最重要的就是十六进制数据转换成的二进制数据。就是那8个1。你知道开关的通断在计算机里用0和1表示吧,那么你用Q点组成的8个存储位现在都是1,那表示什么呢?那就表示8个 Q点都输出。那么同理,你可不可以看出后面的16#AA呢?对了,AA表示10101010,后面的85呢?再后面的0呢?你应该能理解了吧?这里的数据和实际的输出是相反的哦,数据是从后到前数的哦。

估计你也就是指令的堆栈工作原理不清楚,找本介绍堆栈这块详细点的书看看吧,也不难,挺简单的LD I0.1
首先装载I0.1常开
AN I0.0
串联I0.0常闭
LPS
将以上触点的逻辑运算的结果(根据I0.0和I0.1的状态只可能是0或1)执行逻辑入栈操作,也就是说将存入第0级堆栈存储器的I0.0与I0.1串联的值复制后由堆栈栈顶压入,使0级堆栈和1级堆栈的值相同
A I0.2
将此时0级堆栈的值再与上I0.2的值,并将其结果存入0级堆栈中
= Q0.1
将0级堆栈中的值(栈顶的值)送至输出映像寄存器Q0.1中
LPP
执行逻辑出栈指令时将栈顶值弹出堆栈,1级堆栈的值上升到0级堆栈中(1级堆栈的值实际上就是I0.0与I0.1串联之后的结果)
= Q0.0
将此时0级堆栈的值送入Q0.0中


西门子S7 200PLC堆栈指令问题视频

相关评论:

相关主题精彩

版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

Copyright © 喜物网