C**** 降圧チョッパの過渡解析 **** C* 配列宣言 * DIMENSION IMODE(1005),A1(2,2),A2(2,2),F1(2,2),F2(2,2), 1 X1(2,1),X2(2,1) C* 実数型宣言 * REAL L,I C* パラメータ設定 * C- スイッチング周波数 - FS=1000.0 C- デューティ(通流率=オン時間/スイッチング周期) - DUTY=0.5 C- 直流電圧,負荷抵抗とインダクタンス - E=100.0 R=10.0 L=0.05 C- 計算周期数 - LOP=15 C- スイッチング周期の分割数 - IDIV=100 C* パラメータ計算 * C- スイッチング周期 - TS=1.0/FS C- 1分割の時間 - DELTA=TS/REAL(IDIV) C* 計算条件のディスプレイ表示 * WRITE(6,600)FS,TS,DUTY,IDIV,LOP,E,R,L*1000.0 600 FORMAT('降圧チョッパの過渡解析'// 1 ' スイッチング周波数:',E12.4,' Hz'/ 1 '  スイッチング周期:',E12.4,' Sec.'/ 1 'デューティ(通流率):',F5.2/ 1 '   1周期の分割数:',I6/ 1 '     計算周期数:',I6/ 1 '      直流電圧:',F6.1,' V'/ 1 '      負荷抵抗:',F6.1,' Ω'/ 1 ' 負荷インダクタンス:',F6.1,' mH'/) C* 動作モードの設定 * C- オン期間の分割数 - IONNUM=INT(REAL(IDIV)*DUTY) DO 100 I=1,IONNUM IMODE(I)=1 100 CONTINUE DO 101 I=IONNUM+1,IDIV IMODE(I)=2 101 CONTINUE C* 各動作モードの行列設定 * A1(1,1)=0.0 A1(1,2)=0.0 A1(2,1)=1.0/L A1(2,2)=-R/L A2(1,1)=0.0 A2(1,2)=0.0 A2(2,1)=0.0 A2(2,2)=-R/L C* 各動作モードの遷移行列の計算 * CALL TRANS2(A1,DELTA,F1) CALL TRANS2(A2,DELTA,F2) C* 負荷電圧と負荷電流の初期値設定 * ERL=E I=0.0 X1(1,1)=ERL X1(2,1)=I NO=0 T=0.0 C* 出力データ保存ファイルオープン,初期データ出力 * open(3,file='D:\results.csv') write(3,300) 300 format('No,t,eRL,i') WRITE(3,301)NO,T,ERL,I 301 FORMAT(I6,',',E13.5,',',E13.5,',',E13.5) C== 瞬時値の計算 == DO 1000 ILOP=1,LOP DO 1001 K=1,IDIV NO=IDIV*(ILOP-1)+K T=(1.0/FS)*REAL(NO)/REAL(IDIV) IF(K==IONNUM+1) X1(1,1)=0.0 IF(IMODE(K).EQ.1) CALL MMUL1S(F1,X1,X2,2,2,1,ILL) IF(IMODE(K).EQ.2) CALL MMUL1S(F2,X1,X2,2,2,1,ILL) ERL=X2(1,1) I=X2(2,1) C- データ出力 - WRITE(3,301)NO,T,ERL,I C- 瞬時値の置き換え - X1(1,1)=X2(1,1) X1(2,1)=X2(2,1) 1001 CONTINUE C- 瞬時値の置き換え - X1(1,1)=E 1000 CONTINUE C* 出力データ保存ファイルクローズ * close(3) end INCLUDE "D:\Fsource\Fort-Lib\TRANS2.FOR" INCLUDE "D:\Fsource\Fort-Lib\MMUL1S.FOR"