Array

Alles zur Software WinSPS-S7 bzw. WinPLC7

Moderatoren: Matthias, Weiss_MHJ

Antworten
Benutzeravatar
Weiss_MHJ
Site Admin
Beiträge: 674
Registriert: 13 Apr 2010, 16:34
Kontaktdaten:

Beitrag von 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

Benutzeravatar
MAC
SPSTreff-Profi User
Beiträge: 267
Registriert: 13 Jul 2010, 09:48
Wohnort: Niederkassel

Array

Beitrag von MAC »

OK, vielen Dank :D

Gruss
mac

Benutzeravatar
MAC
SPSTreff-Profi User
Beiträge: 267
Registriert: 13 Jul 2010, 09:48
Wohnort: Niederkassel

Array

Beitrag von MAC »

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

Benutzeravatar
Matthias
SPSTreff-Profi User
Beiträge: 288
Registriert: 19 Jun 2010, 11:16
Wohnort: Bretten
Kontaktdaten:

Beitrag von Matthias »

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.

Benutzeravatar
MAC
SPSTreff-Profi User
Beiträge: 267
Registriert: 13 Jul 2010, 09:48
Wohnort: Niederkassel

Array

Beitrag von MAC »

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

Benutzeravatar
MAC
SPSTreff-Profi User
Beiträge: 267
Registriert: 13 Jul 2010, 09:48
Wohnort: Niederkassel

Array

Beitrag von MAC »

irgendwas stimmt noch nicht, aber ich weiß nicht was.
sind die eintragungen richtig?

Gruss
mac

Bild

Benutzeravatar
MAC
SPSTreff-Profi User
Beiträge: 267
Registriert: 13 Jul 2010, 09:48
Wohnort: Niederkassel

Array

Beitrag von MAC »

Hallo Herr Weiß,
ich komme so nicht weiter , deshalb jetzt ich mal die Progrmmierung ein.
In der Hoffnung das mir geholfen wird.

Gruss
mac

BildBildBild

Benutzeravatar
MAC
SPSTreff-Profi User
Beiträge: 267
Registriert: 13 Jul 2010, 09:48
Wohnort: Niederkassel

Array

Beitrag von MAC »

Hallo,
kann mir einer weiter Helfen?



Gruß
mac

Benutzeravatar
Matthias
SPSTreff-Profi User
Beiträge: 288
Registriert: 19 Jun 2010, 11:16
Wohnort: Bretten
Kontaktdaten:

Beitrag von Matthias »

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.

Benutzeravatar
MAC
SPSTreff-Profi User
Beiträge: 267
Registriert: 13 Jul 2010, 09:48
Wohnort: Niederkassel

Array

Beitrag von MAC »

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

Benutzeravatar
MAC
SPSTreff-Profi User
Beiträge: 267
Registriert: 13 Jul 2010, 09:48
Wohnort: Niederkassel

Array

Beitrag von MAC »

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

Benutzeravatar
Matthias
SPSTreff-Profi User
Beiträge: 288
Registriert: 19 Jun 2010, 11:16
Wohnort: Bretten
Kontaktdaten:

Beitrag von Matthias »

Code: Alles auswählen

       U    E       124.0
       FP   M         0.1
       =    A       124.0
Der obige Code bewirkt folgendes:
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.

Benutzeravatar
Matthias
SPSTreff-Profi User
Beiträge: 288
Registriert: 19 Jun 2010, 11:16
Wohnort: Bretten
Kontaktdaten:

Beitrag von Matthias »

muss ich für jeden DB den AnyPointerArray ändern?

z.B DB11 P#DB11.DBX 11.0 BYTE 21
Das Ziel des ANY-POINTERS muss das Array sein, in dem der Wert hineingeschrieben werden soll.

"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

Benutzeravatar
MAC
SPSTreff-Profi User
Beiträge: 267
Registriert: 13 Jul 2010, 09:48
Wohnort: Niederkassel

Array

Beitrag von MAC »

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

Benutzeravatar
Matthias
SPSTreff-Profi User
Beiträge: 288
Registriert: 19 Jun 2010, 11:16
Wohnort: Bretten
Kontaktdaten:

Beitrag von Matthias »

Wenn in den DB1 geschrieben werden soll, dann muss bei "DBNummer"
W#16#0001
angegeben werden.

Antworten