首页 理论教育 深入了解SFC执行方式及可选的Action Qualifier

深入了解SFC执行方式及可选的Action Qualifier

时间:2023-06-28 理论教育 版权反馈
【摘要】:使用结构化文本来深入了解一下SFC的执行方式以及可选的Action Qualifier。在这里确定所期望的SFC执行方式:1)仅执行当前激活Step;2)执 行 直 至False Transition(出现)。图15-1 SFC执行选项卡请注意,可以得到例程的鸟瞰视图,所在的部分有相应的标记。可以在此视图中单击以快速浏览SFC的其他部分。已经完成了SFC的简单测试。查看SFC例程并注意到Step_000已突出显示,表明逻辑执行到该Step。

深入了解SFC执行方式及可选的Action Qualifier

使用结构化文本(STX,一种基于Pascal的编程语言)来深入了解一下SFC的执行方式以及可选的Action Qualifier。

1.将控制器更改为远程编程模式,然后离线。

2.按下“控制器属性”(Controller Properties)图标978-7-111-47798-3-Chapter02-31.jpg并单击“SFC执行”(SFC Execution)选项卡。在这里确定所期望的SFC执行方式:

1)仅执行当前激活Step;

2)执 行 直 至False Transition(出现)。

如果选择“执行直至False转换(出现)”(Execute until False transition(is reached)),请务必牢记,SFC开始后,在遇到False Transition或停止(或者任务看门狗定时器超时)之前,SFC将一直执行下去。

3.如图15-1所示,另一个选项是“仅执行当前激活步骤”(Execute current active steps only)。

4.按下“确定”(OK),关闭此窗口并返回到SFC例程。

5.按下“例程概览”(Routine Over-view)978-7-111-47798-3-Chapter02-32.jpg按钮

978-7-111-47798-3-Chapter02-33.jpg

图15-1 SFC执行选项卡

请注意,可以得到例程的鸟瞰视图,所在的部分有相应的标记。可以在此视图中单击以快速浏览SFC的其他部分。还可以调整矩形的大小来进行缩放。

6.关闭该视图,选择Step_003指令并将其向一侧拖拽几英寸。

7.右键单击引线,将Step_003连接到上方的Transition。

8.选择“隐藏线”(Hide Wire)。

请注意为自动生成的热链接,它会提供坐标以便让找到另一端。

9.在任意空白位置单击,热链接不再处于选中状态。

10.将鼠标悬停在热链接上方,直到光标变为手形。单击左键,会跳转到另一端。这是一种在逻辑中进行跳转的好方法。

11.右键单击热链接并选择“显示线”(Show Wire)来恢复显示。

已经完成了SFC的简单测试。可进一步了解一下结构化文本,结构化文本可以不嵌入到SFC中。结构化文本可用作独立的例程,正如梯形图逻辑或功能块例程一样。会创建一个结构化文本例程,不过要首先先来创建几个在例程中会用到的标签。

12.双击“Program Tags”文件夹以打开标签数据库,并按如图15-2所示添加两个别名标签。

978-7-111-47798-3-Chapter02-34.jpg

图15-2 标签数据库

13.使用以下信息创建一个新的结构化文本例程(提示-在“主程序”(MainProgram)上单击右键),如图15-3所示。

14.双击打开刚创建的例程。会看到可输入结构化文本代码的空白页。

15.按照内容输入结构化文本代码,如图15-4所示。

16.检验例程以确保不存在编程错误。(www.xing528.com)

现在已经输入完代码,所要做的只剩下进行测试。但在测试之前,必须明确如何调用并执行此代码。可以在主例程中输入JSR指令,像之前调用SFC例程时所做的那样。不过在本例中,将通过SFC调用此例程。不需要将希望执行的所有代码都直接输入到SFC中。相反,可以输入跳转指令从SFC内部跳转到其他例程。在SFC内部使用跳转而非直接在其中编写逻辑会有许多好处。

978-7-111-47798-3-Chapter02-35.jpg

图15-3 新建例程对话框

978-7-111-47798-3-Chapter02-36.jpg

图15-4 编辑结构化文本

可以从SFC中将逻辑分离出来。如果需要更改部分代码,不必编辑SFC本身,只需编辑包含代码的例程即可。

可以使用结构化文本之外的其他语言编写代码。由于结构化文本是唯一一种可直接嵌入SFC中的语言,因此如果希望使用梯形图逻辑或功能块来为部分过程编程,则必须使用跳转指令跳转到其他例程。

17.打开“MYSFC”例程。

18.向Step 002添加另一个Action。

19.在此Action中,按下鼠标右键并选择“设置JSR”(Set JSR)。

20.选择“MYSTXT”作为要跳转到的例程,然后选择“确定”(OK)。现在Step 002应当有两个关联Action,如图15-5所示。

978-7-111-47798-3-Chapter02-37.jpg

图15-5 添加Action

21.将项目另存为“SFCLABe”并下载到控制器中。

现在可以测试项目了。

22.将开关12、13、14和15打到左侧将其断开,然后下载到控制器。

23.将控制器置于运行模式,并确认2号灯和3号灯已点亮。查看SFC例程并注意到Step_000已突出显示,表明逻辑执行到该Step。这是因为Tran_000正等待接通开关13。

978-7-111-47798-3-Chapter02-38.jpg

24.在观察SFC例程的同时,接通开关13。注意到灯熄灭了,现在Step_001被突出显示。

25.接通开关14并注意到4号灯亮起,如之前一样,但0号灯也同样亮起。

26.观察例程“MYSTXT”,看能否判断出0号灯为何也会亮起(请记住,Step 2中的新Ac-tion是跳转到例程“MYSTXT”)。

27.如果现在按下演示箱上的按钮DI2,认为会发生什么情况?(DI2连接的是Local:2:I.Data.2)。如果不记得“conveyor_on”的别名,则可在结构化文本代码中移动鼠标并悬停在其上方,弹出的窗口中会显示其别名。

28.按下演示箱上的按钮DI2,确认0号灯熄灭。

29.接通开关15并注意到4号灯熄灭,但0号灯是什么情况呢?认为它为何仍然是亮的?

实验结束。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈