cleanup
This commit is contained in:
10
README.md
10
README.md
@@ -3,10 +3,12 @@ ecmc_plugin_safety
|
||||
|
||||
IMPORTANT: This plugin or ecmc does NOT offer any safety certified functionality. This plugin only offers a standard interface to an external safety system / safety PLC / safety relay!!!!
|
||||
|
||||
This plugin is designed for interfacing safety systems to ecmc motion axes.
|
||||
This plugin is designed for interfacing safety systems, see example in below picture, to ecmc motion axes.
|
||||
|
||||

|
||||
|
||||
# SS1-t
|
||||
The plugin supports stopping axes according to a concept described as SS1-t, see blow picture. In SS1-t the STO (or removal of power) from the axes are delayed for a certain defined time allowing a controlled rampdown of velocity. The rampdown of the axis is handled by the non-safe motion controller while the removal of power (or triggering of STO) after the time delay is handled by a safetry system. This makes it possible to stop moving axes in a controlled way and disable the drives before the power is interrupted (or STO triggered). This will result in a safer system and less harware failures and error messages.
|
||||
The plugin supports stopping axes according to a concept described as SS1-t, see below picture. In SS1-t the STO (or removal of power) from the axes are delayed for a certain defined time allowing a controlled rampdown of velocity. The rampdown of the axis is handled by the non-safe motion controller while the removal of power (or triggering of STO) after the time delay is handled by a safety system, . This makes it possible to stop moving axes in a controlled way and disable the drives before the power is interrupted (or STO triggered). This will result in a safer system and less harware failures and error messages.
|
||||
|
||||
After the time delay expires, hopfully all axes are at standstill and power is already removed from the drives.
|
||||
|
||||
@@ -28,8 +30,8 @@ The ecmcAddSS1SafetyGroup() adds a SS1 safety group. The command takes the follo
|
||||
```
|
||||
ecmcAddSS1SafetyGroup(<name>, <ec_rampdown_cmd>, <ec_standstill_status>,<time_delay_ms>)
|
||||
<name> : Name of group.
|
||||
<ec_rampdown_cmd> : Ethercat entry input for rampdown cmd.
|
||||
<ec_standstill_status> : Ethercat entry output for group standstill status.
|
||||
<ec_rampdown> : Ethercat entry input for rampdown cmd.
|
||||
<ec_axes_at_rest> : Ethercat entry output for group standstill status.
|
||||
<time_delay_ms> : Time delay of STO [ms].
|
||||
```
|
||||
Each group is interfacing the safety system through the same I/O (ethercat).
|
||||
|
||||
BIN
docs/safetyplc.png
Normal file
BIN
docs/safetyplc.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 174 KiB |
@@ -16,18 +16,18 @@
|
||||
#-
|
||||
#- Arguments:
|
||||
#- NAME : Name of safety group
|
||||
#- EC_RAMP_DOWN_CMD : Ethercat entry for rampd down command (cmd from safety PLC/system)
|
||||
#- EC_STANDSTILL_STAT : Ethercat entry for axes at standstill status (feedback to safety PLC/system)
|
||||
#- EC_RAMP_DOWN : Ethercat entry for rampd down command (cmd from safety PLC/system)
|
||||
#- EC_AXES_STANDSTILL : Ethercat entry for axes at standstill status (feedback to safety PLC/system)
|
||||
#- DELAY_MS : Time between rampdown command and STO
|
||||
#-
|
||||
#################################################################################
|
||||
|
||||
#- ecmcAddSS1SafetyGroup(<name>, <ec_rampdown_cmd>, <ec_standstill_status>,<time_delay_ms>)
|
||||
#- <name> : Name of group.
|
||||
#- <ec_rampdown_cmd> : Ethercat entry input for rampdown cmd.
|
||||
#- <ec_standstill_status> : Ethercat entry output for group standstill status.
|
||||
#- <ec_rampdown> : Ethercat entry input for rampdown cmd.
|
||||
#- <ec_standstill> : Ethercat entry output for group standstill status.
|
||||
#- <time_delay_ms> : Time delay of STO [ms].
|
||||
ecmcAddSS1SafetyGroup("${NAME}","${EC_RAMP_DOWN_CMD}","${EC_STANDSTILL_STAT}",${DELAY_MS=0})
|
||||
ecmcAddSS1SafetyGroup("${NAME}","${EC_RAMP_DOWN}","${EC_AXES_STANDSTILL}",${DELAY_MS=0})
|
||||
|
||||
#- Load SS1 group records
|
||||
dbLoadRecords("ss1.template","P=${ECMC_PREFIX},NAME=${NAME}")
|
||||
|
||||
@@ -56,7 +56,7 @@ int createSafetyGroup(const char *name,
|
||||
// ensure group does not already exist
|
||||
ecmcSS1SafetyGroup* safetyGroup = getGroupFromName(name);
|
||||
if( safetyGroup ) {
|
||||
printf("Safety: Error, group %s already defined. Plugin will unload.\n");
|
||||
printf("Safety: Error, group %s already defined. Plugin will unload.\n",name);
|
||||
throw std::runtime_error( "Safety: Error, group already defined.");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user