关于本实验

Add-On指令简化电机连锁控制的子程序。

实验背景

现在的程序当中用JSR调用子例程的方式。

随后的编程使用过程中发现其在调用时中有操作繁琐、占用内存大的不足之处。

以泵的连锁控制调用为例:

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(1)

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(2)

在调用子例程的时候首先除了新建必须的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 自定义指令可以:

  1. 定义能够在多个项目中编写和重复使用的指令。
  2. 将 Add-On 自定义指令导出至 .L5X 文件,该文件随后将导入到另一个项目中。您还可以在项目之间进行复制和粘贴。
  3. 查看针对各个指令的版本历史、更改历史以及自动生成的帮助页面。
  4. 通过对各个指令应用权限集或者使用源保护,来保护对指令的使用和修改。
  5. 针对add-on自定义指令,通过向add-on自定义指令添加指令签名来生成唯一标识符并防止编辑指令(密封),从而防止修改、跟踪修订以及轻松确认指令功能。当将密封指令导出至 .L5K 或 .L5X 文件时,该指令已经过编码。
新建Add-On指令(以Pump_Control为例)1.分析输入输出量

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(3)

由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自定义指令,在弹出的面板中填写相应的信息,然后确定。

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(4)

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(5)

新建确认后会出现

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(6)

选择(参数)选项,定义相应的输入输出量。如下图:

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(7)

定义6个输入的BOOL量,3个输入输出量。配置6个BOOL量的可视属性,这样在调用的时候可以直观的看到其变量的值。也可以定义其变量别名更方便的调用参数。

本地Tag用来存逻辑中用到的本地标签,签名可以设置电子签名来保护程序不被修改。帮助可以生成指令相应的帮助文档包括梯形图、功能块和文本的调用。

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(8)

相应的属性设置完毕后确定,并打开Logic程序

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(9)

复制Pump_Contorl 子程序内容到Logic,并删除无用内容更改相应变量的标签

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(10)

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(11)

更改完成后保存,并验证Routine,保证没有错误。

这样这个Add-On指令就已经创建完了。

调用验证新建的Add-On指令1.新建一个Routine,梯形图。

新建泵控制所需要的标签并调用。(这里以P1Q23为例)

其中标签P1Q23_Con的数据类型PumpControl为新建的Add-On指令数据类型

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(12)

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(13)

这样就已经调用了PumpControl指令。

2.运行仿真验证

在上位画面中建立了5个泵对象,下位程序里也添加了相应的标签

位号为:P1Q13、P1Q23、P1Q33、P1Q43、P1Q53

泵的连锁条件Ready为断开检测所以赋值1,其余连锁输入值为0.

运行结果如下图:

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(14)

当13、33、53的VF_Alarm连锁信号为真时,看其是否连锁报警。

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(15)

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(16)

运行结果看均出现连锁报警。

现将13、33的VF_Alarm置0查看运行情况:

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(17)

运行结果13、33均解除了连锁报警,53还存在连锁报警。运行结果正常。

现在上位将23、43启动运行

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(18)

由以上运行结果看,泵的连锁控制PumpControl是可以正常调用运行的。

结论

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

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(19)

在指令的属性中可以看到数据类型大小只有4字节,比起以前6*4字节减少了不少的内存空间。如果有100台泵则可以减少2Mb(5*4*100=2000字节)内存的使用。

延伸

同样的道理将搅拌电机连锁控制(Agitator_Control)、变频电机连锁控制(FPump_Control)编程Add-On指令。

罗克韦尔slc500plc编程语言(PLC编程中使用AOI指令的简单应用)(20)

,