Array
Moderatoren: Matthias, Weiss_MHJ
Array
Hallo,
ich habe vor den Merker Flache Kiste oder Merker hohe Liste in einem Array zu Schreiben.
Um ihn dann an einer gewissen Stelle wieder aus zu Lesen.
wer kann mir Helfen?
Ich bekomme das irgendwie nicht in den Kopf
Gruß
mac
ich habe vor den Merker Flache Kiste oder Merker hohe Liste in einem Array zu Schreiben.
Um ihn dann an einer gewissen Stelle wieder aus zu Lesen.
wer kann mir Helfen?
Ich bekomme das irgendwie nicht in den Kopf
Gruß
mac
Array
Hallo, ich Bitte um Hilfe! aus dem Buch Step 7 Crashkurs werde ich nicht Schlau
U "Sensor3"
FP "Vars ".FlankeRead
SPB READ
BEA
READ: NOP 1
L "Vars ".Position
SLD 3
LAR1
L DBW [AR1,P#0.0]
T MW 10
Ich weiß auch nicht, wie der Wert flache Kiste oder hohe kiste Eingelesen wird und auch nicht wie er Ausgelesen wird.
Gruß
mac
U "Sensor3"
FP "Vars ".FlankeRead
SPB READ
BEA
READ: NOP 1
L "Vars ".Position
SLD 3
LAR1
L DBW [AR1,P#0.0]
T MW 10
Ich weiß auch nicht, wie der Wert flache Kiste oder hohe kiste Eingelesen wird und auch nicht wie er Ausgelesen wird.
Gruß
mac
Hallo,
ich habe ein Projekt gemacht in dem sich drei FBs befinden.
FB10:
Fügt in ein Array an einem anzugebenden Index einen Wert ein, wobei die dahinterliegenden Werte um eins nach hinten verschoben werden.
FB11:
Liest aus einem Array den Wert an einer anzugebenden Index-Position aus.
FB12
Überschreibt den Wert in einem Array an einer bestimmten Index-Position mit einem neuen Wert.
Diese FBs müsste genügen um entsprechende Dinge mit Arrays zu realisieren.
Anforderung an das Array:
- Die Arrays müssen in DBs liegen und Byte-Arrays sein. Die FBs können bei Bedarf geändert werden, damit auch Arrays mit anderen Datentypen (z.B. WORD) unterstützt werden.
- Die Arrays sollten der Übersicht wegen mit dem Index 0 beginnen also z.B. Array [0..20] of BYTE
Im OB1 werden die FBs beispielhaft aufgerufen. Das zu verändernde Byte-Array liegt im DB1.
Gruss
ich habe ein Projekt gemacht in dem sich drei FBs befinden.
FB10:
Fügt in ein Array an einem anzugebenden Index einen Wert ein, wobei die dahinterliegenden Werte um eins nach hinten verschoben werden.
FB11:
Liest aus einem Array den Wert an einer anzugebenden Index-Position aus.
FB12
Überschreibt den Wert in einem Array an einer bestimmten Index-Position mit einem neuen Wert.
Diese FBs müsste genügen um entsprechende Dinge mit Arrays zu realisieren.
Anforderung an das Array:
- Die Arrays müssen in DBs liegen und Byte-Arrays sein. Die FBs können bei Bedarf geändert werden, damit auch Arrays mit anderen Datentypen (z.B. WORD) unterstützt werden.
- Die Arrays sollten der Übersicht wegen mit dem Index 0 beginnen also z.B. Array [0..20] of BYTE
Im OB1 werden die FBs beispielhaft aufgerufen. Das zu verändernde Byte-Array liegt im DB1.
Gruss
Sie haben keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Array
Hallo,
habe ich das so richtig verstanden?
FB10: fügt z.B den Wert -Flache Kiste ein (am Sensor 1 u 2)
FB11: auslesen des Wertes -Flache Kiste
FB12: überschreiben des Wertes -Flache Kiste ( z.B am Sensor 6 )
Gruss
mac
habe ich das so richtig verstanden?
FB10: fügt z.B den Wert -Flache Kiste ein (am Sensor 1 u 2)
FB11: auslesen des Wertes -Flache Kiste
FB12: überschreiben des Wertes -Flache Kiste ( z.B am Sensor 6 )
Gruss
mac
Hallo,
FB10:
Fügt einen Wert in ein Array an einer anzugebenden Stelle (Index) ein. Die dahinterliegenden Inhalte werden um eins nach oben verschoben. Der Inhalt des höchsten Index geht verloren.
FB11:
Liefert einen Wert aus dem Array durch Angabe des Index.
FB12:
Überschreibt den Wert in einem Array an einem anzugebenden Index.
Also ja, so könnten Sie die FBs verwenden.
Gruss
FB10:
Fügt einen Wert in ein Array an einer anzugebenden Stelle (Index) ein. Die dahinterliegenden Inhalte werden um eins nach oben verschoben. Der Inhalt des höchsten Index geht verloren.
FB11:
Liefert einen Wert aus dem Array durch Angabe des Index.
FB12:
Überschreibt den Wert in einem Array an einem anzugebenden Index.
Also ja, so könnten Sie die FBs verwenden.
Gruss
Array
Hallo,
ich habe mich irgendwie Festgefahren
was trage ich ein?
UN "MerkerFlacheKiste"
O
UN "MerkerHoheKiste"
CALL FB 10,DB10
AnyPointerArray:=P#M 33.0 BYTE 10
DBNummer:=W#16#0DB1
EinfuegeIndex:=EW0
Wert:=EB0
Error:=AW0
und die Merker? kann ich dies so einfügen?
Gruss
mac
ich habe mich irgendwie Festgefahren
was trage ich ein?
UN "MerkerFlacheKiste"
O
UN "MerkerHoheKiste"
CALL FB 10,DB10
AnyPointerArray:=P#M 33.0 BYTE 10
DBNummer:=W#16#0DB1
EinfuegeIndex:=EW0
Wert:=EB0
Error:=AW0
und die Merker? kann ich dies so einfügen?
Gruss
mac
Array
Hallo,
ich komme nicht mit den Werten klar.
Einfüge index
Ein zu fügender Wert
UN "MerkerFlacheKiste"
O
UN "MerkerHoheKiste"
SPA End1
CALL FB 10,DB10
AnyPointerArray:=P#M 33.0 BYTE 10 ?
DBNummer:=W#16#0DB1 ?
EinfuegeIndex:=EW0 ?
Wert:=EB0 ?
Error:=AW0 ?
End1: NOP 1
oder z.B EW0 dann EW1 dann EW3 ?
Gruß
mac
ich komme nicht mit den Werten klar.
Einfüge index
Ein zu fügender Wert
UN "MerkerFlacheKiste"
O
UN "MerkerHoheKiste"
SPA End1
CALL FB 10,DB10
AnyPointerArray:=P#M 33.0 BYTE 10 ?
DBNummer:=W#16#0DB1 ?
EinfuegeIndex:=EW0 ?
Wert:=EB0 ?
Error:=AW0 ?
End1: NOP 1
oder z.B EW0 dann EW1 dann EW3 ?
Gruß
mac
- Matthias
- SPSTreff-Profi User
- Beiträge: 288
- Registriert: 19 Jun 2010, 11:16
- Wohnort: Bretten
- Kontaktdaten:
In dem Projekt, welches in diesem Thread zum Download bereit steht, sind im OB1 Beispielaufrufe vorhanden.
Hier kann man sehr gut sehen, was man übergeben muss:
OB1:
Hier kann man sehr gut sehen, was man übergeben muss:
OB1:
Code: Alles auswählen
//Byte-Wert in ein Array einfügen wenn E0.0 von 0 nach 1 wechselt
//Die vorhandenen Werte werden nach hinten verschoben, der Wert im obersten Index des Arrays wird überschrieben
U E 0.0
FP M 0.0
= M 0.1
UN M 0.1
SPB End1
CALL FB 10,DB10
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 11 //Angabe des Arrays als Any-Zeiger
DBNummer:=W#16#0001 //Nummer des DBs in welchem das Array liegt
EinfuegIndex:=W#16#0004 //Index in welchem ein Wert eingefügt werden soll
Wert:=B#16#BB //Einzufügender Wert
Error:=MW2
//
End1: NOP 1
//Byte-Wert aus Array auslesen wenn E0.1 von 0 nach 1 wechselt
U E 0.1
FP M 0.2
= M 0.3
UN M 0.3
SPB End2
CALL FB 11,DB11
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 11 //Angabe des Arrays als Any-Zeiger
DBNummer:=W#16#0001 //Nummer des DBs in welchem das Array liegt
ReadIndex:=EW2 //Index der ausgelesen werden soll
Error:=MW4
Wert:=MB10 //Wert der Ausgelsen wurde
End2: NOP 1
//
L B#16#33
T MB 11
//Byte-Wert in ein Array in einen Index schreiben wenn E0.2 von 0 nach 1 wechselt
//Der vorhandene Wert im Index wird überschrieben.
U E 0.2
FP M 0.4
= M 0.5
UN M 0.5
SPB End3
CALL FB 12,DB12
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 11 //Angabe des Arrays als Any-Zeiger
DBNummer:=W#16#0001 //Nummer des DBs in welchem das Array liegt
WriteIndex:=EW4 //Index der überschrieben werden soll
Wert:=MB11 //Neuer Wert des Index
Error:=MW6
End3: NOP 1
Hallo,
ja, der Index ist eine Zahl. Diese Zahl kann eine Konstante sein wie im Beispiel beim Aufruf des FB10 (hier wurde W#16#0004 also der Index 4 vorgegeben).
Oder aber Variabel wie im Beispiel beim Aufruf des FB12, hier wurde das Eingangswort 2 EW2 übergeben, somit wird der Index verwendet, welcher im EW2 als Zahl enthalten ist.
Sie sollten versuchen das Beispiel zu verstehen.
Um den Inhalt in den FBs sollten Sie sich nicht kümmern sondern nur die FBs deren Bestimmung gemäß verwenden.
Gruss
ja, der Index ist eine Zahl. Diese Zahl kann eine Konstante sein wie im Beispiel beim Aufruf des FB10 (hier wurde W#16#0004 also der Index 4 vorgegeben).
Oder aber Variabel wie im Beispiel beim Aufruf des FB12, hier wurde das Eingangswort 2 EW2 übergeben, somit wird der Index verwendet, welcher im EW2 als Zahl enthalten ist.
Sie sollten versuchen das Beispiel zu verstehen.
Um den Inhalt in den FBs sollten Sie sich nicht kümmern sondern nur die FBs deren Bestimmung gemäß verwenden.
Gruss