diff --git a/Db/ecmcPluginMotion.template b/Db/ecmcPluginMotion.template
index f63e18c..2b815e7 100644
--- a/Db/ecmcPluginMotion.template
+++ b/Db/ecmcPluginMotion.template
@@ -161,7 +161,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-ErrId-Arr"){
field(TSE, "0")
}
-# Axis Error Id
+# Axis status word
record(waveform,"$(P)Plg-Mtn${INDEX}-Stat-Arr"){
info(asyn:FIFO, "1000")
field(DESC, "Status wd")
@@ -191,10 +191,13 @@ record(ao,"$(P)Plg-Mtn${INDEX}-AxCmd-RB"){
field(DTYP,"asynInt32")
field(OUT, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.axis_id")
field(DOL, "0")
+ field(PREC,"0")
+ field(DRVL,"0")
+ field(DRVH,"100")
field(VAL, "1")
}
-record(ai,"$(P)Plg-Mtn${INDEX}-SmpHz-RB"){
+record(ai,"$(P)Plg-Mtn${INDEX}-SmpHz"){
info(asyn:READBACK,"1")
field(DESC, "Sample rate")
field(DTYP,"asynFloat64")
@@ -204,68 +207,63 @@ record(ai,"$(P)Plg-Mtn${INDEX}-SmpHz-RB"){
field(SCAN, "I/O Intr")
}
-record(ai,"$(P)Plg-Mtn${INDEX}-BuffSze"){
- info(asyn:READBACK,"1")
- field(DESC, "Buffer Size")
- field(DTYP,"asynInt32")
- field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.buff_size")
- field(VAL, "1")
-}
+# Future use
+#record(ai,"$(P)Plg-Mtn${INDEX}-BuffSze"){
+# info(asyn:READBACK,"1")
+# field(DESC, "Buffer Size")
+# field(DTYP,"asynInt32")
+# field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.buff_size")
+# field(VAL, "1")
+#}
-record(ai,"$(P)Plg-Mtn${INDEX}-ElmCnt"){
- info(asyn:READBACK,"1")
- field(DESC, "Elements in buffer count")
- field(DTYP,"asynInt32")
- field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.elem_count")
- field(VAL, "1")
-}
+# Future use
+#record(ai,"$(P)Plg-Mtn${INDEX}-ElmCnt"){
+# info(asyn:READBACK,"1")
+# field(DESC, "Elements in buffer count")
+# field(DTYP,"asynInt32")
+# field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.elem_count")
+# field(VAL, "1")
+#}
-record(bo,"$(P)Plg-Mtn${INDEX}-TrgCmd-RB"){
- info(asyn:READBACK,"1")
- field(DESC, "Trigg command")
- field(DTYP,"asynInt32")
- field(OUT, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.trigg")
- field(ZNAM,"IDLE")
- field(ONAM,"TRIGG")
- field(VAL, "0")
- field(HIGH, 0.001)
-}
+# Future use
+#record(bo,"$(P)Plg-Mtn${INDEX}-TrgCmd-RB"){
+# info(asyn:READBACK,"1")
+# field(DESC, "Trigg command")
+# field(DTYP,"asynInt32")
+# field(OUT, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.trigg")
+# field(ZNAM,"IDLE")
+# field(ONAM,"TRIGG")
+# field(VAL, "0")
+# field(HIGH, 0.001)
+#}
-#record(longout,"$(P)Plg-Mtn${INDEX}-Mde-RB"){
+# Future use
+#record(mbbo, "$(P)Plg-Mtn${INDEX}-Mde-RB"){
# info(asyn:READBACK,"1")
# field(DESC, "Mode selection")
# field(PINI, "1")
# field(TSE, "0")
# field(DTYP, "asynInt32")
# field(OUT, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.mode")
-# field(SCAN, "Passive")
+# field(ZRST, "NO_COMMAND")
+# field(ZRVL, 0)
+# field(ONST, "CONT")
+# field(ONVL, 1)
+# field(TWST, "TRIGG")
+# field(TWVL, 2)
+# field(VAL, 1)
#}
-record(mbbo, "$(P)Plg-Mtn${INDEX}-Mde-RB"){
- info(asyn:READBACK,"1")
- field(DESC, "Mode selection")
- field(PINI, "1")
- field(TSE, "0")
- field(DTYP, "asynInt32")
- field(OUT, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.mode")
- field(ZRST, "NO_COMMAND")
- field(ZRVL, 0)
- field(ONST, "CONT")
- field(ONVL, 1)
- field(TWST, "TRIGG")
- field(TWVL, 2)
- field(VAL, 1)
-}
-
-record(longout,"$(P)Plg-Mtn${INDEX}-Cmd-RB"){
- info(asyn:READBACK,"1")
- field(DESC, "Command")
- field(PINI, "1")
- field(TSE, "0")
- field(DTYP, "asynInt32")
- field(OUT, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.cmd")
- field(SCAN, "Passive")
-}
+# Future use
+# record(longout,"$(P)Plg-Mtn${INDEX}-Cmd-RB"){
+# info(asyn:READBACK,"1")
+# field(DESC, "Command")
+# field(PINI, "1")
+# field(TSE, "0")
+# field(DTYP, "asynInt32")
+# field(OUT, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.cmd")
+# field(SCAN, "Passive")
+# }
record(longin,"$(P)Plg-Mtn${INDEX}-Stat"){
info(asyn:READBACK,"1")
diff --git a/README.md b/README.md
index e12eacc..ad746df 100644
--- a/README.md
+++ b/README.md
@@ -3,10 +3,6 @@ ecmc_plugin_motion
Plugin designed for commisioning and troubleshooting of motion axes.
Motion data are sampled, buffered and exposed to epics as waveforms.
-
-
-
-
# Panel
```
# Plugin loaded once (MTN_ID defaults to 0)
@@ -14,4 +10,7 @@ caqtdm -macro "SYS=c6025a" ecmc_plugin_motion_main.ui
# If loaded more times
caqtdm -macro "SYS=c6025a,MTN_ID=1" ecmc_plugin_motion_main.ui
-```
\ No newline at end of file
+```
+
+# Python panels
+In tools directory is WIP.
diff --git a/qt/ecmc_plugin_motion_main.ui b/qt/ecmc_plugin_motion_main.ui
index b90e461..48ed551 100644
--- a/qt/ecmc_plugin_motion_main.ui
+++ b/qt/ecmc_plugin_motion_main.ui
@@ -6,7 +6,7 @@
0
0
- 1252
+ 1420
893
@@ -397,8 +397,136 @@
1
+
+
+
+ 1270
+ 80
+ 100
+ 22
+
+
+
+ Enable
+
+
+ $(SYS):Plg-Mtn$(MTN_ID=0)-EnaCmd-RB
+
+
+
+
+
+ 1300
+ 120
+ 100
+ 50
+
+
+
+ 1
+
+
+ 0
+
+
+ 0.000000000000000
+
+
+ $(SYS):Plg-Mtn$(MTN_ID=0)-AxCmd-RB
+
+
+ caNumeric::Alarm
+
+
+ caNumeric::User
+
+
+ true
+
+
+ caNumeric::User
+
+
+ 100.000000000000000
+
+
+ 0.000000000000000
+
+
+
+
+
+ 1230
+ 130
+ 63
+ 20
+
+
+
+ Axis ID:
+
+
+
+
+
+ 1330
+ 190
+ 61
+ 20
+
+
+
+ $(SYS):Plg-Mtn$(MTN_ID=0)-SmpHz
+
+
+
+
+
+ 1230
+ 190
+ 63
+ 20
+
+
+
+ Rate [Hz]:
+
+
+
+
+
+ 1310
+ 290
+ 90
+ 28
+
+
+
+ $(SYS):Plg-Mtn$(MTN_ID=0)-SmpHz
+
+
+
+ caNumeric
+ QFrame
+
+
+
+ caToggleButton
+ QCheckBox
+
+
+
+ caLabel
+ QLabel
+
+
+
+ caLineEdit
+ QLineEdit
+
+
caStripPlot
QwtPlot
diff --git a/src/ecmcMotionPlg.cpp b/src/ecmcMotionPlg.cpp
index 5cf7fd7..db3ca72 100644
--- a/src/ecmcMotionPlg.cpp
+++ b/src/ecmcMotionPlg.cpp
@@ -833,9 +833,9 @@ void ecmcMotionPlg::executeMotionObject() {
return;
}
- if(cfgMode_==TRIGG && !bTriggInProgress_) {
- return;
- }
+ //if(cfgMode_==TRIGG && !bTriggInProgress_) {
+ // return;
+ //}
// protect axis_ if axis object id is changed over asyn
epicsMutexLock(axisMutex_);
diff --git a/tools/ecmcMotionMainGui.py b/tools/ecmcMotionMainGui.py
index 21d6699..0398b4a 100644
--- a/tools/ecmcMotionMainGui.py
+++ b/tools/ecmcMotionMainGui.py
@@ -334,39 +334,63 @@ class ecmcMtnMainGui(QtWidgets.QDialog):
self.pv_signal_cbs['ElmCnt'].data_signal.emit(value)
def on_change_PosAct_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['PosAct-Arr'].data_signal.emit(value)
- def on_change_PosSet_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ def on_change_PosSet_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['PosSet-Arr'].data_signal.emit(value)
def on_change_PosErr_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['PosErr-Arr'].data_signal.emit(value)
def on_change_Time_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['Time-Arr'].data_signal.emit(value)
def on_change_Ena_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['Ena-Arr'].data_signal.emit(value)
def on_change_EnaAct_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['EnaAct-Arr'].data_signal.emit(value)
def on_change_Bsy_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['Bsy-Arr'].data_signal.emit(value)
def on_change_Exe_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['Exe-Arr'].data_signal.emit(value)
def on_change_TrjSrc_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['TrjSrc-Arr'].data_signal.emit(value)
def on_change_EncSrc_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['EncSrc-Arr'].data_signal.emit(value)
def on_change_AtTrg_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['AtTrg-Arr'].data_signal.emit(value)
def on_change_ErrId_Arr(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):
+ if self.pause:
+ return
self.pv_signal_cbs['ErrId-Arr'].data_signal.emit(value)
def on_change_Mde_RB(self,pvname=None, value=None, char_value=None,timestamp=None, **kw):