Staff/Guests/16NaseerA/WorkingGas/index
Working gas management @ tokamak GOLEM
Scheme
Flow Chart of Working Gas System
svg source ~~~
Codes
set_chamber_pressure
~~~ def set_chamber_pressure(shared_namespace, controller, target_pressure, pipe=None): if target_pressure <= 0: controller.gas_valve_close() return pressure_last = pressure = controller.get_chamber_pressure() tolerance = 1e-2 controller.gas_valve_close() # resets the valve - prevents lock previous_position = int(_read_line_file(“/golem/daemon/last_valve_position”)) controller.gas_valve_set_position(previous_position) position = previous_position sleep(1) while True: if pipe is not None and pipe.poll(): message = pipe.recv() if message == ‘WAIT’: break pressure = controller.get_chamber_pressure() log.debug(“chamber pressure: %.2f mPa” % pressure) miss = pressure - target_pressure change = pressure - pressure_last pressure_last = pressure if abs(change) <= tolerance: if abs(miss) <= tolerance : # reached target before WAIT if pipe is not None: pipe.recv() # receive the WAIT message break else: scaling_factor = 10 position -= int(miss * scaling_factor + 1) # be able to move by 1 in tolerance if position > 3e3: log.error(“position %i too high” % position) break controller.gas_valve_set_position(position) position = controller.gas_valve_get_position() sleep(1)
position = controller.gas_valve_get_position()
_write_line_file(position, "/golem/daemon/last_valve_position")
if pipe is not None:
message = pipe.recv()
if message == 'CLOSE':
controller.gas_valve_close()
else:
controller.gas_valve_close()