From 261f93ed43b190678f7f1d8b9f9d29fb4d19fe59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Sandstr=C3=B6m?= Date: Tue, 25 Feb 2025 12:34:35 +0100 Subject: [PATCH] WIP --- Db/{ss1.template => ecmcSS1Group.template} | 10 + Db/ecmcSS1Main.template | 11 + qt/ecmc_plugin_safety_group.ui | 222 ++++++++ qt/ecmc_plugin_safety_main.ui | 558 ++++++++++++++++----- scripts/addSS1Group.cmd | 6 +- startup.cmd | 3 + 6 files changed, 671 insertions(+), 139 deletions(-) rename Db/{ss1.template => ecmcSS1Group.template} (90%) create mode 100644 Db/ecmcSS1Main.template create mode 100644 qt/ecmc_plugin_safety_group.ui diff --git a/Db/ss1.template b/Db/ecmcSS1Group.template similarity index 90% rename from Db/ss1.template rename to Db/ecmcSS1Group.template index 3645680..b187c4b 100644 --- a/Db/ss1.template +++ b/Db/ecmcSS1Group.template @@ -63,3 +63,13 @@ record(bi,"${P}SS1-${NAME}-RedVeloCmdAct"){ field(ZSV, "NO_ALARM") field(OSV, "NO_ALARM") } + +record(stringin,"$(P)SS1-Grp${ID=0}-Nam") { + field(DESC, "Name of Grp ${ID=0}") + field(VAL, "${NAME}") +} + +record(ai,"$(P)SS1-GrpCnt") { + field(DESC, "Group Count") + field(VAL, "$(COUNT=0)") +} diff --git a/Db/ecmcSS1Main.template b/Db/ecmcSS1Main.template new file mode 100644 index 0000000..80a3d84 --- /dev/null +++ b/Db/ecmcSS1Main.template @@ -0,0 +1,11 @@ +record(stringin,"$(P)SS1-PnlTyp") { + field(DESC, "Panel name") + field(VAL, "ecmc_plugin_safety_main.ui") +} + +record(bi,"${P}SS1-Loaded"){ + field(DESC, "Plugin loaded") + field(VAL, 1) + field(ONAM, "1") + field(ZNAM, "0") +} diff --git a/qt/ecmc_plugin_safety_group.ui b/qt/ecmc_plugin_safety_group.ui new file mode 100644 index 0000000..1c4ebd4 --- /dev/null +++ b/qt/ecmc_plugin_safety_group.ui @@ -0,0 +1,222 @@ + + + Form + + + + 0 + 0 + 311 + 227 + + + + Form + + + + + 5 + 35 + 296 + 121 + + + + Diagnostics + + + + + 45 + 60 + 206 + 28 + + + + Reduced velo cmd active + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 10 + 30 + 30 + 30 + + + + $(IOC):SS1-$(SAFETY_GRP)-RmpDwnCmdAct + + + + 0 + 85 + 0 + + + + + 255 + 0 + 0 + + + + + + + 10 + 60 + 30 + 30 + + + + $(IOC):SS1-$(SAFETY_GRP)-RedVeloCmdAct + + + + 0 + 85 + 0 + + + + + 255 + 0 + 0 + + + + + + + 45 + 30 + 246 + 28 + + + + Rampdown cmd active (E-STOP) + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 45 + 90 + 251 + 26 + + + + Axis at rest + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 10 + 88 + 30 + 30 + + + + $(IOC):SS1-$(SAFETY_GRP)-AxsStndStllAct + + + + 255 + 0 + 0 + + + + + 0 + 85 + 0 + + + + + + + + 50 + 5 + 221 + 28 + + + + SS1 group: $(SAFETY_GRP=) + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 10 + 160 + 291 + 61 + + + + + Lucida Sans Typewriter + 8 + + + + QAbstractScrollArea::AdjustToContents + + + NOTE: +ecmc_plugin_safety has NO safety rated +features. It only acts as an interface to a +dedicated safety system. + + + caMultiLineString::None + + + + + + caLabel + QLabel +
caLabel
+
+ + caLed + QWidget +
caLed
+
+ + caMultiLineString + QPlainTextEdit +
caMultiLineString
+
+
+ + +
diff --git a/qt/ecmc_plugin_safety_main.ui b/qt/ecmc_plugin_safety_main.ui index d4ee110..1df60c6 100644 --- a/qt/ecmc_plugin_safety_main.ui +++ b/qt/ecmc_plugin_safety_main.ui @@ -6,153 +6,424 @@ 0 0 - 315 - 143 + 146 + 315 Form - - - - 20 - 98 - 30 - 30 - - - - $(IOC):SS1-$(SAFETY_GRP)-AxsStndStllAct - - - - 255 - 0 - 0 - - - - - 0 - 85 - 0 - - - - - - - 55 - 100 - 251 - 26 - - - - Axis at rest - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - 55 - 40 - 246 - 28 - - - - Rampdown cmd active (E-STOP) - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - 20 - 40 - 30 - 30 - - - - $(IOC):SS1-$(SAFETY_GRP)-RmpDwnCmdAct - - - - 0 - 85 - 0 - - - - - 255 - 0 - 0 - - - - - - - 55 - 70 - 206 - 28 - - - - Reduced velo cmd active - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - 20 - 70 - 30 - 30 - - - - $(IOC):SS1-$(SAFETY_GRP)-RedVeloCmdAct - - - - 0 - 85 - 0 - - - - - 255 - 0 - 0 - - - - 50 - 10 - 221 - 28 + 5 + 0 + 136 + 36 - SS1 group: $(SAFETY_GRP=) + Safety plugin + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 5 + 35 + 136 + 241 + + + + Group: + + + + + 5 + 30 + 120 + 30 + + + + GRP_ID=01,IOC=$(IOC) + + + caFrame::Calc + + + A>=1 + + + $(IOC):SS1-GrpCnt + + + + + 15 + 5 + 100 + 21 + + + + $(GRP_ID) + + + $(GRP_ID) + + + bash /ioc/modules/qt/ecmcOpenObject.sh + + + PLG_SAFETY_GRP $(IOC) $(GRP_ID); + + + + + + + 5 + 80 + 120 + 30 + + + + GRP_ID=03,IOC=$(IOC) + + + caFrame::Calc + + + A>=3 + + + $(IOC):SS1-GrpCnt + + + + + 15 + 5 + 100 + 21 + + + + $(GRP_ID) + + + $(GRP_ID) + + + bash /ioc/modules/qt/ecmcOpenObject.sh + + + PLG_SAFETY_GRP $(IOC) $(GRP_ID); + + + + + + + 5 + 105 + 120 + 30 + + + + GRP_ID=04,IOC=$(IOC) + + + caFrame::Calc + + + A>=4 + + + $(IOC):SS1-GrpCnt + + + + + 15 + 5 + 100 + 21 + + + + $(GRP_ID) + + + $(GRP_ID) + + + bash /ioc/modules/qt/ecmcOpenObject.sh + + + PLG_SAFETY_GRP $(IOC) $(GRP_ID); + + + + + + + 5 + 130 + 120 + 30 + + + + GRP_ID=05,IOC=$(IOC) + + + caFrame::Calc + + + A>=5 + + + $(IOC):SS1-GrpCnt + + + + + 15 + 5 + 100 + 21 + + + + $(GRP_ID) + + + $(GRP_ID) + + + bash /ioc/modules/qt/ecmcOpenObject.sh + + + PLG_SAFETY_GRP $(IOC) $(GRP_ID); + + + + + + + 5 + 155 + 120 + 30 + + + + GRP_ID=06,IOC=$(IOC) + + + caFrame::Calc + + + A>=6 + + + $(IOC):SS1-GrpCnt + + + + + 15 + 5 + 100 + 21 + + + + $(GRP_ID) + + + $(GRP_ID) + + + bash /ioc/modules/qt/ecmcOpenObject.sh + + + PLG_SAFETY_GRP $(IOC) $(GRP_ID); + + + + + + + 5 + 180 + 120 + 30 + + + + GRP_ID=07,IOC=$(IOC) + + + caFrame::Calc + + + A>=7 + + + $(IOC):SS1-GrpCnt + + + + + 15 + 5 + 100 + 21 + + + + $(GRP_ID) + + + $(GRP_ID) + + + bash /ioc/modules/qt/ecmcOpenObject.sh + + + PLG_SAFETY_GRP $(IOC) $(GRP_ID); + + + + + + + 5 + 205 + 120 + 30 + + + + GRP_ID=08,IOC=$(IOC) + + + caFrame::Calc + + + A>=8 + + + $(IOC):SS1-GrpCnt + + + + + 15 + 5 + 100 + 21 + + + + $(GRP_ID) + + + $(GRP_ID) + + + bash /ioc/modules/qt/ecmcOpenObject.sh + + + PLG_SAFETY_GRP $(IOC) $(GRP_ID); + + + + + + + 5 + 55 + 120 + 30 + + + + GRP_ID=02,IOC=$(IOC) + + + caFrame::Calc + + + A>=2 + + + $(IOC):SS1-GrpCnt + + + + + 15 + 5 + 100 + 21 + + + + $(GRP_ID) + + + $(GRP_ID) + + + bash /ioc/modules/qt/ecmcOpenObject.sh + + + PLG_SAFETY_GRP $(IOC) $(GRP_ID); + + + + + + + + 95 + 285 + 41 + 20 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + $(IOC):SS1-GrpCnt + + + + + + 10 + 285 + 91 + 21 + + + + Group cnt: Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter @@ -160,15 +431,26 @@ + + caFrame + QFrame +
caFrame
+ 1 +
caLabel QLabel
caLabel
- caLed + caLineEdit + QLineEdit +
caLineEdit
+
+ + caShellCommand QWidget -
caLed
+
caShellCommand
diff --git a/scripts/addSS1Group.cmd b/scripts/addSS1Group.cmd index bca6bb4..dcb57f4 100644 --- a/scripts/addSS1Group.cmd +++ b/scripts/addSS1Group.cmd @@ -30,7 +30,11 @@ #- : Ethercat entry input for activation of maximum velo limitation (set to "empty" to disable) #- : Time delay of STO [ms] + ecmcAddSS1SafetyGroup("${NAME}","${EC_RAMP_DOWN_CMD}","${EC_AXES_AT_REST_STAT}","${EC_AXES_LIM_VELO_CMD=empty}",${DELAY_MS=0}) +ecmcEpicsEnvSetCalc(ECMC_PLG_SAFETY_GRP_CNT, "${ECMC_PLG_SAFETY_GRP_CNT=0}+1", "%02d") + #- Load SS1 group records -dbLoadRecords("ss1.template","P=${ECMC_PREFIX},NAME=${NAME}") +dbLoadRecords("ecmcSS1Group.template","P=${ECMC_PREFIX},NAME=${NAME},ID=${ECMC_PLG_SAFETY_GRP_CNT},COUNT=${ECMC_PLG_SAFETY_GRP_CNT}") + diff --git a/startup.cmd b/startup.cmd index e4e9297..883eb19 100644 --- a/startup.cmd +++ b/startup.cmd @@ -24,3 +24,6 @@ epicsEnvSet(ECMC_PLUGIN_FILNAME,"$(ecmc_plugin_safety_DIR)/lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmc_plugin_safety.so") epicsEnvSet(ECMC_PLUGIN_CONFIG,"DBG_PRINT=1;") ecmcConfigOrDie "Cfg.LoadSafetyPlugin(${ECMC_PLUGIN_FILNAME},${ECMC_PLUGIN_CONFIG=""})" + +#- Load SS1 group records +dbLoadRecords("ecmcSS1Main.template","P=${ECMC_PREFIX}")