# Watchdog Fehler von Backhoff Safety



## msauerpb (24 September 2019)

Hallo zusammen,

ich weiss jetzt nicht ob ich hier richtig bin mit meinem Problem, aber vielleicht könnt ihr mir trotzdem helfen. 

Seit kurzen bekomme ich in meinem TC 3 Projekt von der Safety Watchdog Fehler:


```
Error    132    24.09.2019 14:21:37 071 ms | '(EL6910)': (0x2085) The FSoE-Watchdog of the 1. connection has been expired in state DATA        
Error    134    24.09.2019 14:21:37 969 ms | '(EL6910)': (0x2085) The FSoE-Watchdog of the 3. connection has been expired in state DATA
```

An meinem Safety Projekt habe ich nichts geändert. Ich habe auch schon die Klemmen Konfig neu eingelesen und das Safety Projekt neu aufgespielt, die Fehler kommen aber trotzdem noch.

Hat einer eine Ahnung, wie ich das Problem beheben kann?

Danke für Eure Hilfe.

gruss
martin


----------



## MasterOhh (24 September 2019)

Sind die Klemmen im selben EtherCAT Strang wie die EL6910? Oder sind sie über einen anderen Feldbus angekoppelt? Gehen die Fehler weg, wenn du die Watchdog Zeit mal höher setzt?


----------



## msauerpb (25 September 2019)

Hi,

mir ist aufgefallen, dass der Fehler nur dann auftritt sobald ich über einen ADS Write eine andere Slave Adresse in die Profibus Slave Klemme EL6731-0010 schreibe:


```
CASE _State OF
    0: ;
   
    1:
        _WriteSlaveAdr              := TRUE;
        _State                      := 2;
    
    2:
        _WriteSlaveAdr              := FALSE;
        _State                      := 3;
        
    3: 
        _ExecuteEc                  := TRUE;
        _StateEc                    := EC_DEVICE_STATE_INIT;
        _WriteSlaveAdr              := FALSE;
        _State                      := 4;
    
    4:
        _ExecuteEc                  := FALSE;
        IF (_BusyEc) THEN
            _State                  := 4;
        ELSE
            _State                  := 5;
		END_IF


    5:
        _ExecuteEc                  := TRUE;
        _StateEc                    := EC_DEVICE_STATE_OP;
        _State                      := 6;
    
    6:
        _ExecuteEc                  := FALSE;
        IF (_BusyEc) THEN
            _State                  := 6;
        ELSE
            _State                  := 0;
		END_IF


ELSE
    _State                          := 0;
END_CASE


_fbEcSetSlaveState  (sNetId     := EcMaster_AdsAdres.sNetId,
                     nSlaveAddr := EL6731_0010.SlaveAddr.port,
                     bExecute   := _ExecuteEc,
                     tTimeOut   := T#10S,
                     reqState   := _StateEc,
                     bBusy      => _BusyEc,
                     bError     => _ErrorEc,
                     nErrId     => _ErrorIdEc,
                     currState  => );
                     


_DataPbAdressWrite[2]               := stPERS.SET_FIELDBUS.PbSlaveAdr;
// ADSWRITE mit NETID=NetId der EL6731-0010, PPORT=200, IDXGRP=16#F480, IDXOFFS=0, LEN=4,DATA[0]=16#45,DATA[1]=16#23,DATA[2]=Stationsadresse,DATA[3]=0, wird von der aktuellen Version V00.75 unterstützt
_fbPbAdressWrite(   NETID   := EL6731_0010_AdsAdres.sNetId,
                    PORT    := 200,
                    IDXGRP  := 16#F480,
                    IDXOFFS := 0,
                    LEN     := SIZEOF(_DataPbAdressWrite),
                    SRCADDR := ADR(_DataPbAdressWrite),
                    WRITE   := _WriteSlaveAdr,
                    TMOUT   := T#5S,
                    ERR     => _ErrorWriteSlaveAdr,
                    ERRID   => _ErrorIdWriteSlaveAdr);
```

Alle Klemmen sind in der selben Sync Unit. Hat das was mit dem wechseln in den Init-State der EL6731 zu tun?

gruss
martin


----------



## Guga (26 September 2019)

Aber natürlich.
Der Feldbus strukturiert sich in TElegramme und dort dann in Datagramme.
Ein Datagramm kann Daten von mehreren Klemmen enthalten. Die Fehlerkorrektur/Bewertung passiert aber nur auf Datagramm-Ebene. Sozusagen:
Ein Korb mit einem faulen EI -> Korb wird weggeschmissen -> kein Datenaustausch -> Watchdog haut rein.
D.h. du musst über Sync-Units deine Datagramme umstrukturieren sodass deine Safty-Teilnehmer nicht von z.B. EL6731 beeinflusst wird.

Guga


----------



## msauerpb (26 September 2019)

Danke Dir. 
Hat funktioniert.


----------

