基本过程库(LBP)三:纯干货!手把手教你如何使用LBP_Aggr8库应用及仿真(附实例程序下载)
前言
基本控制库 (LBP)系列的文章一和文章二(文末有跳转链接),分享了LBP相关的说明及使用实施前的一些通用设置,本系列中所有实例均基于此设置,如未进行设置可能造成编译报错,无法使用的情况出现。请在进行实例测试前,先进行基础设置。
image-20240826170029776
01 测试环境
软件:
- TIA Portal V17
- STEP 7 Professional
- Wincc Comfort(TP900 Comfort)
- S7-PLCSIM (仿真工具)
- S7-PLCSIM Advanced V6.0 (仿真工具)
硬件:
- CPU 1513-1 PN (仿真环境,非必须)
- TP900 Comfort (仿真环境,非必须)
注:小编电脑已安装软件如下:
image-20240826111028433
02 LBP_Aggr8--控制Zui多8个集合
功能描述:
该块管理多达八个集合的自动开/关和切换。以下是可能的模式:
- 根据优先级顺序切换
- 开启:释放的具有Zui高优先级的集合
- 关闭:运行中的具有Zui低优先级的集合 优先级控制的驱动在参数化了不同的优先级时激活。
- 考虑运行时间的切换
- 开启:释放的具有Zui短总运行时间的集合
- 关闭:运行中具有Zui长总运行时间的集合如果输入“parSwitchByTime”为TRUE,并且仅适用于具有相同优先级的集合,则此操作模式激活。
- 考虑周期时间的切换
- 开启:释放的具有Zui短Zui后一个周期时间的集合
- 关闭:运行中具有Zui长当前周期时间的集合
image-20240826103154302
输入参数说明:
参数 | 数据类型 | 描述 |
---|---|---|
identName | String[30] | 识别名称 |
switchCmd | Bool | 每个上升沿执行切换 |
parSwitchByTimes | Bool | 当设置为true时,根据时间控制切换 |
request | UInt | 请求的集合数量(0到8) |
indAggr1 至 indAggr8 | Byte | 集合1至8的状态,位0 - 真:集合就绪,位1 - 真:集合已开启,位4至7 - 开启序列中的位置(优先级) |
delayTime | Time | 开启延迟时间 |
limitSecs | DInt | 时间控制切换的运行时间(如果parSwitchByTimes = true) |
restTime | Time | 关闭后的休息时间(如果parSwitchByTimes = true) |
reset | Bool | 真:重置错误 |
输出参数说明:
参数 | 数据类型 | 描述 |
---|---|---|
on | Byte | 位0-7 – 对集合1-8的开启(true)或关闭(false)命令 |
errNoSwitch | Bool | true: 没有集合可用 |
errAggr | Byte | 一个或多个集合的错误 |
switchEnable | Bool | true: 开关操作可能 |
switchActive | Bool | true: 开关操作活跃 |
intError | Word | 位0 - true: 系统错误(读取系统时间失败) |
输入输出接口参数(panels):
参数 | 数据类型 | 描述 |
---|---|---|
settingsPLC | UDT | 位0-7 – 对集合1-8的开启(true)或关闭(false)命令 |
settingsHMI | UDT | true: 没有集合可用 |
statusHMI | UDT | 一个或多个集合的错误 |
alarms1 | Word | Comfort/Advanced面板离散量报警集合 |
alarms2 | Word | Comfort/Advanced面板离散量报警集合 |
注:panels参数类型为数组,数组大小由链接HMI数量决定;
用户定义类型--settingsHMI
参数 | 数据类型 | 描述 |
---|---|---|
parSwitchByTimes | Bool | true: 开关时间控制 |
request | UInt | 所需集合的数量 |
prios | Array[0..7] of UInt | 集合1至8的开关顺序位置 |
delayTime | Time | 延迟时间(开启前的空闲时间) |
limitSecs | Time | 时间控制开关的Zui大运行时间 |
restTime | Time | 关闭后剩余的运行时间 |
note | String[80] | 参见“note” |
reset | Bool | 重置错误,开关命令和剩余时间 |
opStation | String[16] | 参见“opStation” |
overwrite | Word | 参见“overwrite”位分配:位0 – 开关命令/时间开关/全部开关(“over”)位1 – 开关命令(“cmd”)位2– 时间开关(“cmd”)位3 – 请求(“over”)位4 – 延迟时间(“over”)位5 – 休息时间(“over”)...位7 – 限制时间(“over”)位8 – 开关顺序位置(“over”) |
opSecs | Array[0..7] of Time | 集合1至8的运行时间 |
alarmsInfo | UDInt | 报警信息 |
alarmsAck | UDInt | 报警确认 |
用户定义类型--settingsPLC
参数 | 数据类型 | 描述 |
---|---|---|
parSwitchByTimes | Bool | true: 开关时间控制。 |
request | UInt | 所需集合的数量。 |
prios | Array[0..7] of UInt | 集合1到8的开关顺序位置。 |
delayTime | Time | 延迟时间(开启前的空闲时间)。 |
limitSecs | Time | 时间控制开关的Zui大运行时间。 |
restTime | Time | 关闭后的休息时间。 |
用户定义类型--statusHMI
参数 | 数据类型 | 描述 |
---|---|---|
identName | String[30] | 识别名称 |
nextUp | Int | 下一个要启动的集合编号。 |
nextDown | Int | 下一个要关闭的集合编号。 |
diffLimit | Time | 运行时间和Zui大执行时间之间的差异。 |
cycleSecs | Array[0..7] of Time | 集合1至8的运行时间(数组字段0对应集合1)。 |
restTimes | Array[0..7] of Time | 集合1至8剩余的休息时间(数组字段0对应集合1)。 |
readys | Array[0..7] of Bool | true: 集合准备就绪可以启动(数组字段0对应集合1)。 |
errors | Array[0..7] of Bool | true: 集合被中断(数组字段0对应集合1)。 |
runCmds | Array[0..7] of Bool | 集合1至8的启动命令(数组字段0对应集合1)。 |
ons | Array[0..7] of Bool | true: 集合已启动(数组字段0对应集合1)。 |
request | UInt | 请求的集合数量。 |
errNoSwitch | Bool | true: 没有集合可用。 |
runUpDown | Bool | 集合正在启动或关闭。 |
switchenable | Bool | true: 开关操作可能。 |
03 LBP_Aggr8功能块在PLC中配置
LBP_Aggr8功能块使用步骤如下(新建TIA Portal项目,添加PLC,并完成系列文章一和文章二中的设置,过程不在赘述);
在Main程序中调用LBP_Aggr8功能块,并指定背景数据块;(相应UDT,自动复制完成)
image-20240826112750011新建全局DB,根据功能块接口建立IO变量;(实际应用中可使用结构体,实现快速添加)
image-20240826133459846注:参数panels使用数据块PanelsBlock(库文件中已有,拖拽使用),数组数量由链接HMI数量决定
04 LBP_Aggr8功能块在HMI中的应用
基本控制库 (LBP)主要应用于相同对象的快速批量处理,LBP库提供了相应的图形面板库。本系列实例均基于WinccComfort面板进行分享,使用步骤如下:(本实例基于系列文章一和二中的设置进行,HMI新建及设置不在赘述)
在HMI变量中新建变量表“LBP_Aggr8”(也可不用新建),并将PLC程序中LBP_Aggr8背景数据块中“LBP_typeAggr8Sym”数据类型拖入变量表中,并重命名该变量;
image-20240826151422990从项目库中将“LBP_Aggr8” 及 “LBP_General”画面模板拖扩HMI画面导航栏中
image-20240826161708661从项目库中模板副本中复制“LBP_Templates”到HMI画面管理中的模板;
image-20240826143921630在项目库中选择报警类别,并拖入到HMI报警中
image-20240826144352529从Demo项目中,将HMI报警中与“Aggr8”相关的离线报警全部复制到当前项目中;
image-20240826145008243注:每个FB实例都需要,单独的一组报警信息;
将报警信息中的名称,和HMI确认变量前缀或后缀(Demo中:InstDemo_2_1_instAggr8),批量替换为项目HMI变量中实例名称;
image-20240826151804587打开HMI根画面(实际应用中根据需要选择画面),并从项目库中选择“LBP_SmAggr8”图例,并拖入到HMI画面中
vmware_cAML1PMhc8打开图例属性窗口,并选择接口选项,将接口参数与PLC FB背景数据块中的“statSymbolAggr8”进行链接
image-20240826152745114
05 LBP_Aggr8功能块仿真调试
完成程序和HMI设计,即可使用PLC-Sim进行仿真测试,步骤如下:
使用PLC-SIM启动PLC仿真,并启动该实例,功能块运行;
image-20240826170524096点击TP900,启动仿真器;
image-20240826170844764点击功能块图标,进入样例测试模板;
image-20240826170942915以上配置仿真测试完成,更多功能请自行测试;
06 常见问题
LBP_Aggr8拖入后,接口参数数据类型与实际不符,需要更新数据接口;
image-20240826115203959处理方法:打开LBP,点击功能块上方警告信息,选择“编辑类型”后,右键出错的接口选择“更新界面”问题解决;
image-20240826115234502 image-20240826115256891