Hi Jesse,
- ERRORCan't set "18ID_DMC_E04:XenocsUS_Vsize.DTYP" to "Soft Channel" no such device support for 'motor' record type : Illegal choice
I think that error just means that your IOC application needs to have these lines in the Makefile:
PROD_DBD += devSoftMotor.dbd
PROD_LIBS += softMotor
A good way to learn what to put in an IOC Makefile for beamlines is to look at the Makefile in the xxx application. This is the location of devSoftMotor.dbd:
https://github.com/epics-modules/xxx/blob/27b7ba2405eaa9af286593d0c28d919e4b199ac9/xxxApp/src/Makefile#L175
Mark
From: Jesse Hopkins <jhopkins1 at iit.edu>
Sent: Wednesday, October 16, 2024 11:08 AM
To: Mark <padmoz at tpg.com.au>; Mark Rivers <rivers at cars.uchicago.edu>
Cc: tech-talk at aps.anl.gov
Subject: Re: [Ext] RE: Help setting up coordinated motions for Galil controller
Hi and thanks to both Marks for the responses!
Mark C:
Thanks for the update. The fix to the adl did the trick, and now I can set the CS motor kinetics! I did run into a limitation that perhaps you can comment on. It seems like there's no way to set the value of the CS motors. What I was hoping
would happen is that, similar to changing the motor position, setting the motor position would propagate through the backward kinematics to set the real motor positions. For example, if I set the slit center position value from 1 to 2, the respective slit
blade set positions would be updated to make that true (I hope I'm being clear here, moving the CS motor works fine, but resetting the position value without changing the position doesn't work). This is important for my use case with the slits as it is typically
most convenient for us to set the slit center zero position on the beam, which may not be the physical center of slit depending on how things are set up. Is there a way I can make this work (besides having to individually set the ?
You are of course correct about sscans. I was able to get the 2slit.db definitions to work pretty easily, which is great. It would be convenient for our purposes to have a real motor record available (for interfacing to other software and
existing displays). I tried the 2slit_soft.vdb definitions but that gives a bunch of errors when I start up. I don't suppose you or anyone else on this list has a thought about what's going wrong here? Below is the relevant section of the IOC startup:
dbLoadRecords("/opt/epics/synApps_6_3/support/optics-R2-14/opticsApp/Db/2slit_soft.vdb","P=18ID_DMC_E04:,SLIT=XenocsUS_V,mXp=25,mXn=26")
Can't set "18ID_DMC_E04:XenocsUS_Vxp.DTYP" to "Soft Channel" no such device support for 'motor' record type : Illegal choice
ERROR at or before ')' in file "/opt/epics/synApps_6_3/support/optics-R2-14/opticsApp/Db/2slit_soft.vdb" line 116
Can't set "18ID_DMC_E04:XenocsUS_Vxn.DTYP" to "Soft Channel" no such device support for 'motor' record type : Illegal choice
ERRORCan't set "18ID_DMC_E04:XenocsUS_Vsize.DTYP" to "Soft Channel" no such device support for 'motor' record type : Illegal choice
ERRORCan't set "18ID_DMC_E04:XenocsUS_Vcenter.DTYP" to "Soft Channel" no such device support for 'motor' record type : Illegal choice
ERRORERROR failed to load '/opt/epics/synApps_6_3/support/optics-R2-14/opticsApp/Db/2slit_soft.vdb'
...
# Start the IOC
iocInit()
Starting iocInit
############################################################################
## EPICS R7.0.8
## Rev. 2024-03-01T16:24-0600
## Rev. Date build date/time:
############################################################################
ERROR: 18ID_DMC_E04:XenocsUS_Vxp.OUT: can't initialize link type 12 with "18ID_DMC_E04:XenocsUS_VtFwd.A PP MS" (type 1)
ERROR: 18ID_DMC_E04:XenocsUS_Vxn.OUT: can't initialize link type 12 with "18ID_DMC_E04:XenocsUS_VtFwd.B PP MS" (type 1)
ERROR: 18ID_DMC_E04:XenocsUS_Vsize.OUT: can't initialize link type 12 with "18ID_DMC_E04:XenocsUS_VtFwd.C PP MS" (type 1)
ERROR: 18ID_DMC_E04:XenocsUS_Vcenter.OUT: can't initialize link type 12 with "18ID_DMC_E04:XenocsUS_VtFwd.D PP MS" (type 1)
devMotorAsyn::init_record 18ID_DMC_E04:XenocsUS_Vxp bad link invalid INST_IO Must be asyn(<port> <addr> <timeout>)userParams
2024/10/16 11:02:22.425 devMotorAsyn::build_trans: 18ID_DMC_E04:XenocsUS_Vxp error calling queueRequest, asynManager::queueRequest asynUser not associated with a port
2024/10/16 11:02:22.425 devMotorAsyn::build_trans: 18ID_DMC_E04:XenocsUS_Vxp error calling queueRequest, asynManager::queueRequest asynUser not associated with a port
devMotorAsyn::init_record 18ID_DMC_E04:XenocsUS_Vxn bad link invalid INST_IO Must be asyn(<port> <addr> <timeout>)userParams
followed by many more error messages in the same vein as the "error calling queueRequest".
Thanks to everyone for their help!
----
Jesse Hopkins, PhD
Deputy Director
BioCAT, Sector 18
Advanced Photon Source
Hi Jesse,
The plan outlined for setting up a CS motor using the Galil driver
sounds correct to me.
Following this through, I found a bug in the provided
galil_csmotor_kinematics.adl medm screen.
The text entry widget has been updated to type string now. The fix has
been pushed to github for versions 3-6-90 and 4-0-01.
The Galil driver example IOC provides motor record support for CS motors
I through P, and sscan support.
CS motors can also be used for on the fly scans in linear or PVT mode
(results are similar for linear/PVT modes).
Here are some tips for using Galil driver CS motors for point to point
moves:
Background:
On the galil_dmc_ctrl.adl screen there is a PV/setting "Deferred moves
mode" that has enumerated options "Sync start/stop" or "Sync start only".
A) "Sync start/stop" mode
To use a controller coordinate system (ie. S or T) then set "Deferred
moves mode" to "Sync start/stop". In this case linear coordinated
motion is used for the move.
The motor group will begin and complete motion synchronously. This mode
provides the highest level of coordination and synchronicity.
A) "Sync start only" mode
With "Sync start only" mode, a controller coordinate system is not
used. Instead the motor group have a synchronized start, and may also
complete at the same time, it is equation dependent.
With slit equations it's expected that the motors will also complete the
move in a synchronized way. Greater coordination can be achieved using
"Sync start/stop" than using the "Sync start only" mode, particularly
for motion complete synchronization.
Good luck with your project.)
Kind regards,
Mark Clift
--
This email has been checked for viruses by AVG antivirus software.
https://urldefense.us/v3/__http://www.avg.com__;!!G_uCfscf7eWS!c7S8XhURxsVwJ6GET0jOkuAj1lAlZjky6iU51rBn96g5zdU8lTwWWHKeTjbIDPudxrz8iC2ZlwR3N_0Tvng$
|