This commit is contained in:
2024-05-01 10:18:49 +02:00
parent 7632be616d
commit ddc48262ce
3 changed files with 76 additions and 40 deletions

View File

@@ -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")

View File

@@ -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)

View File

@@ -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,