DB durchsuchen, FB vereinfachen

martinmd2

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

Ich habe ein Problem, ich muss in deinem DB mit mehreren Arry´s imm ein bestimmtes Wort Vergleichen und ggf. beschreiben, habe mir jetzt umständlich einen FB gebaut, kann mir jemand tipps geben wie ich es einfacher lösen könnte?
 

Anhänge

Hmmm...
Da das zu vergleichende Datenwort immer im Abstand von 30 ist könnte man das relativ adressieren und die Sache in einen LOOP packen, für jeden Datensatz einen.

Das sollte die Sache schon mal verkürzen.
 
Bin neu auf diesem Gebiet, denke SCL Programmierung ist für einen Anfänger zu hoch, aber das mit der relativen Programmierung sollte zu schaffen sein.
Könnt ihr mir vielleicht einen kleinen einstieg verschaffen?
 
Such Dir ein freies Merkerdoppelwort und setze das erst mal auf 30.
Am besten mit der schon worhandenen Flanke.

Springe hier hin

Jetzt lädst Du das Datenwort dessen Adresse im Merkerdoppelwort steht und vergleichst das mit dem DBW 0.

Wenn gleich, T MD in Zielwort.

Dann das MD um 30 erhöhen.

Ist das MD größer 1500
Springe nächste Stelle
Ansonsten Springe hoch

Diese Lösung könnte etwas ZYkluszeit kosten, da die Schleife 50x durchlaufen wird.
GGF. dann irgendwo trennen.

dtsclipper
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Martin,

hier ist ein kleines Beispiel als Einstieg:

Code:
// Pointer initialisieren
LAR1  #P30.0  // Adresse des 1. Datenwortes

// Vergleichswert initialisieren
L 30
T #Vergleicher

// Schleifenzähler initialisieren
L 10 // Wie oft soll die Schleife Durchlaufen werden?
M001: T #LoopCounter

L DBW[AR1,P#0.0]  // Wert lesen
L #Vergleicher
==I
SPB M002

+AR1 P#30.0 // Adressregister erhöhen

L #Vergleicher // Vergleichswert erhöhen
+ 30
T #Vergleicher

L #LoopCounter
LOOP M001

SPA SEGE

M002: L #Vergleicher
T #Soll_Parameter
SEGE: NOP 0

So ungefähr sollte es gehen.

Grüße
Gebs
 
Zurück
Oben