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
+
+
+
+ caLed
+ QWidget
+
+
+
+ caMultiLineString
+ QPlainTextEdit
+
+
+
+
+
+
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
+
+ 1
+
caLabel
QLabel
- caLed
+ caLineEdit
+ QLineEdit
+
+
+
+ caShellCommand
QWidget
-
+
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}")