SCL indirekt Adressieren

Nafura

Level-1
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich bin Anfänger in der SPS Programmierung und hätte eine Bitte.
Wie kann ich in SCL so eine Schleife programmieren?

U #Var_1
SPBN IDR1
AUF DB [#Instanz_DB_Nr_Temp]
L 0
T #Vergleich
L P#26.0
T #Zeiger_1
L 13
BEGN: T #Schleifenzaehler_1
L #Var_2
L #Vergleich
==I
= DBX [#Zeiger_1]
L #Vergleich
L 1
+I
T #Vergleich
L #Zeiger_1
L P#0.1
+D
T #Zeiger_1
L #Schleifenzaehler_1
LOOP BEGN

Vielen Dank im Vorraus für eure Hilfe.
LG
 
Hallo,
dazu gibt es sogar in der SCL-Hilfe einiges Brauchbares zu Lesen - aber wie auch immer - so baut man eine Schleife :
Code:
FOR i := 1 to 100 by 1 do
   meinArrayElement[i] := i ;
END_For ;
... dein Code entzieht sich mir gerade ein bißchen - was soll der denn machen (als Beschreibung) ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
dazu gibt es sogar in der SCL-Hilfe einiges Brauchbares zu Lesen - aber wie auch immer - so baut man eine Schleife :
Code:
FOR i := 1 to 100 by 1 do
   meinArrayElement[i] := i ;
END_For ;
... dein Code entzieht sich mir gerade ein bißchen - was soll der denn machen (als Beschreibung) ?

Gruß
Larry

Sieht so aus, als ob ein Bit im IDB DBW26, in Abhängigkeit, von #Var_2 gesetzt wird.

ist Var_2 = 0, dann Bit_0 = 1
ist Var_2 = 1, dann Bit_1 = 1
ist Var_2 = 2, dann Bit_2 = 1
...
 
Zuletzt bearbeitet:
@Ralle:
Wenn du mit der Vermutung Recht hast dann wäre das nach meiner Meinung kein Fall für eine Schleife ... :rolleyes:
 
@Ralle:
Wenn du mit der Vermutung Recht hast dann wäre das nach meiner Meinung kein Fall für eine Schleife ... :rolleyes:

Ja, dann würde ich das auch anders machen, selbst in AWL geht das besser zu machen. Aber es gibt immer bessere Möglichkeiten und wenn ich den Code so sehe ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Vielen Dank für eure Antworten.
Das Ganze sollte aus einer Auswahl von 10 verschiedenen Auswahloptionen jeweils 5 Datenwörter je Option, also 50 Datenwörter aus einem Global DB laden und in eine Variable schreiben.

Der AWL Code ist der 1 Teil der Auswahloption, wie gesagt bin ich Anfänger und würde mich über alles sehr freuen was mir weiterhelfen könnte.

Wenn ich diese "Schleife" in SCL nicht hinbekomme, würde es mit CASE funktionieren, dann müsste ich aber von 1-10 jeweils die 5 Datenwörter aus dem DB eintragen und hätte eine lange Liste.

1: xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
2: usw...

Wenn es beim nächsten Mal nicht 10 Optionen sondern 500 sind,stehe ich wieder vor dem gleichen Problem. :)

Vielen Dank noch einmal für eure Hilfe.

LG,Naf
 
Also willst du bei dem Übergabewert von "1" z.B. die DBW#s 0..8 aus dem DB laden und bei "2" dann 10..18 usw. ?
Wenn ja dann geht das über die Index-Bildung, was in SCL wirklich einfach geht :
Code:
myIndex := (Vorgabe -1) * 10 ;
myAusgabe1 := "Vorgabe_DB".DBW[myIndex +0] ;
myAusgabe2 := "Vorgabe_DB".DBW[myIndex +2] ;
myAusgabe3 := "Vorgabe_DB".DBW[myIndex +4] ;
myAusgabe4 := "Vorgabe_DB".DBW[myIndex +6] ;
myAusgabe5 := "Vorgabe_DB".DBW[myIndex +8] ;
das in einer Schleife umzusetzen geht nur wenn dann myAusgabe auch wieder vom Typ Array ist.

Gruß
Larry
 
Vielen Dank für deine Hilfe, das ist genau das was ich gesucht habe.
Danke hat mir sehr geholfen.

LG, Naf
 
Zurück
Oben