Indire. DB-Zugriff AWL

FinalMistery

Level-1
Beiträge
37
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle zusammen,
ich würde gerne eine Funktion schreiben, welche anhand von einer übergebenen Struktur mit dem unten stehen den Aufbau, die Data1 bis DataLength versenden kann. Wie kann ich in der Struktur die Daten verarbeiten/zugreifen?
Oder in welcher Form muss ich der Funktion die Struktur übergeben, dass dies möglich ist.
Die Struktur liegt in einem DB.

Code:
ON STRUCT   
Length BYTE B#16#3  
Data1 BYTE B#16#2  
Data2 BYTE B#16#D  
Data3 BYTE B#16#A  
 END_STRUCT

Würde mich über euche Hilfe wirklich freune.

Beste Grüße
FinalMistery
 
Na gut, aus deinen Infos nicht nicht all zuviel zu entnehmen, aber ich würde folgendes sagen.

1. Zugriff auf die Struktur im Db mittels indirekter Adressierung.
2. Erstellen eines Any-Pointers aus den Informationen, die man beim Zugriff auf die Struktur ermittelt, DB, Länge und Beginn des ersten Datenbyte (Data1).
3. Diesen Any legst du dann an deinen Versende-FB, so dieser das denn als Input hat.

Vorgehen:
Du gehst zuerst hier im Forum in die FAQ und liest alles was mit indirekter Adressierung und Any zu tun hat. Dann suchst du hier im Forum nach Any-Pointer. Wenn dann noch Fragen offen sind, stellst du diese.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hm,
da hat der Ralle schon recht !

Also, zu später Stunde mal eben so ohne nachzuschauen...

LAR1 P##Source_Pointer // Lade einen ANY-Pointer ins AR1
L B#16#10 // Syntax-ID
T LB [AR1,P#0.0]
L B#16#2
T LB [AR1,P#1.0] // Datentyp (Typ 2=Byte) laden
L #Lenght BYTE
T LW [AR1,P#2.0] // Anzahl Byte in hex laden --> das ist deine B#16#3
L #DB_Nummer // Datenbaustein-Nummer
T LW [AR1,P#4.0]
L #DBB-Nummer // Datenbyte-Adresse --> da, wo es mit Data 1 beginnt
T LD [AR1,P#6.0]

und dann mit diesem Source-Pointer das Versenden anstossen....

... hoffentlich richtig...:rolleyes:

grüsse
 
Hm,
da hat der Ralle schon recht !

Also, zu später Stunde mal eben so ohne nachzuschauen...

LAR1 P##Source_Pointer // Lade einen ANY-Pointer ins AR1
L B#16#10 // Syntax-ID
T LB [AR1,P#0.0]
L B#16#2
T LB [AR1,P#1.0] // Datentyp (Typ 2=Byte) laden
L #Lenght BYTE
T LW [AR1,P#2.0] // Anzahl Byte in hex laden --> das ist deine B#16#3
L #DB_Nummer // Datenbaustein-Nummer
T LW [AR1,P#4.0]
L #DBB-Nummer // Datenbyte-Adresse --> da, wo es mit Data 1 beginnt
T LD [AR1,P#6.0]

und dann mit diesem Source-Pointer das Versenden anstossen....

... hoffentlich richtig...:rolleyes:

grüsse

Nein, das ist so nicht ganz korrekt oder zumindest mißverständlich: In der FAQ ist das gut beschrieben.
Die letzte Variable stellt die Adresse dar, muß also noch 3 nach links verschoben werden, wenn man dort wirklich die Nummer des Bytes stehen hat, welches als Beginn adressiert werden soll.
 
Hm,
da hat der Ralle schon recht !

Also, zu später Stunde mal eben so ohne nachzuschauen...

LAR1 P##Source_Pointer // Lade einen ANY-Pointer ins AR1
L B#16#10 // Syntax-ID
T LB [AR1,P#0.0]
L B#16#2
T LB [AR1,P#1.0] // Datentyp (Typ 2=Byte) laden
L #Lenght BYTE
T LW [AR1,P#2.0] // Anzahl Byte in hex laden --> das ist deine B#16#3
L #DB_Nummer // Datenbaustein-Nummer
T LW [AR1,P#4.0]
L #DBB-Nummer // Datenbyte-Adresse --> da, wo es mit Data 1 beginnt
SLD 3
T LD [AR1,P#6.0]
L B#16#84 // Adressbereich Datenbaustein
T LB[AR1,P#6.0]

und dann mit diesem Source-Pointer das Versenden anstossen....

... hoffentlich richtig...:rolleyes:

grüsse


Und die Angabe des Datenbereichs fehlt auch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen !

sorry, oweia, :rolleyes:

das war wohl doch schon etwas spät mit 00:15 Uhr um für aus dem Kopf zu schreiben... :ROFLMAO:

... Oder das 2. Bier um diese Zeit war vielleicht schlecht :confused:

... oder die Nachtarbeit etwas einschränken...

Naja, wie auch immer,
ich hab´nachgeschaut und verwende es so:

LAR1 P##Source_Pointer // Lade einen ANY-Pointer ins AR1
L B#16#10 // Syntax-ID
T LB [AR1,P#0.0]
L B#16#2
T LB [AR1,P#1.0] // Datentyp (Typ 2=Byte) laden
L #Lenght BYTE
T LW [AR1,P#2.0] // Anzahl Byte in hex laden --> das ist deine B#16#3
L #DB_Nummer // Datenbaustein-Nummer
T LW [AR1,P#4.0]
L #Source_DBB_Nummer
L P#0.0
+D
SLD 3
L P#DBX0.0 //code 81hex setzen
+D
T LD [AR1, P#6.0]

Grüsse
 
Zurück
Oben