diff --git a/README.md b/README.md index 05737b2..8ecc879 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,22 @@ ecmc_plugin_safety ====== -IMPORTANT: This plugin or ecmc does NOT offer any safety functionality. This plugin only offers a standard interface to an external safety system / safety PLC / safety relay!!!! +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. -# Loading of plugin +# 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. -Loading of the plugin is made by require: -``` -# Load safety plugin -require ecmc_plugin_safety -``` + After the time delay expires, hopfully all axes are at standstill and power is already removed from the drives. -# SS1 -The plugin supports stopping axes accoring to a concept described as SS1. In SS1 the STO (or removal of power) from the axes are delayed for a certain time allowing a controlled rampdown. This makes it possible to stop moving axes in a controlled way and disable of drives before the power is interrupted (or STO triggered). This will result in a safer system and less harware failures and error messages. -Basically the safey system is interfaced with binary signals (ethercat I/O). If, for instance, an emergency stop button is pressed the safety system immediately commands this plugin to rampdown velocity of axes (that a configured to stop). When all axes, that are configured to rampdown, have stopped then this plugin will disable the axes and set an ethercat output informing the safety system that the axes are standstill. After a certain timout the safety system will make sure power is removed from the motion axes by STO or removing power. The removal of power or triggering of STO will made regardless if the axes are at rest or not. A reset of the safety system, allowing power to the drives, will only be possible once the safety system gets a confirmation that all axes are at rest. +![SS1-t](docs/SS1-t.png) + +## Interface +Basically the safey system is interfaced with two binary signals (ethercat I/O): +* Ramp down command (from safety system to ecmc) +* Axis stand still status (to safety system from ecmc) + If, for instance, an safety event is triggerd by the safety system, it will immediately command this plugin to rampdown velocity of all axes (that a configured to stop). When all axes, that are configured to rampdown, have stopped then this plugin will disable the axes and set an ethercat output informing the safety system that the axes are standstill. After a certain timout the safety system will make sure power is removed from the motion axes by triggering an STO or removing power. The removal of power or triggering of STO will made regardless if the axes are at rest or not. A reset of the safety system, allowing power to the drives, will only be possible once the safety system gets a confirmation that all axes are at rest. The configuration is made by two commands: 1. ecmcAddSS1SafetyGroup() diff --git a/docs/SS1-t.png b/docs/SS1-t.png new file mode 100644 index 0000000..2244164 Binary files /dev/null and b/docs/SS1-t.png differ diff --git a/src/ecmcSafetyPlgWrap.cpp b/src/ecmcSafetyPlgWrap.cpp index ff9d4e3..d93b001 100644 --- a/src/ecmcSafetyPlgWrap.cpp +++ b/src/ecmcSafetyPlgWrap.cpp @@ -48,7 +48,6 @@ ecmcSS1SafetyGroup* getGroupFromName(const char *name) { return NULL; } - int createSafetyGroup(const char *name, const char *ec_rampdown_cmd, const char *ec_standstill_status,