3.3. NewportConexLDS#
Summary: |
NewportConexLDS |
Type: |
DataIO |
License: |
Licensed under LGPL, uses Newport USB Driver software and driver (not covered by LPGL). |
Platforms: |
Windows, Linux |
Devices: |
Newport Conex-LDS |
Author: |
J. Krauter, ITO Universität Stuttgart |
3.3.1. Overview#
NewportConexLDS is an itom-plugin to use the Newport Conex-LDS autocollimator. For further information go to: https://www.newport.com/p/CONEX-LDS
This plugin has been developed using SerialIO interface with following default parameters:
Baud Rate |
921600 (default for RS232) |
Data Bits |
8 |
Parity |
None |
Stop bits |
1 |
endline |
rn |
3.3.2. Initialization#
The following parameters are mandatory or optional for initializing an instance of this plugin:
- serialIOInstance: Union[itom.dataIO, itom.actuator]
An opened serial port.
Only plugin “SerialIO” is allowed
- controllerAddress: int, optional
Controller address.
Value range: [0, inf], Default: 1
3.3.3. Parameters#
These parameters are available and can be used to configure the NewportConexLDS
instance. Many of them are directly initialized by the parameters of the constructor. During the runtime of an instance, the value of these parameters is obtained by the method getParam, writeable parameters can be changed using setParam.
- calibrationCoefficients: Sequence[float]
Calibration coefficients of x and y axis.
Allowed number of values: 0 - 2, step: 2, Value range: [0, inf], Default: [5325.69, 5393]
- commandError: str, read-only
Command error string.
Match: “”, Default: “No error”
- configurationState: str, read-only
Configuration state (MEASURE, READY, CONFIGURATION).
Match: [“”, “MEASURE”, “READY”, “CONFIGURATION”], Default: “MEASURE”
- deviceName: str, read-only
Device name.
Match: “”, Default: “CONEX-LDS”
- enableConfiguration: int
Enable/Disable configuration (0==OFF, 1==ON). Laser is disabled when it is on.
Value range: [0, 1], Default: 0
- factoryCalibrationState: str, read-only
Factory calibration information.
Match: “”, Default: “14-214- 009;02/05/2022;02/05/2023;5325.69;5393.00;16.0;19.0;31.0;29.0;-62.00;26.00;2000.0”
- frequency: float
Low pass filter frequency as response time before ouputing measurement that is inversely proportional to the low pass filter frequency. Following frequencies [Hz] corresponds to a resolution [µrad] (RMS noise): 1 == 0.03, 20 == 0.013, 50 == 0.021, 100 == 0.030, 200 == 0.042, 500 == 0.067, 1000 == 0.095, 2000 == 0.134.
Value range: [0:0.2:inf], Default: 0.2
- gain: Sequence[float]
Gain of x and y axis.
Allowed number of values: 0 - 2, step: 2, Value range: [0, 200], Default: [1, 1]
- highLevelPowerThreshold: int
High level power threshold for valid measurement.
Value range: [0, 2000], Default: 100
- laserPowerState: int
Enable/Disable laser power (0==OFF, 1==ON).
Value range: [0, 1], Default: 1
- lowLevelPowerThreshold: int
Low level power threshold for valid measurement.
Value range: [0, 2000], Default: 10
- name: str, read-only
Plugin name.
- offset: Sequence[float]
Offset values of x and y axis.
Allowed number of values: 0 - 2, step: 2, All values allowed, Default: [-4.3, 5.4]
- range: int
Value range.
Value range: [0, inf], Default: 2000
- requestTimeout: int
Request timeout in ms for the SerialIO interface.
Value range: [0, inf], Default: 5000
- unit: str
Measurement unit.
Match: “”, Default: “URAD”
- version: str, read-only
Controller version.
Match: “”, Default: “1.1.1”
3.3.4. Additional functions (exec functions)#
By using the following execFunctions you set the channels parameter by giving a list of channel number and a list of parameter values of same list length. The plugin execFunctions are:
- instance.exec('getPositionAndPower')#
Measure the position and laser power.
- Returns:
positionAndPower - Positions of x and y axis.
- Return type:
Sequence[float]
- Returns:
timeStamp - Timestamp of measurement.
- Return type:
str
- instance.exec('getPositionAndPowerMeasurement', data[, interval])#
Measure the position and laser power. It will fill the input dataObject with positions, laser power and timestamps. … Please note that this function blocks itom until the entire measurement has been carried out.
- Parameters:
data (itom.dataObject) – Measruement data X, Y, position and laser power.
interval (int - optional) – Interval between measruement points in ms.
- Returns:
timestamps - Timestamps corresponding to the measruement data.
- Return type:
Sequence[str]
3.3.5. Exemplary usage from Python#
In the following examples, it is shown how to use this Plugin.
First an instance must be initialized using the SerialIO
Plugin.
COM port must be adapted.
from datetime import datetime
from itom import dataIO
import numpy as np
comPort = 5
try:
conex
except NameError:
serial = dataIO("SerialIO", comPort, 921600, "\r\n")
conex = dataIO("NewportConexLDS", serial)
conex.getParamListInfo()
Laser must be disabled before parameter can be set using setParam
.
Before changing parameter the configurationState
must be enabled using enableConfiguration
.
# Disable laser
conex.setParam("laserPowerState", 0)
# To set parameter the configuration state must be 'CONFIGURATION'
conex.setParam("enableConfiguration", 1)
conex.setParam("frequency", 20.0)
conex.setParam("offset", (-4.3, 5.4))
conex.setParam("gain", (1.0, 1.0))
conex.setParam("lowLevelPowerThreshold", 10)
conex.setParam("highLevelPowerThreshold", 100)
conex.setParam("frequency", 2000)
conex.setParam("range", 2000)
# get parameters
conex.getParam("configurationState")
conex.getParam("frequency")
conex.getParam("offset")
conex.getParam("gain")
conex.getParam("lowLevelPowerThreshold")
conex.getParam("highLevelPowerThreshold")
conex.getParam("range")
conex.getParam("unit")
Before the laser can be turn ON configurationState
must be disabled.
# Leave configuration mode. Configuration must be OFF before laser can be set ON.
conex.setParam("enableConfiguration", 0)
# Get all parameter information
conex.getParamListInfo()
# Enable laser
conex.setParam("laserPowerState", 1)
A measurement is performed using the execFunction getPositionAndPower
.
In this example 100 data points are acquired.
# Perform a measurement of 10 data points
data = []
timeStamps = []
for _idx in range(100):
values, timeStamp = conex.exec("getPositionAndPower")
data.append(values)
timeStamps.append(timeStamp)
Create plot with measured data over time.
# convert to dataObject and set metainformation
data = dataObject(np.array(data).transpose())
data.setTag("legendTitle0", "x axis")
data.setTag("legendTitle1", "y axis")
data.setTag("legendTitle2", "level")
# convert timeStamps string into datetime
timeStamps = [datetime.strptime(ts, "%Y-%m-%d %H:%M:%S.%f") for ts in timeStamps]
dateScale = dataObject([1, len(timeStamps)], "datetime", data=timeStamps)
# plot Measurement over time
[i, h] = plot1(data, dateScale, properties={"legendPosition": "Right", "lineWidth": 2, "grid": "GridMajorXY"})
Create 2 dimensional plot of data. First data points below a laser power level of 10% are deleted which are no valid.
# filter data by laser levels below 1%
position = np.array(data.copy())
columsToRemove = np.where(position[2] <= 10)[0]
position = np.delete(position, columsToRemove, axis=1)
x = position[0, :]
y = position[1, :]
plot1(y, x, properties={"lineSymbol": "Ellipse", "lineStyle": "NoPen", "grid": "GridMajorXY"})
3.3.6. Changelog#
itom setup 4.3.0 release - v1.1.0: Renamed timeStemp to timeStamp