logo资料库

ifix设计一个手动/自动控制罐体液位控制装置.docx

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
控制工程软件 基于 iFIX 平台的物料计量 控制系统设计及运行仿真 学 院:自动化学院 班 级:0315108 姓 名:周志状 学 号:031510525 教 师:郭彤 日 期:2017 年 10 月
摘要:本报告主要内容为基于 ifix 平台的模拟计量槽液位控制系统,旨在实现 计量槽液位的便捷和自动控制。使用 VBA 脚本对系统工作进行顺序和自动保护的 实现,并呈现监控量的实时变化曲线和临界危险值的报警。 一、控制系统组成介绍 1、控制系统结构及部件 手动 自动 控制结构 执行机构 结果显示 控制器 执行机构 被控对象 结果检测 测量反馈 2、控制目标及功能设计 控制功能设计(以水箱进出液为背景) # 总启动按钮——按下运行,再按下停止运行; # 手动、自动、保护控制功能,均要在系统运行状态下工作; # 运行状态用指示灯显示,灯亮表示运行,灯灭表示停止运行; # 手动/自动切换采用旋钮开关,初始情况为手动; # 罐体默认为圆柱体,底面积 20 平方米; A .手动控制功能 / 手动—自动方式设置于“手动” # 启动或停止进液泵; # 进液速度可调,0-100m3/s ; # 打开或关闭出液阀; # 出液速度根据液位高度计算,满足伯努利流体运动方程; # 但出液阀关闭后,出口流量始终为 0。 B. 自动控制功能 / 手动 – 自动方式设置于“自动” # 自动启动或停止 ; # 进液初始速度 0 ; # 自动调节功能,采用 PID 调节器对液位进行控制,控制液位高度由给定值给
出。 C. 保护控制 # 按动总启动按钮,系统才能工作,系统运行指示灯亮,并且系统初始状态处 于手动控制状态; # 再次按动总启动按钮,系统停止运行,系统运行指示灯灭,并且手自动开关 回到手动状态; # 液位达到 30%以及以上高度,搅拌器自动运行,否则搅拌器关闭 ; # 进液保护阀关闭状态时,进液泵不可开启,并且进料流量为 0 ; # 在自动控制状态下:进液保护功能,即液位达到或高于上限制(例如 90%) 自动关进液泵和进液保护阀; # 在自动控制状态下:出液下限保护功能,即液位达到或低于下限(例如 10%) 自动关出液阀 ; D. 报警 # 只有在系统运行状态下才产生报警。无论手动和自动状态下,下述情况需要 进行报警: # 液位高报警; # 液位高高报警; # 液位低报警; # 进液保护阀自动关闭; E. 监控画面组态 组态内容:控制显示画面、实时趋势画面、报警监视画面、历史趋势画面 ; 3、iFix 仿真平台建立及功能简介 Ifix 是一款功能强大的自动化监视与控制的软件,它可以精确地监视,控制生产 过程,并优化生产设备和企业资源管理。生产的关键信息可以通过 ifix 贯穿从生 产现场到企业经理桌面的全厂管理系统,以方便管理者作出更快速更高效的决策, 从而获得更高的经济效益。 二、控制系统设计过程 1、 控制系统变量定义和数据库定义
2、 调度设计 (1)基于时间项
(2)基于事件项
3、 画面组态(主要介绍控制画面设计) 4. 单元控制编程(如手动控制模块,自动控制模块)/ 相应的脚本 (1)手动控制模块的脚本 ElseIf Fix32.Fix.switch2.F_CV = 0 Then If Fix32.Fix.level1.F_CV > 90 Then Fix32.Fix.switch3.F_CV = 0
Fix32.Fix.pump1.F_CV = 0 End If If Fix32.Fix.level1.F_CV < 10 Then Fix32.Fix.switch4.F_CV = 0 End If V11 = Fix32.Fix.V11 If Fix32.Fix.switch4.F_CV = 0 Then level1 = Fix32.Fix.level1.F_CV Fix32.Fix.V22.F_CV = 0 level1 = level1 + V11 * 0.2 Fix32.Fix.level1.F_CV = level1 Else level1 = Fix32.Fix.level1.F_CV level1 = level1 * 0.8 + (V11 - V22) * 0.2 Fix32.Fix.level1.F_CV = level1 V22 = 5# * Sqr(level1) Fix32.Fix.V22.F_CV = V22 End If (2)自动控制的脚本 If Fix32.Fix.switch2.F_CV = 1 Then If Fix32.Fix.level1.F_CV < 10 Then Fix32.Fix.switch4.F_CV = 0 Else Fix32.Fix.switch4.F_CV = 1 End If If Fix32.Fix.level1.F_CV > 90 Then Fix32.Fix.switch3.F_CV = 0 Fix32.Fix.pump1.F_CV = 0 Else
Fix32.Fix.switch3.F_CV = 1 Fix32.Fix.pump1.F_CV = 1 End If PID_Calculater level1 = Fix32.Fix.level1.F_CV V11 = Fix32.Fix.V11 level1 = level1 * 0.8 + (V11 - V22) * 0.2 Fix32.Fix.level1.F_CV = level1 V22 = 5# * Sqr(level1) Fix32.Fix.V22.F_CV = V22 (3)PID 计算模块 Public Function PID_Calculater() As Single Dim E3, E1, E2 As Single Dim KP, KI, KD As Single Dim Result As Single Dim dOUT As Single Dim SP, PV As Single SP = Fix32.Fix.SETLEVEL1 PV = Fix32.Fix.level1 E1 = SP - PV E2 = Fix32.Fix.E2 E3 = Fix32.Fix.E3 KP = Fix32.Fix.KP KI = Fix32.Fix.KI KD = Fix32.Fix.KD dOUT = KP * (E1 - E2) + KI * E1 + KD * (E1 - 2# * E2 + E3)
分享到:
收藏