Lebensmeldung von der CPU

Outrider

Level-1
Beiträge
745
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Programmierfreunde,
eine Frage.
Ich soll über einen DP/DP Koppler an eine andere Maschine ein Toggle-Bit übergeben.
Das soll etwa ein Lebenszeichen meiner CPU sein dass alles OK ist

Wie könnte man das realisieren, gibt es da ein SFC, SFB oder eine andere Möglichkeit zu testen ob sich die CPU im Run-Betrieb befindet.

Danke im Vorraus für Infos
Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
also ich mach das auch über den taktmerker.
das ist einfach simpel und schnell geproggt.

z.b.

cpu1
Code:
u m 5.3 //taktmerker
= a 100.0 //geht auf e100.0 der cpu2
cpu2
Code:
u e 100.0 //=a100.0 der cpu1
= a 100.0 //geht auf e100.0 der cpu1
auswerten
Code:
un e 100.0
l s5t#500ms //zeit ist natürlich abhängig vom taktmerker
se t100
u t100
= m100.0 //störung lebensbit
 
also ich mach das auch über den taktmerker.
das ist einfach simpel und schnell geproggt.
Ich würde das aus Mißtrauen mit einem Merker oder Ausgang machen, den ich in jedem OB1-Zyklus invertiere.
Code:
UN A 100.0
= A 100.0 //geht auf e100.0 der cpu2
Die Taktmerker werden ja von der Firmware verwaltet. Ist dokumentiert, daß sie im STOP nicht weiterlaufen? Ist man sciher, daß das für jede CPU, Firmware und Update gilt? So ist es sicher und kostet weniger Zeit als die Doku zu lesen...

Ich würde in CPU2 auswerten, daß das Lebenszeichen von CPU1 kommt UND UMGEKEHRT.
Nicht so:
Code:
un e 100.0
l s5t#500ms //zeit ist natürlich abhängig vom taktmerker
se t100
u t100
= m100.0 //störung lebensbit
weil ein ewig gesetzter e100.0 hier als gut erkannt würde, sondern so:
Code:
U E 100.0
U M 100.0
O(
UN E 100.0
UN M100.0
)   // Diese Bedingung ist bei jeder positiven und jeder negativen Flanke unwahr. 
L S5t#500ms //zeit ist natürlich abhängig vom taktmerker
SE T100
U T100
= M100.1 //störung lebensbit

U E 100.0
U M 100.0 // für Flankenauswertung
Dadurch wird garantiert, daß das Lebensbit WECHSELN muß. Das mache ich auch so, wenn ich andere periodische Vorgänge (z.B. Drehzahlüberwachung per Ini) überwachen muß.
 
hähhh ???
einen getrunken ?

selbst wenn der taktmerker (was ich jedoch ausschliesse) weiterlaufen würde, wäre der ausgang 0.
und wieso sollte der e100.0 1 signal behalten? entweder das pae wird gelesen, dann läuft die cpu oder sie ist im stop. dann geht sowieso nix mehr und auswerten bei gestoppter cpu ist nich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
selbst wenn der taktmerker (was ich jedoch ausschliesse) weiterlaufen würde, wäre der ausgang 0.
Zunächst einmal kenne ich es so, daß man bei manchen/vielen/allen DP-Slaves wählen kann, ob bei Busausfall die letzten Daten gehalten werden oder 0 ausgegeben wird. Zum DP-Koppler meint:
http://support.automation.siemens.c...objaction=csview&extranet=standard&viewreg=WW
Siemens Support-Seite schrieb:
bei Ausfall einer Seite werden die Ausgänge der anderen Seite auf den letzten Wert gehalten

und wieso sollte der e100.0 1 signal behalten?
1. Weil CPU2 auf diesem Eingang den gehaltenen Ausgang von CPU1 "sieht"
2. Weil je nach Projektierung bei DP-Ausfall zwischen Koppler und CPU2 das PAE von CPU2 wiederum die letzten Werte halten könnte.
entweder das pae wird gelesen, dann läuft die cpu oder sie ist im stop. dann geht sowieso nix mehr und auswerten bei gestoppter cpu ist nich.
Weil Auswertung im Stop nicht ist, wollte ich ja CPU1 das Lebenszeichen von 2 und 2 das von 1 auswerten lassen.

Zuletzt ist die Methode mit dem Wechselnden Bit und PRÜFUNG AUF WECHSEL sehr allgemein anwendbar und robust:
1. Jemand benutzt nicht PAA/PAE für den DP-Koppler, sondern schreibt diesen mit SFC15. Der letzte Schreibzugriff setzt das Bit. Danach Stop. Der Eingang der anderen CPU bliebe 1.
2. Jemand benutzt statt des DP/DP-Kopplers GET über MPI,Ethernet etc-Verbindung. In diesem Fall holt sich die laufende CPU einfach die Daten aus dem Speicher der anderen, egal ob diese läuft. Es kann eine Dauer "1" gelesen werden. Hier kann es auch interessant werden, ob Taktmerker im Stop weiterlaufen.
3. Jemand benutzt eine Verbindung über Drähte. In diesem Fall kann einer nach 24V kurzgeschlossen sein.
 
Das Problem ist nur, lieber Zottel, dass die letzte Zeile deines Codes einen Fehler enthält:

eben NICHT
Code:
U E 100.0
U M 100.0 // für Flankenauswertung
sondern

Code:
U E 100.0
= M 100.0 // für Flankenauswertung
 
Zurück
Oben