subroutine Drawworks_Direction Use CDrillingConsoleVariables Use CDataDisplayConsoleVariables Use Drawworks_VARIABLES IMPLICIT NONE if (Drawworks%Conv_Ratio==1.d0) then IF (Drawworks%motion==+1) THEN Call Drawworks_Free_Traction_motor_Dir if (Drawworks%w_drum_Dir<=0.) then Drawworks%motion = 0 else Drawworks%motion = +1 Call Drawworks_Free_Traction_motor Drawworks%w = Drawworks%w_drum*Drawworks%Conv_Ratio Drawworks%w_old = Drawworks%w_old_drum*Drawworks%Conv_Ratio end if ELSE if (((Drawworks%F_fastline*(Drawworks%Diameter/2.0d0))-(((Drawworks%Diameter/2.0d0)*Drawworks%BreakLoad)*(Drawworks%ManualBreak/100.0d0)))<=0.) then Drawworks%motion = 0 Drawworks%w_drum = 0.0d0 Drawworks%w_old_drum = 0.0d0 Drawworks%w = Drawworks%w_drum*Drawworks%Conv_Ratio Drawworks%w_old = Drawworks%w_old_drum*Drawworks%Conv_Ratio Drawworks%Hook_Height = Drawworks%Hook_Height Drawworks%ia = 0. Drawworks%ia_old = 0. Drawworks%x = 0. Drawworks%x_old = 0. Drawworks%y = 0. Drawworks%y_old = 0. else Drawworks%motion = -1 Call Drawworks_Free_Traction_motor_dawn_motion Drawworks%w = Drawworks%w_drum*Drawworks%Conv_Ratio Drawworks%w_old = Drawworks%w_old_drum*Drawworks%Conv_Ratio end if END IF else IF (Drawworks%motion==-1) THEN Drawworks%w = -Drawworks%w Drawworks%w_old = -Drawworks%w_old Drawworks%w_drum = -Drawworks%w_drum Drawworks%w_old_drum = -Drawworks%w_old_drum END IF Call Drawworks_Traction_motor_ClutchMode_Dir IF (Drawworks%w_Dir>0.) then Drawworks%motion = +1 Call Drawworks_Traction_motor_ClutchMode Drawworks%w_drum = Drawworks%w/Drawworks%Conv_Ratio Drawworks%w_old_drum = Drawworks%w_old/Drawworks%Conv_Ratio ELSE Drawworks%EddyTorque = (1.039d5*exp(4.343d-4*(30.0d0*(Drawworks%w/Drawworks%Conv_Ratio)/pi)))+(-1.036d5*exp(-.047920d0*(30.0d0*(Drawworks%w/Drawworks%Conv_Ratio)/pi))) !Lbf.ft if (Drawworks%EddyTorque>115000.) then Drawworks%EddyTorque = 115000.0d0 end if Drawworks%EddyTorque = 1.355817948*Drawworks%EddyTorque ![N.m] if ((Drawworks%F_fastline*(Drawworks%Diameter/2.0d0))>((((Drawworks%Diameter/2.0d0)*Drawworks%BreakLoad)*(Drawworks%ManualBreak/100.0d0))+(Drawworks%EddyTorque*(Drawworks%EddyBreak/100.0d0)))) then Drawworks%motion = -1 IF (Drawworks%w_drum<0.) THEN Drawworks%w = -Drawworks%w Drawworks%w_old = -Drawworks%w_old !Drawworks%w = 0. !??????????????? !Drawworks%w_old = 0. !??????????????? Drawworks%w_drum = -Drawworks%w_drum Drawworks%w_old_drum = -Drawworks%w_old_drum END IF Drawworks%Conv_Ratio = 1. Call Drawworks_Free_Traction_motor_dawn_motion Drawworks%w = Drawworks%w_drum*Drawworks%Conv_Ratio Drawworks%w_old = Drawworks%w_old_drum*Drawworks%Conv_Ratio !Drawworks%w_drum = Drawworks%w/Drawworks%Conv_Ratio !Drawworks%w_old_drum = Drawworks%w_old/Drawworks%Conv_Ratio else Drawworks%motion = 0 Drawworks%w_drum = 0.0d0 Drawworks%w_old_drum = 0.0d0 Drawworks%w = Drawworks%w_drum*Drawworks%Conv_Ratio Drawworks%w_old = Drawworks%w_old_drum*Drawworks%Conv_Ratio Drawworks%Hook_Height = Drawworks%Hook_Height Drawworks%ia = 0. Drawworks%ia_old = 0. Drawworks%x = 0. Drawworks%x_old = 0. Drawworks%y = 0. Drawworks%y_old = 0. end if END IF end if Call DWBrakeSound !print* , 'Drawworks%ia_new=' , Drawworks%ia_new !print* , 'Drawworks%ia_ref=' , Drawworks%ia_ref !print* , 'Drawworks%Vt=' , Drawworks%Vt !print* , 'Drawworks%w_new=' , Drawworks%w_new end subroutine Drawworks_Direction