TIA Merker durch DB-Variablen ersetzen

craig1406

Level-2
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen.

Ich habe in meinem Factory I/O Projekt sämtliche Statussignale (wie z.B. Belegtmeldungen, Störmeldungen und Laufmeldungen der Rollenbahnen) über Merker gespeichert.

Da ich das Projekt jetzt sauberer aufbauen möchte, will ich diese Signale nicht mehr in Merkern, sondern gesammelt in einem Datenbaustein verwalten.

Das Problem ist, dass die bisherigen Merker bereits an vielen Stellen im Projekt verwendet werden. Für die Umstellung müsste ich daher jeden einzelnen Merker durch die jeweils passende DB-Variable ersetzen.


Meine Frage wäre daher:
Gibt es in TIA V17 eine Möglichkeit im gesamten Projekt die entsprechenden Merker jeweils durch die DB-Adresse zu ersetzen, ohne jede Verwendungsstelle einzeln anpassen zu müssen?

Danke im Voraus!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Je nachdem, wie das Programm rund um die Merker programmiert ist, kann es zu Problemen führen, wenn man einfach die Merker zu DB-Variablen ändert ohne sich die Verwendungsstellen anzusehen. Weil durch den Zugriff auf die DB-Variable der gerade offene DB zum DB der Variable eventuell geändert wird (Stichworte: DBNO, DINO, DB-Register). Hat man z.B. ein Programm im S5-Stil mit irgendwo "AUF DB ..." und danach nur noch unqualifizierte Zugriffe DBX../DIX.., dann darf man da nicht den offenen DB/DI verändern.
 
PS: Welche CPU hast du denn?
Das Programm wurde vermutlich von einem älteren Programm migriert?

Weiters zu beachten: falls die Merker als FC-Parameter übergeben werden, werden Werte aus Merkern anders als Werte aus DB übergeben (Stichwort: Call by Value, Call by Reference).

Beim Ersetzen von Merkern durch DB-Variablen wird in der Regel das Programm größer - passt das dann noch in die CPU?
 
PPS: womöglich gibt es auf die Merker Bit-Zugriffe und Word-Zugriffe? Bei Merkern ist es kein Problem, Symbole auf Byte/Wort/Doppelwort zu legen und gleichzeitig Symbole auf die einzelnen Bits darin. Bei DB geht das nicht.
 
Über eine VCI Verbindung, die Bausteine exportieren und extern mit z.B. VS Code, Notepad++ oder Ultra Edit suchen ersetzen oder Refactoring ersetzen. Dann wieder über VCI importieren.
 
Über eine VCI Verbindung, die Bausteine exportieren und extern mit z.B. VS Code, Notepad++ oder Ultra Edit suchen ersetzen oder Refactoring ersetzen. Dann wieder über VCI importieren.
So würde ich das ganze auch angehen.
Eine TIA-interne Funktion könntest du vllt über die Openess-Schnittstelle umsetzen, aber etwas fertiges wäre mir nicht bekannt.

Natürlich unter den von @PN/DP angemerkt ein Punkten, dass dir sowas aufgrund der geringfügig anderen Verarbeitetung, je nach Code, auch mal schnell um die Ohren fliegen kann ¯⁠\⁠_⁠(⁠ツ⁠)⁠_⁠/⁠¯
 
Zuviel Werbung?
-> Hier kostenlos registrieren
PS: Welche CPU hast du denn?
Das Programm wurde vermutlich von einem älteren Programm migriert?

Weiters zu beachten: falls die Merker als FC-Parameter übergeben werden, werden Werte aus Merkern anders als Werte aus DB übergeben (Stichwort: Call by Value, Call by Reference).

Beim Ersetzen von Merkern durch DB-Variablen wird in der Regel das Programm größer - passt das dann noch in die CPU?
Also ich emuliere mit PLCSIM die 1511-PN und das Programm habe ich auch nicht migriert, sondern komplett in V17 auf dieser CPU aufgebaut.
Die Merker werden aktuell nur an meinen Rollenbahn FBs, sowie den Transportmerkern der Rollenbahnen verwendet. Es sind (bis jetzt) nur Bool-Variablen, welche an die FBs als Input übergeben werden.


Und zum Thema CPU Größe konnte ich leider nichts genaues finden, wenn die CPU mit PLCSIM emuliert wird. Hatte bisher aber noch keine Probleme gehabt
 
das Programm habe ich auch nicht migriert, sondern komplett in V17 auf dieser CPU aufgebaut.
Ok, dann kennst du das Programm und die Verwendungsstellen ja. Dann sollte einfaches Suchen und Ersetzen gehen. Einmal konzentriert durchgehen ...
Gibt es "Umverdrahten" bei TIA ??? Das habe ich bei TIA noch nie benutzt.

Es sind (bis jetzt) nur Bool-Variablen, welche an die FBs als Input übergeben werden.
dann werden die da immer als Kopie in den IDB übergeben, egal ob Merker oder DB-Variablen, also keine Gefahr

Und zum Thema CPU Größe konnte ich leider nichts genaues finden, wenn die CPU mit PLCSIM emuliert wird. Hatte bisher aber noch keine Probleme gehabt
• bei Programmbausteine > Übersicht > Details kann man die Größe jedes einzelnen Bausteins sehen, und vor/nach Ersetzen vergleichen
• bei Programmbausteine > Menü: Werkzeuge > Speicherauslastung kann man die Gesamtgröße des Programms sehen und die Auslastung des Arbeitsspeichers der projektierten CPU und der Speicherkarte
siehe auch TIA Hilfe: Speicherauslastung
 
Zur Not einzeln jeden Merker löschen, dann bekommst du alle Stellen angezeigt die sich nicht Kompilieren lassen und kannst deine DB Variable einfügen.
 
Zurück
Oben