From 0ef39053aac72d8718ef99d08164da1be0825370 Mon Sep 17 00:00:00 2001 From: Ron Sluiter Date: Wed, 25 Feb 2015 21:07:43 +0000 Subject: [PATCH] =?UTF-8?q?-=20Fix=20for=20excessive=20FLNK=20processing?= =?UTF-8?q?=20reported=20by=20Alexander=20S=C3=B6derqvist=20(Cosylab).=20M?= =?UTF-8?q?odified=20so=20that=20recGblFwdLink()=20is=20only=20called=20on?= =?UTF-8?q?=20a=20False=20to=20True=20transition=20of=20DMOV.=20-=20Increm?= =?UTF-8?q?ented=20VERSION=20#=20to=206.10.=20-=20Updated=20comments.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README | 13 ++++++++++++- motorApp/MotorSrc/motorRecord.cc | 17 ++++++++++------- motorApp/MotorSrc/motorRecord.dbd | 5 +++++ 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/README b/README index 10defa79..2f44c57d 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Motor Module R6-9 Release Notes +Motor Module R6-10 Release Notes =============================================================================== The motor module software in this release is compatible with EPICS base @@ -147,6 +147,17 @@ Known Problems Modification Log for R6-9 ========================= +1) Alexander Aulin Söderqvist (Cosylab) reported illogical motor record FLNK + processing. Corrected FLNK processing so that recGblFwdLink() is only + called on a False to True transition of DMOV. + + Files modified: motorApp/MotorSrc/motorRecord.cc + motorApp/MotorSrc/motorRecord.dbd + + +Modification Log for R6-9 +========================= + 1) Kevin Peterson added support for the Micronix MMC-200 & MMC-100 controllers. Files added: motorApp/MicronixSrc diff --git a/motorApp/MotorSrc/motorRecord.cc b/motorApp/MotorSrc/motorRecord.cc index 12dae9b4..8b8ae13a 100644 --- a/motorApp/MotorSrc/motorRecord.cc +++ b/motorApp/MotorSrc/motorRecord.cc @@ -183,9 +183,11 @@ HeadURL: $URL$ * - Fix for LOAD_POS not posting RVAL. * - Reversed order of issuing SET_VEL_BASE and SET_VELOCITY commands. Fixes MAXv * command errors. + * .71 02-25-15 rls - Fix for excessive motor record forward link processing. + * */ -#define VERSION 6.9 +#define VERSION 6.10 #include #include @@ -1164,9 +1166,10 @@ Exit: Update record timestamp, call recGblGetTimeStamp(). Process alarms, call alarm_sub(). Monitor changes to record fields, call monitor(). - IF Done Moving field (DMOV) is TRUE. + IF Done Moving field (DMOV) is TRUE, AND, Last Done Moving (LDMV) was False. Process the forward-scan-link record, call recGblFwdLink(). ENDIF + Update Last Done Moving (LDMV). Set Processing Active indicator field (PACT) false. Exit. @@ -1402,9 +1405,10 @@ process_exit: alarm_sub(pmr); /* If we've violated alarm limits, yell. */ monitor(pmr); /* If values have changed, broadcast them. */ - if (pmr->dmov) - recGblFwdLink(pmr); /* Process the forward-scan-link record. */ - + if (pmr->dmov != 0 && pmr->ldmv == 0) /* Test for False to True transition. */ + recGblFwdLink(pmr); /* Process the forward-scan-link record. */ + pmr->ldmv = pmr->dmov; + pmr->pact = 0; Debug(4, "process:---------------------- end; motor \"%s\"\n", pmr->name); return (status); @@ -1590,8 +1594,7 @@ LOGIC: ELSE Calculate.... - IF Retry enabled, AND, [(encoder present, AND, use encoder true), - OR, use readback link true] + IF Retry enabled, AND, Retry mode is Not "In-Position", AND, [(encoder present, AND, use encoder true), OR, use readback link true] Set relative positioning indicator true. ELSE Set relative positioning indicator false. diff --git a/motorApp/MotorSrc/motorRecord.dbd b/motorApp/MotorSrc/motorRecord.dbd index 4040234b..e421eb34 100644 --- a/motorApp/MotorSrc/motorRecord.dbd +++ b/motorApp/MotorSrc/motorRecord.dbd @@ -589,6 +589,11 @@ recordtype(motor) { special(SPC_NOMOD) initial("1") } + field(LDMV,DBF_SHORT) { + prompt("Last Done moving value") + special(SPC_NOMOD) + initial("1") + } field(MOVN,DBF_SHORT) { prompt("Motor is moving") special(SPC_NOMOD)