1、1 中 国计量 大学现 代科技 学院 实 验报告 实验课程:工业应用软件 实验名称: 力控组态软件动作脚本应用 班 级:自动化* 学 号:* 姓 名:JackNi 实验日期:2018.12.20 1. 实验原理 与实验内 容 1.1. 实验原理 力控提供了动作脚本编译系统以给用户提供最大的灵活性和能力。 具有自己的编程 语言,语法采用类 BASIC 的结构 。这些程序设计语言,允许在力控的基本功能的基础 上, 扩展自定义的功能来满足用户的要求。 力控的动作脚本语言功能很强大, 可以访问 和控制所有组件, 如实时数据、 历史数据、 报警、 报表、 趋势和安全等; 同时, 用户通 过这类脚本语言,
2、可以实现从简单的数字计算到用于高级控制的算法的功能。 力控中动作脚本是一种基于对象和事件的编程语言。 每一段脚本都与某个对象或触 发事件紧密关联, 利用开发系统编译完的动作脚本, 可以在运行系统中执行。 运行系统 通过脚本对变量、函数的操作,可以完成对现场数据的处理和控制,进行图形化监控。 动作脚本往往是与监控画面相关的一些控制,主要有以下类型: 1.窗口脚本:可以在窗口打开时执行、窗口关闭时执行或者窗口存在时周期执行; 2.应用程序脚本:可以在整个工程启动时、关闭工程时或者在运行期间周期执行; 3.数据改变脚本:当指定数据发生变化时执行; 4.键脚本:当按下键盘上某一个按键时执行指定动作;
3、5.条件脚本:当指定的条件发生时执行的动作。 本实验利用力控软件的图形界面开发与动作脚本应用相结合,完成实验既定内容。 注:因为本实验是建立在实验 2 的 基础上的,因此本实验与实验 2“力控组态 软件基本功能使用”有部分功能相似。 1.2. 实验内容 1、设计三级液位监控系统软件主界面中的主要脚本动作,脚本动作应包括: 图形对象动作脚本 数据改变动作脚本 键动作脚本 2 条件动作脚本 2、用脚本模拟实现液位的周期变化,从 0-100。 3、用脚本模拟实现温度控制,要求: 设定值为 100,误差5 实现控制算法(本实验实现了 PID 控制) 显示设定值 输出值曲线 实测值人工游标模拟 4、自定
4、义函数的创建及调用 2. 实验环境 2.1. 硬件环境 PC (OS:windows10 professional ) 2.2. 软件环境 ForceControl V7.2 3. 实验过程 及现象 3.1. 三级液位系 统 关于程序的进入界面,实验 2 已有基础界面,在本实验中扩展界面,见图 3-1。 图 3-1 进入 界面 3 建立基础三级液位监控系统, 由实验 2 “力控组态软件基本功能使用” 可见图 3-2。 图 3-2 基础 三级液位 监 控系统 3.1.1. 新加入图形 以及放置于 适当位置 在建立数据之前, 先介绍一下工程的情况, 本工程 1 是一个三级液位系统的进一步 搭建,在
5、实验 2 的基础上,新的要实现的功能是: 1、脚本类型包含: 图形对象动作脚本(应用于液位、罐体、方框图等) 数据改变动作脚本(应用于罐 3 液位的颜色,罐 3 液位改变将改变颜色) 键动作脚本(应用于 4 阀门的开关与挡位的切换) 条件动作脚本(应用于 4 阀门、模式的指示灯) 2、用脚本模拟实现液位的周期变化,从 0-100(本要求在罐 3 中实现)。 表 3-1 三级 液位监控 系 统变量名 安排 表 变量名 描述 变量类型 L3CtrlMod 三级液位系统自动/ 手动选择 数据库实时变量 win_LLS_T1_value1 液罐 1 的水位 窗口中间变量 win_LLS_T2_valu
6、e1 液罐 2 的水位 窗口中间变量 win_LLS_T3_value1 液罐 3 的水位 窗口中间变量 win_LLS_K0 1 级阀门(被 key_ctrl_K0 替换) 窗口中间变量 win_LLS_K1 2 级阀门(被 key_ctrl_K1 替换) 窗口中间变量 win_LLS_K2 3 级阀门(被 key_ctrl_K2 替换) 窗口中间变量 win_LLS_KOUT 排水阀(被 key_ctrl_Kout 替换) 窗口中间变量 4 T3_up 罐 3 液位上升的标志 窗口中间变量 iter_x_value 旋钮操作块的 x 中间变量 iter_y_value 旋钮操作块的 y 中
7、间变量 iter_x0_value 旋钮操作块原点 x 中间变量 iter_y0_value 旋钮操作块原点 y 中间变量 iter_angle_T3_value 旋钮操作块与 x 正半轴的夹角值 中间变量 iter_angle_Tower 塔旋转角度 中间变量 dx_bar 水平移动的水罐的值的大小 中间变量 dy_bar 垂直移动的水罐的值的大小 中间变量 data_chg_T3_val 罐 3 液位(数据改变脚本变量) 中间变量 flag_up 颜色加时的标志 中间变量 key_ctrl_K0 阀门 1 的按键和条件脚本变量 中间变量 key_ctrl_K1 阀门 2 的按键和条件脚本变
8、量 中间变量 key_ctrl_K2 阀门 3 的按键和条件脚本变量 中间变量 key_ctrl_Kout 排水阀的按键和条件脚本变量 中间变量 L3_auto_mod 三级液位自动挡模式 中间变量 L3_man_mod 三级液位手动挡模式 中间变量 按照表 3-1 创建变量,定义变量步骤与实验 2 相类似,不再重复介绍。 窗口变量创建见图 3-3; 中间变量创建见图 3-4,工 程 2 中的变量部分亦参考图 3-4。 数据库变量见图 3-17。 图 3-3 三级 液位监控 系 统窗口中 间 变量 5 图 3-4 全局 中间变量6 图形的组合结果见图 3-5。 其中左 半部分为三级液位控制系统
9、的罐体组成部分, 右 半部分为三级液位控制系统的控制和指示部分,有: 1、实现罐 3 旋转角度控制液位与液位高度控制旋转角度、水平、垂直平移度功能 的操控器件; 2、选择自动/ 人工控制系统的拨动选择开关; 3、4 个阀门与模式选择的情况指示。 图 3-5 三级 液位监控 系 统界面图 形 给每个罐子、 阀门、 文字对象、 其他对象设置相应的动作和变量连接, 或者动作脚 本,实现以下功能(详见实验内容,在此不详细列举): 1、三级液位系统能实现简 单的给水功能,其中水源假设无穷,且每个阀门一旦有 水经过流速恒定(定为 10)。且除了罐 1,罐 2、3 的被给与否有除了阀门外,与上一 级水罐的水
10、位有关(大于 0 才能留予下一级),且所有罐子的最大水位为 100。 2、罐子的手动调节:罐 1 可通过直接拉升液位实现液位控制;罐 2 可以通过输入 液位数值直接控制;罐 3 可以通过画面右边的旋杆调节液位。 3、罐子的自动调节: 罐 3 可以通过直接切换成自动模式, 实现较为科学的液位 0-100 的往复循环。 其中, 液 位自动上升时, 阀 1-3 全开, 出水阀关; 液位自动下降时, 阀 1-3 全关,出水阀开。 3.1.2. 外部设备编 程 1 、图形对象动 作脚本 在“ 功能” 中 “动作” 下的“窗口动作” 脚本编辑器中, 写入程序代码, 如图 3-6 所示为窗口动作进入脚本;
11、图 3-8 为窗口动作运行周期执行脚本; 图 3-7 为窗口动作退 出脚本。 其中,“用 脚本模拟实 现液位的周 期变化, 从 0-100 ” 的实验内容 见图 3-8 ,窗 口7 动作运行周期执行脚本。 “自定义 函数的创建及调用” 同见图 3-8, 子函数具体见下文。 图 3-6 窗口 动作进入 窗口 脚本编 辑 图 3-7 窗口 动作退出 窗 口动作脚 本 8 图 3-8 窗口 动作程序 运 行周期执 行 脚本编辑 9 2、数据改变动 作脚本 应用于罐 3 液位的颜色, 罐 3 液位的每一次改变都将改变液柱颜色, 且颜色将有自 己的“上升”、“下降”周期,避免因为索引超出而只有白色。 图
12、 3-9 为代码: 图 3-9 数据 改变动作 脚 本 3、条件动作脚 本 应用于阀门 1-3、出水阀门的开关与自动/ 手动挡位切换的指示。 其中阀门 1-3、自动挡指示的指示灯为青蓝色;出水阀的指示为紫红色;手动挡指 示的指示灯为黄色。 阀门 1 的代码见图 3-10, 其他阀门类似, 出水阀为简便起见未使用条件动作脚本。 自动模式的条件动作代码见图 3-11 ,手动模式的条件动作脚本类似。 10 图 3-10 三级 液位监控 系 统阀门 1 条 件动作脚 本 代码 图 3-11 三级 液位监控 系 统自动模 式 条件动作 脚 本代码 11 4、键动作脚本 应用于阀门 1-3、排水阀的开关与
13、挡位的快捷键切换。 其中阀门 1 开/ 关切换的快捷键为:CTRL+A ; 其中阀门 2 开/ 关切换的快捷键为:CTRL+B ; 其中阀门 3 开/ 关切换的快捷键为:CTRL+C ; 其中排水阀开/ 关切换的快捷键为:CTRL+Q ; 其中手动/ 自动模式切换的快捷键为:CTRL+M 。 阀门 1 开/ 关切换的键动作脚本见图 3-12,其他阀门的键动作脚本类似。 图 3-12 三级 液位监控 系 统阀门 1 键动 作 脚 本代码 手动/ 自动模式切换的键动作脚本见图 3-13,自动/ 手动模式切换键动作脚本类似。 图 3-13 三级 液位监控 系 统功能键 动 作脚本代 码 5、自定义函
14、数 的创建及调 用 本实验内容体现在将实验 2 中的坐标转换角度部分使用子函数代替, 减少主函数的 脚本视觉长度,有效提高阅读效率。 自定义函数创建界面见图 3-14,自定义函数的脚本编辑页面见图 3-15。 12 图 3-14 三级 液位监控 系 统自定义 函 数创建界 面 图 3-15 三级 液位监控 系 统自定义 函 数脚本编 辑 界面 13 3.2. 基于 PID 算法的模拟 实现温度控 制 3.2.1. 图形界面设 计 模拟实现温度控制系统界面见图 3-16。 图 3-16 模拟 实现温度 控 制系统界 面 图 从界面上来看,左半部分为控制区域,右半部分为显示区域。 在控制区域中,有
15、: 1、滑动/ 数字输入改变设定值的组件; 2、实际值显示(或用来设定制造人为的扰动)的组件; 3、P (比例系数)、I (积分系数)、D (微分系数)调节组件。 在显示区域中,有实时温度显示曲线,其中: 1、红线为设定值; 2、紫线为实际值。 在建立数据之前, 先介绍一下工程的情况, 本工程 2 是一个基于 PID 算法的模拟实 现温度控制系统,要实现的功能是: 设定值为 100,误差5 实现控制算法(本实验实现了 PID 控制) 显示设定值 输出值曲线 实测值人工游标模拟 表 3-2 温控 系统 的 变量表 变量名 描述 变量类型 TmptSet.PV 温度设定值 数据库实时变量 14 T
16、mptActl.PV 温度实际值 数据库实时变量 Kp 比例系数 数据库实时变量 Ki 积分系数 数据库实时变量 Kd 微分系数 数据库实时变量 err 实际与设定之差值 窗口中间变量 Integral 积分计算值 窗口中间变量 PID_value PID 计算值 窗口中间变量 err_last 前一次差值 窗口中间变量 circle 循环次数记录 窗口中间变量 accuracy_rate 实际温度准确率 窗口中间变量 按照表 3-2 创建变量,数据库变量见图 3-17。窗口变量见图 3-18。 图 3-17 实时 数据库变 量 图 3-18 温控 系统窗口 中 间变量 中间变量详见图 3-4
17、。 实验在 TmptCtrlWin 窗口下进行。 15 3.2.2. 外部设备编 程 在“ 功能” 中 “动作” 下的 “窗口动作” 脚本编辑器中, 写入程序代码, 如图 3-19 所示为窗口动作进入脚本;图 3-20 为窗口动作运行周期执行脚本。 图 3-19 模拟 温控系统 窗口 进入动 作 脚本编辑 16 图 3-20 模拟 温控系统 窗 口运行动 作 脚本编辑 3.3. 实验现象 进入系统,如图 3-21 所示,单击选择进入各系统界面。 17 图 3-21 主界 面预览 3.3.1. 三级液位系 统 进入三级液位控制系统,弹出进入提示窗口,见图 3-22。 图 3-22 三级 液位控制
18、 系 统提示窗 进入三级液位界面,见图 3-23。此时手动指示灯亮。 图 3-23 三级 液位控制 系 统进入界 面 18 手动打开阀门 1、2、3,见图 3-24。此时阀门 1-3 与手动指示灯亮。 图 3-24 三级 液位控制 系 统手动操 作 将功能选择开关拨到自动 “Auto ” 挡, 由于罐 3 水未满, 阀门 1-3 自动打开, 排水 阀保持关闭,见图 3-25。此时阀门 1-3 指示灯亮,自动挡指示灯亮。 图 3-25 三级 液位控制 系 统自动操 作 () 当罐 3 液 位到 100% 时,由于处在自动挡,阀门 1-3 自动关闭,排水阀开启排水, 见图 3-26。此时阀门 1-
19、3 指示灯灭,排水阀指示灯亮,自动挡指示灯保持亮。 由于数据改变执行脚本对罐 3 液位的影响, 罐 3 每次的液位改变都会引起其液位颜 色的改变,具体变化可以通过对比上下的图得知。 19 图 3-26 三级 液位控制 系 统自动操 作 () 关闭三级液位控制系统窗口,弹出提示窗,见图 3-27。 图 3-27 退出 三级液位 系 统窗口弹 窗 3.3.2. 模拟温 控 系统 进入模拟温控系统,界面如图 3-28。 左侧控制区已显示事先确定的较为优良的 PID 参数 (注: 由于是温度控制, 为防止 短时间的第一个实际温度的波峰和波谷与设定温度相差太多, 故 P 系 数较小, 系统调节 存在一定
20、的滞后性,符合现实的温控情况)。 20 图 3-28 模拟 温控系统 进 入界面 使用设定温度的滑条,滑到任意值,如图 3-29 所示。 可见实际温度曲线振荡收敛,并最终趋于设定值,准确率也慢慢逼近 100% 。 图 3-29 模拟 温控系统 操 作() 实际温度曲线稳定后,与设定值一样,见图 3-30。准确率为 100% 。 此时通过输入设定温度值 100。 21 图 3-30 模拟 温控系统 操 作() 当将设定值设置为 100时,曲线如图 3-31 所示。实际温度曲线随滞后响应,但 振荡波动的幅度并不大,且很快与设定温度一致,准确率达到 100% 。 图 3-31 模拟 温控系统 操 作
21、( )22 4. 实验总结 4.1. 实验的亮点 软件的安装和使用没有遇到过多的问题, 软件本身良好的性能和较为友善的新手帮 助指导起到了比较显著的作用。 在三级液位系统和时钟系统中较多地使用了中间转换过程,比如: 三级液位系统罐 1 中的液位拖动控制, 使用外加的细线的平移拖动控制变量, 将液 位同变量连接,从而达到鼠标拖动即控制液位的效果; 在三级液位系统和时钟系统的角度和百分比值的转化中, 则加入了点的图元, 通过 计算相对距离、 求解反三角函数得到角度, 再化为百分比大小。 而值大小的改变也可反 过来,变为角度,呈现出来,实现了液位改变,角度转向改变;改变转向,液位改变; 时间改变、角
22、度改变等等的视觉效果。 特别的, 实验 3 与实验 2 相比, 使用了更多丰富的变量类型和动作脚本类型, 将脚 本丰富化、多元化。 4.2. 实验的不足 使用了集成的模块,扩展性的问题是不能忽视的。 可以通过像增加中间量转化等等的迂回方法, 或者是更新新功能实现。 这是一个长 久存在的,需要一步一步克服的问题。 软件的美观度有待提高, 可能需要设计师进行后期设计, 或精心设计出简介、 美观、 大方、便捷的界面。 4.3. 实验的改进 和推广 可以在软件的人性化上加以提高,增强人机交互的简易型。 除了本实验的仿真液罐外, 亦可以用在其他工业、 工程中, 能更好地为开发、 管理 整个工程系统的运行
23、提供便利。 5. 实验思考 ( 包含实 验报告要 求与思考题 ) 1、简要说明动作脚本的定义及应用 动作脚本的定义: 工程项目导航栏中动作树下可以创建应用程序动作、 数据改 变动作、按键动作、条件动作。选择菜单命令“功能S动作”或者选择工程项目的 树形菜单中的“动作”子节点都可以创建各种动作脚本,见图 5-1。 23 图 5-1 动作 脚本的创 建 动作脚本的应用: 动作脚本语言支持赋值、 数学运算等基本语法, 也可以书写 由IF-ELSE-ENDIF 等语句构成的带有分支结构的程序脚本。主要由以下部分组成 变量和常数 操作符 表达式:关键字、运算符、变量、字符串常数、数字或对象的组合。 赋值
24、语句 条件语句 多分支语句 循环语句 注释 函数 个人理解, 力控的图形动作中, 图形和相关变量相连接, 起到相辅相成的控制作用, 而脚本简单说,主要是通过操作变量来达到控制图形动作的目的。 2、简要说明预设函数的调用及自定义函数的创立 预设函数的 调用:预设 函数调用, 语法为“函 数名( 一个 或多个参数) ”,如数 学函数 Abs ,语法为 abs(number) ,功能为返回 number (实型参数或任何有效的数值表 达式)的绝对值。 创建自定义函数:双击“工程项目”导航栏“全局脚本”“自定义函数” (见图 5-2),弹出自定义函数设置对话框,如图 3-14 和图 3-14 所示。
25、图 5-2 自定 义函数 24 3、简述动作脚本在监控软件中的应用 动作脚本主要有: 窗口脚本、 应用程序脚本、 数据改变脚本、 键脚本、 条件脚 本,具体的介绍在本实验开头便已写出。 运行系统通过脚本对变量、函数的操作,可以完成对现场数据的处理和控制, 进行图形化监控。 4、简述自定义函数中传值与传地址的区别 传值方式: 参数传递方式为数值, 可为变量、 对象属性和 常量。 调用该函数时, 系统生成一个临时变量 记录当前参数的数值, 同时在函数中调用该参数时实际调用的是 该临时变量。 即, 如果 在函数中改变该参数的 数值将不会 对传入参数 起作用 , 在 函数调 用返回后参 数的数值没 有变化 。 传地址方式: 参数传递方式为传递参数变量的地址, 可为变量和对象 属性,在 自定义函数体内当对该参数操作时可以理解为对调用自定义函数是设置的变量或对象 属性操作。 调用该函数时, 参数把其自身的地址传入, 在函数体内对该参数的操作相当 于对调用参数的操作, 调用返回后 , 函数体内 改变的数值 生效, 传地 址方式下不能直接 传数值。 区别: 传值方式传递的参数可以为: 变量、 对象属性和常量, 且改变参数数值 只改变临时记录变量, 不会对传入的参数起作用, 返回后参数的数值没有变化; 传地址 的参数为变量和对象属性,不能直接传数值,且返回后函数体内改变的数值生效。