Step 7 2x Pointer in einer Schleife ?

spark2001

Level-2
Beiträge
16
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

bräuchte mal eure Hilfe.

Gibt es eine Möglichkeit, in einer Schleife, 2 unterschiedliche Pointer zu verwenden ?
Oder kann ich im S7 Classic auch auf den Index vom Array schauen ? Und nicht auf die Adresse ?
Hardware ist eine 319F. Simatic Manager 5.6

Mein Ziel ist:
Zwei Arrays parallel zu durchsuchen.
Das 1. Array besteht aus X Doppelwörtern
Das 2. Array aus X Integer.

Nun möchte ich das erste Array durchsuchen und mit einem Wert vergleichen,
bei einem Treffer möchte ich den Inhalt aus dem entsprechenden 2. Array auslesen.

Also 1. Array[3] = Inhalt 2. Array[3] so zu sagen.

Mein Problem was ich gerade habe, wie bekomme ich 2 Pointer in einer Schleife ?
oder wie kann ich den ersten Pointer umrechnen das ich den evtl. nutzen kann.

Mein Programm sieht momentan so aus:

NOP 0
L W#16#0
T MW100 // Hier nulle ich den Inhalt falls keine Übereinstimmung vorhanden.
L P#0.0
LAR1
L 16
M011: T MW 357
AUF DB1234 // Datenbaustein der durchsucht werden soll
U(
L DBD [AR1,P#34.0]
L DB1234.DBD 24 // Wett auf den geprüft bzw. Verglichen werden soll
)
==D
SPBN ende
L W#16#101A // Hier nun mein Problem. Anstelle des Festwertes soll der Inhalt aus dem 2. Array stehen.
T MW100

ende: +AR1 P#4.0
L MW 357
LOOP M011

Hat jemand einen Gedankenanstoß für mich ?

SCL darf nicht genutzt werden. Aber gibt es im AWL auch die Möglichkeit auf den INDEX vom Array zu schauen ?
Könnte ich über den Schleifen Zähler, MW357, gehen ?

MFG

Spsrk2001
 
MW357 hört sich ziemlich verdächtig an.
Warum ? gut ein Byte hätte auch ausgereicht.

Kunde bin ich so gesehen selber :).
Wie gesagt SCL ist nicht ohne weiteres Möglich, da hier erst eine Abnahme nach unserem Standard erfolgen muss.

Nach jetzigen Stand sind es auch nur 11 Vergleiche. Die werden dann ohne Schleife gemacht und dann auch in FUP.

Ist eher ein Projekt für mich selber.
 
ich würde dem Rat der Anderen folgen und es in SCL machen - durch den AWL-Kram steigt irgendwann niemand mehr durch ...
(und der SCL-Code ist dann auch übersichtlich und funktioniert auch gleich)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie gesagt SCL ist nicht ohne weiteres Möglich, da hier erst eine Abnahme nach unserem Standard erfolgen muss.
Dann drucke einmal den SCL Code und den AWL Code aus und lege die nebeneinander.
Dann sollte die Abnahme doch recht eindeutig durchführbar sein.
Kauderwelsch gegen lesbaren, kurzen und kompakten Code der sich bei Änderungen an der DB-Struktur durch die symbolische Programmierung dann auch per Übersetzen selbst an die geänderte Struktur anpasst.
 
Gibt es eine Möglichkeit, in einer Schleife, 2 unterschiedliche Pointer zu verwenden ?
man kann so viele verschiedene Pointer verwenden wie man will, man muss sich halt nur selber um das Weiterstellen oder Berechnen auf die korrekten Adressen kümmern

Oder kann ich im S7 Classic auch auf den Index vom Array schauen ? Und nicht auf die Adresse ?
S7 Classic kann nur in SCL direkt mit Array-Index rechnen

MW357 hört sich ziemlich verdächtig an.
Warum ? gut ein Byte hätte auch ausgereicht.
eine Word-Variable an einer ungeraden Adresse hört sich verdächtig nach undurchdachter/versehentlicher Überlappung mit anderen Variablen an
 
Du kannst auch mal hier nachlesen, PN/DP zeigt das hier ganz gut.

 
Zuviel Werbung?
-> Hier kostenlos registrieren
eine Word-Variable an einer ungeraden Adresse hört sich verdächtig nach undurchdachter/versehentlicher Überlappung mit anderen Variablen an
Ach so, nein, ich Teste das alles im PLC SIM und da bin ich einfach so über die Tastatur drüber.

Das mag ja alles so sein, aber auf die Vorgaben habe ich keinen Einfluss. Bin "nur" Instandhalter. Unserer Programmiertätigkeiten, wie Fähigkeiten halten sich da in Grenzen. Ich wollte schauen ob ich es mit einer Schleife lösen kann ohne 11x die "gleiche" FUP Anweisung zu programmieren.
Zumal sich die Anzahl zum Glück auf 11x verringert hat.
Zuvor waren es deutlich mehr.
 
naja ... unabhängig davon ob du "nur" Instandhalter bist (warum übrigens NUR ?) - wenn euer Programmier-Leitfaden sich gegen lesbaren Code stellt dann ist derjenige, der sich das überlegt hat extrem rückständig ... und bedenke bitte : wer muss das Ganze am Ende denn ausbaden ? Doch wohl die Instandhaltung ... also sollten solche Vorgaben auch von dort kommen ... (so habe ich das jedenfalls immer gehandhabt)
 
Für heutige Zeit ist es bestimmt rückständig.
Aber ist halt so, hatte auch evtl. irgendwann seine Gründe.
Haben seit letztem Jahr nun auch Anlagen mit TIA. Behaupte aber mal das SCL für die meisten(bei uns) genauso schwierig zu lesen ist wie AWL. Außer für die Jungen die das mittlerweile in der Ausbildung haben.

Mein Ansatz ist vielleicht auch nicht der Richtige. Aber eine andere Idee hatte ich nicht.

Wenn ich den Vergleich 11x in FUP mache ist das auch ok, wird wahrscheinlich eher angenommen als die AWL Lösung. Nur hat es mich selber beschäftigt es anders lösen zu wollen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da du ja selbst Instandhalter bist, kannst du dir ja mal folgendes Szenario vorstellen:
Ein Kollege hat sowas verzapft, der ist nicht mehr da (Rente, andere Arbeitgeber, ausgewandert, was auch immer) und du sollst nen Fehler suchen. In so nem Kram, unter Zeitdruck. Viel Spaß ;)

Ihr solltet dringend euren Standard ändern. Nicht nur, dass SCL weit überlegen ist und der Compiler für die S7-1500 den Umweg über AWL zu Maschinencode gar nicht mehr nimmt... es ist auch schlicht völlig unübersichtlich, nicht mal du versteht ja im Moment, warum das nicht funktioniert und du hast dir das ausgedacht...

Im Zweifel ist es dann tatschlich besser, das 11x in FUP auszuschreiben, als 1x kryptisch in AWL, wenn man SCL nun ums Verderben nicht benutzen darf.

Und es wird auch der Tag kommen, da wird AWL das zeitliche segnen, irgendwann fliegt das raus. Dann lieber schon jetzt umsteigen, als irgendwann mit Hauruck.
 
also ... wenn SCL schwierig zu lesen ist dann stimmt mit dem Code schon etwas grundsätzlich nicht - aber klar ... man kann natürlich alles irgendwie verwurschteln - aber deine angedachte Schleife sähe in SCL (im Gegensatz zu dem Pointer-Gehopse oder den 11x FUP) wirklich schick aus ...

Ansonsten : wie @xMisterDx schon geschrieben hat - es wird mit dem SCL (oder ST) in Zukunft immer mehr werden - auch KOP und FUP werden möglicherweise irgendwann (in nicht allzu ferner Zukunft) nur noch Randnotizen sein ...
 
Ansonsten : wie @xMisterDx schon geschrieben hat - es wird mit dem SCL (oder ST) in Zukunft immer mehr werden - auch KOP und FUP werden möglicherweise irgendwann (in nicht allzu ferner Zukunft) nur noch Randnotizen sein ...
Das wird bestimmt so sein. Und falls die Umstellung (frühestens 2030) bei uns kommt, wird das was ich gerade mache, bestimmt auch ganz anders Umgesetzt oder überflüssig. Bis dahin bleiben die Anlagen so bestehen.
 
Zurück
Oben