计算机绘制伯德图程序

出处:按学科分类—工业技术 北京理工大学出版社《新编液压工程手册上册》第156页(9545字)

(1)功能

·可在计算机屏幕和打印纸上绘出伯德图。

·在绘图同时,可打印出伯德图的特征参数ωc,γ,ω1,Kg

(2)传递函数表达式

(3)使用符号

·M,N,F1,F2,K,T见传递函数表达式。

·程序中一些与传递函数表达式中相应的符号

V=v

T1(Ⅰ)=T1i, T2(Ⅰ)=T2j

WN1(Ⅰ)=ωn1i, ZT1(Ⅰ)=ζ1j

WN2(Ⅰ)=ωr2j, ZT2(Ⅰ)=ζ2j

·其余符号

C——横坐标的频率比例尺;

W0——作图起始频率;

C1,C2,C3——作图比例尺;

C4——作图时,后一点频率与前一点频率的比值;

L1,L2,L3,L4——作图屏幕限制值。

(4)使用方法

在程序中给出数据:

·在3960行DATA中给出C,W0的数据,注意应使C*W0=1。

·在3965行DATA中给出M,N,K,V,F1,F2,T的数据。

·在3970行DATA中给出T1(Ⅰ)的数据,其中的Ⅰ=1,2,…,M-2F1

·在3975行DATA中依次给出WN1(Ⅰ),ZT1(Ⅰ)的数据,Ⅰ=1,2,…,F1

·在3980行DATA中给出T2(Ⅰ)的数据,Ⅰ=1,2,…,N-2F2

·在3985行DATA中依次给出WN2(Ⅰ),ZT2(Ⅰ)的数据,Ⅰ=1,2,…,F2

如果某一行无数据,则应在程序中消去该行号。

(5)例题

例3 若系统开环传递函数为

试用计算机绘制伯德图,并计算ωc,γ,ω1,Kg的数值。

[解] ①在程序中给出数据

3960 DATA 100,0.01

3965 DATA 2,5,50,1,0,1,0

3970 DATA 1.28,0.5

3975 DATA 0.167,64,50,0.1

②运行结果见图5.5-16。图上给出了曲线特征参数为

图5.5-16 例3的伯德图

ωc=1.34748rad/s, γ=82.4656°

ω1=49.83437rad/s, Kg=11.08151dB

(6)BASIC参考程序

3000 REM Bode p1ots

3005 CLS∶KEY OFF

3010 SCREEN2,0

3015 LINE(160,0)-(160,100)

3016 LINE(160,0)-STEP(4,5)

3017 LINE(160,0)-STEP(4,5)

3020 EOR Ⅰ=0 TO 5

3025 LINE(160,20+16*Ⅰ)-(168,20+16*Ⅰ)

3030 LINE(160,12+16*Ⅰ)-(164,12+16*Ⅰ)

3035 NEXT Ⅰ

3040 LINE(160,84)-(570,84)

3041 LINE(570,84)-STEP(-10,2)

3042 LINE(570,84)-STEP(-10,-2)

3045 FOR Ⅰ=1 TO 4

3050 LINE(160+80*I,80)-(160+80*Ⅰ,84)

3055 NEXT I

3060 LOCATE 1,17∶PRINT”dB”

3065 LOCATE 1,23∶PRINT”Lm”

3070 LOCATE 3,17∶PRINT”80”

3075 LOCATE 5,17∶PRINT”60”

3080 LOCATE 7,17∶PRINT”40”

3085 LOCATE 9,17:PRINT”20”

3090 LOCATE 11,17∶PRINT”00”

3095 LOCATE 12,31∶PRINT”1”

3100 LOCATE 12,41∶PRINT”2”

3105 LOCATE 12,51∶PRINT”3”

3110 LOCATE 12,61∶PRINT”4”

3115 LOCATE 12,68∶PRINT”1g cw”

3120 LINE(160,110)-(570,110)

3125 FOR I=1 TO 4

3130 LINE(160+80*I,106)-(160+80*I,110)

3135 NEXT I

3140 LINE(160,105)-(160,190)

3145 FOR I=1 TO 4

3150 LINE(160,110+18*I)-(168,110+18*I)

3155 LINE(160,100+18*I)-(164,100+18*I)

3160 NEXT I

3165 FOR I=0 TO 50 STEP2

3170 LINE(160+8*I,146)-(168+8*I,146)

3175 NEXT I

3180 LOCATE 14,18∶PRINT”Q”

3185 LOCATE 17,16∶PRINT”-90”

3190 LOCATE 19,15∶PRINT”-180”

3195 LOCATE 21,15∶PRINT”-270”

3200 LOCATE 1,1

3220 READ L1,L2,L3,L4

3225 READ C1,C2,C3,C4

3230 READ C,WO

3235 READ M,N,K,V,F1,F2,T

3240 M1=M-2*F1∶N1=N-V-2*F2

3245 IF M=0 THEN 3290

3250 IF M1=0 THEN 3270

3255 FOR I=1 TO M1

3260 READ T1(I)

3265 NEXT I

3270 IF F1=0 THEN 3295

3275 FOR I=1 TO F1

3280 READ WN1(I),ZT1(I)

3285 NEXT I

3290 IF N1=0 THEN 3310

3295 FOR I=1 TO N1

3300 READ T2(I)

3305 NEXT I

3310 IF F2=0 THEN 3330

3315 FOR I=1 TO F2

3320 READ WN2(I),ZT2(I)

3325 NEXT I

3330 PI=3.141592

3335 PRINT“C=”;C

3340 W=WO

3345 X5=160+C1*.434295*LOG(C*W)

3350 GOSUB 3600

3355 LM0=LM

3360 RO=Q+PI

3365 Y5=84-C2*LM

3370 X7=X5

3375 Y7=110-Q*C3*180/PI

3380 W=C4*W

3385 X6=160+C1*.434295*LOG(C*W)

3390 GOSUB 3600

3395 LM1=LM

3400 R1=Q+PI

3405 Y6=84-C2*LM

3410 X8=X6

3415 Y8=110-Q*C3*180/PI

3420 LINE(X5,Y5)-(X6,Y6)

3425 LINE(X7,Y7)-(X8,Y8)

3430 X5=X6

3435 Y5=Y6

3440 X7=X8∶Y7=Y8

3445 IF LMO*LM1>0 THEN 3470

3455 PRINT“Wc=”;WC

3460 R=(PI+Q)*180/PI

3465 PRINT“r=”;R

3470 IF R0*R1>0 THEN 3490

3480 PRINT“W1=”;W1

3485 PRINT“Kg=”;-LM;”dB”

3490 IF X6>L1 THEN 3990

3495 IF Y6>L2 THEN 3990

3500 IF Y8>L3 THEN 3990

3505 IF Y8>L4 THEN 3990

3507 LMO=LM1∶RO=R1

3510 GOTO 3380

3600 G=K

3605 IF M=0 THEN 3665

3610 IF M1=0 THEN 3630

3615 FOR I=1 TO M1

3620 G=G*SQR(T1(I)*T1(I)*W*W+1)

3625 NEXT I

3630 IF F1=0 THEN 3665

3635 FOR I=1 TO F1

3640 W1=W/WN1(I)

3645 B1=1-W1*W1

3650 B2=2*ZT(I)*W1

3655 G=G*SOR(B1*B1+B2*B2)

3660 NEXT I

3665 IF V=0 THEN 3685

3670 FOR I=1 TO V

3675 G=G/W

3680 NEXT I

3685 IF N1=0 THEN 3705

3690 FOR I=1 To N1

3695 G=G/SQR(T2(I)*T2(Ⅰ)*W*W+1)

3700 NEXT I

3705 IF F2=0 THEN 3740

3710 FOR I=1 TO F2

3715 W2=W/WN2(I)

3720 B3=1-W2*W2

3725 B4=2*ZT2(I)*W2

3730 G=G/SOR(B3*B3+B4*B4)

3735 NEXT I

3740 LM=8.685889638★*LOG(G)

3750 Q=0

3755 IF M=0 THEN 3830

3760 IF M1=0 THEN 3790

3765 FOR I=1 TO M1

3770 Q(I)=ATN(T1(I)*W)

3775 Q=Q+Q(I)

3780 NEXT I

3785 IF F1=0 THEN 3830

3790 FOR I=1 TO F1

3795 IF B1=0 THEN 3815

3800 Q(I)=ATN(B2/B1)

3805 IF B1>0 THEN 3820

3810 Q(I)=Q(I)+.5*PI∶GOTO 3820

3815 Q(I)=.5*PI

3820 Q=Q+Q(I)

3825 NEXT I

3830 IF V=0 THEN 3840

3835 Q=Q-.5*V*PI

3840 IF N1=0 THEN 3865

3845 FOR I=1 TO N1

3850 Q(I)= ATN(T2(I)*W)

3855 Q=Q+Q(I)

3860 NEXT I

3865 IF F2=0 THEN 3915

3870 FOR I=1 TO F2

3875 IF B3=0THEN 3900

3880 Q(Ⅰ)=-ATN(B4/B3)

3885 IF B3>0 THEN 3905

3890 Q(I)=Q(I)-PI

3895 GOTO 3905

3900 Q(I)=-,5*PI

3905 Q=Q+Q(I)

3910NEXT I

3915 Q=Q+T

3920 RETURN

3950 DATA 600,150,190,80

3955 DATA 80,0.8,0.2,1.05

3960 DATA

3965 DATA

3970 DATA

3975 DATA

3990 END

分享到: