Indirekter zugriff auf DB's (SCL)

zloyduh

Level-1
Beiträge
226
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Indirekter Zugriff auf unterschiedliche DB`s .


Habe mehrere DBs (1..10) angelegt welche die gleiche Struktur aufweisen (siehe Abbildung).
Jetzt möchte via HMI tasten zwischen den verschiedenen Datenbauasteinen umschalten.
Also Programm 1 (DB250) bis 10 (DB260).
Und innerhalb dieser Programme zwischen 20 Datensätzen blättern (Array of UDT).
Die Daten werden durch den Bediener eingepflegt.


Möchte das Ganze in SCL umsetzen!

Wie wird die DB Nummer ermittelt?
wie kann ich auf die Bereiche in den DB zugreifen?

Bild: DB inhalt
Unbenannt.jpg




Danke in voraus!
 
Habe mir folgendes überlegt um z.B. den Programm-Namen (STRING) zu speichern, funktioniert aber nicht.

Wie geht man da prinzipiell vor? habe leider noch keine Erfahrung in solchen Sachen machen können!



Gibt es einen anderen Weg?


// PROGRAMM SCROLLEN
// +1
IF #i_Programm < #ANZ_PROG THEN
IF #PROG_PLUS AND NOT #FL1 THEN
#i_Programm:= #i_Programm+1;
END_IF;
END_IF;
#FL1:= #PROG_PLUS;
// -1
IF #i_Programm > 1 THEN
IF #PROG_MINUS AND NOT #FL2 THEN
#i_Programm:= #i_Programm-1;
END_IF;
END_IF;
#FL2:= #PROG_PLUS;

// DATENSATZ SCROLLEN
// +1
IF #i_Datensatz < #ANZ_DAT THEN
IF #DAT_PLUS AND NOT #FL3 THEN
#i_Datensatz:= #i_Datensatz+1;
END_IF;
END_IF;
#FL3:= #DAT_PLUS;
// -1
IF #i_Datensatz > 1 THEN
IF #DAT_MINUS AND NOT #FL4 THEN
#i_Datensatz:= #i_Datensatz-1;
END_IF;
END_IF;
#FL4:= #DAT_MINUS;


// PROGRAMM SPEICHERN
IF #PROG_SPEICHERN AND NOT #FL5 THEN
WORD_TO_BLOCK_DB(INT_TO_WORD(#DB_PROGRAMM+#i_Programm)).DB[0]:= #PROG_NAME;
END_IF;
#FL5:=#PROG_SPEICHERN;
...


bild.JPG
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

nehme doch einfach den SFC20 BLOCK MOVE den ANY-Zeiger setzt du entsprechend auf deinen DB und Datensatz und kopierst den in den STAT Bereich oder sonst wo hin.

Gruss Daniel
 
Daniel hat ja schon eine elegante Lösung aufgezeigt :)

Deine Anwendung klingt nach Rezepturdaten-Handling, vielleicht solltest du dir diese mal anschauen !
Die SuFu hier im Forum bietet dir da auch einiges ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... oder wenn du bei deiner Lösung bleiben willst :
SCL kann von sich aus nur mit den Elementar-Typen bei dieser Form des Zugriffs arbeiten - also Bit, Byte, Word, DWord.
Wenn du einen String übertragen willst, so solltest du den dann als Array_of_Byte sehen und auch so behandeln - also Byte für Byte übertragen.

Gruß
Larry
 
Zurück
Oben