S7: Zwei-Dimensonales Feld speichern

gonzom

Member
Beiträge
12
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,

Habe hier zwei analoge Werte von einer Kraft-Druck-Messung
und möchte in einem DB ein zweidimensionales Feld speichern.

Wie programmiere ich sowas am besten.
 

Ingo dV

Well-known member
Beiträge
61
Punkte Reaktionen
0
Felder

Ich gehe mal davon aus, dass du mehrere Werte speichern möchtest.

Hiermal eine Möglichkeit (es gibt mehrere)

Richte einen Zeiger für das Datenfeld ein (Zeiger auf Wert '0' = erstes Datenfeld)
Erstelle jeweils ein Array mit Namen Kraft und Druck

Zugriff auf die Werte:

Code:
L   #ZEIGER                     // Zeiger laden
SLW   4                         // Bitbereich ausblenden und *2 (1 Wort weiter)
LAR1  P##Kraft                  // Pointer auf Datenfeld Kraft setzen
+AR1                            // *** Zielpointer für aktuelles Feld
L   #Aktuelle_Kraft             // Laden aktuellen Wert
T     DIW [AR1,P#0.0]           // Speicher in Datenfeld

L   #ZEIGER                     // Zeiger laden
SLW   4                         // Bitbereich ausblenden und *2 (1 Wort weiter)
LAR1  P##Druck                  // Pointer auf Datenfeld Druck setzen
+AR1                            // *** Zielpointer für aktuelles Feld
L   #Aktueller_Druck            // Laden aktuellen Wert
T     DIW [AR1,P#0.0]           // Speicher in Datenfeld

oder wenn deine Felder z.B. 50 Werte beinhalten und untereinander stehen dann schreibe:

Code:
L   #ZEIGER                     // Zeiger laden
SLW   4                         // Bitbereich ausblenden und *2 (1 Wort weiter)
LAR1  P##Kraft                  // Pointer auf Datenfeld Kraft setzen
+AR1                            // *** Zielpointer für aktuelles Feld
L   #Aktuelle_Kraft             // Laden aktuellen Wert
T     DIW [AR1,P#0.0]           // Speicher in Datenfeld
L   #Aktueller_Druck            // Laden aktuellen Wert
T     DIW [AR1,P#100.0]         // Speicher in Datenfeld

Das Beispiel ist für einen Instanz DB ausgelegt. Solltest du nicht mit einem Instanz DB arbeiten, musst du die symbolische Pointervorgabe durch eine absolute ersetzen (und natürlich vorher noch den DB aufrufen).
 

tommy

Well-known member
Beiträge
49
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
wenn du die ganze geschicht "zweidimensional" machst, kannst du ja die werte als z.b. array von zwei real anlegen und legst die werte wie vorher im beispiel ab, nur das du die druckadresse um vier bytes gegenüber der kraft verschiebst. dann brauchst du nur den startwert des arrays eingeben.
mfg
 
Oben