西门子S7-1200编程实例,移位和循环移位指令如何使用?
西门子S7-1200的移位指令包括左移位指令和右移位指令,循环移位指令包括循环左移位指令和循环右移位指令。
移位指令 。移位指令用于将参数IN的位序列移位,结果送给参数OUT,参数N指定移位的位数。单击移位名称下方可以选择数据类型,移位指令IN和OUT端支持的数据类型为字节BYTE、字WORD、双字DWORD。移位时用0填充移位操作清空的位。循环移位指令 。循环指令用于将参数IN的位序列循环移位,结果送给参数OUT,参数N定义循环移位的位数。单击移位名称下方可以选择数据类型,移位指令IN和OUT端支持的数据类型为字节BYTE、字WORD、双字DWORD。移位时从目标值一侧循环移出的位数据,将循环移位到目标值的另一侧,因此原始位值不会丢失。
下面我们通过一个简单的实例来介绍移位指令如何使用。按下I1.2,将MB100中存储的数据左移2位送到MB200中,按下I1.3将MW100中存储的数据右移2位送到MW300中。
一、编写程序。在项目视图中打开OB1,在指令树中拖拽左移位指令到程序段1中,选择数据类型为字节,在移位指令的使能端插入常开触点I1.2,输入IN参数MB100,输入N参数2,输入OUT参数为MB200。在指令树中拖拽右移位指令到程序段2,选择数据类型为字,在移位指令的使能端插入常开触点I1.3,输入IN参数MW100,输入N参数2,输出参数OUT为MW300。这样一个简单的移位指令的实例就完成了,单击保存项目按钮保存项目。
二、编译、下载程序到PLC。在项目树中选中程序块,单击下载按钮将所有块下载到PLC。
三、查看程序运行情况。单击“转到在线”按钮,在项目树中单击打开监视表格文件夹,双击添加新监视表格,可以看到项目树中添加了监视表格,同时在工作区打开了监视表格编辑器,输入地址MB100和MB200、MW100和MW300,显示格式为二进制,单击监视按钮观察程序的运行情况,在监视表格中修改MB100为01011,按下I1.2可以看到MB200的值变为MB100的值左移2位的结果,按下I1.3可以看到MW300的值变为MW100的值右移2位的结果。
在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中的左移位指令(SHL)是一种位移指令,用于将一个数据类型的操作数的二进制位向左移动指定的位数。例如,将一个32位的整数左移3位,可以使用SHL指令,操作...
PLC中寄存器移位的SHRB指令怎么使用的?
SHRB:移位寄存器指令,其中:EN:为使能端;DATA:需要保存的数据位(bit);S_BIT:移位寄存器的最低位N:移位寄存器的长度(bits)你程序中的意思就...SHRB:移位寄.....
西门子200plc移位寄存器怎么使用的?
右移字节(SRB)和左移字节(SLB)指令将输入数值(IN)根据移位计数(N)向右或向左移动,并将结果载入输出字节(OUT)。移位指令对每个移出位补0。如果移位数...右移...
西门子PLC移位与循环指令,怎样应用?
右移字节(SRB)和左移字节(SLB)指令将输入数值(IN)根据移位计数(N)向右或向左移动,并将结果载入输出字节(OUT)。移位指令对每个移出位补0。如果移位数...右移...
plc循环移位指令有什么用?
plc循环移位指令有用右移字节(SRB)和左移字节(SLB)指令将输入数值(IN)根据移位计数(N)向右或向左移动,并将结果载入输出字节(OUT)。移位指令对每个移...plc...
plc移位指令的特点?
移位指令分为左、右移位和循环左、右移位及移位寄存器指令三大类。左移和右移指令的功能是将输入数据IN左移或右移N位后,把结果送到OUT中。主要包括:①字节移...
plc移位寄存器工作原理?
分别提供独立的时钟信号给移位寄存器和存储寄存器,移位寄存器具有直接清零功能和串行输入输出功能以及级联应用.(采用标准引脚。)移位寄存器和存储寄存器均为...
三菱PLC移位指令的应用?
三菱PLC移位指令可以用于实现数据的移位,包括左移和右移。移位指令可以帮助我们对数据进行重新排列,从而简化程序的编写。在实际应用中,移位指令常常被用于对...
松下PLC怎么编位移位指令?
1.一旦置位信号将指定继电器接通,则无论置位信号状态如何变化,已接通的指定继电器都将保持接通状态直至复位信号接通。2.置位、复位信号同时接通优先执行复位...
三菱plc循环移位指令使用方法?
1、打开三菱PLC的主界面,在X000那里利用梯形图输入确定“MOVK5D0”这条位移指令。2、下一步,需要在M8013那里继续利用梯形图输入确定“OUTC0K3”这条位移...