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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Guten Abend,
wie kann ich eine EMCY Meldung vom Can Open resetieren!
Lg Peter
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
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
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
Wie kann ich einen Zähler einbauen um zu erkennen wie oft der Slave einen Fehler hatte.
Danke Lg
Peter
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
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)