Array
Moderatoren: Matthias, Weiss_MHJ
Hallo,
der Any-Pointer definiert den Speicherbereich ab welchem das das Array lbeginnt und die Länge des Arrays.
Im Beispiel liegt das Array im DB1 ab dem Datenbyte 0 und hat eine Länge von 11 Bytes. Somit:
P#DB1.DBX0.0 BYTE 11
Läge das Array im DB10 ab der Bytestelle 20 und hätte eine Länge von 50 Bytes, dann sähe der Any-Pointer wie folgt aus:
P#DB10.DBX20.0 BYTE 50
Gruss
der Any-Pointer definiert den Speicherbereich ab welchem das das Array lbeginnt und die Länge des Arrays.
Im Beispiel liegt das Array im DB1 ab dem Datenbyte 0 und hat eine Länge von 11 Bytes. Somit:
P#DB1.DBX0.0 BYTE 11
Läge das Array im DB10 ab der Bytestelle 20 und hätte eine Länge von 50 Bytes, dann sähe der Any-Pointer wie folgt aus:
P#DB10.DBX20.0 BYTE 50
Gruss
Array
Hallo,
sind diese Einstellungen OK?
UN "MerkerFlacheKiste"
O
UN "MerkerHoheKiste"
SPA End1
CALL FB 10,DB10
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 10
DBNummer:=W#16#DB10
EinfuegeIndex:=EW2
Wert:=EB0
Error:=MW2
End1: NOP 1
Wert wird in EW2 eingefügt.
UN M 3.0
SPB End2
CALL FB 11,DB11
AnyPointerArray:=P#DB1.DBX 11.0 BYTE 21
DBNummer:=W#16#DB11
ReadIndex:=EW2
Error:=MW2
Wert:=EB0
End2: NOP 1
Wert wird aus EW2 gelesen
L B#16#33
T MB 11
UN M 4.0
O
UN M 5.0
SPB End3
CALL FB 12,DB12
AnyPointerArray:=P#DB1.DBX 22.0 BYTE 32
DBNummer:=W#16#DB12
WriteIndex:=EW2
Wert:=EB0
Error:=MW2
End3: NOP 1
Wert in EW2 wird überschrieben
Gruss
mac
sind diese Einstellungen OK?
UN "MerkerFlacheKiste"
O
UN "MerkerHoheKiste"
SPA End1
CALL FB 10,DB10
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 10
DBNummer:=W#16#DB10
EinfuegeIndex:=EW2
Wert:=EB0
Error:=MW2
End1: NOP 1
Wert wird in EW2 eingefügt.
UN M 3.0
SPB End2
CALL FB 11,DB11
AnyPointerArray:=P#DB1.DBX 11.0 BYTE 21
DBNummer:=W#16#DB11
ReadIndex:=EW2
Error:=MW2
Wert:=EB0
End2: NOP 1
Wert wird aus EW2 gelesen
L B#16#33
T MB 11
UN M 4.0
O
UN M 5.0
SPB End3
CALL FB 12,DB12
AnyPointerArray:=P#DB1.DBX 22.0 BYTE 32
DBNummer:=W#16#DB12
WriteIndex:=EW2
Wert:=EB0
Error:=MW2
End3: NOP 1
Wert in EW2 wird überschrieben
Gruss
mac
- Matthias
- SPSTreff-Profi User
- Beiträge: 288
- Registriert: 19 Jun 2010, 11:16
- Wohnort: Bretten
- Kontaktdaten:
Hallo,
wenn Sie "SPA" benutzen, bringt die Verknüpfung davor nichts.
Und warum benutzen Sie als Index-Variable ein Eingangswort?
Besser wäre hier ein Merkerwort.
Das Eingangswort, wird ja von der Peripherie in jedem Zyklus wieder überschrieben.
Vielleicht sollten Sie jede AWL Zeile mit einem Kommentar versehen, damit man sieht, welche Gedankengänge Sie dabei haben.
wenn Sie "SPA" benutzen, bringt die Verknüpfung davor nichts.
Und warum benutzen Sie als Index-Variable ein Eingangswort?
Besser wäre hier ein Merkerwort.
Das Eingangswort, wird ja von der Peripherie in jedem Zyklus wieder überschrieben.
Vielleicht sollten Sie jede AWL Zeile mit einem Kommentar versehen, damit man sieht, welche Gedankengänge Sie dabei haben.
Array
Hallo,
ich bekomme keine Pos.Flanke bei =, nur wenn ich das = zeichen durch das S Setzzeichen austausche, bekomme ich einen Wechsel von 0 - 1.
U "Sensor1"
FP M 0.1
= "MerkerFlacheKiste"
U "MerkerFlacheKiste"
SPBNB _001
CALL FB 10,DB10
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 10
DBNummer:=W#16#0001
EinfuegeIndex:=MW10
Wert:=EB0
Error:=MW2
_001 :NOP 1
ich bin mir nicht sicher ob der Wert für AnyPointerArray korrekt ist?
Gruß
mac
ich bekomme keine Pos.Flanke bei =, nur wenn ich das = zeichen durch das S Setzzeichen austausche, bekomme ich einen Wechsel von 0 - 1.
U "Sensor1"
FP M 0.1
= "MerkerFlacheKiste"
U "MerkerFlacheKiste"
SPBNB _001
CALL FB 10,DB10
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 10
DBNummer:=W#16#0001
EinfuegeIndex:=MW10
Wert:=EB0
Error:=MW2
_001 :NOP 1
ich bin mir nicht sicher ob der Wert für AnyPointerArray korrekt ist?
Gruß
mac
- Matthias
- SPSTreff-Profi User
- Beiträge: 288
- Registriert: 19 Jun 2010, 11:16
- Wohnort: Bretten
- Kontaktdaten:
Hallo,
bei dieser Fragestellung ist es schwierig Ihnen zu helfen.
Sie müssen konkret eine Frage stellen, die man nach Durchlesen der Frage antworten kann.
Wenn man in Ihrem Fall eine Antwort schreiben möchte,
muss man zuerst ITS PLC herunterladen, die Anleitung zur Anlage "Sortierung" lesen, dann Ihr Programm anschauen und prüfen was Sie falsch gemacht haben.
So viel Zeit kann wahrscheinlich keiner investieren.
bei dieser Fragestellung ist es schwierig Ihnen zu helfen.
Sie müssen konkret eine Frage stellen, die man nach Durchlesen der Frage antworten kann.
Wenn man in Ihrem Fall eine Antwort schreiben möchte,
muss man zuerst ITS PLC herunterladen, die Anleitung zur Anlage "Sortierung" lesen, dann Ihr Programm anschauen und prüfen was Sie falsch gemacht haben.
So viel Zeit kann wahrscheinlich keiner investieren.
Array
Hallo,
ich bekomme keine Pos.Flanke bei =, nur wenn ich das = zeichen durch das S Setzzeichen austausche, bekomme ich einen Wechsel von 0 - 1.
Bei einem = Zeichen müsste der Zustand doch für einen Zyklus auf 1 wechseln?
oder muss ich bei dem WinSPS-7 V5 in den Einstellungen ändern?
U "Sensor1"
FP M 0.1
= "MerkerFlacheKiste"
Gruß
mac
ich bekomme keine Pos.Flanke bei =, nur wenn ich das = zeichen durch das S Setzzeichen austausche, bekomme ich einen Wechsel von 0 - 1.
Bei einem = Zeichen müsste der Zustand doch für einen Zyklus auf 1 wechseln?
oder muss ich bei dem WinSPS-7 V5 in den Einstellungen ändern?
U "Sensor1"
FP M 0.1
= "MerkerFlacheKiste"
Gruß
mac
Array
Hallo,
muss ich für jeden DB den AnyPointerArray ändern?
z.B DB11 P#DB11.DBX 11.0 BYTE 21
SPBNB _001
CALL FB 10,DB10
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 10
DBNummer:=W#16#0DB1
EinfuegeIndex:=MW10
Wert:=MB20
Error:=MW2
_001: NOP 1
Gruss
mac
muss ich für jeden DB den AnyPointerArray ändern?
z.B DB11 P#DB11.DBX 11.0 BYTE 21
SPBNB _001
CALL FB 10,DB10
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 10
DBNummer:=W#16#0DB1
EinfuegeIndex:=MW10
Wert:=MB20
Error:=MW2
_001: NOP 1
Gruss
mac
- Matthias
- SPSTreff-Profi User
- Beiträge: 288
- Registriert: 19 Jun 2010, 11:16
- Wohnort: Bretten
- Kontaktdaten:
Code: Alles auswählen
U E 124.0
FP M 0.1
= A 124.0
Wenn der Eingang E124.0 von 0 auf 1 wechselt, hat der Ausgang für 1 Zyklus den Zustand '1'.
Dies sieht man aber beim Beobachten nicht, da es nur für 1 Zyklus ist.
Wenn die Zuweisung "=" durch ein Setze-Befehl "S" ersetzt wird, dann sieht man, das der Ausgang gesetzt wird (er bleibt dann auf Zustand 1).
Dies ist der Beweis dafür, dass die Flankenauswertung funktioniert.
Wichtig ist dabei dass der Merker M0.1 nicht an andere stelle schreibend beeinflusst wird.
- Matthias
- SPSTreff-Profi User
- Beiträge: 288
- Registriert: 19 Jun 2010, 11:16
- Wohnort: Bretten
- Kontaktdaten:
Das Ziel des ANY-POINTERS muss das Array sein, in dem der Wert hineingeschrieben werden soll.muss ich für jeden DB den AnyPointerArray ändern?
z.B DB11 P#DB11.DBX 11.0 BYTE 21
"P#DB1.DBX 0.0 BYTE 10"
->
Ziel ist DB1 Byte 0 bis Byte 9
Die Angabe von "W#16#0DB1" in diesem Call kann aber nicht
stimmen:
Code: Alles auswählen
SPBNB _001
CALL FB 10,DB10
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 10
DBNummer:=W#16#0DB1
EinfuegeIndex:=MW10
Wert:=MB20
Error:=MW2
_001: NOP 1
Array
Hallo,
es soll doch in den DB1 geschrieben werden, weil doch da das Array sitzt?
Code:
SPBNB _001
CALL FB 10,DB10
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 10
DBNummer:= DB1 Byte 0 bis Byte 9
EinfuegeIndex:=MW10
Wert:=MB20
Error:=MW2
_001: NOP 1
Gruss
mac
es soll doch in den DB1 geschrieben werden, weil doch da das Array sitzt?
Code:
SPBNB _001
CALL FB 10,DB10
AnyPointerArray:=P#DB1.DBX 0.0 BYTE 10
DBNummer:= DB1 Byte 0 bis Byte 9
EinfuegeIndex:=MW10
Wert:=MB20
Error:=MW2
_001: NOP 1
Gruss
mac