prjemian / epics-docker

Provide EPICS IOCs in docker images
9 stars 4 forks source link

synApps motor: unknown command=MOTOR_REC_DIRECTION #24

Closed prjemian closed 3 years ago

prjemian commented 3 years ago
ioc:m2Direction devAsynInt32::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_DIRECTION
ioc:m3Direction devAsynInt32::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_DIRECTION
ioc:m4Direction devAsynInt32::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_DIRECTION
...
prjemian commented 3 years ago

All of these after iocInit. Also:

vm:m1Offset devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_OFFSET
Error (514,514) PV: vm:m1Offset ao: init_record

vm:m1Resolution devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_RESOLUTION
Error (514,514) PV: vm:m1Resolution ao: init_record

vm:m2Offset devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_OFFSET
Error (514,514) PV: vm:m2Offset ao: init_record

vm:m2Resolution devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_RESOLUTION
Error (514,514) PV: vm:m2Resolution ao: init_record

vm:m3Offset devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_OFFSET
Error (514,514) PV: vm:m3Offset ao: init_record

vm:m3Resolution devAsynFloat64::initCommon drvUserCreate drvmotorAsyn::drvUserCreate, unknown command=MOTOR_REC_RESOLUTION
Error (514,514) PV: vm:m3Resolution ao: init_record

...
prjemian commented 3 years ago

This issue in the motor module appears to be related: https://github.com/epics-modules/motor/issues/166

The values are not initialized, nor is there a default value on which to fallback.

prjemian commented 3 years ago

While this adds many lines to the startup, the IOC runs. Problems cited here are probably a root cause of problems reported while trying to resolve #23.

prjemian commented 3 years ago

Waiting for resolution in epics-modules/motor#166

prjemian commented 3 years ago
root@zap:.../synApps/support/motor-R7-2-2# git grep MOTOR_REC_DIRECTION
motorApp/Db/asyn_motor.db:    field(OUT,  "@asyn($(PORT),$(ADDR))MOTOR_REC_DIRECTION")
motorApp/Db/basic_asyn_motor.db:    field(OUT,  "@asyn($(PORT),$(ADDR))MOTOR_REC_DIRECTION")
motorApp/MotorSrc/asynMotorController.h:#define motorRecDirectionString         "MOTOR_REC_DIRECTION"

root@zap:.../synApps/support/motor-R7-2-2# git grep  MOTOR_REC_OFFSET
motorApp/Db/asyn_motor.db:    field(OUT,  "@asyn($(PORT),$(ADDR))MOTOR_REC_OFFSET")
motorApp/Db/basic_asyn_motor.db:    field(OUT,  "@asyn($(PORT),$(ADDR))MOTOR_REC_OFFSET")
motorApp/MotorSrc/asynMotorController.h:#define motorRecOffsetString            "MOTOR_REC_OFFSET"

root@zap:.../synApps/support/motor-R7-2-2# git grep  MOTOR_REC_RESOLUTION
motorApp/Db/asyn_motor.db:    field(OUT,  "@asyn($(PORT),$(ADDR))MOTOR_REC_RESOLUTION")
motorApp/Db/basic_asyn_motor.db:    field(OUT,  "@asyn($(PORT),$(ADDR))MOTOR_REC_RESOLUTION")
motorApp/MotorSrc/asynMotorController.h:#define motorRecResolutionString        "MOTOR_REC_RESOLUTION"
prjemian commented 3 years ago

The records involved with this docker image are defined in file motor-R7-2-2/db/asyn_motor.db:

# These records make the motor resolution, offset and direction available to the driver
# which is needed for profile moves and other applications

# Motor direction for this axis
record(longout,"$(P)$(M)Direction") {
    field(DESC, "$(M) direction")
    field(DOL,  "$(P)$(M).DIR CP MS")
    field(OMSL, "closed_loop")
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR))MOTOR_REC_DIRECTION")
}

# Motor offset for this axis
record(ao,"$(P)$(M)Offset") {
    field(DESC, "$(M) offset")
    field(DOL,  "$(P)$(M).OFF CP MS")
    field(OMSL, "closed_loop")
    field(DTYP, "asynFloat64")
    field(OUT,  "@asyn($(PORT),$(ADDR))MOTOR_REC_OFFSET")
    field(PREC, "$(PREC)")
}

# Motor resolution for this axis
record(ao,"$(P)$(M)Resolution") {
    field(DESC, "$(M) resolution")
    field(DOL,  "$(P)$(M).MRES CP MS")
    field(OMSL, "closed_loop")
    field(DTYP, "asynFloat64")
    field(OUT,  "@asyn($(PORT),$(ADDR))MOTOR_REC_RESOLUTION")
    field(PREC, "$(PREC)")
}
prjemian commented 3 years ago

The files involved are:

iocxxx/motors.iocsh 
--> motor-R7-2-2/iocsh/motorSim.iocsh 
--> motor-R7-2-2/iocsh/EXAMPLE_motorSim.substitutions 
--> motor-R7-2-2/db/asyn_motor.db 

Only the last file needs to be modified here. Probably best to make these changes by applying a differences patch.