刘立新 ,苏 锋 ,肖仕红,陈 斌,张汝彬,杨 安,徐著华
(1.海洋石油工程股份有限公司,天津 300451;2.西南石油大学 机电工程学院,四川 成都 610500;3.四川海洋特种技术研究所,四川 成都 610043)
随着海洋油气勘探开发从浅海发展到深水甚至超深水域,越来越多的海上油气田采用水下生产系统开发。水下生产系统开发属于高风险和高技术领域,开发过程中几乎不能容忍失败,否则代价极其高昂[1]。作为一个复杂的系统工程,单靠传统设计难以进行整体分析和评估,需借助计算机仿真技术实现系统设计和优化设计;此外,随着水下控制路径的不断增加,传统的测试难以模拟真实的控制系统和测试环境,无法准确验证到货系统的性能,需借助仿真测试验证[2-3]。目前,中海油、浙江大学、中国石油大学等研究机构主要利用AMESim 软件或SimulationX 软件进行水下液控系统的仿真研究[4-7]。AMESim 软件无专门的水下液压元件库且软件设计过程繁琐,为此,中海油和浙江大学联合对AMESim 软件进行了二次开发。开发者根据水下生产系统特点,在AMESim 软件中将水下生产相关的液压元件整合成独立的模块并封装,建成水下液压元件库,并设计VB接口程序,从而开发出了专业的设计软件平台。但其开发工作量大,且相关开发软件仅为少数研究者掌握。SimulationX 软件是一款具有专门的水下仿真环境和相关水下液压元件库的仿真软件,但该软件人机交互性差,数据存取不方便,且专业化程度高,再加上SimulationX 仿真软件目前在国内应用较少,相关参考资料欠缺[8]。这对于水下液压系统设计人员,特别是测试人员来说,很难掌握或工作量大。
为了让更多人员方便进行水下生产设备的设计或测试工作,或者能把精力集中在设计和测试工作本身,本研究针对SimulationX 软件和VC 软件的特点,研究出基于VC 的SimulationX 软件二次开发方法,并将其应用在水下液控系统中。
SimulationX 软件采用功能模块化建模策略、支持通用的建模语言Modelica和具有开放的外部接口,其接口使SimulationX 的模型与CAD、CAM、CAE 等软件兼容。同时能提供模型导出功能,整个SimulationX 模型能以C 代码形式导出,并可生成独立的可执行文件、具有固定文件名及文件类型的模型参数文件(parameters.txt)、仿真控制参数文件(solversettings.txt)和仿真结果文件(Outputs1.txt)。所生成的可执行文件能够在无SimulationX 软件环境下运行。
然而,SimulationX 软件建模及其参数设置需要较强的专业知识;同时,仿真模型参数众多,而SimulationX 软件中只默认一个输入值,若与默认值不同,则需手工输入,当被设计设备或被测设备的参数重复出现时易造成操作繁琐,重复工作量大;此外,软件输出的结果文件以数值形式保存,不便于直观展现结果变量的动态性能,且不便于文档后期查阅、分析。
Visual C++是当前应用最广泛的开发软件之一,具有优秀的界面设计和强大的数据处理和存取功能,开发出的程序可移植能力强。VC 软件的优势可以用于弥补SimulationX 软件的缺陷。因此,可通过VC 软件进行SimulationX 软件的二次开发,编制出有系统针对性的仿真分析或测试软件。
本研究通过分析SimulationX 软件和VC 软件特点,确定基于VC 的SimulationX 软件的二次开发流程如图1 所示。
图1 软件二次开发流程图
不同油气田,其水下液控系统不同,但基于SimulationX 二次开发的方法相同。本研究以分析水下基本液控系统中水下闸阀执行器的压力特性来优选执行器参数为例,进行SimulationX 二次开发设计。
水下液控系统主要有直接液压式控制系统、先导式液压控制系统和复合电液控制系统三大类。其中,最复杂且深海开采中最常用的是复合电液控制系统,其液压控制原理[9]为:液压动力单元(HPU)出口的液压液通过水面控制缆终端(TUTA)进入脐带缆后到达水下分配单元,通过水下液压分配单元分配后传输到各生产设施上的水下控制模块(SCM)(或再通过分支脐带缆输送至下一个水下分配单元后再传输到SCM),然后由SCM 引出的液压管线控制水下执行器的运动,再通过执行器控制对应的水下阀门的启闭。不同的油气田开发,其控制距离、水下井口布置、远程控制阀门数等都不同,但其水下液控系统都是唯一的。不过,相同水下井口布置和远程控制阀数可以建立相同的仿真模型。根据水下液控系统和建模的特点,水下液控系统仿真模型实际上是由基本液控系统模型[10](该模型如图2 所示)与分支模块组成。图2 中,基本液控系统模型包括HPU、节流阀(除了表示节流阀本身外,还可以用来表述液阻模型,如过滤器、接头、弯头等,TUTA、水下分配单元也可简化为节流阀单元)、脐带缆、水下蓄能器、水下电磁阀、水下阀和连接管线组成。复杂的液控系统只需在基本液控模型上增加水下蓄能器、水下电磁阀和水下阀等分支模块。
图2 水下基本液控系统模型
本研究在SimulationX 软件里建立了水下基本液控系统模型和设置完初始参数后,下一步需进行C 代码输出设置。开发的关键步骤如下:
(1)在SimulationX 菜单Export(输出)命令中单击“C-Code”(C—代码)命令,则弹出的Code Export Wizard(代码输出向导)操作界面如图3 所示。
图3 Code Export Wizard 界面
(2)确定Project Type(工程类型)。SimulationX软件可输出14 种工程类型,以满足不同应用软件和硬件的需求。本研究选用“Executable Model”(可执行模型)工程,该工程可输出带求解器的C 代码源程序,源程序经过编译后生成可执行文件。
(3)设置Project 界面内容。图3 中,最左侧列举出了该工程实现C 代码输出所需完成的主要操作,中间部分则为工程类型,最右侧主要由用户根据测试需要确定的工程名称、工程输出路径、求解器类型和数据输出方式。SimulationX 提供了Sundials CVODE(外部求解器)、ITI Fixed-Step Solvers(固定步长求解器)和ITI Standard Solver(ITI 标准求解器)3 种求解器。外部求解器适用于没有太多中断的刚性模型,与其他求解器相比,求解速度更快;固定步长求解器主要用于测试模型的实时性能,用于实时仿真;ITI 标准求解器适用于非刚性和刚性模型,相对外部求解器,更适用于含有中断的模型,计算的准备较快,但计算比外部求解器稍慢。数据输出方式选择框中有7 种方式,包含Save all(所有数据)、Save equidistant(等最小输出步长)、Last Value(最后结果)等方式。该实例设置的Project 界面内容如图3 所示,其工程名称为“fangzhen”,求解器为“ITI Standard Solver”,数据输出方式为“Save equidistant”。
(4)Inputs(动态参数输入)界面内容不适用于本工程类型,该界面不需设置,直接进入下一界面。
(5)设置Outputs(结果输出)界面内容,该界面如图4 所示。图4 的Elements(单元)框中列举出了仿真模型中所有单元能动态输出结果的变量,用户可通过双击对应变量或鼠标拖曳到Selection(选择框)里,以确定仿真最终输出的结果变量。该界面列举出的所有参数(未含表达式)都可被选择,选项数不受限,但实际选择的参数由本研究所关心的对象确定。该实例主要研究水下闸阀执行器的压力特性,则需选择SCM 蓄能器压力、执行器开启腔压力、执行器关闭腔压力和执行器位置作为输出的结果变量。
图4 Outputs 界面
(6)设置Parameters(参数输出)界面内容。Elements 框中列举出了仿真模型中能参数化的所有参数,同Outputs 操作一样,通过双击对应变量或鼠标拖曳到Selection 里。二次开发的仿真模型是固定模型,水下液控设备设计中需优化的参数和测试系统中有变化的参数都需列举在选择框里。该实例的目的是优选执行器参数,则选择执行器参数作为Parameters 中的参数。在执行第7 步前,需为所有仿真参数赋初始值,Parameters 定义外的参数值固化在仿真模型中(该实例中水下液控系统的主要参数[11]如表1 所示)。
(7)完成了前面的设置后,点击Code Generation(代码生成)命令。可以观察到,在输出目录下产生了大量相关文件,这些文件可用于在目标平台上的进一步处理,如编译,链接等。其中,源代码文件fangzhen.c包含了仿真模型的所有信息,Parameters.txt 记录了Parameters 界面中选择框里的参数符号及其赋值(Parameters.txt 文件内容如图5 所示,其参数初始值设置主要参考文献[4]和SimulationX 软件默认值,其数值单位为Parameters.txt 文件默认单位,如长度单位为m,压强单位为Pa),solversettings.txt 记录了仿真控制参数中的相关信息。
表1 水下液控系统主要参数
图5 Parameters.txt 文件内容
(8)生成可执行文件和仿真结果文件。计算机中需安装VC 软件作为开发平台,将源代码文件编译为可执行文件。有两种编译方法:第一种方法:如计算机中已安装VS2010 软件,则在“Complier”(编译器)中选择“Microsoft Visual C/C++2010”(支持从VC6 到VC2010 的所有版本),再点击“Build”(编译)则可生成可执行文件,之后点击“Run”(运行),则生成的可执行文件自动调用包含Parameters.txt和solversettings.txt 文件,并生成Outputs1.txt 文件,记录Outputs 中选择框里确定的参数的动态变化值。第二种方法:直接打开Code Generation 命令生成的fangzhen.dsw 工程文件进入编译平台,调试编译为可执行仿真程序,再运行产生Outputs1.txt 文件。
因可执行文件在每次运行时都会调用模型参数文件和仿真控制参数文件,同时会产生或更新仿真结果参数文件。因此,笔者可通过修改模型参数文件和仿真控制参数文件参数值来完成不同设计参数的优化或不同的测试系统。VC 操作软件至少包括仿真数据输入、仿真运行和仿真结果输出3个功能模块,其模块对话框的设置需参照C 代码输出设置进行。
2.3.1 仿真数据输入模块设置
仿真数据输入模块输入框的设置由C 代码输出的模型参数文件和仿真控制参数文件界定,包含文件中所有参数的输入,可通过多个对话框分类实现。同时,对话框内设置“保存”命令,当用户点击“保存”命令时,VC 更新同一文件夹的模型参数文件和仿真控制参数文件内相应参数的数值。此外,软件建立测试件模型库,之前输入过的测试件参数可以直接整体调入到数据输入框中,以减轻输入工作量。
2.3.2 仿真运行模块设置
VC 软件通过ShellExecute 函数来调用可执行文件并运行,其调用命令为:
ShellExecute(NULL,_T(" open"),(FilePath1),NULL,(FilePath2),SW_SHOWNORMAL)
其中:FilePath1—可执行文件路径,FilePath2—仿真结果输出路径。系统通过调用命令驱动可执行文件运行,并读取同目录下的Parameters.txt 文件和solversettings.txt 文件,运行完成后在指定位置输出或更新仿真结果文件。
2.3.3 仿真结果输出模块设置
本研究在仿真结果输出模块中设置图形框,以显示由SimulationX 软件的Outputs 命令界定的结果变量曲线。同时设置有“图像保存”按钮,实现图像的单独保存。系统可根据用户需求设置多个仿真结果输出界面,以便于分析对比。该实例仿真结果输出界面可用于设置仿真结果输出界面(同时显示SCM 蓄能器压力、执行器开启腔压力、执行器关闭腔压力和执行器位置曲线)和结果变量的多状态单参数曲线输出界面。
此外,二次开发软件设置“结果保存”对话框,可以将与设计或测试相关的信息,如时间、对象、结果等信息以文字或图片的形式保存在Word 文档里,方便文档后期查阅、分析。
本研究按照2.2 节和2.3 节所研究的开发方法,开发出该实例的二次开发仿真软件。操作者打开仿真软件,在仿真数据输入操作界面默认执行器参数值和默认或修改仿真控制参数,然后点击仿真运行操作按钮,待仿真运行结束后,进入仿真结果输出操作界面。可选择仿真结果输出命令,操作界面上显示本实例当前执行器参数下水下闸阀执行器的压力特性(仿真结果输出界面如图6 所示)。
图6 仿真结果输出界面
其曲线变化趋势与参考文献[4]基本一致。操作者可通过分析所获取的曲线特点判断水下闸阀执行器参数是否满足水下液压系统的要求。
此外,还可通过在仿真数据输入操作界面上变换执行器参数值,来优选执行器参数。如,修改执行器弹簧预紧力大小,可获取不同弹簧预紧力下执行器的压力特性,不同弹簧预紧力下执行器的位置曲线如图7所示。从图7 中可以看出,在预紧力小于50 kN 时,执行器不能完全关闭;预紧力大于160 kN 时,执行器不能打开;预紧力在50 kN~160 kN 之间时,执行器能够完全打开并且完全关闭。则通过执行器位置曲线初步确定弹簧预紧力取值区间为50 kN~160 kN。从图7 中还可以看出,随着预紧力增大,执行器开启时间变长,关闭时间缩短。再结合软件生成的压力曲线和弹簧疲劳寿命分析,则可快速优选出弹簧预紧力。同理,还可以修改其他执行器参数并分析相应结果曲线,实现参数优选。
图7 不同弹簧预紧力下执行器的位置曲线
鉴于SimulationX 软件是一款具有专门的水下仿真环境和相关的水下液压元件库的仿真软件,及其所具备的C 代码输出特性,结合VC 软件强大的界面设计和数据处理能力,笔者研究出了利用VC 软件进行SimulationX 软件的二次开发方法,并编制了二次开发流程。
本研究以水下液控系统仿真为例,明确了SimulationX 软件输出文件的操作步骤,以及VC 三大功能模块的设置内容和方法,并进行了实例应用。其开发方法简单、易行,开发出的软件操作方便且易为一般人掌握,有助于水下生产设备的设计人员或测试工作人员的高效运用,加速水下生产装备的国产化或安全运行。
[1]余国核,周美珍,程寒生.水下执行器液压控制仿真[J].机床与液压,2010,38(11):116-118.
[2]周美珍,程寒生,余国核,等.水下生产复合电液控制液压仿真分析研究[C]//第十四届中国海洋(岸)工程学术讨论会论文集.北京:海洋出版社,2009:425-428.
[3]张 涛,刘立新,刘冬冬,等.基于AMESim 的深水液压控制仿真分析研究[C]//第十五届中国海洋(岸)工程学术讨论会论文集.北京:海洋出版社,2011:602-605.
[4]周美珍,程寒生,余国核.水下执行机构的液压控制研究[J].中国海洋平台,2009,24(3):31-34.
[5]李华凤,顾临怡,李 林.应用于水下生产系统的控制阀设计与仿真[J].轻工机械,2010,28(4):51-53.
[6]周美珍,高 明,王宇臣,等.水下生产设施液压控制仿真系统[J].机电工程,2012,29(12):1414-1418.
[7]胡雪峰,封延松.电液复合式控制系统的组成及分析工况[J].中国造船,2012,53(S1):189-199.
[8]刘艳芳.SimulationX 精解与实例[M].北京:机械工业出版社,2010.
[9]周美珍,张维庆,程寒生,等.水下生产控制系统的比较与选择[J].中国海洋平台,2007,22(3):47-51.
[10]德国ITI 有限公司.Simulation of subsea control systems[EB/OL].[日期不详].http://www.iti.de/fileadmin/EN/ressources/application_sheets/App_Subsea_Control_Systems.pdf.
[11]李华凤.近海油田水下生产设施液压控制系统设计及仿真研究[D].杭州:浙江大学机械工程学系,2010.