diff --git a/motorApp/MotorSrc/motorRecord.cc b/motorApp/MotorSrc/motorRecord.cc index ca6b6ceb..e98a205f 100644 --- a/motorApp/MotorSrc/motorRecord.cc +++ b/motorApp/MotorSrc/motorRecord.cc @@ -2,9 +2,9 @@ FILENAME... motorRecord.cc USAGE... Motor Record Support. -Version: $Revision: 1.30 $ -Modified By: $Author: rivers $ -Last Modified: $Date: 2006-03-21 22:45:05 $ +Version: $Revision: 1.31 $ +Modified By: $Author: peterd $ +Last Modified: $Date: 2006-05-18 19:51:06 $ */ /* @@ -139,7 +139,7 @@ static void check_speed_and_resolution(motorRecord *); static void set_dial_highlimit(motorRecord *, struct motor_dset *); static void set_dial_lowlimit(motorRecord *, struct motor_dset *); static void set_userlimits(motorRecord *); -static void range_check(motorRecord *, float *, double, double); +static void range_check(motorRecord *, double *, double, double); static void clear_buttons(motorRecord *); /*** Record Support Entry Table (RSET) functions. ***/ @@ -387,7 +387,7 @@ Make RDBD >= MRES. ******************************************************************************/ static void enforceMinRetryDeadband(motorRecord * pmr) { - float min_rdbd; + double min_rdbd; min_rdbd = fabs(pmr->mres); @@ -562,7 +562,7 @@ static long init_record(dbCommon* arg, int pass) pmr->lrvl = pmr->rval; pmr->lvio = 0; /* init limit-violation field */ - if ((pmr->dhlm == pmr->dllm) && (pmr->dllm == (float) 0.0)) + if ((pmr->dhlm == pmr->dllm) && (pmr->dllm == 0.0)) ; else if ((pmr->drbv > pmr->dhlm + pmr->mres) || (pmr->drbv < pmr->dllm - pmr->mres)) { @@ -1197,7 +1197,7 @@ static long process(dbCommon *arg) pmr->mip |= MIP_DELAY_REQ; MARK(M_MIP); - callbackRequestDelayed(&pcallback->dly_callback, (double) pmr->dly); + callbackRequestDelayed(&pcallback->dly_callback, pmr->dly); pmr->dmov = FALSE; pmr->pact = 0; @@ -1210,7 +1210,7 @@ static long process(dbCommon *arg) enter_do_work: /* check for soft-limit violation */ - if ((pmr->dhlm == pmr->dllm) && (pmr->dllm == (float) 0.0)) + if ((pmr->dhlm == pmr->dllm) && (pmr->dllm == 0.0)) pmr->lvio = false; else { @@ -1716,7 +1716,7 @@ static RTN_STATUS do_work(motorRecord * pmr, CALLBACK_VALUE proc_ind) return(OK); } /* check for limit violation */ - if ((pmr->dhlm == pmr->dllm) && (pmr->dllm == (float) 0.0)) + if ((pmr->dhlm == pmr->dllm) && (pmr->dllm == 0.0)) ; else if ((pmr->homf && (pmr->dval > pmr->dhlm - pmr->velo)) || (pmr->homr && (pmr->dval < pmr->dllm + pmr->velo))) @@ -1778,7 +1778,7 @@ static RTN_STATUS do_work(motorRecord * pmr, CALLBACK_VALUE proc_ind) (pmr->mip & MIP_JOG_REQ)) { /* check for limit violation */ - if ((pmr->dhlm == pmr->dllm) && (pmr->dllm == (float) 0.0)) + if ((pmr->dhlm == pmr->dllm) && (pmr->dllm == 0.0)) ; else if ((pmr->jogf && (pmr->dval > pmr->dhlm - pmr->velo)) || (pmr->jogr && (pmr->dval < pmr->dllm + pmr->velo))) @@ -1911,7 +1911,7 @@ static RTN_STATUS do_work(motorRecord * pmr, CALLBACK_VALUE proc_ind) } /* Record limit violation */ - if ((pmr->dhlm == pmr->dllm) && (pmr->dllm == (float) 0.0)) + if ((pmr->dhlm == pmr->dllm) && (pmr->dllm == 0.0)) pmr->lvio = false; else pmr->lvio = (pmr->dval > pmr->dhlm) || @@ -2166,7 +2166,7 @@ static long special(DBADDR *paddr, int after) RTN_STATUS rtnval; motor_cmnd command; double temp_dbl; - float *temp_flt; + double *pcoeff; msta_field msta; msta.All = pmr->msta; @@ -2577,34 +2577,32 @@ velcheckB: break; case motorRecordPCOF: - temp_flt = &pmr->pcof; + pcoeff = &pmr->pcof; command = SET_PGAIN; goto pidcof; case motorRecordICOF: - temp_flt = &pmr->icof; + pcoeff = &pmr->icof; command = SET_IGAIN; goto pidcof; case motorRecordDCOF: - temp_flt = &pmr->dcof; + pcoeff = &pmr->dcof; command = SET_DGAIN; pidcof: if (msta.Bits.GAIN_SUPPORT != 0) { - if (*temp_flt < 0.0) /* Validity check; 0.0 <= gain <= 1.0 */ + if (*pcoeff < 0.0) /* Validity check; 0.0 <= gain <= 1.0 */ { - *temp_flt = 0.0; + *pcoeff = 0.0; changed = true; } - else if (*temp_flt > 1.0) + else if (*pcoeff > 1.0) { - *temp_flt = 1.0; + *pcoeff = 1.0; changed = true; } - temp_dbl = *temp_flt; - INIT_MSG(); - rtnval = (*pdset->build_trans)(command, &temp_dbl, pmr); + rtnval = (*pdset->build_trans)(command, pcoeff, pmr); /* If an error occured, build_trans() has reset the gain * parameter to a valid value for this controller. */ if (rtnval != OK) @@ -2612,21 +2610,19 @@ pidcof: SEND_MSG(); if (changed == 1) - db_post_events(pmr, temp_flt, DBE_VAL_LOG); + db_post_events(pmr, pcoeff, DBE_VAL_LOG); } break; case motorRecordCNEN: if (msta.Bits.GAIN_SUPPORT != 0) { - double tempdbl; - INIT_MSG(); - tempdbl = pmr->cnen; + temp_dbl = pmr->cnen; if (pmr->cnen != 0) - WRITE_MSG(ENABLE_TORQUE, &tempdbl); + WRITE_MSG(ENABLE_TORQUE, &temp_dbl); else - WRITE_MSG(DISABL_TORQUE, &tempdbl); + WRITE_MSG(DISABL_TORQUE, &temp_dbl); SEND_MSG(); } @@ -3596,14 +3592,14 @@ static void set_userlimits(motorRecord *pmr) } /* -FUNCTION... void range_check(motorRecord *, float *, double, double) +FUNCTION... void range_check(motorRecord *, double *, double, double) USAGE... Limit parameter to valid range; i.e., min. <= parameter <= max. INPUT... parm - pointer to parameter to be range check. min - minimum value. max - 0 = max. range check disabled; !0 = maximum value. */ -static void range_check(motorRecord *pmr, float *parm_ptr, double min, double max) +static void range_check(motorRecord *pmr, double *parm_ptr, double min, double max) { bool changed = false; double parm_val = *parm_ptr; diff --git a/motorApp/MotorSrc/motorRecord.dbd b/motorApp/MotorSrc/motorRecord.dbd index 501a9b4d..dc06db7a 100644 --- a/motorApp/MotorSrc/motorRecord.dbd +++ b/motorApp/MotorSrc/motorRecord.dbd @@ -1,8 +1,8 @@ # FILENAME... motorRecord.dbd -# Version: $Revision: 1.14 $ -# Modified By: $Author: sluiter $ -# Last Modified: $Date: 2005-05-10 16:19:23 $ +# Version: $Revision: 1.15 $ +# Modified By: $Author: peterd $ +# Last Modified: $Date: 2006-05-18 19:51:07 $ # Experimental Physics and Industrial Control System (EPICS) @@ -124,72 +124,72 @@ recordtype(motor) { special(SPC_MOD) interest(1) } - field(VELO,DBF_FLOAT) { + field(VELO,DBF_DOUBLE) { prompt("Velocity (EGU/s)") promptgroup(GUI_COMMON) special(SPC_MOD) interest(1) } - field(VBAS,DBF_FLOAT) { + field(VBAS,DBF_DOUBLE) { prompt("Base Velocity (EGU/s)") promptgroup(GUI_COMMON) asl(ASL0) special(SPC_MOD) interest(1) } - field(VMAX,DBF_FLOAT) { + field(VMAX,DBF_DOUBLE) { prompt("Max. Velocity (EGU/s)") promptgroup(GUI_COMMON) asl(ASL0) special(SPC_MOD) interest(1) } - field(S,DBF_FLOAT) { + field(S,DBF_DOUBLE) { prompt("Speed (revolutions/sec)") promptgroup(GUI_COMMON) special(SPC_MOD) interest(1) } - field(SBAS,DBF_FLOAT) { + field(SBAS,DBF_DOUBLE) { prompt("Base Speed (RPS)") promptgroup(GUI_COMMON) asl(ASL0) special(SPC_MOD) interest(1) } - field(SMAX,DBF_FLOAT) { + field(SMAX,DBF_DOUBLE) { prompt("Max. Speed (RPS)") promptgroup(GUI_COMMON) asl(ASL0) special(SPC_MOD) interest(1) } - field(ACCL,DBF_FLOAT) { + field(ACCL,DBF_DOUBLE) { prompt("Seconds to Velocity") promptgroup(GUI_COMMON) special(SPC_MOD) interest(1) initial("0.2") } - field(BDST,DBF_FLOAT) { + field(BDST,DBF_DOUBLE) { prompt("BL Distance (EGU)") promptgroup(GUI_COMMON) special(SPC_MOD) interest(1) } - field(BVEL,DBF_FLOAT) { + field(BVEL,DBF_DOUBLE) { prompt("BL Velocity (EGU/s)") promptgroup(GUI_COMMON) special(SPC_MOD) interest(1) } - field(SBAK,DBF_FLOAT) { + field(SBAK,DBF_DOUBLE) { prompt("BL Speed (RPS)") promptgroup(GUI_COMMON) special(SPC_MOD) interest(1) } - field(BACC,DBF_FLOAT) { + field(BACC,DBF_DOUBLE) { prompt("BL Seconds to Velocity") promptgroup(GUI_COMMON) special(SPC_MOD) @@ -246,7 +246,7 @@ recordtype(motor) { interest(1) initial("200") } - field(UREV,DBF_FLOAT) { + field(UREV,DBF_DOUBLE) { prompt("EGU's per Revolution") promptgroup(GUI_COMMON) asl(ASL0) @@ -254,7 +254,7 @@ recordtype(motor) { pp(TRUE) interest(1) } - field(MRES,DBF_FLOAT) { + field(MRES,DBF_DOUBLE) { prompt("Motor Step Size (EGU)") promptgroup(GUI_COMMON) asl(ASL0) @@ -262,14 +262,14 @@ recordtype(motor) { pp(TRUE) interest(1) } - field(ERES,DBF_FLOAT) { + field(ERES,DBF_DOUBLE) { prompt("Encoder Step Size (EGU)") promptgroup(GUI_COMMON) special(SPC_MOD) pp(TRUE) interest(1) } - field(RRES,DBF_FLOAT) { + field(RRES,DBF_DOUBLE) { prompt("Readback Step Size (EGU") promptgroup(GUI_COMMON) interest(1) @@ -305,34 +305,34 @@ recordtype(motor) { interest(1) size(16) } - field(HLM,DBF_FLOAT) { + field(HLM,DBF_DOUBLE) { prompt("User High Limit") special(SPC_MOD) pp(TRUE) } - field(LLM,DBF_FLOAT) { + field(LLM,DBF_DOUBLE) { prompt("User Low Limit") special(SPC_MOD) pp(TRUE) } - field(DHLM,DBF_FLOAT) { + field(DHLM,DBF_DOUBLE) { prompt("Dial High Limit") promptgroup(GUI_COMMON) special(SPC_MOD) pp(TRUE) } - field(DLLM,DBF_FLOAT) { + field(DLLM,DBF_DOUBLE) { prompt("Dial Low Limit") promptgroup(GUI_COMMON) special(SPC_MOD) pp(TRUE) } - field(HOPR,DBF_FLOAT) { + field(HOPR,DBF_DOUBLE) { prompt("High Operating Range") promptgroup(GUI_COMMON) interest(1) } - field(LOPR,DBF_FLOAT) { + field(LOPR,DBF_DOUBLE) { prompt("Low Operating Range") promptgroup(GUI_COMMON) interest(1) @@ -353,25 +353,25 @@ recordtype(motor) { prompt("Raw Low Limit Switch") special(SPC_NOMOD) } - field(HIHI,DBF_FLOAT) { + field(HIHI,DBF_DOUBLE) { prompt("Hihi Alarm Limit (EGU)") promptgroup(GUI_COMMON) pp(TRUE) interest(2) } - field(LOLO,DBF_FLOAT) { + field(LOLO,DBF_DOUBLE) { prompt("Lolo Alarm Limit (EGU)") promptgroup(GUI_COMMON) pp(TRUE) interest(2) } - field(HIGH,DBF_FLOAT) { + field(HIGH,DBF_DOUBLE) { prompt("High Alarm Limit (EGU)") promptgroup(GUI_COMMON) pp(TRUE) interest(2) } - field(LOW,DBF_FLOAT) { + field(LOW,DBF_DOUBLE) { prompt("Low Alarm Limit (EGU)") promptgroup(GUI_COMMON) pp(TRUE) @@ -412,7 +412,7 @@ recordtype(motor) { interest(2) menu(menuAlarmSevr) } - field(RDBD,DBF_FLOAT) { + field(RDBD,DBF_DOUBLE) { prompt("Retry Deadband (EGU)") promptgroup(GUI_COMMON) special(SPC_MOD) @@ -487,7 +487,7 @@ recordtype(motor) { pp(TRUE) interest(1) } - field(TWV,DBF_FLOAT) { + field(TWV,DBF_DOUBLE) { prompt("Tweak Step Size (EGU)") promptgroup(GUI_COMMON) interest(1) @@ -619,7 +619,7 @@ recordtype(motor) { special(SPC_NOMOD) interest(3) } - field(DLY,DBF_FLOAT) { + field(DLY,DBF_DOUBLE) { prompt("Readback settle time (s)") promptgroup(GUI_COMMON) special(SPC_MOD) @@ -632,21 +632,21 @@ recordtype(motor) { size(4) extra("void *cbak") } - field(PCOF,DBF_FLOAT) { + field(PCOF,DBF_DOUBLE) { promptgroup(GUI_COMMON) prompt("Proportional Gain") special(SPC_MOD) interest(1) initial("0") } - field(ICOF,DBF_FLOAT) { + field(ICOF,DBF_DOUBLE) { promptgroup(GUI_COMMON) prompt("Integral Gain") special(SPC_MOD) interest(1) initial("0") } - field(DCOF,DBF_FLOAT) { + field(DCOF,DBF_DOUBLE) { promptgroup(GUI_COMMON) prompt("Derivative Gain") special(SPC_MOD) @@ -695,13 +695,13 @@ recordtype(motor) { special(SPC_MOD) interest(1) } - field(JVEL,DBF_FLOAT) { + field(JVEL,DBF_DOUBLE) { prompt("Jog Velocity (EGU/s)") promptgroup(GUI_COMMON) special(SPC_MOD) interest(1) } - field(JAR,DBF_FLOAT) { + field(JAR,DBF_DOUBLE) { prompt("Jog Accel. (EGU/s^2)") promptgroup(GUI_COMMON) special(SPC_MOD) @@ -721,7 +721,7 @@ recordtype(motor) { menu(menuYesNo) initial("YES") } - field(HVEL,DBF_FLOAT) { + field(HVEL,DBF_DOUBLE) { prompt("Home Velocity (EGU/s)") promptgroup(GUI_COMMON) special(SPC_MOD)