摘要:本文对PC-1500机上高压送电线路电线力学计算程序进行了修改,并对把PC-1500机上的程序移植到微机上的方法和技巧进行了一些说明。
关键词:力学计算程序电线状态方程式修改移植TurboBasic语言
PC-1500机由于它功能比较齐全,开发容易,使用简便,体积小,投资少,易学,见效快,在80年代比较流行,但随着计算机技术的发展和PC-1500机的自然损耗,微机将逐步取代PC-1500机。近年来各部门在PC-1500机上开发了许多优秀的程序,取得了可喜的成果和效益,如果把这些优秀程序充分利用起来,把它们移植到微机上加以使用,就可以加快计算机的应用步伐,取得事倍功半的效果。 电线力学计算是送电线路设计中最繁杂的一项工作,其内容包括:1、计算各控制条件之间的临界档距:2、判别有效临界档距;3、计算各种气象条件和不同档距下的电线应力、弧垂;4、计算各种代表档距下在不同气温时的电线应力、弧垂(即安装曲线)。这些工作完成之后,方能列出线路杆塔的荷重条件,继而进行杆塔结构计算。 本程序分程序一、程序二,程序一解决上述工作1、2、3;程序二解决工作4。 PC-1500机上电线力学程序的主要计算公式的解法及程序的错误。 电线状态方程式:就是从已知气象条件下的应力,求另一条件下应力的计算式,悬挂于两固定点间的导线,当气象条件发生变化时,导线的应力亦将随之变化。设已知气象条件下的温度为Tm,比载为Gm,此时应力为Sm,L为变量(档距),令待求气象条件下的温度是T,比载是Gn,应力是S,如何求得S呢?可用下面的导线的状态方程式对S求解 (1) 令上式中: (2) 把(2)代入(1)得: (3) 式中S为待求应力,注脚m表示已知条件下的数值,注脚n表示待求条件下的数值。 人工计算时,先求出与每一L相对应的A、B值,然后用试算法求解上述三次方程。本方程系采用直接求解法,故将方程作以下变换: 对于(4) 令(5) 原方程化为(6) 又令(7) 得:(8) 于是(9) 据韦达定理,为二次方程:的两个根(10) 故:(11) 当时 (12) 当时,令: (13) 时, (14) 时, (15) 根据以上公式算出各种控制条件下的应力S,然后又根据弧垂公式F=GL2/8S,得出各种控制条件下的弧垂F。这样就可计算各种代表档距下在不同温度时的电线应力、弧垂(即安装曲线) 而在PC-1500机输电线路力学计算程序编写中把判别式编写错了, 即:时, (16) 时, (17) 因判别式遍写错,故程序得出的应力(S)、弧垂(F)有误,计算出的安装曲线误差更大,不能用于设计,本程序不能用。我对这一程序进行了修改并把它成功地移植到微机中。在移植中,因PC-1500机上的Basic语言比较接近微机上的一般Basic语言,而TurboBasic语言与一般Basic语言相比,是向下兼容的,即TurboBasic语言包括一般Basic语言,并所扩展,下面就移植过程中需要注意的一些问题作一些介绍。两种机型的Basic语言几乎是相同的,只是在语句中,微机的语句定义符(如IF、THEN、FOR、TO、STEP等)与前后部分的内容一般都用空格来分格开,以便与其它成分进行区别,而PC-1500机上没有这种要求,这是首先要注意的问题。 其次,在PC-1500机中,函数后所跟的自变量可以不用圆括号括起来,而在微机上函数后所跟的自变量必须用圆括号括起来,这也是必须引起注意的地方。 此外,常量、变量、语句、函数中,也有一些差别需求注意,下面分别进行说明。 常量:PC-1500机上有PI(丌)常量;微机上没有,只能用“3.1415927”这个具体的数来表示。变量:PC-1500机的变量用一个英文字母、或二个英文字母的组合,或一个英文字母加上一个数字的组合组成的字符串来表示;而微机则是作英文字母开头的字母串或字母数字串来表示变量名,这里需要说明的是,与语言定义符相同的字符串不能做变量名。赋值语句:LET…,PC-1500机在多个赋值语句之间可以用逗号“,”分隔,而微机上只能以冒号“:”分隔。在微机上,当赋值号“=”两边的数据类型不同时,自动转换成赋值号左边变量的数据类型。键盘输入语句:INPUT…,PC-1500机的INPUT语句中可以包括多个“说明”,用来说明每个等待输入的变量,微机上则只能有一个说明。对于PC-1500的输入语句,INPUT“说明”;变量,“说明”;变量,…的形式,在微机上可以改写为多个INPUT“说明”;变量语句来实现,也可以写为一个INPUT“说明”;变量,变量,…语句的形式。输出语句:PRINT/LPRINT;输出语句分屏幕显示输出语句PRINT,打印机打印输出语句LPRINT。PC-1500机显示输出语句PRINT会中断程序运行,一般需要与PAUSE语句、或WAIT语句配合使用,而微机的PRINT语句不会中断程序运行,则可以把PC-1500机中的PAUSE语句或WAIT语句直接删掉。在用USING定义的格式输出语句中,PC-1500机可以把USING作为一个定义格式的语句单独使用,而微机上则不能单独作为语句使用,只能配合PRINT(LPRINT)使用,即:PRINTUSING“格式”;变量,变量,…。在输出语句中使用了TAB位置函数时,PC-1500机TAB后所跟的位置参数可以不用括号,而微机上TAB后所跟的位置参数必须用圆括号括起来,即要把TAB15改写为TAB(15)。清屏语句:CLS;PC-1500机屏幕只有一行,显示输出结果和信息时,需多次频繁地使用清屏语句,而微机屏幕共25行,一般情况下,只需在程序开头使用,PC-1500机程序中多余的清屏语句楞直接删除掉。条件语句:IF…THEN…;PC-1500机上IF…LET形式的语句,如果要在微机上使用,需改为IF…THEN或IF…THENLET语句形式。循环语句:FOR…NEXT;两种机器语句形式基本相同,只是在执行FOR语句时,微机是先判别后循环,而PC-1500机是先循环,后判别。转移语句:GOTO…;PC-1500机GOTO语句后可以是表达式,而微机上只能跟行号。转子语句GOSUB之后在PC-1500机上可以是表达式或确定的行号。而微机上只能跟行号。 PC-1500机随机配CE-150绘图式打印机,具有绘图、打印两种功能,其绘图语句和部分打印语句与该打印有关,一般不能直接用于其它计算机上。由于微机用打印机绘图时,一般是采用拷贝屏幕的方式实现,因此,对于绘图语句,在移植程序时,由于实现方式不同,最好用注释语句注释起来,或者直接删除的办法处理。等程序初步调通后,再进一步考虑绘图功能的实现。 程序移植技巧 把PC-1500机程序移植到微机上使用,一般需要经过以下几个步骤:首先将PC-1500机与微机联机,通过RC-232串行口输入、或者手工键盘输入,把PC-1500机程序以ASCⅡ码形式存放在微机上,然后逐行检查程序,对需要注释或删除的语句(如显示绘图语句、绘图打印语句)先进行处理,对两种机器上有差异的语句、函数进行修改(如语句定义符加空格、函数加括号)。在这些工作做完后,就可以开始调试程序。在调试过程中,多输出一些中间结果,以便检查出错原因,直到算出正确的结果。 微机程序在初步调试通过后,可根据微机的特点,扩充程序功能,完善打印输出,增加和设计用户界面,直到编写出令人满意的程序为止。 总之,只要弄清楚了上面所叙述的两种计算机之间的语言差异,并在程序移植过程中加以注意,PC-1500机程序很容易就可以移植到微机上使用。本高压送电线路电线力学计算程序经修改、移植到微机中,现也通过算例,并可以用于设计了。 附修改、移植后的程序如下: 程序一: 1:CLS 2:LPRINTTAB(10);"高压送电线路力学计算程序计算结果" 3:INPUT"电线型号B$=";B$ 4:INPUT"电线标称截面C$=";C$ 6:LPRINTTAB(4);B$;"-"C$ 8:LETK=50 9:LETD=1 10:DIML(6),GM(4),TM(4),SM(4) 15:INPUT" 电线弹性模量E=";E 16:LPRINTTAB(4);" 电线弹性模量=";E 17:INPUT" 电线温度线胀系数W="W 18:LPRINTTAB(4);" 电线温度线胀系数="W 20:DATA3.55E-3,-30,11.2,4.96E-3,-5,11.2,5.03E-3,-5,11.2,3.55E-3,5,7 25:INPUT"起始计算档距L(0)="L(0) 26:INPUT"最大计算档距L(4)="L(4) 35:LPRINTTAB(4);" 起始计算档距=";L(0);" 最大计算档距=";L(4) 40:FORI=1TO4 50:READGM(I),TM(I),SM(I) 60:NEXTI 70:FORI=1TO3 80:X=1:Y=I 1:GOSUB900 90:IFZ<0GOTO110 100:L(I)=INT(.5 SQR(Z)) 105:NEXTI:GOTO120 110:L(I)=-1:GOTO105 120:FORI=4TO5 130:X=2:Y=I-1:GOSUB900 140:IFZ<0GOTO160 150:L(I)=INT(.5 SQR(Z)) 155:NEXTI:GOTO170 160:L(I)=-1:GOTO155 170:X=3:Y=4:GOSUB900 180:IFZ<0GOTO200 190:L(6)=INT(.5 SQR(Z)):GOTO210 200:L(6)=-1 210:FORI=1TO6 220:LPRINTTAB(4);"L(";I;")=";L(I);"(m)":NEXTI 225:LPRINT"L(AB)=";L(1)"(m)";"L(AC)=";L(2)"(m)";"L(AD)=";L(3);"(m)"; 227:LPRINT"L(BC)=";L(4)"(m)";"L(BD)=";L(5)"(m)";"L(CD)=";L(6)"(m)" 230:IFL(1)<=0ORL(2)<=0ORL(3)<=0GOTO340 235:G1=GM(1):T1=TM(1):S1=SM(1) 240:IFL(1)<L(2)ANDL(1)<L(3)THENL1=L(1):GOTO270 250:IFL(2)<L(1)ANDL(2)<L(3)THENL1=L(2):GOTO300 260:L1=L(3):L2=0:L3=0:G2=GM(4):T2=TM(4):S2=SM(4):GOTO360 270:IFL(4)<=0ORL(5)<=0GOTO330 275:G2=GM(2):T2=TM(2):S2=SM(2) 280:IFL(4)<L(5)THENL2=L(4):GOTO310 290:L2=L(5):L3=0:GOTO360 300:IFL(6)>L1THENL2=L(6):G2=GM(3):T2=TM(3):S2=SM(3) 305:L3=0:G3=GM(4):T3=TM(4):S3=SM(4):GOTO360 310:IFL(6)>L2THENL3=L(6):G3=GM(3):T3=TM(3):S3=SM(3) 315:G4=GM(4):T4=TM(4):S4=SM(4):GOTO360 320:L3=0:G3=GM(3):T3=TM(3):S3=SM(3):GOTO360 330:IFL(6)>0THENL(2)=L(6):G2=GM(3):T2=TM(3):S2=SM(3):L3=0 335:G3=GM(4):T3=TM(4):S3=SM(4):GOTO360 340:IFL(4)<=0ORL(5)<=0GOTO354 342:IFL(4)<L(5)THENL1=L(4):G1=GM(2):T1=TM(2):S1=SM(2):GOTO350 344:L1=L(5):G1=GM(2):T1=TM(2):S1=SM(2):L2=0:L3=0:GOTO360 350:IFL(6)>L1THENL(2)=L(6):G2=GM(3):T2=TM(3):S2=SM(3):L3=0 351:G3=GM(4):T3=TM(4):S3=SM(4):GOTO360 352:L2=0:L3=0:G2=GM(3):T2=TM(3):S2=SM(3):GOTO360 354:IFL(6)<=0GOTO598 356:L1=L(6):G1=GM(3):T1=TM(3):S1=SM(3):L2=0:L3=0 358:G2=GM(4):T2=TM(4):S2=SM(4):GOTO360 360:LPRINT" L1=";L1;"(m)"; 361:LPRINT" L2=";L2;"(m)"; 365:LPRINT" L3=";L3;"(m)" 400:print" S1=";S1;" S2="S2;" S3="S4;" S4="S4 410:PRINT" G1=";G1;" G2="G2;" G3="G3;" G4="G4 420:PRINT" T1=";T1;" T2="T2;" T3="T3;" T4="T4 500:DIMA$(10),G(10),T(10),C(L4/K 3),H(L4/K 3) 505:RESTORE550 510:FORI=1TO10 520:READA$(I),G(I),T(I) 530:LPRINTA$(I) 540:LPRINT"档距L(m)应力S(kg/mm2)弧垂F(m)" 550:DATA"最高温度",3.55E-3,40,"最低温度",3.55E-3,-30,"最大风速",5.03E-3,-5,"最大复冰",4.96E-3,-5 560:DATA"平均温度",3.55E-3,5,"大气过电压<1>:V=0",3.55E-3,15,"大气过电压<2>" 570:DATA3.59E-3,15,"安装",3.59E-3,-15,"操作过电压",3.74E-3,-15,"事故",3.55E-3 580:DATA-10 590:GOSUB600 595:NEXTI 598:END 600:GM=G1:TM=T1:SM=S1 610:FORL=L(0)TOK*INT(L1/K)STEPK 612:GOSUB700 615:NEXTL 620:L=L1:GOSUB700 625:GM=G2:TM=T2:SM=S2 630:FORL=K K*INT(L1/K)TO600STEPK 631:GOSUB700 635:NEXTL 671:GOSUB700 675:RETURN 700:G=G(I):T=T(I) 710:A=(L^2*GM^2*E/(24*SM^2))-SM E*W*(T-TM) 720:B=L^2*G^2*E/24 730:P=-A^2/9:Q=A^3*2/27-B 740:IFQ*Q 4*P^(3)<0GOTO850 750:U=((-Q SQR(Q^2 4*P^(3)))/2)^(1/3) 760:V=((-Q-SQR(Q^2 4*P^(3)))/2)^(1/3) 770:S=U V-A/3 780:F=L*L*G/8/S 790:S=INT((S 0.005)*1000)/1000:F=INT((F .005)*1000)/1000 800:LPRINTUSING"######";L; 801:LPRINTUSING"##########.##";S; 802:LPRINTUSING"###########.##";F 820:RETURN 850:O=ATN((SQR((-Q^2-4*P^(3))))/(-Q)) 860:IFQ>0THENS=(COS(O/3)-SQR(3)*SIN(O/3))*SQR(-P)-A/3 870:IFQ<0THENS=2*SQR(-P)*COS(O/3)-A/3 880:GOTO780 900:Z1=(24/E)*(SM(X)-SM(Y)) 24*W*(TM(X)-TM(Y)) 902:Z2=(GM(X)/SM(X))^2-(GM(Y)/SM(Y))^2 905:Z=Z1/Z2 910:RETURN 程序二: 800:LPRINTTAB(8)"安装曲线表" 810:K=50 815:X=15 816:E=8490 817:W=18.86E-6 818:PRINT" W=";W;" E=";E 820:DIMX(11),A(11) 830:restore921 840:FORI=1TO11 850:READX(I),A(I) 851:L=X(I):SM=A(I) 921:DATA100,9.01,150,9.21,200,8.88,250,8.48,300,8.17,350,7.93,400,7.76 922:DATA450,7.63,500,7.53,550,7.46,600,7.40 930:GOSUB955 935:nextI 950:END 955:G=.00355:TM=-30:GM=.00355 980:LPRINTtab(4);" L=";L;"(m)" 985:Lprint"气温T(0C)应力S(kg/mm2)弧垂F(m)" 990:forT1=-5TO30STEP5 995:T=T1-X 1000:T2=T1-5 1710:A=(L^2*GM^2*E/(24*SM^2))-SM E*W*(T-TM) 1720:B=L^2*G^2*E/24 1730:P=-A^2/9:Q=A^3*2/27-B 1740:IFQ*Q 4*P^(3)<0GOTO1850 1750:U=((-Q SQR(Q^2 4*P^(3)))/2)^(1/3) 1760:V=((-Q-SQR(Q^2 4*P^(3)))/2)^(1/3) 1770:S=U V-A/3 1780:F=L*L*G/(8*S) 1790:S=INT((S 0.005)*1000)/1000:F=INT((F .005)*1000)/1000 1792:LPRINTUSING"######";T2; 1793LPRINTUSING"##########.##";S;F 1794NEXTT1 1795IFL=0GOTO950 1820:RETURN 1850:O=ATN((SQR((-Q^2-4*P^(3))))/(-Q)) 1860:IFQ>0THENS=(COS(O/3)-SQR(3)*SIN(O/3))*SQR(-P)-A/3 1870:IFQ<0THENS=2*SQR(-P)*COS(O/3)-A/3 1880:GOTO1780 参考文献:1、《水利水电工程PC—1500程序集》 2、《Basic语言》谭浩强田淑清编著科学普及出版社 3、《计算机技术与计算机应用》1995.1
来源:佚名