UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB1UnityPro编程培训教程第八章DFB&诊断DFBUnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB2导出功能块DFB:用户逻辑被封装在一个功能块当中,能够多次重用(满足应用的特殊要求)使用设计人员编写DFB功能块模型,称为‘DFB类型’最终用户创建这个模块类型的数据映象,称为“实例”,并输入各个功能块实例的参数设计人员和用户之间可将DFB导出/导入DFB编码在CPU中只装载一次DFB可以被保护DFB可被创建它的应用程序使用,也可以放在功能块库当中,被所有的应用程序使用UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB3原理DFB包括:输入/输出参数公共或私有内部变量(声明)由LD,IL,ST,FBD语言编写的一个或多个段注:一个DFB可以在程序段内嵌套调用其它DFB.DFB用于结构化应用程序简化程序设计和输入提高程序的可读性简化调试保护技术秘密UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB4结构创建DFB类型名称:最多32个字符.参数:输入,输出,输入/输出内部变量:–公共:可被应用程序访问–私有:不能被应用程序访问编码段:可以用LD,IL,ST或FBD语言编写–遵循IEC标准,一个DFB只包含一个程序段–不遵循IEC标准,一个DFB可包含几个程序段(推荐)注释:最多1024个字符,不允许使用格式字符描述文件和保护等级DFB类型名称输入变量复制I/O公共变量私有变量DFB代码输出UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB5创建–原理打开UnityPro应用创建新的DFB类型编辑新创建的DFB类型的属性编辑DFB的参数在一个或多个段中输入DFB代码分析DFB类型并使它有效调试DFB类型导出DFB(如果需要)用于其它应用程序使用DFB项目浏览器创建DFB类型编辑DFB类型编辑DFB参数编辑DFB代码分析DBF类型调试DFB类型UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB6属性“DFB类型”在数据编辑器中键入,选择DFB并右击=properties给出关于DFB类型的信息在写模式下可以有一些属性:名称注释保护:选择保护等级和密码(选择后自动询问)注:独立于应用保护Diag:定义该DFB是否可被用户用作诊断DFBUnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB7I/O接口输入:最多32个对于DFB为只读模式从应用程序中传输数值给DFB类型和名称(最多32个字符)输出:最多32个对于DFB为可写模式从DFB中传输数值给应用程序类型和名称(最多32个字符)输入/输出:最多32个对于DFB为可读/可写模式传输数值给DFB,经过运算、修改后返回给应用程序类型和名称(最多32个字符)DFB类型名称输入I/O公共变量私有变量DFB代码输出UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB8变量私有:不限制DFB的内部变量只用于DFB编程(例如:中间计算)名称(最多8个字符)公共:不限制DFB的内部变量在调整模式下可以由应用程序或用户在功能块外读取(有读写权限)名称(最多8个字符)公共变量的数值,经由应用程序调整修改,可以通过设定%S94为1去替换初始值DFB类型名称输入变量复制I/O公共变量私有变量DFB代码输出UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB9代码组织成代码段:遵循IEC标准,一个DFB包含单个代码段不遵循IEC标准,一个DFB包含几个代码段代码段通过IL,ST,LD,FBD编写名称(最多32个字符)有效条件保护属性(无保护,写保护,读/写保护)注释(最多256个字符)只使用为功能块定义的参数或系统字和位进行编程DFB类型名称输入变量复制I/O公共变量私有变量DFB代码输出UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB10举例:创建名称:Parts_counter输入:Rst:计数器复位Preset:计数器预置值Count:计数器输入输出:Done:达到预置值信号公共变量:Cur_val:通过计数输入累加得到的当前值代码描述表UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB11使用–原理打开UnityPro应用导入DFB类型(如果需要带版本控制)创建DFB实例打开程序段在程序段中使用DFB实例修改参数(初始值)下载并测试程序项目浏览器创建DFB实例打开一个程序段编辑程序修改参数传输&测试程序UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB12使用–举例创建DFB实例:除去事件任务和SFC转换,可在应用程序的所有任务中创建DFB实例DFB实例用作:LD或FDB语言中的标准功能块ST或IL语言中的基本功能UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB13概览用于应用程序诊断的工具PLC程序中的过程控制内置诊断追溯错误的起源(直接在PLC层次)可以创建用户自己的诊断DFB(Quantum&Premium)Schneider预定义的诊断DFB列表ALRM_DIA:简单的事件监测(Quantum&Premium)EV_DIA:事件监测(Quantum&Premium)MV_DIA:运动监测(Quantum&Premium)ASI_DIA&A2SI_DIA:AS-i总线上的设备监测(只用于Premium)UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB14原理检测诊断DFB记忆诊断缓冲区查看观察器应用消息观察器1确认确认登记诊断缓冲区日期观察器2PLC消息UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB15登记报警登记错误登记指令REGDFB()当错误发生时,把带时间戳的记录写入到诊断缓存区中.同一个DFB可以登记多个记录(最多4个)只在DiagnosticDFB中使用语法REGDFB(AREA,16#0062,SLEN,CTRL,PIN,VALPIN,ESTS,ERID,STAT)UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB16记录注销报警记录注销‘注销记录’指令DEREG()更新与错误有关的日期和时间缓冲区当所有观察器都得到确认信息时,消息从诊断缓冲区中被删除只在DiagnosticDFB内部使用语法OUT:=DEREG(ERID);注:报警被保持在诊断缓冲区中,并可以被所有观察器读取,直到错误被确认为止(对于需要确认的错误)。UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB17创建激活ApplicationDiagnostics选项(Tool=Projectsettings)在变量编辑器中创建DFB类型或如果需要,导入诊断DFB的‘模板’的源代码在这个DFB类型的属性中,使得Diag选项有效声明DFB输入/输出和内部变量注:所有需要监测的输入,其Diag属性必须被选中UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB18创建(续)键入描述信息键入代码使用REGDFB()和DEREG()指令注:PIN参数是被监测的输入管脚的顺序编号创建DFB实例定制缺省消息调试DFB导出DFBUnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB19实验UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB20实验步骤动作1在ProjectBrowser中双击DerivedFBTypes,访问数据编辑器。2定义一个DFB,名为conveyor_DFB。3在inputs文件夹下面定义该DFB的输入变量:run,类型为EBOOLbox,类型为EBOOLstop,类型为EBOOL4在outputs文件夹下面定义该DFB的输出变量:running,类型为EBOOL5在public文件夹下面定义该DFB的公共变量:flash,类型为EBOOLtimer1,类型为TIMEcounter1,类型为UDINTreset1,类型为BOOL6在Sections文件夹下面定义该DFB的代码段:名称为conveyor_control,使用LD语言进行编程。DFB的创建及调用UnitytraininccourseV2.0-Module3.D:DFB&DiagnosticDFB21步骤动作7双击Conveyor_control,进入LD编程界面。8在主任务的代码段中打开前面编写好的Conveyor代码段,选中(Edit-SelectAll)所有的控制代码进行复制(Edit-Copy),然后在Conveyor_control代码段中进行粘贴(Edit-Paste)。9回到数据编辑器,右键Conveyor_DFB,选择AnalyzeType对先前定义的DFB作类型分析。如有错误或者警告,双击输出窗口中的信息行对相应的代码进行修改,之后重新进行AnalyzeType的操作,直到代码正确无误为止。10在主任务当中新建一个代码段,名为conveyor_fbd,选用FBD语言进行编程。11双击conveyor_fbd,访问FBD语言编辑界面。12在FBD语言编辑器中单击右键,访问FFBInputAssistant命令,在FFBType字段的后面选择按钮,访问Application本地库,在库中选择之前定义好的Conveyor_DFB,把它放置到编辑器当中,实例名为conveyor1。13为conveyor1连接变量,如下图所示:14为Conveyor_DFB添加一个输入管脚,名为feedback,类型为EBOOL。右键Conveyor_DFB,选择AnalyzeType命令分析该DFB类型。观察conveyor1的管脚变化。DFB的创建及调用(续)