EMCY Meldung resetieren

mauskopf
2017-12-28
2021-04-28
  • mauskopf - 2017-12-28

    Guten Abend,
    wie kann ich eine EMCY Meldung vom Can Open resetieren!
    Lg Peter

     
  • eschwellinger

    eschwellinger - 2017-12-29

    Hallo Peter,
    die kann man und muss man nicht resetten...
    das sind ja Meldungen vom Slave, entweder die verschwinden durch beheben des Fehlers im Slave... usw
    Aber resetten im Master ist nicht notwendig bzw gibt es nicht.
    Grüße
    Edwin

     
  • mauskopf - 2017-12-30

    Hallo Edwin,
    ich habe das Ganze noch mal geprüft.
    Und das Verhalten ist folgendes.
    Ich habe aus dem CanOPENexempel die Funktion "_" so um gebaut das das Enable Bit übergeben werden kann. Ich rufe diese Funktion im PLC Prg auf. Sobald einer meiner Slaves "1" EMCY Meldung auf den Bus legt erkennt diese Funktion ständig diesen Fehler. auch wenn der Fehler schon lange nicht mehr da ist.
    Das Einzige was hilft ist ein RESET des PI oder im Geräte Baum auf den Slave mit dem Fehler zu gehen und diesen zu bestätigen.
    Wie erreiche ich das ich nur einmal eine Meldung bekomme?

    Lg Peter

    IMG: emcy.PNG

    IMG: EMY.PNG

     
  • eschwellinger

    eschwellinger - 2017-12-30

    Hi,
    das mit dem reseten auf dem Slave in CODESYS macht nichts anderes als die Anzeige des Fehlers zurückzusetzen.
    Das setzt ja nichts im Slave zurück.

    In deinem Code zeigt es dir halt den letzten Emergency Fehler der angestanden ist.
    Aber wie gesagt zurücksetzen musst du diese nicht. Das kann/muss/darf der CANopen Master nicht.

    Grüße
    Edwin

     
  • mauskopf - 2017-12-30

    Wie kann ich einen Zähler einbauen um zu erkennen wie oft der Slave einen Fehler hatte.
    Danke Lg
    Peter

     
  • mauskopf - 2017-12-30

    Was ich vielleicht nicht erklärt habe, ich will nicht den Slave reservieren sondern nur die Nachricht auf dem Master damit ich die Heufigkeit feststellen kann.
    Lg

     
  • laruso - 2021-04-28

    So wie Ihr euch das vorstellt kann es nicht funktionieren!

    Erklärung: Ein kommender Fehler erzeugt über dessen positive Flanke eine EMCY Nachricht, die das Device an den Master schickt. Die Nachricht wird auch nur einmal geschickt, selbst wenn der Fehler noch anliegt oder schon behoben ist. Diese Nachtricht wird vom Master gespeichert und mit dem Funktionsblock CIA405.RECV_EMCY_DEV abgeholt.

    Hinweis: Es wird nicht der EMCY Fehler aus dem Device ausgelesen, sondern der letzte EMCY Fehler aus dem Master!

    Aus der Doku des Funktionsblocks: A received emergency is not cleared and it is delivered with each call of the function block until the device sends an emergency reset.

    Lösungsansatz: Also, entweder wird ein Weg gefunden die Information aus dem Device auszulesen, oder wie man ein "emergency reset" vom Device an den Master schickt.

    Darüber hinaus habe ich eine Frage:
    Der Master bekommt über die COB-ID "$NODEID+16#80" ja bereits mit, dass das Device einen EMCY Fehler auf dem Bus verschickt hatte. Diese Information muss irgendwo im Hintergrund ausgewertet werde, da sie ja im Log des Device (CODESYS IDE) zu sehen ist. Wie komme ich an diese (anscheinend schon vorliegende) Information, ohne nochmal den Funktionsblock "CIA405.RECV_EMCY_DEV" aufrufen zu müssen?
    (Hintergrund ist eine extrem optimierte Programmierung um Zykluszeit zu sparen)

     

Log in to post a comment.