TIA S5 zu S7 Tausch

red-shark

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ich bin Peter und leider keine S5 Leuchte.
Nun bin ich mit der Aufgabe konfrontiert eine S5 Programmcode in das TIA Portal zu übertragen.
Ich stolpere über folgende Codezeilen:

NETZWERK 3 FEHLER AUSWERTUNG

:L KF +200 Fehlermerkeranfang
:T MW 250
:L KF +210 Fehlermerkerende
:T MW 252
M002 :B MW 250
:L MW 0
:L KF +0
:><F
:SPB =M001
:L MW 250
:I 2
:T MW 250
:L MW 252
:<=F
:SPB =M002
:SPA =M003
Ich lese das als einen Sprungverteiler.
Meine Frage ist, wie kann ich den Befehl "B" in die TIA- Welt übersetzen?
Für Eure Hilfe vielen Dank
 
Ich empfehle nicht so etwas auf einer S7-1500 laufen zu lassen.

Es handelt sich hier nicht um einen Sprungverteiler, sondern um eine Überprüfung ob im MW200 - MW210 ein Fehlerbit gesetzt ist. Das B steht für Bearbeite und ist die indirekte Adressierung in der S5-Welt.

Da steht also sinngemäß L MW200, L MW202...
 
Meistens steckt hinter so etwas eine Sammelfehlermeldung. Kannst auch einfach an jeder Stelle wo ein Alarm generiert wird das Sammelfehlerbit setzen.
 
So eine Sequenz habe ich in SCL da. ich wollte halt nicht unbedingt den "alten Code" mit meinem vermischen.
aber seis drum. wat mut des mut bevor ich Stunden verbastel.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
     :L KF +200 Fehlermerkeranfang
     :T MW 250
     :L KF +210 Fehlermerkerende
     :T MW 252
M002 :B MW 250
     :L MW 0     // hier wird "indirekt" das MW gelesen, dessen Nr aktuell in MW 250 steht
     :L KF +0
     :><F
     :SPB =M001  // wurde ein Wert <>0 gelesen, wird die Schleife vorzeitig verlassen
     :L MW 250   // wurde 0 gelesen, wird hier die Schleife fortgesetzt
     :I 2        // und die aktuelle Nr in MW250 um 2 erhöht
     :T MW 250
     :L MW 252   // wenn die Nr nicht grösser ist als die Zahl in MW 252
     :<=F       
     :SPB =M002  // dann wird zum SchleifenAnfang M002 gesprungen
     :SPA =M003  // ansonsten zu M003
    
// Es werden also die MW 200 .. MW 210 abgefragt, bis ein Wert <>0 gefunden wird

// sinngemäss z.B.:
MW252 := 210 ;
FOR MW250 := 200 TO MW252 BY 2 DO
    IF MW(MW250) <> 0 THEN GOTO M001 ;
END_FOR ;
M003: ...
...
M001: ...
...
...
 
Zurück
Oben