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

Subject: Re: [Ext] RE: Help with motorNewport config
From: Jesse Hopkins via Tech-talk <tech-talk at aps.anl.gov>
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: EPICS Tech Talk <tech-talk at aps.anl.gov>
Date: Tue, 12 Nov 2024 18:13:05 -0600
Hi Mark,

Great thanks. I'll try setting up the PCO and let you know if I run into issues.

For the GroupMoveAbsolute, what I'm actually interested in is the Newport's ability to start the motors in a group simultaneously with the GroupMoveAbsolute command. It does its best to ensure synchronous motion, which is important for our application. This has been working well for us, and I was hoping to continue to use it, though I'm sure the same thing could be replicated with a trajectory. Is there a way to command all the motors in a group to start at once such that they are part of the same GroupMoveAbsolute command?

All the best.

- Jesse

----
Jesse Hopkins, PhD
Deputy Director
BioCAT, Sector 18
Advanced Photon Source


On Tue, Nov 12, 2024 at 5:47 PM Mark Rivers <rivers at cars.uchicago.edu> wrote:

Hi Jesse,

 

  • What I'm not sure about is whether the EPICS driver can do the GroupStatusGet and GroupMoveAbsolute commands, and if so where to find those

 

Yes, all moves are done with either GroupMoveAbsolute or GroupMoveRelative.

https://github.com/epics-motor/motorNewport/blob/c86aeb8f653787ac0d52cb1ddeab5c19af7ec74c/newportApp/src/XPSAxis.cpp#L289

 

GroupStatusGet is used in the XPSAxis::poll() method:

https://github.com/epics-motor/motorNewport/blob/c86aeb8f653787ac0d52cb1ddeab5c19af7ec74c/newportApp/src/XPSAxis.cpp#L563

 

  • First, how do you set up the PCO PVs? I found the XPSPositionCompare.db file, but there's no example in the sample IOC of how to configure it in the st.cmd file. Do you have an example handy you could share?

 

I don’t think we have used that from EPICS at GSECARS beamlines.  We mostly use ProfileMove with detector trigger outputs along the trajectory.

 

You load the database per axis, with either dbLoadRecords or dbLoadTemplate.  For example:

 

dbLoadRecords($(MOTOR)/db/XPSPositionCompare.db”, “P=13IDA,R=m1,PORT=XPS1,ADDR=0”)

 

This is the medm screen where you configure 8 axes.  There is also a single-axis screen.

 

 

This has not been used much, so if you find problems please let me know.

 

Mark

 

 

From: Jesse Hopkins <jhopkins1 at iit.edu>
Sent: Tuesday, November 12, 2024 4:51 PM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: EPICS Tech Talk <tech-talk at aps.anl.gov>
Subject: Re: [Ext] RE: Help with motorNewport config

 

Hi Mark (and anyone else who wants to chime in),

 

Sounds good, I'll let you know if it becomes an issue at some point. I was in the process of writing you another email with a couple more questions. First, how do you set up the PCO PVs? I found the XPSPositionCompare.db file, but there's no example in the sample IOC of how to configure it in the st.cmd file. Do you have an example handy you could share?

 

I also have a functional question. Up to now, I've been using the XPS python driver that Matt Newville wrote (https://github.com/pyepics/newportxps). We're in the process of trying to move all our controls into EPICS on the backend (to make support easier, in theory), so I'm trying to get this set up so I can use the motorNewport controls instead of the python for the communication with the XPS, and then just use python as the control layer for the user. Basically, besides basic single axis motion, the functions I've been using are: GroupStatusGet, GroupMoveAbsolute, and various setting/getting PCO parameters. The PCO I'm assuming will be accessible once I set up those PVs. What I'm not sure about is whether the EPICS driver can do the GroupStatusGet and GroupMoveAbsolute commands, and if so where to find those. Alternatively, does the driver support a way to send commands directly to the controller that I could use for those?

 

All the best.

- Jesse

 

----
Jesse Hopkins, PhD
Deputy Director
BioCAT, Sector 18
Advanced Photon Source

 

 

On Tue, Nov 12, 2024 at 4:47PM Mark Rivers <rivers at cars.uchicago.edu> wrote:

Hi Jesse,

 

I don’t understand what is causing those error messages.  I suggest you ignore them until you want to use profile moves, which are multi-axis coordinated motions.  If you want to use profile moves we can track down the issue.

 

Mark

 

 

From: Jesse Hopkins <jhopkins1 at iit.edu>
Sent: Tuesday, November 12, 2024 3:52 PM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: EPICS Tech Talk <tech-talk at aps.anl.gov>
Subject: Re: [Ext] RE: Help with motorNewport config

 

Hi Mark,

 

This is an XPS-D8, so it makes sense that the Aux isn't working based on that.

 

Here's my motor.substitutions.xps5 contents. I was getting errors explicitly related to the axes that aren't configured in the Newport (I only have motors attached to 6, 7, and 8 right now), so I commented those out:

file "$(MOTOR)/db/basic_asyn_motor.db"
{
pattern
{P,    N,   M,         DTYP,     PORT, ADDR, DESC,      EGU,     DIR,   VELO,  VBAS, ACCL, BDST, BVEL, BACC,    MRES, PREC,   DHLM,   DLLM, INIT}
#{18ID_D_Newport:, 1, "m$(N)", "asynMotor",  XPS1,  0, "Dummy1",   degrees,  Neg,    4.0,   0.1,   .5,    0,    1,   .2,    .00025,   4,    190, -190, ""}
#{18ID_D_Newport:, 2, "m$(N)", "asynMotor",  XPS1,  1, "Dummy1",   degrees,  Neg,    4.0,   0.1,   .5,    0,    1,   .2,    .00025,   4,    190, -190, ""}
#{18ID_D_Newport:, 3, "m$(N)", "asynMotor",  XPS1,  2, "Dummy1",   degrees,  Neg,    4.0,   0.1,   .5,    0,    1,   .2,    .00025,   4,    190, -190, ""}
#{18ID_D_Newport:, 4, "m$(N)", "asynMotor",  XPS1,  3, "Dummy1",   degrees,  Neg,    4.0,   0.1,   .5,    0,    1,   .2,    .00025,   4,    190, -190, ""}
#{18ID_D_Newport:, 5, "m$(N)", "asynMotor",  XPS1,  4, "Dummy1",   degrees,  Neg,    4.0,   0.1,   .5,    0,    1,   .2,    .00025,   4,    190, -190, ""}
{18ID_D_Newport:,  6,  "m$(N)",  "asynMotor",  XPS1,  5,     "size Rot",  deg,   Pos,  20.,     0,    0.25,    0,     1,    .2,    0.02,    2,     1000000.0,  -1000000.0,      ""}
{18ID_D_Newport:,  7,  "m$(N)",  "asynMotor",  XPS1,  6,     "size X",    mm,    Pos,  50.,     0,    0.25,    0,     1,    .2,    0.0005,  4,     25.0,     -25.0,      ""}
{18ID_D_Newport:,  8,  "m$(N)",  "asynMotor",  XPS1,  7,     "size Y",    mm,    Pos,  50.,     0,    0.25,    0,     1,    .2,    0.0005,  4,     25.0,  -25.0,      ""}
}


file "$(MOTOR)/db/XPS_extra.db"
{
pattern
{P,     R,  PORT,  ADDR}
#{18ID_D_Newport:,  m1, XPS1   0}
#{18ID_D_Newport:,  m2, XPS1   1}
#{18ID_D_Newport:,  m3, XPS1   2}
#{18ID_D_Newport:,  m4, XPS1   3}
#{18ID_D_Newport:,  m5, XPS1   4}
{18ID_D_Newport:,  m6, XPS1   5}
{18ID_D_Newport:,  m7, XPS1   6}
{18ID_D_Newport:,  m8, XPS1   7}
}

file "$(MOTOR)/db/profileMoveController.template"
{
pattern
{P,     R,      PORT, NAXES, NPOINTS, NPULSES, TIMEOUT}
{18ID_D_Newport:,  Prof1:, XPS1,     8,    2000,    2000,       1}
}

file "$(MOTOR)/db/profileMoveControllerXPS.template"
{
pattern
{P,     R,      PORT, NAXES, NPOINTS, NPULSES, TIMEOUT}
{18ID_D_Newport:,  Prof1:, XPS1,     8,    2000,    2000,       1}
}

file "$(MOTOR)/db/profileMoveAxis.template"
{
pattern
{P,     R,      M,  PORT, ADDR,NPOINTS, NREADBACK,  MOTOR, PREC, TIMEOUT}
#{18ID_D_Newport:,  Prof1:, 1,  XPS1,    0,   2000,      2000, 18ID_D_Newport:m1,   3,       1}
#{18ID_D_Newport:,  Prof1:, 2,  XPS1,    1,   2000,      2000, 18ID_D_Newport:m2,   4,       1}
#{18ID_D_Newport:,  Prof1:, 3,  XPS1,    2,   2000,      2000, 18ID_D_Newport:m3,   4,       1}
#{18ID_D_Newport:,  Prof1:, 4,  XPS1,    3,   2000,      2000, 18ID_D_Newport:m4,   4,       1}
#{18ID_D_Newport:,  Prof1:, 5,  XPS1,    4,   2000,      2000, 18ID_D_Newport:m5,   4,       1}
{18ID_D_Newport:,  Prof1:, 6,  XPS1,    5,   2000,      2000, 18ID_D_Newport:m6,   4,       1}
{18ID_D_Newport:,  Prof1:, 7,  XPS1,    6,   2000,      2000, 18ID_D_Newport:m6,   4,       1}
{18ID_D_Newport:,  Prof1:, 8,  XPS1,    7,   2000,      2000, 18ID_D_Newport:m6,   4,       1}
}

file "$(MOTOR)/db/profileMoveAxisXPS.template"
{
pattern
{P,     R,      M,  PORT, ADDR,NPOINTS, NREADBACK, PREC, TIMEOUT}
#{18ID_D_Newport:,  Prof1:, 1,  XPS1,    0,   2000,      2000,    3,       1}
#{18ID_D_Newport:,  Prof1:, 2,  XPS1,    1,   2000,      2000,    4,       1}
#{18ID_D_Newport:,  Prof1:, 3,  XPS1,    2,   2000,      2000,    4,       1}
#{18ID_D_Newport:,  Prof1:, 4,  XPS1,    3,   2000,      2000,    4,       1}
#{18ID_D_Newport:,  Prof1:, 5,  XPS1,    4,   2000,      2000,    4,       1}
{18ID_D_Newport:,  Prof1:, 6,  XPS1,    5,   2000,      2000,    4,       1}
{18ID_D_Newport:,  Prof1:, 7,  XPS1,    6,   2000,      2000,    4,       1}
{18ID_D_Newport:,  Prof1:, 8,  XPS1,    7,   2000,      2000,    4,       1}
}

 

 

Here's the current set of errors with this file:

iocInit
Starting iocInit
############################################################################
## EPICS R7.0.8
## Rev. 2024-03-01T16:24-0600
## Rev. Date build date/time:
############################################################################
drvStreamInit: Warning! STREAM_PROTOCOL_PATH not set.
2024/11/12 15:48:16.669 18ID_D_Newport:Prof1:FixedTime devAsynFloat64::processCallbackOutput process write error
2024/11/12 15:48:16.670 18ID_D_Newport:Prof1:Acceleration devAsynFloat64::processCallbackOutput process write error
2024/11/12 15:48:16.670 18ID_D_Newport:Prof1:TimeMode devAsynInt32::processCallbackOutput process write error
2024/11/12 15:48:16.670 18ID_D_Newport:Prof1:MoveMode devAsynInt32::processCallbackOutput process write error
2024/11/12 15:48:16.670 18ID_D_Newport:Prof1:NumAxes devAsynInt32::processCallbackOutput process write error
2024/11/12 15:48:16.670 18ID_D_Newport:Prof1:NumPoints devAsynInt32::processCallbackOutput process write error
2024/11/12 15:48:16.670 18ID_D_Newport:Prof1:NumPulses devAsynInt32::processCallbackOutput process write error
2024/11/12 15:48:16.670 18ID_D_Newport:Prof1:StartPulses devAsynInt32::processCallbackOutput process write error
2024/11/12 15:48:16.670 18ID_D_Newport:Prof1:EndPulses devAsynInt32::processCallbackOutput process write error 

 

 

All the best.

- Jesse

 

----
Jesse Hopkins, PhD
Deputy Director
BioCAT, Sector 18
Advanced Photon Source

 

 

On Tue, Nov 12, 2024 at 3:24PM Mark Rivers <rivers at cars.uchicago.edu> wrote:

Hi Jesse,

 

  • 2024/11/12 14:15:20.402 XPSAxis:getPID:. XPS XPS1 axis 5 corrector type is NoCorrector. Cannot get PID.

That message is normal for axes without feedback, not a problem.

 

  • 2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:FixedTime devAsynFloat64::processCallbackOutput process write error

I don’t know what is causing those errors.  How have you changed motor.substitutions.xps5?

 

  • I also tried enabling the Aux configuration and still get the same kinds of errors:
  • 2024/11/12 14:15:11.994 drvXPSAsynAux::XPSAuxPoller error calling GPIOAnalogGet=-8

What version of the XPS is this, XPS-C8, XPS-Q8, or XPS-D8?  As I recall the XPSAux code needs work to run on the XPS-D8.

 

  • The only output we use from the XPS controllers at the moment is the PCO, I don't know if this will affect our ability to use that or not. If not, I'm happy to just leave it disabled/ignore it.

 

The XPSAux code is not needed for the PCO output, or the trigger pulse output from trajectory scans/profile moves.  It is only needed for direct digital I/O and analog I/O.

 

Mark

 

 

From: Jesse Hopkins <jhopkins1 at iit.edu>
Sent: Tuesday, November 12, 2024 2:20 PM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: EPICS Tech Talk <tech-talk at aps.anl.gov>
Subject: Re: [Ext] RE: Help with motorNewport config

 

Hi Mark,

 

Thanks for the quick response! Changing to the correct version of the config commands seems to have fixed most of the issues. There are still a few more things I'm not sure about. After configuring one of the axes I get the following message. Should I be concerned? This motor doesn't have encoders, so my suspicion is it's about that:

XPSCreateAxis("XPS1",5,"Group6.Pos",   "50")
2024/11/12 14:15:20.402 XPSAxis:getPID:. XPS XPS1 axis 5 corrector type is NoCorrector. Cannot get PID.

 

And on iocInit I get some errors about the profile:

iocInit
Starting iocInit
############################################################################
## EPICS R7.0.8
## Rev. 2024-03-01T16:24-0600
## Rev. Date build date/time:
############################################################################
drvStreamInit: Warning! STREAM_PROTOCOL_PATH not set.
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:FixedTime devAsynFloat64::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:Acceleration devAsynFloat64::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:TimeMode devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:MoveMode devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:M1UseAxis devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:M2UseAxis devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:M3UseAxis devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:M4UseAxis devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:M5UseAxis devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:NumAxes devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:NumPoints devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:NumPulses devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:StartPulses devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:EndPulses devAsynInt32::processCallbackOutput process write error

 

 

Here's the full IOC startup in case it's useful:

(main) biocat@dalek:/opt/epics/epics_iocs/soft_iocs/newport_test/iocBoot/iocnewport_test$ ./st.cmd
#!../../bin/linux-x86_64/newport_test
#errlogInit(5000)
< envPaths
epicsEnvSet("IOC","iocnewport_test")
epicsEnvSet("TOP","/opt/epics/epics_iocs/soft_iocs/newport_test")
epicsEnvSet("SUPPORT","/opt/epics/synApps_6_3/support")
epicsEnvSet("EPICS_BASE","/opt/epics/base")
epicsEnvSet("ALIVE","/opt/epics/synApps_6_3/support/alive-R1-4-1")
epicsEnvSet("ASYN","/opt/epics/synApps_6_3/support/asyn-R4-44-2")
epicsEnvSet("AUTOSAVE","/opt/epics/synApps_6_3/support/autosave-R5-11")
epicsEnvSet("BUSY","/opt/epics/synApps_6_3/support/busy-R1-7-4")
epicsEnvSet("CALC","/opt/epics/synApps_6_3/support/calc-R3-7-5")
epicsEnvSet("CAMAC","/opt/epics/synApps_6_3/support/camac-R2-7-5")
epicsEnvSet("CAPUTRECORDER","/opt/epics/synApps_6_3/support/caputRecorder-R1-7-6")
epicsEnvSet("DAC128V","/opt/epics/synApps_6_3/support/dac128V-R2-10-1")
epicsEnvSet("DELAYGEN","/opt/epics/synApps_6_3/support/delaygen-R1-2-4")
epicsEnvSet("DEVIOCSTATS","/opt/epics/synApps_6_3/support/iocStats-3-1-16")
epicsEnvSet("ETHERIP","/opt/epics/synApps_6_3/support/ether_ip-ether_ip-3-3")
epicsEnvSet("GALIL","/opt/epics/synApps_6_3/support/Galil-4-0-02")
epicsEnvSet("IP","/opt/epics/synApps_6_3/support/ip-R2-22")
epicsEnvSet("IP330","/opt/epics/synApps_6_3/support/ip330-R2-10")
epicsEnvSet("IPAC","/opt/epics/synApps_6_3/support/ipac-2-16")
epicsEnvSet("IPUNIDIG","/opt/epics/synApps_6_3/support/ipUnidig-R2-12")
epicsEnvSet("LABJACK","/opt/epics/synApps_6_3/support/LabJack-master")
epicsEnvSet("LOVE","/opt/epics/synApps_6_3/support/love-R3-2-9")
epicsEnvSet("LUA","/opt/epics/synApps_6_3/support/lua-R3-1")
epicsEnvSet("MCA","/opt/epics/synApps_6_3/support/mca-R7-10")
epicsEnvSet("MEASCOMP","/opt/epics/synApps_6_3/support/measComp-master")
epicsEnvSet("MODBUS","/opt/epics/synApps_6_3/support/modbus-R3-3")
epicsEnvSet("MOTOR","/opt/epics/synApps_6_3/support/motor-R7-3-1")
epicsEnvSet("OPTICS","/opt/epics/synApps_6_3/support/optics-R2-14")
epicsEnvSet("SCALER","/opt/epics/synApps_6_3/support/scaler-4-1")
epicsEnvSet("SNCSEQ","/opt/epics/synApps_6_3/support/sequencer-mirror-R2-2-9")
epicsEnvSet("SOFTGLUE","/opt/epics/synApps_6_3/support/softGlue-R2-8-4")
epicsEnvSet("SOFTGLUEZYNQ","/opt/epics/synApps_6_3/support/softGlueZynq-R2-0-5")
epicsEnvSet("SSCAN","/opt/epics/synApps_6_3/support/sscan-R2-11-6")
epicsEnvSet("STD","/opt/epics/synApps_6_3/support/std-R3-6-4")
epicsEnvSet("STREAM","/opt/epics/synApps_6_3/support/StreamDevice-2-8-24")
epicsEnvSet("VAC","/opt/epics/synApps_6_3/support/vac-R1-9-2")
epicsEnvSet("VME","/opt/epics/synApps_6_3/support/vme-R2-9-5")
epicsEnvSet("XXX","/opt/epics/synApps_6_3/support/xxx-R6-3")
epicsEnvSet("YOKOGAWA_DAS","/opt/epics/synApps_6_3/support/Yokogawa_DAS-R2-0-2")
epicsEnvSet("ALLENBRADLEY","/opt/epics/synApps_6_3/support/allenBradley-2-3")
epicsEnvSet("ULDAQ","/opt/epics/synApps_6_3/support/measComp-R4-2/libuldaq-1.2.1")
# Tell EPICS all about the record types, device-support modules, drivers,
# etc. in this build from CARS
dbLoadDatabase("../../dbd/iocnewport_testLinux.dbd")
iocnewport_testLinux_registerRecordDeviceDriver(pdbbase)
### Motors
dbLoadTemplate "motor.substitutions.xps5"
#dbLoadTemplate "XPSAux.substitutions"
# asyn port, IP address, IP port, number of axes,
# active poll period (ms), idle poll period (ms),
# enable set position, set position settling time (ms)
XPSCreateController("XPS1", "164.54.204.74", 5001, 8, 10, 500, 0, 500)
#asynSetTraceIOMask("XPS1", 0, 2)
#asynSetTraceMask("XPS1", 0, 255)
# asynPort, IP address, IP port, poll period (ms)
#XPSAuxConfig("XPS_AUX1", "164.54.204.74", 5001, 50)
#asynSetTraceIOMask("XPS_AUX1", 0, 2)
#asynSetTraceMask("XPS_AUX1", 0, 255)
# XPS asyn port,  axis, groupName.positionerName, stepSize
#XPSCreateAxis("XPS1",0,"GROUP.PHI",      "1000")
# PR50PP
XPSCreateAxis("XPS1",5,"Group6.Pos",   "50")
2024/11/12 14:15:20.402 XPSAxis:getPID:. XPS XPS1 axis 5 corrector type is NoCorrector. Cannot get PID.
# ILS50PP
XPSCreateAxis("XPS1",6,"Group7.Pos",   "2000")
# ILS50PP
XPSCreateAxis("XPS1",7,"Group8.Pos",   "5000")
# XPS asyn port,  max points, FTP username, FTP password
# Note: this must be done after configuring axes
XPSCreateProfile("XPS1", 2000, "Administrator", "Administrator")
iocInit
Starting iocInit
############################################################################
## EPICS R7.0.8
## Rev. 2024-03-01T16:24-0600
## Rev. Date build date/time:
############################################################################
drvStreamInit: Warning! STREAM_PROTOCOL_PATH not set.
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:FixedTime devAsynFloat64::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:Acceleration devAsynFloat64::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:TimeMode devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:MoveMode devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:M1UseAxis devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:M2UseAxis devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:M3UseAxis devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:M4UseAxis devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:M5UseAxis devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:NumAxes devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:NumPoints devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:NumPulses devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:StartPulses devAsynInt32::processCallbackOutput process write error
2024/11/12 14:15:20.944 18ID_D_Newport:Prof1:EndPulses devAsynInt32::processCallbackOutput process write error
iocRun: All initialization complete

 

I also tried enabling the Aux configuration and still get the same kinds of errors:

2024/11/12 14:15:11.994 drvXPSAsynAux::XPSAuxPoller error calling GPIOAnalogGet=-8
2024/11/12 14:15:11.994 drvXPSAsynAux::XPSAuxPoller error calling GPIODigitalGet=-8
2024/11/12 14:15:11.995 drvXPSAsynAux::XPSAuxPoller error calling GPIODigitalGet=-8
2024/11/12 14:15:11.995 drvXPSAsynAux::XPSAuxPoller error calling GPIODigitalGet=-8
2024/11/12 14:15:12.046 drvXPSAsynAux::XPSAuxPoller error calling GPIOAnalogGet=-8

 

The only output we use from the XPS controllers at the moment is the PCO, I don't know if this will affect our ability to use that or not. If not, I'm happy to just leave it disabled/ignore it.

 

All the best.

- Jesse

 

----
Jesse Hopkins, PhD
Deputy Director
BioCAT, Sector 18
Advanced Photon Source

 

 

On Tue, Nov 12, 2024 at 1:59PM Mark Rivers <rivers at cars.uchicago.edu> wrote:

Hi Jesse,

 

I suggest commenting out this line, at least to start:

XPSAuxConfig("XPS_AUX1", "164.54.204.74", 5001, 50)

That is used only for auxiliary analog and digital I/O, not for motor control.  It is generating a lot of your error messages.

 

  • IOC:m6Offset devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_OFFSET
    recGblRecordError: ao: init_record Error (514,11) PV: IOC:m6Offset
    IOC:m6Resolution devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_RESOLUTION

The above messages are because you are using the old Model 2 driver via the XPSConfig command.  You should use the new Model 3 driver, which uses XPSCreateController.  Look at st.cmd.xps5 for an example.

 

Mark

 

 

 

From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Jesse Hopkins via Tech-talk
Sent: Tuesday, November 12, 2024 1:48 PM
To: EPICS Tech Talk <tech-talk at aps.anl.gov>
Subject: Help with motorNewport config

 

Hi folks,

 

I'm attempting to set up a Newport XPS-D8 using the motorNewport module, and having some trouble. Basically, the configuration seems to go fine, but as soon as I call iocInit I get a bunch of error messages. I suspect I'm not actually configuring it correctly, there are ~5 XPS start.cmd files in the example IOC, and they're all a bit different, so I wasn't quite sure how to proceed there. Any help anyone can provide would be greatly appreciated!

 

For reference:

EPICS: 7.0.8

Motor: 7-3-1

Asyn: 4-44-2

motorNewport: 1-2-1

OS: Debian 12

XPS firmware: XPS-D-N13019

 

Here's an abbreviated output from trying to start the IOC. 

biocat@dalek:/opt/epics/epics_iocs/soft_iocs/newport_test/iocBoot/iocnewport_test$ ./st.cmd
#!../../bin/linux-x86_64/newport_test
#errlogInit(5000)
< envPaths
epicsEnvSet("IOC","iocnewport_test")
epicsEnvSet("TOP","/opt/epics/epics_iocs/soft_iocs/newport_test")
epicsEnvSet("SUPPORT","/opt/epics/synApps_6_3/support")
epicsEnvSet("EPICS_BASE","/opt/epics/base")
epicsEnvSet("ALIVE","/opt/epics/synApps_6_3/support/alive-R1-4-1")
epicsEnvSet("ASYN","/opt/epics/synApps_6_3/support/asyn-R4-44-2")
epicsEnvSet("AUTOSAVE","/opt/epics/synApps_6_3/support/autosave-R5-11")
epicsEnvSet("BUSY","/opt/epics/synApps_6_3/support/busy-R1-7-4")
epicsEnvSet("CALC","/opt/epics/synApps_6_3/support/calc-R3-7-5")
epicsEnvSet("CAMAC","/opt/epics/synApps_6_3/support/camac-R2-7-5")
epicsEnvSet("CAPUTRECORDER","/opt/epics/synApps_6_3/support/caputRecorder-R1-7-6")
epicsEnvSet("DAC128V","/opt/epics/synApps_6_3/support/dac128V-R2-10-1")
epicsEnvSet("DELAYGEN","/opt/epics/synApps_6_3/support/delaygen-R1-2-4")
epicsEnvSet("DEVIOCSTATS","/opt/epics/synApps_6_3/support/iocStats-3-1-16")
epicsEnvSet("ETHERIP","/opt/epics/synApps_6_3/support/ether_ip-ether_ip-3-3")
epicsEnvSet("GALIL","/opt/epics/synApps_6_3/support/Galil-4-0-02")
epicsEnvSet("IP","/opt/epics/synApps_6_3/support/ip-R2-22")
epicsEnvSet("IP330","/opt/epics/synApps_6_3/support/ip330-R2-10")
epicsEnvSet("IPAC","/opt/epics/synApps_6_3/support/ipac-2-16")
epicsEnvSet("IPUNIDIG","/opt/epics/synApps_6_3/support/ipUnidig-R2-12")
epicsEnvSet("LABJACK","/opt/epics/synApps_6_3/support/LabJack-master")
epicsEnvSet("LOVE","/opt/epics/synApps_6_3/support/love-R3-2-9")
epicsEnvSet("LUA","/opt/epics/synApps_6_3/support/lua-R3-1")
epicsEnvSet("MCA","/opt/epics/synApps_6_3/support/mca-R7-10")
epicsEnvSet("MEASCOMP","/opt/epics/synApps_6_3/support/measComp-master")
epicsEnvSet("MODBUS","/opt/epics/synApps_6_3/support/modbus-R3-3")
epicsEnvSet("MOTOR","/opt/epics/synApps_6_3/support/motor-R7-3-1")
epicsEnvSet("OPTICS","/opt/epics/synApps_6_3/support/optics-R2-14")
epicsEnvSet("SCALER","/opt/epics/synApps_6_3/support/scaler-4-1")
epicsEnvSet("SNCSEQ","/opt/epics/synApps_6_3/support/sequencer-mirror-R2-2-9")
epicsEnvSet("SOFTGLUE","/opt/epics/synApps_6_3/support/softGlue-R2-8-4")
epicsEnvSet("SOFTGLUEZYNQ","/opt/epics/synApps_6_3/support/softGlueZynq-R2-0-5")
epicsEnvSet("SSCAN","/opt/epics/synApps_6_3/support/sscan-R2-11-6")
epicsEnvSet("STD","/opt/epics/synApps_6_3/support/std-R3-6-4")
epicsEnvSet("STREAM","/opt/epics/synApps_6_3/support/StreamDevice-2-8-24")
epicsEnvSet("VAC","/opt/epics/synApps_6_3/support/vac-R1-9-2")
epicsEnvSet("VME","/opt/epics/synApps_6_3/support/vme-R2-9-5")
epicsEnvSet("XXX","/opt/epics/synApps_6_3/support/xxx-R6-3")
epicsEnvSet("YOKOGAWA_DAS","/opt/epics/synApps_6_3/support/Yokogawa_DAS-R2-0-2")
epicsEnvSet("ALLENBRADLEY","/opt/epics/synApps_6_3/support/allenBradley-2-3")
epicsEnvSet("ULDAQ","/opt/epics/synApps_6_3/support/measComp-R4-2/libuldaq-1.2.1")
# Tell EPICS all about the record types, device-support modules, drivers,
# etc. in this build from CARS
dbLoadDatabase("../../dbd/iocnewport_testLinux.dbd")
iocnewport_testLinux_registerRecordDeviceDriver(pdbbase)
### Motors
dbLoadTemplate "motor.substitutions.xps3"
dbLoadTemplate "XPSAux.substitutions"
# asyn port, IP address, IP port, number of axes, active poll period (ms), idle poll period (ms)
#XPSConfig("XPS1", "164.54.204.74", 5001, 8, 20, 500)
# asynPort, IP address, IP port, poll period (ms)
#XPSAuxConfig("XPS_AUX1", "164.54.204.74", 5001, 50)
#asynSetTraceMask("XPS_AUX1", 0, 255)
#asynSetTraceIOMask("XPS_AUX1", 0, 2)
##### Maybe this
# cards (total controllers)
XPSSetup(1)
# card, IP, PORT, number of axes, active poll period (ms), idle poll period (ms)
XPSConfig(0, "164.54.204.74", 5001, 8, 10, 5000)
# asynPort, IP address, IP port, poll period (ms)
XPSAuxConfig("XPS_AUX1", "164.54.204.74", 5001, 50)
#asynSetTraceMask("XPS_AUX1", 0, 255)
#asynSetTraceIOMask("XPS_AUX1", 0, 2)
# asyn port, driver name, controller index, max. axes)
drvAsynMotorConfigure("XPS1", "motorXPS", 0, 8)
XPSInterpose("XPS1")
# card,  axis, groupName.positionerName, stepSize
# PR50PP
XPSConfigAxis(0,5,"Group6.Pos",   50)
# ILS50PP
XPSConfigAxis(0,6,"Group7.Pos",   2000)
# ILS50PP
XPSConfigAxis(0,7,"Group8.Pos",   5000)
#XPSEnableSetPosition(XPS1, 0)
#XPSSetPositionSettlingTime(XPS1, 200)
#dbLoadRecords("$(MOTOR)/motorApp/Db/trajectoryScan.db", "P=IOC:,R=traj1,NAXES=2,NELM=2000,NPULSE=2000,DONPV=13LAB:str:EraseStart,DONV=1,DOFFPV=13LAB:str:StopAll,DOFFV=1")
iocInit
Starting iocInit
############################################################################
## EPICS R7.0.8
## Rev. 2024-03-01T16:24-0600
## Rev. Date build date/time:
############################################################################
drvStreamInit: Warning! STREAM_PROTOCOL_PATH not set.
IOC:m6Offset devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_OFFSET
recGblRecordError: ao: init_record Error (514,11) PV: IOC:m6Offset
IOC:m6Resolution devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_RESOLUTION
recGblRecordError: ao: init_record Error (514,11) PV: IOC:m6Resolution
IOC:m7Offset devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_OFFSET
recGblRecordError: ao: init_record Error (514,11) PV: IOC:m7Offset
IOC:m7Resolution devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_RESOLUTION
recGblRecordError: ao: init_record Error (514,11) PV: IOC:m7Resolution
IOC:m8Offset devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_OFFSET
recGblRecordError: ao: init_record Error (514,11) PV: IOC:m8Offset
IOC:m8Resolution devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_RESOLUTION
recGblRecordError: ao: init_record Error (514,11) PV: IOC:m8Resolution
IOC:m6Direction devAsynInt32::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_DIRECTION
IOC:m7Direction devAsynInt32::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_DIRECTION
IOC:m8Direction devAsynInt32::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_DIRECTION
2024/11/12 13:27:13.484 motorAxisSetDouble: XPS does not support setting encoder ratio
2024/11/12 13:27:13.484 devMotorAsyn::init_controller, IOC:m6 failed to set encoder ratio to inf
2024/11/12 13:27:13.486 motorAxisSetDouble: XPS does not support setting encoder ratio
2024/11/12 13:27:13.486 devMotorAsyn::init_controller, IOC:m7 failed to set encoder ratio to inf
2024/11/12 13:27:13.487 motorAxisSetDouble: XPS does not support setting encoder ratio
2024/11/12 13:27:13.487 devMotorAsyn::init_controller, IOC:m8 failed to set encoder ratio to inf
2024/11/12 13:27:13.501 drvXPSAsynAux::XPSAuxPoller error calling GPIOAnalogGet=-8
...
2024/11/12 13:27:13.942 drvXPSAsynAux::XPSAuxPoller error calling GPIODigitalGet=-8
2024/11/12 13:27:13.991 IOC:XPSAux1Bi0 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:13.992 IOC:XPSAux1Bi1 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:13.992 IOC:XPSAux1Bi2 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:13.993 drvXPSAsynAux::XPSAuxPoller error calling GPIOAnalogGet=-8
2024/11/12 13:27:13.993 IOC:XPSAux1Bi3 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:13.994 drvXPSAsynAux::XPSAuxPoller error calling GPIODigitalGet=-8
2024/11/12 13:27:13.994 IOC:XPSAux1Bi4 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:13.995 drvXPSAsynAux::XPSAuxPoller error calling GPIODigitalGet=-8
2024/11/12 13:27:13.995 IOC:XPSAux1Bi5 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:13.996 IOC:XPSAux1Bi6 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:13.996 drvXPSAsynAux::XPSAuxPoller error calling GPIODigitalGet=-8
2024/11/12 13:27:13.997 IOC:XPSAux1Bi7 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:13.997 IOC:XPSAux2Bi0 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:13.998 IOC:XPSAux2Bi1 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:13.998 IOC:XPSAux2Bi2 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:13.999 IOC:XPSAux2Bi3 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.008 IOC:XPSAux2Bi4 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.009 IOC:XPSAux2Bi5 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.012 IOC:XPSAux4Bi0 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.012 IOC:XPSAux4Bi1 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.012 IOC:XPSAux4Bi2 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.013 IOC:XPSAux4Bi3 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.013 IOC:XPSAux4Bi4 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.014 IOC:XPSAux4Bi5 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.014 IOC:XPSAux4Bi6 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.015 IOC:XPSAux4Bi7 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.015 IOC:XPSAux4Bi8 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.015 IOC:XPSAux4Bi9 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.017 IOC:XPSAux4Bi10 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.024 IOC:XPSAux4Bi11 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.025 IOC:XPSAux4Bi12 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.025 IOC:XPSAux4Bi13 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.026 IOC:XPSAux4Bi14 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.026 IOC:XPSAux4Bi15 devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.026 IOC:XPSAux1Li devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.027 IOC:XPSAux2Li devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
2024/11/12 13:27:14.028 IOC:XPSAux4Li devAsynUInt32Digital::processCallbackInput process read error drvXPSAsynAux::readUInt32D error calling GPIODigitalGet=-8
iocRun: All initialization complete
# This IOC does not use save/restore, so set values of some PVs
#dbpf("IOC:m1.RTRY", "0")
#dbpf("IOC:m1.TWV", "0.1")
#dbpf("IOC:m2.RTRY", "0")
#dbpf("IOC:m2.TWV", "0.1")
#dbpf("IOC:m3.RTRY", "0")
#dbpf("IOC:m3.TWV", "0.1")
#dbpf("IOC:m4.RTRY", "0")
#dbpf("IOC:m4.TWV", "0.1")
#dbpf("IOC:m5.RTRY", "0")
#dbpf("IOC:m5.TWV", "0.1")
dbpf("IOC:m6.RTRY", "0")
DBF_SHORT:          0 = 0x0  
dbpf("IOC:m6.TWV", "0.1")
DBF_DOUBLE:         0.1      
dbpf("IOC:m7.RTRY", "0")
DBF_SHORT:          0 = 0x0  
dbpf("IOC:m7.TWV", "0.1")
DBF_DOUBLE:         0.1      
dbpf("IOC:m8.RTRY", "0")
DBF_SHORT:          0 = 0x0  
dbpf("IOC:m8.TWV", "0.1")
DBF_DOUBLE:         0.1      
2024/11/12 13:27:14.047 drvXPSAsynAux::XPSAuxPoller error calling GPIOAnalogGet=-8
...

 

 

Here's the contents of my motor.substitutions file:

file "$(MOTOR)/db/basic_asyn_motor.db"
{
pattern
{P,     N,  M,        DTYP,         PORT,  ADDR,  DESC,          EGU,  DIR,  VELO,  VBAS,  ACCL,  BDST,  BVEL,  BACC,  MRES,   PREC,  DHLM,  DLLM,  INIT}
{IOC:,  6,  "m$(N)",  "asynMotor",  XPS1,  5,     "size Rot",  deg,   Pos,  20.,     0,    0.25,    0,     1,    .2,    0.02,    2,     1000000.0,  -1000000.0,      ""}
{IOC:,  7,  "m$(N)",  "asynMotor",  XPS1,  6,     "size X",    mm,    Pos,  50.,     0,    0.25,    0,     1,    .2,    0.0005,  4,     25.0,     -25.0,      ""}
{IOC:,  8,  "m$(N)",  "asynMotor",  XPS1,  7,     "size Y",    mm,    Pos,  50.,     0,    0.25,    0,     1,    .2,    0.0005,  4,     25.0,  -25.0,      ""}
}
file "$(MOTOR)/db/XPS_extra.db"
{
pattern
{P,     R,  PORT,  ADDR}
{IOC:,  m6, XPS1,  5}
{IOC:,  m7, XPS1   6}
{IOC:,  m8, XPS1   7}
}

 

 

Here's the contents of my XPSAux.substitions file:

file "$(MOTOR)/db/XPSAuxLi.db"
{
pattern
{P,     R,          PORT,       CHAN,   SCAN}
{IOC:,  XPSAux1Li,  XPS_AUX1,   0,      "I/O Intr"}
{IOC:,  XPSAux2Li,  XPS_AUX1,   1,      "I/O Intr"}
{IOC:,  XPSAux3Li,  XPS_AUX1,   2,      "I/O Intr"}
{IOC:,  XPSAux4Li,  XPS_AUX1,   3,      "I/O Intr"}
}

file "$(MOTOR)/db/XPSAuxBi.db"
{
pattern
{P,    R,           PORT,     CHAN,  MASK,     SCAN}
{IOC:, XPSAux1Bi0,  XPS_AUX1, 0,     0x000001, "I/O Intr"}
{IOC:, XPSAux1Bi1,  XPS_AUX1, 0,     0x000002, "I/O Intr"}
{IOC:, XPSAux1Bi2,  XPS_AUX1, 0,     0x000004, "I/O Intr"}
{IOC:, XPSAux1Bi3,  XPS_AUX1, 0,     0x000008, "I/O Intr"}
{IOC:, XPSAux1Bi4,  XPS_AUX1, 0,     0x000010, "I/O Intr"}
{IOC:, XPSAux1Bi5,  XPS_AUX1, 0,     0x000020, "I/O Intr"}
{IOC:, XPSAux1Bi6,  XPS_AUX1, 0,     0x000040, "I/O Intr"}
{IOC:, XPSAux1Bi7,  XPS_AUX1, 0,     0x000080, "I/O Intr"}
{IOC:, XPSAux2Bi0,  XPS_AUX1, 1,     0x000001, "I/O Intr"}
{IOC:, XPSAux2Bi1,  XPS_AUX1, 1,     0x000002, "I/O Intr"}
{IOC:, XPSAux2Bi2,  XPS_AUX1, 1,     0x000004, "I/O Intr"}
{IOC:, XPSAux2Bi3,  XPS_AUX1, 1,     0x000008, "I/O Intr"}
{IOC:, XPSAux2Bi4,  XPS_AUX1, 1,     0x000010, "I/O Intr"}
{IOC:, XPSAux2Bi5,  XPS_AUX1, 1,     0x000020, "I/O Intr"}
{IOC:, XPSAux3Bi0,  XPS_AUX1, 2,     0x000001, "I/O Intr"}
{IOC:, XPSAux3Bi1,  XPS_AUX1, 2,     0x000002, "I/O Intr"}
{IOC:, XPSAux3Bi2,  XPS_AUX1, 2,     0x000004, "I/O Intr"}
{IOC:, XPSAux3Bi3,  XPS_AUX1, 2,     0x000008, "I/O Intr"}
{IOC:, XPSAux3Bi4,  XPS_AUX1, 2,     0x000010, "I/O Intr"}
{IOC:, XPSAux3Bi5,  XPS_AUX1, 2,     0x000020, "I/O Intr"}
{IOC:, XPSAux4Bi0,  XPS_AUX1, 3,     0x000001, "I/O Intr"}
{IOC:, XPSAux4Bi1,  XPS_AUX1, 3,     0x000002, "I/O Intr"}
{IOC:, XPSAux4Bi2,  XPS_AUX1, 3,     0x000004, "I/O Intr"}
{IOC:, XPSAux4Bi3,  XPS_AUX1, 3,     0x000008, "I/O Intr"}
{IOC:, XPSAux4Bi4,  XPS_AUX1, 3,     0x000010, "I/O Intr"}
{IOC:, XPSAux4Bi5,  XPS_AUX1, 3,     0x000020, "I/O Intr"}
{IOC:, XPSAux4Bi6,  XPS_AUX1, 3,     0x000040, "I/O Intr"}
{IOC:, XPSAux4Bi7,  XPS_AUX1, 3,     0x000080, "I/O Intr"}
{IOC:, XPSAux4Bi8,  XPS_AUX1, 3,     0x000100, "I/O Intr"}
{IOC:, XPSAux4Bi9,  XPS_AUX1, 3,     0x000200, "I/O Intr"}
{IOC:, XPSAux4Bi10, XPS_AUX1, 3,     0x000400, "I/O Intr"}
{IOC:, XPSAux4Bi11, XPS_AUX1, 3,     0x000800, "I/O Intr"}
{IOC:, XPSAux4Bi12, XPS_AUX1, 3,     0x001000, "I/O Intr"}
{IOC:, XPSAux4Bi13, XPS_AUX1, 3,     0x002000, "I/O Intr"}
{IOC:, XPSAux4Bi14, XPS_AUX1, 3,     0x004000, "I/O Intr"}
{IOC:, XPSAux4Bi15, XPS_AUX1, 3,     0x008000, "I/O Intr"}
}

file "$(MOTOR)/db/XPSAuxBo.db"
{
pattern
{P,    R,           PORT,     CHAN, MASK}
{IOC:, XPSAux1Bo0,  XPS_AUX1, 0,    0x000001}
{IOC:, XPSAux1Bo1,  XPS_AUX1, 0,    0x000002}
{IOC:, XPSAux1Bo2,  XPS_AUX1, 0,    0x000004}
{IOC:, XPSAux1Bo3,  XPS_AUX1, 0,    0x000008}
{IOC:, XPSAux1Bo4,  XPS_AUX1, 0,    0x000010}
{IOC:, XPSAux1Bo5,  XPS_AUX1, 0,    0x000020}
{IOC:, XPSAux1Bo6,  XPS_AUX1, 0,    0x000040}
{IOC:, XPSAux1Bo7,  XPS_AUX1, 0,    0x000080}
{IOC:, XPSAux3Bo0,  XPS_AUX1, 1,    0x000001}
{IOC:, XPSAux3Bo1,  XPS_AUX1, 1,    0x000002}
{IOC:, XPSAux3Bo2,  XPS_AUX1, 1,    0x000004}
{IOC:, XPSAux3Bo3,  XPS_AUX1, 1,    0x000008}
{IOC:, XPSAux3Bo4,  XPS_AUX1, 1,    0x000010}
{IOC:, XPSAux3Bo5,  XPS_AUX1, 1,    0x000020}
{IOC:, XPSAux4Bo0,  XPS_AUX1, 2,    0x000001}
{IOC:, XPSAux4Bo1,  XPS_AUX1, 2,    0x000002}
{IOC:, XPSAux4Bo2,  XPS_AUX1, 2,    0x000004}
{IOC:, XPSAux4Bo3,  XPS_AUX1, 2,    0x000008}
{IOC:, XPSAux4Bo4,  XPS_AUX1, 2,    0x000010}
{IOC:, XPSAux4Bo5,  XPS_AUX1, 2,    0x000020}
{IOC:, XPSAux4Bo6,  XPS_AUX1, 2,    0x000040}
{IOC:, XPSAux4Bo7,  XPS_AUX1, 2,    0x000080}
{IOC:, XPSAux4Bo8,  XPS_AUX1, 2,    0x000100}
{IOC:, XPSAux4Bo9,  XPS_AUX1, 2,    0x000200}
{IOC:, XPSAux4Bo10, XPS_AUX1, 2,    0x000400}
{IOC:, XPSAux4Bo11, XPS_AUX1, 2,    0x000800}
{IOC:, XPSAux4Bo12, XPS_AUX1, 2,    0x001000}
{IOC:, XPSAux4Bo13, XPS_AUX1, 2,    0x002000}
{IOC:, XPSAux4Bo14, XPS_AUX1, 2,    0x004000}
{IOC:, XPSAux4Bo15, XPS_AUX1, 2,    0x008000}
}

file "$(MOTOR)/db/XPSAuxLo.db"
{
pattern
{P,     R,         PORT,     CHAN}
{IOC:,  XPSAux1Lo, XPS_AUX1, 0}
{IOC:,  XPSAux3Lo, XPS_AUX1, 1}
{IOC:,  XPSAux4Lo, XPS_AUX1, 2}
}


file "$(MOTOR)/db/XPSAuxAi.db"
{
pattern
{P,    R,          PORT,     CHAN, LOPR,   HOPR,  PREC, SCAN}
{IOC:, XPSAuxAi0,  XPS_AUX1, 0,    -10.0,  10.0,  4,    "1 second"}
{IOC:, XPSAuxAi1,  XPS_AUX1, 1,    -10.0,  10.0,  4,    "1 second"}
{IOC:, XPSAuxAi2,  XPS_AUX1, 2,    -10.0,  10.0,  4,    "1 second"}
{IOC:, XPSAuxAi3,  XPS_AUX1, 3,    -10.0,  10.0,  4,    "1 second"}
}

file "$(MOTOR)/db/XPSAuxAo.db"
{
pattern
{P,    R,          PORT,     CHAN, DRVL,   LOPR,   DRVH,  HOPR,  PREC}
{IOC:, XPSAuxAo0,  XPS_AUX1, 0,    -10.0,  -10.0,  10.0,  10.0,   4}
{IOC:, XPSAuxAo1,  XPS_AUX1, 1,    -10.0,  -10.0,  10.0,  10.0,   4}
{IOC:, XPSAuxAo2,  XPS_AUX1, 2,    -10.0,  -10.0,  10.0,  10.0,   4}
{IOC:, XPSAuxAo3,  XPS_AUX1, 3,    -10.0,  -10.0,  10.0,  10.0    4}
}

 

 

All the best.

- Jesse

 

----
Jesse Hopkins, PhD
Deputy Director
BioCAT, Sector 18
Advanced Photon Source


Replies:
Re: [Ext] RE: Help with motorNewport config Mark Rivers via Tech-talk
References:
Help with motorNewport config Jesse Hopkins via Tech-talk
RE: Help with motorNewport config Mark Rivers via Tech-talk
Re: [Ext] RE: Help with motorNewport config Jesse Hopkins via Tech-talk
RE: [Ext] RE: Help with motorNewport config Mark Rivers via Tech-talk
Re: [Ext] RE: Help with motorNewport config Jesse Hopkins via Tech-talk
RE: [Ext] RE: Help with motorNewport config Mark Rivers via Tech-talk
Re: [Ext] RE: Help with motorNewport config Jesse Hopkins via Tech-talk
RE: [Ext] RE: Help with motorNewport config Mark Rivers via Tech-talk

Navigate by Date:
Prev: RE: [Ext] RE: Help with motorNewport config Mark Rivers via Tech-talk
Next: Re: [EXTERNAL] Phoebus settings.ini - Path to predefined Colors and Fonts Dr. Simon Friederich 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  <20242025 
Navigate by Thread:
Prev: RE: [Ext] RE: Help with motorNewport config Mark Rivers via Tech-talk
Next: Re: [Ext] RE: Help with motorNewport config Mark Rivers 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  <20242025 
ANJ, 13 Nov 2024 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions ·
· Download · Search · IRMIS · Talk · Documents · Links · Licensing ·