Pointer zum Ausgänge rücksetzen?

Astralavista

Level-1
Beiträge
799
Reaktionspunkte
112
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Habe im Moment ein Problem mit einem SPS-Programm in dem ich einige Änderungen vornehmen soll.
Und zwar werden in dem Programm sämtliche Ausgänge immer nur gesetzt, aber nirgends zurückgesetzt. Auch in den Referenzdaten ist nichts zu finden ala

L 0
T AW 10

oder Sonstiges.

Meine Vermutung ist das irgendwo am Programmanfang die Ausgänge mit einem Pointer zurückgesetzt werden. Das Programm ist schon recht groß, läuft auf einer 416-2 und ist komplett in AWL.
Wie gehe ich vor um die Stelle zu finden wo die Ausgänge zurückgesetzt werden? Wie könnte das noch gemacht sein?
 
Hallo,
also mehr als die Ausgänge Null-Setzen kannst Du ja nicht.
L 0
T AW xx
macht ja nichts anderes als das ganze Ausgangswort mit Null beschreiben.
Es werden alle 16 Bit des Wortes mit Null belegt.
Ich habe diese Art der Ausgangsbearbeitung schon am Ende des OB1 angewendet (natürlich mit bedingter Anweisung) um z.B. bei Not-Aus die Ausgänge auf Null zu halten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@tschortscho51

Leider gibt es in dem Programm aber keine solche Anweisung. Deswegen bin ich ja so verwirrt, weil ich absolut nichts finde. Das Programm ist auch richtig schlecht dokumentiert. :confused:
 
Also ich kann nicht glauben, dass jemand so programmiert. Wenn doch gehört ihm das PG weggenommen.

Solltest du recht haben mit deiner Vermutung (alle Ausgänge auf Null schreiben), dann muss das ganz am Anfang im OB1 geschehen. Da dann alle Ausgänge je nach VKE wieder neu beschrieben werden können.
 
So ist es definitiv gemacht, aber ich finde das einfach nicht.
Mein Problem ist das ich eine komplette Station umprogrammieren muss, von denen einige Ausgänge auch von anderen Stationen benutzt werden.
Jetzt habe ich den "alten" Ausgang der anderen Stationen auf Merker gelegt, die dann mit meinem neuen Programm verodert sind. Leider setzen sich diese Merker aus dem alten Programm nicht mehr zurück.
Mein neues Programm funktioniert soweit fehlerfrei. Aber ich finde diese verdammte Zuweisung im alten Programm nicht wo die Ausgänge zurückgesetzt werden. Im AWL-Code sind nur "S AX.X" Anweisungen, sonst nichts.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie auch immer, es muss am Anfang geschehen. Vermutlich durch eine Schleife. Aber den Meschen der das verbrochen hat, würde ich mir zur Brust nehmen.

Eventuell hilft dir das hier noch weiter.
 
Zuletzt bearbeitet:
Hallo!

Und zwar werden in dem Programm sämtliche Ausgänge immer nur gesetzt, aber nirgends zurückgesetzt. Auch in den Referenzdaten ist nichts zu finden ala

L 0
T AW 10

oder Sonstiges.

Meine Vermutung ist das irgendwo am Programmanfang die Ausgänge mit einem Pointer zurückgesetzt werden. Wie gehe ich vor um die Stelle zu finden wo die Ausgänge zurückgesetzt werden? Wie könnte das noch gemacht sein?


es gibt verschiedene möglichkeiten um ausgänge zurück zu setzen. jeder hat da seine vorlieben...
hast du dir schon mal die querverweise angeschaut? da steht doch drin wo die ausgänge gesetzt und rückgesetzt werden
 
es gibt verschiedene möglichkeiten um ausgänge zurück zu setzen. jeder hat da seine vorlieben...
hast du dir schon mal die querverweise angeschaut? da steht doch drin wo die ausgänge gesetzt und rückgesetzt werden

Da steht es aber nur drin, wenn Ausgänge, Merker oder Datenbaustein-Wörter vollqualifiziert programmiert werden. Wenn du also einen Pointer oder DB-Aufrufe mit AUF DB xx verwendest, ist es Essig mit Querverweisen und Referenzen.

Gruß
Jörg
 
Vorgehen könntest du z.B. so:
Setz im OB1 jeweils zwischen 2 Bausteinaufrufe ein " L AWxy", dann kannst du per Beobachten herausfinden, in welchem Baustein das Rücksetzen gemacht wird. In diesem Baustein dann analog weitermachen, bis du den Code gefunden hast.
Ich bin mal auf die Auflösung gespannt ...

Grüße von HaDi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Würde ich echt gern machen.
Ist aber leider nicht das Programm von uns bzw von unserem Kunden, deswegen mag ich das eigentlich nicht online stellen weils nicht von mir selber ist.

wir können dir halt nur helfen soweit du uns infos gibst.

Da steht es aber nur drin, wenn Ausgänge, Merker oder Datenbaustein-Wörter vollqualifiziert programmiert werden. Wenn du also einen Pointer oder DB-Aufrufe mit AUF DB xx verwendest, ist es Essig mit Querverweisen und Referenzen.

Gruß
Jörg

ja da geb ich dir recht aber ich bin mir zu 99 % sicher das hier kein pointer verwendet wird.würdest du das rücksetzen über einen pointer machen?
 
Also ...
Erstmal danke an alle Antworten!!! Haben mir wirklich weiter geholfen!
ich habe den Baustein gefunden.
1. Der gefundene Baustein war Know-How geschützt. Nach entfernen des Know-How Schutzes habe ich ihn auch verstanden.
2. Der Baustein löscht über einen Pointer in einer Schleife alle Ausgänge am Anfang des OB1.

Mein Gott hat mich das jetzt Nerven gekostet! :)

Aber wenn jemand Interesse hat stelle ich den Code von diesem Baustein mal hier online. Aber wenn dann erst heute Nachmittag. Jetzt geht erstmal die Inbetriebnahme weiter. Wobei ich da jetzt keine weiteren Schwierigkeiten mehr sehe.

Echt ein gutes Forum. Lob an alle!!

Gruß Ingo
 
Zurück
Oben