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: Mark Rivers <[email protected]>
To: Tonia Batten <[email protected]>, "Pearson, Matthew R." <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Sat, 2 Nov 2013 22:50:51 +0000
Hi Tonia,

This is very strange. It does seem that the motor record is indeed passing 0 for the velocity, acceleration, and position.

The velocity command for example is command number 5.

This is when device support gets called with the velocity command.  devMotorAsyn calls pasynManager->queueRequest to queue a request to send the command to the driver.  This debugging output does not print out the value.

2013/11/02 14:19:06.874 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=5, pact=1
2013/11/02 14:19:06.876 XPS1 addr 0 queueRequest priority 0 not lockHolder

asynManager then calls devMotorAsyn::asynCallback in the port thread.  The debugging output there does print both the integer and floating values because it does not know what type of value it has been passed.  Velocity is in fact a double, and the value is 0.

2013/11/02 14:19:06.917 XPS1 callback
2013/11/02 14:19:06.919 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag command=5, ivalue=0, dvalue=0.000000

The callback function calls the motor driver, which prints the following debugging information.  reason=100 is indeed the velocity command.  So the value is 0.

2013/11/02 14:19:06.924 drvMotorAsyn::writeFloat64, reason=100, pasynUser=0x90ab0 pAxis=0x84ec8
2013/11/02 14:19:06.928 drvMotorAsyn::writeFloat64, reason=100, value=0.000000

I think to make further progress we need to get some debugging output from the motor record.  The motor record is pretty complicated to follow the logic in, but I think that lines 2292 to 2302 are where the commands to device support are being generated for these moves in R6-5 of motorRecord.cc:


                pmr->cdir = (pmr->rdif < 0.0) ? 0 : 1;
                WRITE_MSG(SET_VEL_BASE, &vbase);
                WRITE_MSG(SET_VELOCITY, &velocity);
                if (accel > 0.0)        /* Don't SET_ACCEL = 0.0 */
                    WRITE_MSG(SET_ACCEL, &accel);
                if (use_rel == true)
                    WRITE_MSG(MOVE_REL, &position);
                else
                    WRITE_MSG(MOVE_ABS, &position);
                WRITE_MSG(GO, NULL);
                SEND_MSG();

You should add some printf() statements in there to see that the value of velocity, vbase, accel, and position are.  If those are the lines that are indeed calling device support, we need to know if the values are zero or non-zero there.

You should probably also change this code at line 416 in devMotorAsyn.c so that it prints the value of the parameter:

    asynPrint(pasynUser, ASYN_TRACE_FLOW,
              "devMotorAsyn::send_msg: %s command=%d, pact=%d\n",
              pmr->name, command, pmr->pact);

Change to:
    asynPrint(pasynUser, ASYN_TRACE_FLOW,
              "devMotorAsyn::send_msg: %s command=%d, pact=%d, value=%f\n",
              pmr->name, command, pmr->pact, param ? *param : 0.0);


Mark


________________________________________
From: Tonia Batten [[email protected]]
Sent: Saturday, November 02, 2013 3:38 PM
To: Mark Rivers; Pearson, Matthew R.
Cc: [email protected]
Subject: RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage

Hi Mark,

I have removed all of the higher level PV's so that only the following PV's are loaded.

epics> dbl
SMTR1608-9-B20-05:brag:READBACK
SMTR1608-9-B20-05:brag:XPS_STATUS
SMTR1608-9-B20-05:brag:MAX_JERK_TIME
SMTR1608-9-B20-05:brag:MIN_JERK_TIME
SMTR1608-9-B20-05:alldone
SMTR1608-9-B20-05:allstop
SMTR1608-9-B20-05:alldoneBlink
SMTR1608-9-B20-05:moving
SMTR1608-9-B20-05:brag

record(motor,"SMTR1608-9-B20-05:brag")
{
field(DESC,"Mono Brag")
field(DTYP,"asynMotor")
field(DIR,"Pos")
field(VELO,"1")
field(VBAS,"0")
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")
}
/ motor-6-5/db/motorUtil.db
# Setting VAL to "stop", stops ALL motorRecord's in this IOC.
# SMTR1608-9-B20-05:allstop.VAL is monitored by motorUtil.
record(bo, " SMTR1608-9-B20-05:allstop") {
field(ZNAM, "release")
field(ONAM, "stop")
field(DESC, "Stop All IOC motors.")
}
# Indicates if all motors in this IOC are done moving.
# Set by motorUtil when SMTR1608-9-B20-05:moving.VAL == 0.
record(bi, " SMTR1608-9-B20-05:alldone") {
field(ZNAM, "moving")
field(ONAM, "done")
field(INP, "1")
field(DESC, "All IOC motors done moving.")
}
# The number of motors moving in this IOC.
# SMTR1608-9-B20-05:moving.VAL is set by motorUtil.
record(longout, " SMTR1608-9-B20-05:moving") {
field(DESC, "Motors moving count.")
}
# Used by xxx.adl to blink "Moving" indicator.
record(calc, " SMTR1608-9-B20-05:alldoneBlink") {
field(SCAN, ".5 second")
field(CALC, "A?0:!B")
field(INPA, " SMTR1608-9-B20-05:alldone")
field(INPB, " SMTR1608-9-B20-05:alldoneBlink")
}


Here is the output for the motor record before I move the stage. The stage is homed at 6 degrees before starting up the application. Below I have included the output from asyn when I try an move the motor to 10 degrees and then also an output of the motor record to show the state after the intended move.

epics> dbpr SMTR1608-9-B20-05:brag 10
ACCL: 0.2 ACKS: NO_ALARM ACKT: YES ADEL: 0
ALST: 0 ASG: ASP: (nil) ATHM: 1
BACC: 0.2 BDST: 0 BKPT: 00 BVEL: 1
CARD: -1 CBAK: 0x90478 CDIR: 0 CNEN: Disable
DCOF: 0 DESC: Mono Brag DHLM: 59 DIFF: 0
DINP:CONSTANT DIR: Pos DISA: 0 DISP: 0
DISS: NO_ALARM DISV: 1 DLLM: 1 DLY: 0
DMOV: 1 DOL:CONSTANT DPVT: 0x90490 DRBV: 6
DSET: 0x40109680 DTYP: asynMotor DVAL: 6 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 ICOF: 0 INIT: JAR: 5
JOGF: 0 JOGR: 0 JVEL: 1 LCNT: 0
LDVL: 6 LLM: 1 LLS: 0 LLSV: NO_ALARM
LOCK: NO LOLO: 0 LOPR: 0 LOW: 0
LRLV: 0 LRVL: 60000 LSET: 0x90da0 LSPG: Go
LSV: NO_ALARM LVAL: 6 LVIO: 0 MDEL: 0
MIP: 0 MISS: 0
MLIS: 00 0c 75 e8 00 0c 75 e8 00 00 00 01 MLOK: 00 08 ee 80
MLST: 0 MMAP: 0 MOVN: 0 MRES: 1.0e-04
MSTA: 2058 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 RCNT: 0 RDBD: 1.0e-04
RDBL:CONSTANT RDES: 0x651d0 RDIF: 0 REP: 60000
RHLS: 0 RINP:CONSTANT RLLS: 0 RLNK:CONSTANT
RLV: 0 RMOD: Default RMP: 60000 RPRO: 0
RRBV: 60000 RRES: 0 RSET: 0x40109488 RTRY: 0
RVAL: 60000 RVEL: 0 S: 50 SBAK: 50
SBAS: 0 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: <undefined> TPRO: 0 TSE: 0
TSEL:CONSTANT TWF: 0 TWR: 0 TWV: 1
UDF: 0 UEIP: No UREV: 0.02 URIP: No
VAL: 6 VBAS: 0 VELO: 1 VERS: 6.5
VMAX: 0 VOF: 0

epics> dbpf SMTR1608-9-B20-05:brag.VAL 10
2013/11/02 14:19:06.293 XPSPoller: S.Pos axisStatus=11
2013/11/02 14:19:06.870 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=0
2013/11/02 14:19:06.874 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=5, pact=1
2013/11/02 14:19:06.876 XPS1 addr 0 queueRequest priority 0 not lockHolder
2013/11/02 14:19:06.878 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=6, pact=1
2013/11/02 14:19:06.880 XPS1 addr 0 queueRequest priority 0 not lockHolder
2013/11/02 14:19:06.887 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=7, pact=1
2013/11/02 14:19:06.893 XPS1 addr 0 queueRequest priority 0 not lockHolder
2013/11/02 14:19:06.895 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=0, pact=1
2013/11/02 14:19:06.897 devMotorAsyn::send_msg: SMTR1608-9-B20-05:brag command=8, pact=1
2013/11/02 14:19:06.899 XPS1 addr 0 queueRequest priority 0 not lockHolder
DBR_DOUBLE: 10
2013/11/02 14:19:06.904 XPS1 callback
2013/11/02 14:19:06.911 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag command=6, ivalue=0, dvalue=0.000000
2013/11/02 14:19:06.913 drvMotorAsyn::writeFloat64, reason=101, pasynUser=0x90910 pAxis=0x84ec8
2013/11/02 14:19:06.915 drvMotorAsyn::writeFloat64, reason=101, value=0.000000
2013/11/02 14:19:06.917 XPS1 callback
2013/11/02 14:19:06.919 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag command=5, ivalue=0, dvalue=0.000000
2013/11/02 14:19:06.924 drvMotorAsyn::writeFloat64, reason=100, pasynUser=0x90ab0 pAxis=0x84ec8
2013/11/02 14:19:06.928 drvMotorAsyn::writeFloat64, reason=100, value=0.000000
2013/11/02 14:19:06.933 XPS1 callback
2013/11/02 14:19:06.934 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag command=7, ivalue=0, dvalue=0.000000
2013/11/02 14:19:06.936 drvMotorAsyn::writeFloat64, reason=102, pasynUser=0xc7928 pAxis=0x84ec8
2013/11/02 14:19:06.938 drvMotorAsyn::writeFloat64, reason=102, value=0.000000
2013/11/02 14:19:06.940 XPS1 callback
2013/11/02 14:19:06.941 devMotorAsyn::asynCallback: SMTR1608-9-B20-05:brag command=0, ivalue=0, dvalue=0.000000
2013/11/02 14:19:06.942 drvMotorAsyn::writeFloat64, reason=104, pasynUser=0xc7a40 pAxis=0x84ec8
2013/11/02 14:19:06.942 Set card 0, axis 0 move to 0.000000, min vel=0.000000, max_vel=0.000000, accel=0.000000
2013/11/02 14:19:06.950 SendAndReceive unexpected response =-17,GroupMoveAbsolute (S.Pos,1.254083067532e-312),EndOfAPI
2013/11/02 14:19:06.950 SMTR1608-9-B20-05:brag devMotorAsyn::statusCallback new value=[p:60000.000000,e:60000.000000,s:808] P
2013/11/02 14:19:06.958 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::interruptCallbackInput new value=11
2013/11/02 14:19:06.965 drvMotorAsyn::writeFloat64, reason=104, value=0.000000
2013/11/02 14:19:06.970 XPSPoller: S.Pos axisStatus=11
2013/11/02 14:19:06.974 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=1
2013/11/02 14:19:06.976 SMTR1608-9-B20-05:brag devMotorAsyn::statusCallback new value=[p:60000.000000,e:60000.000000,s:80a]
2013/11/02 14:19:06.977 SMTR1608-9-B20-05:brag devMotorAsyn::update_values, needUpdate=1
2013/11/02 14:19:06.978 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::interruptCallbackInput new value=11
2013/11/02 14:19:06.979 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::getCallbackValue from ringBuffer value=11
2013/11/02 14:19:06.980 SMTR1608-9-B20-05:brag:XPS_STATUS devAsynInt32::getCallbackValue from ringBuffer value=11
2013/11/02 14:19:06.993 XPSPoller: S.Pos axisStatus=11


epics> dbpr SMTR1608-9-B20-05:brag 10
ACCL: 0.2 ACKS: NO_ALARM ACKT: YES ADEL: 0
ALST: 0 ASG: ASP: (nil) ATHM: 1
BACC: 0.2 BDST: 0 BKPT: 00 BVEL: 1
CARD: -1 CBAK: 0x90478 CDIR: 1 CNEN: Disable
DCOF: 0 DESC: Mono Brag DHLM: 59 DIFF: 4
DINP:CONSTANT DIR: Pos DISA: 0 DISP: 0
DISS: NO_ALARM DISV: 1 DLLM: 1 DLY: 0
DMOV: 1 DOL:CONSTANT DPVT: 0x90490 DRBV: 6
DSET: 0x40109680 DTYP: asynMotor DVAL: 10 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 ICOF: 0 INIT: JAR: 5
JOGF: 0 JOGR: 0 JVEL: 1 LCNT: 0
LDVL: 10 LLM: 1 LLS: 0 LLSV: NO_ALARM
LOCK: NO LOLO: 0 LOPR: 0 LOW: 0
LRLV: 0 LRVL: 100000 LSET: 0x90da0 LSPG: Go
LSV: NO_ALARM LVAL: 10 LVIO: 0 MDEL: 0
MIP: 0 MISS: 0
MLIS: 00 0c 75 e8 00 0c 75 e8 00 00 00 01 MLOK: 00 08 ee 80
MLST: 0 MMAP: 0 MOVN: 0 MRES: 1.0e-04
MSTA: 2058 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 RCNT: 0 RDBD: 1.0e-04
RDBL:CONSTANT RDES: 0x651d0 RDIF: 40000 REP: 60000
RHLS: 0 RINP:CONSTANT RLLS: 0 RLNK:CONSTANT
RLV: 0 RMOD: Default RMP: 60000 RPRO: 0
RRBV: 60000 RRES: 0 RSET: 0x40109488 RTRY: 0
RVAL: 100000 RVEL: 0 S: 50 SBAK: 50
SBAS: 0 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-02 14:19:06.977845000 TPRO: 0
TSE: 0 TSEL:CONSTANT TWF: 0 TWR: 0
TWV: 1 UDF: 0 UEIP: No UREV: 0.02
URIP: No VAL: 10 VBAS: 0 VELO: 1
VERS: 6.5 VMAX: 0 VOF: 0

I ran into some problems getting upgraded to asyn-4-14 or higher. I am going to upgrade a number of the drivers so that I can see if this resolves the problem. If you can see why the motor record is passing in a value of zero for the position, velocity and acceleration I would appreciate any insight you can provide.

Thanks, Tonia

-----Original Message-----
From: Mark Rivers [mailto:[email protected]]
Sent: November-01-13 9:46 PM
To: Tonia Batten; Pearson, Matthew R.
Cc: [email protected]
Subject: RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage

Hi Tonia,

I don't think the problem should be the architecture. All communications with the XPS is in ASCII, not binary, so floating point formats or endianness should not matter.

Please send the output of:

dbpr SMTR1608-9-B20-05:brag 10

This will show us all fields of the motor record.

Then send the output of the driver when you try to move it to a different position.

Mark

________________________________
From: Tonia Batten [[email protected]]
Sent: Friday, November 01, 2013 6:28 PM
To: Pearson, Matthew R.; Mark Rivers
Cc: [email protected]
Subject: RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage

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]<mailto:[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
>
>
>
> From:
> [email protected]<mailto:[email protected]>
> [mailto:[email protected]] On Behalf Of Tonia Batten
> Sent: Friday, November 01, 2013 4:13 PM
> To: [email protected]<mailto:[email protected]>
> 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
> Email: [email protected]<mailto:[email protected]>
>
>
>
>




Replies:
RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage Tonia Batten
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.
RE: 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 Tonia Batten

Navigate by Date:
Prev: RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage Tonia Batten
Next: RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage Tonia Batten
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 Tonia Batten
Next: RE: Newport XPS-Q8 and Motor Record - RV120HAHL stage Tonia Batten
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 ·