西门子PLC编程学习之移位&循环指令(科普篇)
引言
移位操作指令:前世今生,它属于汇编语言逻辑指令中的一部分,它包括移位指令(含算术移位指令、逻辑移位指令),循环移位指令(含带进位的循环移位指令),双精度移位指令三大类。其功能为将目的操作数的所有位按操作符规定的方式移动1位或按寄存器CL规定的次数(0~255)移动,结果送入目的地址。目的操作数是8位(或16位)的寄存器数据或存储器数据。
一、指令简介
1.1SHR右移
1.2 SHL左移
1.3 ROR:循环右移
1.4 ROL:循环左移
二、实验编程
2.1 SHR右移 & SHL左移
程序编写:插入相关指令
建立监控变量表
测试程序记录结果
右移空出位置填充1,左移空出位置填充0
2.2 ROR:循环右移 & ROL:循环左移
程序编写
变量监控表建立
测试程序记录结果
无空位填充问题。
在PLC编程使用结构文本ST语言编程中使用CASE语句实现移位功能
在PLC进行编程中常常会用到移位指令,大家也都是很熟悉,今天要跟大家聊聊的就是如何使用case语句来实现移位指令的功能。
一、首先条件语句CASE的语法结构和功能
CASE语句 :用来选择几个分支程序部分之一。选择是基于选择表达式当前值的。
语法:
CASE语句按下列规则执行:
选择表达式必须返回一个整数类型的值。当CASE语句被处理时,程序检查是否选择表达式的值包含在指定的值表之中。如果找到匹配项,列表指定的语句部分将被执行。如果没有发现匹配项,程序选择ELSE后面的语句,或者如果ELSE分支不存在则无语句可执行。下表列出了case语句的参数:
值表 :包含允许的选择表达式的值。如下面的语句表达:
二、通过一个示例来看看如何通过CASE语句来实现移位的功能
功能要求,当按下启动按钮,六盏灯每隔2s,从左到右依次点亮;当按下停止按钮,灯全部熄灭。
看到本例,相信大家首先想到的就是移位指令,可以很容易实现此功能,今天我们主要要练习的就是CASE语句的使用,所以,看看如何通过CASE语句来实现本例的功能。
编程过程:
1、使用条件语句IF,当按下启动按钮来对灯赋值1(点亮第一盏灯),当按下停止按钮,则对灯赋值0(熄灭所有灯)
IF #START THEN
#LIGHT_TEMP := 1;
ELSIF #STOP THEN
#LIGHT_TEMP := 0;
END_IF;
2、设定时间,间隔2s
#TIME.TON(IN := (#LIGHT_TEMP = 1),
PT := T#2S);
#TIME_1.TON(IN := (#LIGHT_TEMP = 2),
PT := T#2S);
#TIME_2.TON(IN := (#LIGHT_TEMP =4),
PT := T#2S);
#TIME_3.TON(IN := (#LIGHT_TEMP = 8),
PT := T#2S);
#TIME_4.TON(IN := (#LIGHT_TEMP = 16),
PT := T#2S);
#TIME_5.TON(IN := (#LIGHT_TEMP = 32),
PT := T#2S);
3、使用CASE语句来进行选择赋值
CASE #LIGHT_TEMP OF
1:IF #TIME.Q AND #LIGHT_TEMP=1 THEN
#LIGHT_TEMP := 2;
END_IF;
2:IF #TIME_1.Q AND #LIGHT_TEMP=2 THEN
#LIGHT_TEMP := 4;
END_IF;
4:IF #TIME_2.Q AND #LIGHT_TEMP=4 THEN
#LIGHT_TEMP := 8;
END_IF;
8:IF #TIME_3.Q AND #LIGHT_TEMP=8 THEN
#LIGHT_TEMP := 16;
END_IF;
16:IF #TIME_4.Q AND #LIGHT_TEMP=16 THEN
#LIGHT_TEMP := 32;
END_IF;
32:IF #TIME_5.Q AND #LIGHT_TEMP = 32 THEN
#LIGHT_TEMP := 1;
END_IF;
END_CASE;
4、赋值输出
#LIGHT := #LIGHT_TEMP;
5、完整程序如下图所示:
6、仿真运行:
注:通过本示例,主要是跟大家看看case语句的使用,同时,也是通过本示例来看看使用结构文本ST编程的多种方法。
相关问答
plc左移位指令的用法?
PLC左移位指令用于将一个16位二进制数在内部进行左移操作,即将二进制数的每一位向左移动一位,最高位的进位会丢失,最低位会补上一位0。其用法为将要左移的二进...
松下PLC怎么编位移位指令?
1.一旦置位信号将指定继电器接通,则无论置位信号状态如何变化,已接通的指定继电器都将保持接通状态直至复位信号接通。2.置位、复位信号同时接通优先执行复位...
西门子plc循环移位指令的用法?
右移字节(SRB)和左移字节(SLB)指令将输入数值(IN)根据移位计数(N)向右或向左移动,并将结果载入输出字节(OUT)。移位指令对每个移出位补0。如果移位数...右移...
三菱plc的移位指令怎么用?
三菱PLC有很多不同的移位指令,比如SL,SR,SLC,SRC,SLL,SRL等等。下面以SL指令为例,介绍一下移位指令的使用方法:SL指令的作用是将指定的字或位从左往右...
顺开逆停跑马灯移位指令?
动。当按下停止按钮,停止信号灯亮...用按钮控制6台电机的启动和停止,要求当按下启动按钮,启动信号灯亮,而后每隔2s启动一台电机,直到6台电机全部启动。当按...
怎样通俗易懂的理解西门子plc寄存器移位指令?
PLC中的寄存器移位指令是一种用于在寄存器中移动二进制位的命令。这种指令可以用于向左或向右移动寄存器中的位,并在每个移位过程中修改寄存器的值。一个寄...
三菱FX1S的PLC,梯形图怎么编写D寄存器数据转移?
FX1S的PLC没有数据移位指令,但你可以自己做框里是移位的次数,要注意移位太多会1秒无法完成,实际变成2秒一次或更多了FX1S的PLC没有数据移位指令,但你可以自...
三菱PLC的移位传送指令是怎样工作的?
三菱PLC[MOVK1X0K1M10]中:K1X0表示起始位置为X0的一个位元件组,共有4个位元件组成,即X0~X3.K1M10表示起始位置为M10的一个位元件组,共有4个位元件组...
三菱移位指令的编程实例?
三菱移位指令是PLC编程中常用的指令之一,它可以将数据按照指定的位数进行移位,并将移位后的结果保存到指定的寄存器中。下面是一个简单的编程实例:LDW1SHLW1...
plc移位的时候线圈失电会复位吗?
根据下一个位的状态来决定移位后线圈的状态。复位只和下一个位有关系。根据下一个位的状态来决定移位后线圈的状态。复位只和下一个位有关系。