您现在的位置是:首页 > PLC技术 > PLC技术
施耐德Unity Pro的用户功能块( DFB)
来源:艾特贸易2017-06-05
简介(1) 主要内容 用户功能块 (DFB) 是用户为了满足应用程序的特定需要而编写的程序功能块,用户逻辑被封装在一个功能块当中,能够多次重用,以满足应用的特殊要求。 用户功能块 (DFB
(1)主要内容 用户功能块(DFB)是用户为了满足应用程序的特定需要而编写的程序功能块,用户逻辑被封装在一个功能块当中,能够多次重用,以满足应用的特殊要求。 用户功能块(DFB)可以用来对应用程序进行组织和优化。当需要在应用程序中多次重复一个程序段,或者设定一个标准的程序操作时,就可以使用DFB。 用户功能块主要包括以下元素: ●用梯形图(LD)、指令表(IL)、结构化文本(ST)、功能块图(FBD)编写的代码段; ●输入/输出参数; ●公共内部变量或者私有内部变量。 通过对功能块进行的相关操作,就可以让一个或多个应用程序共享。 在应用程序中使用DFB功能块,具有以下优点: ●结构化应用程序,提高程序的可读性; ●简化程序的设计和输入; ●所有由功能块操作的变量都要在它的接口进行识别,方便应用程序的调试; ●减少生成的代码的数量。与DFB相对应的代码只加载一次,虽然在程序中会多次调用, 程序只生成与实例相对应的数据; ●保护技术秘密。 与子程序相比,使用DFB具有以下特点: ●更容易地设置处理参数; ●使用针对DFB的内部变量,不受应用程序影响; ●可独立于应用程序对其进行测试操作。 另外,LD和FBD语言提供了一个DFB的图形视窗,便于程序设计和调试。DFB类型结构如图3-80所示。 功能块包含以下元素: ●名称:DFB类型的名称(最多32个字符),该名称在整个库内必须是唯一的,可以在 项目设置语言扩展选项卡的标识符区域内选择扩展的字符; ●输入:输入参数(不包括输入/输出参数); ●输出:输出参数(不包括输入/输出参数); ●输入/输出:输入/输出参数; ●公共变量:可以通过应用程序访问的内部变量; ●私有变量:嵌入于内部的变量或者DFB,不能通过应用程序访问; ●代码段:用LD、IL、ST、FBD编写的DFB代码段; ●注释:最多为1024个字符。不允许使用格式化字符(回车、Tab键等); 对于每一种DFB,都可以通过对话框来打开一个描述文件,其中包括DFB的大小、参数和变量的数量、版本号、上一次修改的日期和保护级别等。 (2)用户功能块(DFB)的创建 用户功能块(DFB)的实现过程主要包括以下3个环节: ●创建DFB类型; ●每次在应用程序中使用DFB时,都要创建一个此功能块的副本,称为一个实例; ●在应用程序中使用DFB实例; 创建DFB类型,使用DFB编辑器对组成DFB的所有元素进行定义和编码,包括: ●描述功能块:名称、类型(DFB)、激活诊断、注释; ●功能块的结构:参数、变量、代码段。 DFB的创建步骤:打开Unity Pro应用程序,创建新的DFB类型,编辑新创建的DFB类型的属性,编辑DFB的参数,在一个或多个段中输入DFB代码,分析DFB类型并使其有效,调试DFB类型,如果需要可以导出DFB用于其他应用程序,使用DFB,如图3-81所示。 图3-80 DFB类型结构
图3-81 DFB的创建步骤 (3)用户功能块(DFB)的内部数据 DFB的内部数据主要有两种: ●参数:输入、输出、输入/输出; ●公共或者私有变量。 DFB的内部数据必须使用符号进行定义,不能使用地址进行定义。 (4)用户功能块(DFB)的使用规则 设计人员编写DFB功能块模型(称为“DFB类型”);用户创建这个模块类型的数据映像(称为“实例”),并输入各个功能块实例的参数;设计人员和用户之间可将DFB导入/导出。 DFB编码在CPU中只装载一次。DFB可以被保护。DFB既可以被创建它的应用程序使用,也可以放在功能块库当中,被所有的应用程序使用。 在所有语言包括指令表(IL)、结构化文本(ST)、梯形图(LD)、功能块图(FBD)及应用程序的所有任务(代码段、子程序等)都可以使用DFB实例,除了事件任务和SFC程序的转换,在使用DFB时,不管采用什么语言,都必须遵守如下规则: ①不必连接所有输入、输入/输出或者输出参数,但是下面参数一定要赋值: ●泛型数据类型的输入参数(ANY_INT、ANY_ARRAY等); ●输入/输出参数; ●除了数组,泛型数据类型的输出参数(ANY_INT、ANY_REAL等)。 ②未连接的输入参数会保持先前调用的数值,如果相关的功能块从未被调用过,那么它们会保持定义的初始化数值。 ③所有分配给输入、输出、输入/输出参数的对象都必须与创建DFB类型时所定义的类型相同。例如,如果输入参数“speed”定义了INT类型,那么就不能把它赋给DINT或REAL类型的数据。唯一的例外是用于输入和输出参数(不是输入/输出参数)的BOOL和EBOOL类型,它们可以混用。 例如,输入参数“Validation”可以定义为BOOL类型,并与一个EBOOL类型的内部字% Mi相关联。但是,在DFB类型的内部代码中,输入参数实际上有BOOL类型的属性,它不能进行边沿处理。 在梯形图语言中有两种调用DFB功能块的方式: ●在一个操作功能块内调用文本,该功能块中参数语法和约束条件应与结构化文本语言一致; ●通过图形调用。 功能块的输入可以被连到或者分配一个数值、对象或者表达式。不论在哪种情况下,外部元素的类型(数值、表达式的运算结果等)都必须与输入参数一致。 DFB功能块必须至少有一个与之相连的布尔输入和输出,可以使用EN输入参数和ENO输出参数来实现。 对于ANY_ARRAY类型的输入、泛型数据类型的输出及DFB功能块的输入/输出,必须对其进行连接或赋值操作。 在结构化文本中,用户功能块通过调用一个DFB来实现,DFB实例的名称后面带有一个参数列表。参数会在括号中列出,彼此之间用逗号分隔。 DFB调用有以下2种类型: ●一个形式调用,其中参数是赋值(参数=数值)。在这种情况下,参数在列表中输入的顺序是无关紧要的。EN输入参数和ENO输出参数可认用作控制功能块的执行; ●一个非形式调用,其中参数是数值(表达式、对象或者立即值)。在这种情况下,参数在列表中输入的顺序必须符合DFB输入参数的顺序,包括未赋值的输入,即参数为空。不能使用EN和ENO参数。 在指令表中,用户功能块通过CAL指令调用,该指令后面带可用作操作数的DFB实例名称,以及一个可选的参数列表。参数列表置于括号中,参数间用逗号分隔。 在指令表中,有3种调用DFB的方式: ●指令CAL DFB_Name后面带有一个赋值的参数列表(参数=数值)。在这种情况下,参数在列表中输入的顺序无关紧要。EN输入参数可以用来控制功能块的执行。 ●指令CAL DFB_Name后面带有一个参数列表,参数为数值(表达式、对象或者立即值)。在这种情况下,参数在列表中输入的顺序必须符合DFB输入参数的顺序,其中包括未赋值的输入,即参数为空。不能使用EN和ENO参数。 ●指令CAL DFB_Name后面不带有参数列表。在这种情况下,在这个指令之前必须通过一个寄存器对输入参数进行赋值。首先把数值载入,然后赋给输入参数。参数( LDIST)赋值的顺序无关紧要。但是,在执行CAL命令之前,必须对所有需要的输入参数进行赋值。不能使用EN和ENO参数。
功能与下列指令表相同:
在FBD(功能块图)语言中,用户功能块和梯形图语言中的表示方式相同,以图形的方式被调用。用户功能块的输入可以通过一个数值、立即值对象或者表达式进行连接和赋值。无论是哪种情况,外部元素的类型都必须与输入参数的类型一致。 DFB的一个输入只能分配一个对象(链接到具有同样变量的另外一个功能块)。但是,一个输出可以与多个对象相连接。DFB功能块必须至少有一个与之相连的布尔输入和输出,可以使用EN输入参数和ENO输出参数来实现。 对于ANY_ARRAY类型的输入、泛型数据类型的输出及DFB功能块的输入/输出,必须对其连接或者赋值操作。DFB的使用步骤如图3-82所示。
图3-82 DFB的使用步骤 (5)诊断DFB 诊断DFB是用于应用程序诊断的工具,用于PLC程序中的过程控制。内置诊断可以直接在PLC层次追溯错误的起源。创建用户自己的诊断DFB(Quantum或Premium)。 Schneider预定义的诊断DFB列表如下:
诊断DFB的原理如图3-83所示。 报警“登记”: ●错误登记指令REGDFB()。当错误发生时,把带时间戳的记录,写入到诊断缓存区中: ●同一个DFB可以登记多个记录(最多4个); ●只在Diagnostic DFB中使用。报警记录注销: ●“注销记录指令”DEREG(),更新与错误有关的日期和时间缓冲区; ●当所有观察器都得到确认信息时,消息从诊断缓冲区中被删除; ●只在Diagnostic DFB内部使用。
图3-83 诊断DFB的原理 过程是带有多个输出的功能,没有内部状态。过程与基本功能的唯一区别是:过程可以有多个输出,且支持VAR_IN_OUT数据类型的变量。过程不返回值,是对IEC 61131-3标准的补充,且必须专门启用。
点击排行
