1 voltageOff = function() 2 { 3 var state = dim.state("BIAS_CONTROL").name; 4 5 if (state=="Disconnected") 6 { 7 console.out(" Voltage off: bias crate disconnected!"); 8 return; 9 } 10 11 // check of feedback has to be switched on 12 var isOn = state=="VoltageOn" || state=="Ramping"; 13 if (isOn) 14 { 15 dim.log("Switching voltage off."); 16 17 if (dim.state("FTM_CONTROL").name=="TriggerOn") 18 { 19 dim.send("FTM_CONTROL/STOP_TRIGGER"); 20 dim.wait("FTM_CONTROL", "Valid", 3000); 21 } 22 23 // Supress the possibility that the bias control is 24 // ramping and will reject the command to switch the 25 // voltage off 26 //dim.send("FEEDBACK/STOP"); 27 //dim.wait("FEEDBACK", "Calibrated", 3000); 28 29 // Make sure we are not in Ramping anymore 30 //dim.wait("BIAS_CONTROL", "VoltageOn", 3000); 31 32 // Switch voltage off 33 dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE"); 34 } 35 36 dim.wait("BIAS_CONTROL", "VoltageOff", 60000); // FIXME: 30000? 37 dim.wait("FEEDBACK", "Calibrated", 3000); 38 39 // FEEDBACK stays in CurrentCtrl when Voltage is off but output enabled 40 // dim.wait("FEEDBACK", "CurrentCtrlIdle", 1000); 41 42 if (isOn) 43 dim.log("Voltage off."); 44 } 45 46 waitForVoltageOn = function() 47 { 48 // Avoid output if condition is already fulfilled 49 dim.log("Waiting for voltage to be stable."); 50 51 function func() 52 { 53 if (this.ok==true) 54 return true; 55 } 56 57 var now = new Date(); 58 59 this.last = undefined; 60 this.ok = false; 61 v8.timeout(4*60000, func, this); // FIMXE: Remove 4! 62 this.ok = undefined; 63 64 dim.log("Voltage On(?)"); 65 66 //if (irq) 67 //dim.log("Waiting for stable voltage interrupted."); 68 //else 69 //dim.log("Voltage stable within limits"); 70 } 71 72 73 voltageOn = function(ov) 74 { 75 if (isNaN(ov)) 76 ov = 1.1; 77 78 if (this.ov!=ov && dim.state("FEEDBACK").name=="InProgress") // FIXME: Warning, OnStandby, Critical if (ov<this.ov) 79 { 80 dim.log("Stoping feedback."); 81 if (dim.state("FTM_CONTROL").name=="TriggerOn") 82 { 83 dim.send("FTM_CONTROL/STOP_TRIGGER"); 84 dim.wait("FTM_CONTROL", "Valid", 3000); 85 } 86 87 dim.send("FEEDBACK/STOP"); 88 dim.wait("FEEDBACK", "Calibrated", 3000); 89 90 // Make sure we are not in Ramping anymore 91 dim.wait("BIAS_CONTROL", "VoltageOn", 3000); 92 } 93 94 var isOff = dim.state("FEEDBACK").name=="Calibrated"; 95 if (isOff) 96 { 97 dim.log("Switching voltage to Uov="+ov+"V."); 98 99 dim.send("FEEDBACK/START", ov); 100 101 // FIXME: We could miss "InProgress" if it immediately changes to "Warning" 102 // Maybe a dim.timeout state>8 ? 103 dim.wait("FEEDBACK", "InProgress", 45000); 104 105 this.ov = ov; 106 } 107 108 // Wait until voltage on 109 dim.wait("BIAS_CONTROL", "VoltageOn", 60000); // FIXME: 30000? 110 } 111 112 dim.log("STARTING SCRIPT closed_lid_ratescan"); 113 114 // dim.log("Sending Voltage On"); 115 // voltageOn(); 116 v8.sleep(10000); 117 118 var tm = new Date(); 119 120 dim.log("Starting ratescan."); 121 122 // Start rate scan 123 //dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 200, 900, 20); 124 dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 100, 900, 10); 125 126 // PAUSE 127 dim.log("PAUSE 10s"); 128 v8.sleep(10000); 129 dim.log("Start Ratescan"); 130 131 // Lets wait if the ratescan really starts... this might take a few 132 dim.wait("RATE_SCAN", "InProgress", 10000); 133 //dim.wait("RATE_SCAN", "Connected", 2700000); 134 dim.wait("RATE_SCAN", "Connected", 3500000); 135 136 dim.log("Ratescan done"); 137 138 139 // voltageOff(); 140 141 dim.log("Task finished [RATESCAN]"); 142 console.out(""); 143 144