--+------------------------------------------------------------------------+ --+ SOHO Project -- Control File --+ ---------------------------- --+ --+ Name : MDI_LDP , !Proc_s , !Print --+ Purpose : (See Procedure header) --+ --+ Sub_system : PLM --+ Drawing No : 3137-ZA042-SCB Issue : A/00 --+ Project No : SH-MAR-SW-70224 --+ Origin : UK --+ Author : Jon B. CARTER --+------------------------------------------------------------------------+ --+ Principle : --+ --------- --+ Holding CF for a group of related Procedures, originally written in --+ MDI's own Control File language. --+ --+ Passed parameters : --+ ----------------- --+ !Proc_s : Name of required Procedure. --+ !Print : CF Log print indicator ( "yes" (default) | "no" ). --+ --+ Prerequisites : --+ ------------- --+ Control File MDI_ON must have been sucessfully performed --+ --+ History : --+ ------- --+ Issue SIC Note Time Date Name / Updates --+ +---+ +------+ +---+ +------+ +-------------------------------------+ --+ 1/00 211 16:53 30/11/93 A.J. TURK -- Conversion from MDI language. --+ 1/01 289 16:33 07/02/94 Ph. IATRINO -- During debug phase. --+ 1/02 360 10:17 05/05/94 Ed COBB/Ph. IATRINO -- Rationalization --+ 1/03 393 09:05 18/05/94 Ed COBB -- MDI Updates --+ 1/07 443 16:03 17/06/94 Ed COBB -- CF Errors. --+ 1/13 531 23:00 06/01/95 Ed COBB -- Experimenter Requested Mods. --+ --+------------------------------------------------------------------------+ Common Var Bool !GZ_Window -- Open window flag (on CF start) Bool !GZ_Spool -- Automatic Spool (at End of CF exec) Bool !GZ_Halt -- Check Error flag (to halt if error) Bool !GZ_Test -- Execution test flag (to not send TC) Int !GZ_Trace -- Level of Trace (TBD) Int !GM_NbErr -- MDI Global Error Count Int !GM_Conf -- MDI Configuration End Common -------------------------------------------------------------------------------< Extern Cfile PLM_BLOCK Group MWTM , PWP12TM Procedure AskReal , AskStr , AskInt Procedure CheckAna , CheckDig , CheckReg Procedure CheckArgReal , CheckArgStr , CheckArgInt Procedure DispMess Procedure ExConnect , ExDisconnect Procedure ExitCF Procedure Message Procedure OpenWindow Procedure PrintAna , PrintDig , PrintReg , PrintParam Procedure SendCommand Procedure Lower , Upper Procedure WaitAna , WaitDig , WaitReg , WaitTime End Extern -------------------------------------------------------------------------------< Program MDI_LDP , Unique Defarg Str(80) !Proc_s Str(3) !Print = "yes" End Defarg Var Str( 3) !ExpName = "MDI" Int !NbErr = 0 Str(49) !Title = " " Str(80) !S = &80s(" ") Main @OpenWindow() Select !Proc_s Case "ldpcom" @ldpcom() Default !Title = "*ERROR: UNKNOWN PROCEDURE: "+!Proc_s @Message("DCL" , "date" , !ExpName , " " , !Title , *!S) -- Beep Halt !Title = "*Operator CONTinue" @Message("DC" , "date" , !ExpName , " " , !Title , *!S) Return !Rstat End Select @ExitCF (!NbErr) @PrintCF ( !ExpName , !Print ) Return !Rstat End Program ----------------------------------------------------------------------------------< Procedure ldpcom ( ) --. --. This procedure file performs the commissioning test of the DEP --. Var Str( 3) !ExpName = "MDI" Str(10) !Phase = " " Str(49) !Title = " " Str(80) !S = &80s(" ") Int !NbErr = 0 Int !Get_int = 0 Real !Get_real = 0.0 Str(80) !Get_dig = "" Str(80) !Resp_s = "" Str(80) !Question = "" Str(80) !Check = "" Int !Cmd_data_i(30) Int !LM_I0 = 0 Int !LM_I1 = 0 Int !LM_I2 = 0 Int !LM_I3 = 0 Int !LM_I4 = 0 Str(80) !LM_S9 = "" Main !Title = "-EXECUTING PROCEDURE: ldpcom" @Message( "DCL" , "time" , !ExpName , !Phase , !Title , *!S ) !Title = "~DEP test, Intra-instrument commands" @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Question = "MDI Display 5K Science Data" !Check = "in DONE, done" @AskStr (!Question, !Check, *!Resp_s, *!S, *!NbErr) !LM_I0 = Get( "MKTCCNT" ) !Title = "Command Counter = " + &3d( !LM_I0 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) @SendCommand ( "MBSNOP" , "" ) -- NOP Block Command Inhibit "MKPWFD" @SendCommand ( "MBSESR" , "" ) -- Emergency Sun Acquisition @WaitTime ( "00h01m00s" , *!S ) @SendCommand ( "MBPWFDOF" , "" ) @WaitTime ( "00h00m45s" , *!S ) Expect "MKPWFD" , "OFF" , 1 Enable "MKPWFD" -- @SendCommand ( "MBSIIVR", "" ) -- Intra-instrument Reset @SendCommand ( "MBSIISB", "" ) -- Intra-instrument Mode (Standby) @WaitTime ( "00h00m45s" , *!S ) !LM_I1 = Get( "MKTCCNT" ) !Title = "Command Counter = " + &3d( !LM_I1 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !LM_I2 = !LM_I1 - !LM_I0 !Title = "Difference (Expect 3): " + &d( !LM_I2 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) @SendCommand ( "MBSIIRC" , "" ) -- Intra-instrument Mode (Receiver) @SendCommand ( "MBSIICD" , "0XAA88 , 0X556E" ) -- Intra instrument data @WaitTime ( "00h00m45s" , *!S ) !LM_I3 = Get( "MKTCCNT" ) !Title = "Command Counter = " + &3d( !LM_I3 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !LM_I4 = !LM_I3 - !LM_I1 !Title = "Difference (Expect 2): " + &d( !LM_I4 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKTCIIM" ) !Title = "Intra-Instrument Master: " + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKTCIIE" ) !Title = "Intra_Instrument Event ID: " + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKTCIIX" ) !Title = "Intra-Instrument X Coordinate: " + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKTCIIY" ) !Title = "Intra-Instrument Y Coordinate: " + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Title = "~DEP load test" @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Cmd_data_i(0) = 0X1000 !Cmd_data_i(1) = 0X0F00 !Cmd_data_i(2) = 0X0100 !Cmd_data_i(3) = 0X0302 !Cmd_data_i(4) = 0X0504 !Cmd_data_i(5) = 0X0706 !Cmd_data_i(6) = 0X0908 !Cmd_data_i(7) = 0X0B0A !Cmd_data_i(8) = 0x0D0C PERFORM/NO PLM_BLOCK , "MDI" , 0x0A, !Cmd_data_i() , 9 !Cmd_data_i(0) = 0X1000 !Cmd_data_i(1) = 0X0F10 !Cmd_data_i(2) = 0X1110 !Cmd_data_i(3) = 0X1312 !Cmd_data_i(4) = 0X1514 !Cmd_data_i(5) = 0X1716 !Cmd_data_i(6) = 0X1918 !Cmd_data_i(7) = 0X1B1A !Cmd_data_i(8) = 0x1D1C PERFORM/NO PLM_BLOCK , "MDI" , 0x0A, !Cmd_data_i() , 9 !Cmd_data_i(0) = 0X1000 !Cmd_data_i(1) = 0X0F20 !Cmd_data_i(2) = 0X2120 !Cmd_data_i(3) = 0X2322 !Cmd_data_i(4) = 0X2524 !Cmd_data_i(5) = 0X2726 !Cmd_data_i(6) = 0X2928 !Cmd_data_i(7) = 0X2B2A !Cmd_data_i(8) = 0x2D2C PERFORM/NO PLM_BLOCK , "MDI" , 0x0A, !Cmd_data_i() , 9 !Cmd_data_i(0) = 0X1000 !Cmd_data_i(1) = 0X0F30 !Cmd_data_i(2) = 0X3130 !Cmd_data_i(3) = 0X3332 !Cmd_data_i(4) = 0X3534 !Cmd_data_i(5) = 0X3736 !Cmd_data_i(6) = 0X3938 !Cmd_data_i(7) = 0X3B3A !Cmd_data_i(8) = 0x3D3C PERFORM/NO PLM_BLOCK , "MDI" , 0x0A, !Cmd_data_i() , 9 !Cmd_data_i(0) = 0X1000 !Cmd_data_i(1) = 0X0F40 !Cmd_data_i(2) = 0X4140 !Cmd_data_i(3) = 0X4342 !Cmd_data_i(4) = 0X4544 !Cmd_data_i(5) = 0X4746 !Cmd_data_i(6) = 0X4948 !Cmd_data_i(7) = 0X4B4A !Cmd_data_i(8) = 0x4D4C PERFORM/NO PLM_BLOCK , "MDI" , 0x0A, !Cmd_data_i() , 9 !Cmd_data_i(0) = 0X1000 !Cmd_data_i(1) = 0X0F50 !Cmd_data_i(2) = 0X5150 !Cmd_data_i(3) = 0X5352 !Cmd_data_i(4) = 0X5554 !Cmd_data_i(5) = 0X5756 !Cmd_data_i(6) = 0X5958 !Cmd_data_i(7) = 0X5B5A !Cmd_data_i(8) = 0x5D5C PERFORM/NO PLM_BLOCK , "MDI" , 0x0A, !Cmd_data_i() , 9 !Title = "~DEP memory dump test in sci5k" @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) @SendCommand ( "MBDPMD" , "0X1000 , 0X0F00 , 0X0100" ) -- dump 256 bytes !Title = "Load DEP sequence registers" @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !LM_I0 = Get( "MKSQRG0" ) !Title = "Sq Reg 0 = 0x" + &x( !LM_I0 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !LM_I0 = !LM_I0 + 16 @SendCommand ( "MBSQREG" , "0 , " + &d( !LM_I0 )) !LM_I0 = Get( "MKSQRG1" ) !Title = "Sq Reg 1 = 0x" + &x( !LM_I0 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !LM_I0 = !LM_I0 + 16 @SendCommand ( "MBSQREG" , "1 , " + &d( !LM_I0 )) !LM_I0 = Get( "MKSQRG2" ) !Title = "Sq Reg 2 = 0x" + &x( !LM_I0 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !LM_I0 = !LM_I0 + 16 @SendCommand ( "MBSQREG" , "2 , " + &d( !LM_I0 )) !LM_I0 = Get( "MKSQRG3" ) !Title = "Sq Reg 3 = 0x" + &x( !LM_I0 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !LM_I0 = !LM_I0 + 16 @SendCommand ( "MBSQREG" , "3 , " + &d( !LM_I0 )) !LM_I0 = Get( "MKSQRG4" ) !Title = "Sq Reg 4 = 0x" + &x( !LM_I0 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !LM_I0 = !LM_I0 + 16 @SendCommand ( "MBSQREG" , "4 , " + &d( !LM_I0 )) !LM_I0 = Get( "MKSQRG5" ) !Title = "Sq Reg 5 = 0x" + &x( !LM_I0 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !LM_I0 = !LM_I0 + 16 @SendCommand ( "MBSQREG" , "5 , " + &d( !LM_I0 )) !LM_I0 = Get( "MKSQRG6" ) !Title = "Sq Reg 6 = 0x" + &x( !LM_I0 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !LM_I0 = !LM_I0 + 16 @SendCommand ( "MBSQREG" , "6 , " + &d( !LM_I0 )) !LM_I0 = Get( "MKSQRG7" ) !Title = "Sq Reg 7 = 0x" + &x( !LM_I0 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !LM_I0 = !LM_I0 + 16 @SendCommand ( "MBSQREG" , "7 , " + &d( !LM_I0 )) @WaitTime ( "00h00m15s" , *!S ) !Title = "Sequence Registers :" @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKSQRG0" ) !Title = "Sq Reg 0 = 0x" + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKSQRG1" ) !Title = "Sq Reg 1 = 0x" + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKSQRG2" ) !Title = "Sq Reg 2 = 0x" + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKSQRG3" ) !Title = "Sq Reg 3 = 0x" + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKSQRG4" ) !Title = "Sq Reg 4 = 0x" + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKSQRG5" ) !Title = "Sq Reg 5 = 0x" + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKSQRG6" ) !Title = "Sq Reg 6 = 0x" + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKSQRG7" ) !Title = "Sq Reg 7 = 0x" + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Cmd_data_i(0) = 0x08 !Cmd_data_i(1) = 1 !Cmd_data_i(2) = 0 !Cmd_data_i(3) = 255 !Cmd_data_i(4) = 255 !Cmd_data_i(5) = 1 !Cmd_data_i(6) = 71 !Cmd_data_i(7) = 69 !Cmd_data_i(8) = 2 !Cmd_data_i(9) = 80 !Cmd_data_i(10) = 87 Perform PLM_BLOCK , "MDI" , 19, !Cmd_data_i() , 11 -- Load MTM offsets !Get_int = Get( "MKDPOLVR" ) !Title = "MTM Lookup Table Version: " + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Question = "Test DEP Oven Monitor (Y or N)?" !Check = "in Y, y, N, n" @AskStr ( !Question , !Check , *!LM_S9 , *!S , *!NbErr ) @Upper( !LM_S9 , *!LM_S9 ) If !LM_S9 <> "Y" Then Goto ##DONE End If !Title = "Turn HPO ON, set point to 0 (33.05)" @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) @SendCommand ( "MBPWHPON" , "" ) @SendCommand ( "MBHPOSPT" , "0" ) Expect "MKPWHPO" , "ON" , 2 Enable "MKPWHPO" @WaitTime ( "00h00m45s", *!S ) @CheckReg ( "MKHPOSPT" , "= 0" , *!NbErr ) !Title = "Turn ON HPO monitor" @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) @SendCommand ( "MBHPOMTW" , "2" ) @SendCommand ( "MBOVNMAX" , "0" ) @SendCommand ( "MBHPOMON" , "" ) @WaitTime ( "00h00m45s" , *!S ) @CheckReg( "MKOVNMAX" , "= 0" , *!NbErr ) @CheckAna( "MUHPOLOP" , "> -1.0 and < 4.7" , *!NbErr ) @CheckAna( "MUHPOBRG" , "> -1.0 and < 4.7" , *!NbErr ) !Title = "~DEP Oven Monitor Test" @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKHPOSPT" ) !Title = "Prime Oven Set Point " + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) !Get_int = Get( "MKHPOMTW" ) !Title = "Prime Oven Monitoring Time " + &d( !Get_int ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) For !LM_I0 = 0 to 15 !LM_I1 = !LM_I0 * 15 !LM_I2 = !LM_I0 + 1 !Title = "Iteration Number = " + &3d( !LM_I2 ) +\ " Elapsed Time = " + &3d( !LM_I1 ) @Message( "DC" , "time" , !ExpName , !Phase , !Title , *!S ) @PrintParam( "MKHPOMON" , "DIG" ) @PrintParam( "MTSQOPT4" , "ANA" ) @PrintParam( "MKPWHPO" , "DIG" ) @WaitTime ( "00h00m15s" , *!S ) End For @SendCommand ( "MBHPOMOF" , "" ) @SendCommand ( "MBPWHPOF" , "" ) Expect "MKPWHPO" , "OFF" , 2 Enable "MKPWHPO" Inhibit "MKHPOSPT" Inhibit "MKOVNMAX" Inhibit "MUHPOLOP" Inhibit "MUHPOBRG" ##DONE !Question = "MDI Close 5K Science Data" !Check = "in DONE, done" @AskStr (!Question, !Check, *!Resp_s, *!S, *!NbErr) !GM_NbErr = !GM_NbErr + !NbErr !Title = "-FINISHED PROCEDURE: ldpcom" @Message( "DCL" , "date" , !ExpName , !Phase , !Title , *!S ) Return End Procedure -------------------------------------------------------------------------------< Procedure PrintCF( str(3) !ExpName, str(8) !Print) --. Print the control file log file if required by !Print ; --. - using the 'Spool' statement if the variable !GZ_Spool is TRUE, --. - using the dialog box window if the variable !GZ_Spool is FALSE. --. Var str(80) !S = &80s(" ") Main If !Print = "yes" Then If !GZ_Spool = TRUE Then Spool CF Else Cflog @Message( "DC", "date", !ExpName, " ", \ "++++Print the CFLog, then type CONT+++", *!S) Halt @Message( "DC", "date", !ExpName, " ", \ "+Operator continue.", *!S) End If End If Return End Procedure -------------------------------------------------------------------------------<