ABB AC900F学习笔记31:freelance 2019 运用实例学习理解自定义功能块参数存储类型-VAR_IN、VAR_OUT、VAR_DPS、PARA_EXP
作者:互联网
前面一篇博客通过帮助文件大体上描述了集中参数存储类型的含义,这一篇就用一个实际的例子来体会一下。
1. 新建一个freelance 2019项目,搭建基本的层级结构
2. 硬件结构添加模拟器和操作员站
3. 模拟器和操作员站的IP地址都修改成127.0.0.1
4. 双击myFBD_Class层级,定义变量
可以看出定义了VAR_IN、VAR_OUT、VAR_DPS、PARA_EXP四种类型。
VAR_IN为自定义功能块的输入变量,组态自定义变量的对话框后,在引用自定义功能块的时候,可以和外部变量关联。
VAR_OUT为自定义功能块的输出变量,组态自定义变量的对话框后,在引用自定义功能块的时候,可以和外部变量关联。
VAR_DPS为自定义功能块的内部变量,组态自定义变量的时候这类变量不会出现在变量列表里面,不可以和外部变量关联。
PARA_EXP 自定义功能块要引用系统定义功能块时,为系统功能块参数做动态定义,这个后面还会详细说明。
双击Analog_Scale,写下面的程序
这里做了一个很简单的程序,只是为了体会一下这几种参数类型。
首先IN_INT为VAR_IN 类型,这种类型不会出现在自定义功能块的对话框的变量列表,属于“必选项”,在主程序使用自定义功能块时,可以将AI模板通道定义的变量传递给它。输入变量做了数据类型转换,转换成REAL数据类型,赋值给VAR_DPS类型变量IN_REAL,这种类型的变量仅仅用于自定义功能块内部的数据传递,不会出现在对话框编辑的变量列表。
VAR_DPS类型变量IN_REAL传递数据给模拟量的量程转换功能块,这是一个系统自带的功能块,双击可以看到参数设置对话框
可以看出这个功能块需要定义输入和输出的上下限范围。在编辑自定义功能块时,保持输入输出范围为空,在主程序调用自定义功能块的时候,通过PARA_EXP类型参数来赋值,从而满足不同情况下的模拟量转换需求。
可以注意到定义PARA_EXP类型参数时,有下图红圈的参数,这些参数看起来怪怪的,有些莫名其妙,是怎么来的,怎么知道含义?
关键点就是这个系统功能块的帮助文件。
帮助文件很清楚的写了这4个参数的名字。PARA_EXP类型的参数会出现在对话框编辑器里面。
VAR_DPS类型变量IN_REAL经过系统自带的量程转换功能块,最终输出给VAR_OUT类型的变量,VAR_OUT类型变量不会出现在对话框编辑其,属于必选项。
打开myFBD_Class层级,点击菜单编辑-对话框编辑
可以看到这个练习里面只有PARA_EXP类型参数出现在变量列表。红圈的左移右移按钮,表示这些变量是否出现在面板是可选的。
点击下面的新页,会创建一个新的参数设置页和新的组。
将四个PARA_EXP变量移到新建的组,并且修改页、组、变量标签名字,这里要慎重,一定要对比帮助文件,确认变量和标签含义的统一。
点击确定按钮,关闭对话框。
点击保存、检查错误,没有问题.这一步必须要做,不然主程序调用自定义功能块就找不到它。
双击打开程序测试层级,在右边编辑区点击鼠标右键,选择块-用户功能块。弹出用户功能块选择列表
由于我只做了一个用户功能块类,所以列表只有一个选项。需要注意到尽管一个用户功能块类下面可以有很多用户功能块,但是主程序调用时,是选取的用户功能块类的名字,而不是其下程序段的名字。
选取完成后,右边编辑区会出现刚才建立的功能块类。
上图中myFBD_Class就是我创建的用户功能块类的名字,这个FBD块的外型和其他系统自带的功能块一致。
双击这个块,弹出对话框
可以看出参数对话框页名、组名、参数名字就和前面对话框组态时写的名字一样。所以在对话框编辑时,对页名、组名、参数名做好注释可以做到简洁直观。
看这4个参数的顺序如果觉得别扭,可以重新回到自定义功能块类的对话框编辑
把4个参数回退到左边biani昂列表,然后按照输入下限、输入上限、输出下限、输出上限进行调整。
保存、检查错误。
双击打开程序测试层级,再双击打开刚才新调用的用户功能类myFBD_Class
这里参数的顺序也调整过来了,数值也跟随调整。说明调整自定义功能块类的参数顺序和分组之类,不需要把已经引用的自定义功能块删除掉,只要保存检查错误没有问题,就会更新一调用的功能块。
完善一下程序
在操作员站的画面引用PT1000_HMI变量。
保存、检查错误没有问题,运行模拟器,加载过程站和操作员站,修改PT1000数值,就可以看到PT1000_HMI随着变化。
这个练习主要是针对自定义功能块类的VAR_IN、VAR_OUT、VAR_DPS、PARA_EXP类型参数的理解。
标签:ABB,变量,自定义,对话框,功能块,VAR,参数 来源: https://www.cnblogs.com/fishingsriver/p/15111593.html