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!!!!

This plugin is designed for interfacing safety systems to ecmc motion axes.

Loading of plugin

TODO!!

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 alowwing a controlled rampdown. This allows moving axes to ramp down and disable before the power to the axis is interrupted. This will result in less harware failures and less error messages in the system. Basically the safey system is interfaced with binary signals (ethercat I/O). If, for instance, an emergency stop button is pressed the safety system imiedietlly commands 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 telling 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 configuration is made by two commands:

  1. ecmcAddSS1SafetyGroup()
  2. ecmcAddAxisToSafetyGroup()

ecmcAddSS1SafetyGroup()

The ecmcAddSS1SafetyGroup() adds a SS1 safety group. The command takes the following parameters:

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.
          <time_delay_ms>            : Time delay of STO [ms].

Each group is interfacing the safety system through the same I/O (ethercat). Axes that needs the SS1 fucntionality can be added to this group with the ecmcAddAxisToSafetyGroup() command.

ecmcAddAxisToSafetyGroup()

With the "ecmcAddAxisToSafetyGroup()" command an ecmc axis can be added to a safety group. All axes linked to a certain group will act on command from the safety system (initiation of velocity rampdown).

The ecmcAddAxisToSafetyGroup() command takes the following parameters:

ecmcAddAxisToSafetyGroup(<group_name>, <axis_index>, <velo_limit>, <filter_time>)
          <name>                     : Name of safety group to add axis to.
          <Axis id>                  : Axis index to add (ecmc axis index).
          <velo limit>               : Axis standstill velo limit [unit of axis].
          <filter_time>              : NOT USED (for future implemenation). Time for axis to be below velo limit [ms].

Note: The "filter_time" parameter is not used right now. As soon as the axis is below teh velo_limit it will be considered to stand still and will then be disabled.

Note: The plugin checks the trajectory generated velocity setpoint and not the actual velocity.

Example of startup script:

Plugin needs to be loaded..

ecmcAddSS1SafetyGroup("first","ec${ECMC_EC_MASTER_ID}.s${DRV_SLAVE}.binaryInput01.0","ec${ECMC_EC_MASTER_ID}.s${DRV_SLAVE}.binaryOutput01.1",500)
ecmcAddAxisToSafetyGroup("first",1,1,0)
ecmcAddAxisToSafetyGroup("first",2,10,0)
ecmcAddAxisToSafetyGroup("first",3,0,0)
....
Description
No description provided
Readme 902 KiB
Languages
C++ 74.2%
C 12.9%
Batchfile 9.4%
Makefile 3.5%