Targetvisu: Dynamische Textliste mit Stringvariable kombinieren

_Eddi_

Level-1
Beiträge
168
Reaktionspunkte
26
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich benutze die Targetvisu von Beckhoff, und stehe vor folgendem Problem:
Ich habe ein Rechteck (als Tabelleneintrag/Template), in dem eine Integer-Variable vorgibt, welcher Text aus einer Textliste ausgegeben wird. Das funktioniert soweit so gut, aber nun hat sich die Anforderung geändert, und ich muß neben diesen vorgefertigten Texten auch noch die Möglichkeit haben, einen aus anderer Quelle stammenden String darzustellen.

Mein normaler Ansatz wäre es, zwei verschiedene Visualisierungselemente zu nehmen, und eins davon unsichtbar zu schalten, aber da es sich um einen Tabelleneintrag handelt, kann ich das nicht machen.

Hat jemand Ideen, wie man das ohne großartige Architekturanpassungen umsetzen könnte? Z.B. die Textliste aus dem Programm auslesen oder gar verändern?
 
Mein Vorschlag wäre den String immer über die PLC zu routen und dort die Fallunterscheidung zu treffen.
In der Targetvisu würde also immer der String aus der PLC angezeigt werden.
Code-Schnipsel (ohne Sprachumschaltung!)
DynamicTextGetDefaultText:
Default-Wert


PROGRAM MAIN
VAR
sTextList : STRING := 'Port_851.TL_Test'; // Port der PLC und Name der Textliste
sTextListID : STRING := 'Error_1'; // ID als String
pText : POINTER TO STRING;
sDefaultText : STRING;
END_VAR


pText := VisuElems.cmpDynamictext.DynamicTextGetDefaultText(ADR(sTextList), ADR(sTextListID));
sDefaultText := pText^;
 
DynamicTextGetText:
DynamicTextGetText gibt erst einen Text zurück, nachdem ein Client geöffnet worden ist. Wert entsprechend der gewählten Sprache


PROGRAM MAIN
VAR
sTextList : STRING := 'Port_851.TL_Test';
sTextListID : STRING := 'Error_1';
pText : POINTER TO STRING;
sText : STRING;
END_VAR


pText := VisuElems.cmpDynamictext.DynamicTextGetText(ADR(sTextList), ADR(sTextListID));
sText := pText^;
 
Ich wollte das Problem endlich mal angehen, aber bekomme weder aus DynamicTextGetText noch aus DynamicTextGetDefaultText einen nichtleeren String raus.
 
Das Projekt kann ich natürlich nicht hier hochladen, aber im Wesentlichen hab ich nur die obigen Zeilen abgetippt. Der Funktionsaufruf funktioniert, und gibt mir einen Pointer zurück, aber wenn ich den auflöse kommt nur ein leerer String bei raus.

Ich wüßte auch nicht, wie ich an mehr Details komme
 
DynamicTextGetText:
DynamicTextGetText gibt erst einen Text zurück, nachdem ein Client geöffnet worden ist. Wert entsprechend der gewählten Sprache


PROGRAM MAIN
VAR
sTextList : STRING := 'Port_851.TL_Test';
sTextListID : STRING := 'Error_1';
pText : POINTER TO STRING;
sText : STRING;
END_VAR


pText := VisuElems.cmpDynamictext.DynamicTextGetText(ADR(sTextList), ADR(sTextListID));
sText := pText^;

was ist mit einem geöffneten Client gemeint?
Ich habe in TC3 ein neues Projekt erstellt, den obigen Code, einen VisuManager und eine TargetVisu eingefügt, die Konfig aktiviert. Natürlich auch eine entsprechende Textliste und nun bekomme ich nur einen leeren String.

den default text bekomme ich auch mit dynamicTextGetDefaultText, aber ich habe hier verschiedene sprachen..
also was hat es mit dem geöffneten Client auf sich, da bin ich gerade ratlos?
 
Zuletzt bearbeitet:
Zurück
Oben