> Is there any existing support for ThorLab BBD201 controller?
I don't know of any, but perhaps others on tech-talk may.
Mark
-----Original Message-----
From: Igor Kriznar <Igor.Kriznar at partner.kit.edu>
Sent: Wednesday, April 8, 2020 10:51 AM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: tech-talk <tech-talk at aps.anl.gov>
Subject: Re: Newport DL325
Hi Mark,
thanks, so far so good.
Next motor controller on my list to support is ThorLabs BBD201 (for
DDS300 Translation Stage).
I can see there is the motorThorLabs driver and document states support for Piezo Controller, Model MDT695.
I have found communication specifications for BBD201:
https://www.thorlabs.com/software_pages/ViewSoftwarePage.cfm?Code=Motion_Control
But I can not find MDT695 anywhere. Closest thing seems to be MDT694B:
https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=1191&pn=MDT694B
Checking communication specs shows, that it is a very different protocol.
Is there any existing support for ThorLab BBD201 controller?
Thanks and best regards, Igor
On 07.04.20 17:02, Mark Rivers wrote:
> Hi Igor,
>
>
> If you go to motorNewport/iocs and type "make" it will build a sample IOC. Then go to iocs/newportIOC/iocBoot/iocNewport and edit one of the example st.cmd.* files and motors.substitutions.* files. Then you should be able to test your driver.
>
>
> Mark
>
>
>
> ________________________________
> From: Igor Kriznar <Igor.Kriznar at partner.kit.edu>
> Sent: Tuesday, April 7, 2020 9:48 AM
> To: Mark Rivers
> Subject: Re: Newport DL325
>
> Hi Mark,
>
> I did exactly what you suggested. Pretty trivial as you said.
>
> In cpp file line 180 I have added some initialization. Although that
> fields are used only in report method, so might be used as local
> variables there.
>
> In cpp file line 532, it seems that limits will never be 1.
>
> I still need to test the code on my device.
>
> Would you happen to have a sample IOC at hand, it would help me with
> configuration?
>
>
> Thanks for your help,
>
> Best regards, Igor
>
>
> On 01.04.20 14:35, Mark Rivers wrote:
>>> I see some overlap in commands with CONEX controller
>> (https://www.newport.com/mam/celum/celum_assets/resources/CONEX-CC_-_Command_Interface_Manual.pdf?1).
>>
>> That is not the correct manual for the CONEX to compare. That
>> describes the DLL interface. You just want the ASCII command
>> interface which is this manual:
>> https://www.newport.com/mam/celum/celum_assets/resources/CONEX-CC_-_C
>> ontroller_Documentation.pdf?1
>>
>>
>>> For second, the command interface for DL controller
>> (https://www.newport.com/mam/celum/celum_assets/resources/DL_Controll
>> er_-_Command_Interface_Manual.pdf?1)
>>> has about 200 commands.
>> I see only 64 commands, of which the driver needs to support only a small fraction.
>>
>> These are the command that are actually used in the CONEX driver that appear to be identical in the DL driver:
>>
>> Read controller version: "VE"
>> Read stage type: "ID"
>> Home: "OR"
>> Move absolute: "PA"
>> Acceleration: "AC"
>> Velocity: "VA"
>> Move relative: "PR"
>> Move absolute: "PA"
>> Stop: "ST"
>> Reset controller: "RS"
>> Read current position: "TP"
>> Read status: "TS"
>> Software limits: "SL" and "SR"
>> PID parameters: "KP", "KI", "KD"
>> Closed loop: "MM"
>>
>>
>> These are the commands that the CONEX driver uses that the DL does not support:
>>
>> Read encoder increment: "SU"
>> Read interpolation factor: "IF"
>> Read microsteps: "FRM"
>> Read full step size: "FRS"
>> Home type: "HT"
>>
>> However, those commands are all done within conditional statements depending on the controller type like this:
>>
>> // Read the encoder increment (CC and AGP only)
>> if ((conexModel_ == ModelConexAGP) || (conexModel_ == ModelConexCC)) {
>> sprintf(pC_->outString_, "%dSU?", pC->controllerID_);
>> pC_->writeReadController();
>> encoderIncrement_ = atof(&pC_->inString_[3]);
>> } else {
>> encoderIncrement_ = 1.;
>> }
>>
>> I am now convinced that modifying the AG_CONEX.cpp driver to also support the DL controller is pretty trivial.
>>
>> The CONEX driver currently supports 3 models:
>> typedef enum {
>> ModelConexAGP,
>> ModelConexCC,
>> ModelConexPP
>> } ConexModel_t;
>>
>> All you need to do is add a ModelDL to the above list and change a few conditionals so that the driver never sends unsupported commands for the DL model.
>>
>> Mark
>>
>>
>> ________________________________
>> From: Igor Kriznar <Igor.Kriznar at partner.kit.edu>
>> Sent: Wednesday, April 1, 2020 5:22 AM
>> To: Mark Rivers
>> Subject: Re: Newport DL325
>>
>> Hi Mark,
>>
>> thanks for the tip.
>>
>> my plan was to check, if motor record supports my device. And if not,
>> to implement that few commands that will be actually used trough StreamDevice.
>>
>> For first, I have no experience with motor record development. For
>> second, the command interface for DL controller
>> (https://www.newport.com/mam/celum/celum_assets/resources/DL_Controll
>> er_-_Command_Interface_Manual.pdf?1)
>> has about 200 commands.
>>
>> I see utility in having motor record, but I am not sure how much more
>> effort the driver will it take in comparison to StreamDevice. I see
>> some overlap in commands with CONEX controller
>> (https://www.newport.com/mam/celum/celum_assets/resources/CONEX-CC_-_Command_Interface_Manual.pdf?1).
>>
>> If you have any advice on this, I would appreciate .
>>
>>
>> Stay well,
>>
>> Igor
>>
>>
>> On 31.03.20 20:01, Mark Rivers wrote:
>>> Hi Igor,
>>>
>>> It looks like they are only supporting the DL Single-Axis Motion Controller for those stages.
>>>
>>> The User Manual documents the command syntax:
>>> https://www.newport.com/mam/celum/celum_assets/resources/DL_-_Contro
>>> ller_Users_Manual.pdf?1
>>>
>>> The command syntax is very similar to the Newport AG_CONEX controllers, for which there is an EPICS driver.
>>>
>>> https://github.com/epics-motor/motorNewport/blob/master/newportApp/s
>>> rc/AG_CONEX.cpp
>>>
>>> You may be able to use the AG_CONEX driver, or you may have to write a new driver starting with that one but modifying the commands and syntax a bit.
>>>
>>> Mark
>>>
>>>
>>> ________________________________
>>> From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Igor
>>> Kriznar via Tech-talk <tech-talk at aps.anl.gov>
>>> Sent: Tuesday, March 31, 2020 8:27 AM
>>> To: tech-talk at aps.anl.gov
>>> Subject: Newport DL325
>>>
>>> Hi,
>>>
>>> is motor record working with Newport DL325 (a Delay Line Stage) with
>>> DL Controller?
>>>
>>> Thanks!
>>>
>>> Best regards, Igor
>>>
- References:
- Newport DL325 Igor Kriznar via Tech-talk
- Re: Newport DL325 Mark Rivers via Tech-talk
- Re: Newport DL325 Mark Rivers via Tech-talk
- Re: Newport DL325 Mark Rivers via Tech-talk
- Re: Newport DL325 Igor Kriznar via Tech-talk
- Navigate by Date:
- Prev:
Re: Newport DL325 Igor Kriznar via Tech-talk
- Next:
Re: Setting an array to zero length Johnson, Andrew N. via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
<2020>
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: Newport DL325 Igor Kriznar via Tech-talk
- Next:
ThorLabs BBD201 Igor Kriznar via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
<2020>
2021
2022
2023
2024
|