Safety Project CRC aus dem Safety Controller zur Laufzeit über PLC auslesen

Hi, ist es möglich über die PLC die “Safety Project CRC” aus dem Safety Controller zur Laufzeit auszulesen?

Hi!

Ja, das ist möglich - via AsIOAccRead bzw. EplSDORead (je nach SafeLogic). Bei einer X20SL8100 liegt es z.B. am Register 0x2000:0x08.
https://help.br-automation.com/#/en/4/hardware%2Fx20sl81xx%2Fkanalliste_der_safelogic.html

SG
Manfred

1 Like

Ah super! Danke dir :slight_smile: ist für eine X20SLX910 mit dem Baustein wahrscheinlich auch entsprechend umsetzbar, oder?

VG
Dominik

Hi,

da die SLX direkt am X2X Bus sitzt, kann die CRC der Safety Applikation mit AsIOAccRead() gelesen werden am Kanal “ApplSDcrc”.
Hier noch der Link zu der Kanalbeschreibung der SLX:
https://help.br-automation.com/#/en/4/hardware/x20slxx1x/kanalliste.html

Grüße, Alex

1 Like

Ah ok danke, das ist sehr praktisch :slight_smile: Dieser Weg geht bei einer X20SL8100 über Powerlink nicht? Da müsste ich direkt auf die Register zugreifen? Ideal wäre eine Variante die direkt beides abdeckt. Aber zur Not halt über eine Fallunterscheidung.

Hi,

ja, wenn beide Varianten abgedeckt werden sollen dann ist es nur über eine Fallunterscheidung möglich, da die Kommunikation in diesem Fall über 2 unterschiedliche Wege abgewickelt werden muss.
Im Fall “Anschluss am X2X” kann direkt auf die Register des Moduls zugegriffen werden (über AsIoAcc), während im Fall “Anschluss am Powerlink” über über ein Netzwerk-SDO auf das Object Dictionary des Powerlink Slaves zugegriffen werden muss (per EplSDORead), der sozusagen die “Sammelstelle der Register in Richtung X2X” darstellt und die Informationen dann intern selbst verwaltet / verteilt.

Grüße Alex

2 Likes

Hi!

Genau so habe ich es auch ausgeführt. In der INIT wird bestimmt ob es sich um eine X20SLX handelt oder um eine “vollwertige” SafeLogic und im zyklischen Task werden dann entweder die AsIOAcc oder die EplSDORead Funktionsblöcke verwendet.

SG
Manfred

2 Likes

Ich hätte noch eine kurze Verständnisfrage zum “EplSDORead” Baustein. Ich habe über Powerlink einen Safety Controller X20SL8101 mit der Standard PLC verbunden. Dann würde ich also über “pDevice” die Device Adresse übergeben (in meinem Fall IF3.ST1). Was bedeutet in dem Fall der input “node”? Wäre dieser hier einfach 0 ?

EplSDORead_Test(enable := TRUE ,
pDevice :=ADR(‘IF3.ST1’) , node := 0 ,
index := 16#2000 , subindex := 16#08,
pData := ADR(crcDataTest) ,
datalen := SIZEOF(crcDataTest)
);

Danke schonmal! :slight_smile:

Sorry, habe gerade die Node ID in der HW Config gefunden. Hat sich damit erledigt :slight_smile:

Hi,

würde den “ich muss über die Hardware nichts wissen”-Vorschlag noch gerne bringen, da dieser mMn der flexiblere ist:

mittels mappSafety
https://help.br-automation.com/#/en/4/safety%2Fmapp_safety%2Fprogramming%2Fsafedomain_lib%2Fsfdomain%2Ffbks%2Fsfdomaininfo%2Ffb_sfdomaininfo.html

mittels AsSafety sollte es auch gehen, Online gibt es dazu aber leider die Hilfe nicht mehr und offline habe ich diese nicht installiert

Hi Michael,

das hatte ich auch schon mal gesehen. Leider nutzen wir mapp Safety momentan noch nicht, deswegen kommt der Ansatz erstmal nicht in Frage. Ist natürlich nen bisschen sauberer und robuster gegenüber Änderungen in der HW. Ich denke ich werde erstmal den Ansatz über EplSDORead bzw. AsIOAcc ausprobieren.

Sagte ja, alternativ sollte AsSafety (für Safety Release) auch so etwas zur Verfügung stellen, aber solange ihr eine (für euch passende) Lösung habt, passt das ja :slightly_smiling_face: