Added a number of auxiliary Makefiles
- MakeScaler.RHEL7 to build the EPICS scaler module from source. We use a better one then the standard one. - MakeAutoSave.RHEL7 to build autosave from the PSI module system - Modified the EL734Driver to set the MsgTxt to NULL when everything is happy
This commit is contained in:
22
MakeAutoSave.RHEL7
Normal file
22
MakeAutoSave.RHEL7
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# This Makefile has to be executed in the synApps-xxx/support/autosave-xxx directory.
|
||||||
|
# It creates a autosave module to load into iocsh
|
||||||
|
include /ioc/tools/driver.makefile
|
||||||
|
|
||||||
|
MODULE=autosave
|
||||||
|
|
||||||
|
BUILDCLASSES=Linux
|
||||||
|
|
||||||
|
USR_DEPENDENCIES=
|
||||||
|
|
||||||
|
SOURCES += asApp/src/dbrestore.c
|
||||||
|
SOURCES += asApp/src/save_restore.c
|
||||||
|
SOURCES += asApp/src/initHooks.c
|
||||||
|
SOURCES += asApp/src/fGetDateStr.c
|
||||||
|
SOURCES += asApp/src/configMenuSub.c
|
||||||
|
SOURCES += asApp/src/verify.c
|
||||||
|
SOURCES += asApp/src/asVerify.c
|
||||||
|
SOURCES += asApp/src/os/Linux/osdNfs.c
|
||||||
|
|
||||||
|
HEADERS += asApp/src/os/Linux/osdNfs.h
|
||||||
|
|
||||||
|
DBDS += asApp/src/asSupport.dbd
|
17
MakeScaler.RHEL7
Normal file
17
MakeScaler.RHEL7
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
include /ioc/tools/driver.makefile
|
||||||
|
|
||||||
|
MODULE=scaler
|
||||||
|
|
||||||
|
BUILDCLASSES=Linux
|
||||||
|
|
||||||
|
USR_DEPENDENCIES = asyn,427.0.1
|
||||||
|
|
||||||
|
SOURCES += stdApp/src/scalerRecord.c
|
||||||
|
SOURCES += stdApp/src/devScalerAsyn.c
|
||||||
|
SOURCES += stdApp/src/drvScalerSoft.c
|
||||||
|
|
||||||
|
HEADERS += devScaler.h
|
||||||
|
|
||||||
|
|
||||||
|
DBDS += stdApp/src/scalerRecord.dbd
|
||||||
|
DBDS += stdApp/src/scalerSupport.dbd
|
94
iocBoot/iocsinqEPICS/slsvme.db
Normal file
94
iocBoot/iocsinqEPICS/slsvme.db
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
# Database definition for the SLS VME magnets as installed at AMOR
|
||||||
|
|
||||||
|
##
|
||||||
|
## Read the High Limit
|
||||||
|
##
|
||||||
|
record(ai, "$(PREFIX)HighLim") {
|
||||||
|
field(DTYP, "stream")
|
||||||
|
field(DESC, "High Current Limit")
|
||||||
|
field(INP, "@slsvme.proto read($(NO),hl) slsvme 0")
|
||||||
|
field(SCAN, "1 second")
|
||||||
|
field(PREC, "3")
|
||||||
|
field(EGU, "A")
|
||||||
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Read the High Limit
|
||||||
|
##
|
||||||
|
record(ai, "$(PREFIX)LowLim") {
|
||||||
|
field(DTYP, "stream")
|
||||||
|
field(DESC, "Low Current Limit")
|
||||||
|
field(INP, "@slsvme.proto read($(NO),ll) slsvme 0")
|
||||||
|
field(SCAN, "1 second")
|
||||||
|
field(PREC, "3")
|
||||||
|
field(EGU, "A")
|
||||||
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Read the Error code
|
||||||
|
##
|
||||||
|
record(ai, "$(PREFIX)ErrCode") {
|
||||||
|
field(DTYP, "stream")
|
||||||
|
field(DESC, "Error Code")
|
||||||
|
field(INP, "@slsvme.proto read($(NO),err) slsvme 0")
|
||||||
|
field(SCAN, "1 second")
|
||||||
|
field(PREC, "3")
|
||||||
|
field(EGU, "A")
|
||||||
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Read the textual representation of the error.
|
||||||
|
##
|
||||||
|
record(stringin, "$(PREFIX)ErrText") {
|
||||||
|
field(DTYP, "stream")
|
||||||
|
field(INP, "@slsvme.proto readErrTxt($(NO)) slsvme 0")
|
||||||
|
field(SCAN, "1 second")
|
||||||
|
field(PINI, "YES")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
##
|
||||||
|
## Read the Current
|
||||||
|
##
|
||||||
|
record(ai, "$(PREFIX)CurRBV") {
|
||||||
|
field(DTYP, "stream")
|
||||||
|
field(DESC, "Low Current Limit")
|
||||||
|
field(INP, "@slsvme.proto read($(NO),cur) slsvme 0")
|
||||||
|
field(SCAN, "1 second")
|
||||||
|
field(PREC, "3")
|
||||||
|
field(EGU, "A")
|
||||||
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Set the current
|
||||||
|
##
|
||||||
|
record(ao, "$(PREFIX)CurSet") {
|
||||||
|
field(DTYP, "stream")
|
||||||
|
field(DESC, "Setpoint current")
|
||||||
|
field(OUT, "@slsvme.proto write($(NO),cur) slsvme 0")
|
||||||
|
field(PREC, "3")
|
||||||
|
field(EGU, "A")
|
||||||
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Read power status of the magnet
|
||||||
|
##
|
||||||
|
record(bi, "$(PREFIX)PowerStatusRBV") {
|
||||||
|
field(DESC, "Readback of the power status")
|
||||||
|
field(DTYP, "stream")
|
||||||
|
field(INP, "@slsvme.proto readonoff($(NO)) slsvme 0")
|
||||||
|
field(SCAN, "1 second")
|
||||||
|
field(ZNAM, "off")
|
||||||
|
field(ONAM, "on")
|
||||||
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Set the power status
|
||||||
|
##
|
||||||
|
record(bo, "$(PREFIX)PowerStatus") {
|
||||||
|
field(DESC, "Set the power status")
|
||||||
|
field(DTYP, "stream")
|
||||||
|
field(OUT, "@slsvme.proto setpower($(NO)) slsvme 0")
|
||||||
|
field(ZNAM, "on")
|
||||||
|
field(ONAM, "off")
|
||||||
|
}
|
@ -4,4 +4,4 @@ set dir [pwd]
|
|||||||
|
|
||||||
cd /usr/local/ioc
|
cd /usr/local/ioc
|
||||||
|
|
||||||
exec /usr/bin/tar czvf $dir/sinqepics.tgz modules/scaler modules/sinq modules/anc350
|
exec /usr/bin/tar czvf $dir/sinqepics.tgz modules/scaler modules/sinq modules/anc350 modules/autosave
|
||||||
|
@ -218,6 +218,27 @@ asynStatus EL734Controller::transactController(int axisNo,char command[COMLEN],
|
|||||||
EL734Axis::EL734Axis(EL734Controller *pC, int axisNo)
|
EL734Axis::EL734Axis(EL734Controller *pC, int axisNo)
|
||||||
: SINQAxis(pC, axisNo), pC_(pC)
|
: SINQAxis(pC, axisNo), pC_(pC)
|
||||||
{
|
{
|
||||||
|
char command[COMLEN], reply[COMLEN];
|
||||||
|
asynStatus status;
|
||||||
|
int count = 0;
|
||||||
|
float low, high;
|
||||||
|
|
||||||
|
/*
|
||||||
|
get the hardware limits from the controller
|
||||||
|
*/
|
||||||
|
sprintf(command,"H %d",axisNo_);
|
||||||
|
status = pC_->transactController(axisNo_,command,reply);
|
||||||
|
if(status == asynSuccess){
|
||||||
|
count = sscanf(reply,"%f %f",&low, &high);
|
||||||
|
if(count >= 2){
|
||||||
|
pC_->setDoubleParam(axisNo_,pC_->motorLowLimit_,low);
|
||||||
|
pC_->setDoubleParam(axisNo_,pC_->motorHighLimit_,high);
|
||||||
|
} else {
|
||||||
|
errlogPrintf("Bad response - %s - requesting limits at axis %d", reply, axisNo_);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
errlogPrintf("Failed to read limits at axis %d", axisNo_);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -255,6 +276,8 @@ asynStatus EL734Axis::move(double position, int relative, double minVelocity, do
|
|||||||
homing = 0;
|
homing = 0;
|
||||||
sprintf(command, "p %d %.3f", axisNo_, position/1000.);
|
sprintf(command, "p %d %.3f", axisNo_, position/1000.);
|
||||||
status = pC_->transactController(axisNo_,command,reply);
|
status = pC_->transactController(axisNo_,command,reply);
|
||||||
|
setIntegerParam(pC_->motorStatusProblem_, false);
|
||||||
|
updateMsgTxtFromDriver("");
|
||||||
next_poll = -1;
|
next_poll = -1;
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@ -267,6 +290,9 @@ asynStatus EL734Axis::home(double minVelocity, double maxVelocity, double accele
|
|||||||
|
|
||||||
// status = sendAccelAndVelocity(acceleration, maxVelocity);
|
// status = sendAccelAndVelocity(acceleration, maxVelocity);
|
||||||
|
|
||||||
|
setIntegerParam(pC_->motorStatusProblem_, false);
|
||||||
|
updateMsgTxtFromDriver("");
|
||||||
|
|
||||||
sprintf(command, "R %d", axisNo_);
|
sprintf(command, "R %d", axisNo_);
|
||||||
homing = 1;
|
homing = 1;
|
||||||
next_poll= -1;
|
next_poll= -1;
|
||||||
@ -293,6 +319,8 @@ asynStatus EL734Axis::moveVelocity(double minVelocity, double maxVelocity, doubl
|
|||||||
sprintf(command, "FB %d", axisNo_);
|
sprintf(command, "FB %d", axisNo_);
|
||||||
}
|
}
|
||||||
status = pC_->transactController(axisNo_,command,reply);
|
status = pC_->transactController(axisNo_,command,reply);
|
||||||
|
setIntegerParam(pC_->motorStatusProblem_, false);
|
||||||
|
updateMsgTxtFromDriver("");
|
||||||
next_poll = -1;
|
next_poll = -1;
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@ -433,8 +461,7 @@ asynStatus EL734Axis::poll(bool *moving)
|
|||||||
}
|
}
|
||||||
*moving = false;
|
*moving = false;
|
||||||
setIntegerParam(pC_->motorStatusDone_, true);
|
setIntegerParam(pC_->motorStatusDone_, true);
|
||||||
//updateMsgTxtFromDriver("Believed to be on position");
|
} else {
|
||||||
} else {
|
|
||||||
*moving = true;
|
*moving = true;
|
||||||
next_poll = -1;
|
next_poll = -1;
|
||||||
setIntegerParam(pC_->motorStatusDone_, false);
|
setIntegerParam(pC_->motorStatusDone_, false);
|
||||||
@ -443,7 +470,7 @@ asynStatus EL734Axis::poll(bool *moving)
|
|||||||
|
|
||||||
skip:
|
skip:
|
||||||
if(driverError == 0){
|
if(driverError == 0){
|
||||||
updateMsgTxtFromDriver(NULL);
|
updateMsgTxtFromDriver("");
|
||||||
}
|
}
|
||||||
setIntegerParam(pC_->motorStatusProblem_, comStatus ? 1:0);
|
setIntegerParam(pC_->motorStatusProblem_, comStatus ? 1:0);
|
||||||
callParamCallbacks();
|
callParamCallbacks();
|
||||||
|
Reference in New Issue
Block a user