Staff/Guests/16NaseerA/WorkingGas/index

Working gas management @ tokamak GOLEM

Scheme

svg source

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()