DBs in Schleife SCL

WinniePooh

Level-1
Beiträge
102
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich bin dran in der TIA ein DB für eine bestimmte Schleife hochzuzählen.
Bsp.: Habe mehrere Regler, welche Ihre Daten in unterschiedliche DBs speichern.
Nun möchte ich über Parameter in den DBs an einen bestimmten Wert, sagen wir mal den Grenzwert setzen.
Und das am besten in einem Netzwerk und sofort für alle DBs

Mein Beispiel in AWL:
Code:
// Übertragener Wert
      L     10
      T     #Wert
// Grenzwerte Erstellen
      L     30
      T     #MinDB
      L     32
      T     #MaxDB
// Schleife, selbstgemacht für einen individuellen Schleifen start und Ende
trans: L    #MinDB
      T     #Index
      AUF DB [ #Index]
      L     #Wert
      T     %DBB1
// Variable hochzählen 
      L     #Index
      L     1
      +I
      T     #Index
//und Prüfung ob der Index größer gleich MaxDB ist
      L     #Index
      L     #MaxDB
      >=I
      SPBN  trans
// Kann noch weiterer Quellcode enthalten
      BEA

Ist das auch in SCL möglich? Habe es mit unterschiedlichster Klammersetzung und anderen Möglichkeiten Versucht aber nichts gefunden.
Kann mir jemand helfen??
 
Hallo,
klar ist das auch in SCL machbar ...
Ich müßte jetzt allerdings wissen, wie du es angefangen hast.
Um aus deinem Index einen DB zu machen gibt es die Anweisung "WORD_to_Block_DB".

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin ja kein Freund von diesem DB-Nummer und Absolut-Adressgefrickel.
Warum machst du nicht aus dem Aufbau des DBs eine UDT (ein Reglerdatensatz), und machst dann eine Funktion die als Parameter diese UDT als In-Out hat (Funktion "Init-Reglerdatensatz")? Dann ist alles voll symbolisch, und bei Änderungen musst du dir keine Sorgen machen dass irgendwelche magischen Zahlenwerte nicht mehr passen.
 
@ Larry: Ne ich habe kein WORD_TO_BLOCK oder was ähnliches. Ich greife einfach so von einem FC auf dem DB in einer Schleife zu.
müsste ich dann hinschreiben DB[Word_TO_BLOCK(INDEX)]

@ Thomas: dann müssten sich ja die Daten in einem DB abspeichern. Hier sind für die gleichen Daten in unterschiedliche DBs gespeichert. Also muss ich zwingend dann jeden DB aufmachen oder ich mach das halt in einer Iteration.
 
Ich habe eine UDT noch nie benutzt, wie wird das als In-Out angelegt? Kannst du mir dazu weiterhelfen wie das gemacht wird, sowie eine Anleitung oder Beispiel?

Gruss
TMaroni
 
Zuviel Werbung?
-> Hier kostenlos registrieren
UDT mit den Elementen anlegen, Global-DB mit dem UDT als "Variable" anlegen, Antragen des UDT durch Angabe des symbolischen Namens.

Z.B..: "Achse_1".Parameter

Achse_1 ist der Name des Global-DB. Parameter der Name der Variablen des UDT.
 
Wie wird dann im In-Out das UDT deklariert gemäss dein Beispiel, wenn dann mehrere Parameter hinterlegt sind?

VAR_IN_OUT
UDT : "Achse_1".Parameter1
"Achse_1".Parameter2
usw.​
END_VAr

Gruss
TMaroni
 
VAR_IN_OUT
Parameter_1 : UDT_1
Parameter_2 : UDT_1
Parameter_3 : UDT_1
usw.
END_VAR

Beim Baustein-Aufruf dann passend symbolisch antragen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@TMaroni:
Du mußt vielleicht auch einfach mal ein bißchen damit herum-probieren ...
So direkt "im Trocknen" wirkt das komplizierter als es ist ...

@WinniePooh:
Der von mir genannte Befehl heißt "WORD_to_Block_DB" und dazu solltest du dir die SCL-Hilfe mal ansehen.
Vom Grundsatz her ist es aber richtig, sich solche Zugriffe zu verkneifen ...
Gerade bei Verwendung von SCL ist es immer sehr praktisch, mit "Bekannten" zu arbeiten - das wäre dann z.B. ein UDT - nicht aber ein externer DB ...

Gruß
Larry
 
Zurück
Oben