Mehrzeilige Tabelle (Matrix) anlegen und auslesen

Kojote

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

Ich möchte eine mehrzeilige Tabelle (Matix) anlegen und auslesen

Es geht darum:

Es soll ein real-wert, ein String, und Datum/Uhrzeit
gespeichert werden. Alle 3 Werte sollen gleichzeitig
gespeichert werden. Ich wollte das mit einer Tabelle machen
aber wie....?
Mit z.B. FC84 kann ich ja nur eine Tabelle mit einer Spalte anlegen :?
....und auserdem darin nur WORD speichern, und nicht String, Datum/Uhrzeit.

Jemand eine Ahnung? :roll:


Danke

Kojote
 
Hallo Kojote,

das mit einer Matrix ist bei S7 so eine Sache. Ich würde zunächst einen UDT deklarieren mit word, string und Datum/Zeit etc. und diesen UDT in einem array eines Datenbaustein verwenden.

Gruß,

Hagen
 
ok ist mir jetzt klar.....

aber nur die Deklaration :?

Aber wie schreibe und lese ich mit UDT`s ?

In der Siemens Dokumentation ist da ja leider nichts zu finden


Danke
 
soweit bin ich:

UDT20 mit:

REAL
DATE
TIME
CHAR
CHAR


und DB20 mit:
Pumpauftrag_01 UDT20
Pumpauftrag_02 UDT20
.
.
.
Pumpauftrag_20 UDT20


wie kann ich jetzt in den DB20 schreiben und lesen :?:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kojote schrieb:

UDT20 mit:

A111: REAL
B222: DATE
D333: TIME
C444: CHAR
D555: CHAR


und DB20 mit:
Pumpauftrag_01 UDT20
Pumpauftrag_02 UDT20
.
.
.
Pumpauftrag_20 UDT20

Name des DB: Test

Zugriff:

L 100.0
T "Test".Pumpenauftrag_01.A111

usw.

Du kannst auch die Werte in einen Puffer am Anfang des DB schreiben und dann per Block-Move in den richtigen Pumpenauftrag schieben und umgekehrt!

Noch besser geht es in SCL, da kannst du ein Array aus UDT's anlegen und dann über den Array-Index direkt auf die Einträge zugreifen.

im DB "Test":
Pumpenauftrag: Array[1..20] of UDT1

im SCL-FC:
I: Int

"Test".Pumpenauftrag.A111 := 100.0;
 
hallöchen

oder gleich ohne udt

und einfach eine struct anlegen der so aussieht wie du es haben willst also

tabelle array[1..10]
struct
werte real
zeichen string
datum date and time
struct_end

und dann einfach mit

l db1.tabelle[1].werte

zugreifen
 
Zurück
Oben