浙大中控DCS图形化编程.ppt_第1页
浙大中控DCS图形化编程.ppt_第2页
浙大中控DCS图形化编程.ppt_第3页
浙大中控DCS图形化编程.ppt_第4页
浙大中控DCS图形化编程.ppt_第5页
已阅读5页,还剩244页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2006年度产品和技术培训图形化编程 主讲人 孙志明 一 图形化软件概述 图形化组态的作用 编写自定义控制方案 如精馏 联锁反应 燃烧等 四种编程语言 梯形图 LD 顺控图 SFC 功能块图 FBD ST语言 启动方式 推荐方式 通过单击组态软件的算法 弹出自定义控制算法设置对话框 点击图形编程中的 编辑 启动图形化编程软件 软件操作界面 编译成功提示 编译出错提示 状态栏 帮助 菜单项简介 二 图形化编程基础 主要内容 工程 段落 区段编程基本步骤程序运行原理及执行次序工程管理数据类型变量系统资源 培训什么 工程 段落 区段 工程 SControl用一个工程 Project 描述一个控制站的所有程序 每个工程唯一对应一个控制站 工程必须指定其对应的控制站地址 段落 工程包含一个或多个段落 Section SControl通过任务管理来管理多个段落文件 在工程文件中保存配置信息 段落是通常意义上的一个文档 是组成工程的基本单位 新建段落时必须指定段落的编辑类型和程序类型 区段 区段指在同一段落中有数据信号相连的元素的总和 一个段落可以包含一个或多个区段 SFC段落只有一个区段 区段只是一个表示段落中元素间关系的概念 新建区段不会生成任何新文件 工程 段落和区段的关系 工程 段落 区段 组态文件说明 文件保存路径 一个组态的相关文件必须保存在正确的文件夹下 否则在组态中进行联编时会出错 段落文件须保存在工程文件夹下 工程文件与工程文件夹须保存在组态文件夹下的 Control 文件夹下 Control 文件夹须保存在组态文件夹下 编程基本步骤 基本步骤 建立图形化组态工程并与系统组态软件建立关联 根据控制方案的特点及需要选择合适的编辑器在建好的工程中新建段落 在段落中编写程序 编写的过程中进行保存 程序编写完毕后 通过编译检查程序语法错误 修改程序至程序编译无误 将程序下载到主控卡 联机调试程序 使程序运行时符合控制方案的要求 程序运行原理及执行次序 图形化自定义程序下载到控制站后 每隔一个运行周期运行一次 控制站执行程序时 先判断段落的执行次序 对于段落中的执行次序 先判断区段的执行次序 然后再判断区段中各个编程元素的执行次序 新建工程 工程与组态关联 段落新建及保存 按编辑类型可将段落分类为FBD段落LD段落SFC段落ST语言段落按程序类型分可将段落分类为 程序段落模块段落 程序类型和段类型 任务管理 SControl以系统组态软件中设置的控制周期为1Ts 即 如果在系统组态软件的组态过程中设置了控制周期为0 1s 则1Ts 0 1s 用户还可通过操作 移到队首 上移 下移 移到队尾 等操作设置同一运行周期各程序运行的优先级 即排在队列靠前的同一运行周期程序比排在队列靠后的程序优先执行 不同运行周期的程序之间的优先级无法比较 可以对每个段落设置密码进行保护 只有当编辑界面打开后 才可以进行设置密码和删除密码的操作 练习 请大家花5分钟的时间 1 熟悉软件界面2 新建一个工程3 使用不同的编辑器建立几个段落4 改变段落的执行周期5 调整段落的执行次序 数据类型 图形化软件提供的变量数据类型 半浮点 2字节 数据类型编辑器 SControl内置数据类型编辑器 用户可以用数据类型编辑器生成自己的数据类型 并可以在任何编辑变量类型的地方使用 系统内已预定义了部分数据类型 这些数据类型只读 用户无法修改删除 问题 模拟量输入信号数据类型 structAI模拟量输入信号的PV成员数据类型 SFLOAT开关量输入信号数据类型 structDI开关量输入信号的VAL成员数据类型 BOOL 变量分类 变量按结构分为 基本变量 基本数据类型 如BOOL SFLOAT INT等 构成的变量称为基本变量 复合变量 复合数据类型 如结构体 数组等 所对应的变量为复合变量 变量分类 变量按作用范围分为 组态中定义的变量 全局变量 工程 菜单下 变量编辑器 中定义 私有变量 对象 菜单下 变量定义 中定义 输入变量与输出变量 对象 菜单下 变量定义 中定义 变量声明 变量作用范围 SCControl中可以使用的变量有四类 组态中定义的变量作用范围 整个组态 包括图形化工程和SCX语言程序 操作组态全局变量作用范围 整个图形化工程 包括各个段落私有变量作用范围 只在该段落起作用输入变量与输出变量作用范围 只在自定义段落起作用 变量查找 根据所查找目标数据源的分类 当前段 当前工程 进行变量 位号以及模块的查询 系统资源 位号系统变量单回路控制模块串级回路控制模块冷热启动及下载组态标志 模入量位号成员 开入量位号成员 系统变量 单回路控制模块 串级回路控制模块 串级回路控制模块 冷热启动及下载组态标志 BOOLg bHotStartup热启动标志 热启动时为ON 需要编程清0 BOOLg bColdStartup冷启动标志 冷启动时为ON 需要编程清0 g bDownUsrPrgFlag下载用户程序标志 下载了用户程序之后为ON 需要编程清0 g bDownCfgFlag下载组态标志 下载了组态 包括硬件组态 用户程序组态 后为ON 需要编程清0 提问 需要在流程图上显示累积量 在哪里定义 三 功能块图 FBD 语言 功能块图 FBD 概述功能块图的程序结构和执行次序FBD的编程元素模块库介绍常用模块介绍控制策略的FBD实现FBD编程注意事项 培训什么 主要内容 FBD概述 FBD是一种图形化的编程语言FBD用功能和功能块来构建控制策略FBD直观 易于维护IEC61131 3标准定义了FBD编程语言要素 功能块指包含内部状态的程序块功能块分为基本功能块和自定义功能块FFB都可用EN输入和ENO输出进行配置FFB由带有输入和输出的图形框来描述 FBD概述 EN和ENO 使能 EN是功能块的缺省的第0号输入 ENO是功能块缺省的第0号输出 可以隐藏EN和ENO引脚 如果当调用功能块时EN值等于ON时 则由FFB定义的算法才被执行 ENO EN FBD段落 即一幅FBD图FBD区段 有链路相连的元素的组合区段起始模块 那些输入只连接变量的模块区段启动模块 位置最上的起始模块一个FBD段落可以包含一个或多个FBD区段 FBD程序结构 FBD执行次序 区段的执行从启动模块开始 区段内的执行次序由区段内的数据流决定 段落中区段间的执行次序由区段的启动模块的位置决定 执行次序由上到下 执行次序 FBD编辑器 组态元素 选择 连接线 取反 最近选择的功能块 功能块选择 注释文本 调试文本 跳转按钮 FBD编辑器 IEC模块库 算术运算模块比较运算模块转换运算模块计数器模块逻辑模块数学模块选择模块定时器模块触发器模块 FBD编辑器 辅助模块库 控制模块通讯辅助模块累积模块输入处理系统模块文本代码模块辅助计算电量转换信号选择模块浮点处理模块 FBD编辑器 自定义模块库 自定义模块库收集了当前工程所编辑的所有模块 FBD编辑器 附加库 附加库主要包括一些特殊模块 锅炉模块 造气模块 DEH模块 智能通讯卡模块供用户使用 注 DEH模块 智能通讯卡模块只供ECS 100X系统使用 下面我们介绍几个较常用的模块 其他模块的使用可以参考相应的帮助文档 算术运算 ADD 在使用这个模块的时候 要注意模块的输入 输出变量的数据类型 该模块可以有多个输入参数 我们可以用鼠标拖动模块下方的黑点来增加或减少输入变量 可以通过点击 显示EN ENO 隐藏EN ENO引脚 可以通过点击 帮助 按钮来查看该模块的使用说明 例1 求温度TI101 量程0 600 和TI102 量程0 600 的平均值 并将运算结果存放至自定义变量TT中 算数运算 DIV 算数运算 DIV 除法运算时应注意其运算结果应在半浮点数据类型的表示范围内 例 要求计算流量FI101 0 500M3 h 和FI102 0 600M3 h 的比值 首先 新建浮点型变量BIZHI 其次 图形化编程如下 算术运算 MOVE 算术运算 MOVE 这个模块相当于赋值的功能 例如 我们将位号TI101的报警高限设定为0 9 则图形化编程如下 比较运算 GT 比较运算 GE 例如 当压力PT101 0 10KPa 超过80 时要求打开电磁阀KO101 参考程序如下 转换运算 SFLOAT TO FLOAT 转换运算 SFLOAT TO FLOAT 例 求温度TI101 0 600 和TI102 0 800 的平均值 并将计算结果存放到自定义变量TT 0 700 中 逻辑运算 AND 逻辑运算 AND 例 要求当三个开关KI101 KI102和KI103都打开时 为ON 启动电机KT101 否则关闭KT101 数学函数 ABS 数学函数 ABS 例 要求当流量FT101 0 6000M3 h 超过或低于某个设定值的30 时产生报警 变量BJT ON 该设定值为半浮点变量FF 0 6000M3 h 选择模块 SEL 选择模块 SEL 例 当操作员将开关 一字节变量KT 打至OFF时 选择测点一 位号TI101 作为控制回路的输入信号 当操作员将开关 一字节变量KT 打至ON时 选择测点二 位号TI102 作为控制回路的输入信号 选择模块 MAX 选择模块 MAX 例 某装置有3个温度测点 分别为TI101 0 600 TI102 0 600 TI103 0 600 要求将最高的温度信号作为连锁程序的判断条件 当温度超过其量程的90 时打开电磁阀KO101 TON定时器模块 TON定时器模块 定时器的基准为控制周期 定时时间必须设置为运行周期的整数倍 例 某连锁控制程序 要求当温度TI105 0 1000 超过600 时打开电磁阀KO102 TOFF定时器模块 TOFF定时器模块 注意 当延时时间到达之后输出为OFF状态 定时器的基准为控制周期 定时时间必须设置为运行周期的整数倍 例 要求当电机KT101跳闸时 由ON变为OFF 延时5秒种后点亮报警指示灯TT 定时器 TP 定时器 TP 该模块用于产生持续时间一定的脉冲 定时器的基准为控制周期 定时时间必须设置为运行周期的整数倍 例 请利用TP模块制作一个自复位按钮 要求当按下按钮KT101后 即为ON 延时5秒种后将KT101复位 即为OFF RS触发器模块 RS触发器模块 RS模块常用于连锁程序的编制 例 当水位LI101 0 200mm 高于量程的60 时打开放水阀门KO101 但要求操作员可以按下手动开关 为ON时 强行将该阀门关闭 用自定义变量MT表示该软手动开关 SR触发器模块 报警模块 AIALM 报警模块 AIALM 每个模拟量输入位号都有自己的质量码 主要用于位号的报警分析 在图形化组态中质量码为WORD类型 例 当温度TE105超过高高限或低于低低限时将变量THL置为ON 累积函数 TOTAL ACCUM 累积函数 TOTAL ACCUM 例 有一流量信号FI101 0 100M3 h 要求将该流量累积 首先 我们定义一8字节累积量FQ101 量程100 单位M3 系数3600 其次 使用该模块实现流量的累积 如下图 注 该模块每秒钟执行一次 因此要求程序的执行周期不大于0 5秒 使用该模块时必须保证流量信号的量程下限为0 累积函数 SUB ACCUM 累积函数 SUB ACCUM 该模块可用于累积量的清零 例 将累积量FQ101清零 参考程序如下 单回路模块 BSC 该模块的功能是产生一个单回路PID控制 使用时与被控对象组成回路 以MV作为被控对象的输入 以被控对象的输出作为BSC模块的输入 PV 并正确的设置模块的内部参数 可使测量值PV稳定地等于给定值 单回路模块 BSCX 注 BSCX是BSC模块的扩展模块 在BSC模块的基础上增加了该模块的成员 便于用户使用 例 某单回路控制 回路输入信号为温度TI101 0 600 回路输出为调节阀FV101 首先 声明自定义单回路如下 其次 进行图形化编程如下 例 某连锁控制 当压力PT101 0 8KPa 超过5KPa时将回路PTC101强制切为手动 回路PTC101的输入信号为PT101 输出位号为PV101 首先将工程值转化成半浮点数 5KPa对应的半浮点值为0 625 其次进行自定义回路的声明 文本代码模块 TEXTCODE 我们可以利用该模块在功能块图编辑器或梯形图编辑器中使用ST语言编辑器编写文本代码 使程序编制更为灵活 ST语言的语法请参考ST编辑器 双击该模块 将弹出如下对话框 点击 代码 按钮将弹出文本编辑器进行程序编制 控制策略的FBD实现 例1 某连锁控制 要求当温度TI101 0 800 超过400 时 全开冷水调节阀TV101 当温度低于200 时关闭冷水阀TV101 例2 要求当操作员打开开关K101 为ON 时 开始对流量FT101 0 600M3 h 进行累积 当操作员关闭该开关 为OFF 时停止累积 并对累积量清零 我们设置自定义8字节累积量FQ101 图形化编程如下 例3 某温度控制单回路 回路输入信号为温度TI101 0 1000 回路输出信号为调节阀TV101 正常工况下回路处于自动控制状态 当温度高于900 时回路转到手动控制状态 由操作员手动控制 同时发出报警信号 使自定义变量MFT ON 注意事项 对于编程的时候经常出现的一些错误 你是否知道是怎么引起的 出现变量非法的提示 是否在变量定义的时候使用了非法字符 例如 PI 101 图形化组态的时候不允许使用减号 但是可以采用下划线 注意事项 出现数据类型不匹配的提示 输入输出引脚所连接的数据与功能块所要求的数据类型不匹配 例如 四 梯形图 LD 语言 主要内容 概念触点线圈垂直连接线编程注意事项 培训什么 梯形图概述 梯形图在原电器控制系统中的接触器 继电器梯形图基础上演变而来 与电气操作原理相呼应 形象 直观和实用 触点和线圈来构建逻辑控制方案很容易将电气联锁图转换为梯形图程序联锁程序习惯使用梯形图语言进行编辑 LD编辑器程序结构 LD段落的设计对应于继电器开关的梯级 rung 图形的左边是汇流条 相应于梯级的相线 只有直接或间接与相线有开关量相连的元素在编程期间被 扫描 右汇流条缺省不画出 但可以认为所有的线圈和FFB开关量输出都接到右汇流条上 从而建立电流回路 四个概念 LD段落 即一幅LD图 一个LD段落由若干个LD区段组成 LD区段 有链路相连的元素的组合 区段起始模块 区段内那些输入只连接变量或左汇流条的模块 区段启动模块 区段中位置最上的起始模块 LD执行次序 区段的执行从启动模块开始 区段内的执行次序由区段内的数据流决定 LD段落中区段间的执行次序由区段的启动模块在段落图形中的位置决定 执行次序由上到下 LD编辑器 组态元素 常开触点 常闭触点 正跳变触点 负跳变触点 线圈 取反线圈 置位线圈 复位线圈 正跳变线圈 负跳变线圈 垂直连接线 LD编辑器 触点 认识SCCONTROL的触点 触点的特点 每一个触点都有一个变量和它对应 触点是在变量的控制下断开或闭合 变量触点 LD编辑器 触点 触点分类 常开触点常闭触点正跳变触点负跳变触点 LD编辑器 触点 不同类型的触点有什么区别 LD编辑器 触点 假设触点对应的变量为TEMP LD编辑器 线圈 认识SCCONTROL的线圈 线圈的特点 每一个线圈都有一个变量和它对应 线圈的得电状态决定了变量的状态 变量线圈 LD编辑器 线圈 线圈的分类 常开线圈常闭线圈置位线圈复位线圈正跳变线圈负跳变线圈 LD编辑器 线圈 不同类型的线圈有什么区别 LD编辑器 线圈 假设线圈相关的变量为TEMP LD编辑器 垂直连接线 垂直连接线可以同时连接多个输入和多个输出 相当于或的功能 连接线的左边作为或的输入 右边作为或的输出 垂直连接线上可以连接所有布尔量的数据链路 包括所有触点 线圈及功能块的布尔量引脚 编程示例3 例3 当开关DI101为ON 或者开关DI102为OFF时电机DJ101为ON DI101为OFF 且DI102为ON 则DJ101为OFF 编程示例3 例4 有三个开关按纽K1 K2 K3 当任何一个按钮按下时 即为ON 其他按钮均弹出 即为OFF 编程示例4 编程示例4 编程示例5 例5 开灯程序 KOSTART为开灯信号 当KOSTART为ON时要求灯 KO1001 开5秒关5秒 交替闪烁 当KOSTART为OFF时灯 KO1001 关 编程示例5 注意事项 所有的编程元素必须直接或间接的通过一个布尔输入引脚连接到代表电流相线的左汇流条 如下图就是一个典型的错误 注意事项 变量引用或连线时应注意数据类型必须保持一致 五 顺控图 SFC 语言 SFC概述SFC的元素及其连接规则步转换跳转择一分支 择一结合并行分支 并行结合SFC控制变量SFC的应用 主要内容 培训什么 SFC概貌 SFC由步进式顺序控制器演变而来SFC是顺序流程的图形化表示SFC把流程分解为步和转换SFC可以方便的实现批量过程控制SFC诊断 排错方便 易于维护IEC61131 3标准规定了SFC编程要素 SFC元素 七种基本元素 步类型 步类型有三种 起始步普通步终止步起始步和终止步必须有且只能各有一个SFC的执行从起始步开始到终止步结束 步 Step 步是控制流程中相对独立的一组操作的组合在步中可以定义随意数目的操作步在紧接在前的转换条件满足时激活步在激活时才执行相应的操作步在紧接在后的转换条件满足时退出激活状态 如何将我们的任务交给 步 去完成 SFC编辑器 操作 步属性对话框 步属性 中可设置两个功能 运行时间 操作 运行时间 在运行时间的填充框中填入ULONG类型的位号 变量 可以将该步的激活时间赋给该位号 变量 时间单位是毫秒 操作 Action 操作是对实际现场设备进行的操纵一个步中可以有0个或多个操作操作的类型由操作限定词来描述 操作限定词时态图 赋值操作限定词 表示在步的整个激活期间赋值操作一直进行 直到步退出激活状态恢复成不激活状态 如果是赋值操作限定词 则是应用ST语言编写控制算法 操作变量就是自己编写的一段ST语言程序 此时操纵的对象就是对应的ST语言程序 执行到该操作时 就运行该ST语言程序 转换 Transition 转换指明控制从一个步转移到下一步的条件当转换条件满足时 紧接在前的步从激活态变成不激活态 然后紧接在后的步将从不激活态转变成激活态只有当紧接在前的步在激活状态时 转换的条件才被测试 转换和步的连接图例 跳转 Jump 跳转允许程序从不同的步继续执行 跳转连接图例 顺序跳转 顺序回路 根据跳转对象的不同 可以构成顺序跳转和顺序环路 但不能在不同的并行区域间跳转 择一分支 择一分支提供了在SFC程序中实现条件控制的控制流程选择执行的方法 每一个分支都有执行的转换条件 择一分支被激活时 会依次对各个分支的转换条件进行判断 转换条件满足的分支被激活 在择一分支结构内只能有一个分支被激活 分支转换条件的优先级从左到右 比如如果左边第一个和第二个分支的转换条件都被满足时 左边第一个分支被激活 即只执行这个分支的程序 择一分支和择一接合必须一一对应 分支必须结束于同一择一接合或者结束于跳转 但至少有一个分支结束于择一接合 择一分支图例 例 根据如下要求编写一段顺控程序 有两个电机A B 启动开关分别为KO101 KO102 ON时启动电机 OFF时关闭电机 两电机一开一备 工作 备用指示开关为WKSDB ON时表示电机A工作 B备用 OFF时表示电机B工作 A备用 有一电机启动按钮DJSTART 要求DJSTART置ON后 延迟5秒再启动电机 电机A B开反馈分别为KO101K KO102K ON时表示开到位 OFF表示未开到位 要求电机启动后 需确认开反馈到位后方能进入后续的顺控程序 并行分支 并行分支使流程中几个子流程同时进行各分支的执行不相互影响并行分支和并行接合必须一一对应只有当所有的分支的最后一步都激活时 才测试并行接合紧接的转换的条件是否满足在并行结构内部的跳转不能跳到并行结构的外部 并行分支图例 例 根据如下要求编写一段顺控程序 有两个电机A B 启动开关分别为KO101 KO102 ON时启动电机 OFF时关闭电机 要求两电机A B同时启动 其开反馈分别为KO101K KO102K ON时表示开到位 OFF表示未开到位 要求电机启动后 必须确认开反馈已到位 有一电机启动按钮DJSTART 要求DJSTART置ON后 延迟5秒再启动两电机 SFC控制变量 复位变量为ON时 SFC程序起始步被设置为激活步 其它步都强制变为不激活状态 顺控程序从头开始重新执行 为OFF时 复位变量无效 注意 在起始步中 默认给复位变量赋OFF 在终止步中 默认给复位变量赋ON 运行变量为ON时 SFC程序正常执行 为OFF时 所有其它控制变量都无效 SFC程序停止运行 SFC控制变量 保持 禁止转换 变量为ON时 当前激活步将一直保持执行而不管紧接的转换条件是否满足 转换条件测试将不进行 此变量受运行变量和复位变量的影响 强制步进变量为ON时 当前激活步不管转换条件是否满足 都变为不激活状态 按顺序的下一步变为激活状态 强制步进变量受以上所有变量的影响 操作使能变量为ON时 步中的操作才被执行 控制变量只能选用在系统组态中定义的变量 每个SFC段落必须要设置复位变量 程序初次下载到控制站时 必须对该复位变量赋ON 使程序从起始步开始执行 其他控制变量可根据实际需要 做有选择的设置 练习时间 例 现场有三台电机正在使用 分别是电机1 电机2和电机3 他们的开关状态分别用f1 f2 f3表示 电机的启动和关闭要求用程序控制 将启动按钮start置为on 电机1首先启动 间隔5秒时间以后 电机2启动 再间隔5秒 电机3启动 启动过程完成后 才可以进入关电机过程 将启动按钮start置为off 电机3首先关闭 间隔5秒时间以后 电机2关闭 再间隔5秒时间以后 电机1关闭 关闭过程完成后 才可以重新进入开电机过程 六 ST语言 ST语言概述ST语言的语法自定义函数和功能块ST语言中的模块调用ST语言在非ST段落中的应用示例 培训什么 主要内容 ST语言 结构化文本语言IEC61131 3标准语言SCControl集成 使用方法 在工程中加入ST段落编制函数和模块在梯形图和功能块图中插入文本代码在顺控图步的操作中使用 操作限定词在顺控图转换条件中使用ST逻辑表达式 数据类型 数组结构 标识符 以英文字母开头续以英文字母 数字或下划线字符长度最多为24个字符 关键字 1 关键字 2 运算符 1 运算符 2 表达式 表达式为变量 操作符 常量 函数的组合 求值结果为单个值表达式的求值按运算符的优先级按顺序进行 优先级高的运算符先被处理 相同优先级的按从左到右的顺序执行实例A B C 3 FUNC1 2 D 运算符号归纳 赋值比较等于比较不等于二次计算 报表 SCX ST 八种常用语句 赋值语句 赋值语句将 右边表达式的值赋给左边的变量 赋值时可使用 或 作为运算符 举例 A 4 将变量A赋值为4 B 4 将变量B赋值为4 IF语句 IFA 0THENB 1 B 1 亦可 ELSEIFA 5THENB 2 ELSEB 3 END IF 规定了一组语句在规定的逻辑表达式为TRUE时执行 CASE语句 CASE语句规定了整数类型的选择项 以及选择项在不同的值时的几组语句组 CASETWOF1 I 1 1 I 1 亦可 2 I 2 ELSEI 3 END CASE FOR语句 FORK 1TO100BY2DODOSOMETHING 循环体 END FOR 循环语句 规定了终止条件和一组语句 当终止条件没有成TRUE时 这组语句被循环执行 WHILE语句 J 1 WHILEJ 100DOJ J 2 END WHILE 循环语句 规定了终止条件和一组语句 当终止条件没有成TRUE时 这组语句被循环执行 REPEAT语句 J 1 REPEATJ J 2 UNTILJ 101END REPEAT 终止条件的判断在语句组执行一次后才进行 所以规定的语句组至少会执行一次 当终止条件成TRUE时 循环被终止 函数和功能块 ST语言中可以调用程序模块 函数 功能块 函数是个程序模块 只有一个输出 根据输入可以唯一确定输出 如 SFLOATADD SFLOAT SFLOATa SFLOATb 功能块是个程序模块 有多个输出 或输出不但和当前输入有关还和上次内部状态有关如 voidBSC SFLOATPV UINTN OUT SFLOATMV 如何调用 函数调用语句 ret Func in1 in2 作为表达式返回值 Func in1 in2 作为子程序处理 函数返回值为空类型 功能块的调用语句 调用功能块时要严格按照输入输出顺序 先输入输入参数 再输入输出参数 参数顺序按照定义时的顺序 输出参数必须是变量 FuncBlock in1 in2 out1 out2 对于函数和功能块 系统中有已经定义好的标准库函数及标准功能块供我们使用 我们也可以使用ST语言来自己编制函数和功能块 函数定义 FUNCTION 定义函数 FUNC3 函数名 BOOL 输出变量属性 VAR INPUTIN1 BOOL 定义输入变量和类型 END VARVARTEMP1 BOOL 函数执行时用到的中间变量 END VARFUNC3 DoSomething END FUNCTION 结束函数定义 函数的示例 例1 使用ST编制一个定时器清零的函数 形参为 CTROL1 BOOL 定时器清零开关 ON清零 number1 INT 定时器序号 CTROL2 BOOL 定时器清零开关 ON清零 number2 INT 定时器序号 实现的功能是当开关CTROL1按下时第number1号定时器清零 当CTROL2按下时第number2号定时器清零 功能块定义 FUNCTION BLOCK 定义功能块 FB3 功能块名 VAR INPUTIN1 BOOL 定义输入变量和类型 END VARVAR OUTPUTOUT1 BOOL 定义输出变量和类型 END VARVARTEMP1 BOOL 定义中间变量和类型 END VARDoSomething END FUNCTION BLOCK 结束功能块定义 功能块的示例 例2 某测点为冗余控制 要求当操作员将开关K101打开时 为ON 选择测点1 LI1011 作为单回路LIC101的输入信号 当操作员将开关K101关闭时 为OFF 选择测点1和测点2 LI1012 的平均值作为该回路的输入信号 回路的输出为调节阀LV101 请使用ST语言编写自定义功能块实现该功能 并完成该控制方案 FUNCTION BLOCKCHOICEVAR INPUTIN1 SFLOAT IN2 SFLOAT K BOOL END VARVAR OUTPUTOUT SFLOAT END VARVAREND VARIFK ONTHENOUT IN1 ELSEOUT AVE SFLOAT IN1 IN2 END IF END FUNCTION BLOCK 在FBD段落中调用该模块实现控制方案如下 设置自定义回路0作为该液位控制回路 ST中可调用的函数和功能块 ST语言编写程序语句时可以调用各种模块 如 标准函数 标准功能块 STFUNCTION STFUNCTION BLOCK LD和FBD生成的自定义功能块 标准函数库 算术运算比较运算逻辑运算类型转换数学函数选择函数混合运算 通讯辅助累积辅助折线表运算输入处理 比如 SFLOATADD SFLOAT SFLOATa SFLOATb UINTMOVE UINT UINTa SFLOATINT TO SFLOAT INTa SFLOATMAX SFLOAT SFLOATa SFLOATb 标准功能块库 对于ST语言可用的系统功能块 它们的使用方法与模块库中的功能块的使用方法是一致的 比如 voidSR BOOLS1 BOOLR OUT BOOLQ1 voidBSC SFLOATPV UINTN OUT SFLOATMV 在ST的FUNCTION模块中 可以调用其它STFUNCTION 允许嵌套可以调用标准函数 模块调用限制 可以调用其它STFUNCTION可以调用标准函数可以调用标准功能块可以调用其它ST功能块 不能嵌套 在ST的FUNCTION BLOCK模块中 模块调用限制 可以调用其它STFUNCTION可以调用标准函数可以调用标准功能块可以调用其它ST功能块可以调用各种编程语言生成的功能块 模块调用限制 在TEXTCODE模块中 可以调用其它STFUNCTION可以调用标准函数可以调用标准功能块可以调用其它ST功能块可以调用各种编程语言生成的功能块 模块调用限制 在SFC中的 操作中 TEXTCODE模块应用示例 例6 3 有自定义单回路FIC101 回路序号为0 回路输入位号为FI101 回路输出位号为FV101 当选择开关CH101为OFF时为正常单回路控制 当选择开关CH101为ON时输出调节阀FV101为固定阀位值 即当开关KI101为ON时将调节阀FV101开至50 当开关K101为OFF时将调节阀关闭 请使用ST语言实现该控制要求 BSC FI101 0 FV101 IFCH101 ONTHENIFKI101 ONTHENg bsc 0 SwTV ON g bsc 0 TV 0 5 g bsc 0 SwTV ON g bsc 0 TV 0 0 ELSE END IF END IF 七 自定义功能块的设计与使用 主要内容 概述自定义模块设计与使用 培训什么 概述 在SCCONTROL中可以使用功能块编辑器或梯形图编辑器来设计自定义功能块 从编程角度看 自定义功能块相当于子程序 自定义功能块内部包含了用户定义的程序逻辑 外部则由输入输出变量组成其框架 在自定义功能块内部可引用一个或多个功能块或其他自定义功能块 但其本身不能循环嵌套 作为自定义功能块的外部接口输入输出变量数最大可以定义各32个 基本步骤 首先 新建段落 并选择段类型为 模块 其次 定义该模块的输入输出变量 另外如果需要 也可定义私有变量或全局变量等 再次 根据工艺要求编写该模块的内部算法 可以选择适合的编程元素按算法要求组合在一起 从而实现我们的控制要求 最后 对该段落保存 编译 如果编译成功 则回到组态软件中进行联编 如果出错 则应查找错误 修改程序直至编译成功 自定义模块设计与使用 例1 要求制作一个名为 点灯模块 的自定义功能块 当操作员按下按钮时以固定的时间间隔点亮5盏电灯 自定义模块设计与使用 自定义模块设计与使用 八 程序调试 主要内容 概述调试 培训什么 概述 调试是对编写的程序进行检验的过程 以确保编写的程序满足我们的控制要求 调试分静态调试和动态调试 静态调试 信息栏 出错 信息栏 成功 方法 编译程序 鼠标双击会怎样 动态调试 组态保存 编译 下载连接 调试变量调试 动态调试 例1 实现对PI102的手工置值 动态调试 例2 在以下梯形图程序中对开关量Y5手工置值 打开变量调试窗口添加变量Y5 D5 D6 D7 D8 D9 D10 并观察D5 D6 D7 D8 D9 D10的状态 把Y5置为ON 观察D5 D6 D7 D8 D9 D10的状态变化 调试辅助工具 调试文本 如何实现在调试状态下从一个段落快速切换到其它段落 调试辅助工具 跳转按钮 九 综合编程应用 常见编程应用累积问题BSC模块实现串级控制联锁设计 输入处理 滤波 编程注意事项注释文本乘除运算 主要内容 培训什么 累积量的处理 实现流量累积的两个办法 1 模拟量组态流量累积 常规 2 通过定义8字节变量 用模块Total Accum进行累积 程序实现 方法一 方法二 系统工作时 对位号首先转换成不带量程不带单位的无因次数 也就是说 流量信号首先被转换成0 100 之间的数 由于位号的下限为0 所以直接除以量程即可 TOTAL ACCUM实际上是对这样的一组百分数每秒钟累加一次 流量累积原理 累积的结果放在FQ101中 但是我们需要查看的累积值是需要把每一个流量的瞬时信号还原成实际测量值 所以系统进行处理时 要将累积计算的结果FQ101乘以量程除以系数然后再显示在操作站上 所以请注意 这样的累积模块只能直接使用在流量信号下限为0的场合 举个例子 对FI101进行流量累积并将累积结果存放于FQ101中 其中 FI10150 100m3 h FQ101 自定义8字节 单位m3 首先 设置自定义8字节变量FQ101 量程100 系数3600自定义一个2字节半浮点变量FI 101 量程为0 100 单位M3 h其次 根据公式 FI 101 100 FI101 100 5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论