Step 7 AWL-Programm Verständnisprobleme

janoro

Level-1
Beiträge
29
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe an einer Anlage das Problem, das die Chargenverfolgung nicht korrekt abläuft. Diese Überträgt zuzeit dauerhaft. Leider steige ich nicht so ganz durch das Programm durch.
Nach meinem Verständnis muss der Ausgang "Ziel_frei" gesetzt werden damit die Datenübertragung wieder gestoppt wird.

Wenn ich mir dann den Baustein anschaue, verstehe ich das so das das Problem im Vergleich des Adress Registers 2 =0 liegt oder ?

Wie kann oder wird denn der Wert im Adress Register 2 verändert?

Oder verstehe ich das ganze falsch?

Vielen Dank für Eure Hilfe.

Kopieren.JPGAufruf FC.JPG
 
Moin,

die Variablen #Ziel und #Quelle sind Pointer die auf eine Speicherzelle im Chargen DB zeigen.
Ist der Wert [DWORD] (Pointer #Ziel) == 0 wird der Wert mit dem Wert aus Pointer #Quelle überschrieben (NW2). Die Wert (Pointer #Quelle) wird anschließend mit 0 überschrieben.
Ist der Wert [DWORD] (Pointer #Ziel) <> 0 wird der FC ohne weitere Bearbeitung beendet.

Ich hoffe es hilft Dir ein wenig weiter.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ah also ganz präzise wenn der
DB935.DBD974 ==0 ist. Wird der DB935.DBD902 = dem Wert aus DB.935.DBD974 gesetzt und anschließend der DB.935.DBD974 =0 gesetzt.
Dann wird auch der Ausgang Ziel_frei =1 gesetzt?

Das bedeutet da das Ziel_frei bei mir immer =0 ist. Ist der DB.935.DBD974 nicht =0?

Richtig soweit?


Gesendet von meinem SM-G920F mit Tapatalk
 
#ziel_frei wird sofort wieder zurückgesetzt wenn DB935.DBD974 ==0 ist. Du wirst es unter umständen also gar nicht so schnell sehen.
Du könntes zu Debug zwecken mal versuchen einen Zählen einzubauen, dann erkennst du wie oft die Kopieraktion stattfindet.
Code:
z.B
L MW100 // Freies Merkerword
L 1
+I
T MW100

PS:
Mit dem M283.7 = TRUE wird ebenfalls die Kopieraktion gestartet.
 
Hm werde das mit dem Zähler mal testen. Kann es mir aber nicht vorstellen das es so schnell geht. Da die Chargen ca. alle 2 Minuten nur kopiert werden müssen.

Gesendet von meinem SM-G920F mit Tapatalk
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Diese Überträgt zuzeit dauerhaft.
Nach meinem Verständnis muss der Ausgang "Ziel_frei" gesetzt werden damit die Datenübertragung wieder gestoppt wird.
In deinem Screenshot läuft aber kein kopieren mehr ab.
Das kopieren (Übertrage DB935.DBD902 auf DB935.DBD974) wird in dem Screenshot bereits übersprungen weil entweder "Ziel frei" oder "kopieren" auf FALSE ist.

Beim Sprungbefehl in Netzwerk 1 steht...
Wenn Nicht-"Ziel-Frei" oder Nicht-"kopieren" dann springe auf "ENDE".

Frei übersetzt
Code:
Netzwerk 1

Öffne Datenbaustein 935
Lade Byteadresse 902 in Adressregister 2

Lade DB935.DBD902 (Kombination aus geöffnetem DB und Byteadresse in AR2)
Vergleiche auf gleich 0
Ziel_frei = Ergebnis (Da in DB935.DBD902 der Wert 2000 steht ist das Ergebnis FALSE)

Entweder "kopieren" = FALSE
Oder  "Ziel_frei" = FALSE
Dann springe auf Marke "ENDE"

Sonst...
Rücksetze "kopieren"
Rücksetze "Ziel_Frei"
Bearbeite Netzwerk 2

Netzwerk 2
Lade Byteadresse 974 in Adressregister 1

Kopiere DB935.DBD902 auf DB935.DBD974
Setze DB935.DBD902 auf 0

Grundsätzlich sehe ich 2 Fehler im Code
1: Rücklesen eines Ausgangs "Ziel_frei" bei FC. Sollte zwar bei dem hier gezeigten Funktionieren, kann aber schnell bös ins Auge gehen. Am besten zuerst einen interen Temp verweden.
Code:
==D
[COLOR=#ff0000]= Ziel_Frei_Tmp[/COLOR]
= Ziel_frei

ON kopieren
[COLOR=#ff0000]ON Ziel_frei_tmp[/COLOR]

2: Das "kopieren" wenn ich's richtig sehe nicht zurückgesetzt wird.
[EDIT]Ist kein Fehler, SPB setzt das VKE korrekt, siehe nächster Beitrag[/EDIT].
Code:
ON kopieren
ON Ziel_frei
SPB ENDE

[COLOR=#0000ff]----------------- Der Code wird jetzt nur bearbeitet wenn das VKE zuvor FALSE war[/COLOR]
[COLOR=#ff0000][B]SET[/B][/COLOR]
[COLOR=#0000ff]----------------- Hier kommen aber jetzt zwei Operationen die nur bei VKE=TRUE ausgeführt werden.[/COLOR]
R kopieren     //Diese Operation sollte also niemals in der Lage sein "kopieren" auf FALSE zu setzen
R Ziel_frei      //"Ziel_frei" wird zwar von alleine FALSE, aber nicht durch diese Operation sondern nur wegen der Zuweisung oben.

//Damit die Reset-Befehle gehen müsstest du ein SET (Und Logisch 1) davor einfügen.
Vielleicht ist dein Problem das "kopieren" nie rückgesetzt wird.
Setz mal "kopieren" auf 1 und schaue ob es rückgesetzt wird...
Hoffe das hilft.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Damit also der Ausgang "Ziel_frei" gesetzt wird, muss der DB935.dbd974 =0 sein. Also muss ich nun schauen wie der DB935.DBD974 beschrieben wird.

@Ronin ich vermute das was du als Fehler bezeichnest, sind nur Schönheitsfehler? Da der Baustein ja mehrfach im Programm verwendet wird und sonst auch funktioniert.

Danke nochmal an alle für die super schnelle Hilfe. Ich vermute mal für euch ist so ein Baustein recht einfach.
Mein Problem ist, das wir immer die Anlagen hingestellt bekommen und sobald etwas nicht klappt muss man auf Fehlersuche gehen. Und da bin ich noch recht unerfahren in Sachen AWL.
 
Zurück
Oben