Files
x06da/script/devices/Wago.py
alexgobbo 75400ca453
2024-09-11 16:17:17 +02:00

187 lines
4.5 KiB
Python

LED_LEVEL_ROOM_TEMPERATURE = 0.4
LED_LEVEL_LN2 = 1.0
###################################################################################################
# Leds
###################################################################################################
def set_led_level(level):
level = max(min(float(level),100.0),0.0)
set_setting("led_level", level)
led_ctrl_1.write(led_ctrl_1.config.maxValue * level / 100.0)
led_ctrl_2.write(led_ctrl_2.config.maxValue * level / 100.0)
led_ctrl_3.write(led_ctrl_3.config.maxValue * level / 100.0)
def get_led_level():
level = get_setting("led_level")
return float(0 if level is None else level)
def set_led_state(value):
"""
Turn leds on and off
"""
if value:
set_led_level(100.0)
else:
set_led_level(0.0)
def get_led_state():
"""
Returns led state (on/off)
"""
return led_ctrl_1.read() > 0
#TODO: The range should be set automatically reading LN2 sensor.
def set_led_range(room_temp = True):
"""
Led range should be limitted in room temperature
"""
max_val = LED_LEVEL_ROOM_TEMPERATURE if room_temp else LED_LEVEL_LN2
led_ctrl_1.config.maxValue = max_val
led_ctrl_1.config.save()
led_ctrl_2.config.maxValue = max_val
led_ctrl_2.config.save()
led_ctrl_3.config.maxValue = max_val
led_ctrl_3.config.save()
led_ctrl_1.initialize()
led_ctrl_2.initialize()
led_ctrl_3.initialize()
if led_ctrl_1.read() > max_val:
led_ctrl_1.write(max_val)
if led_ctrl_2.read() > max_val:
led_ctrl_2.write(max_val)
if led_ctrl_3.read() > max_val:
led_ctrl_3.write(max_val)
set_led_level(get_led_level())
def is_led_room_temp():
return led_ctrl_1.config.maxValue <= LED_LEVEL_ROOM_TEMPERATURE
###################################################################################################
# Safety release
###################################################################################################
def release_local():
"""
Release local safety
"""
release_local_safety.write(False)
time.sleep(0.01)
release_local_safety.write(True)
time.sleep(0.01)
release_local_safety.write(False)
def release_psys():
"""
Release psys safety
"""
if is_manual_mode():
raise Exception ("Cannot release PSYS in manual mode")
release_psys_safety.write(False)
time.sleep(0.01)
release_psys_safety.write(True)
time.sleep(0.01)
release_psys_safety.write(False)
###################################################################################################
# Drier
###################################################################################################
MAX_HEATER_TIME = 120000
def set_air_stream(state):
"""
"""
valve_1.write(state)
valve_2.write(not state)
set_heater_chrono = None
def monitor_heater_time():
time.sleep(0.5)
try:
while get_heater():
if set_heater_chrono.isTimeout(MAX_HEATER_TIME):
set_heater(False)
log("Heater timeout expired: turned off", False)
return
time.sleep(0.1)
except:
print sys.exc_info()
def get_heater():
"""
"""
return gripper_dryer.read()
def set_heater(state):
"""
"""
global set_heater_chrono
if get_heater() != state:
gripper_dryer.write(state)
if state:
set_heater_chrono = Chrono()
fork(monitor_heater_time)
def get_air_stream():
"""
"""
return valve_1.read()
def set_pin_cleaner(state):
"""
"""
valve_7.write(state)
valve_8.write(not state)
def get_pin_cleaner():
"""
"""
return valve_7.read()
def get_valves_states():
return [
valve_1.read(),
valve_2.read(),
valve_3.read(),
valve_4.read(),
valve_5.read(),
valve_6.read(),
valve_7.read(),
valve_8.read(),
]
monitor_pin_cleaner_task = None
def monitor_pin_cleaner(timeout):
global monitor_pin_cleaner_task
this = monitor_pin_cleaner_task
time.sleep(timeout)
if this == monitor_pin_cleaner_task:
set_pin_cleaner(False)
DEFAULT_PIN_CLEANER_TIMEOUT = 5.0
def start_pin_cleaner(timeout=DEFAULT_PIN_CLEANER_TIMEOUT):
global monitor_pin_cleaner_task
set_pin_cleaner(True)
set_pin_cleaner_chrono = Chrono()
monitor_pin_cleaner_task = fork((monitor_pin_cleaner,(timeout,),))[0]