Currently we only support the Beckhoff Safety Controllers, but others should be possible. Our responsibility is managing the FSoE Black Channel to ensure the Safety Master (Safety MainDevice) can communicate with the Safety Slaves (Safety SubDevices).
The work we’ve done should translate to other Safety devices, but we would likely need to make tweaks based on how they were implemented. Does your SL3000 (or other MainDevice) and Safety Application need more than Safety control and status bits? How do we configure the generic Safety MainDevice as an EtherCAT node to reflect your specific Safety Program? (Likely simple PDO manipulation but we would need to look into it.) How does programming the Safety MainDevice with your Safety application work?
Any new Safety MainDevice will take some work and a new release, but is very doable.
Much appreciated on the explanation for FSoE in RMP. Recently we were able to test it out with the Omron SL3300 Safety IO Controller acting as a Safety IO controller. It is paired together with Omron’s EtherCAT coupler (NX-ECC201) which acts as the IO node with two other IO modules slotted in the coupler as well (Safety Inputs & Safety Outputs).
The EtherCAT IO Coupler topology mapped in MDP.xml is as follows:
We’ve created a Safety Program and uploaded it into the Omron SL3300 Safety IO controller with the variables/parameters used to map the Safety.xml as shown below:
<Safety>
<Interactions>
<!-- Master Controls: Map to 'Exposed Variables' in Sysmac Studio (Objects 6002h/7002h) -->
<!-- subIndex values must match the mapped standard PDO indices for SL3300 -->
<Run subIndex="1">R_Run</Run>
<ErrAck subIndex="3">R_ErrAck</ErrAck>
<Reset subIndex="2">R_Reset</Reset>
<SafetyInputs>
<!-- Safety CPU Status monitoring (Object 6004h:01) -->
<!-- Bit 0: Normal Operating; Bit 3: Safety Master Connection Status -->
<SafetyInput subIndex="0">Normal_Operating_Status</SafetyInput>
<SafetyInput subIndex="3">FSoE_Master_Connection_Established</SafetyInput>
</SafetyInputs>
</Interactions>
<CopyInfos>
<!-- SUBDEVICE 1: NX-SIH400 (Safety Input) -->
<!-- FSoE Container: Master (SL3300) -> Input Unit (SIH400) -->
<CopyInfo Tx="Tx">
<SrcBitOffs>0</SrcBitOffs>
<!-- SL3300 Out Data Set 1 (Unit2 Instance) -->
<DstBitOffs>128</DstBitOffs>
<!-- SIH400 RxPDO Black Channel -->
<BitSize>48</BitSize>
</CopyInfo>
<!-- FSoE Container: Input Unit (SIH400) -> Master (SL3300) -->
<CopyInfo>
<SrcBitOffs>384</SrcBitOffs>
<!-- SIH400 TxPDO Black Channel -->
<DstBitOffs>272</DstBitOffs>
<!-- SL3300 In Data Set 1 (Unit2 Instance) -->
<BitSize>48</BitSize>
</CopyInfo>
<!-- SUBDEVICE 2: NX-SOD400 (Safety Output) -->
<!-- FSoE Container: Master (SL3300) -> Output Unit (SOD400) -->
<CopyInfo Tx="Tx">
<SrcBitOffs>48</SrcBitOffs>
<!-- SL3300 Out Data Set 1 (Unit3 Instance) -->
<DstBitOffs>192</DstBitOffs>
<!-- SOD400 RxPDO Black Channel -->
<BitSize>48</BitSize>
</CopyInfo>
<!-- FSoE Container: Output Unit (SOD400) -> Master (SL3300) -->
<CopyInfo>
<SrcBitOffs>448</SrcBitOffs>
<!-- SOD400 TxPDO Black Channel -->
<DstBitOffs>320</DstBitOffs>
<!-- SL3300 In Data Set 1 (Unit3 Instance) -->
<BitSize>48</BitSize>
</CopyInfo>
</CopyInfos>
</Safety>
However, RMP is still unable to recognize the Omron SL3300 controller as a Safety MainDevice as the log message shows Safety.xml found but no supported Safety MainDevice detected.
May I know if we’re missing out some steps/sequence for FSoE or do we need to map the safety controller into RMP? (as we know currently only Beckhoff Safety controllers are supported) or is our Safety.xml wrong in configuration?
Your help and guidance is very much appreciated. Thank you!
At this time, RMP’s FSoE support only recognizes the supported Beckhoff TwinSAFE devices as Safety MainDevices. An Omron SL3300 will not be detected as a supported Safety MainDevice just by adding it to the EtherCAT topology or by providing a Safety.xml file.
The message:
Safety.xml found but no supported Safety MainDevice detected
means RMP found the Safety.xml file, but the discovered EtherCAT network did not contain one of the currently supported/recognized safety controllers.
Safety.xml is used by RMP to describe the FSoE black-channel copy offsets and safety interaction/status bits after a supported Safety MainDevice has been detected. It does not by itself add support for a new safety controller family.
Supporting the Omron SL3300 requires adding the desired safety controller’s hardware identifiers to the RapidCode library, along with validation that the controller’s PDO layout and FSoE black-channel mapping match RMP’s assumptions. We will need the EtherCAT hardware identifiers for the safety controller they intend to use, typically the vendor ID and product code reported by the device.
@jacob will evaluate the rest of their configuration tomorrow.
As mentioned, RMP currently supports Beckhoff FSoE Safety Controllers only. In your Omron case, the immediate blocker is that RMP does not currently recognize the SL3300 as a supported Safety MainDevice, so Safety.xml alone will not enable FSoE.
The two main configurations are running the FSoE Black Channel (CopyInfos section) and setting up the Safety Controller to match your Safety program (Interactions section). The first is the most important and simple to resolve. The second is more complicated as we aren’t familiar with the Omron controller. I think we can resolve it with an ESI customized to your system.
I’ll follow up with an email to you so we can work out the details.