为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

PCS7自定义功能块

2013-04-26 38页 pdf 2MB 228阅读

用户头像

is_898365

暂无简介

举报
PCS7自定义功能块 PCS7 V6.1 中自定义功能库使用入门 Customized Library in PCS7 V6.1 Getting-started Getting-started Edition (2008 年-03 月) 摘 要 本文以实现简单的两个浮点数相加求和的功能为实例,分功能块编程、Block Icon 及 Faceplate...
PCS7自定义功能块
PCS7 V6.1 中自定义功能库使用入门 Customized Library in PCS7 V6.1 Getting-started Getting-started Edition (2008 年-03 月) 摘 要 本文以实现简单的两个浮点数相加求和的功能为实例,分功能块编程、Block Icon 及 Faceplate 制作三个部分,描述了 PCS7 V6.1 下如何制作自定义功能库的整个过程。 关键词 SCL, Alarm_8p, Block Icon, Customized Object, Faceplate Key Words SCL, Alarm_8p, Block Icon, Customized Object, Faceplate A&D Service & Support Page 2-38 目 录 1.PCS7 功能库简介 ....................................................................................................................... 4 2.自定义功能库 .............................................................................................................................. 5 2.1 帮助信息的获取.................................................................................................................... 8 2.2 AS功能块开发 ...................................................................................................................... 8 2.2.1 分析控制功能需求 ......................................................................................................... 9 2.2.2 创建测试项目................................................................................................................. 9 2.2.3 编辑SCL源文件 ............................................................................................................. 9 2.2.3.1 插入SCL源文件....................................................................................................... 9 2.2.3.2 设置SCL编辑器并创建符号 ............................................................................... 11 2.2.3.3 定义功能块头 ........................................................................................................ 12 2.2.3.4 定义输入/输出等管脚 ............................................................................................ 12 2.2.3.5 获取当前调用功能块的OB号................................................................................. 16 2.2.3.6 根据调用OB进行相应处理动作 ............................................................................. 16 2.2.3.7 报警处理 ............................................................................................................... 18 2.2.4 编译SCL源文件 ........................................................................................................... 19 2.2.5 定义功能块报警信息.................................................................................................... 19 2.2.6 调用功能块并编译CFC................................................................................................ 20 2.2.7 测试程序 ...................................................................................................................... 21 2.3 Block Icon开发 ................................................................................................................... 21 2.3.1 另存@@PCS7Typicals.pdl ......................................................................................... 21 2.3.2 生成Block Icon ............................................................................................................ 22 2.3.2.1 拷贝生成Block Icon............................................................................................... 22 2.3.2.2 编辑Block Icon...................................................................................................... 22 2.3.2.3 添加Block Icon属性............................................................................................... 24 2.3.2.4 修改Block Icon属性............................................................................................... 26 2.4 Faceplate开发 .................................................................................................................... 27 2.4.1 打开并创建Faceplate模板 ........................................................................................... 27 2.4.2 修改Faceplate模板 ...................................................................................................... 29 2.5 编译OS项目 ....................................................................................................................... 35 2.6 运行调试项目 ..................................................................................................................... 36 2.7 功能库的发布 ..................................................................................................................... 37 3. 总结 ......................................................................................................................................... 37 A&D Service & Support Page 3-38 1.PCS7 功能库简介 SIMATIC PCS7 即 SIMATIC Process Control System,它是西门子公司为满足市场需 求,基于全集成自动化 TIA 概念,为过程自动化应用于单一的平台而提供的统一 DCS 解决 。 基于模块化、灵活性和开放性的设计理念,针对过程控制中一些的控制要求,PCS7 系统预制集成了 PCS7 Library 功能库。此功能库包括标准的模板驱动功能块集(模拟量、数 字量输入/输出通道)、标准过程控制功能块集(PID 控制、马达控制、阀门控制、模拟量数 字量监控等)、手操控制输出功能块集、报警功能块集等。使用系统提供的标准功能块,用 户可以快速地、方便地、轻松地、从下到上一体化地组态项目中的具体控制。使用 CFC 编程工具并结合 PCS7 Library 功能库,师一次性的编程即可完成如下工作: I. AS 控制器中运行的过程控制回路控制算法; II. 针对控制回路在上位机中相关画面下对应的监视回路图标; III. 控制回路在上位机中对应的操作及参数设置子画面; IV. 控制回路对应的相关报警消息、趋势归档及用户操作记录等。 因此,使用 PCS7 提供的编程工具及功能库,用户可以非常方便地组态整个项目中对应 的各种不同控制算法及画面。同时,基于开放性的开发理念,PCS7 系统为用户还提供了相 应的功能库开发工具,用于用户自行开发适合用户或用户当前行业需求的功能库。此功能方 便了用户在基于 PCS7 所提供的功能库的基础上对整个系统的功能进行延伸扩展。使用系统 提供的功能库开发工具开发出来的功能库与 PCS7 自身所提供的功能库拥有相同的功能。 此外,为了满足某些特殊行业过程控制算法的需求,基于 PCS7 系统,西门子公司开发 了相应的一些行业库可以供客户选订,在 PCS7 的 Add-on 订货选型手册中可以查阅到相关 订货号,如下列举了一些相关行业库供参考。 ♦ PCS7 HVAC —— 加热、通风及空调控制功能库(A&D AS) ♦ PTE 400 —— 技术功能块(I&S IS KHE) ♦ Standard Chemistry —— 技术功能块(A&D SC MHM) ♦ PCS 7 PS —— 发电行业功能块(PG L6) ♦ 其他各种不同的驱动功能块 —— (I&S ITPS KHE 等) 在本文档中,我们将主要讲解 AS 控制功能块的创建、修改及上位机监控图标和面板的制 作等。 A&D Service & Support Page 4-38 2.自定义功能库 当用户使用 PCS7 系统定义一个功能块,例如一个功能块类型 Block Type,首先,在 AS 控制器侧,它是一个功能块(Function Block);然而在 OS 侧,它却是此功能块对应的 功能块图标 Block Icon 和一套操作面板 Faceplate。 其他的功能块类型,比如功能(Function)在此将不予讨论,因为功能不具有背景数据 块 Instance Data Block,而背景数据块又是 OS 和 AS 之间进行异步处理时,OCM (Operator Control & Monitor)属性必要的前提条件。 — AS 侧 使用系统提供的相应工具,用户定义了一个功能块类型 Block Type,它必须包含如下 部分: 9 输入/输出接口; 9 通过接口与外部系统建立的连接完成控制任务的程序或算法; 9 通用属性,例如块名等; 9 作为一个 AS 功能块 FB,还需包括: ♦ 输入/输出接口和功能块的系统属性; 类型相关属性,这些属性将应用于所有与此功能块相关的实例中,不可 修改; 实例相关属性,这些属性将作为新生成实例的默认值被应用,并可以根 据用户需求针对单个实例进行定制; ♦ 报警相关的文本模板 类型相关消息,应用于所有实例,不可修改; 实例相关消息,作为新生成的实例的模板被应用,可以根据用户需求针 对单个实例进行定制。 如果用户在组态过程中,调用或嵌套使用了一个 Block Type,则对应此 Block Type, 系统会自动创建一个功能块实例。此功能块实例包含了使用此功能块的所有数据,但不会包 含代码 Code 部分。当前功能块实例被固定分配给 Block Type,所有与此 Block Type 相关的 功能块实例拥有相同的接口。每次调用功能块实例时,系统会使用该背景数据块来调用对应 的 Block Type。 在 AS 编程过程中,生成某 Block Type 对应的功能块实例的典型方法是: 9 在 CFC Chart 中,嵌套调用此 Block Type。 A&D Service & Support Page 5-38 在 CFC 中,PCS7 用户应当使用预制功能块,只有功能块/功能库创建者才可以在一个 Block 中调用多个其他 Blocks(多实例方式)。 对应每个 AS 功能块实例,用户可以单独组态的内容有: 9 实例名; 9 实例相关的系统属性; 9 实例相关的消息文本等; — OS 侧 在 PCS7 OS 侧图形组态中,用户生成面板实例 Faceplate Instance 的典型方法有: 9 在过程流程图形中嵌套面板类型 Faceplate Type; 9 在其他 Faceplate Type 中嵌套面板类型; 对每个面板实例,用户能可以单独组态的内容有: 9 与 AS 功能块的连接,也可以通过动态的方式建立; 9 组显示 Group Display 中包含的内容; 一个典型的 PCS7 功能块需要包含如下部分: ‰ 功能及操作模式:功能的基本描述、输入/输出的详细信息、操作模式及执行的时间 顺序等; ‰ 调用 OB: 嵌套 OB 块的申明。当在 CFC 中调用此功能块时,此功能块除了 将会在循环 OB(OB30-38)中被调用外,在任务列表中定义的 OB 也会调用此功能块(例如,用于热启动初始化的 OB100 等)。CFC 编辑器将会在编译过程中,自动创建这些必须的 OB 块; ‰ 容错处理: 功能块的布尔输出端口 ENO 将会指示该功能块的执行情况。在 FB 的情况下,背景数据块的输出端 QERR(ENO 取反)同样也 会被存储。用户可以利用此端口来评估功能块的运行情况,例 如,在错误情况下产生相应的报警消息或采用替换值等处理机制 来加强程序的容错性能; ‰ 启动特性: 分两中情况,如下 初始化启动-Initial Startup 功能块在相应嵌套的 OB 中第一次被调用,一般情况下这些 OB 是一 些过程相关的 OB(例如,循环中断 OB)。此时,功能块采用系统默 认的变量或预制的一些参数; A&D Service & Support Page 6-38 启动-Startup 功能块在 CPU 启动时,第一次被调用。在此情况下,需要确保功能 块被启动 OB 调用(PCS7 中,默认为 OB100)。此时,需要在“启动 特性”中对预制的处理进行描述; ‰ 时间响应: 带有时间响应的功能块必须在循环 OB 中调用。这样,功能块可 以通过它的采样时间(前后两次连续的执行之间的中断时间)来 计算它的时间常量或参数; 当编译 CFC 并激活 Update Sampling Time 选项后,系统会自动采集 当前循环 OB 的执行时间并置于 SAMPLE_T 端口。(一般情况下, 在 CFC 中此端口被设为不可见 Invisible)。 ‰ 信号传输特性: 带有信号传输特性的功能块可以将过程值结合报警传输到 OS 进 行显示; 图 2.1:PCS7 功能块概念 在本文中,将以实现一个简单的两数相加求和的功能,来演示 PCS7 下如何自定义功能 库的整个过程(AS 算法及上位显示画面等)。 A&D Service & Support Page 7-38 2.1 帮助信息的获取 安装完成 PCS7 后,系统提供了相应的 PDF 文档。通过如下操作可以查看 PCS7 下的 相关文档: 图 2.2 获取帮助文档 关于功能库的开发,请参考 PCS7-Programming Instructions for Blocks。 图 2.3 功能库参考文档 任何情况下,如果需要获得相关操作的帮助信息,请使用F1 键或者访问西门子技术支 持网站:http://www.ad.siemens.com.cn/Service/获得更多详细信息。 2.2 AS 功能块开发 PCS7 下通常使用 SCL 语言来进行功能块的开发,请参考如下文档: 图 2.4 SCL 参考文档 A&D Service & Support Page 8-38 2.2.1 分析控制功能需求 在本例中,需要实现两个浮点数相加求和的功能,并设置一定的报警限位,当求和值大 于某个设定值后,OS 系统触发相应的报警信息。 由功能分析来确定输入/输出管脚及相关属性: 9 输入管脚——IN1(加数 1),IN2(加数 2),HLIMIT(报警上限),HYS(报警 阈值); 9 输出管脚——OUT1(求和),QH_ALM(报警上限); 2.2.2 创建测试项目 打开 PCS7,创建项目并加入 SIMATIC Station 和 PC Station,并进行相应的硬件组 态,最终项目结构如下所示: 图 2.5 基本项目框架 2.2.3 编辑 SCL 源文件 2.2.3.1 插入 SCL 源文件 右键点击 Sources 文件加,插入 SCL Source 文件,或使用 External Source...导入磁盘 上已有的源文件(可通过该操作将附录提供的 SCL Template 模板文件加入到项目中),同 时还可以使用”Export Source…”菜单将源文件导出到磁盘上,具体操作如下: A&D Service & Support Page 9-38 图 2.6 插入新的源文件 图 2.7 导入已有源文件 A&D Service & Support Page 10-38 图 2.8 导出源文件 2.2.3.2 设置 SCL 编辑器并创建符号表 双击打开 SCL 源文件,点击 Options Æ Customize…进行 SCL 编辑器设置,激活 Create Debug Info 选项,具体操作如下: 图 2.9 Options 菜单 图 2.10 激活 Create Debug info 选项 注:激活该选项,主要用于 SCL 编辑器下程序的调试,会占用额外的存储空间;功能 块开发完成通过测试后,最好将其关闭,并重新生成功能块。 A&D Service & Support Page 11-38 通过菜单 OptionsÆ Symbol table 为将要创建的功能块分配符号名,如下所示: 图 2.11 加入符号名 注:PCS7 下创建的功能块均为 FB 块,且为了避免和系统提供的 FB 块号冲突,通常 定义 500 以后的块号,一般不定义 FC 块(无背景 DB); 2.2.3.3 定义功能块头 定义功能块头如下所示,其中 FUNCTION_BLOCK、TITLE 和 NAME 需要和上述符号 名相同。关于功能块头各项参数定义的具体意义,请参考上述图 2.3 所示文档中相关内容; //******************************************************************************************** FUNCTION_BLOCK "ADD_FB" TITLE = 'ADD_FB' { // List of system attributes S7_tasklist:= 'OB100'; // Block is called if there is in a warm restart S7_m_c:= 'true'; // Block can be controlled and monitored S7_alarm_ui:= '1' // Setting “1” for PCS 7 message dialog ('0' for standard message dialog) } AUTHOR: ABC NAME: ADD_FB VERSION: '0.01' FAMILY: XYZ KNOW_HOW_PROTECT //******************************************************************************************** 2.2.3.4 定义输入/输出等管脚 根据上述功能分析中所需的管脚,定义输入输出等管脚,具体定义如下: 9 输入管脚 VAR_INPUT EV_ID { S7_visible:='false'; S7_link:='false'; S7_param :='false'; // Parameter cannot be set in CFC S7_server:='alarm_archiv'; // Message no. assigned by server S7_a_type:='alarm_8p' // Block signals with ALARM_8P A&D Service & Support Page 12-38 }:DWORD := 0; // Message ID RUNUPCYC{ S7_visible:='false'; S7_link:='false' } :INT := 3; // Number of run up cycles MSG_LOCK { S7_visible:='false'; S7_dynamic:='true'; S7_m_c:='true' } : BOOL := 0; // Enable 1=Messages locked IN1 { //加数 1 S7_shortcut:='addend1'; S7_unit:=''; S7_m_c:='true'; S7_dynamic:='true'; S7_archive:='shortterm' } :REAL :=0.0; //input value 1 IN2 { //加数 2 S7_shortcut:='addend2'; S7_unit:=''; S7_m_c:='true'; S7_dynamic:='true'; S7_archive:='shortterm' } :REAL :=0.0; //input value 2 HLIMIT { //限幅值 S7_shortcut:='limit value'; S7_unit:=''; S7_m_c:='true'; S7_dynamic:='true'; S7_archive:='shortterm' } :REAL :=100.0; //limit value for output HYS { //报警阈值 S7_shortcut:='HYS'; S7_unit:=''; S7_m_c:='true' } :REAL :=1.0; //Hysteresis settings END_VAR 注: ♦ EV_ID 主要用于报警触发,所有需要定义报警的功能块,必须定义该类型管脚,注 意它的 S7_server 和 S7_a_type 属性; ♦ RUNUPCYC 管脚用于功能块启动时前几个周期内的报警抑制,防止 CPU 启动时通 讯负荷过大; ♦ MSG_LOCK 用于报警锁定; A&D Service & Support Page 13-38 ♦ 管脚相关属性在 SCL 的编程中非常重要,把握了这些属性并能灵活的引用是整个 PCS7 下自定义编程的关键,其具体意义请参考系统的在线帮助信息; 9 输出管脚 VAR_OUTPUT OUT1 { //求和值 S7_shortcut:='sum'; S7_unit:=''; S7_m_c:='true'; S7_dynamic:='true'; S7_archive:='shortterm' } :REAL :=0.0; //output value 1 QH_ALM { //报警输出 S7_dynamic:='true'} : BOOL := 0; // 1=H-Alarm active QMSG_ERR { S7_visible:='false'; S7_dynamic:='true'} : BOOL := 0; // ALARM_8P: Error output QMSG_SUP { S7_visible:='false'; S7_dynamic:='true'; S7_m_c:='true'} : BOOL := 0; // 1=Message Suppression Active MSG_STAT { S7_visible:='false'; S7_dynamic:='true'} : WORD := 0; // Message: STATUS output MSG_ACK { S7_visible:='false'; S7_dynamic:='true'} : WORD := 0; // Message: ACK_STATE output END_VAR 注: ♦ QMSG_ERR 用于输出报警错误; ♦ QMSG_SUP 用于指示报警抑制; ♦ MSG_STAT 用于指示报警状态; ♦ MSG_ACK 用于指示报警确认状态; 9 静态变量 VAR sbRESTART :BOOL := TRUE; // Initial start memory bit A&D Service & Support Page 14-38 siRUNUPCNT :INT := 0; // Counter for RUNUPCYC execution sb_SIG_1: BOOL := FALSE; //Merker ALARM_8P Signal 1 sb_SIG_2: BOOL := FALSE; //Merker ALARM_8P Signal 2 sb_SIG_3: BOOL := FALSE; //Merker ALARM_8P Signal 3 sb_SIG_4: BOOL := FALSE; //Merker ALARM_8P Signal 4 sb_SIG_5: BOOL := FALSE; //Merker ALARM_8P Signal 5 sb_SIG_6: BOOL := FALSE; //Merker ALARM_8P Signal 6 sb_SIG_7: BOOL := FALSE; //Merker ALARM_8P Signal 7 sb_SIG_8: BOOL := FALSE; //Merker ALARM_8P Signal 8 //************************************************************************************** // Declaration Section Multiple Instances(SFB/FB), remember to copy the FB/FC blocks into your projects manually! //************************************************************************************** ALARM_8P_1: ALARM_8P; // Generation of max. 8 messages with max. 10 auxiliary values END_VAR 注: ♦ 静态变量能保持上次运算的值,常用于保存数据; ♦ 如果需要在程序中调用其他的 FB 块,则需要为这些调用的 FB 声明静态变量; ♦ 实现报警功能,需要定义 ALARM_8p 的静态变量; 9 临时变量 VAR_TEMP pbALARM: BOOL; // Call up ALARM_8P pbM_SUP: BOOL; // Message suppression pb_SIG_1,pb_SIG_2,pb_SIG_3,pb_SIG_4,pb_SIG_5,pb_SIG_6,pb_SIG_7,pb_SIG_8 :BOOL; // temp variable for alarm function // Start info: Structure with info for the OB that has just called the block TOP_SI: STRUCT EV_CLASS :BYTE; EV_NUM :BYTE; PRIORITY :BYTE; NUM :BYTE; TYP2_3 :BYTE; TYP1 :BYTE; ZI1 :WORD; ZI2_3 :DWORD; END_STRUCT; // Start info: Structure with info for the last called startup OB START_UP_SI: STRUCT EV_CLASS :BYTE; EV_NUM :BYTE; PRIORITY :BYTE; A&D Service & Support Page 15-38 NUM :BYTE; TYP2_3 :BYTE; TYP1 :BYTE; ZI1 :WORD; ZI2_3 :DWORD; END_STRUCT; DUMMY :INT; // Auxiliary variable END_VAR 2.2.3.5 获取当前调用功能块的 OB 号 //************************************************************************************* // Dependence on Calling OB //************************************************************************************* // Read out start info with SFC6 (RD_SINFO) DUMMY := RD_SINFO (TOP_SI := TOP_SI, START_UP_SI := START_UP_SI); pbM_SUP := MSG_LOCK; IF sbRESTART THEN // Initial start TOP_SI.NUM := 100; // Execute initial start as warm restart sbRESTART := FALSE; // Reset initial start END_IF; 使用 RD_SINFO 获取当前调用该功能块的 OB,通过评估 TOP_SI.NUM 即可判断该 OB 的 OB 号,并在下续程序中做相应处理,例如 OB100 中的初始化处理。注意需要将需要 定义处理动作的 OB 加入功能块头的 S7_tasklist 属性中(见上述功能块头的定义)。 注:当 CPU 在运行状态下,下载该功能块,该功能块第一次在控制器中运行,则此时 系统并不会运行 OB100,因此,初时化动作需要通过判断功能块中的静态变量 sbRESTART 为 true 来进行相应处理; 2.2.3.6 根据调用 OB 进行相应处理动作 // In which OB was the block called ? CASE WORD_TO_INT(BYTE_TO_WORD(TOP_SI.NUM)) OF //************************************************************************************ // Startup //************************************************************************************ // OB100: Warm restart 100: QH_ALM := 0; OUT1:=0; A&D Service & Support Page 16-38 //default reset commands QMSG_ERR := 0; QMSG_SUP := 0; MSG_STAT := 0; MSG_ACK :=0; pb_SIG_1:= 0; pb_SIG_2:= 0; pb_SIG_3:= 0; pb_SIG_4:= 0; pb_SIG_5:= 0; pb_SIG_6:= 0; pb_SIG_7:= 0; pb_SIG_8:= 0; siRUNUPCNT := RUNUPCYC; // Save RUNUPCYC value ELSE //********************************************************************************** // Technological Section //********************************************************************************** OUT1:=IN1+IN2; IF OUT1>HLIMIT THEN QH_ALM:=true; ELSIF OUT1pb_SIG_1; ELSE siRUNUPCNT := siRUNUPCNT - 1; pbALARM :=FALSE; // Initialization no ALARM pbM_SUP := TRUE; END_IF; END_CASE; 使用 CASE 语句来评估 TOP_SI.NUM 号,并进行相应处理动作: 9 当 OB100 调用该功能块时,即进行相应的初始化动作; 9 当其他 OB 调用该功能块时,即进行相应的的控制任务; 9 判断 siRUNUPCNT 是否为 0,来进行启动前几个周期内的报警抑制功能; A&D Service & Support Page 17-38 2.2.3.7 报警处理 //************************************************************************************** // Messages with ALARM_8P //************************************************************************************** // STRING variables must not be linked to ALARM8_P as auxiliary values // so transfer in array of bytes IF pbALARM THEN ALARM_8P_1 (EN_R := TRUE, // Update output ACK_STATE ID := 16#EEEE, // Data channel for messages (always 16#EEEE) EV_ID:= EV_ID, // Message number > 0 SIG_1:= pb_SIG_1,
/
本文档为【PCS7自定义功能块】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索