-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathAgilisCONEXagpController.py
More file actions
101 lines (79 loc) · 3.12 KB
/
AgilisCONEXagpController.py
File metadata and controls
101 lines (79 loc) · 3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
##############################################################################
##
# This file is part of Sardana
##
# http://www.sardana-controls.org/
##
# Copyright 2011 CELLS / ALBA Synchrotron, Bellaterra, Spain
##
# Sardana is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
##
# Sardana is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
##
# You should have received a copy of the GNU Lesser General Public License
# along with Sardana. If not, see <http://www.gnu.org/licenses/>.
##
##############################################################################
"""This file contains the code for an hypothetical Springfield motor controller
used in documentation"""
from pyagilis.controller import AGP
from sardana import State
from sardana.pool.controller import MotorController, Type, Description, DefaultValue
class AgilisCONEXagpController(MotorController):
ctrl_properties = {'port': {Type: str, Description: 'The port of the rs232 device', DefaultValue: '/dev/ttyAGILIS1'}}
axis_attributes = {
"Homing" : {
Type : bool,
Description : "(de)activates the motor homing algorithm",
DefaultValue : False,
},
}
MaxDevice = 1
def __init__(self, inst, props, *args, **kwargs):
super(AgilisCONEXagpController, self).__init__(
inst, props, *args, **kwargs)
# initialize hardware communication
self.agilis = AGP(self.port)
# first query will somehow timeout
self.agilis.getStatus()
print('AGP Controller Initialization ...'),
if self.agilis.getStatus() == 0: # not referenced
print('homing ...' % self.port),
self.agilis.home()
# do some initialization
print('SUCCESS on port %s' % self.port)
self._motors = {}
def AddDevice(self, axis):
self._motors[axis] = True
def DeleteDevice(self, axis):
del self._motors[axis]
StateMap = {
1: State.On,
2: State.Moving,
3: State.Fault,
}
def StateOne(self, axis):
limit_switches = MotorController.NoLimitSwitch
state = self.agilis.getStatus()
return self.StateMap[state], 'some text', limit_switches
def ReadOne(self, axis):
return self.agilis.getCurrentPosition()
def StartOne(self, axis, position):
self.agilis.moveAbsolute(position)
def StopOne(self, axis):
self.agilis.stop()
def AbortOne(self, axis):
self.agilis.stop()
def setHoming(self, axis, value):
"""Homing for given axis"""
if value:
self.agilis.home()
def getHoming(self, axis):
"""Homing for given axis"""
return False