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
|
||||
|
||||
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)
|
||||
: 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;
|
||||
sprintf(command, "p %d %.3f", axisNo_, position/1000.);
|
||||
status = pC_->transactController(axisNo_,command,reply);
|
||||
setIntegerParam(pC_->motorStatusProblem_, false);
|
||||
updateMsgTxtFromDriver("");
|
||||
next_poll = -1;
|
||||
return status;
|
||||
}
|
||||
@ -267,6 +290,9 @@ asynStatus EL734Axis::home(double minVelocity, double maxVelocity, double accele
|
||||
|
||||
// status = sendAccelAndVelocity(acceleration, maxVelocity);
|
||||
|
||||
setIntegerParam(pC_->motorStatusProblem_, false);
|
||||
updateMsgTxtFromDriver("");
|
||||
|
||||
sprintf(command, "R %d", axisNo_);
|
||||
homing = 1;
|
||||
next_poll= -1;
|
||||
@ -293,6 +319,8 @@ asynStatus EL734Axis::moveVelocity(double minVelocity, double maxVelocity, doubl
|
||||
sprintf(command, "FB %d", axisNo_);
|
||||
}
|
||||
status = pC_->transactController(axisNo_,command,reply);
|
||||
setIntegerParam(pC_->motorStatusProblem_, false);
|
||||
updateMsgTxtFromDriver("");
|
||||
next_poll = -1;
|
||||
return status;
|
||||
}
|
||||
@ -433,8 +461,7 @@ asynStatus EL734Axis::poll(bool *moving)
|
||||
}
|
||||
*moving = false;
|
||||
setIntegerParam(pC_->motorStatusDone_, true);
|
||||
//updateMsgTxtFromDriver("Believed to be on position");
|
||||
} else {
|
||||
} else {
|
||||
*moving = true;
|
||||
next_poll = -1;
|
||||
setIntegerParam(pC_->motorStatusDone_, false);
|
||||
@ -443,7 +470,7 @@ asynStatus EL734Axis::poll(bool *moving)
|
||||
|
||||
skip:
|
||||
if(driverError == 0){
|
||||
updateMsgTxtFromDriver(NULL);
|
||||
updateMsgTxtFromDriver("");
|
||||
}
|
||||
setIntegerParam(pC_->motorStatusProblem_, comStatus ? 1:0);
|
||||
callParamCallbacks();
|
||||
|
Reference in New Issue
Block a user