Step 7 Variable Zugriff finden

manseluk

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

In einem nicht von mir gschriebenen Programm möchte ich gerne ein paar Optimierungen übernehmen. Das Problem ist, dass ich bei einer Variable nicht herausfinde, von wo sie beschrieben wird. Anzeigen der Referenzposition ergibt keine Treffer, ebenfalls überprüfte ich alle FBs und FCs welchen den DB aufrufen (die jeweiligen Bausteine fand ich über die Bausteinkonsistenz), ohne Erfolg.
Anschliessend kopierte ich das ganze Projekte und löschte im kopierten Projekt die Variable und ging den Fehlermeldungen nach, wieder ohne neuen Erkentnisse.
Ich vermute, dass die Variable via indirekte Adressierung beschrieben wird.
Hat jemand von Euch noch eine Idee, wie ich den Zugriff herausfinden kann?

Verwendet wird ein CPU319-3 DP/PN und STEP7 V5.5 + SP2

EDIT: Via OP wird die Variable wird nicht via OP beschrieben.

Vielen Dank
Manseluk
 
Zuletzt bearbeitet:
Das kann mehrere Ursachen haben, kommt die Variable von einer Schnittstelle ( DP/DP Koppler, OPC o.ä.) dann wirst du nur Lesezugriff finden. Wird der Spaß irgendwo indirekt bearbeitet mußt du suchen, am besten nicht nach der Variable sondern nach Bedingungen die da sein müssen um die Stelle zu bearbeiten. Da kommt man meist sehr schnell in die Nähe.
Es gibt auch Programmierer, die lesen alle Eingänge indirekt und schreiben sie in DBs, zum Schluß wird das dann wieder indirekt auf Ausgänge geschrieben...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Naja ... wenn der Zugriff über einen Pointer erfolgt dann ist es schwierig. Du mußt dann in deinem Programm nach der indirekten Adressierung suchen und schauen, ob es passen könnte.
Dazu gibt es m.E. keine automatisierte Programm-Unterstüzung ...

Gruß
Larry
 
Wenn es ein Datenbaustein ist, kannst du das Programm in Plcsim testen. Dann löschst du den Datenbaustein (oder verkürzt ihn) und alle Fehler-OBs aus der SPS, sodass diese in Stop geht wenn darauf zugegriffen wird. Über die Fehlerstacks kannst du dann nachvollziehen von wo aus die Zugriffe erfolgten.
 
Eine Möglichkeit, sowas aufzustöbern ist auch, alle Aufrufe der SFC20 Blockmove zu prüfen.(Rechtsklick auf irgendeine Variable -> Gehe zu Verwendungsstelle -> nach SFC20 suchen) Evtl. findest du dort einen Zeiger, der auf deinen Variablenbereich passt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist der DB vielleicht ein Instanz-DB? Dann suche in dem zugehörigen FB.

Indirekte Zugriffe: suche nach "AUF"-Operationen und nach "["
Hilfreich ist es, eine AWL-Quelle mit "Operanden (x) Absolut" über viele/alle Programmbausteine (OB, FB, FC) zu generieren und darin zu suchen.

Harald
 
Zurück
Oben