研选课堂
HOME
研选课堂
正文内容
plc编程转盘机移位案例 三菱SFTL(P)位左移指令在转盘机构中的应用
发布时间 : 2025-06-27
作者 : 小编
访问数量 : 23
扫码分享至微信

三菱SFTL(P)位左移指令在转盘机构中的应用

一,先来认识下SFTL(P)指令

SFTL(P):位左移指令,使指定位长度的位软元件每次左移指定的位长度的指令。

移动后,从最低位开始传送n2点长度的S位软元件。

下面是FX3U编程手册中的指令截图:

举个例子好理解:

上面这行程序的意思是,当M0导通后,首先M20为起始地址的K8个M软元件,即M20-M27先往左移动K1位,然后将M10开始的K1位的位状态赋值给M20。

大家最好在编程软件上模拟仿真一下,看看具体是怎么移位和赋值的,比如把K1改成K2试试效果。

二,转盘机构:转盘是由分割器带动旋转的,每旋转一个分度就等于到了一个工位,例如8个分度盘,那么每个工位呈45°均匀分布。每个工位或者部分工位上都有气缸或者其他机构需要对工件进行装配打孔等操作。

要控制好转盘机构,最简单的办法就是同步动作,也就是,转盘每转动一次,所有的工位上的执行机构都动作一遍,等所有工位动作一遍完后,转盘再旋转一个分度,然后所有工位再动作一遍,这样周而复始。虽然这样做不存在什么问题 ,但是有时候却不能这么做,比如,因为没有工件,气缸动作时,会检测不到磁性开关信号,导致动作停滞等。

所以,当工位上没有产品时,相应的执行机构就不需要动作,这样既节省了节拍,又避免了误动作的问题。

三,SFTL(P)的记忆功能

那么如何知道当前工位上是否存在工件呢?

要么在每个工位上装一个传感器,这样每个工位就能知道是否存在工件,当有信号时,执行机构就会动作;反之就直接跳过去,直接输出完成信号。这么做的好处就是程序简单,只看信号的有无动作即可。但是这么做,却要花费大量的传感器,那么有什么办法可以既节省传感器,又可以记住工位上是否存在工件呢?

答案就是使用SFTL(P)。

那么它是如何来记忆呢?

有了第一部分的指令解释,那么我们具体来实际应用并验证一下。

首先我们先看下下面这个转盘机构,它的上面有8个模具,其中0为上料位,1为打孔位,2为上铆钉位,3为空,4为压铆钉位,5为下料位,6为空,7为空。

然后我们将这几个位进行编码,其中上料位是自动上料,此位不需要记忆,因为它需要一直给转盘供料,因此上料位不需要进入编码。另外,虽然里面有空位,但是我们也需要将它一起编码,这样可以保持连续性。当空位出现有料时,因为没有机构,所以空位是没有程序的,因此即使状态位是1也没关系。

下面对1到7个工位进行编码,我们用M21-M27分别表示这7个工位,然后我们就可以写出位左移指令:

SFLTP M20 M21 K7 K1

结合这个转盘机构,我们再看下这条语句的意思:

M20表示的是上料位,上料位装了一个感应开关,当有料来且上到位时,就触发转盘转动一次,且此时M20置位1,当分割器到位信号来要给上升沿时,M20复位0。

M21表示工位1,实际是打孔。

M22表示工位2,实际是上铆钉。

M23表示工位3,空位没有动作机构。

M24表示工位4,实际是压铆钉。

M25表示工位5,实际是下料。

M26表示工位6,空位没有动作机构。

M27表示工位6,空位没有动作机构。

当相应的M软元件置位1时,表示当前工位有料,然后开始执行机构开始动作。

我们再根据指令来分析这条语句的执行过程:

当M0导通时,先将M21-M27的K7个整体往左移动K1位,然后将M20开始的K1位,也就是一个M20,它的当前状态赋值到M21。此时M21-M217的二进制值为1000000。那么此时,除了工位1需要动作外,其他工位还是处于不动状态。

当又上料后,触发M0第二次导通,那么先将1000000左移1位,变成0100000,然后再将M20=1的值,赋值给M21,然后M21-M27变成了1100000,此时工位1和工位2需要动作。

依次类推。你只需要根据相应M软元件的状态来确定是否执行动作,1就动作,0就不动作。

下面的表格有助于大家好好理解:

无动作

无动作

无动作

后面的都移出去了

有料检测

打孔

上铆钉

压铆

下料

步骤

上料位

工位1

工位2

工位3

工位4

工位5

工位6

工位7

1

人工上料

料1

2

转盘转动一次

料1

0

0

0

0

0

0

3

人工上料

料2

4

转盘转动一次

料2

料1

0

0

0

0

0

5

人工上料

料3

6

转盘转动一次

料3

料2

料1

0

0

0

0

7

人工上料

料4

8

转盘转动一次

料4

料3

料2

料1

0

0

0

9

人工上料

料5

10

转盘转动一次

料5

料4

料3

料2

料1

0

0

11

不上料

料6

12

转盘转动一次

料6

料5

料4

料3

料2

料1

0

13

人工上料

料7

14

转盘转动一次

料7

料6

料5

料4

料3

料2

料1

15

人工上料

料8

16

转盘转动一次

料8

料7

料6

料5

料4

料3

料2

17

人工上料

料9

18

转盘转动一次

料9

料8

料7

料6

料5

料4

料3

19

不上料

料10

20

转盘转动一次

料10

料9

料8

料7

料6

料5

料4

21

不上料

料11

22

转盘转动一次

料11

料10

料9

料8

料7

料6

料5

经过以上分析,大家是否了解了SFTL(P)指令的记忆功能呢?

四,通过上面的分析,我们可以看到,在刚开始做的时候,由于后面几个工位上是没有料的,此时状态位为0,因此机构不会动作,这样的话,就可以避免因为感应器没感应到而导致停机。

五,在这个基础上,我们还可以给设备做一套清料程序。也就是说,当工人要下班了,那么选择清料功能,此时,不再上料,然后将余下的料做完后再停机。

那么具体如何做呢?

我给个思路,看下面的SFC图

总结:使用SFTL(P)位左移指令时,它是先把原来工件的状态向左移动1位,然后最前面那位填入当前工件的状态,这样每个工位就能知道当前工位上工件的状态了。

另外,位移指令只适合固定工位数量的情况,如果是输送带流水的话,由于上面没有固定工位,并且过来的产品数量也不固定,间距也不固定,因此这种情况只能用WSFL(P)字左移指令配合寻址指针Z0来做,比如:

MOV K1 D0/ MOV K0 D0:检测完成后,将检测结果存到D0中,1表示合格,0表示不合格。

WSFLP D0 D11 K100 K1:将D11开始的K100个D寄存器,也就是D11-D110先左移K1,也就是将D11-D110的当前状态向左移动到D12-D111中,这样就把当前的状态值转存了。注意:这里的K100表示的是,从检测口到下料口之间,传送带上所能容纳的最大产品数量,这个K100一定要比最大产品数量要大!

INC Z0:同时,Z0自增1,用来对产品进行计数,这样就知道检测了多少个产品。

MOV K0 D0:转存之后,当产品离开检测传感器后,就要将D0清零,以便存储下一个产品的状态。

[= D0Z0 K1]/[= D0Z0 K0]:这里是出口处的判断,产品如果是K1,也就是合格,那么就做相应的动作;如果是K0,表示不合格,就对应做相应的动作。

DEC Z0:当产品被分选后,或者剔除后,Z0自减1,这样出口处就可以对后面的那个D0Z0进行判断并分拣了。

最后,本人水平有限,本文有任何不正之处,请大家指正,谢谢!

在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移位指令”的实例?

字节移位指令一共有四个循环右移、循环左移、右移、左移循环移位指令(左、右)八个位是循环移动的也就是说循环左移1位就是向左移动1位最高位移到最低位处...

西门子plc循环移位指令的用法?

右移字节(SRB)和左移字节(SLB)指令将输入数值(IN)根据移位计数(N)向右或向左移动,并将结果载入输出字节(OUT)。移位指令对每个移出位补0。如果移位数...右移...

plc移位的时候线圈失电会复位吗?

根据下一个位的状态来决定移位后线圈的状态。复位只和下一个位有关系。根据下一个位的状态来决定移位后线圈的状态。复位只和下一个位有关系。

三菱PLC的sftrp与sftlp是怎么移位的?

三菱PLC移位指令分左移和右移,分别是SFTL和SFTR。下面简单讲解一下SFTLP。指令格式为SFTLPM20M0K8K1SFTLP——对位进行左移;M20——移进来的是“1”还是...

三菱plc移位指令的特点?

移位指令分为左、右移位和循环左、右移位及移位寄存器指令三大类。左移和右移指令的功能是将输入数据IN左移或右移N位后,把结果送到OUT中。主要包括:①字节移...

三菱如何用移位指令实现顺启逆停?

功能要求:用按钮控制6台电机的启动和停止,要求当按下启动按钮,启动信号灯亮,而后每隔2s启动一台电机,直到6台电机全部启动。当按下停止按钮,停止信号灯亮...

三菱plc循环移位指令使用方法?

1、打开三菱PLC的主界面,在X000那里利用梯形图输入确定“MOVK5D0”这条位移指令。2、下一步,需要在M8013那里继续利用梯形图输入确定“OUTC0K3”这条位移...

PLC移位指令能提前控制么?

PLC移位指令可以提前控制提前控制的前提是对移位指令的赋值。因为移位指令都是对无符号数进行的处理,执行时只考虑要移位的存储单元中每一位数字的状态,而不...

简单搬运机械手PLC程序?

用步进指令地址分配是:下降电磁阀YV1Y1SBX0夹紧电磁阀YV2Y2SQ1X1上升电磁阀YV3Y3...用步进指令地址分配是:下降电磁阀YV1Y1...

PLC是怎么检测到电动机故障的?该注意哪些问题?

PLC只是一个微型控制器,从这个角度来看,它侧重点在于处理简单的数据和判断状态,而电动机故障难点在于测量,因为需要不同的传感器才可以判断一个电机是否相对...P...

 问他  刘沛均 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部