一、 C語言的起源
C 語言是1972年由美國的Dennis Ritchie設計發明的, 并首次在UNIX操作系統 的 DEC PDP-11 計算機上使用。 它由早期的編程語言 BCPL( Basic Combind Programming Language) 發展演變而來。在1970年, AT&T 貝爾實驗室的 Ken Thompson根據BCPL語言設計出較先進的并取名為 B的語言, 最后導了C 語言的問世。 隨著微型計算機的日益普及, 出現了許多C 語言版本。由于沒有統一的標準, 使得這些C 語言之間出現了一些不一致的地方。為了改變這種情況, 美國國家標準 研究所(ANSI)為C 語言制定了一套ANSI標準, 成為現行的C語言標準[1]。
二、C 語言的特點
C 語言發展如此迅速, 而且成為最受歡迎的語言之一, 主要因為它具有強大的功能。許多著名的系統軟件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 語言編寫的。用C 語言加上一些匯編語言子程序, 就更能顯示C 語言的優勢了, 象PC- DOS 、WORDSTAR等就是用這種方法編寫的。歸納起來C 語言具有下列特點:
1. C是中級語言
它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以象匯編語言一樣對位、字節和地址進行操作, 而這三者是計算機最基本的工作單元。
2. C是結構式語言
結構式語言的顯著特點是代碼及數據的分隔化, 即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰, 便于使用、維護以及調試。C 語言是以函數形式提供給用戶的, 這些函數可方便的調用, 并具有多種循環、條件語句控制程序流向, 從而使程序完全結構化。
3. C語言功能齊全
C 語言具有各種各樣的數據類型, 并引入了指針概念, 可使程序效率更高。另外C 語言也具有強大的圖形功能, 支持多種顯示器和驅動器。而且計算功能、邏輯判斷功能也比較強大, 可以實現決策目的。
4. C語言適用范圍大
C 語言還有一個突出的優點就是適合于多種操作系統, 如DOS、UNIX,也適用于 多種機型[1]。
三、 Turbo C 2.0集成編程環境
Turbo C 2.0最好安裝在硬盤特定的目錄下,如“D:\ TC(下依次為例),可再以章為單位建立下級目錄,如D1、D2。DOS下鍵入TC↙(回車)第一次運行,顯示主屏暮如圖1-1所示。
進入 Turbo C 2.0集成編程界面。(注:第一次進入Turbo C 2.0集成編程界面時,需要對Turbo C 2.0集成編程界面進行必要的設置。按下F10鍵激活菜單,進入Options子菜單,有7項。第4項Directories中。修改3處:“Include directories::D:\ TC \ TC20 \ INCLUDE”,“Library directories:D:\ TC \ TC20 \ LIB”,“Turbo C directory:D:\ TC \ TC20 ”。按ESC鍵退回。選擇“Save options”,在“Config File”窗口中選擇“D:\ TC \ TC20 \ TCCONFIG.TC “,覆蓋存盤。最后還提醒一點:FILES中的Change dir(改變當前目錄)中應設置為當前程序所在目錄。)
四、利用Turbo C 2.0編程軟件編寫孔板流量計孔徑的計算程序
求:20℃情況下孔板節流孔直徑d20
已知條件:
質量流量Qmax,Qcom,Qmin(kg/h);操作密度M (kg/m3); 動力黏度N (mPa?s); 20℃情況下工藝管道內徑D20(m); 正常操作壓力P MPa(G);正常操作溫度T (℃);管道材質的線膨脹系數rD; 孔板材質的線膨脹系數rd ;
通過計算后所得的數據:
正常操作溫度T情況下工藝管道內徑D(m);雷諾數ReD;計算差壓上限值CPcom 和CPmax;
計算A2[2] ;計算
孔板流量計的流出系數C[2]
在知道了相應的工藝條件后,下面我就利用Turbo C 2.0編程軟件編寫孔板流量計孔徑的計算程序。首先,在開始前,我還要先介紹一下Turbo C 2.0相關的幾個基本函數,然后通過應用這些函數來編寫孔板流量計孔徑的計算程序。
1 數學函數 包含在如表1-1所示:(注:使用時在源文件前加命令行:
# include)
2 由上面的已知條件和Turbo C 2.0的數學函數,通過Turbo C 2.0編程軟件編寫孔板流量計孔徑的計算程序如下:
#include
main()
{ int n;
const float pai=3.141592653289;
const float b0=0.500000;
const float C0=0.606000;
float Qmax,Qcom,Qmin,M,N,D20,rD,rd,T=0.0,b,D,ReD,CPmax,CPcom,A2,
L,C,C1,b1,b2,d,d20;
printf("Qmax,Qcom,Qmin,M,N,D20,rD,rd,T=\n");
scanf("%f%f%f%f%e%f%e%e%f",&Qmax,&Qcom,&Qmin,&M,&N,&D20,&rD,&rd,&T);
/*輸入已知的工藝參數*/
D=D20*(1+rD*(T-20));
ReD=4*Qcom/(3600*pai*N*D);
CPcom=pow(4*Qcom*sqrt(1-pow(b0,4))/(3600*pai*b0*b0*D*D*C0),2)*1/(2*M);
CPmax=CPcom*pow((Qmax/Qcom),2);
A2=4*Qcom/(3600*pai*D*D*sqrt(2*25e3*M));
printf("CPcom=%6.10f\n",CPcom);
printf("CPmax=%6.10f\n",CPmax);
if(ReD>2e5) /*利用Turbo C的if判斷語句對雷諾數進行判斷計算*/
{b=pow(1+pow((0.60/A2),2),-0.25);}
if(ReD<2e5)
{b=pow(1+pow((0.60/A2+0.06),2),-0.25);}
L=0.0254/D;
C=0.5961+
0.0261*pow(b,2)-
0.216*pow(b,8)+
0.000521*pow(((pow(10,6)*b)/ReD),0.7)+
((0.0188+0.0063*pow((19000*b/ReD),0.8)))*pow(b,3.5)*pow((pow(10,6)/ReD),0.3)+
(0.043+0.080*exp(-10*L)-0.123*exp(-7*L))*(1-0.11*pow((19000*b/ReD),0.8))*
(pow(b,4)/(1-pow(b,4)))-
0.031*(2*L/(1-b)-0.8*pow(2*L/(1-b),1.1))*pow(b,1.3);
b1=pow(1+pow((C/A2),2),-0.25);
C1=0.5961+
0.0261*pow(b1,2)-
0.216*pow(b1,8)+
0.000521*pow(((pow(10,6)*b1)/ReD),0.7)+
((0.0188+0.0063*pow((19000*b1/ReD),0.8)))*pow(b1,3.5)*pow((pow(10,6)/ReD),0.3)+
(0.043+0.080*exp(-10*L)-0.123*exp(-7*L))*(1-0.11*pow((19000*b1/ReD),0.8))*
(pow(b1,4)/(1-pow(b1,4)))-
0.031*(2*L/(1-b1)-0.8*pow(2*L/(1-b1),1.1))*pow(b1,1.3);
b2=pow(1+pow((C1/A2),2),-0.25);
for(n=2;fabs(b2-b1)>1.0e-10;n++) /*利用Turbo C的for循環語句進行迭代計算*/
{
b=b1;
C=0.5961+
0.0261*pow(b,2)-
0.216*pow(b,8)+
0.000521*pow(((pow(10,6)*b)/ReD),0.7)+
((0.0188+0.0063*pow((19000*b/ReD),0.8)))*pow(b,3.5)*pow((pow(10,6)/ReD),0.3)+
(0.043+0.080*exp(-10*L)-0.123*exp(-7*L))*(1-0.11*pow((19000*b/ReD),0.8))*
(pow(b,4)/(1-pow(b,4)))-
0.031*(2*L/(1-b)-0.8*pow(2*L/(1-b),1.1))*pow(b,1.3);
b1=pow(1+pow((C/A2),2),-0.25);
C1=0.5961+
0.0261*pow(b1,2)-
0.216*pow(b1,8)+
0.000521*pow(((pow(10,6)*b1)/ReD),0.7)+
((0.0188+0.0063*pow((19000*b1/ReD),0.8)))*pow(b1,3.5)*pow((pow(10,6)/ReD),0.3)+
(0.043+0.080*exp(-10*L)-0.123*exp(-7*L))*(1-0.11*pow((19000*b1/ReD),0.8))*
(pow(b1,4)/(1-pow(b1,4)))-
0.031*(2*L/(1-b1)-0.8*pow(2*L/(1-b1),1.1))*pow(b1,1.3);
b2=pow(1+pow((C1/A2),2),-0.25);
}
printf("C1=%6.10f\n",C1); /*輸出計算孔板流量計的流出系數C1*/
printf("b2=%6.10f\n\n",b2); /*輸出計算孔板流量計的直徑比b2*/
d=D*b2;
d20=d/(1+rd*(T-20));
printf("d20=%6.10f\n\n",d20);
/*輸出計算孔板流量計在20℃情況下孔板節流孔直徑d20*/
}
以上就是計算孔板流量計孔徑的計算程序。通過此程序可以很快的計算出孔板流量計在20℃情況下孔板節流孔孔徑的大小。
五 應 用
實例一:
① 被測流體 :水;
② 流體流量:最大流量Qmax=500t/h;正常流量Qcom=400t/h;最小流量Qmin=200t/h
③ 正常操作壓力:P=14.6 MPa(G);
④ 正常操作溫度:T=220 ℃;
⑤ 20℃情況下工藝管道內徑:D20=233㎜;
⑥ 管道材質的線膨脹系數:rD=11.16e-6㎜/㎜?℃;
⑦ 孔板材質的線膨脹系數:rd=16.60e-6 ㎜/㎜?℃;
⑧ 操作密度:M=850.9082 (kg/m3);
⑨ 動力黏度:N=0.124 (mPa?s) ;
按下Ctrl+F9運行計算程序:(注意單位換算)
要求輸入已知的工藝參數:Qmax, Qcom, Qmin, M, N, D20, rD, rd, T =
500000 400000 200000 850.9082 124e-6 .233 11.16e-6 16.60e-6 233↙(回車)
經過程序的運算得到如下的結果:(按下Alt+F5查看結果)
CPcom=166259.4432591512
CPmax=257980.3725675625
C1=0.6023605334
b2=0.5024122240
d20=0.116966338
實例二:
① 測流體 :汽油;
② 流體流量:最大流量Qmax=40000 kg/h;正常流量Qcom=31250 kg/h;
最小流量Qmin=20000 kg/h
③ 正常操作壓力:P=0.80 MPa(G);
④ 正常操作溫度:T=40 ℃;
⑤ 20℃情況下工藝管道內徑:D20=102㎜;
⑥ 管道材質的線膨脹系數:rD=11.16e-6㎜/㎜?℃;
⑦ 孔板材質的線膨脹系數:rd=16.60e-6 ㎜/㎜?℃;
⑧ 操作密度:M=720 (kg/m3);
⑨ 動力黏度:N=0.3000 (mPa?s) ;
按下Ctrl+F9運行計算程序:(注意單位換算)
要求輸入已知的工藝參數:Qmax, Qcom, Qmin, M, N, D20, rD, rd, T =
40000 31250 20000 720 300e-6 .102 11.16e-6 16.60e-6 40↙(回車)
經過程序的運算得到如下的結果:(按下Alt+F5查看結果)
CPcom=31982.3496093750
CPmax=52399.8828125000
C1=0.6041094065
b2=0.5007327199
d20=0.051069240
實例三:
① 測流體 :堿液;
② 流體流量:最大流量Qmax=6000 kg/h;正常流量Qcom=5000 kg/h;
最小流量Qmin=3000 kg/h
③ 正常操作壓力:P=0.65 MPa(G);
④ 正常操作溫度:T=40 ℃;
⑤ 20℃情況下工藝管道內徑:D20=52㎜;
⑥ 管道材質的線膨脹系數:rD=11.16e-6㎜/㎜?℃;
⑦ 孔板材質的線膨脹系數:rd=16.60e-6 ㎜/㎜?℃;
⑧ 操作密度:M=1112 (kg/m3);
⑨ 動力黏度:N=2.0000 (mPa?s) ;
按下Ctrl+F9運行計算程序:(注意單位換算)
要求輸入已知的工藝參數:Qmax, Qcom, Qmin, M, N, D20, rD, rd, T =
6000 5000 23000 1112 2000e-6 .052 11.16e-6 16.60e-6 40↙(回車)
經過程序的運算得到如下的結果:(按下Alt+F5查看結果)
CPcom=7848.1137695312
CPmax=11301.2841796875
C1=0.6153961420
b2=0.5284164548
d20=0.027457322
六:結束語
通過上述實例對
孔板流量計孔徑的計算程序進一步的做了驗證,可以得到如下結論:一,利用此程序可以精確的計算出不同介質、不同溫度、不同流量等條件下的孔板流量計孔徑的大??;二:利用此程序計算孔板流量計孔徑的特點是快速,簡單、計算量小;三:利用此程序為今后的設計提供了一套有序的計算方法。
參 考 文 獻
[1] 郭繼展.新編C語言程序設計[M].北京:機械工業出版社,2004. 2-3.
[2] 孫淮清,王建中,流量測量節流裝置設計手冊[M].化學工業出版社,2006. 13.