From 835da32571c08259fc81c89f711047a80bc16a5b Mon Sep 17 00:00:00 2001 From: "Wolfgang Draxinger (root@gar-ex-erdastep)" Date: Tue, 6 Dec 2011 19:38:31 +0100 Subject: things moved from scratchpad.py into their homes --- MotionControl/PhytronAxis.py | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 MotionControl/PhytronAxis.py (limited to 'MotionControl/PhytronAxis.py') diff --git a/MotionControl/PhytronAxis.py b/MotionControl/PhytronAxis.py new file mode 100644 index 0000000..80e1c47 --- /dev/null +++ b/MotionControl/PhytronAxis.py @@ -0,0 +1,59 @@ +# -*- coding: utf8 -*- + +from Axis import Axis + +class PhytronAxis(Axis): + INITIATOR_MINUS = 1 + INITIATOR_PLUS = 2 + def __init__(self, ipcomm_axis, max_run_freq=None, initiator=INITIATOR_MINUS, initiator_position = 0, inverted = False, scale={}): + super(PhytronAxis, self).__init__(inverted = inverted, scale = scale) + + self.ipcomm_axis = ipcomm_axis + if not max_run_freq: + max_run_freq = self.ipcomm_axis.getRunFrequency() + self.max_run_freq = max_run_freq + self.initialisation = False + self.initiator = initiator + self.initiator_position = initiator_position + self.onInitialized.connect(self.handle_initialized) + + def handle_initialized(self, sender, initialized): + if self.initialisation and sender == self and initialized: + self.ipcomm_axis.setPosition(self.initiator_position) + + def do_update(self): + status = self.ipcomm_axis.getFullStatus() + self.position = self.ipcomm_axis.getPosition() + self.running = status.running + self.initializing = status.initializing + self.initialized = status.initialized + self.initiator_minus = status.initiator_minus + self.initator_plus = status.initiator_plus + self.initiator_error = status.initiator_error + self.temperature_warning = status.high_temperature + + def emergency_stop(self): + self.ipcomm_axis.stop() + + def initiate(self): + self.ipcomm_axis.stop() + self.wait_for_stop() + self.ipcomm_axis.setRunFrequency(self.max_run_freq) + if self.initiator == PhytronAxis.INITIATOR_MINUS: + self.ipcomm_axis.initializeMinus() + if self.initiator == PhytronAxis.INITIATOR_PLUS: + self.ipcomm_axis.initializePlus() + self.initialisation = True + + def set_initiator_position(self, sender, initialized): + if sender == self and initialized: + self.ipcomm_axis.setPosition(self.initiator_position) + self.position = self.initator_position + + def goto_absolute(self, target, speed = None): + self.ipcomm_axis.stop() + self.wait_for_stop() + if not speed: + speed = 1. + self.ipcomm_axis.setRunFrequency(self.max_run_freq * speed) + self.ipcomm_axis.gotoAbs(target) -- cgit v1.2.3