# ecockpit Text in Visuvorlage 3



## Ossi64 (31 März 2020)

Hallo,

ich habe eine Visuvorlage erstellt auf dem sich Buttons und ein Textfeld befinden.
Dazu habe ich einen FB mit Inputs und Outputs erstellt, den ich mehrmals aufrufen kann.
Das funktioniert auch wunderbar, bis auf den Text der auf der jeweiligen Frame erscheinen soll.
Die Eingangsvariable, die sich an dem FB als Input befindet ist ein String.
Leider wird der Text nicht an die Frame weitergeleitet.

Gebe ich den Text so ein, erscheint es auf dem Frame:

```
Tastelement_Lampe_WZ:xLichttasterelement:=(Tastertext:='Deckenlampe WZ');
```

Gebe ich es so ein, erscheint der Text leider nicht auf dem Frame:

```
Tasterlement_Lampe:xLichttasterelement:=(Tastertext:=iTastertext);
```
iTastertext ist die Eingangsvariable an dem FB.

Ich bekomme auch keinen Fehler angezeigt und weiß nicht weiter.

Für eine Lösung wäre ich sehr dankbar.

Gruß
Ossi64


----------



## Ossi64 (5 April 2020)

Hmm,
hat denn niemand eine Lösung?


----------



## ccore (8 April 2020)

Du musst deiner Visu den entsprechenden Baustein zuordnen. Das gleiche gilt für die entsprechenden Variablen.


----------



## Ossi64 (8 April 2020)

Hallo ccore,
danke für deine Antwort.
Das habe ich gemacht.
Alles andere funktioniert ja auch, nur der Text erscheint nicht.
Der erscheint ja schon in der Variable im FB nicht.
Also die Variable (iTastertext) ist als Input am FB und die Variable (Tastertext) wird dem Frame zugeordnet.
Der Text, der im iTastertext steht wirdeinfach nicht in die Variable Tastertext geschrieben.
Wenn ich einen statischen Text in Hochkomma  z. B. 'Hallo' in die Variable Tastertext schreibe, dann erscheint es auch auf der Visu.
Da ich den FB mehrmals aufrufen werde, macht ein statischer Text keinen Sinn.


----------



## Ossi64 (8 April 2020)

Bei dem ersten Programmcode oben mit dem statischen Text 'Deckenlampe_WS' erscheint auf der Visu.
Bei dem zweiten Programmcode möchte ich, dass der Text von der Variable iTastertext in die Variable Tastertext geschrieben wird.
Wenn ich den FB starte, steht der Text auch in der Variable iTastertext und die Variable Tastertext bleibt leer.
Irgendwas stimmt mit der Programmzeile nicht und ich finde es nicht heraus.
Zumal ich auch keinen Fehler bekomme...


----------



## oliver.tonn (8 April 2020)

Wenn der Wert am Eingang erscheint, am Ausgang aber nicht hört sich das stark danach an, dass der FB gar nicht aufgerufen wird.
Zeig mal den Code wo der Aufruf erfolgt. Und was Du in der Visu wo eingetragen hast um das Textfeld mit der Visu zu verknüpfen.

Das Du dynamische Texte auch über Textlisten machen kannst weißt Du? 

Von irgendwas mit Internetzugang gesendet.


----------



## Ossi64 (8 April 2020)

Hallo oliver,
danke für deine Hilfe.
Doch der FB funktioniert.
Alles Andere von dem FB funktioniert ja auch, sprich, Tasterbefehle, LED-Ansteuerungen.
Auch der Text erscheint auf dem Visu, allerdings nur wenn er statisch in die Variable (Tastertext) geschrieben wird. Siehe erster Programmabschnitt weiter oben.
Wenn ich den Text aus der Inputvariable (iTastertext) wie im zweiten Programmabschnitt erstelle, erscheint der Text erst gar nicht in der Variable (Tastertext), wenn
ich online den FB betrachte. Deshalb erscheint er auch logischerweise nicht auf der Visu.


----------



## Ossi64 (8 April 2020)

Ich habe dieses Beispiel von Wago angewendet.

https://www.youtube.com/watch?v=V8og4YTbFq4

Nur das ich keine statische Texte möchte und dafür einen FB erstellt habe.


----------



## oliver.tonn (8 April 2020)

Dann geht was beim Zuweisen schief. Warum willst Du denn überhaupt noch eine zweite Variable nutzen?

Von irgendwas mit Internetzugang gesendet.


----------



## Ossi64 (8 April 2020)

Ja das befürchte ich ja auch, aber ich finde den Fehler nicht.
Ich habe ein FB erstellt mit Eingängen und Ausgang.
Tastereingänge und Ausgang als Bool
Auch der Text, der auf der Visu erscheinen soll ist ein Input (String) am FB (iTastertext)
Genau dieser soll der Variable (Tastertext) der dem Visu zugeordnet ist übergeben werden. Siehe zweiter Programmabschnitt.


----------



## Ossi64 (8 April 2020)

Das hier mit dem statischen Text wird übertragen

```
Tastelement_Lampe_WZ:xLichttasterelement:=(Tastertext:='Deckenlampe WZ');
```

Das hier mit der Inputvariable vom FB funktioniert nicht.

```
Tasterlement_Lampe:xLichttasterelement:=(Tastertext:=iTastertext);
```


----------



## oliver.tonn (8 April 2020)

Was passiert denn, wenn Du Tastertext einzeln eine Zeile vorher den Wert von iTastertext zuweist und dann dieses Konstrukt (Tastertext:=iTastertext) durch Tastertext ersetzt.
Und wie gesagt, warum brauchst Du eine zweite Variable? Wenn da nur iTastertext hinschreibst sollte es auch gehen.

Von irgendwas mit Internetzugang gesendet.


----------



## Ossi64 (8 April 2020)

Wenn ich das mache erscheint der Text auch auf der Visu.

```
FUNCTION_BLOCK FB_LampensteuerungVAR_INPUT
iTastertext : STRING := 'Hallo';		(*Text der auf dem Tasterelement erscheinen soll*)
iSchalter:BOOL;
iSet:BOOL;
iReset:BOOL;


END_VAR
```


----------



## Ossi64 (8 April 2020)

Ah, habe dich falsch verstanden.
Ich probiere es mal aus.


----------



## Ossi64 (8 April 2020)

Ich habe es jetzt mal so gemacht, aber bekomme jetzt den Fehler: C0006: ',, AT oder :' an Stelle von ':=' erwartet von der ersten Zeile


```
Tastertext := iTastertext;
Tasterlement_Lampe:xLichttasterelement:=(Tastertext);
```


----------



## Otwin (9 April 2020)

Sehe ich das richtig, das du das alles in der Variablendeklaration schreibst?
Du versuchst, die Variable Tastertext mit der Variable iTastertext zu initialisieren, das wird nix.

Tastertext := iTastertext;    muss in den Programmcode, dann gehts auch.



Gruß
Otwin


----------



## ccore (9 April 2020)

Hat sich erledigt. Hätte alles lesen sollen ;-)


----------



## Ossi64 (9 April 2020)

Guten Morgen Otwin,
danke für deine Hilfe.
Hast recht, dort funktioniert es.
Aber habe immer noch einen Fehler.
In der folgenden Zeile bekomme ich den Fehler, dass der Tastertext nicht definiert wäre.

```
Tasterlement_Lampe:xLichttasterelement:=(Tastertext);
```
Die Zeile ist auch in der Variablendeklaration


----------



## ccore (9 April 2020)

Hast du Tastertext als String deklariert? 

Tastertext:STRING;


----------



## Ossi64 (9 April 2020)

Guten Morgen ccore,
ja habe es in einer DUT (xLichttasterelement) Schnittstelle als String deklariert.


----------



## ccore (9 April 2020)

Wahrscheinlich musst du den Namensraum angeben



```
Tasterlement_Lampe:xLichttasterelement:=(xLichttasterelement.Tastertext);
```


----------



## Ossi64 (9 April 2020)

Dann bekomme ich folgenden Fehler:
C0032: Typ 'STRING' kann nicht in Typ 'xLichttasterelement' konvertiert werden


----------



## Ossi64 (9 April 2020)

Der xLichttasterelement ist folgendermaßen aufgebaut:

```
TYPE xLichttasterelement :STRUCT
	Taster: BOOL;
	LED_An: BOOL;
	LED_Aus: BOOL;
	Tastertext: STRING;
END_STRUCT
END_TYPE
```


----------



## ccore (9 April 2020)

Wo deklarierst du die Structur?


----------



## Ossi64 (9 April 2020)

Hier


----------



## ccore (9 April 2020)

Da ist die Struktur hinterlegt. Allerdings musst du diese noch wie eine Variable deklarieren.

Deine Strukur:
	
	



```
TYPE xLichttasterelement :STRUCT
	Taster: BOOL;
	LED_An: BOOL;
	LED_Aus: BOOL;
	Tastertext: STRING;
END_STRUCT
END_TYPE
```

Dein Programmdeklarationsteil:

```
VAR
    deklarierteStruktur: xLichttasterelement;
END_VAR
```

Dann deine Zuweisung. 

```
deklarierteStruktur.Tastertext := 'Ich bin ein Text';
deklarierteStruktur.LED_An := TRUE;
```


----------



## Ossi64 (9 April 2020)

Jetzt funktioniert's! 
Meine Güte...

Vielen, vielen Dank an:
ccore
Otwin
oliver.tonn


----------

