Beispiel #1
0
    def getAxisStatus(self, axisNo):
        '''
        Reads status information about an axis of the device.

        Parameters
            axisNo	Axis number (0 ... 2)
        Returns
            connected	Output: If the axis is connected to a sensor.
            enabled	Output: If the axis voltage output is enabled.
            moving	Output: If the axis is moving.
            target	Output: If the target is reached in automatic positioning
            eotFwd	Output: If end of travel detected in forward direction.
            eotBwd	Output: If end of travel detected in backward direction.
            error	Output: If the axis' sensor is in error state.
        '''
        connected = ctypes.c_int()
        enabled = ctypes.c_int()
        moving = ctypes.c_int()
        target = ctypes.c_int()
        eotFwd = ctypes.c_int()
        eotBwd = ctypes.c_int()
        error = ctypes.c_int()

        ANC.getAxisStatus(self.device, axisNo, ctypes.byref(connected),
                          ctypes.byref(enabled), ctypes.byref(moving),
                          ctypes.byref(target), ctypes.byref(eotFwd),
                          ctypes.byref(eotBwd), ctypes.byref(error))
        return connected.value, enabled.value, moving.value, target.value, eotFwd.value, eotBwd.value, error.value
Beispiel #2
0
    def saveParams(self):
        '''
        Saves parameters to persistent flash memory in the device. They will be present as defaults after the next power-on. The following parameters are affected: Amplitude, frequency, actuator selections as well as Trigger and quadrature settings.

        Parameters
            None
        Returns
            None
        '''
        ANC.saveParams(self.device)
Beispiel #3
0
    def configureNslTriggerAxis(self, axisNo):
        '''
        Selects Axis for NSL Trigger.

        Parameters
            axisNo	Axis number (0 ... 2)
        Returns
            None
        '''
        ANC.configureNslTriggerAxis(self.device, axisNo)
Beispiel #4
0
    def disconnect(self):
        '''
        Closes the connection to the device. The device handle becomes invalid.

        Parameters
            None
        Returns
            None
        '''
        ANC.disconnect(self.device)
Beispiel #5
0
    def configureNslTrigger(self, enable):
        '''
        Enables NSL Input as Trigger Source.

        Parameters
            enable	disable(0), enable(1)
        Returns
            None
        '''
        ANC.configureNslTrigger(self.device, enable)
Beispiel #6
0
    def setTargetRange(self, axisNo, targetRg):
        '''
        Defines the range around the target position where the target is considered to be reached.

        Parameters
            axisNo	Axis number (0 ... 2)
            targetRg	Target range [m] or [°]. Internal resulution is 1 nm or 1 µ°.
        Returns
            None
        '''
        ANC.setTargetRange(self.device, axisNo, ctypes.c_double(targetRg))
Beispiel #7
0
    def setAmplitude(self, axisNo, amplitude):
        '''
        Sets the amplitude parameter for an axis

        Parameters
            axisNo	Axis number (0 ... 2)
            amplitude	Amplitude in V, internal resolution is 1 mV
        Returns
            None
        '''
        ANC.setAmplitude(self.device, axisNo, ctypes.c_double(amplitude))
Beispiel #8
0
    def setDcVoltage(self, axisNo, voltage):
        '''
        Sets the DC level on the voltage output when no sawtooth based motion is active.

            Parameters
            axisNo	Axis number (0 ... 2)
            voltage	DC output voltage [V], internal resolution is 1 mV
        Returns
            None        
        '''
        ANC.setDcVoltage(self.device, axisNo, ctypes.c_double(voltage))
Beispiel #9
0
    def setTargetPosition(self, axisNo, target):
        '''
        Sets the target position for automatic motion, see ANC_startAutoMove. For linear type actuators the position unit is m, for goniometers and rotators it is degree.

        Parameters
            axisNo	Axis number (0 ... 2)
            target	Target position [m] or [°]. Internal resulution is 1 nm or 1 µ°.
        Returns
            None
        '''
        ANC.setTargetPosition(self.device, axisNo, ctypes.c_double(target))
Beispiel #10
0
    def setFrequency(self, axisNo, frequency):
        '''
        Sets the frequency parameter for an axis

        Parameters
            axisNo	Axis number (0 ... 2)
            frequency	Frequency in Hz, internal resolution is 1 Hz
        Returns
            None
        '''
        ANC.setFrequency(self.device, axisNo, ctypes.c_double(frequency))
Beispiel #11
0
    def startSingleStep(self, axisNo, backward):
        '''
        Triggers a single step in desired direction.

        Parameters
            axisNo	Axis number (0 ... 2)
            backward	If the step direction is forward (0) or backward (1)
        Returns
            None
        '''
        ANC.startSingleStep(self.device, axisNo, backward)
Beispiel #12
0
    def configureRngTriggerEps(self, axisNo, epsilon):
        '''
        Configure hysteresis for range Trigger.

        Parameters
            axisNo	Axis number (0 ... 2)
            epsilon	hysteresis in nm / mdeg
        Returns
            None
        '''
        ANC.configureRngTriggerEps(self.device, axisNo, epsilon)
Beispiel #13
0
    def configureExtTrigger(self, axisNo, mode):
        '''
        Enables the input trigger for steps.

        Parameters
            axisNo	Axis number (0 ... 2)
            mode	Disable (0), Quadratur (1), Trigger(2) for external triggering
        Returns
            None
        '''
        ANC.configureExtTrigger(self.device, axisNo, mode)
Beispiel #14
0
    def configureRngTriggerPol(self, axisNo, polarity):
        '''
        Configure lower position for range Trigger.

        Parameters
            axisNo	Axis number (0 ... 2)
            polarity	Polarity of trigger signal when position is between lower and upper Low(0) and High(1)
        Returns
            None
        '''
        ANC.configureRngTriggerPol(self.device, axisNo, polarity)
Beispiel #15
0
    def getPosition(self, axisNo):
        '''
        Retrieves the current actuator position. For linear type actuators the position unit is m; for goniometers and rotators it is degree.

        Parameters
            axisNo	Axis number (0 ... 2)
        Returns
            position	Output: Current position [m] or [°]
        '''
        position = ctypes.c_double()
        ANC.getPosition(self.device, axisNo, ctypes.byref(position))
        return position.value
Beispiel #16
0
 def configureAQuadBIn(self, axisNo, enable, resolution):
     '''
     Enables and configures the A-Quad-B (quadrature) input for the target position.
     Parameters
         axisNo	Axis number (0 ... 2)
         enable	Enable (1) or disable (0) A-Quad-B input
         resolution	A-Quad-B step width in m. Internal resolution is 1 nm.
     Returns
         None
     '''
     ANC.configureAQuadBIn(self.device, axisNo, enable,
                           ctypes.c_double(resolution))
Beispiel #17
0
    def setAxisOutput(self, axisNo, enable, autoDisable):
        '''
        Enables or disables the voltage output of an axis.

        Parameters
            axisNo	Axis number (0 ... 2)
            enable	Enables (1) or disables (0) the voltage output.
            autoDisable	If the voltage output is to be deactivated automatically when end of travel is detected.
        Returns
            None
        '''
        ANC.setAxisOutput(self.device, axisNo, enable, autoDisable)
Beispiel #18
0
    def getActuatorName(self, axisNo):
        '''
        Get the name of the currently selected actuator

        Parameters
            axisNo	Axis number (0 ... 2)
        Returns
            name	Name of the actuator
        '''
        name = ctypes.create_string_buffer(20)
        ANC.getActuatorName(self.device, axisNo, ctypes.byref(name))
        return name.value.decode('utf-8')
Beispiel #19
0
    def startAutoMove(self, axisNo, enable, relative):
        '''
        Switches automatic moving (i.e. following the target position) on or off

        Parameters
            axisNo	Axis number (0 ... 2)
            enable	Enables (1) or disables (0) automatic motion
            relative	If the target position is to be interpreted absolute (0) or relative to the current position (1)
        Returns
            None
        '''
        ANC.startAutoMove(self.device, axisNo, enable, relative)
Beispiel #20
0
    def getFrequency(self, axisNo):
        '''
        Reads back the frequency parameter of an axis.

        Parameters
            axisNo	Axis number (0 ... 2)
        Returns
            frequency	Output: Frequency in Hz
        '''
        frequency = ctypes.c_double()
        ANC.getFrequency(self.device, axisNo, ctypes.byref(frequency))
        return frequency.value
Beispiel #21
0
    def getFirmwareVersion(self):
        '''
        Retrieves the version of currently loaded firmware.

        Parameters
            None
        Returns
            version	Output: Version number
        '''
        version = ctypes.c_int()
        ANC.getFirmwareVersion(self.device, ctypes.byref(version))
        return version.value
Beispiel #22
0
 def getAmplitude(self, axisNo):
     '''
     Reads back the amplitude parameter of an axis.
     
     Parameters
         axisNo	Axis number (0 ... 2)
     Returns
         amplitude	Amplitude V
     '''
     amplitude = ctypes.c_double()
     ANC.getAmplitude(self.device, axisNo, ctypes.byref(amplitude))
     return amplitude.value
Beispiel #23
0
    def getActuatorType(self, axisNo):
        '''
        Get the type of the currently selected actuator

        Parameters
            axisNo	Axis number (0 ... 2)
        Returns
            type_	Type of the actuator {0: linear, 1: goniometer, 2: rotator}
        '''
        type_ = ctypes.c_int()
        ANC.getActuatorType(self.device, axisNo, ctypes.byref(type_))
        return type_.value
Beispiel #24
0
    def startContinuousMove(self, axisNo, start, backward):
        '''
        Starts or stops continous motion in forward direction. Other kinds of motions are stopped.

        Parameters
            axisNo	Axis number (0 ... 2)
            start	Starts (1) or stops (0) the motion
            backward	If the move direction is forward (0) or backward (1)
        Returns
            None
        '''
        ANC.startContinousMove(self.device, axisNo, start, backward)
Beispiel #25
0
    def measureCapacitance(self, axisNo):
        '''
        Performs a measurement of the capacitance of the piezo motor and returns the result. If no motor is connected, the result will be 0. The function doesn't return before the measurement is complete; this will take a few seconds of time.

        Parameters
            axisNo	Axis number (0 ... 2)
        Returns
            cap	Output: Capacitance [F]
        '''
        cap = ctypes.c_double()
        ANC.measureCapacitance(self.device, axisNo, ctypes.byref(cap))
        return cap.value
Beispiel #26
0
    def configureRngTrigger(self, axisNo, lower, upper):
        '''
        Configure lower position for range Trigger.

        Parameters
            axisNo	Axis number (0 ... 2)
            lower	Lower position for range trigger (nm)
            upper	Upper position for range trigger (nm)
        Returns
            None
        '''
        ANC.configureRngTrigger(self.device, axisNo, lower, upper)
Beispiel #27
0
    def connect(self, devNo=0):
        '''
        Initializes and connects the selected device. This has to be done before any access to control variables or measured data.

        Parameters
            devNo	Sequence number of the device. Must be smaller than the devCount from the last ANC_discover call. Default: 0
        Returns
            device	Handle to the opened device, NULL on error
        '''
        device = ctypes.c_void_p()
        ANC.connect(devNo, ctypes.byref(device))
        return device
Beispiel #28
0
    def discover(self, ifaces=3):
        '''
        The function searches for connected ANC350RES devices on USB and LAN and initializes internal data structures per device. Devices that are in use by another application or PC are not found. The function must be called before connecting to a device and must not be called as long as any devices are connected.

        The number of devices found is returned. In subsequent functions, devices are identified by a sequence number that must be less than the number returned.

        Parameters
            ifaces	Interfaces where devices are to be searched. {None: 0, USB: 1, ethernet: 2, all:3} Default: 3
        Returns
            devCount	number of devices found
        '''
        devCount = ctypes.c_int()
        ANC.discover(ifaces, ctypes.byref(devCount))
        return devCount.value
Beispiel #29
0
    def configureAQuadBOut(self, axisNo, enable, resolution, clock):
        '''
        Enables and configures the A-Quad-B output of the current position.

        Parameters
            axisNo	Axis number (0 ... 2)
            enable	Enable (1) or disable (0) A-Quad-B output
            resolution	A-Quad-B step width in m; internal resolution is 1 nm
            clock	Clock of the A-Quad-B output [s]. Allowed range is 40ns ... 1.3ms; internal resulution is 20ns.
        Returns/
            None
        '''
        ANC.configureAQuadBOut(self.device, axisNo, enable,
                               ctypes.c_double(resolution),
                               ctypes.c_double(clock))
Beispiel #30
0
    def getDeviceConfig(self):
        '''
        Reads static device configuration data

        Parameters
            None
        Returns
            featureSync	"Sync": Ethernet enabled (1) or disabled (0)
            featureLockin	"Lockin": Low power loss measurement enabled (1) or disabled (0)
            featureDuty	"Duty": Duty cycle enabled (1) or disabled (0)
            featureApp	"App": Control by IOS app enabled (1) or disabled (0)
        '''
        features = ctypes.c_int()
        ANC.getDeviceConfig(self.device, features)

        featureSync = 0x01 & features.value
        featureLockin = (0x02 & features.value) / 2
        featureDuty = (0x04 & features.value) / 4
        featureApp = (0x08 & features.value) / 8

        return featureSync, featureLockin, featureDuty, featureApp