工作:三菱IQ-R PLC的SFC程序编写方式及代码模拟仿真
工作:三菱PLC的SFC程序编写方式及代码模拟仿真
- *Ⅰ、理论知识 *
- 一、规格
- 二、配置
- (一)块(及块文件)
- (二)步
- 1. 步的类型
- 1.1 初始步
- 1.2 普通步(无附带属性)
- 1.3 结束步
- 2. 步的属性
- 2.1 线圈保持步[SC]
- 2.2 动作保持步(无转移检查)[SE]
- 2.3 动作保持步(有转移检查)[ST]
- 2.4 复位步[R]
- 2.5 块启动步(有结束检查)[BC]
- 2.6 块启动步(无结束检查)[BS]
- (三)动作输出
- 1. 表示在步为激活状态时被执行的程序的动作输出。
- 2. MELSAP-L(指令形式)的动作输出
- (四)转移条件
- 1. 转移条件的类型
- 1.1 串行转移
- 1.2 选择转移(分支/合并)
- 1.3 并联转移(分支/合并)
- 1.4 跳转转移
- 三、SFC控制指令
- (一)步激活检查
- (二)块激活检查
- (三)激活步批量读取(D)MOV( P) [ K[]S[] / BL[] \ K[]S[] ],BMOV( P) [ K4S[] / BL\K4S[] ]
- 1. MOV( P) [ K4S[] / BL[] \ K4S[] ]
- 2. DMOV( P) [ K8S[] / BL[] \ K8S[] ]
- 3. BMOV( P) [ K4S[] / BL\K4S[] ]
- (四)块启动SET [ BL[] ]
- (五)块结束RST [ BL[] ]
- (六)块停止PAUSE [ BL[] ]
- (七)块重启RSTART [ BL[] ]
- (八)步启动SET [ S[] / BL[]\S[] ]
- (九)步结束RST [ S[] / BL[]\S[] ]
- (十)对象块切换 BRSET
- (十)*SFC专用指令:转移条件虚拟输出TRAN*
- 四、SFC信息软元件
- (一)块启动/结束标识位
- (二)步转移标识位
- (三)块停止重启位
- (四)块停止模式位
- (五)连续转移位
- (六)活动步数寄存器
- 五、SFC设置
- (一)CPU参数
- 1. SFC程序启动模式设置
- 2. 启动条件设置
- 3. 块停止时的输出模式设置
- (二)SFC块设置
- 六、SFC程序的执行顺序
- (一)整个程序的处理
- 1. 可指定的执行类型
- 2. 通过指令进行执行类型的更改
- (二)SFC程序的处理顺序
- 1. 各块的执行顺序
- 2. 各步的执行顺序
- 3. 有/无连续转移的动作
- 七、SFC程序的执行(第一到六章简述)
- (一)SFC程序的启动及停止
- 1. 通过CPU参数进行的自动启动
- 2. 通过特殊继电器(SM321)进行的启动及停止
- 3. 通过指令进行的启动及停止
- (二)块的启动及结束
- 1. 块的启动方法
- 2. 块的结束方法
- (三)块的暂时停止及重启
- 1. 块的停止方法
- 2. 块的重启方法
- (四)步的启动及结束(激活及非激活)
- 1. 步的启动(激活)方法
- 2. 步的结束(非激活)方法
- (五)步冗余启动时的注意点
- 1. 串行转移的情况
- 2. 选择转移的情况
- 3. 并联转移的情况
- (六)程序更改时的动作
- 1. 通过写入至可编程控制器进行程序更改
- 2. 通过RUN中写入进行的程序更改
- 3. SFC块RUN中写入
- (七)SFC程序的动作确认
- (八)本文理论引用
- * Ⅱ、实操代码与仿真 *
- 一、SFC程序的启动模式、启动条件、块停止时的输出模式设置
- (一) 通过CPU参数设置
- 二、SFC程序新增与编辑
- (一)SFC块文件的新增
- (二)SFC块程序编辑
- 1. 普通步、步的动作输出、步跳转、分支等功能步或转移的添加、插入
- (三)块的启动/结束&暂停/重启(SET/RST/PAUSE/RSTART)
- 1. 块的启动/结束(SET/RST)匹配使用,不受块的暂停/重启影响
- 2. 块的暂停/重启匹配使用
- 3. 代码仿真
*Ⅰ、理论知识 *
SFC程序将机械一系列动作以1个步动作单位表示出来,在各步创建实际的精细控制的程序。
一、规格
二、配置
SFC的基本动作
SFC程序从初始步开始,每当转移条件成立时执行下一个步,并通过结束步结束一系列的动作。
1.块启动时,首先激活初始步(1),执行动作输出(2)。动作输出(2)执行后检查下一个转移条件(3)是否成立。
2.在转移条件(3)成立之前,仅执行动作输出(2)。转移条件(3)成立时将结束动作输出(2),初始步(1)变为非激活状态,激活下一个普通步(4)。
3.在执行普通步(4)的动作输出后,检查下一个转移条件是否成立。如果下一个转移条件成立,将重复执行普通步(4)的动作输出。
4.转移条件成立时将结束动作输出,初始步(4)变为非激活状态,激活下一个步(5)。
5.每当转移条件成立时将激活下一个步,最后激活结束步(6)时结束块。
- 要点
1个步最多可创建4个动作输出。创建了多个动作输出的情况下,将从上开始按顺序执行
初始步与普通步,可以通过赋予属性更改步的类型。
(一)块(及块文件)
块由步及转移条件构成,是表示一系列动作的单位。
块具有激活/非激活的状态。
激活:块内存在激活步的状态
非激活:块内的所有步处于非激活的状态
块从非激活变为激活时,初始步将变为激活,依次执行处理。
- 要点
通过CPU参数的设置,仅块0启动SFC程序时可以自动启动。在这种情况下激活结束步、结束块0时,块0将自动被再启动,再次从初始步开始执行。
通过SET指令(步启动)向非激活块的步发出启动请求的情况下,激活块后,从指定的步开始执行处理。
目前GX WORKS 3软件里,如果SET BL0或者RST BLO,是启动BL0块文件,一个块文件可以有很多个块组成!这里候将会启动所有块的初始步,不能混淆!通常据说的启动块是启动块文件,不是启动块文件里的某一个块,如果要指定启动块文件里的某一个块,可以指定其所有的块文件的初始步号,如SET BL0\S0。
(二)步
步是构成块的基本单位。
-
步有下述特征。
步被激活时,将执行相关的动作输出。
在各个步,步继电器S是SFC程序中的各步对应的软元件。如果步状态处于激活中(也包括停止中、保持中)S将变为ON,如果处于非激活状态将变为OFF。
步名及步No.在各块内是固有的。(不可以空) -
要点
步名、步No.、属性、属性指定目标可以通过步的属性画面更改。
选择步后,对菜单的[编辑]-[属性]进行选择时,将显示步的属性画面。
1. 步的类型
步的类型如下所示。
1.1 初始步
初始步是表示各块的起始的步,各块中最多可记述32个,多个初始步进行合并时只能进行选择合并,初始步的执行方法与初始步以外的步相同。
-
块启动时激活的步
-
初始步有多个被激活时的转移处理
选择合并多个激活的初始步时,如果在合并之前任意1个转移条件成立,则合并之后的步将被激活。在上述程序示例中,如果转移条件t4~t7的其中一个成立,则步8(S8)将被激活。此外,在合并之后的步(在上述程序示例中为S8)被激活后,如果合并之前的其它转移条件(在上述程序示例中为t4~t7)又成立,则合并之后的步(S8)将再次被激活。 -
将步属性附加到初始步时
可以附加SC(线圈保持)、SE(动作保持(无转移检查))、ST(动作保持(有转移检查))、R(复位)的各属性到初始步中。附加了属性的情况下,与初始步以外的步相同,除开块启动时自动被激活的动作。此外,也可置为无动作输出的步。
1.2 普通步(无附带属性)
构成块的基本的步。
在步处于激活状态时,始终对该步的下一个转移条件进行检查,并在转移条件成立时将激活转移到下一个步。
步的动作输出根据使用的指令,转移至下一个步时的输出状态有所不同。
- 无动作输出的步
不对动作输出进行创建的步,可以作为等待用的步使用。
在步的激活过程中,始终对转移条件进行检查,在转移条件成立后,下一个步将变为激活。
创建动作输出时,将作为普通的步进行动作。
1.3 结束步
结束块的步。
激活转移到结束步,块内不存在保持中以外的激活步时,会将块内的全部保持中步[SC、SE、ST]置为非激活后结束块。
块内存在保持中以外的激活步的情况下,根据SM328(END步到达时清除处理模式)的状态进行下述处理。
在执行清除处理时,将通过OUT指令进行的线圈输出全部置为OFF。但是,关于保持中步[SC、SE、ST]的线圈输出,根据SM327(END步执行时的输出)的状态进行下述处理。
块结束后再次启动块的方法:
- 注意事项
不可以将动作输出创建到结束步中。
仅激活转移到结束步中的情况下,SM327(END步执行时的输出)的设置将变为有效。通过RST指令(块结束)等进行强制结束的情况下,将所有步的线圈输出置为OFF。
在激活转移到结束步中的时刻仅剩余保持中步[SC、SE、ST] 的情况下,即使SM328(END步到达时清除处理模式)为ON,该**保持中步[SC、SE、ST]也将变为非激活。不希望将保持中步[SC、SE、ST]的线圈输出置为OFF的情况下,应将SM327置为ON。SM328与保持步[SC、SE、ST]**的动作的关系如下所示。
左:剩余普通的激活步或者剩余转移不成立的保持步[SC、SE、ST],右:有剩余保持中的激活步
SM328为ON的情况下,通过块启动步来启动的块将在非保持的 激活中步 不存在于块内时返回到原来的块处理。
动作保持步(有转移检查)[ST]之后的转移条件应置为不常时成立。动作保持步(有转移检查)[ST]之后的转移条件为常时成立的情况下,下一个步始终变为激活状态,因此SM328为ON时将无法结束块。
- 要点
在SFC图内可以创建多个结束步。
对选择分支中的步进行选择后,通过选择菜单的[编辑]–>[更改]–>[结束步/跳转],可以创建多个结束步。
-
步继电器(S)的步的分配
步继电器Sn是SFC程序中的各步对应的软元件。如果步处于激活中(也包括停止中、保持中),步继电器Sn将变为ON,如果处于非激活状态,步继电器Sn将变为OFF。
步继电器按下述方式分配。
从SFC程序的块0开始按块No.顺序,在1个块内按步No.顺序从起始开始向末尾分配步继电器。
不分配步继电器到不存在的块No.中。
在1个块内,步继电器被分配到缺少编号的步No.中。该位始终变为OFF。
最后的块中,分配的步继电器以后的位将全部变为OFF。
例: 下述的块配置时的步继电器分配如下所示。
Block0:最大步No.为8,步No.3及步No.6不存在。
Block1:不存在。
Block2:最大步No.为12,步No.3不存在。
Block3及其以后:不存在。
-
要点
可自由对各步(结束步除外)分配步No.。
步No.中缺少编号时,可创建的最多步数会变少,因此应尽可能以小编号顺序创建。
在最上行的左端初始步中,只能使用No.0(S0)。
不可以进行超出上限的步No.分配。此外在同一块内,步No.不可以重复。但是,在不同的块中可以使用同一步No.。
指定其它块的步继电器的情况下,按下述形式进行指定。
例: 指定块No.12的步No.23的情况
-
注意事项
即使SFC设置的“块停止时的输出模式”的设置变为OFF,停止中步继电器也变为ON。
2. 步的属性
2.1 线圈保持步[SC]
2.2 动作保持步(无转移检查)[SE]
2.3 动作保持步(有转移检查)[ST]
2.4 复位步[R]
- 是将指定步置为非激活的步。
复位步[R]在执行每个扫描动作输出之前,将本块内的指定步置于非激活状态。复位指定步以外将与普通的步(无属性)相同。
指定的步No.为S999的情况下,将本块内保持中的保持步[SC、SE、ST]全部置为非激活。在这种情况下,仅保持中的保持步[SC、SE、ST]可进行非激活。动作保持步[SE、ST]正在以非保持进行动作时,将不为非激活的对象。
不可以指定本步No.到指定步No.中。
2.5 块启动步(有结束检查)[BC]
2.6 块启动步(无结束检查)[BS]
(三)动作输出
1. 表示在步为激活状态时被执行的程序的动作输出。
步进行激活时,每个扫描中将执行动作输出。步变为非激活时,将结束动作输出,变为非执行,直至下一个步被激活为止。
1个步最多可创建4个动作输出。创建了多个动作输出的情况下,将从上开始按顺序执行。
动作输出的详细表示,可以通过梯形图语言、ST语言、FBD/LD语言创建。如果是梯形图语言,则可以切换详细表示与MELSAP-L(指令形式)。
2. MELSAP-L(指令形式)的动作输出
MELSAP-L(指令形式)是使用文本在SFC图内记述动作输出指令的形式。
- 从梯形图的详细表示切换为MELSAP-L(指令形式)的情况下,选择菜单的[显示]——》[梯形图显示切换]——》[MELSAP-L(指令格式)]。
- 在通过MELSAP-L(指令形式)的动作输出中,不记述作为各指令输入条件的触点,而是记述指令或希望输出的线圈。
*1长定时器、长计数器也以同样方式指定。
*2部分指令无法使用。(无法使用的指令)
记述多个指令时,使用“,”(逗号)间隔。在动作输出的最后记述IMASK、NOPLF。
- 要点
必须在详细表示内的梯形图中创建作为各指令的输入条件的触点。
- 限制事项
根据创建动作输出的程序语言,有下述限制。
- 注意事项
- 即使动作输出内的输入条件为常时ON,在步为非激活时,输入条件将被视为OFF。因此,步变为激活状态之后,将在OFF→ON的条件下执行此指令。例如,PLS指令及INCP指令等的上升沿指令中,在输入条件置为常时ON的情况下,只有每次步被激活时才执行指令。
- PLS指令及PLF指令指定的软元件仅在1个扫描中变ON,之后都为OFF
- 从梯形图的详细表示切换为MELSAP-L(指令形式)时,在详细表示中创建了MELSAP-L(指令形式)无法记述的程序的情况下,在MELSAP-L(指令形式)中显示为“???”。此外,如果程序内使用的标签的定义被删除,也显示为“???”。希望进行程序的确认或修正的情况下,应切换为详细表示。
- 以MELSAP-L(指令形式)创建的程序切换为梯形图的详细表示的情况下,作为指令的执行条件,追加SM400(常时ON)触点。
MELSAP-L(指令形式)的判断代码
(四)转移条件
转移条件是构成块的基本单位,通过条件成立将激活转移到下一个步。
转移条件的详细表示,可以通过梯形图语言、ST语言、FBD/LD语言创建。如果是梯形图语言,则可以切换详细表示与MELSAP-L(指令形式)
1. 转移条件的类型
1.1 串行转移
1.2 选择转移(分支/合并)
从1个步分支为多个转移条件,仅转移条件最先成立的列的步进行激活转移
先成立的列转移条件激活转移至下一个步,而不会等其他列的转移条件成立。
- 在选择转移中,最多可以分支为32个转移条件。
- 多个转移条件同时成立的情况下,将优先执行左侧的转移条件。
转移条件(1)及(2)同时成立的情况下,执行步(3)的动作输出
- 可创建选择转移的分支及合并的个数不相同的SFC图。但是,不可以创建选择分支与并联合并及并联分支与选择合并组合的SFC图。
- 在选择转移中,可以通过跳转转移及结束步来省略合并。
进行步(1)的动作输出时,如果转移条件(2)成立,则从步(3)开始按顺序执行步(4)。如果转移条件(5)成立,则跳转转移到步(1)。
通过将选择分支的左端以外的步更改为结束步,并将位于选择分支的左端的结束步更改为跳转转移
1.3 并联转移(分支/合并)
1个步同时激活分支的多个步。如果合并之前的分步全部都是激活的,则合并的通用的转移条件成立,将转移至下一个步。
- 在并联转移中,最多可以转移到32个步中。
- 通过并联转移启动了其它块的情况下,将同时执行启动源的块及启动目标的块。
- 并联分支后,必定进行并联合并。
- 注意事项
在并联合并中,合并的步中存在有保持中步[SC、SE、ST]的情况下,将进行下述动作。
在并联合并中,不可以在合并之前创建块启动步(有结束检查)[BC]。应创建块启动步(无结束检查)[BS]。
1.4 跳转转移
转移条件成立,转移至同一块内的指定步
步(1)处于激活时,转移条件(2)成立时,将步(3)置为激活。
步(1)将变为非激活。但是,保持步[SC、SE、ST]的情况下,将按照属性保持线圈输出或动作输出。
-
跳转转移的使用个数无限制。
并联转移内的跳转转移,仅可在同一分支内进行。不可以创建并联分支内的不同分支的跳转转移、从并联分支脱离的跳转转移、从并联分支外至并联分支内的跳转转移。 -
并联分支内可指定的跳转转移示例
-
转移条件的详细表示
在Zoom编辑器内创建转移条件详细代码
可使用指令
转移条件的程序中可使用的指令如下所示。
.转移条件的直接表示
可以将下一个步中转移激活的条件直接创建到SFC图上,或对转移条件连接FBD/LD部件的触点。
选择转移条件名后,对菜单的 [编辑]——[更改]——[名称] 进行选择,输入希望指定的位型标签及位软元件或BOOL值。
- 注意事项
转移条件中使用了定时器及计数器的软元件(T、ST、LT、LST、C、LC)的情况下,将作为触点(TS、STS、LTS、LSTS、CS、LCS)进行动作。使用了定时器及计数器的软元件的线圈(TC、STC、LTC、LSTC、CC、LCC)的情况下,也同样作为触点进行动作。
希望在转移条件中使用定时器及计数器的线圈的情况下,应使用定时器型及计数器型的标签。
例:定时器软元件及定时器型标签的情况
三、SFC控制指令
SFC控制指令是指,进行块、步激活状态的检查和强制启动、结束等等的指令。如果使用SFC控制指令,可以在顺控程序以及SFC程序的动作输出内对SFC程序进行控制。
-
在中断程序内请勿使用SFC控制指令。
-
SFC控制指令只有在SM321(SFC程序启动/停止)为ON时才执行。
-
变址修饰
通过SFC控制指令指定的步继电器及SFC块软元件可以用变址修饰进行指定。
(一)步激活检查
(二)块激活检查
(三)激活步批量读取(D)MOV( P) [ K[]S[] / BL[] \ K[]S[] ],BMOV( P) [ K4S[] / BL\K4S[] ]
1. MOV( P) [ K4S[] / BL[] \ K4S[] ]
2. DMOV( P) [ K8S[] / BL[] \ K8S[] ]
3. BMOV( P) [ K4S[] / BL\K4S[] ]
(四)块启动SET [ BL[] ]
(五)块结束RST [ BL[] ]
(六)块停止PAUSE [ BL[] ]
(七)块重启RSTART [ BL[] ]
(八)步启动SET [ S[] / BL[]\S[] ]
(九)步结束RST [ S[] / BL[]\S[] ]
(十)对象块切换 BRSET
(十)SFC专用指令:转移条件虚拟输出TRAN
四、SFC信息软元件
SFC信息软元件,是对块强制启动/结束、暂停/停止/重启和步转移条件成立与否及与当前激活步数进行确认,或转移条件的连续转移动作确认的软元件或标签。
对各块设置SFC用信息软元件。
仅在使用SFC信息软元件的情况下,需要设置SFC信息软元件。不使用的情况下,无需设置SFC信息软元件。
(一)块启动/结束标识位
块启动/结束位是对块的激活状态进行确认的软元件或标签。
另外,在设置的位为ON时可以启动块,OFF时可以结束块。
无块启动程序的情况下,通过工程工具也可对块的启动/结束位进行控制,因此块单位中的调试及试运行中可以使用。
设置的块启动时,块启动/结束位将自动ON。设置的块处于激活中时,块启动/结束位将保持ON状态不变。设置的块变为非激活状态时,块启动结束位将自动OFF。设置的块为非激活状态时,块启动结束位将保持OFF状态不变。
例:在块1(BL1)的块启动结束位中指定了M0的情况
- 在设置的块为非激活时,如果将块启动/结束位设为ON,则单独启动设置的块。
- 在设置的块处于激活中时,如果将块启动/结束位设为OFF,则结束设置的块。
- 停止设置的块的执行,执行的步的输出也全部OFF。但是,通过SET指令变为ON的软元件不变为OFF。
- 在设置的块内通过块启动步启动了其它块的情况下,设置的块将结束,但是启动目标的块保持激活状态不变,继续运行处理。
- 将块设为非激活之后的重启动作如下所示。
- 在SFC程序结束时,SFC信息软元件中设置的所有块启动结束位将变为OFF。但是,继续启动设置时仅允许继续启动的情况下SFC程序启动时,所有块启动结束位将恢复
(二)步转移标识位
对转移条件的成立进行确认的软元件或标签。转移条件成立时将ON。变为ON的步转移位在执行再次指定的块的处理时,将自动OFF。
例 :在Block0的步转移位中指定了M1的情况
在步(1)的执行完,转移条件(2)成立时,执行其它块期间M1将变为ON。
下一个扫描处理Block0时M1将变为OFF。
在步(3)的执行后,转移条件(4)不成立的情况下,M1将保持OFF状态不变。
转移条件(4)成立时,执行其它块期间M1将变为ON。
在步(5)的执行后,转移条件(6)不成立的情况下,M1将保持OFF状态不变。
将连续转移位置为ON设置了“有连续转移”的情况下,转移条件成立后下一个步的动作输出执行中及执行多个步后转移条件未成立时,步转移位也将保持ON状态不变,在执行下一个扫描的指定块时将变为OFF。
在步(1)的执行完,转移条件(2)成立时,M1将变为ON。转移条件(4)不成立的情况下,M1也将保持ON状态不变。下一个扫描处理Block0时M1将变为OFF。
在块内存在多个激活步的情况下,只要其中一个转移条件成立,在该时点步转移位将变为ON。
- 注意事项
如果执行结束步,块的步转移位将变为ON。接着,步转移位将保持ON状态不变,直至该块再次激活为止。
在SFC程序启动时及SFC程序结束时,步转移位不变为OFF。
(三)块停止重启位
对处理激活中的块暂停或重启的软元件或标签。
设置 | 内容 |
---|---|
OFF→ON | 如果进行OFF→ON,指定块正在执行中的步将停止。 |
ON→OFF | 如果进行ON→OFF,指定块将从停止的步的动作输出开始重启执行。 在动作保持状态下变为停止的动作保持步(无转移检查)[SE] 或 动作保持步(有转移检查)[ST],在动作保持状态下重启执行。•对于线圈保持步[SC],设置线圈输出OFF(SM325 = OFF)停止的情况下将变为非激活,因此无法重启保持状态。设置线圈输出保持ON(SM325 = ON)停止的情况下,将维持保持状态,因此重启后也将保持状态不变。 |
- 将处于非激活的块设置的块停止重启位置为ON的情况下,在处于非激活状态中不进行动作,在块变为激活状态的时立即变为停止状态。
- 强制结束了指定块的情况下,块停止重启位的状态将被保持不变。在停止中强制结束,不对块停止重启位的状态进行更改的情况下,再启动时立即变为停止状态。
- 块停止/重启时的动作,根据SM325设置(块停止时的输出模式设置)与SFC信息软元件的块停止模式位的设置、步的保持/非保持的来组合决定
- 块停止重启的动作输出参考第五章第(一)节的块停止时的输出模式设置
(四)块停止模式位
决定停止块的时机的软元件或标签。
设置的位为ON时在各步的转移后停止块,为OFF时立即停止所有步。
设置 | 内容 |
---|---|
OFF时(立即停止) | 发出停止请求时,立即变为停止状态。 |
ON时(到达转移条件后停止) | 发出停止请求后,执行中的步的转移条件成立,转移时将停止。不执行转移后的步的动作输出。在块内存在多个激活步时,将从转移成立的步开始依次停止。与块停止模式位的设置无关,停止请求后,立即停止保持中的步。 |
(五)连续转移位
决定在转移条件成立时,连续转移的动作的软元件或标签。
设置的位ON时将变为有连续转移,在同一扫描内执行下一个步的动作输出。OFF时将变为无连续转移,在1个扫描中逐步执行。
设置 | 内容 |
---|---|
OFF时(不连续转移) | 转移条件成立时,转移目标步的动作输出在下一个扫描中执行。 |
ON时(有连续转移) | 转移条件成立时,将转移目标步的动作输出在同一扫描内执行。步的转移条件连续成立的情况下,那些夹在转移条件成立的动作输出代码在同一扫描内执行。参考下面例子可以清晰理解 |
例:有指定SFC用信息软元件的连续转移位的情况
-
对连续转移位进行了设置的情况下,与SM323(所有块连续转移的有无)的ON/OFF无关,设置的连续转移位软元件为OFF时变为无连续转移的动作,连续转移位 ON时变为有连续转移的动作。未设置连续转移位的情况下,SM323为OFF时变为无连续转移的动作,ON时变为有连续转移的动作。
-
SM324(连续转移阻止标志)在执行SFC程序时系统将自动ON,但是连续转移中时将变为OFF。通过在转移条件中将SM324以AND条件使用,可以禁止连续转移。如下所示
M0为ON时,1个扫描中从步(1)到步(3)变为连续转移。
通过将SM324作为AND条件附加至转移条件(4)中,步(3)的执行后的转移条件(4)将变为不成立。
在下一个扫描中,执行步(3)后SM324变为ON,因此在该扫描内转移到步(5)中。 -
注意事项
设置为有连续转移时,从转移条件成立开始执行转移目标步的动作输出,因此可以缩短节拍时间。但是,在该情况下,其它块及顺控程序的动作有可能变慢。
在SFC程序启动时及SFC程序结束时,连续转移位不变为OFF。
跳转转移及选择合并,激活从多个步转移至1个步的情况下,1个步的动作输出有可能在1个扫描中执行2次。如下所示,有连续转移的情况下,在1个扫描中执行2次步(1)。
在设置有连续转移,步之后的转移条件成立的情况下,将在1个扫描内进行步的启动及结束。在这种情况下,由于不执行END处理,因此动作输出内的OUT指令,进行的线圈输出刷新将不被反映,在其它程序中无法检测出线圈的ON。例如,OUT Y 的情况下,在END处理时刻未执行OUT Y,Y未被输出,在其它程序中无法检测出输出(Y)的ON。因此,也无法检测出步继电器的ON,如下图所示例子。
转移条件(1)与转移条件(2)成立的情况下,在1个扫描内执行下述操作。
•执行步(3)的动作输出。
•由于转移条件(1)成立,将步(3)的动作输出置为OFF。
•步(3)变为非激活,步(4)变为激活。
•由于有连续转移,执行步(4)的动作输出。
•由于转移条件(2)成立,将步(4)的动作输出置为OFF。
•步(4)变为非激活,步(5)变为激活。
•由于有连续转移,执行步(5)的动作输出。
•由于转移条件(6)不成立,步(5)的动作输出不变为OFF
步3、步4有OUT的输出将不会在其他步或者块里体现
为了反映OUT指令的输入输出刷新,应创建程序,使得1个步可在多个扫描中执行。
在使用跳转转移进行循环的程序时,应设置为无连续转移,或置为在执行中环路内的转移条件全部不成立。有连续转移且在执行中环路内的转移条件全部成立时,则在1个扫描内将变为无限循环。
(六)活动步数寄存器
存储当前块里激活中的步数的软元件或标签。
活动步数寄存器中存储的激活步数包括下述步。
普通的激活步
保持中的线圈保持步[SC]
保持中的动作保持步(有转移检查)[ST]
保持中的动作保持步(无转移检查)[SE]
停止中的步
■ 注意事项
在块结束时,活动步数寄存器将变为0。
在SFC程序结束时,活动步数寄存器不变为0,而是在SFC程序启动时变为0。
五、SFC设置
在CPU参数及SFC块设置内,设置SFC程序的启动条件等。
(一)CPU参数
设置一览如下所示。
- 要点
使用SFC程序的情况下,应预先确保步继电器(S)的点数。(步继电器(S)的默认点数为0点。)
在[CPU参数]-[存储器/软元件设置]-[软元件/标签存储器区域详细设置]-[软元件设置]中,在1024点单位内设置步继电器(S)的点数
1. SFC程序启动模式设置
[CPU参数]-[SFC设置]-[SFC程序起动模式设置]
根据SFC程序启动模式设置及SM322(SFC程序的启动状态)的状态组合,决定是进行初始启动还是继续启动
*1 对于SM322,根据SFC程序启动模式的设置在STOP→RUN时决定初始状态。
*2 将SFC程序启动模式设置设置为继续启动,且在程序的写入前后无更改的情况下将继续启动。
*3 动作输出的ON/OFF,将按照参数设置的“STOP→RUN时的输出模式”的设置进行。
*4 根据时机将变为禁止继续启动状态,且有可能进行初始启动。
■ 注意事项
继续启动时,SFC程序的停止位置将保持,但是动作输出中使用的标签及软元件的状态不保持。因此,在进行继续启动的基础上需要预先保持的标签及软元件,应置为锁存设置。
线圈保持步[SC]的线圈输出为OFF的条件(表中(1)、(3)、(5))以外的继续启动时,将重启保持中的线圈保持步[SC],但是输出不变为ON。希望继续输出的情况下,应将希望继续的标签及软元件置为锁存设置。此外,STOP→RUN时的输出的ON/OFF动作,将按照CPU参数设置的“STOP→RUN时的输出模式设置”的设置进行。(MELSEC iQ-R CPU模块用户手册(应用篇))
电源OFF时或复位时,智能功能模块将被初始化。继续启动的情况下,至智能功能模块的初始程序,建议创建至常时激活状态的块或顺控程序上。
电源OFF时或复位时,标签及软元件也被清除。SFC用信息软元件设置时,仅进行了锁存设置的情况下保持值。
电源OFF后或复位后的继续启动,根据时机有可能无法继续启动。在继续启动的设置时进行了初始启动的情况下,事件履历中禁止继续启动的事件将被存储。希望确实进行继续启动的情况下,应将SM321置为ON→OFF或RUN→STOP后再将电源置为OFF或进行复位。
2. 启动条件设置
[CPU参数]-[SFC设置]-[起动条件设置]
■ 注意事项
设置为“不自动起动块0”的情况下,执行SFC程序时通过顺控程序执行SET指令(块启动),或将SFC用信息软元件中设置的块启动结束位置为ON。
设置为“自动起动块0”的情况下,必须创建块0。
3. 块停止时的输出模式设置
[CPU参数]-[SFC设置]-[块停止时的输出模式设置]
已设置的内容在电源ON时、复位时或STOP→RUN时被反映到SM325(块停止时的输出模式)的初始值中,SFC程序动作时按照SM325的设置进行。CPU参数的设置将被忽略。
■ 块停止/重启时的动作
块停止/重启时的动作,根据SM325(块停止时的输出模式设置)与SFC信息软元件的块停止模式位的设置、步的保持/非保持的组合决定。
块停止/重启时的动作一览如下所示。
■ 注意事项
使用LD指令(块激活检查)等指定的块为停止中的块的情况下,变为ON。此外,即使使用LD指令(步激活检查)等指定的步为停止中的步,也变为ON。
在将SFC用信息软元件的停止重启位置为ON的状态下进行块启动时,在初始步变为激活状态之前将停止。此外,对非激活块执行了SET指令(步启动)的情况下,在指定步变为激活状态之前将停止。
SM325(块停止时的输出模式)为ON时(线圈输出保持),可以在保持线圈输出不变的状态下进行停止。在停止中即使将SM325置为ON→OFF线圈输出的状态也不变化,发生块的重启请求时,在保持状态下直接进行重启。
在SM325为ON时停止了块的情况下,保持状态的线圈保持步[SC]在重启后也维持保持状态,但是步的动作不重启。将线圈保持步[SC]置为非激活时,应执行RST指令(步结束)。
在动作输出内即使对该块有停止请求,当前执行中的步也将执行到最后为止,随后才执行停止请求。因此,在执行中步内,块停止模式位为OFF时(立即停止)即使开始停止请求也不停止。此外,之后在相同步内块停止模式位为ON时(转移后停止)进行了切换的情况下,通过转移后停止模式发出停止请求。
例:M100为停止时模式位,且M101为块停止重启位的情况
执行上述动作输出时,如果将M0置为ON则执行PAUSE指令,Block0的块停止重启位(M101)将变为ON,但由于执行至动作输出的最后,所以Y0也将变为ON状态。
此外,M2为ON时,即使在PAUSE指令的执行了,停止时模式位也为ON,在执行了全部动作输出后,转移后停止模式发出停止请求。
在块停止中执行RST指令(步结束)时,指定的步继电器将变为OFF。但是,工程工具的监视画面将保持激活状态不变,重启了块时将更新为非激活状态。即使在SM325=ON(块停止时的线圈输出保持)且停止中执行也一样,但是线圈输出不变为OFF。
即使SET指令(步启动)处于块停止中,也会立即被执行,且指定的步继电器变为ON,工程工具的监视画面也会变为激活状态。但是,不执行动作输出,直至块被重启为止。
例:使用RST指令(步结束)时的块的停止重启的情况
(1) 如果将M0置为ON,则块0将停止。
(2) 如果将M1置为ON,并向步No.0发出结束请求,步继电器的BL0\S0变为OFF,但在工程工具的监视上,步No.0仍保持激活中不变。
(3) 由于BL0\S0变为OFF,Y0也变为OFF。
(4) 如果在M0、M1处于OFF的状态下将M2置为ON,则重启块0,结束步No.0。
停止时模式位为ON(转移后停止模式)时,即使存在转移后停止、处于等待状态的步的状态下,将停止时模式位设为了OFF,也将保持转移后停止等待状态不变。为从此状态对转移后停止等待状态进行解除并立即停止,重启块后,需要在停止模式位为OFF的状态下再次开始停止请求(即做多一次停止时模式位 ON–>OFF动作?)。
在转移后停止模式中步的转移目标为结束步的情况下,将执行结束步的处理,因此不变为停止状态。
对有停止请求进行确认时,通过工程工具的块一览表显示监视,或对块停止重启位中设置的位进行监视。但是,无法通过工程工具的监视确认步是否处于停止中或停止等待动作中。
在转移成立之前,通过将块停止重启位置为OFF或执行RSTART指令,可以对转移后停止状态进行解除。在已停止的步与停止等待的步同时存在的状态下开始了重启请求时,已停止的步将开始动作,停止等待步将直接继续进行动作。停止请求被解除。
(二)SFC块设置
冗余块(不需要的块)启动时的运行设置
[导航窗口]-[程序]-希望设置的SFC程序文件的属性
■ 注意事项
对已处于激活中的块,执行了SFC控制指令的SET指令(块启动)时,将忽略启动请求直接继续运行SFC程序的处理。
试图转移至激活中的块启动步的情况下,块启动步的启动将被忽略。不会再次从初始步开始执行。
六、SFC程序的执行顺序
(一)整个程序的处理
1. 可指定的执行类型
SFC程序的执行类型的指定可否如下所示。
■ 注意事项
没有扫描执行类型的SFC程序(仅待机类型程序)的情况下,请勿对SFC程序执行SFC控制指令及监视。
2. 通过指令进行执行类型的更改
通过使用程序控制用的指令,可以更改程序的执行类型。
对于程序控制用指令,SFC程序的指定可否如下所示。
指令符号 | 指定可否 | 备注 |
---|---|---|
PSCAN(P) | *1 | 将指定的SFC程序的执行类型更改为扫描执行类型。 在已存在有扫描执行类型的SFC程序时,指定了其它SFC程序后执行的情况下,将变为出错状态。 |
PSTOP(P) | X | 对SFC程序执行的情况下,将变为出错状态。 |
POFF(P) | *1 | 指定的SFC程序在下一个扫描中执行所有块的结束处理,在其后的下一个扫描中将执行类型更改为待机类型。 |
*1在过程CPU(冗余模式)中不可指定。
■ 注意事项
CPU模块正进行文件读取/文件写入,及使用数据记录功能时请勿执行PSCAN(P)指令。如果执行PSCAN(P)指令,扫描时间可能会延长数100ms。
在指定继续启动时,与上次动作的SFC程序不同的SFC程序通过PSCAN(P)指令进行了指定执行的情况下,指定的SFC程序将进行初始启动。在这种情况下,事件履历中将保存“不可继续启动SFC程序”(事件代码:0430)。
(二)SFC程序的处理顺序
1. 各块的执行顺序
在SFC程序的启动中,从已激活的块的初始步开始按顺序执行各步的动作输出。
存在多个块的SFC程序的情况下,将按照块0→块1→块2的顺序从小编号的块开始向大编号的块按顺序进行激活检查。
激活中的块将执行块内的激活步的动作输出。
非激活块将检查启动请求的有无。如果有启动请求,则将块激活,执行块内的激活步。
按下述顺序执行。
(1) 开始块0(BL0)的处理。
(2) 执行块0(BL0)的步。
(3) 执行块1(BL1)的处理。
(4) 执行块1(BL1)的初始步。
(5) 执行下一个块的处理。
SFC设置的启动条件设置中指定为块0的自动启动的情况下,只可以自动启动块0。在此设置的情况下,即使到达结束步变为非激活状态,块0也将在下一个扫描中再次被启动。
此外,关于块的结束、停止、重启的请求,将在块内的执行处理之前被处理。
2. 各步的执行顺序
通过SFC程序,在1个扫描内处理所有激活步的动作输出。
各步的动作输出结束时,检查至下一个步的转移条件的成立状态。
转移条件不成立时:执行下一个扫描时,再次执行同一步的动作输出。
转移条件成立时:此步将变为非激活状态,动作输出变为非执行状态,执行的动作输出的OUT指令进行的输出全部置为OFF。在执行下一个扫描时,执行下一个步的动作输出。
即使转移条件成立,将步的属性设为线圈保持步[SC]时,不会变为非激活状态而是按照属性处理。
(1) 顺控程序的执行
(2) 动作输出的执行
(3) 至下一个步的转移条件检查(条件不成立)
(4) END处理
(5) 至下一个步的转移条件检查(条件成立)
(6) 执行下一个动作输出
无指定SFC信息软元件的连续转移位的情况
■ 注意事项
在首次执行时转移条件已成立的步的情况下,由于在1个扫描中结束步,因此线圈输出等的I/O刷新不被反映,在其它程序中将无法检测出线圈输出的ON。为了反映I/O刷新,应创建程序,使得1个步可在多个扫描中执行。
块内的激活步的动作输出同时(即同一扫描内)被执行。因此,请勿创建取决于动作输出的执行顺序的SFC程序。否则容易成BUG ,如下,如果创建 取决于动作输出的执行顺序的SFC程序:
(1)、(2)、(3)的动作输出的执行顺序将变为不定
3. 有/无连续转移的动作
在SFC程序的转移条件中,分“有连续转移”及“无连续转移”。
连续转移有/无的设置根据SFC信息软元件的连续转移位的设置及SM323(所有块连续转移的有无)决定。
要点
通过设置为“有连续转移”,可以缩短节拍时间。因此,可以消除从转移条件成立开始到转移目标步的动作输出执行为止的等待时间。
但是,设置为“有连续转移”时,其它块及顺控程序的动作有可能变慢。
七、SFC程序的执行(第一到六章简述)
(一)SFC程序的启动及停止
SFC程序的启动及停止方法如下所示。
- 通过CPU参数进行的自动启动
- 通过特殊继电器(SM321)进行的启动及停止
- 通过指令进行的启动及停止
1. 通过CPU参数进行的自动启动
将CPU参数的“起动条件设置”设置为“自动起动”时,CPU模块的电源ON时、复位时或STOP→RUN时启动SFC程序,并启动块0
2. 通过特殊继电器(SM321)进行的启动及停止
在执行SFC程序时,SM321(SFC程序的启动/停止)通过系统自动变为ON。
- 通过将SM321置为OFF,可以结束SFC程序全部的处理。
- 通过将SM321置为ON,可以再次执行结束的SFC程序
- 要点
通过对CPU参数的“SFC程序起动模式设置”进行设置,可以继续启动SFC程序。
3. 通过指令进行的启动及停止
通过程序控制用指令,可以启动或停止SFC程序。
- 如果执行PSCAN指令,可以启动待机类型的SFC程序。执行类型将变为扫描执行类型。
- 如果执行POFF指令,将执行中的SFC程序的输出置为OFF后,可以进行停止。执行类型将变为待机类型。
(二)块的启动及结束
1. 块的启动方法
块的启动方法如下所示。
2. 块的结束方法
块的结束方法如下所示。
(三)块的暂时停止及重启
1. 块的停止方法
在SFC程序执行中,停止指定的块的方法如下所示。
块停止/重启时的动作,根据SM325(块停止时的输出模式设置)与SFC信息软元件的块停止模式位的设置、步的保持/非保持的组合决定。
2. 块的重启方法
在SFC程序执行中重启暂时停止的块的处理之方法如下所示。
块停止/重启时的动作,根据SM325(块停止时的输出模式设置)与SFC信息软元件的块停止模式位的设置、步的保持/非保持的组合决定
(四)步的启动及结束(激活及非激活)
1. 步的启动(激活)方法
对步进行启动(激活)的方法如下所示
2. 步的结束(非激活)方法
对步进行结束(非激活)的方法如下所示。
(五)步冗余启动时的注意点
1. 串行转移的情况
转移条件(2)成立时,步(1)将变为非激活状态
2. 选择转移的情况
■ 选择分支
选择分支时,从左开始按顺序对转移条件进行检查,如果转移条件成立的分支的转移目标为激活步,将与串行转移的情况下相同。此时,即使在右分支中条件再次成立的情况下,也不检查该条件。
■ 选择合并
选择合并时的冗余启动的动作与串行转移的情况下相同。
转移条件(2)成立时,步(1)将变为非激活状态。
3. 并联转移的情况
■ 并联分支
并联分支的情况下,在多个转移目标中只要有一个为激活状态,则下一个扫描中的转移目标将全部变为激活状态
转移条件(1)成立时,在下一个扫描中步(2)~步(5)将全部变为激活状态
■ 并联合并
转移源将变为非激活。保持步[SC、SE、ST]将变为保持状态。
(六)程序更改时的动作
SFC程序的更改方法,如下所示。
写入至可编程控制器
RUN中写入
SFC块RUN中写入*1
可利用上述方法更改的SFC程序内容如下所示。
1. 通过写入至可编程控制器进行程序更改
■ 注意事项
通过写入至可编程控制器进行程序更改后,应在进行了一次复位后,执行SFC程序。
CPU参数的SFC程序启动模式设置为继续启动的情况下,应将SM322(SFC程序的启动状态)置为OFF(初始启动)后,通过写入至可编程控制器进行程序更改。之后,应在初始启动SFC程序之后,再次将SM322置为ON(继续启动)。
2. 通过RUN中写入进行的程序更改
通过RUN中写入进行程序更改后,与CPU参数的SFC程序启动模式设置无关,必须继续启动。
■ 注意事项
在对处于STOP状态的可编程控制器执行写入后,至CPU模块RUN之前无法执行SFC程序的RUN中写入。应在使CPU模块RUN之后再执行SFC程序的RUN中写入。
3. SFC块RUN中写入
可以以块单位更改SFC程序。即使在RUN中也可维持激活状态不变,并能以块单位更改程序,因此可提升SFC程序调试及维护的效率。
(1)可更改激活中的SFC块的激活步以外的程序。
- 要点
如果对本系统(控制系统)执行过程CPU(冗余模式)的SFC块RUN中写入,SFC程序的更改内容将同时被反映到本系统(控制系统)及其他系统(待机系统)中。(冗余跟踪)
(七)SFC程序的动作确认
- 监视
- 查看
- 软元件/缓冲存储器批量监视
- SFC步控制
- SFC块一览表
- SFC块批量监视
- 激活步监视
- SFC已激活步监视
(八)本文理论引用
- MELSEC iQ-R 编程手册(程序设计篇) [SH-081319CHN] 中的章节 “8. SFC”
- MELSEC iQ-R 编程手册(CPU模块用指令/通用FUN/通用FB篇)[SH-081322CHN] 中的章节 “28 SFC程序用指令”
* Ⅱ、实操代码与仿真 *
一、SFC程序的启动模式、启动条件、块停止时的输出模式设置
参考 “Ⅰ、理论知识 - 五、SFC设置-(一)CPU参数设置”及“Ⅰ、理论知识 - 七、SFC程序的执行(第一到六章的简述)-(一)SFC程序的启动及停止” ,这里只用CPU参数设置,不通过命令和特殊继电器SM321来设置
(一) 通过CPU参数设置
二、SFC程序新增与编辑
(一)SFC块文件的新增
(二)SFC块程序编辑
1. 普通步、步的动作输出、步跳转、分支等功能步或转移的添加、插入
A 插入普通步
B 插入转移条件
C 插入动作输出
D 插入跳转步
E 插入选择分支
F 插入并行分支
G 添加选择分支
H 添加并行分支
或者在SFC编辑处点击也可以
(三)块的启动/结束&暂停/重启(SET/RST/PAUSE/RSTART)
1. 块的启动/结束(SET/RST)匹配使用,不受块的暂停/重启影响
通常所说的块启动是启动块文件,一个块文件可以有多个块,当使用块启动命令时,只需SET一次块文件代号标识(EG:SET BL0),就会启动所启动块文件的所有块初始步,当前块代号标识的BL0的ON/OFF标志一直是ON,只有使用RST命令或者是块文件里其中的一个块流程执行了结束步才可以让其OFF,其ON/OFF不受块的暂停/重启命令影响
- 块流程里的结束步
2. 块的暂停/重启匹配使用
块的暂停/重启匹配使用,块的启动/结束(SET/RST)则是让块结束所有步或者让块重新从初始步开始。
块的暂停/重启:执行暂停命令时,不会让步的激活状态丢失,只是会像主控被关掉了一样,不扫描被暂停的块文件的块流程,执行块的重启命令就可以解开块暂停,让块文件的块流程重新被扫描执行。
3. 代码仿真
按如上所示,即可以实现对SFC块代码功能的块开始、块结束,块暂停、块继续。块文件里可不放结束块,可以完全由块结束来操作,块结束更换为步跳转,这样和之前的工作:三菱PLC程序开发流程总结)用上一样的代码写法,由块开始、块结束,块暂停、块继续代替类似主控的方法管理机器的开始自动、暂停、继续、退出自动的控制逻辑。