From ddc48262ce51c0d6a6f628a8d8154b9a6d38215f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Sandstr=C3=B6m?= Date: Wed, 1 May 2024 10:18:49 +0200 Subject: [PATCH] Clenup --- Db/ecmcPluginMotion.template | 26 +++++------ README.md | 86 +++++++++++++++++++++++++----------- src/ecmcPluginMotion.c | 4 +- 3 files changed, 76 insertions(+), 40 deletions(-) diff --git a/Db/ecmcPluginMotion.template b/Db/ecmcPluginMotion.template index 2b815e7..5c7099b 100644 --- a/Db/ecmcPluginMotion.template +++ b/Db/ecmcPluginMotion.template @@ -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") diff --git a/README.md b/README.md index 29ba421..257cdb4 100644 --- a/README.md +++ b/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= : Sets default source axis id. + BUFFER_SIZE= : Data points to collect, default = 4096. + RATE= : 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) diff --git a/src/ecmcPluginMotion.c b/src/ecmcPluginMotion.c index 891c4dd..19f63b7 100644 --- a/src/ecmcPluginMotion.c +++ b/src/ecmcPluginMotion.c @@ -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" : Sets default source axis id.\n" " "ECMC_PLUGIN_BUFFER_SIZE_OPTION_CMD" : Data points to collect, default = 4096.\n" " "ECMC_PLUGIN_RATE_OPTION_CMD" : Sampling rate in Hz" - " "ECMC_PLUGIN_MODE_OPTION_CMD" : Sampling rate in Hz" + // " "ECMC_PLUGIN_MODE_OPTION_CMD" : Cont or triggered mode" , // Plugin version .version = ECMC_EXAMPLE_PLUGIN_VERSION,