使用结构化文本(STX,一种基于Pascal的编程语言)来深入了解一下SFC的执行方式以及可选的Action Qualifier。
1.将控制器更改为远程编程模式,然后离线。
2.按下“控制器属性”(Controller Properties)图标并单击“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)按钮。
图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所示添加两个别名标签。
图15-2 标签数据库
13.使用以下信息创建一个新的结构化文本例程(提示-在“主程序”(MainProgram)上单击右键),如图15-3所示。
14.双击打开刚创建的例程。会看到可输入结构化文本代码的空白页。
15.按照内容输入结构化文本代码,如图15-4所示。
16.检验例程以确保不存在编程错误。(www.xing528.com)
现在已经输入完代码,所要做的只剩下进行测试。但在测试之前,必须明确如何调用并执行此代码。可以在主例程中输入JSR指令,像之前调用SFC例程时所做的那样。不过在本例中,将通过SFC调用此例程。不需要将希望执行的所有代码都直接输入到SFC中。相反,可以输入跳转指令从SFC内部跳转到其他例程。在SFC内部使用跳转而非直接在其中编写逻辑会有许多好处。
图15-3 新建例程对话框
图15-4 编辑结构化文本
可以从SFC中将逻辑分离出来。如果需要更改部分代码,不必编辑SFC本身,只需编辑包含代码的例程即可。
可以使用结构化文本之外的其他语言编写代码。由于结构化文本是唯一一种可直接嵌入SFC中的语言,因此如果希望使用梯形图逻辑或功能块来为部分过程编程,则必须使用跳转指令跳转到其他例程。
17.打开“MYSFC”例程。
18.向Step 002添加另一个Action。
19.在此Action中,按下鼠标右键并选择“设置JSR”(Set JSR)。
20.选择“MYSTXT”作为要跳转到的例程,然后选择“确定”(OK)。现在Step 002应当有两个关联Action,如图15-5所示。
图15-5 添加Action
21.将项目另存为“SFCLABe”并下载到控制器中。
现在可以测试项目了。
22.将开关12、13、14和15打到左侧将其断开,然后下载到控制器。
23.将控制器置于运行模式,并确认2号灯和3号灯已点亮。查看SFC例程并注意到Step_000已突出显示,表明逻辑执行到该Step。这是因为Tran_000正等待接通开关13。
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号灯是什么情况呢?认为它为何仍然是亮的?
实验结束。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。