TIA Alternative zu GetInstancePath

Redbullthd

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

kennt jemand eine Alternaitve zu den Siemensbaustein GetInstancePath?
aktuell nutze ich diesen in meinen Standardbausteinen sehr gerne, da er genau das macht was ich benötige.
Allerdings benötigt der Baustein ja sehr viel Platz im Ladespeicher der CPU.
Da dieser mitlerweile entsprechend oft im Programm aufgerufen wird, komme ich langsam an die Grenzen meiner CPU.
Verwendet wird TIA V21.

Für eine Idee oder Alternative um das gleiche Ergebnis des Bausteins zu erhalten wäre ich sehr dankbar.
 
Die Frage ist halt erstmal für was du den Baustein nutzt.
Ich kenn den eigentlich nur in Verbindung mit Diagnose- und Fehlermeldungen.
Und da ist Program Alarm oder ProDiag auch ne Alternative.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich nutze den Baustein eben um den Pfad der Instanz auszulesen.
Diese Information gebe ich dann über eine Variable zum Unified Panel.
Im Panel werden dann über diverse Skripte Filter und Archivvariablen geblidet.
 
Alternativ bliebe die Möglichkeit, den Instanz Pfad direkt händisch an den Bausteine per Schnittstelle zu übergeben.
Es bleibt natürlich das Copy und Paste Risiko oder schlichtweg, dass man, was falsches eingibt.
Diese Sorgen nimmt einen natürlich GetInstancePath ab
 
Alternativ bliebe die Möglichkeit, den Instanz Pfad direkt händisch an den Bausteine per Schnittstelle zu übergeben.
Die händische Eingabe könnte man ja eventuell über Openness automatisieren.
Der Instanz-Name ändert sich ja schließlich nicht zur Laufzeit. Also könnte der Instanz-Name ja auch Offline durch Openess an den Baustein übergeben werden. Spart Speicher und Zykluszeit.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Alternativ bliebe die Möglichkeit, den Instanz Pfad direkt händisch an den Bausteine per Schnittstelle zu übergeben.
Es bleibt natürlich das Copy und Paste Risiko oder schlichtweg, dass man, was falsches eingibt.
Diese Sorgen nimmt einen natürlich GetInstancePath ab
Das wäre auch meine Notlösung gewesen.

Die händische Eingabe könnte man ja eventuell über Openness automatisieren.
Der Instanz-Name ändert sich ja schließlich nicht zur Laufzeit. Also könnte der Instanz-Name ja auch Offline durch Openess an den Baustein übergeben werden. Spart Speicher und Zykluszeit.
Leider hatte ich mit Openness bis jetzt noch nichts zu tun, aber wie würde man denn so etwas machen?
 
Eine echte Alternative zu GetInstancePath gibt es leider nicht. Wenn du nur den Pfad für Meldungen oder Logging brauchst, würde ich ihn nicht zur Laufzeit holen, sondern einfach eine Kennung oder einen Namen pro Instanz mitgeben (STRING oder ID). Das spart deutlich Speicher.

GetInstancePath ist bekannt dafür, relativ viel Ladespeicher zu brauchen, besonders wenn er oft verwendet wird. Deshalb versuchen viele, solche Infos lieber parametriert oder über IDs zu lösen statt über Systemfunktionen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Könnte man damit TIA austricksen? (Wahrscheinlich nicht aber ein Versuch wäre es mal wert.

Code:
FB_GetInstancePath:

VAR_OUT
    o_wsGetInstancePath     : WSTRING;
END_VAR

o_wsGetInstancePath := GetInstancePath(255);


// ===============================================================
FB_Main:

VAR_STATIC
    fbGetInstancePath         : FB_GetInstancePath;
    fbSub1                            : FB_Sub1;
    wsInstcancePath            : WSTRING;
END_VAR

fbGetInstancePath(o_wsInstancePath => wsInstancePath);
fbSub1(io_fbGetInstancePath := fbGetInstancePath);
// ...

// ===============================================================
FB_Sub1:

VAR_IN_OUT
    io_fbGetInstancePath         : FB_GetInstancePath;
END_VAR
VAR_STATIC
    wsInstcancePath            : WSTRING;
END_VAR

io_fbGetInstancePath(o_wsInstancePath => wsInstancePath);


Ist eventuell GetBlockName leichter, so dass man beim selber zusammensetzen des Instanzpfad etwas Ladespeicher sparen kann?
 
Zurück
Oben