AWL Problem

phil83

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

Ich habe folgendes Problem in AWL

Mein Programm hat verschiede nummern (1, 2 und 3) und je nach Zähler (0,1,2,3) muss ich andere Daten laden. Zeit[1],Zeit [2] Zeit [3]
Die Zeit[0] gibt es nicht. Wie mache ich dies am einfachsten?

Besten Dank
 
Was Für daten musst du den laden weil wenn es nur eine zeit ist dann ganz einfach

u eins
L Zeit 1
T xyz

so würde ich das machen .
 
Zuviel Werbung?
-> Hier kostenlos registrieren
weil wenn es nur eine zeit ist dann ganz einfach

u eins
L Zeit 1
T xyz

so würde ich das machen .


und gnadenlos scheitern, bzw. dich wundern, warum immer zeit3 in xyz steht...

je nach umfang der daten würden 3 unterschiedliche datenbausteine mit gleicher struktur in frage kommen. die daten können dann mit einem unqualifizierten zugriff nach

Code:
*
      AUF    DB[#myDBNumber]
in die produktiv daten kopiert werden.

eine andere möglichkeit wäre das anlegen einer UDT die in einem datenbaustein drei mal hinterlegt wird und entsprechend mit daten gefüllt ist. das umkopieren erfolgt dann durch zugriff mithilfe indirekter adressierung nachdem du aus dem zählerwert deinen datenoffset errechnet hast.
 
Lösung mit SPL Sprungleiste

Code:
      L     Z     10                    // Zählernumer laden 
      SPL   M000                        // Sprung bei >3
      SPA   M000                        // Sprung bei 0
      SPA   M001                        // Sprung bei 1
      SPA   M002                        // Sprung bei 2
      SPA   M003                        // Sprung bei 3

M000: L     S5T#0MS                     // Timerwert wenn Zählerwert 0 oder >3
      SPA   Ende

M001: L     S5T#1S                      // Timerwert wenn Zählerwert 1
      SPA   Ende

M002: L     S5T#2S                      // Timerwert wenn Zählerwert 2
      SPA   Ende

M003: L     S5T#3S                      // Timerwert wenn Zählerwert 3
      SPA   Ende

Ende: U     M     10.0                  // Start Timer
      SE    T     10                    // Start Timer als  Einschaltverzögerung
Eine Beschreibung der "SPL Sprungleiste" findetst Du mit "F1" in der S7-Hilfe


Gruss Hoyt
 
Hallo

Ist es nicht irgendwie möglich indirekt zu adressieren?

z.B. L Zeit[#Zähler]
T XXX

Was mache ich wenn der Zähler 0 ist (Da ich die Zeit null nicht habe)

Danke für eure Antwort
 
Was mache ich wenn der Zähler 0 ist (Da ich die Zeit null nicht habe)

nimm doch das Beispiel von Hoyt das ist sehr übersichtlich, änder es
so ab wenn du den wert "0" nicht hast.

Code:
     L     Z     10                    // Zählernumer laden 
      SPL   M001                        // Sprung bei >3
      SPA   M001                        // Sprung bei 0
      SPA   M001                        // Sprung bei 1
      SPA   M002                        // Sprung bei 2
      SPA   M003                        // Sprung bei 3
 
 
M001: L     S5T#1S                      // Timerwert wenn Zählerwert 1
      SPA   Ende
 
M002: L     S5T#2S                      // Timerwert wenn Zählerwert 2
      SPA   Ende
 
M003: L     S5T#3S                      // Timerwert wenn Zählerwert 3
      SPA   Ende
 
Ende: U     M     10.0                  // Start Timer
      SE    T     10                    // Start Timer als  Einschaltverzögerung
 
Irgendwie klappts noch nicht...

wenn ich

L Daten.Aufheizdaten[schlaufe].Aufheizzeit
T XXX

eingebe kriege ich die Meldung Syntaxfehler. Was kann man da falsch machen? Die schlaufe ist eine Stat Variable (Integer)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
"schlaufe" als Variable kannst du in AWL so nicht verwenden. Entweder du machst das in SCL, dann kannst du Array's mittels Variablen indizieren oder du mußt die Datenpunkte mittels indirekter Adressierung ansprechen und die Adresse für den Ablagepunkt der Daten vorher selbst berechnen. Siehe dazu zuerst einmal in der FAQ des Forums, da gibt es seht ausführliche BEiträge zum Thema.
 
Zurück
Oben