发布时间:2026-07-25阅读(0)
Add-On指令简化电机连锁控制的子程序。
实验背景现在的程序当中用JSR调用子例程的方式。
随后的编程使用过程中发现其在调用时中有操作繁琐、占用内存大的不足之处。
以泵的连锁控制调用为例:


在调用子例程的时候首先除了新建必须的P_Motor、P_Intlk、P_Reset数据类型之外还需要新建ESTOP、Ready、Alarm*4共6个BOOL量。因为AB的变量存储的最小数据量为4个字节,所以即使建一个BOOL量所占用的空间也是4 Bytes。这样在调用泵或电机的时候就会很大程度的浪费了内存空间。况且在编辑JSR指令的时候每行的输入参数删除完毕都会出现新的空白行,随后必须执行删除参数行才行。新建多个BOOL变量和在修改是出现的空白行都加大了编程时的工作量。
实验目的通过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 自定义指令可以:

由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是可以正常调用运行的。
结论新建的PumpControl指令可以正常的调用运行。其操作方式简化之前JSR的编程方式,给工作提供了便利,结合Excel批量编辑导入标签可以大大减少编程的工作时间。

在指令的属性中可以看到数据类型大小只有4字节,比起以前6*4字节减少了不少的内存空间。如果有100台泵则可以减少2Mb(5*4*100=2000字节)内存的使用。
延伸同样的道理将搅拌电机连锁控制(Agitator_Control)、变频电机连锁控制(FPump_Control)编程Add-On指令。

Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图