|
- subroutine Pump_Traction_Motor(Pump_No)
-
- use Pump_VARIABLES
- use CPumpsVariables
- use CDrillingConsoleVariables
- use CDataDisplayConsoleVariables
- use CSimulationVariables
-
-
- IMPLICIT NONE
- INTEGER :: Pump_No
-
-
-
- !>>>>>>>>>>>>>>>>>>>>>>> DATA <<<<<<<<<<<<<<<<<<<<<<<<<<<
- PUMP(Pump_No)%TL = 0.112985*PUMP(Pump_No)%Torque/2.d0
-
- La = 1700.*1d-6 !170.*1d-6 !1700.*1d-6
- !Lf = 260.*1d-6
- Lf = 0.d0
- Ra = 9.5*1d-3 !0.1d0 !9.5*1d-3
- !Rf = 5.4*1d-3
- Rf = 0.d0
-
- !******** controller *******
- Kpn = 11. !3. !=11.
- !Kin = 50.
- Kpi = 100.
- Kii = 900.
-
-
- PUMP(Pump_No)%time = PUMP(Pump_No)%time_step
- PUMP(Pump_No)%dt = 1.d-5
- PUMP(Pump_No)%error = .001
-
- !>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
- PUMP(Pump_No)%n = PUMP(Pump_No)%time/PUMP(Pump_No)%dt
- !PUMP(Pump_No)%w_ref = (pi*(PUMP(Pump_No)%N_ref+102.d0)/30.d0)
- PUMP(Pump_No)%w_ref = (pi*(PUMP(Pump_No)%N_ref)/30.d0)
-
- !if (PUMP(Pump_No)%N_ref<=0.) then
- ! PUMP(Pump_No)%w_ref = 0.
- !end if
-
-
- !if (PUMP(Pump_No)%N_ref<=0.) then
- ! PUMP(Pump_No)%w_ref = 0.
- ! PUMP(Pump_No)%w_old = 0.
- ! PUMP(Pump_No)%w = 0.
- !end if
-
-
- PUMP(Pump_No)%ia_er = 1.
- PUMP(Pump_No)%w_er = 1.
- PUMP(Pump_No)%x_er = 1.
-
-
- PUMP(Pump_No)%i = 1
-
- !>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- DO WHILE (PUMP(Pump_No)%i<=PUMP(Pump_No)%n)
-
- !>>>>>>>>>>>> Runge-Kutta Method (4th order) <<<<<<<<<<<<<<
-
- call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt),PUMP(Pump_No)%ia,PUMP(Pump_No)%w,PUMP(Pump_No)%x,Pump_No)
- call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt),PUMP(Pump_No)%ia,PUMP(Pump_No)%w,PUMP(Pump_No)%fii,PUMP(Pump_No)%x,Pump_No)
- call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt),PUMP(Pump_No)%ia,PUMP(Pump_No)%w,PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No)
- PUMP(Pump_No)%K1x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx
- PUMP(Pump_No)%K1ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia
- PUMP(Pump_No)%K1w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw
-
- call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K1ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K1w/2.),PUMP(Pump_No)%x+(PUMP(Pump_No)%K1x/2.),Pump_No)
- call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K1ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K1w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%x+(PUMP(Pump_No)%K1x/2.),Pump_No)
- call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K1ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K1w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No)
- PUMP(Pump_No)%K2x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx
- PUMP(Pump_No)%K2ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia
- PUMP(Pump_No)%K2w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw
-
- call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K2ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K2w/2.),PUMP(Pump_No)%x+(PUMP(Pump_No)%K2x/2.),Pump_No)
- call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K2ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K2w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%x+(PUMP(Pump_No)%K2x/2.),Pump_No)
- call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K2ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K2w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No)
- PUMP(Pump_No)%K3x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx
- PUMP(Pump_No)%K3ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia
- PUMP(Pump_No)%K3w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw
-
- call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+PUMP(Pump_No)%dt,PUMP(Pump_No)%ia+PUMP(Pump_No)%K3ia,PUMP(Pump_No)%w+PUMP(Pump_No)%K3w,PUMP(Pump_No)%x+PUMP(Pump_No)%K3x,Pump_No)
- call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+PUMP(Pump_No)%dt,PUMP(Pump_No)%ia+PUMP(Pump_No)%K3ia,PUMP(Pump_No)%w+PUMP(Pump_No)%K3w,PUMP(Pump_No)%fii,PUMP(Pump_No)%x+PUMP(Pump_No)%K3x,Pump_No)
- call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+PUMP(Pump_No)%dt,PUMP(Pump_No)%ia+PUMP(Pump_No)%K3ia,PUMP(Pump_No)%w+PUMP(Pump_No)%K3w,PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No)
- PUMP(Pump_No)%K4x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx
- PUMP(Pump_No)%K4ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia
- PUMP(Pump_No)%K4w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw
-
- PUMP(Pump_No)%x_new = PUMP(Pump_No)%x_old+((PUMP(Pump_No)%K1x+(2.*PUMP(Pump_No)%K2x)+(2.*PUMP(Pump_No)%K3x)+PUMP(Pump_No)%K4x)/6.)
- PUMP(Pump_No)%ia_new = PUMP(Pump_No)%ia_old+((PUMP(Pump_No)%K1ia+(2.*PUMP(Pump_No)%K2ia)+(2.*PUMP(Pump_No)%K3ia)+PUMP(Pump_No)%K4ia)/6.)
- PUMP(Pump_No)%w_new = PUMP(Pump_No)%w_old+((PUMP(Pump_No)%K1w+(2.*PUMP(Pump_No)%K2w)+(2.*PUMP(Pump_No)%K3w)+PUMP(Pump_No)%K4w)/6.)
-
- !>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-
- PUMP(Pump_No)%x_old = PUMP(Pump_No)%x_new
- PUMP(Pump_No)%ia_old = PUMP(Pump_No)%ia_new
- PUMP(Pump_No)%w_old = PUMP(Pump_No)%w_new
- PUMP(Pump_No)%x = PUMP(Pump_No)%x_new
- PUMP(Pump_No)%ia = PUMP(Pump_No)%ia_new
- PUMP(Pump_No)%w = PUMP(Pump_No)%w_new
- PUMP(Pump_No)%Te = PUMP(Pump_No)%fii*PUMP(Pump_No)%ia_new
-
- !PUMP(Pump_No)%Vt = PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new)
- !IF (PUMP(Pump_No)%Vt>810.) THEN
- ! PUMP(Pump_No)%Vt = 810.
- !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN
- ! PUMP(Pump_No)%Vt = 0.
- !END IF
-
- PUMP(Pump_No)%i = PUMP(Pump_No)%i+1
-
- END DO
- !>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-
-
-
- end subroutine Pump_Traction_Motor
|