顺序功能图程序通常用作监管级控制算法。不同于执行完成时间在毫秒级的梯形图逻辑代码,SFC中执行的Step可能需要几分钟、几小时甚至几天才能完成。
1.在桌面上,打开RSLogix 5000。
2.使用图2-1中信息创建新项目,如图14-1所示。
图14-1 新建项目窗口
3.然后,在I/O组态树中向插槽2添加1756-IB16D模块,向插槽0添加1756-OB16D模块。
现在已准备好创建SFC例程。
4.右键单击“主程序”(MainProgram),然后选择“新建例程”(New Routine),如图14-2所示。
5.按照以下内容将该项填写完整。确认已选择“顺序功能图”(Sequential Function Chart)作为例程类型,然后单击“确定”(OK),如图14-3所示。
图14-2 新建例程菜单
图14-3 新建例程对话框
6.在控制器项目管理器中,双击刚创建的例程将其打开。请注意,开始时即存在一个Step和一个Transition。
1)Step包含一系列想要执行的Action;
2)Transition是在执行下一Step之前,希望满足的条件。
举一个非常简单的例子,比如起动三个电动机的Action,那么Transition可能是检查相应的模拟量输入,等电动机达到全速后再执行下一Step,如图14-4所示。
注:第一个Step上套有两层方框。后面任何新插入的Step都只有一层方框。这个双层方框用来表示SFC从何处开始。
7.右键单击Step,然后选择“编辑“Step_000”属性”(Edit“Step_000”Properties),如图14-5所示。
图14-4 SFC中的step
图14-5 “Step”右键菜单
8.请注意,这是程序范围内的标签,数据类型为SFC_STEP。按“取消”(Cancel)以关闭此窗口,如图14-6所示。
9.再次右键单击Step,这次选择“添加操作”(Add Action)。
决定要编写一个简单的小例程来实现以下功能:
1)Step 0:打开2号灯和3号灯(在ControlLogix演示箱中)。
2)Transition 0:等待开关13接通。
3)Step 1:关闭2号灯和3号灯。
4)Transition 1:等待开关14接通。
5)Step 2:打开4号灯。
6)Transition 2:等待开关15接通。
7)Step 3:关闭4号灯。
8)Transition 3:始终为真,所以没有等待
刚刚添加了Action,因此现在需要编写让2号灯和3号灯打开的代码。
10.双击“操作”(Action)框中的问号,并按如图14-7所示输入逻辑。
注:在Action中输入的代码为结构化文本。可以键入下面显示的标签,也可以在框中单击右键并选择浏览标签。请记住,下面显示的标签均为控制器作用域。
1)Local:0:O.Data.2:=1;(所有行均以分号结尾)
2)Local:0:O.Data.3:=1;(这是赋值,因此必须是:=而不是=)
图14-6 属性标签
图14-7 编辑“Action”
11.现在双击Tran_000下方的问号,然后按如图14-8所示输入逻辑,Local:2:I.Data.13(要等待开关13接通)。
图14-8 编辑“Transition”
12.转到菜单栏并选择“文件→另存为→“SFCLABa””(File→Save As→“SFCLABa”),用新名称保存该项目。
13.现在可以添加下一个Step/Transition。按下“步骤+转换”(Step+Transition)图标。
14.将它们拖动到初始Step/Transition的下方,注意如果距离足够近,则引脚会变为绿色。当引脚为绿色时松开鼠标,线会自动连接起来。
注:如果过早释放鼠标,两者未能连接在一起,只需先单击上引脚,再单击下引脚即可完成连接。
15.拖拽新的Step_001,注意线会随之一起被拖动,如图14-9所示。如果想要撤销拖拽并让它回到最初的位置,可以按Ctrl+Z(撤销)。
请记住,想要完成:
1)Step 1:关闭2号灯和3号灯。
2)Transition 1:等待开关14接通。
16.向Step_001添加两个Action,按如图14-10所示填写完整。然后按照下方的建议隐藏/取消隐藏Action。
1)Local:0:O.Data.2:=0;
2)Local:0:O.Data.3:=0;
图14-9 撤销命令
图14-10 隐藏/取消隐藏Action
注:在菜单栏中,可以选择“编辑”(Edit),然后选择显示或隐藏例程中的所有Action。
17.填写Transition(见图14-10)。
Local:2:I.Data.14
现在已经创建了一些逻辑,双击程序标签并查看通过逻辑创建的程序范围标签,如图14-11所示如前文所述,可以在程序所含的任意梯形图、功能块、SFC或结构化文本例程中使用这些标签。
图14-11 程序标签窗口
18.在第一个Step中,在同一Action中完成了所有任务。在这一Step中,分两个Action完成。可以选择任意一种方式。甚至可以改变操作的顺序。回到逻辑,按下Step_001中带三个小点的按钮。
19.在“操作顺序”(Action Order)选项卡上,使用上/下箭头更改其顺序。
20.按“确定”(OK),Action的顺序已经发生变化。
21.之前编写例程的时候,因为未添加注释而带来诸多不便。SFC有多种方法可添加注释。现在具体了解一下。在菜单栏中,选择“编辑→添加SFC元素”(Edit→Add SFC Element)(Alt-Ins)。
22.向下滚动并选择“文本框”(Text Box)。
23.按“确定”(OK),并输入图14-12中内容。
图14-12 添加注释
刚刚创建了一个自由浮动的文本框。
24.这似乎是一件很常见的事,因此觉得工具栏上应该有一个对应的图标,如图14-13所示。
(www.xing528.com)
图14-13 添加注释按钮
现在可以看到图标了!
25.使用“文本框”(Text Box)图标为Step_000,由编程人员自行添加注释。
27.单击图钉图标并拖拽着线在周围移动。
请注意,移动到Step上方时它会变为绿色。
28.在Step内单击以固定注释。
29.刚刚创建了一个固定的文本框。
30.请注意,图钉图标已经改变,显示文本框已固定。
31.尝试在附近移动该Step,注意文本框会随之移动,如图14-14所示。
图14-14 固定文本框
32.将项目另存为“SFCLABb”。
33.在菜单栏中,选择“编辑→复制元素”(Edit→Copy Element)。
34.下一步,“编辑→粘贴”(Edit→Paste)。
35.将Step_002拖拽到上一个Transition下方,当引脚变绿时释放。这会将它们自动连接起来。
36.用相同的操作复制Tran_000。
发现存在问题。现在Step_002外有两侧方框,而Step_000没有。复制了初始Step,因此得到了另一个初始Step。不能拥有两个初始Step,所以RSLogix 5000不得不选择其中一个。稍后,等有机会查看错误消息时,才会解决此问题。
37.暂时,请按照图14-15所示的截图修改逻辑:
1)Step 2:打开4号灯(Local:0:O.Data.4:=1;)
2)Transition 2:等待开关15接通(Local:2:I.Data.15)
38.可以开始最后一个Step/Transition对了。按下键盘上的Insert键,选择“步骤+转换→确定”(Step+Transition→OK),如图14-16所示。
39.将其连接到Tran_002下方,然后按照图14-17所示的截图进行设置:
1)Step 3:关闭4号灯(Local:0:O.Data.4:=0;)
2)Transition 3:始终为真,所以没有等待(1)
图14-15 控制逻辑的修改
图14-16 添加SFC元素对话框
图14-17 编辑“step”
注:如果未使所有Step和Transition彼此上下紧邻,则Step_003将超过(或者至少是接近)标识着分页的粗黑线。
虚线只是供参考的网格线。此编辑器的一大特色是仅通过滚动即可在页面之间移动。不必在页面之间“跳转”。关于逻辑横跨页面的情况并没有任何限制,不必在页与页之间创建跨页连接器。不过,如果创建了跨页连接器,这样会减少很多连线,从而使编程界面看上去更加简明易读。
如果计算机连接有打印机并将逻辑打印出来,则第一页会是显示出所有逻辑的缩小视图。然后会打印出各个页面,并在每一侧配有小箭头以指明与之对应的页面。如果办公室略显单调,则可将所有页面贴在一起,在墙上构成一副壁画作为装饰。
事实上,唯一一点会限制Step数量的因素是控制器中可用内存的大小!这与某些人所熟悉的情况不同,因为PLC-5有固定的数量限制。
40.将项目另存为“SFCLABc”。
41.尝试用缩放图标同时查看更多逻辑。
42.现在按下“检验例程”(Verify Routine)图标,注意到有三条错误,如图14-18所示。
图14-18 错误信息
43.第一个错误是因为不能以Transition作为逻辑的末尾。将通过添加停止来消除该错误。在指令工具栏中,按下停止图标并将其附加到逻辑的末尾,如图14-19所示。
下一个错误与之前已经注意到的问题有关。意外地使Step_002成为了初始Step。这很容易更正:
44.返回到Step_000并注意到它外面只有一层方框。
45.单击带有三个小点的按钮得到属性页面。
46.将类型更改为“初始”(Initial)并按下“确定”(OK)。
47.请注意,现在它外面有两层方框,而同时Step_002被自动更正(RSLogix 5000清楚只能有一个初始Step),如图14-20所示。
48.现在按下“检验例程”(Verify Rou-tine)图标,发现此例程中没有错误或警告(如果错误窗口未打开,请选择“视图→错误”(View→Errors))。
还有最后一件事要做。由于有多个例程,因此必须向该例程添加JSR指令。双击“主例程”(MainRoutine),如图14-21所示。
图14-19 添加结尾
49.按下键盘上的Insert键,键入“JSR”并按Enter。
图14-20 Step属性对话框
图14-21 项目列表
50.在文字Routine Name旁边→双击问号→从下拉列表中选择MYSFC→按Enter→单击Re-turn Par旁边的问号,如图14-22所示。
51.不想向此例程传送任何参数,因此不需要Return Par这行。删除该行的最简单的方法是单击Return Par旁边的问号并双击Enter。对Input Par重复相同的操作,结果如图14-23所示。
图14-22 JSR指令
图14-23 JSR指令
52.将项目另存为“SFCLABd”。
53.将开关12、13、14和15打到左侧将其断开,然后下载到插槽1中的L63控制器。
54.将控制器置于运行模式,并确认2号灯和3号灯已点亮。查看SFC例程并注意到Step_000已突出显示,表明逻辑执行到该Step。这是因为Tran_000正等待接通开关13。
Step 0:打开2号灯和3号灯(在ControlLogix演示箱中)
Transition 0:等待开关13接通
Step 1:关闭2号灯和3号灯
Transition 1:等待开关14接通
Step 2:打开4号灯
Transition 2:等待开关15接通
Step 3:关闭4号灯
Transition 3:始终为真,所以没有等待
55.在观察逻辑的同时,接通开关13。注意到灯熄灭了,现在Step_001被突出显示。
56.接通开关14并注意到4号灯亮起。
57.接通开关15并注意到4号灯熄灭,由于此Transition始终为真,因此SFC已结束。现在“停止”已突出显示。
如果这是PLC-5,则逻辑会从顶部自动重新开始。在ControlLogix中,如果需要,必须手动绘制一条线连回到第一个Step。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。