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  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage
From: Tonia Batten <[email protected]>
To: "Pearson, Matthew R." <[email protected]>, Mark Rivers <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Fri, 1 Nov 2013 17:28:40 -0600
Hi Mark/Matthew,
 
Thanks for your feedback.
 
I tried running the application with more complete debugging information and I am wondering if the problem is associated with the fact that I am running on linux-armv5teb architecture.  It looks to me like the hardware might being having problems reading Float values?? (asynFloat64SyncIO read: 2.122058e-314).  That being said, the motor record is definitely passing in the wrong position (Set card 0, axis 0 move to 0.000000, min vel=0.000000, max_vel=0.000000, accel=0.000000). I have also tried to adjusted the VBAS value to 0 and this did not seem to have any effect.  I am going to try running the software on a different architecture (linux-x86_64) to see if that changes any of the results I am seeing.  If not, I will try and upgrade the version of the Asyn and Motor drivers I am using to see if this helps.
 
I have included the output from running ‘asynReport 10 XPS1’ below, I don’t see the stepSize the driver is using.  I am wondering if that information was added in a later version?
 
If you guys have any other ideas I am completely open to suggestions.  I will follow up again once I have completed the additional testing I described above.
 
Thanks and have a wonderful weekend!
 
Regards, Tonia
 
 
 
#!./bin/linux-armv5teb/ideasMonoMtr
## You may have to change ideasMonoMtr to something else
## everywhere it appears in this file
#< envPaths
## Register all support components
dbLoadDatabase("./dbd/ideasMonoMtr.dbd",0,0)
ideasMonoMtr_registerRecordDeviceDriver(pdbbase)
## Load record instances
dbLoadRecords("./db/IDEAS_MonoMtr.db")
dbLoadRecords("./db/IDEAS_MonoPseudoMtr.db")
dbLoadRecords("/home/epics/src/R3.14.12/modules/support/motor-6-5//db/motorUtil.db", "P=SMTR1608-9-B20-05:")
# cards (total controllers)
XPSSetup(1)
# card, IP, PORT, number of axes, active poll period (ms), idle poll period (ms)
XPSConfig(0, "192.168.0.254", 5001, 1, 10, 5000)
# asyn port, driverType, box number, number of  axes)
drvAsynMotorConfigure("XPS1", "motorXPS", 0, 1)
XPSInterpose("XPS1")
# Turns off the ability of the motor record to change an actuator's position without moving it.
XPSEnableSetPosition(0)
# card,  axis, postioner name, steps per unit
XPSConfigAxis(0,0,"S.Pos",10000)
#asynSetTraceMask("XPS1",0,0x9)
asynSetTraceMask("XPS1",0,0xFF)
asynSetTraceIOMask("XPS1",0,0x2)
#asynSetTraceIOMask("XPS1",0,2)
iocInit()
Starting iocInit
############################################################################
## EPICS R3.14.12 $Date: Wed 2010-11-24 14:50:38 -0600$
## EPICS Base built Apr 21 2011
############################################################################
2013/11/01 16:53:40.717 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:40.749 XPSInterpose::drvUserCreate, drvInfo=MOTOR_POSITION, pptypeName=(nil), psize=(nil), pasynUser=0x937a8
2013/11/01 16:53:40.757 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_POSITION, pptypeName=(nil), psize=(nil), pasynUser=0x937a8
2013/11/01 16:53:40.766 drvMotorAsyn::drvUserCreate, command=MOTOR_POSITION
2013/11/01 16:53:40.775 XPSInterpose::drvUserCreate, drvInfo=MOTOR_POSITION, pptypeName=(nil), psize=(nil), pasynUser=0x9f858
2013/11/01 16:53:40.784 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_POSITION, pptypeName=(nil), psize=(nil), pasynUser=0x9f858
2013/11/01 16:53:40.792 drvMotorAsyn::drvUserCreate, command=MOTOR_POSITION
2013/11/01 16:53:40.801 XPSInterpose::drvUserCreate, drvInfo=XPS_STATUS, pptypeName=(nil), psize=(nil), pasynUser=0x9fc50
2013/11/01 16:53:40.816 XPSInterpose::drvUserCreate, command=XPS_STATUS
2013/11/01 16:53:40.825 XPSInterpose::drvUserCreate, drvInfo=XPS_STATUS, pptypeName=(nil), psize=(nil), pasynUser=0xa0080
2013/11/01 16:53:40.833 XPSInterpose::drvUserCreate, command=XPS_STATUS
2013/11/01 16:53:40.843 XPS1 lockPort
2013/11/01 16:53:40.851 drvMotorAsyn::getBounds,low=0, high=65535
2013/11/01 16:53:40.860 asynInt32SyncIO getBounds: status=0 low 0 high 65535
2013/11/01 16:53:40.868 XPS1 unlockPort
2013/11/01 16:53:40.876 XPSInterpose::drvUserCreate, drvInfo=MAX_JERK_TIME, pptypeName=(nil), psize=(nil), pasynUser=0xa0268
2013/11/01 16:53:40.886 XPSInterpose::drvUserCreate, command=MAX_JERK_TIME
2013/11/01 16:53:40.895 XPSInterpose::drvUserCreate, drvInfo=MAX_JERK_TIME, pptypeName=(nil), psize=(nil), pasynUser=0xa04a0
2013/11/01 16:53:40.903 XPSInterpose::drvUserCreate, command=MAX_JERK_TIME
2013/11/01 16:53:40.915 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:40.921 XPS1 lockPort
2013/11/01 16:53:40.930 drvMotorAsyn::readFloat64, reason=27, value=0.000000
2013/11/01 16:53:40.940 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:40.947 asynFloat64SyncIO read: 2.122058e-314
2013/11/01 16:53:40.955 XPS1 unlockPort
2013/11/01 16:53:40.963 drvMotorAsyn::drvUserDestroy, drvPvt=0x92690, pasynUser=0xa04a0
2013/11/01 16:53:40.972 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:40.979 XPSInterpose::drvUserCreate, drvInfo=MIN_JERK_TIME, pptypeName=(nil), psize=(nil), pasynUser=0xa04a0
2013/11/01 16:53:40.988 XPSInterpose::drvUserCreate, command=MIN_JERK_TIME
2013/11/01 16:53:40.996 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:41.004 XPSInterpose::drvUserCreate, drvInfo=MIN_JERK_TIME, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.012 XPSInterpose::drvUserCreate, command=MIN_JERK_TIME
2013/11/01 16:53:41.021 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:41.028 XPS1 lockPort
2013/11/01 16:53:41.037 drvMotorAsyn::readFloat64, reason=26, value=0.000000
2013/11/01 16:53:41.048 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:41.055 asynFloat64SyncIO read: 2.122058e-314
2013/11/01 16:53:41.063 XPS1 unlockPort
2013/11/01 16:53:41.073 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:41.079 drvMotorAsyn::drvUserDestroy, drvPvt=0x92690, pasynUser=0xa0a38
2013/11/01 16:53:41.092 XPSInterpose::drvUserCreate, drvInfo=MOTOR_MOVE_REL, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.100 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_MOVE_REL, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.110 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:41.117 drvMotorAsyn::drvUserCreate, command=MOTOR_MOVE_REL
2013/11/01 16:53:41.126 XPSInterpose::drvUserCreate, drvInfo=MOTOR_MOVE_ABS, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.135 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_MOVE_ABS, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.143 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:41.149 drvMotorAsyn::drvUserCreate, command=MOTOR_MOVE_ABS
2013/11/01 16:53:41.158 XPSInterpose::drvUserCreate, drvInfo=MOTOR_MOVE_VEL, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.168 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:41.175 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_MOVE_VEL, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.182 drvMotorAsyn::drvUserCreate, command=MOTOR_MOVE_VEL
2013/11/01 16:53:41.192 XPSInterpose::drvUserCreate, drvInfo=MOTOR_HOME, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.201 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_HOME, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.210 drvMotorAsyn::drvUserCreate, command=MOTOR_HOME
2013/11/01 16:53:41.222 XPSInterpose::drvUserCreate, drvInfo=MOTOR_STOP_AXIS, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.229 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_STOP_AXIS, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.238 drvMotorAsyn::drvUserCreate, command=MOTOR_STOP_AXIS
2013/11/01 16:53:41.247 XPSInterpose::drvUserCreate, drvInfo=MOTOR_VELOCITY, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.256 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_VELOCITY, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.265 drvMotorAsyn::drvUserCreate, command=MOTOR_VELOCITY
2013/11/01 16:53:41.272 XPSInterpose::drvUserCreate, drvInfo=MOTOR_VEL_BASE, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.281 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_VEL_BASE, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.290 drvMotorAsyn::drvUserCreate, command=MOTOR_VEL_BASE
2013/11/01 16:53:41.299 XPSInterpose::drvUserCreate, drvInfo=MOTOR_ACCEL, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.309 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_ACCEL, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.319 drvMotorAsyn::drvUserCreate, command=MOTOR_ACCEL
2013/11/01 16:53:41.328 XPSInterpose::drvUserCreate, drvInfo=MOTOR_POSITION, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.338 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_POSITION, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.350 drvMotorAsyn::drvUserCreate, command=MOTOR_POSITION
2013/11/01 16:53:41.359 XPSInterpose::drvUserCreate, drvInfo=MOTOR_RESOLUTION, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.370 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_RESOLUTION, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.379 drvMotorAsyn::drvUserCreate, command=MOTOR_RESOLUTION
2013/11/01 16:53:41.387 XPSInterpose::drvUserCreate, drvInfo=MOTOR_ENC_RATIO, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.397 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_ENC_RATIO, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.406 drvMotorAsyn::drvUserCreate, command=MOTOR_ENC_RATIO
2013/11/01 16:53:41.415 XPSInterpose::drvUserCreate, drvInfo=MOTOR_PGAIN, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.422 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_PGAIN, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.431 drvMotorAsyn::drvUserCreate, command=MOTOR_PGAIN
2013/11/01 16:53:41.439 XPSInterpose::drvUserCreate, drvInfo=MOTOR_IGAIN, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.448 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_IGAIN, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.456 drvMotorAsyn::drvUserCreate, command=MOTOR_IGAIN
2013/11/01 16:53:41.465 XPSInterpose::drvUserCreate, drvInfo=MOTOR_DGAIN, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.473 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_DGAIN, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.483 drvMotorAsyn::drvUserCreate, command=MOTOR_DGAIN
2013/11/01 16:53:41.492 XPSInterpose::drvUserCreate, drvInfo=MOTOR_HIGH_LIMIT, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.500 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_HIGH_LIMIT, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.509 drvMotorAsyn::drvUserCreate, command=MOTOR_HIGH_LIMIT
2013/11/01 16:53:41.517 XPSInterpose::drvUserCreate, drvInfo=MOTOR_LOW_LIMIT, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.526 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_LOW_LIMIT, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.535 drvMotorAsyn::drvUserCreate, command=MOTOR_LOW_LIMIT
2013/11/01 16:53:41.544 XPSInterpose::drvUserCreate, drvInfo=MOTOR_SET_CLOSED_LOOP, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.552 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_SET_CLOSED_LOOP, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.561 drvMotorAsyn::drvUserCreate, command=MOTOR_SET_CLOSED_LOOP
2013/11/01 16:53:41.571 XPSInterpose::drvUserCreate, drvInfo=MOTOR_STATUS, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.581 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_STATUS, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.592 drvMotorAsyn::drvUserCreate, command=MOTOR_STATUS
2013/11/01 16:53:41.601 XPSInterpose::drvUserCreate, drvInfo=MOTOR_UPDATE_STATUS, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.617 drvMotorAsyn::drvUserCreate, drvInfo=MOTOR_UPDATE_STATUS, pptypeName=(nil), psize=(nil), pasynUser=0xa0a38
2013/11/01 16:53:41.626 drvMotorAsyn::drvUserCreate, command=MOTOR_UPDATE_STATUS
2013/11/01 16:53:41.639 XPS1 0 registerInterruptUser
2013/11/01 16:53:41.647 drvMotorAsyn::readMotorStatus, [0000080a,60004.000000,60004.000000,0.000000]
2013/11/01 16:53:41.656 devMotorAsyn::init_controller, SMTR1608-9-B20-05:brag setting of position not required, position=60004.000000, mres=0.000100, dval=0.000000, rdbd=0.000100
2013/11/01 16:53:41.665 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=1
2013/11/01 16:53:41.674 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=19, pact=0
2013/11/01 16:53:41.683 XPS1 addr 0 queueRequest priority 0 not lockHolder
2013/11/01 16:53:41.692 XPS1 0 autoConnect
2013/11/01 16:53:41.697 drvMotorAsyn::connect, pasynUser=0x929a8
2013/11/01 16:53:41.698 XPS1 callback
2013/11/01 16:53:41.698 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag command=14, ivalue=0, dvalue=0.000000
2013/11/01 16:53:41.699 drvMotorAsyn::writeFloat64, reason=4, pasynUser=0xa1240 pAxis=0x930a8
2013/11/01 16:53:41.706 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=20, pact=0
2013/11/01 16:53:41.715 motorAxisSetDouble[0,0]: error performing PositionerUserTravelLimitsSet for high limit=0.000000, status=-17
2013/11/01 16:53:41.716 drvMotorAsyn::writeFloat64, reason=4, value=0.000000
2013/11/01 16:53:41.717 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag pasyn{Float64,Int32}->write returned
2013/11/01 16:53:41.721 XPS1 addr 0 queueRequest priority 0 not lockHolder
2013/11/01 16:53:41.730 XPS1 callback
2013/11/01 16:53:41.731 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag command=15, ivalue=0, dvalue=0.000000
2013/11/01 16:53:41.732 drvMotorAsyn::writeFloat64, reason=3, pasynUser=0xa1240 pAxis=0x930a8
2013/11/01 16:53:41.739 motorAxisSetDouble[0,0]: error performing PositionerUserTravelLimitsSet for low limit=0.000000, status=-17
2013/11/01 16:53:41.740 drvMotorAsyn::writeFloat64, reason=3, value=0.000000
2013/11/01 16:53:41.741 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag pasyn{Float64,Int32}->write returned
2013/11/01 16:53:41.754 SMTR1608-9-B20-05:brag:READBACK devAsynFloat64::getIoIntInfo registering interrupt
2013/11/01 16:53:41.762 SMTR1608-9-B20-05:brag:READBACK devAsynFloat64::getIoIntInfo created ring buffer, size=10
2013/11/01 16:53:41.770 XPS1 0 registerInterruptUser
2013/11/01 16:53:41.779 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::getIoIntInfo registering interrupt
2013/11/01 16:53:41.788 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::getIoIntInfo created ring buffer, size=10
2013/11/01 16:53:41.796 XPS1 0 registerInterruptUser
2013/11/01 16:53:42.315 XPS1 addr 0 queueRequest priority 0 not lockHolder
2013/11/01 16:53:42.316 XPS1 addr 0 queueRequest priority 0 not lockHolder
2013/11/01 16:53:42.319 XPS1 callback
2013/11/01 16:53:42.320 drvMotorAsyn::readFloat64, reason=0, value=60004.000000
2013/11/01 16:53:42.321 SMTR1608-9-B20-05:brag:READBACK devAsynFloat64 process value=60004.000000
2013/11/01 16:53:42.322 XPS1 callback
2013/11/01 16:53:42.323 drvMotorAsyn::readInt32, reason=28, value=11
2013/11/01 16:53:42.323 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32 process value=11
cas warning: Configured TCP port was unavailable.
cas warning: Using dynamically assigned TCP port 1081,
cas warning: but now two or more servers share the same UDP port.
cas warning: Depending on your IP kernel this server may not be
cas warning: reachable with UDP unicast (a host's IP in EPICS_CA_ADDR_LIST)
iocRun: All initialization complete
2013/11/01 16:53:42.405 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=0
epics> 2013/11/01 16:53:46.176 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:46.183 SMTR1608-9-B20-05:brag:READBACK devAsynFloat64::interruptCallbackInput new value=60009.000000
2013/11/01 16:53:46.186 SMTR1608-9-B20-05:brag devMotorAsyn::statusCallback new value=[p:60009.000000,e:60009.000000,s:80a]
2013/11/01 16:53:46.189 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=1
2013/11/01 16:53:46.192 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::interruptCallbackInput new value=11
2013/11/01 16:53:46.195 SMTR1608-9-B20-05:brag:READBACK devAsynFloat64::getCallbackValue from ringBuffer value=60009.000000
2013/11/01 16:53:46.201 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::getCallbackValue from ringBuffer value=11
2013/11/01 16:53:47.508 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=0
2013/11/01 16:53:47.511 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=5, pact=1
2013/11/01 16:53:47.515 XPS1 addr 0 queueRequest priority 0 not lockHolder
2013/11/01 16:53:47.517 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=6, pact=1
2013/11/01 16:53:47.520 XPS1 addr 0 queueRequest priority 0 not lockHolder
2013/11/01 16:53:47.522 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=7, pact=1
2013/11/01 16:53:47.525 XPS1 addr 0 queueRequest priority 0 not lockHolder
2013/11/01 16:53:47.528 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=0, pact=1
2013/11/01 16:53:47.529 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=8, pact=1
2013/11/01 16:53:47.531 XPS1 addr 0 queueRequest priority 0 not lockHolder
2013/11/01 16:53:47.541 XPS1 callback
2013/11/01 16:53:47.547 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag command=6, ivalue=0, dvalue=0.000000
2013/11/01 16:53:47.549 drvMotorAsyn::writeFloat64, reason=101, pasynUser=0xf2568 pAxis=0x930a8
2013/11/01 16:53:47.551 drvMotorAsyn::writeFloat64, reason=101, value=0.000000
2013/11/01 16:53:47.557 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=0
2013/11/01 16:53:47.559 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=0
2013/11/01 16:53:47.562 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=0
2013/11/01 16:53:47.569 XPS1 callback
2013/11/01 16:53:47.571 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag command=5, ivalue=0, dvalue=0.000000
2013/11/01 16:53:47.573 drvMotorAsyn::writeFloat64, reason=100, pasynUser=0xf26d8 pAxis=0x930a8
2013/11/01 16:53:47.576 drvMotorAsyn::writeFloat64, reason=100, value=0.000000
2013/11/01 16:53:47.578 XPS1 callback
2013/11/01 16:53:47.580 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag command=7, ivalue=0, dvalue=0.000000
2013/11/01 16:53:47.582 drvMotorAsyn::writeFloat64, reason=102, pasynUser=0xf2878 pAxis=0x930a8
2013/11/01 16:53:47.586 drvMotorAsyn::writeFloat64, reason=102, value=0.000000
2013/11/01 16:53:47.587 XPS1 callback
2013/11/01 16:53:47.588 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag command=0, ivalue=0, dvalue=0.000000
2013/11/01 16:53:47.589 drvMotorAsyn::writeFloat64, reason=104, pasynUser=0xf2a18 pAxis=0x930a8
2013/11/01 16:53:47.589 Set card 0, axis 0 move to 0.000000, min vel=0.000000, max_vel=0.000000, accel=0.000000
2013/11/01 16:53:47.597 SendAndReceive unexpected response =-17,GroupMoveAbsolute (S.Pos,1.398141117789e-312),EndOfAPI
2013/11/01 16:53:47.602 SMTR1608-9-B20-05:brag devMotorAsyn::statusCallback new value=[p:60009.000000,e:60009.000000,s:808]  P
2013/11/01 16:53:47.603 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::interruptCallbackInput new value=11
2013/11/01 16:53:47.608 drvMotorAsyn::writeFloat64, reason=104, value=0.000000
2013/11/01 16:53:47.610 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=1
2013/11/01 16:53:47.618 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::getCallbackValue from ringBuffer value=11
2013/11/01 16:53:47.622 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:47.638 SMTR1608-9-B20-05:brag devMotorAsyn::statusCallback new value=[p:60009.000000,e:60009.000000,s:80a]
2013/11/01 16:53:47.640 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=1
2013/11/01 16:53:47.643 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::interruptCallbackInput new value=11
2013/11/01 16:53:47.652 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::getCallbackValue from ringBuffer value=11
2013/11/01 16:53:47.666 XPSPoller: S.Pos axisStatus=11
2013/11/01 16:53:47.695 XPSPoller: S.Pos axisStatus=11
 
 
Output from > asynReport 10 XPS1
 
XPS1 multiDevice:Yes canBlock:Yes autoConnect:Yes
    enabled:Yes connected:Yes numberConnects 1
    nDevices 1 nQueued 0 blocked:No
    asynManagerLock:No synchronousLock:No
    exceptionActive:No exceptionUsers 0 exceptionNotifys 0
    interposeInterfaceList
        asynDrvUser pinterface 0x400c0a84 drvPvt 0x934d0
    interfaceList
        asynCommon pinterface 0x40109614 drvPvt 0x92690
        asynInt32 pinterface 0x40109620 drvPvt 0x92690
        asynUInt32Digital pinterface 0x40109634 drvPvt 0x92690
        asynFloat64 pinterface 0x40109650 drvPvt 0x92690
        asynFloat64Array pinterface 0x4010986c drvPvt 0x92690
        asynGenericPointer pinterface 0x40109660 drvPvt 0x92690
        asynDrvUser pinterface 0x40109670 drvPvt 0x92690
    addr 0 autoConnect Yes enabled Yes connected Yes exceptionActive No
    exceptionActive No exceptionUsers 0 exceptionNotifys 0
    blocked No
Port: XPS1
    messages sent OK=0; send failed (queue full)=0
    int32 callback client address=0x40168e48, addr=0, reason=28
    float64 callback client address=0x401712f0, addr=0, reason=0
    motorStatus callback client address=0x400fb33c, reason=108
 
 
 
-----Original Message-----
From: Pearson, Matthew R. [mailto:[email protected]]
Sent: November-01-13 4:55 PM
To: Mark Rivers
Cc: Tonia Batten; [email protected]
Subject: Re: Newport XPS-Q8 and Motor Record - RV120HAHL stage
 
 
Hi Tonia,
 
I've had problems in the past setting VBAS to non zero values. I seem to remember it caused the acceleration to be set too high for the XPS, although it may not be causing this issue.
 
Also, I see you're using Asyn 4-13. It's probably worth upgrading from that version since there were locking problems in that version (fixed in Asyn 4-14).
 
Cheers,
Matt
 
 
 
On Nov 1, 2013, at 5:53 PM, Mark Rivers <[email protected]> wrote:
 
> Hi Tonia,
> It looks to me like the conversion from steps to XPS engineering units may be incorrect.  The steps per unit you are passing in XPSConfigAxis looks OK, since it is 10000, which is the reciprocal of MRES (0.0001).   The driver converts “steps per units” to “stepSize”  = 1./”steps per unit”, and it multiplies all velocity and position values from the motor record by this value.
> You can determine what value of stepSize the driver is acutall using by typing the following command:
> asynReport 10 XPS1
> You can also get more complete debugging output by changing this line:
> asynSetTraceMask("XPS1",0,0x9)
> to this:
> asynSetTraceMask("XPS1",0,0xFF)
> That should enable this output in motorAxisMove:
>    PRINT(pAxis->logParam, FLOW, "Set card %d, axis %d move to %f, min vel=%f, max_vel=%f, accel=%f\n",
>           pAxis->card, pAxis->axis, position, min_velocity,
> max_velocity, acceleration);
> That will show you the target position (in “steps”) and velocity (in “steps” per second) the motor record is requesting.
> motorAxisMove then sets the velocity and acceleration as follows:
>     status = PositionerSGammaParametersSet(pAxis->pollSocket,
>                                            pAxis->positionerName,
>                                            max_velocity*pAxis->stepSize,
>                                            acceleration*pAxis->stepSize,
>                                            pAxis->minJerkTime,
>                                            pAxis->maxJerkTime);
> It then moves the motor as follows:
>     deviceUnits = position * pAxis->stepSize; ..
>         status = GroupMoveAbsolute(pAxis->moveSocket,
>                                    pAxis->positionerName,
>                                    1,
>                                    &deviceUnits);
> Cheers,
> Mark
> [mailto:[email protected]] On Behalf Of Tonia Batten
> Sent: Friday, November 01, 2013 4:13 PM
> Subject: Newport XPS-Q8 and Motor Record - RV120HAHL stage
> Good Afternoon,
> I am using EPICS R3.14.12, MOTOR 6-5 and ASYN 4-13 with a Newport XPS-Q8 controller with an XPS-DRV03 card to try and move a RV120HAHL stage.  Because the RV120HAHL stage is not supported by the Newport Controller I have configured the RV120CCHL and adjusted the following parameters and then auto tuned the configuration for the stage.
> EncoderResolution = 0.0001 ;--- units
> MaximumVelocity = 8 ;--- units / s
> MaximumAcceleration = 32 ;--- units / s² HomeSearchMaximumVelocity = 4
> ;--- units / s HomeSearchMaximumAcceleration = 16 ;--- units / s²
> MinimumTargetPosition=1;--- units
> MaximumTargetPosition=59;--- units
> HomePreset=6;--- units
> Here is the information from the .ini file for the stage I have configured.
> ;RV@RV160CCHL@XPS-DRV03
> ;--- Unit = deg
> ;--- Configuration_Comment =
> ;--- Smart stage name
> SmartStageName=
> ;--- Motor driver model parameters
> DriverName=XPS-DRV03
> DriverMaximumRMSCurrent=1.98;--- A
> DriverRMSIntegrationTime=3;--- s
> ;--- Driver command interface parameters
> MotorDriverInterface=AnalogVoltage
> ScalingCurrent=5;--- A
> CurrentLimit=3.96;--- A
> ScalingVoltage=48;--- V
> VoltageLimit=45.56;--- V
> ;--- Position encoder interface parameters EncoderType=AquadB
> EncoderResolution=0.0001;--- units
> LinearEncoderCorrection=0;--- ppm
> Backlash=0;--- units
> CurrentVelocityCutOffFrequency=100;--- Hz
> CurrentAccelerationCutOffFrequency=100;--- Hz
> PositionerMappingFileName= PositionerMappingLineNumber=
> PositionerMappingMaxPositionError=;--- units
> EncoderIndexOffset=0;--- units
> ;--- Limit sensor input plug parameters
> ServitudesType=StandardEORDriverPlug
> MinimumTargetPosition=1;--- units
> MaximumTargetPosition=59;--- units
> HomePreset=6;--- units
> MaximumVelocity=8;--- units / s
> MaximumAcceleration=32;--- units / s2
> EmergencyDecelerationMultiplier=4
> MinimumJerkTime=0.005;--- s
> MaximumJerkTime=0.05;--- s
> TrackingCutOffFrequency=25;--- Hz
> ;--- Home search process parameters
> HomeSearchSequenceType=MechanicalZeroAndIndexHomeSearch
> HomeSearchMaximumVelocity=4;--- units / s
> HomeSearchMaximumAcceleration=16;--- units / s2
> HomeSearchTimeOut=86;--- s
> HomingSensorOffset=0;--- units
> ;--- Position servo loop type parameters
> CorrectorType=PIDDualFFVoltage ClosedLoopStatus=Closed
> FatalFollowingError=1;--- units
> KP=36
> KI=650
> KD=0.279
> KS=0.8
> GKP=0
> GKD=0
> GKI=0
> KForm=0;--- units
> IntegrationTime=1E+99;--- s
> DerivativeFilterCutOffFrequency=4000;--- Hz
> DeadBandThreshold=0;--- units
> KFeedForwardVelocity=1.815
> KFeedForwardAcceleration=0.0010378
> KFeedForwardVelocityOpenLoop=1.815
> Friction=0;--- V
> NotchFrequency1=0;--- Hz
> NotchBandwidth1=0;--- Hz
> NotchGain1=0
> NotchFrequency2=0;--- Hz
> NotchBandwidth2=0;--- Hz
> NotchGain2=0
> ;--- Motion done condition mode parameters MotionDoneMode=Theoretical
> After rebooting the controller I am able to successfully use the Newport web interface to initialize, home and move the stage.  However when I try and move the stage with the Motor record I am seeing strange behaviour.
> Here is my st.cmd file.
> #!./bin/linux-armv5teb/ideasMonoMtr
> ## You may have to change ideasMonoMtr to something else ## everywhere
> it appears in this file
> #< envPaths
> ## Register all support components
> dbLoadDatabase("./dbd/ideasMonoMtr.dbd",0,0)
> ideasMonoMtr_registerRecordDeviceDriver(pdbbase)
> ## Load record instances
> dbLoadRecords("./db/IDEAS_MonoMtr.db")
> dbLoadRecords("./db/IDEAS_MonoPseudoMtr.db")
> dbLoadRecords("$(MOTOR)/db/motorUtil.db", "P=SMTR1608-9-B20-05:")
> # cards (total controllers)
> XPSSetup(1)
> # card, IP, PORT, number of axes, active poll period (ms), idle poll
> period (ms) XPSConfig(0, "192.168.0.254", 5001, 1, 10, 5000)
> # asyn port, driverType, box number, number of  axes)
> drvAsynMotorConfigure("XPS1", "motorXPS", 0, 1)
> XPSInterpose("XPS1")
> # Turns off the ability of the motor record to change an actuator's position without moving it.
> XPSEnableSetPosition(0)
> # card,  axis, postioner name, steps per unit
> XPSConfigAxis(0,0,"S.Pos",10000)
> asynSetTraceMask("XPS1",0,0x9)
> #asynSetTraceMask("XPS1",0,255)
> asynSetTraceIOMask("XPS1",0,0x2)
> #asynSetTraceIOMask("XPS1",0,2)
> iocInit()
> Here is how my motor record and the XPS_extra records are defined.  In addition I have some additional PV’s defined to calculate the ultimate position of the motor.
> record(motor,"SMTR1608-9-B20-05:brag")
> {
>                 field(DESC,"Mono Brag")
>                 field(DTYP,"asynMotor")
>                 field(DIR,"Pos")
>                 field(VELO,"1")
>                 field(VBAS,".1")
>                 field(ACCL,".2")
>                 field(BDST,"0")
>                 field(BVEL,"1")
>                 field(BACC,".2")
>                 field(OUT,"@asyn(XPS1,0)")
>                 field(MRES,"0.0001")
>                 field(PREC,"5")
>                 field(EGU,"degrees")
>                 field(DHLM,"59")
>                 field(DLLM,"1")
>                 field(INIT,"")
>                 field(RTRY,"0")
>                 field(TWV,"1")
> }
> # Database for Newport XPS
> grecord(ao,"SMTR1608-9-B20-05:brag:MIN_JERK_TIME") {
>     field(DESC,"Min jerk time")
>     field(PREC,"3")
>     field(VAL,".01")
>     field(DTYP, "asynFloat64")
>     field(OUT,"@asyn(XPS1,0)MIN_JERK_TIME")
> }
> grecord(ao,"SMTR1608-9-B20-05:brag:MAX_JERK_TIME") {
>     field(DESC,"Max jerk time")
>     field(PREC,"3")
>     field(VAL,".03")
>     field(DTYP, "asynFloat64")
>     field(OUT,"@asyn(XPS1,0)MAX_JERK_TIME")
> }
> grecord(ai,"SMTR1608-9-B20-05:brag:READBACK") {
>     field(DESC,"Readback")
>     field(PREC,"4")
>     field(PINI, "1")
>     field(DTYP, "asynFloat64")
>     field(SCAN, "I/O Intr")
>     field(INP,"@asyn(XPS1,0)MOTOR_POSITION")
> }
> grecord(ai,"SMTR1608-9-B20-05:brag:XPS_STATUS") {
>     field(DESC,"XPS Group Status")
>     field(DTYP, "asynInt32")
>     field(PINI, "1")
>     field(PREC,"0")
>     field(SCAN, "I/O Intr")
>     field(INP,"@asyn(XPS1,0)XPS_STATUS")
> }
> I did an asyn trace and after starting up the motor records appears to be passing in the wrong values for the limits.
> 2013/11/01 14:03:31.880 motorAxisSetDouble[0,0]: error performing
> PositionerUserTravelLimitsSet for high limit=0.000000, status=-17
> 2013/11/01 14:03:31.888 drvMotorAsyn::writeFloat64, reason=4,
> value=0.000000
> 2013/11/01 14:03:31.895 devMotorAsyn::asynCallback:
> SMTR1608-9-B20-05:brag pasyn{Float64,Int32}->write returned
> 2013/11/01 14:03:31.904 motorAxisSetDouble[0,0]: error performing
> PositionerUserTravelLimitsSet for low limit=0.000000, status=-17
> Upon initialization I am pushing in a movement from the home position of 6.000 to 8.54439294393059, however the motor is passing in a value below the low limit for an absolute move and is therefore not moving.
> 2013/11/01 14:03:36.041 SendAndReceive unexpected response
> =-17,GroupMoveAbsolute (S.Pos,1.398175069718e-312),EndOfAPI
> epics> dbpr SMTR1608-9-B20-05:brag 10
> ACCL: 0.2           ACKS: NO_ALARM      ACKT: YES           ADEL: 0
> ALST: 0             ASG:                ASP: (nil)          ATHM: 0
> BACC: 0.2           BDST: 0             BKPT: 00            BVEL: 1
> CARD: -1            CBAK: 0xa0db8       CDIR: 1             CNEN: Disable
> DCOF: 0             DESC: Mono Brag     DHLM: 59
> DIFF: 2.54329294393059                  DINP:CONSTANT       DIR: Pos
> DISA: 0             DISP: 0             DISS: NO_ALARM      DISV: 1
> DLLM: 1             DLY: 0              DMOV: 1             DOL:CONSTANT
> DPVT: 0xa0dd0       DRBV: 6.0011        DSET: 0x40109680    DTYP: asynMotor
> DVAL: 8.54439294393059                  EGU: degrees        ERES: 1.0e-04
> EVNT: 0             FLNK:CONSTANT 0     FOF: 0              FOFF: Variable
> FRAC: 1             HHSV: NO_ALARM      HIGH: 0             HIHI: 0
> HLM: 59             HLS: 0              HLSV: NO_ALARM      HOMF: 0
> HOMR: 0             HOPR: 0             HSV: NO_ALARM       HVEL: 0.1
> ICOF: 0             INIT:               JAR: 5              JOGF: 0
> JOGR: 0             JVEL: 1             LCNT: 0
> LDVL: 8.54439294393059                  LLM: 1              LLS: 0
> LLSV: NO_ALARM      LOCK: NO            LOLO: 0             LOPR: 0
> LOW: 0              LRLV: 0             LRVL: 85444         LSET: 0xa18f8
> LSPG: Go            LSV: NO_ALARM       LVAL: 8.54439294393059
> LVIO: 0             MDEL: 0             MIP: 0              MISS: 0
> MLIS: 00 0d 84 38 00 0d 82 f8 00 00 00 04                   MLOK: 00 09 e1 10
> MLST: 0             MMAP: 0             MOVN: 0             MRES: 1.0e-04
> MSTA: 2050          NAME: SMTR1608-9-B20-05:brag            NMAP: 0
> NSEV: NO_ALARM      NSTA: NO_ALARM      NTM: YES            NTMF: 2
> OFF: 0              OMSL: supervisory   OUT:INST_IO @asyn(XPS1,0)
> PACT: 0             PCOF: 0             PHAS: 0             PINI: NO
> POST:               PP: 0               PPN: (nil)          PPNR: (nil)
> PREC: 5             PREM:               PRIO: LOW           PROC: 0
> PUTF: 0             RBV: 6.0011         RCNT: 0             RDBD: 1.0e-04
> RDBL:CONSTANT       RDES: 0x651d0       RDIF: 25433         REP: 60011
> RHLS: 0             RINP:CONSTANT       RLLS: 0             RLNK:CONSTANT
> RLV: 0              RMOD: Default       RMP: 60011          RPRO: 0
> RRBV: 60011         RRES: 0             RSET: 0x40109488    RTRY: 0
> RVAL: 85444         RVEL: 0             S: 50               SBAK: 50
> SBAS: 5             SCAN: Passive       SDIS:CONSTANT       SET: Use
> SEVR: NO_ALARM      SMAX: 0             SPMG: Go            SPVT: (nil)
> SREV: 200           SSET: 0             STAT: NO_ALARM      STOO:CONSTANT
> STOP: 0             STUP: OFF           SUSE: 0             SYNC: 0
> TDIR: 0             TIME: 2013-11-01 14:04:06.363958000     TPRO: 0
> TSE: 0              TSEL:CONSTANT       TWF: 0              TWR: 0
> TWV: 1              UDF: 0              UEIP: No            UREV: 0.02
> URIP: No            VAL: 8.54439294393059                   VBAS: 0.1
> VELO: 1             VERS: 6.5           VMAX: 0             VOF: 0
> What is even stranger is that the velocity and acceleration are then
> set to values much smaller than then should be (e-312)
> <image001.jpg>
> I am sure I must have something configured incorrectly.  At this point it appears that the problem is associated with something configured incorrectly with the motor record.  I would greatly appreciate any feedback or insight anyone can provide.
> Thanks,
> Tonia Batten, P.Eng
> Control System Analyst
> Canadian Light Source
> 44 Innovation Blvd.
> Saskatoon, SK S7N 2V3
> Tel:  306-657-3865
 
 

Replies:
RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage Mark Rivers
References:
Newport XPS-Q8 and Motor Record - RV120HAHL stage Tonia Batten
RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage Mark Rivers
Re: Newport XPS-Q8 and Motor Record - RV120HAHL stage Pearson, Matthew R.

Navigate by Date:
Prev: Re: Newport XPS-Q8 and Motor Record - RV120HAHL stage Pearson, Matthew R.
Next: RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Newport XPS-Q8 and Motor Record - RV120HAHL stage Pearson, Matthew R.
Next: RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  <20132014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 20 Apr 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·