关于本实验
Add-On指令简化电机连锁控制的子程序。
实验背景
现在的程序当中用JSR调用子例程的方式。
随后的编程使用过程中发现其在调用时中有操作繁琐、占用内存大的不足之处。
以泵的连锁控制调用为例:
实验目的
通过Add-On指令编写解决以上调用子例程所描述操作繁琐、占用内存大的问题,简化编程过程。
实验环境
软件:
关于Add-On自定义指令
Add-On自定义指令即为用户定义的指令。在项目中定义 Add-On 自定义指令时,其作用与内置指令的作用相似。您可以定义这些指令,或者由他人为您提供。通过 Add-On 自定义指令,可以将最常用的逻辑封装成指令集。使用这些指令轻松重用项目中最常用的指令集,也可以共享这些指令以提高所有项目的一致性。
可以使用 Logix Designer 应用程序中已经提供的标准梯形图、功能块图和结构化文本语言创建 AOI 逻辑。创建 Add-On 自定义指令后,可将其用于任意 Logix Designer 应用程序 routine。
上下文视图可以为其使用的特定实例显示指令的逻辑,以便简化联机对 Add-On 自定义指令进行故障排除的过程。自动生成的主题帮助还可以使您更加轻松地获得成功实施所需的帮助。
最后,可以使用 Add-On 自定义指令的源代码保护功能将指令用户的访问权限限制为只读,使其只能进行只读访问,或禁止其访问指令使用的内部逻辑或本地 tag。这样可以防止意外更改指令,并保护您的知识产权。
总之,通过 Add-On 自定义指令可以:
- 定义能够在多个项目中编写和重复使用的指令。
- 将 Add-On 自定义指令导出至 .L5X 文件,该文件随后将导入到另一个项目中。您还可以在项目之间进行复制和粘贴。
- 查看针对各个指令的版本历史、更改历史以及自动生成的帮助页面。
- 通过对各个指令应用权限集或者使用源保护,来保护对指令的使用和修改。
新建Add-On指令(以Pump_Control为例)
1.分析输入输出量
由JSR指令可知
输入量有:P_Motor、P_Intlk、P_Reset、Estop、Ready、VF_Alarm、PS_Alarm、FS_Alarm、LS_Alarm
输出量有:P_Motor、P_Intlk、P_Reset、
其中输出输入量有:P_Motor、P_Intlk、P_Reset、
2.新建AOI指令
资产——Add-On自定义指令——右击——新建Add-On自定义指令,在弹出的面板中填写相应的信息,然后确定。
新建确认后会出现
选择(参数)选项,定义相应的输入输出量。如下图:
定义6个输入的BOOL量,3个输入输出量。配置6个BOOL量的可视属性,这样在调用的时候可以直观的看到其变量的值。也可以定义其变量别名更方便的调用参数。
本地Tag用来存逻辑中用到的本地标签,签名可以设置电子签名来保护程序不被修改。帮助可以生成指令相应的帮助文档包括梯形图、功能块和文本的调用。
相应的属性设置完毕后确定,并打开Logic程序
复制Pump_Contorl 子程序内容到Logic,并删除无用内容更改相应变量的标签
更改完成后保存,并验证Routine,保证没有错误。
这样这个Add-On指令就已经创建完了。
调用验证新建的Add-On指令
1.新建一个Routine,梯形图。
新建泵控制所需要的标签并调用。(这里以P1Q23为例)
其中标签P1Q23_Con的数据类型PumpControl为新建的Add-On指令数据类型
这样就已经调用了PumpControl指令。
2.运行仿真验证
在上位画面中建立了5个泵对象,下位程序里也添加了相应的标签
位 为:P1Q13、P1Q23、P1Q33、P1Q43、P1Q53
泵的连锁条件Ready为断开检测所以赋值1,其余连锁输入值为0.
运行结果如下图:
当13、33、53的VF_Alarm连锁信 为真时,看其是否连锁 警。
运行结果看均出现连锁 警。
现将13、33的VF_Alarm置0查看运行情况:
运行结果13、33均解除了连锁 警,53还存在连锁 警。运行结果正常。
现在上位将23、43启动运行
由以上运行结果看,泵的连锁控制PumpControl是可以正常调用运行的。
结论
在指令的属性中可以看到数据类型大小只有4字节,比起以前6*4字节减少了不少的内存空间。如果有100台泵则可以减少2Mb(5*4*100=2000字节)内存的使用。
延伸
同样的道理将搅拌电机连锁控制(Agitator_Control)、变频电机连锁控制(FPump_Control)编程Add-On指令。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!