Step 7 Frage: Aufbau Any-Pointer

Zuviel Werbung?
-> Hier kostenlos registrieren
... Ein Querverweis führt durch diese super übersichtliche und verständliche kacke leider auch ins Leere…

Vielleicht wird auch nur ein Teil des DINT beim Pointern fälschlicherweise überschrieben. Lade einfach an verschiedenen Stellen im Programm den Wert, um zu sehen, ober er an irgendeiner Stelle vielleicht noch stimmt.

Suche auch nach den Querverweisen des FBs!
 
Zuletzt bearbeitet:
Ist der ZielDB ein großes Sammelbecken für alle I-Device-Eingänge oder hat jedes I-Device seinen eigenen DB?
In PLCSIM kannst du gefahrlos den ZielDB "online" löschen (und den Code für das 1500-Device überspringen) und sehen, wo überall Schreib-Zugriffsfehler auf den DB auftreten. Dann aussortieren, welche Fehler logisch OK sind und welche durch den falschen Zugriff entstehen.
Oder im OB1 durch einfügen von BE das Aufrufen von nachfolgendem Code unterdrücken. Z.B. in der Mitte anfangen und je nachdem, ob die Zugriffsfehler aufhören oder das Überschreiben aufhört, das BE nach weiter vorn oder weiter hinten im OB verschieben. Sollten korrekte Zugriffsfehler aus anderen OB-Ebenen auftreten, dann am einfachsten den betreffenden OB "online" löschen.
Oder du näherst dich der Fehlerstelle, indem du an verschiedenen Programmstellen den Wert liest. Dabei am besten auch ungefähr in der Mitte des Programms beginnen und weiter nach hinten oder weiter nach vorne gehen, bis die Codestelle gefunden ist, wo der Wert verändert wird. Direkt am Anfang des OB1 einen markanten Wert in die E-Adresse des DINT schreiben: L 1234 / T ED100

PS: der gezeigte AWL-Code mit dem Basteln der ANY-Pointer und BLKMOV sieht OK aus. Wenn sichergestellt ist, dass die Pointer immer vor Verwendung zusammengebastelt werden.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist der ZielDB ein großes Sammelbecken für alle I-Device-Eingänge oder hat jedes I-Device seinen eigenen DB?
Jedes I-Device hat seinen eigenen DB, es ist also kein großes Sammelbecken wo mal "aus Versehen" etwas überschrieben werden kann.
In PLCSIM kannst du gefahrlos den ZielDB "online" löschen (und den Code für das 1500-Device überspringen) und sehen, wo überall Schreib-Zugriffsfehler auf den DB auftreten. Dann aussortieren, welche Fehler logisch OK sind und welche durch den falschen Zugriff entstehen.
Oder im OB1 durch einfügen von BE das Aufrufen von nachfolgendem Code unterdrücken. Z.B. in der Mitte anfangen und je nachdem, ob die Zugriffsfehler aufhören oder das Überschreiben aufhört, das BE nach weiter vorn oder weiter hinten im OB verschieben. Sollten korrekte Zugriffsfehler aus anderen OB-Ebenen auftreten, dann am einfachsten den betreffenden OB "online" löschen.
Oder du näherst dich der Fehlerstelle, indem du an verschiedenen Programmstellen den Wert liest. Dabei am besten auch ungefähr in der Mitte des Programms beginnen und weiter nach hinten oder weiter nach vorne gehen, bis die Codestelle gefunden ist, wo der Wert verändert wird. Direkt am Anfang des OB1 einen markanten Wert in die E-Adresse des DINT schreiben: L 1234 / T ED100

PS: der gezeigte AWL-Code mit dem Basteln der ANY-Pointer und BLKMOV sieht OK aus. Wenn sichergestellt ist, dass die Pointer immer vor Verwendung zusammengebastelt werden.
Danke dir für deine Tipps. Die werde ich jetzt mal nacheinander abarbeiten und den Fehler suchen.
Aktuell sitze ich noch in der Produktion, führt das aber nicht schnellstmöglich zum Erfolg, wird ein Testaufbau gemacht...
 
Jedes I-Device hat seinen eigenen DB, es ist also kein großes Sammelbecken wo mal "aus Versehen" etwas überschrieben werden kann.
Das erleichtert die Fehlersuche ungemein, wenn da nur an einer Stelle in den DB geschrieben wird. Dann brauchst du im CPU-Diagnosepuffer nur nach den Zugriffsfehlern beim Schreiben suchen nach Löschen des DB. Oder aktiviere in den Eigenschaften des DB "schreibgeschützt im AS".

Aktuell sitze ich noch in der Produktion, führt das aber nicht schnellstmöglich zum Erfolg, wird ein Testaufbau gemacht...
Um den Fehler mit PLCSIM zu suchen, brauchst du keinen Testaufbau, sondern nur PLCSIM.
Beachte: sobald PLCSIM gestartet ist, werden vorsichtshalber alle Online-Verbindungen des PG in "PG/PC-Schnittstelle einstellen" deaktiviert. Nicht dass der gestresste Programmierer womöglich versehentlich Code in realen erreichbaren PLC löscht ... An die Anlage kommst du dann erst wieder, wenn du PLCSIM beendest. (Oder wenn du ein 100%-super-konzentrierter Programmierer bist ;), dann kannst du mit verschiedenen VMs gleichzeitig arbeiten.)

PS: für die Suche mit PLCSIM würde ich mit einer Kopie des aktuellen Step7-Projektes arbeiten, damit nicht versehentlich das aktuelle Projekt verändert wird.
 
Zuletzt bearbeitet:
Zurück
Oben