TP177B: Wie Daten aus zwei Steuerungen lesen?

Mephisto

Level-1
Beiträge
242
Reaktionspunkte
12
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Mich quält wieder ein Problem.
Ich hab ein TP177B, welches über MPI mit zwei CPU315-2DP verbunden ist.
Ich möchte nun, dass sich das TP die Daten immer von CPU A holt. Wenn die CPU A auf Stop ist, soll sich das TP die Daten von CPU B holen.
in WIN CC Flexible gibts ja bei den Variablen für jede Variable den MUX. Mit dem sollte es ja gehen. Nur mein Problem:
Das TP177B kennt keine Scripts. Der MUX braucht ein Steuerbit. Ich kann aber nicht sagen, dass das Steuerbit in CPU A ist, da diese ja auch mal in Stop gehen kann.
Hat da jemand ne geniale Idee?

mfg mephisto
 
Bau dir doch ein Lebensbit in jeder CPU und schalte danach dann um, Wenn eine kein Lebensbit mehr hat. ZB mit dem Taktmerker oder so...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber ich kann das Lesebit nicht erkennen, weil ich das ja nur in einem Skript abfragen könnte. Da könnte ich von beiden Steuerungen ein Life Bit auswerten, und wenn eine Steuerung das Life Bit nicht mehr ändert, einen internen Merker umschalten. Der Schaltet dann den MUX.

Mein Problem: Das TP177B unterstützt keine SKRIPTS!

mfg roland
 
Meine erste (und ungeteste Idee, wäre, einen physikalisch nicht vorhandenen Ausgang in der CPU zu setzen und im TP abzufragen. Wenn die CPU in STOP geht, müsste der Ausgang auf 0 gehen.
 
Könnte dann klemmen wenn die Kommunikation abreist weil dann der Ausgang im TP auch nicht mehr aktualisiert wird. Imho ist es vorteilhaft wenn sich die beiden CPU´s gegenseitig überwachen und jede auch den Status der anderen dem TP zur verfügung stellt.
Aber wie das dann im Detail aussehen kann hab ich spontan keine Idee.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Könnte dann klemmen wenn die Kommunikation abreist weil dann der Ausgang im TP auch nicht mehr aktualisiert wird.
Möglich, davon war aber auch nicht die Rede. Es ging nur darum, wenn eine CPU in Stop ist und da müsste das funktionieren.
Der Verbindungsabbruch kann evtl. über die entsprechende Systemmeldung überwacht werden, allerdings habe ich das noch nie ausprobiert.
 
Meine erste (und ungeteste Idee, wäre, einen physikalisch nicht vorhandenen Ausgang in der CPU zu setzen und im TP abzufragen. Wenn die CPU in STOP geht, müsste der Ausgang auf 0 gehen.

Bau dir doch ein Lebensbit in jeder CPU und schalte danach dann um, Wenn eine kein Lebensbit mehr hat. ZB mit dem Taktmerker oder so...

So etwa meinte ich es doch mit dem Lebensbit. Wenn CPU A ok dann Irgend ne Variable = 1 oder was weiß ich. Wenn CPU A Stop dann irgend ne Variable = 0, das kann doch die CPU B übernehmen, da CPU A doch immer die aktuellen Daten senden soll und CPU B nur wenn CPU A in Stop ist, oder ?
 
Zuletzt bearbeitet:
... und dann mit dem Bit aus CPU B die Bilder für CPU A im Panel deaktivieren und die für B einblenden.

klingt vernünftig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn das Lebensbit aus der CPU kommt, deren Daten gerade verwendet werden, hätte es aber den Vorteil, dass über "wechsle Verbindung" von einer CPU direkt auf die andere umgestellt werden kann ohne zusätzlichen Projektierungsaufwand. D.h. keine doppelten Bilder, keine doppelten Variablen etc.

@Mephisto:
Willst Du CPU-Stop oder Kommunikationsabbruch überwachen? Bei CPU-Stop (ich nehme an, es geht um Deine SW-Redundanz) wäre es wahrscheinlich wirklich am einfachsten, ein Bit auf 1 zu überwachen, dass bei CPU-Stop auf 0 geht (evtl. mit einem Ausgang) und bei Wechsel auf 0 einfach die Verbindung auf die MPI-Adresse von der anderen CPU zu wechseln. Du müsstest dann nur noch aus jeder CPU die MPI-Adresse der jeweils anderen ans Panel schicken, so dass es weiß, wo es hinschalten soll.
 
Leider meldet sich Mephisto nicht.
Wahrscheinlich geht es um das hier:
http://www.sps-forum.de/showthread.php?t=49086
In dem Fall läuft das gleich Programm auf beiden CPUs gelichwertig ab, es ist also im Prinzip nicht notwendig zurückzuschalten. Sollte es doch gewünscht sein, ist es kein Problem, einen vernünftigen Watchdog zwischen den CPUs einzurichten, so dass CPU B mit einem Bit ans TP die Verbindung wieder zurückstellen kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Meine erste (und ungeteste Idee, wäre, einen physikalisch nicht vorhandenen Ausgang in der CPU zu setzen und im TP abzufragen. Wenn die CPU in STOP geht, müsste der Ausgang auf 0 gehen.

Das wird so leider nicht funktionieren, da der Ausgang bei CPU-Stop physikalisch zwar abgeschaltet wird, im Prozessabbild aber 1 bleibt.
Das PAA wird erst bei CPU-Anlauf zurückgesetzt.
 
Das wird so leider nicht funktionieren, da der Ausgang bei CPU-Stop physikalisch zwar abgeschaltet wird, im Prozessabbild aber 1 bleibt.
Das PAA wird erst bei CPU-Anlauf zurückgesetzt.
Wie gesagt: ungetestet. Ich wusste nur, dass nicht remanente Merker etc. bei CPU-STOP auf 1 bleiben, ich hätte aber nicht gedacht, dass das auch Ausgänge betrifft.
 
Die beiden CPU's können sich gegenseitig per Lebensbit überwachen.
Jede CPU meldet dann den Betriebszustand der jeweils Anderen dem Panel.
Ganz einfach eigentlich...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und wie wertest du das im Panel ohne Skripte aus?
Mit Rechnen und Grenzwertverletzung?

PS: Mir ist klar das jede CPU wissen kann welche aktiv ist. Nur wie bekommt das dann das Panel mit wenn die Aktive abraucht und keine Wertänderung mehr mitmacht.
 
Zuletzt bearbeitet:
Und wie wertest du das im Panel ohne Skripte aus?
Mit Rechnen und Grenzwertverletzung?

PS: Mir ist klar das jede CPU wissen kann welche aktiv ist. Nur wie bekommt das dann das Panel mit wenn die Aktive abraucht und keine Wertänderung mehr mitmacht.

Ich würde CPU A als "Master" laufen lassen und CPU B überwacht dieses.
Im normal Betrieb gibt CPU B einen 0 an Var_Leben (diese Var schaltet die MUX daten). 0 bedeutet Daten von CPU A.
Ist CPU B in Stop, nichts passiert, Daten von CPU A.
Ist CPU A in Stop, CPU B bekommt es über das Lebensbit mit und gibt Var_Leben eine 1 und schlatet somit die MUX Daten um.
Ist CPU A wieder am Start, kommt ne 0 in Var_Leben und alles wird gut.
Ich hoffe so könnte es gehen oder übersehe ich da etwas?
 
Ich würde CPU A als "Master" laufen lassen und CPU B überwacht dieses.
Im normal Betrieb gibt CPU B einen 0 an Var_Leben (diese Var schaltet die MUX daten). 0 bedeutet Daten von CPU A.
Ist CPU B in Stop, nichts passiert, Daten von CPU A.
Ist CPU A in Stop, CPU B bekommt es über das Lebensbit mit und gibt Var_Leben eine 1 und schlatet somit die MUX Daten um.
Ist CPU A wieder am Start, kommt ne 0 in Var_Leben und alles wird gut.
Ich hoffe so könnte es gehen oder übersehe ich da etwas?

Aber deine Variable liegt entweder in CPU A oder in CPU B. Und wenn A in Stop geht bleibt da der Wert unverändert.
 
Zurück
Oben