EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

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  <20252026  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  <20252026 
<== Date ==> <== Thread ==>

Subject: About motor motion
From: 백호령 via Tech-talk <[email protected]>
To: [email protected]
Date: Thu, 28 Aug 2025 13:31:57 +0900
Hello, we are trying to implement motion like smarAct's smarpod 0.45 stage (https://www.youtube.com/watch?v=pwJK1UpAXnQ
0:55 seconds in the video).

 First of all, the motor of the stage is a step motor for a two-phase vacuum, and we are planning to control the motor by connecting it to maxv or maxnet controller. There is no need for fast motion like the piezo motor, but the goal we are currently trying to implement is to

1. When motor A (TESTMAX:R) moves in the CW direction, motor B (TESTMAX:L) moves in the CCW direction by the same distance

2. When motor A (TESTMAX:R) moves in the CW direction, motor B (TESTMAX:L) moves in the same CW direction by the same distance
It is.

Create a PV with the EPICS IOC with the MAXNET controller, and then, made soft IOC.
If the switch of SYNC:EN is ON, the motor is driven like number 1, and if the switch of SYNC:EN is OFF, it is driven like number 2.

It worked very well, but I really want to know there's another technology in epics.
Do you happen to have any examples or examples of driving motors in this way?
If there is a better way other than that, please advise.



==========================================
This is my db
sync_fast.db 
record(bo, "SYNC:EN") {
    field(DESC, "0=CoDir 1=Reverse")
    field(ZNAM, "OFF")
    field(ONAM, "ON")
    field(VAL, "1") 
}

record(calcout, "SYNC:AB:CMD") {
    field(DESC, "feedforward")
    field(SCAN, "Passive")
    field(INPA, "TESTMAX:R.VAL CP NMS") 
    field(INPB, "SYNC:EN CP NMS") 
    field(CALC, "B?-A:A") # EN=1: -A, EN=0: +A
    field(OUT, "TESTMAX:L.VAL PP")
    field(OOPT, "On Change")
    field(PREC, "4")
}

and this is my st.cmd
st.cmd 
#!../../bin/linux-x86_64/softmotor

< envPaths

cd "${TOP}"

dbLoadDatabase "dbd/softmotor.dbd"
softmotor_registerRecordDeviceDriver pdbbase

dbLoadRecords("db/sync_fast.db")

cd "${TOP}/iocBoot/${IOC}"


iocInit


Best&Regards,
Baeg



Replies:
Re: About motor motion Knap, Giles (DLSLtd,RAL,LSCI) via Tech-talk

Navigate by Date:
Prev: EPICS Meeting at ICALEPCS Johnson, Andrew N. via Tech-talk
Next: Re: SRS - RGA Heinz Junkes 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  <20252026 
Navigate by Thread:
Prev: EPICS Meeting at ICALEPCS Johnson, Andrew N. via Tech-talk
Next: Re: About motor motion Knap, Giles (DLSLtd,RAL,LSCI) 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  <20252026 
ANJ, 19 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·