Clenup
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-PosAct-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Pos Act")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynFloat64ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.actpos_arr")
|
||||
field(FTVL, "DOUBLE")
|
||||
@@ -17,7 +17,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-PosAct-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-PosSet-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Pos Set")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynFloat64ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.setpos_arr")
|
||||
field(FTVL, "DOUBLE")
|
||||
@@ -32,7 +32,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-PosSet-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-PosErr-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Pos Error (diff)")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynFloat64ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.diffpos_arr")
|
||||
field(FTVL, "DOUBLE")
|
||||
@@ -47,7 +47,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-PosErr-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-Time-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Rel. time within buffer")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynFloat64ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.x_arr")
|
||||
field(FTVL, "DOUBLE")
|
||||
@@ -61,7 +61,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-Time-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-Ena-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Enable")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynInt8ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.enable_arr")
|
||||
field(FTVL, "CHAR")
|
||||
@@ -74,7 +74,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-Ena-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-EnaAct-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Enabled")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynInt8ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.enabled_arr")
|
||||
field(FTVL, "CHAR")
|
||||
@@ -87,7 +87,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-EnaAct-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-Bsy-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Busy")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynInt8ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.busy_arr")
|
||||
field(FTVL, "CHAR")
|
||||
@@ -100,7 +100,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-Bsy-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-Exe-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Execute")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynInt8ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.execute_arr")
|
||||
field(FTVL, "CHAR")
|
||||
@@ -113,7 +113,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-Exe-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-TrjSrc-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Traj source")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynInt8ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.trajsrc_arr")
|
||||
field(FTVL, "CHAR")
|
||||
@@ -126,7 +126,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-TrjSrc-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-EncSrc-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Enc source")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynInt8ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.encsrc_arr")
|
||||
field(FTVL, "CHAR")
|
||||
@@ -139,7 +139,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-EncSrc-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-AtTrg-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "At target")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynInt8ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.attarget_arr")
|
||||
field(FTVL, "CHAR")
|
||||
@@ -152,7 +152,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-AtTrg-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-ErrId-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Error Id")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynInt32ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.error_arr")
|
||||
field(FTVL, "LONG")
|
||||
@@ -165,7 +165,7 @@ record(waveform,"$(P)Plg-Mtn${INDEX}-ErrId-Arr"){
|
||||
record(waveform,"$(P)Plg-Mtn${INDEX}-Stat-Arr"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Status wd")
|
||||
field(PINI, "1")
|
||||
#field(PINI, "1")
|
||||
field(DTYP, "asynInt32ArrayIn")
|
||||
field(INP, "@asyn(PLUGIN.MOTION_${INDEX},$(ADDR=0),$(TIMEOUT=1000))plugin.motion_${INDEX}.statuswd_arr")
|
||||
field(FTVL, "LONG")
|
||||
|
||||
86
README.md
86
README.md
@@ -1,7 +1,7 @@
|
||||
ecmc_plugin_motion
|
||||
======
|
||||
Plugin designed for commisioning and troubleshooting of motion axes.
|
||||
Motion data are sampled, buffered and exposed to epics as waveforms.
|
||||
Motion data are sampled, buffered and exposed as epics as waveforms.
|
||||
|
||||
# Panel
|
||||
```
|
||||
@@ -12,29 +12,65 @@ caqtdm -macro "SYS=c6025a" ecmc_plugin_motion_main.ui
|
||||
caqtdm -macro "SYS=c6025a,MTN_ID=1" ecmc_plugin_motion_main.ui
|
||||
```
|
||||
# Python panels
|
||||
In tools directory is WIP.
|
||||
In tools directory.. WIP...
|
||||
|
||||
|
||||
|
||||
# PVs
|
||||
|
||||
The following PVs are created:
|
||||
```
|
||||
c6025a> dbgrep *Plg*
|
||||
c6025a:Plg-Mtn0-SmpHz
|
||||
c6025a:Plg-Mtn0-AxCmd-RB
|
||||
c6025a:Plg-Mtn0-EnaCmd-RB
|
||||
c6025a:Plg-Mtn0-Stat
|
||||
c6025a:Plg-Mtn0-PosAct-Arr
|
||||
c6025a:Plg-Mtn0-PosSet-Arr
|
||||
c6025a:Plg-Mtn0-PosErr-Arr
|
||||
c6025a:Plg-Mtn0-Time-Arr
|
||||
c6025a:Plg-Mtn0-Ena-Arr
|
||||
c6025a:Plg-Mtn0-EnaAct-Arr
|
||||
c6025a:Plg-Mtn0-Bsy-Arr
|
||||
c6025a:Plg-Mtn0-Exe-Arr
|
||||
c6025a:Plg-Mtn0-TrjSrc-Arr
|
||||
c6025a:Plg-Mtn0-EncSrc-Arr
|
||||
c6025a:Plg-Mtn0-AtTrg-Arr
|
||||
c6025a:Plg-Mtn0-ErrId-Arr
|
||||
c6025a:Plg-Mtn0-Stat-Arr
|
||||
```
|
||||
|
||||
# Plugin Report
|
||||
|
||||
```
|
||||
Plugin info:
|
||||
Index = 1
|
||||
Name = ecmc_plugin_motion
|
||||
Description = Motion plugin for commissioning of ecmc motion axes.
|
||||
Option description =
|
||||
DBG_PRINT=<1/0> : Enables/disables printouts from plugin, default = disabled.
|
||||
AXIS=<axis id> : Sets default source axis id.
|
||||
BUFFER_SIZE=<size> : Data points to collect, default = 4096.
|
||||
RATE=<rate hz> : Sampling rate in Hz
|
||||
Filename = /gfa/.mounts/sls_ioc/modules/ecmc_plugin_motion/test/R7.0.7//lib/deb10-x86_64/libecmc_plugin_motion.so
|
||||
Config string = AXIS=1;BUFFER_SIZE=2000;DBG_PRINT=0;ENABLE=1;
|
||||
Version = 2
|
||||
Interface version = 65536 (ecmc = 65536)
|
||||
max plc funcs = 64
|
||||
max plc func args = 10
|
||||
max plc consts = 64
|
||||
Construct func = @0x7f0badafb780
|
||||
Enter realtime func = @0x7f0badafb7c0
|
||||
Exit realtime func = @0x7f0badafb770
|
||||
Realtime func = @0x7f0badafb7a0
|
||||
Destruct func = @0x7f0badafb760
|
||||
dlhandle = @0x563c3aba7d00
|
||||
Plc functions:
|
||||
Plc constants:
|
||||
|
||||
```
|
||||
|
||||
# TODO
|
||||
Much ..
|
||||
|
||||
The following interfaces are not implemented resulting in annoying error printouts.
|
||||
```
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-PosAct-Arr devAsynFloat64Array::callbackWfIn read error
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-PosSet-Arr devAsynFloat64Array::callbackWfIn read error
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-PosErr-Arr devAsynFloat64Array::callbackWfIn read error
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-Time-Arr devAsynFloat64Array::callbackWfIn read error
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-Ena-Arr devAsynInt8Array::callbackWfIn read error asynPortDriver:readArray not implemented
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-EnaAct-Arr devAsynInt8Array::callbackWfIn read error asynPortDriver:readArray not implemented
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-Bsy-Arr devAsynInt8Array::callbackWfIn read error asynPortDriver:readArray not implemented
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-Exe-Arr devAsynInt8Array::callbackWfIn read error asynPortDriver:readArray not implemented
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-TrjSrc-Arr devAsynInt8Array::callbackWfIn read error asynPortDriver:readArray not implemented
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-EncSrc-Arr devAsynInt8Array::callbackWfIn read error asynPortDriver:readArray not implemented
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-AtTrg-Arr devAsynInt8Array::callbackWfIn read error asynPortDriver:readArray not implemented
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-ErrId-Arr devAsynInt32Array::callbackWfIn read error asynPortDriver:readArray not implemented
|
||||
2024/04/30 16:00:24.923 c6025a:Plg-Mtn0-Stat-Arr devAsynInt32Array::callbackWfIn read error asynPortDriver:readArray not implemented
|
||||
|
||||
2024/04/30 16:00:33.476 c6025a:Plg-Mtn0-AxCmd-RB devAsynInt32::processCallbackOutput process write error
|
||||
...
|
||||
...
|
||||
|
||||
```
|
||||
* Triggered mode
|
||||
* Add control functionalities (step response)
|
||||
* Fix python gui (and venv)
|
||||
|
||||
@@ -112,7 +112,7 @@ struct ecmcPluginData pluginDataDef = {
|
||||
// Allways use ECMC_PLUG_VERSION_MAGIC
|
||||
.ifVersion = ECMC_PLUG_VERSION_MAGIC,
|
||||
// Name
|
||||
.name = "ecmcPlugin_Motion",
|
||||
.name = "ecmc_plugin_motion",
|
||||
// Description
|
||||
.desc = "Motion plugin for commissioning of ecmc motion axes.",
|
||||
// Option description
|
||||
@@ -120,7 +120,7 @@ struct ecmcPluginData pluginDataDef = {
|
||||
" "ECMC_PLUGIN_AXIS_OPTION_CMD"<axis id> : Sets default source axis id.\n"
|
||||
" "ECMC_PLUGIN_BUFFER_SIZE_OPTION_CMD"<size> : Data points to collect, default = 4096.\n"
|
||||
" "ECMC_PLUGIN_RATE_OPTION_CMD"<rate hz> : Sampling rate in Hz"
|
||||
" "ECMC_PLUGIN_MODE_OPTION_CMD"<TRIGG/CONT> : Sampling rate in Hz"
|
||||
// " "ECMC_PLUGIN_MODE_OPTION_CMD"<TRIGG/CONT> : Cont or triggered mode"
|
||||
,
|
||||
// Plugin version
|
||||
.version = ECMC_EXAMPLE_PLUGIN_VERSION,
|
||||
|
||||
Reference in New Issue
Block a user