在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移位指令,让你编程效率提高一倍!
我们都知道移位指令的功能是对数据进行左、右移动。有循环移位指令ROR,ROL,RCR和RCL,位移字移指令SFTR,SFTL,WSFR和WSFL,还有移位读写指令SFWR和SFEL。在编写程序中,较为常用的就是POR,ROL,SFTR和SFTL这几个了,对于这几个指令我们就要掌握一下了。在这里,我们需要注意的一点是,在使用这些指令时最好是使用脉冲执行型指令。因为如果使用连续执行型指令的话,这样每个扫描周期都要执行一次了。
下面我们便举几个简单的例子来学习一下这几个常用指令。
1、 要求Y0-Y2三盏灯轮流亮1s,然后一起亮1s,如此反复循环。
下面就分析一下以上的程序。对于Y2Y1Y0,依控制要求,每次其输出应为001,010,100,111,其对应的十六进制数为1247,先将此循环数据送到数据寄存器,再执行循环移位,以1s的速度移位,每次移动4位,最后将数据寄存器中的低四位送到K1Y0,这样在Y3-Y0的输出就会得到其控制要求的输出。
该要求既可以用循环右移指令,也可以用循环左移指令,其实都是差不多的,只需要改动一点点。 只要了解了控制要求,理解了它是如何控制的,就万变不离其宗了。下面便是用循环左移指令编写的程序。
2、控制一组8个灯,当启动时,要求Y7-Y0这8个灯从右到左逐个点亮,全部灯点亮时,再从左到右逐个熄灭,全部灯熄灭后,再从左到右逐个点亮,全部灯点亮时,再从右到左逐个熄灭,如此反复循环。
下面也分析一下以上的程序。定时器T0用于左移和右移的移位信号,定时器T1用于对K1M0的加1计数控制,INCP K1M0则为加1计数器,计数值用K1M0表示,其中M1、M0的计数值用于左右移位的控制。当M1=0,M0=1时为左移逐渐点亮;当M1=1,M0=0时为右移逐渐熄灭;当M0 =1,M1 =1时为右移逐渐点亮;当M0 =0,M1= 0时为左移逐渐熄灭。
当按下启动按钮时,T1常闭触点闭合,执行一次INCP K1M0指令,K1M0=0001,则M1=0,M0=1,M1常闭触点闭合,执行左移指令SFTL,T0每隔1s发一个脉冲,将M0的1依次左移到Y0-Y7中,依次点亮。
T1每隔8s发一个脉冲,执行一次INCP K1M0指令,K1M0=0010,则M1=1,M0=0,M1常开触点闭合,执行右移指令SFTR,T0每隔1s发一个脉冲,将M0的0依次右移到Y7-70中,依次熄灭。
以此类推,在此就不赘述了。这样,从而可以达到控制要求。
相关问答
三菱plc循环移位指令使用方法?
1、打开三菱PLC的主界面,在X000那里利用梯形图输入确定“MOVK5D0”这条位移指令。2、下一步,需要在M8013那里继续利用梯形图输入确定“OUTC0K3”这条位移...
plc移位寄存器的使用方法?
关于这个问题,PLC移位寄存器是一种常用的逻辑控制元件,用于实现二进制数值在寄存器中的移位操作。其使用方法如下:1.选择适当的移位寄存器类型,包括左移、...
西门子plc循环移位指令的用法?
右移字节(SRB)和左移字节(SLB)指令将输入数值(IN)根据移位计数(N)向右或向左移动,并将结果载入输出字节(OUT)。移位指令对每个移出位补0。如果移位数...右移...
plc怎么让移位寄存器回到起点?
将移位寄存器的值进行清零,然后重新赋值。将移位寄存器的值进行清零,然后重新赋值。
三菱plc的移位指令怎么用?
三菱PLC有很多不同的移位指令,比如SL,SR,SLC,SRC,SLL,SRL等等。下面以SL指令为例,介绍一下移位指令的使用方法:SL指令的作用是将指定的字或位从左往右...
顺开逆停跑马灯移位指令?
动。当按下停止按钮,停止信号灯亮...用按钮控制6台电机的启动和停止,要求当按下启动按钮,启动信号灯亮,而后每隔2s启动一台电机,直到6台电机全部启动。当按...
位移传感器在plc中如何编程?
位移传感器一般是电阻型的,可以理解为滑动变阻器。FX2n系列没有直接输入电阻的模块,可以外接一个5V或10V的电源,用2DA或4DA的电压输入就可以。以2DA为例:ld...
西门子200plc移位寄存器怎么使用的?
右移字节(SRB)和左移字节(SLB)指令将输入数值(IN)根据移位计数(N)向右或向左移动,并将结果载入输出字节(OUT)。移位指令对每个移出位补0。如果移位数...右移...
三菱PLC移位指令的应用?
三菱PLC移位指令可以用于实现数据的移位,包括左移和右移。移位指令可以帮助我们对数据进行重新排列,从而简化程序的编写。在实际应用中,移位指令常常被用于对...
plc移位指令的特点?
移位指令分为左、右移位和循环左、右移位及移位寄存器指令三大类。左移和右移指令的功能是将输入数据IN左移或右移N位后,把结果送到OUT中。主要包括:①字节移...