Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all articles
Browse latest Browse all 49528

Step 7 SCL Anfänger Frage (im Prinzip Indiziert Zugriff auf DB's)

$
0
0
Oute mich jetzt einmal als SCL Anfänger bzw. Umsteiger.
Bin nun dabei (nach gut 20 Jahre S7) mich in SCL (Step 7 Classic) einzuarbeiten ;)

Habe folgende Denkblockade und suche eine Lösung bzw. Hinweise für mein Problem.

Ich möchte im Prinzip nur indirekt in SCL auf DBs zugreifen.
Mir ist schon bekannt, das ich am FB einen Eingangsparameter mit BLOCK_DB anlegen kann und dann Symbolisch darüber auf den DB zugreifen kann.

Code:

VAR_INPUT
    DBNr        : BLOCK_DB;    //--> Hier wird DBNr. als DB übergeben
END_VAR

 // Hier Zugriff auf DBW10 aus DBNr.
  iSchmier[1] := WORD_TO_INT(DBNr.DBW10); 
END_FUNCTION_BLOCK

Was ich aber nun möchte ist im Prinzip über zB einem INT oder Word (also zB. 123) auf den DB123 zugreifen.
Also im Prinzip lese ich nun einen Interger Wert aus (H-Funktion) und möchte nun darüber auf den jeweiligen DB entsprechend zugreifen.

Als Bsp.: (ist aber nur sinnbildlich)
Code:

VAR
wQuellDB  : INT;
END_VAR


wQuellDB := 123;

 // Hier Zugriff auf DBW10 aus DBNr. 123
 iSchmier[1] := WORD_TO_INT(wQuellDB.DBW10); 
DB234.Spalte.Zeile_1 := wQuellDB.Spalte.Zeile_1;

Mir ist schon bekannt, dass ich das Word nach Block_DB wandeln muss (WORD_TO_BLOCK_DB) aber was für nen Variable lege ich da an, wo der DB gespeichert ist um darüber Symbolisch darauf zugreifen zu können ???

Hintergrund wäre z.B. ich habe 20 DBs mit Einstellungen (Aufbau wie eine Tabelle Zeilen [1..20] und Spalten [1..9]) welche abhängig der Vorgewählten / übergebenen Nummer ausgelesen und verarbeitet werden. Der Aufbau aller DBs ist gleich, nur die Werte sind ja anders.

Code:


wQuellDB := 123;  <-- als Bsp. ansonsten zB. Typ 100, 101 o.ä.

 FOR iZeile := 1 TO 20 DO
  FOR iSpalte := 1 TO 9 DO
          Abbild.Zeile[iZeile].Spalte[iSpalte].Funktion_Index := WORD_TO_BLOCK_DB(wQuellDB).Tabelle.Zeile[iZeile].Spalte[iSpalte].Funktion_Index;
  END_FOR
END_FOR

funktioniert leider nicht ...

Danke vorab für euere Hinweise :cool:

Viewing all articles
Browse latest Browse all 49528