module OperationScenariosModule !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! Paseted From ....Variables.f90 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! use OperationScenariosModule ! ! use OperationScenariosModule !!CElevator... ! use COperationScenariosVariables use SimulationVariables use PermissionsModule ! use SoftwareInputsVariables ! use CUnityInputs use UnityModule use UnitySignalVariables use UnitySignalsModule use PermissionsModule ! use CTdsElevatorModesEnumVariables ! use CHoistingVariables use CTopDrivePanelVariables use NotificationModule use SoftwareInputsModule contains subroutine OperationScenariosToJson(parent) type(json_value),pointer :: parent type(json_core) :: json type(json_value),pointer :: p ! 1. create new node call json%create_object(p,'OperationScenarios') ! 2. add member of data type to new node call json%add(p,"ElevatorConnection",data%State%OperationScenario%ElevatorConnection) call json%add(p,"StringUpdate",data%State%OperationScenario%StringUpdate) call json%add(p,"KellyConnection",data%State%OperationScenario%KellyConnection) ! 3. add new node to parent call json%add(parent,p) end subroutine ! moved from kellyConnectionEnum subroutine Set_KellyConnection(v) use CManifolds, Only: KellyConnected, KellyDisconnected implicit none integer , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%OperationScenario%KellyConnection == v) return #endif data%State%OperationScenario%KellyConnection = v if(data%State%OperationScenario%KellyConnection /= KELLY_CONNECTION_STRING) then call KellyDisconnected() else call KellyConnected() endif #ifdef deb print*, 'data%State%OperationScenario%KellyConnection=', data%State%OperationScenario%KellyConnection #endif !**call data%State%OperationScenario%OnKellyConnectionChange%RunAll() end subroutine integer function Get_KellyConnection() implicit none Get_KellyConnection = data%State%OperationScenario%KellyConnection end function subroutine Evaluate_KellyConnection() implicit none if (data%Configuration%Hoisting%DriveType == TopDrive_DriveType) then #ifdef OST print*, 'Evaluate_KellyConnection=TopDrive' #endif endif if (data%Configuration%Hoisting%DriveType == Kelly_DriveType) then #ifdef OST print*, 'Evaluate_KellyConnection=Kelly' #endif !!OPERATION-CODE=4 !if (Get_OperationCondition() == OPERATION_DRILL .and.& ! Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& ! Get_Swing() == SWING_MOUSE_HOLE_END .and.& ! Get_TongNotification() .and.& ! Get_FillMouseHoleLed() == .false. .and.& ! Get_Tong() == TONG_BREAKOUT_END) then ! ! call Set_FillMouseHoleLed(.true.) ! return !end if !OPERATION-CODE=1 if (Get_OperationCondition() == OPERATION_DRILL .and.& !Get_JointConnectionPossible() .and.& Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and.& Get_Swing() == SWING_WELL_END .and.& !Get_TongNotification() .and.& Get_Tong() == TONG_MAKEUP_END) then !call Log_4('KELLY_CONNECTION_STRING') call Set_Tong(TONG_NEUTRAL) call Set_KellyConnection(KELLY_CONNECTION_STRING) return end if !OPERATION-CODE=2 if (Get_OperationCondition() == OPERATION_DRILL .and.& Get_StringPressure() == 0 .and.& Get_HookHeight() <= (data%State%OperationScenario%HKL + Get_NearFloorConnection()) .and.& Get_KellyConnection() == KELLY_CONNECTION_STRING .and.& Get_Swing() == SWING_WELL_END .and.& !Get_TongNotification() .and.& Get_Tong() == TONG_BREAKOUT_END) then call Set_Tong(TONG_NEUTRAL) call Set_KellyConnection(KELLY_CONNECTION_NOTHING) call Set_SwingLed(.true.) return end if !OPERATION-CODE=3 if (Get_OperationCondition() == OPERATION_DRILL .and.& !Get_JointConnectionPossible() .and.& Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and.& Get_Swing() == SWING_MOUSE_HOLE_END .and.& !Get_TongNotification() .and.& Get_FillMouseHoleLed() .and.& Get_Tong() == TONG_MAKEUP_END) then call Set_Tong(TONG_NEUTRAL) call Set_KellyConnection(KELLY_CONNECTION_SINGLE) call Set_SwingLed(.false.) call Set_FillMouseHoleLed(.false.) call Set_MouseHole(MOUSE_HOLE_NEUTRAL) return end if !OPERATION-CODE=4 if (Get_OperationCondition() == OPERATION_DRILL .and.& Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& Get_Swing() == SWING_MOUSE_HOLE_END .and.& !Get_TongNotification() .and.& Get_FillMouseHoleLed() == .false. .and.& Get_Tong() == TONG_BREAKOUT_END) then call Set_Tong(TONG_NEUTRAL) call Set_KellyConnection(KELLY_CONNECTION_NOTHING) call Set_FillMouseHoleLed(.true.) call Set_MouseHole(MOUSE_HOLE_NEUTRAL) return end if !OPERATION-CODE=5 if (Get_OperationCondition() == OPERATION_DRILL .and.& !Get_JointConnectionPossible() .and.& Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& Get_Swing() == SWING_WELL_END .and.& !Get_TongNotification() .and.& Get_Tong() == TONG_MAKEUP_END) then call Set_Tong(TONG_NEUTRAL) call Set_KellyConnection(KELLY_CONNECTION_STRING) call Set_StringUpdate(STRING_UPDATE_ADD_SINGLE) call Set_SwingLed(.false.) return end if !OPERATION-CODE=6 if (Get_OperationCondition() == OPERATION_DRILL .and.& Get_StringPressure() == 0 .and.& Get_HookHeight() > 70.0 .and.& Get_KellyConnection() == KELLY_CONNECTION_STRING .and.& !Get_TongNotification() .and.& Get_Swing() == SWING_WELL_END .and.& Get_Tong() == TONG_BREAKOUT_END) then call Set_Tong(TONG_NEUTRAL) call Set_KellyConnection(KELLY_CONNECTION_SINGLE) call Set_StringUpdate(STRING_UPDATE_REMOVE_SINGLE) return end if endif end subroutine ! subroutine Subscribe_KellyConnection() ! use CDrillingConsoleVariables ! use ConfigurationVariables ! use ConfigurationVariables ! implicit none ! call OnBreakoutLeverPress%Add(ButtonPress_Breakout) ! call OnMakeupLeverPress%Add(ButtonPress_Makeup) ! end subroutine subroutine ButtonPress_Breakout() implicit none #ifdef deb print*, 'ButtonPress_Breakout on ======> CKellyConnectionEnum' #endif end subroutine subroutine ButtonPress_Makeup() implicit none #ifdef deb print*, 'ButtonPress_Makeup on ======> CKellyConnectionEnum' #endif end subroutine subroutine Set_StringUpdate(v) implicit none integer , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%OperationScenario%StringUpdate == v) return #endif data%State%OperationScenario%StringUpdate = v !**call data%State%OperationScenario%OnStringUpdateChange%RunAll(v) end subroutine integer function Get_StringUpdate() implicit none Get_StringUpdate = data%State%OperationScenario%StringUpdate end function real(8) function TJH() use TD_DrillStemComponents implicit none TJH = data%State%TD_String%TopJointHeight end function real function TL() implicit none TL = 26.97 end function real function NFC() implicit none NFC = Get_NearFloorConnection() end function subroutine Set_ElevatorConnection(v) implicit none integer , intent(in) :: v #ifdef ExcludeExtraChanges if(data%State%OperationScenario%ElevatorConnection == v) return #endif data%State%OperationScenario%ElevatorConnection = v #ifdef deb print*, 'data%State%OperationScenario%ElevatorConnection=', data%State%OperationScenario%ElevatorConnection #endif !**call data%State%OperationScenario%OnElevatorConnectionChange%RunAll() end subroutine integer function Get_ElevatorConnection() implicit none Get_ElevatorConnection = data%State%OperationScenario%ElevatorConnection end function end module OperationScenariosModule