PL7 Junior Programm Beginner

kerumi

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,
ich wurde kürzlich vor ein PL7 programm gesetzt, dass ich entziffern soll, da dort keine kommentare drin sind. Mit meinen Kenntnissen konnte ich ca.80% entziffern.
Jedoch stehe ich bei den spezifischen Befehlen wie Operate und Compare an.

Kennt jemand eine Hilfeseite, wo ich die Bausteinhilfe lesen kann?
Oder kann mir jemand folgende Fragen beantworten:

Operate Baustein:
- %MW200:4=0 bedeutet ja, dass MW200 auf null gesetzt wird wenn die Bedingung XY erfüllt ist?
- Write_Var(ADR#0.1.1,'%MW',704,1,%MW40:1,%MW200:4) --> Was wird hier gemacht? Irgendwelche Variablen geschrieben?

Merkerwords:
- Was bedeuten die Nummern hinter dem ":" beim Merkerword? z.B %MW200:4 --> :4 ??

Compare:
- Wie genau funktionieren die Compare Bausteine?

Habe


Unbenannt.PNG

Was genau wird hier verglichen und herausgegeben?

Systembausteine:
- Was genau sind Systembausteine und wie werden sie genutzt?
 
Hallo
Suche mal bei Schneider nach der Doku "TXTDRPL73V52G".
- Was bedeuten die Nummern hinter dem ":" beim Merkerword? z.B %MW200:4 --> :4 ??
Der : zeigt an, dass es sich um ein Array handelt. in diesem Fall 4 Elemente.
- Write_Var(ADR#0.1.1,'%MW',704,1,%MW40:1,%MW200:4) --> Was wird hier gemacht? Irgendwelche Variablen geschrieben?
Eine Kommunikation zu einem Partner aufgebaut und ein Datenarray gesendet.
Code:
WRITE_VAR(Address, Object_Type, First_Object, Object_Number, Data_to_Write, Management_Param);
Objekttyp = MW
erste Objekt = %MW704
Anzahl = 1
DatenArray= %MW40 ab Element 1
Managment ( abhängig von der PLC)
 
Zuletzt bearbeitet:
Wieso MW203 auf 0? gemäss des vorerigen posts würde ja das array 4 auf null geschrieben werden?
oder verstehe ich das jetzt komplett falsch?
 
"COMPARE %C0.V > 15" ergibt TRUE, wenn vom Zähler %C0 der aktuelle Wert (value) > 15 ist

%MW200:4 meint den Speicherbereich/"Worttabelle"/Array %MW200..%MW203, die 4 ist die Länge des Bereichs (Anzahl Worts der Worttabelle)

%MW200:4=0 müsste ein Vergleich sein, ob %MW200..%MW203 alle 0 sind
Im Zusammenhang mit OPERATE müsste da eigentlich ":=" als Zuweisung stehen, dann müsste es bedeuten, daß %MW200..%MW203 alle auf 0 geschrieben werden.

WRITE_VAR ist eine Kommunikationsfunktion (siehe Handbuch Kommunikation Teil 1)

Handbücher findest Du hier
https://www.se.com/de/de/search/pl7?filters=CAT_PRD_DOC&ddcDocType=1555855&plang=FLT_DOCLANG_DE
insbesondere diese Handbücher
35002981_K01_001_01 PL7 auf einen Blick
35015368_K01_001_01 PL7 Software Referenzhandbuch
35013157_K01_003_01 PL7 Referenz Anhänge
35011069_K01_002_01 PL7 Referenz Anweisungen und Funktionen
35015312_K01_000_01 PL7 Implementierung Diagnosefunktionen

35005136_K01_001_00 PL7 V4.3 Kommunikation 1
35005136_K01_002_02 PL7 V4.3 Kommunikation 2
35005136_K01_003_00 PL7 V4.3 Kommunikation 3

35012336_K01_001_02 PL7 V4.5 Kommunikation 1
35013158_K01_002_02 PL7 V4.5 Kommunikation 2
35009574_K01_003_01 PL7 V4.5 Kommunikation 3

ggf. versuche die Handbuch-Nummer direkt in diesen Link einzutragen: https://www.se.com/de/de/download/document/35011069K01000/

Harald
 
Hallo Kerumi

Nochmal ausführlich
Mit einem : kann man einem Speicherbereich als dynamisches Array deklarieren. Egal wie die Variablendefinition ist.
Diese Funktion muss explizit im Controller freigeschaltet werden.
als erstest wird das Start Speicherregister angegeben. In deinem Fall %MW200. Nach dem : wird die Länge angegeben. in deinem Fall 4 Register.
Das Array umfasst jetzt also Die Speicherstellen %MW200, %MW201, %MW202 und %MW203.
Bei
Code:
 %MW200:4=0
fehlt sicherlich der ":". Der korrekte Ausdruck muss %MW200:4:=0; heißen.
In diesm Fall wird das Array beginnend ab %MW200 mit einer Länge von 4 Elementen mit 0 gefüllt.
Im Zusammenhang mit Write_Var wird dadurch die Verwaltungstabelle der Managment Parameter gelöscht.
Als nächster Befehl sollte "%MW202:=" kommen. Da die Verwaltungstabelle gelöscht wurde muss der TimeOut Parameter neu gesetzt werden.

Nachtrag:
Die Management Parameter umfassen ein Array [0..3] of Int. Wobei Array[0] und [1] vom System verwaltet werden. [2] (Timeout) & [3] (Länge) müssen vom Benutzer verwaltet werden.


Holger
 
Zuletzt bearbeitet:
Zurück
Oben