首页 理论教育 通过SFC建立编程结构和步骤,快速入门PAC编程

通过SFC建立编程结构和步骤,快速入门PAC编程

时间:2023-10-26 理论教育 版权反馈
【摘要】:下面按照功能框图来创建SFC的结构图,并编写相应的步、Action和转换条件,以及相关的梯级逻辑。创建名为SFC_Test的例程,从4种编程类型中选择SFC的类型,如图17-3所示。图17-2 框图结构图17-3 创建名为SFC—Test的例程图17-4 SFC—Test例程图17-5 创建Action图17-6 初始化步Action_000和Action_001的执行动作采用语句编程代码的赋值语句完成,这是保持型赋值,即使离开这个步,数值依然保持。

通过SFC建立编程结构和步骤,快速入门PAC编程

根据需求画出的框图结构如图17-2所示。每个步骤和它的转换条件,最后是判断分支,当步循环小于3时,转向Step1执行,当步循环大于等于3时,进入停止待命。初始化步的进入,取决于外部控制,要编程解决从停止待命进入初始化步。

下面按照功能框图来创建SFC的结构图,并编写相应的步、Action和转换条件,以及相关的梯级逻辑。

创建名为SFC_Test的例程,从4种编程类型中选择SFC的类型,如图17-3所示。

打开SFC_Test例程,如图17-4所示,出现的是默认的初始步,以双线框表示。不要改变这个特定的双线框步,在它前面添加新的步和转换条件,否则当控制器进入初始化步的操作时,会找不到系统所认定的初始化步。总之,保留这个双线框的步作为初始化步。

关于Initial步的编程

将Step_000改名为Initial,此为初始化步。选中Initial步,点击右键后,点击“Add Ac-tion”,如图17-5所示。

在初始化步Initial上增加两个Action,Ac-tion_000用来清除步循环计数器,Action_001用来累加生产循环次数,Initial步用来完成进入生产循环的初始化工作。选择执行方式为P1,即步激活时执行一次便不再执行。初始化步的转换条件由命名为Start_SFC的BOOL量执行,这个标签可以别名给外部开关输入点,一旦按钮操作启动,便可从初始化步进入步循环的工作。增加的两个Action如图17-6所示。

978-7-111-36030-8-Chapter17-2.jpg

图17-2 框图结构

978-7-111-36030-8-Chapter17-3.jpg

图17-3 创建名为SFC—Test的例程

978-7-111-36030-8-Chapter17-4.jpg

图17-4 SFC—Test例程

978-7-111-36030-8-Chapter17-5.jpg

图17-5 创建Action

978-7-111-36030-8-Chapter17-6.jpg

图17-6 初始化步

Action_000和Action_001的执行动作采用语句编程代码的赋值语句完成,这是保持型赋值,即使离开这个步,数值依然保持。Action_000赋值0给标签Counter,这是清除步计数器。根据需求,当步循环完成3次,SFC_Test会离开步循环,重新开始新的一轮生产循环,进入新的一轮生产循环前需要清除原来的完成状态,这便是初始化的工作。Ac-tion_001作为累加器,生产循环周期计数Cycle_Number加1之后回送给自己,完成累加的工作,这是为生产循环而累积的记录。

关于Step1步的编程

进入Step_001组态,设定步计时器预置值为15000,即15s后,步计时器完成位置位,如图17-7所示。

978-7-111-36030-8-Chapter17-7.jpg

图17-7 进入Step_001组态设定步计时器预置值

在步Step_001上增加一个Action,选择执行方式为N,即在步激活的所有时间都会执行。Action_002调用例程Step1_Routine,步转换条件定为步计时器的完成位Step_001.DN,步激活扫描15s之后,步计时器完成位置位,步转换条件成立,离开步Step_001,如图17-8所示。

978-7-111-36030-8-Chapter17-8.jpg

图17-8 Action_002调用例程Step1_Routine

978-7-111-36030-8-Chapter17-9.jpg

图17-9 在例程Step1_Routine中编写的梯级逻辑

在例程Step1_Routine中编写梯级逻辑,令Light1闪烁,如图17-9所示。梯级条件采用无条件,当例程调用时,FLASH指令参数项Out_Flash的输出Light1将闪烁。

关于Step2步的编程

在Step_002上增加一个Action,选择执行方式为N,即在步激活的所有时间都会执行。Action_003调用例程Step2_Routine,步转换条件为常规计时器的完成位,例程Step2_Routine中的计时器计时15s之后,Timer_Step2.DN完成位置位,步转换条件成立,离开Step_002,如图17-10所示。

在例程Step2_Routine中编写梯级逻辑,令Light2闪烁,如图17-11所示。梯级条件采用无条件,当例程调用时,FLASH指令参数项Out_Flash的输出Light2将闪烁。编写通延时计时器指令TON,计时15s后完成位Timer_Step2.DN置位,梯级条件为无条件,步离开的后扫描将复位计时器Timer_Step2,等下次进入这个步的时候计时器仍能正常完成计时工作。

978-7-111-36030-8-Chapter17-10.jpg

图17-10 Action—003调用例程Step2_Routine

关于Step3步的编程

在步Step_003上增加一个Action,选择执行方式为N,即在步激活的所有时间都会执行。Action_004调用例程Step3_Routine,步转换条件调用例程Step3_Timer来完成,例程Step3_Timer的计时器计时15s之后,完成位置位,返回给步转换条件成立,离开步Step3,如图17-12。(www.xing528.com)

978-7-111-36030-8-Chapter17-11.jpg

图17-11 在例程Step2_Routine中编写的梯级逻辑

在例程Step3_Routine中编写梯级逻辑,令Light3闪烁,如图17-13所示。梯级条件采用无条件,当例程调用时,FLASH指令参数项Out_Flash的输出Light3将闪烁。

在例程Step3_Timer中编写计时器计时,15s后完成位置位,EOT指令返回给Step3的步转换条件,从而离开Step3步,如图17-14所示。EOT指令是一条专用指令,专用来返回转换条件例程中产生的转换条件的布尔量。注意,这个计时器没有机会自行复位,转换条件例程是没有后扫描的。

978-7-111-36030-8-Chapter17-12.jpg

图17-12 Action_004调用例程Step3_Routine

关于Step4步的编程

978-7-111-36030-8-Chapter17-13.jpg

图17-13 在例程Step3_Routine中编写梯级逻辑

978-7-111-36030-8-Chapter17-14.jpg

图17-14 在例程Step3_Timer中编写计时器计时

在步Step4上增加一个Action,选择执行方式为N,即在步激活的所有时间都会执行。Action_005调用例程Step4-Routine,步转换条件用手动操作BOOL量Leave_Step4来完成,如图17-15所示。

在例程Step4_Routine中编写梯级逻辑,令Light4闪烁,如图17-16所示。梯级条件采用无条件,当例程调用时,FLASH指令的参数项Out_Flash的输出Light4将闪烁。

978-7-111-36030-8-Chapter17-15.jpg

图17-15 Action_005调用例程Step4_Routine

同时,Step3步转换条件的例程没有后扫描的操作帮助复位计时器,在Step4中完成计时器复位。这个只是我们在模拟例程转换条件使用了计时器才遇到的问题,特殊处理而已,没有示范意义,不过请留意,转换条件例程的处

978-7-111-36030-8-Chapter17-16.jpg

图17-16 在例程Step4_Routine中编写的梯级逻辑

理和步的例程处理是不一样的,没有后扫描或预扫描的处理,系统没有机会自行处理,需要用户编程来解决,所以放在下一步来处理。

关于Step5步的编程

在步Step5上增加一个Action,选择执行方式为P1,即步激活时执行一次,Action_006执行赋值语句,令计数器Counter加1,步转换条件则采用了选择分支,当计数器Counter小于3,跳转到步Step1继续执行;当计数器Counter大于等于3,进入Stop,即停止待命状态,等待SFC复位,进入下一轮的工作循环,如图17-17所示。

978-7-111-36030-8-Chapter17-17.jpg

图17-17 Action_006实行加1操作

此处Counter的比较一定要用大于等于3,不要用仅仅等于3,因为等于3的惟一判断一旦由于意外离开3就不能进入Stop,变得无所适从,这也是调试中得到的经验。

在创建Step、Action和Tran的时候,你将发现系统会自动命名,这是因为编程软件的设置所致。在编程软件Options项中可以找到如图17-18所示的设置页面。系统自动命名是可以更改成用户所指定的名称的,数据库中的标签名也将随之更改。

978-7-111-36030-8-Chapter17-18.jpg

图17-18 标签命名规则设置页面

至此,一个简单的SFC过程就完成了,我们特地采用了不同的方式离开步,以体验不同处理方式的编程。如图17-19所示是一个完整的SFC流程图

为了SFC测试过程能够完整地运行下来,还需要增加另外的操作,这就是SFC例程之外的操作管理。

978-7-111-36030-8-Chapter17-19.jpg

图17-19 完整的SFC顺序功能流程图

978-7-111-36030-8-Chapter17-20.jpg

图17-19 完整的SFC顺序功能流程图(续)

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

我要反馈