Hi,
There’s another option, implement the stream device protocol version, and then add a soft motor on top, which gives you the motor record interface. If you then think a full model 3 driver makes sense, then
you can implement this without changing the external interface for clients.
Cheers,
Matt
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Mark Rivers via Tech-talk
Sent: Monday, May 18, 2026 8:55 AM
To: Torsten Bögershausen <tboegi at edom.se>; LiangChih Chiang <yehnan174 at gmail.com>
Cc: tech-talk at aps.anl.gov
Subject: [EXTERNAL] Re: EPICS modulle for Piezosystem Jena's piezo controller NV 40/1 CLE
Hi LiangChih, I have written Model3 motor drivers for some pretty simple piezo controllers from Newport. https: //github. com/epics-motor/motorNewport/blob/master/newportApp/src/AGAP_CONEX. cpp
https: //github. com/epics-motor/motorNewport/blob/master/newportApp/src/AG_CONEX. cpp
I have written Model3 motor drivers for some pretty simple piezo controllers from Newport.
The drivers are 450-600 lines of code and should make a good starting point for your controller.
>> I don't think developing a model 3 motor driver for this piezo controller makes sense.
>But I would like to provide motor record for this piezo controller,
>in order to treat it like a motor.
Because all of other piezo controllers in my facility have motor record interface,
and some features based on EPICS records use motor record.
>However, the attached files are jpg and part of the bigger spec.
Searching "Piezosystem Jena NV 40/1 CLE" will get you link to user manual of this piezo controller.
>The model 3 driver involves some C/C++ coding.
I have experience developing Model 3 motor driver fo Kohzu Aries motor controller and nanoFAKTUR EBD060310 piezo controller.
>Please let me know, if you want help here.
Before coding, I would like to know if you EPICS mates have related experience for such a simple device.
I would say, in opposite to other opinions,
that developing a model 3 driver makes sense.
However, the attached files are jpg and part
of the bigger spec.
The mentioned poll() function needs to find out,
where the positioner is - in closed loop.
If it is homed/referenced/calibrated.
That code needs to be somewhere,
either you use streamDevice or a proper model 3 driver.
In streamDevice you set up db files, which may feel easier
for some people.
The model 3 driver involves some C/C++ coding.
Please let me know, if you want help here.
BR
/Torsten
On 2026-05-18 09:40, LiangChih Chiang via Tech-talk wrote:
> Dear EPICS mates,
>
> I need to control a piezo actuator via
> Piezosystem Jena's piezo controller NV 40/1 CLE,
> which is very old and discontinued.
>
> Its commands are extremely simple:(please see attach files)
> i1 activate remote control
> i0 deactivate remote control
> cl closed loop on
> ol closed loop off
> rd read a value (µm for closed loop, volt for open loop)
> wr,<value> write a value (µm for closed loop, volt for open loop)
>
> I'm wondering if it's possible to develop
> a "Model 3" motor driver for it.
>
> Do you guys have experience for similiar suuch simple devices?
>