原 璐 ,崔 雋
(海工英派爾工程有限公司,山東青島 266061)
PRO/Ⅱ是一種通用的化工過程模擬、優(yōu)化和設(shè)計(jì)軟件。PRO/Ⅱ可以對(duì)各種化工過程進(jìn)行嚴(yán)格的質(zhì)量和能量衡算。它的應(yīng)用包括:設(shè)計(jì)新的工藝過程;評(píng)價(jià)和比較可供選擇的工藝方案;改造現(xiàn)有的工藝;操作故障分析和打破裝置操作的瓶頸;優(yōu)化和改善裝置的產(chǎn)量和效益;評(píng)價(jià)與環(huán)境的適應(yīng)性等。
一個(gè)模擬軟件的產(chǎn)生有其限制,隨著時(shí)間的推移及理論研究的進(jìn)展,必須將新的設(shè)計(jì)思想與理論研究成果融入到系統(tǒng)內(nèi),不斷擴(kuò)充和更新其內(nèi)容以提高系統(tǒng)的性能。這項(xiàng)工作不僅是軟件開發(fā)者的任務(wù),用戶也應(yīng)當(dāng)參與進(jìn)來,運(yùn)用他們所掌握的知識(shí)和經(jīng)驗(yàn),進(jìn)行軟件的二次開發(fā)。同時(shí),由于某些化工生產(chǎn)過程的復(fù)雜性和具體性,模擬軟件現(xiàn)有的功能模塊不可能模擬所有的實(shí)際過程,這也要求用戶根據(jù)實(shí)際過程自行開發(fā)用戶模型,并將模型添加到軟件中去,結(jié)合軟件已有的數(shù)據(jù)庫和功能模塊來進(jìn)行模擬。而軟件開發(fā)者應(yīng)向用戶提供這樣一個(gè)二次開發(fā)接口。PRO/Ⅱ就向用戶提供了這樣一個(gè)接口,用戶可以利用它將用戶模型添加到PRO/Ⅱ體系中,在其系統(tǒng)框架中使用。該接口賦予PRO/Ⅱ極大的擴(kuò)展能力,而且有助于保護(hù)用戶已有的開發(fā)成果。
PRO/Ⅱ的用戶模型使用Fortran語言開發(fā),本文將對(duì)PRO/Ⅱ二次開發(fā)方法進(jìn)行探討,給出其開發(fā)步驟和方法,說明用戶模型規(guī)范及PRO/Ⅱ系統(tǒng)對(duì)用戶模型的調(diào)用方式,并將舉一個(gè)用戶模型實(shí)例來說明該方法。
PRO/Ⅱ用戶模型是指當(dāng)PRO/Ⅱ體系提供模塊不能滿足用戶需求時(shí),由用戶自行開發(fā)的模塊,它由一個(gè)或者若干用戶添加的子程序構(gòu)成。PRO/Ⅱ支持四種用戶模型,即單元操作模型,熱力學(xué)方法模型,傳遞性質(zhì)方法模型和反應(yīng)動(dòng)力學(xué)模型[1-2]。
不同于一般Fortran程序的開發(fā),PRO/Ⅱ用戶模型的開發(fā)涉及到調(diào)用PRO/Ⅱ系統(tǒng)的一些接口子程序及完成與系統(tǒng)間的參數(shù)傳遞,所以其開發(fā)有特定的步驟和方法。編寫用戶模型是完成一個(gè)用戶模型開發(fā)的核心部分,本文第3部分將對(duì)用戶模型的編寫規(guī)范進(jìn)行詳細(xì)說明;編譯和鏈接用戶模型,PRO/Ⅱ用戶模型的編譯和連接使用的是Windows XP操作系統(tǒng)下的DEC Visual FORTRAN5.0 D或6.0。步驟為:①在 Windows XP系統(tǒng)下運(yùn)行 DEC Visual FORTRAN 5.0D or 6.0。②新建一個(gè)工作空間(workspace),將編寫好的.for文件添加到該工作空間中,編譯通過。③編寫一個(gè).def(模塊定義)文件,該文件用于生成動(dòng)態(tài)鏈接庫。運(yùn)行build.dll命令,生成動(dòng)態(tài)鏈接庫,即一個(gè).dll文件。提供動(dòng)態(tài)鏈接庫到PRO/Ⅱ體系中,復(fù)制動(dòng)態(tài)鏈接庫即.dll文件到PRO/Ⅱ的執(zhí)行目錄下。
不論開發(fā)哪一類用戶模型,其子程序源代碼的編寫都要遵循一些通用的規(guī)則,現(xiàn)將這些通用規(guī)則總結(jié)如下:
①用戶添加的子程序必須使用ANSI標(biāo)準(zhǔn)的FORTRANⅣ或者FORTRAN 77來書寫,以便保持與PRO/Ⅱ的兼容性。②存儲(chǔ)變量應(yīng)當(dāng)被初始化,因?yàn)樵S多操作系統(tǒng)不能執(zhí)行該功能。③用戶添加的子程序應(yīng)當(dāng)能夠測(cè)試計(jì)算錯(cuò)誤,例如0分母,指數(shù)溢出等。④PRO/Ⅱ接口子程序可以返回錯(cuò)誤指示,這些錯(cuò)誤指示應(yīng)當(dāng)被用戶添加的子程序測(cè)試,再采取適當(dāng)?shù)男袆?dòng)。⑤不能改變 PRO/Ⅱ公用區(qū)/XPROPX/、/CUDATA/、 /OUTFAC/和/FACTOR/里的公用存儲(chǔ)信息,不能改變?cè)谟脩籼砑拥墓脜^(qū)/UTHERX/里的任何變量的值。⑥用FIGETU程序來取得特殊順序的輸入輸出文件的FORTRAN單元數(shù)。⑦執(zhí)行計(jì)算時(shí)必須考慮單位。(在PRO/Ⅱ系統(tǒng)里的所有存儲(chǔ)數(shù)據(jù)是按照輸入單位的,除了/XPROPX/里的臨界質(zhì)。)⑧應(yīng)當(dāng)規(guī)范的書寫 FORTRAN源代碼,尤其是那些會(huì)被重復(fù)使用的用戶添加子程序,例如熱力學(xué)函數(shù)或者在迭代計(jì)算里的函數(shù)。⑨用戶添加子程序里的循環(huán)應(yīng)預(yù)先給以限制。
用戶添加子程序和PRO/Ⅱ之間的信息交流被通過三種方式完成:①子程序參數(shù)列表;②接口子程序;③公用存儲(chǔ)區(qū)。
表1 用戶模型子程序參數(shù)列表
用戶添加的計(jì)算子程序代替一個(gè)已經(jīng)在PRO/Ⅱ里存在的虛擬子程序。因此,用戶寫的子程序必須與那些虛擬子程序使用相同的參數(shù)列表。表1給出了針對(duì)每種用戶模型的子程序參數(shù)列表。
表2給出了執(zhí)行各種功能的接口子程序。這些接口子程序可以被用戶添加的子程序調(diào)用來實(shí)現(xiàn)與PRO/Ⅱ的存儲(chǔ)區(qū)的信息傳遞。用戶在編寫用戶模型過程中需要調(diào)用這些接口子程序時(shí),使用下列命令:call subrname(subrname為接口子程序名)。
表2 PRO/Ⅱ接口子程序
表3給出了PRO/Ⅱ的公用區(qū),用戶可以從組分性質(zhì),熱力學(xué)數(shù)據(jù),和轉(zhuǎn)換因子公用區(qū)取得信息。用戶在編寫用戶模型過程需要調(diào)用這些公用區(qū)時(shí),使用命令:INCLUDE'* .CMN'(* 為公用區(qū)名)。
表3 PRO/Ⅱ公用區(qū)
本文開發(fā)了反應(yīng)精餾用戶模型,以此為例說明PRO/Ⅱ的功能擴(kuò)展方法。此用戶模型選取的是均相板式塔連續(xù)反應(yīng)精餾過程的平衡級(jí)數(shù)學(xué)模型(EQ),求解方法采用的是方程解離法——泡點(diǎn)法。此用戶模型進(jìn)行的是操作型計(jì)算,即已知輸入和模型參數(shù)求輸出。其程序框圖如圖1所示[3-14]。
圖1 反應(yīng)精餾塔程序框圖
①PRO/Ⅱ用戶模型也是由一個(gè)或者若干用戶添加的子程序構(gòu)成。PRO/Ⅱ支持四種用戶模型,即單元操作模型,熱力學(xué)方法模型,傳遞性質(zhì)方法模型和反應(yīng)動(dòng)力學(xué)模型。②用戶添加子程序和PRO/Ⅱ之間的信息交流被通過三種方式完成:子程序變量列表;接口子程序;公用存儲(chǔ)區(qū)。用戶模型中的主子例行程序代替一個(gè)已經(jīng)在PRO/Ⅱ里存在的虛擬子程序。因此,用戶寫的主子例行程序必須那些虛擬子程序使用相同的變量列表。PRO/Ⅱ提供了11種執(zhí)行不同功能的接口子程序和6種公用存儲(chǔ)區(qū),這些接口子程序和公用存儲(chǔ)區(qū)可以通過特定方式被用戶模型調(diào)用來實(shí)現(xiàn)與PRO/Ⅱ系統(tǒng)間的信息傳遞。
③PRO/Ⅱ用戶模型的編譯和連接使用的是Windows XP操作系統(tǒng)下的DEC Visual FORTRAN 5.0D或6.0,并通過編寫一個(gè)模塊定義文件生成動(dòng)態(tài)鏈接庫。復(fù)制動(dòng)態(tài)鏈接庫即.dll文件到PRO/Ⅱ的執(zhí)行目錄下,即完成用戶模型的開發(fā)。
[1]PRO/Ⅱ Pdts- uas(Version 5.1)[J].Simsci Technology,Inc.
[2]PRO/Ⅱ User Guide(Version 5.1)[J].Simsci Technology,Inc.
[3]漆志文,孫海軍,施軍民,等.反應(yīng)分離過程模擬I.反應(yīng)精餾過程[J].華東理工大學(xué)學(xué)報(bào),1992,25(1):19-23.
[4]周傳光,鄭世清,胡仰棟,等.部分牛頓法模擬反應(yīng)精餾過程[J].化學(xué)工程,1993,21(3):30 -35.
[5]劉慶林,夏建軍,張志炳.反應(yīng)精餾過程模擬與參數(shù)的影響[J].計(jì)算機(jī)與應(yīng)用化學(xué),2000,17(3),219 -223.
[6]唐正嬌,韋藤幼,童張法.反應(yīng)精餾過程模擬仿真軟件開發(fā)[J].廣西民族學(xué)院學(xué)報(bào):自然科學(xué)版,2000,6(4):272-274.
[7]劉訓(xùn)峰,張瑞生,袁渭康,等.伴有平衡反應(yīng)的分離過程的數(shù)學(xué)模擬[J].化學(xué)反應(yīng)工程與工藝,1993,9(4):444-450.
[8]邱若磐.MTBE反應(yīng)精餾體系汽液平衡研究[J].齊魯石油化工,1990(4):27-33.
[9]Y A CHANG,J D SEADER.Simulation of continuous reaction distillation by a homotopy-continuation method[J].Comput Chem Engng,1988,12(12):1243 -1255.
[10]K Alejski,J Szymanowski,M Bogachi.The application of a minimization method for solving reacting-distillation problems,Comput Chem Engng,1988,12(8):833-839.
[11]Sophie UNG,Micheal F Doherty.Vapor-liquid phase equilibrium in system with mutiple chemical reactions[J].Chemical Engineering Science,1995,50(1):23 -48.
[12]A Izarraraz,G W Bentzen,R G Anthony,et al.Solve more distillation problems, Hydrocarbon Processing,1990,4:195 -203.
[13]Ciric A R,Gu Deyao,Synthesis of nonequilibrium reactive distillation processes by minlp optimization[J].AIChE J,1994,40(9):1479 -1485.