计算机绘制伯德图程序
出处:按学科分类—工业技术 北京理工大学出版社《新编液压工程手册上册》第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 若系统开环传递函数为
[解] ①在程序中给出数据
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