# Telnet mit Wago 881

**URL:** <https://oscat.discourse.group/t/telnet-mit-wago-881/1633>\
**Category:** Codesys 2\
**Created:** [12. September 2013 um 11:11 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633 "2013-09-12T11:11:35Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![a.anhalter](https://avatars.discourse-cdn.com/v4/letter/a/f05b48/32.png) [@a.anhalter](https://oscat.discourse.group/u/a.anhalter)\
**Post date:** [12. September 2013 um 11:11 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/1 "2013-09-12T11:11:35Z")

</div>

Hallo,

ich möchte mit der Wago Telnet-Befehle an einen Server senden und habe dafür das Beispiel hier im Forum ([Telnet Response empfangen und auswerten](http://www.oscat.de/community/index.php/topic,1755.msg9314.html#msg9314)) genutzt (Telnet\_Demo). Ich habe den Funktionsblock übernommen und rufe diesen aus einem ST-Programm auf.

Der Befehl wird auch übermittelt und der Empfangsbuffer füllt sich - aber leider nur einmal. Rufe ich den Funktionsblock ein zweites Mal auf, klappt dies nicht mehr. Woran könnte das liegen?

Der Aufruf sieht so aus, SZ\_T1\_4 ist ein Taster:

```auto
IF (SZ_T1_4=TRUE) THEN
		mySEND_TELNET(
		TEXT:= '15:bf:08:f8:61:aa play',
		PORT:= 9090,
		IP4:= 3232235876,
		SEND:= TRUE,
		READY=> MUSIC_READY,
		ERROR=> MUSIC_ERROR,
		DONE=> MUSIC_DONE);
END_IF;

```

Vielen Dank schon mal für die Antworten,  
Carsten

---

<div class="post-metadata">

**Author:** ![peewit](https://avatars.discourse-cdn.com/v4/letter/p/ecc23a/32.png) [@peewit](https://oscat.discourse.group/u/peewit)\
**Post date:** [12. September 2013 um 15:53 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/2 "2013-09-12T15:53:35Z")

</div>

du meinst wenn du den taster ein zweiten mal drückst passiert nichts ?

der baustein reagiert nur auf eine positive flanke bei “SEND”

du solltest prinzipiell ethernetbausteine nicht bedingt aufrufen  
da auch vor dem senden und nach dem senden einiges passieren kann !!

also mysendtelnet zyklisch aufrufen  
und mySEND\_TELNET.SEND = positive flanke von taster

---

<div class="post-metadata">

**Author:** ![a.anhalter](https://avatars.discourse-cdn.com/v4/letter/a/f05b48/32.png) [@a.anhalter](https://oscat.discourse.group/u/a.anhalter)\
**Post date:** [12. September 2013 um 16:42 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/3 "2013-09-12T16:42:10Z")

</div>

Hallo peewit,

Um genau zu sein, habe ich zwei Taster mit jeweils unterschiedlichem Text (einmal Play und einmal Stop). Ich habe SEND\_Telnet testweise zweimal instanziiert und rufe jeweils einen wie oben angegeben auf. Das der Baustein eine positive Flanke benötigt, erklärt natürlich die nur einmalige Funktion - danke schon mal für diese Aufklärung. 😃

Ich fürchte allerdings, dass ich es noch nicht komplett kapiert habe. Wenn ich den FB zyklisch aufrufe, sende ich doch in jedem Zyklus den Text - so dachte ich zumindest bisher… Deshalb die IF-Bedingung.  
Außerdem benötige ich letztendlich bis zu 20 verschiedene Texte, muss ich dann für jeden Text eine eigene Instanz erstellen, die ich dann jeweils über positive Flanke aufrufe?

Danke schon jetzt für Deine Geduld. 😉

---

<div class="post-metadata">

**Author:** ![peewit](https://avatars.discourse-cdn.com/v4/letter/p/ecc23a/32.png) [@peewit](https://oscat.discourse.group/u/peewit)\
**Post date:** [12. September 2013 um 17:41 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/4 "2013-09-12T17:41:50Z")

</div>

der baustein sendet nur wenn er am “SEND” einen signalwechsel von FALSE auf TRUE erkennt (positive flanke)  
somit wird nur einmal versendet , also keine angst

1. du rufst den baustein zyklisch auf
2. du schreibst dir einen baustein der je nach ereignis einen anderen text dem mysendtelnet übergibt
3. dann gibst du ein “TRUE” auf send
4. dann wartest du auf READY,DONE,ERROR je nach dem.
5. dann nimmst GIBST DU FALSE AUF SEND
6. jetzt beginnst du wieder von vorne mit dem nächsten text

probiere das doch mal mit Steuern/variable online durch

du solltest nur mit einer instanz arbeiten, da es ansonsten zu problemen kommt, bzw. du unnötig resourcen verschwendest

---

<div class="post-metadata">

**Author:** ![a.anhalter](https://avatars.discourse-cdn.com/v4/letter/a/f05b48/32.png) [@a.anhalter](https://oscat.discourse.group/u/a.anhalter)\
**Post date:** [12. September 2013 um 18:36 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/5 "2013-09-12T18:36:53Z")

</div>

Ok. Hab es so gemacht und nun funktioniert es. Sehr gut. Vielen Dank!

Nur eine Frage hab ich noch:

> 4. dann wartest du auf READY,DONE,ERROR je nach dem.

Wie warte ich? Derzeit gebe ich direkt nach dem TRUE ein FALSE auf SEND.

---

<div class="post-metadata">

**Author:** ![peewit](https://avatars.discourse-cdn.com/v4/letter/p/ecc23a/32.png) [@peewit](https://oscat.discourse.group/u/peewit)\
**Post date:** [12. September 2013 um 20:29 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/6 "2013-09-12T20:29:52Z")

</div>

soweit ich mich erinnere sollte es folgend sein

READY = TRUE Baustein ist bereit für neues senden  
DONE = TRUE letzter SENDE Befehl wurde ohne Fehler beendet  
ERROR \<\> 0 letzter Sende Befehl wurde mit einem Fehler beendet (also wurde nicht ausgeführt !)

somit kannst du erkennen wann du wieder was senden darfst, bzw. ob etwas erfolgreich oder nicht ausgeführt wurde

---

<div class="post-metadata">

**Author:** ![a.anhalter](https://avatars.discourse-cdn.com/v4/letter/a/f05b48/32.png) [@a.anhalter](https://oscat.discourse.group/u/a.anhalter)\
**Post date:** [17. September 2013 um 09:46 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/7 "2013-09-17T09:46:07Z")

</div>

Hallo peewit,

danke nochmal für Deine Hilfe! 🙂  
Ich hab es jetzt hinbekommen, allerdings fehlt mir noch ein wenig das Verständnis für die SPS-typische Programmierung. Die entspricht vom Verarbeitungsablauf ja nicht unbedingt “normalen” Programmiersprachen - da muss ich mich noch reinfuchsen.

Grüße,  
Carsten

---

<div class="post-metadata">

**Author:** ![tomne](https://avatars.discourse-cdn.com/v4/letter/t/45deac/32.png) [@tomne](https://oscat.discourse.group/u/tomne)\
**Post date:** [4. September 2015 um 13:52 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/8 "2015-09-04T13:52:55Z")

</div>

Hallo peewit,

besteht die Möglichkeit das oben genannte Demo nochmal online zu stellen?  
(Telnet Client Wago SPS)

FG Tomne

---

<div class="post-metadata">

**Author:** ![peewit](https://avatars.discourse-cdn.com/v4/letter/p/ecc23a/32.png) [@peewit](https://oscat.discourse.group/u/peewit)\
**Post date:** [4. September 2015 um 18:22 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/9 "2015-09-04T18:22:53Z")

</div>

hi

so genau weiss ich auch nicht mehr was es denn genau war, aber ich bin den postings gefolgt und dann bei

> **[peewit - Telnet Befehle senden](http://www.oscat.de/community/index.php/topic,1071.msg6404.html#msg6404)**
>
> Seite erstellt in 0.033 Sekunden mit 22 Abfragen. | Telnet Befehle senden

gelandet…

ob es etwas ist was dir hilft …

ansonsten kannst du die user auch direkt anschreiben …

---

<div class="post-metadata">

**Author:** ![tomne](https://avatars.discourse-cdn.com/v4/letter/t/45deac/32.png) [@tomne](https://oscat.discourse.group/u/tomne)\
**Post date:** [4. September 2015 um 19:07 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/10 "2015-09-04T19:07:51Z")

</div>

Danke für deine schnelle Antwort, leider bringt mich der Link auch nicht weiter.

FG Tomne

---

<div class="post-metadata">

**Author:** ![peewit](https://avatars.discourse-cdn.com/v4/letter/p/ecc23a/32.png) [@peewit](https://oscat.discourse.group/u/peewit)\
**Post date:** [5. September 2015 um 10:26 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/11 "2015-09-05T10:26:16Z")

</div>

warum

dort sind zwei bausteine zu finden (Telnet send) die du importieren musst

---

<div class="post-metadata">

**Author:** ![a.anhalter](https://avatars.discourse-cdn.com/v4/letter/a/f05b48/32.png) [@a.anhalter](https://oscat.discourse.group/u/a.anhalter)\
**Post date:** [7. September 2015 um 06:18 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/12 "2015-09-07T06:18:48Z")

</div>

Hallo,

ich habe mir mittlerweile einen eigenen Baustein für die Auswertung der Taster gebaut. Hintergrund ist die Ansteuerung von Squeezeboxen mittels Wago.  
Meinen Funktionsblock in ST hänge ich hier einmal ran. Achtung: Einige Sachen gehen noch nicht (aus 3 Playlisten auswählen z.B.), aus dem bisher vorhandenen kann man sich aber den Rest einfach zusammenbauen. Play, Stop, Lauter, Leiser oder Mute klappen jedenfalls.

Die Telnet-Funktion ist nicht von mir, weshalb ich nicht weiß, ob ich sie hier öffentlich stellen darf. Eventuell finde ich es auch noch - dann ergänze ich hier den Link. [EDIT] Hier ist der Link zum Telnet-Baustein. [Telnet Befehle senden](http://www.oscat.de/community/index.php/topic,1071.0.html%5B/EDIT%5D)  
Bitte nicht über die Syntax lästern - bin SPS-Anfänger. Bei Fragen - einfach fragen.

Zunächst die Deklaration der Variablen:

```auto

FUNCTION_BLOCK FB_Squeezebox
VAR_INPUT
	mac: STRING(STRING_LENGTH);
	list1: STRING(STRING_LENGTH);
	list2: STRING(STRING_LENGTH);
	list3: STRING(STRING_LENGTH);
	xPlay: BOOL;
	xStop: BOOL;
	xNextPlayList: BOOL;
	xLeiser: BOOL;
	xLauter: BOOL;
	xSetLeise: BOOL;
	xSetLaut: BOOL;
	xMute: BOOL;
	bPlayStatus: BOOL;
	sLeise: STRING;
	sLaut: STRING;
	sLoudnessStep: STRING;
END_VAR
VAR_OUTPUT
	sToTelnet:STRING;
END_VAR
VAR
	TP_Out: TP;
	fbTelnet: FB_TelnetSend;
	Merker_Play: BOOL;
	sMessage: STRING;
	sendMessage: BOOL;
	Merker_List: BYTE;
END_VAR

```

Nun der eigentliche Code:

```auto

sendMessage := FALSE;

IF xPlay AND NOT Merker_Play THEN
	sMessage := CONCAT (mac,' play');
	sendMessage := TRUE;
ELSIF xPlay AND Merker_Play AND Merker_List = 1 THEN
	sMessage := CONCAT (mac, ' playlist play ');
	sMessage := CONCAT (sMessage, ' list1');
	Merker_List := 2;
	sendMessage := TRUE;
ELSIF xPlay AND Merker_Play AND Merker_List = 2 THEN
	sMessage := CONCAT (mac, ' playlist play ');
	sMessage := CONCAT (sMessage, ' list2');
	Merker_List := 3;
	sendMessage := TRUE;
ELSIF xPlay AND Merker_Play AND Merker_List = 3 THEN
	sMessage := CONCAT (mac, ' playlist play ');
	sMessage := CONCAT (sMessage, ' list3');
	Merker_List := 1;
	sendMessage := TRUE;
END_IF;

IF xStop THEN
	sMessage := CONCAT (mac, ' stop');
	sendMessage := TRUE;
	Merker_Play := FALSE;
END_IF;

IF xLeiser THEN
	sMessage := CONCAT (mac, ' mixer volume -');
	sMessage := CONCAT (sMessage, sLoudnessStep);
	sendMessage := TRUE;
END_IF;

IF xLauter THEN
	sMessage := CONCAT (mac, ' mixer volume +');
	sMessage := CONCAT (sMessage, sLoudnessStep);
	sendMessage := TRUE;
END_IF;

IF xSetLeise THEN
	sMessage := CONCAT (mac, ' mixer volume ');
	sMessage := CONCAT (sMessage, sLeise);
	sendMessage := TRUE;
END_IF;

IF xSetLaut THEN
	sMessage := CONCAT (mac, ' mixer volume ');
	sMessage := CONCAT (sMessage, sLaut);
	sendMessage := TRUE;
END_IF;

IF xMute THEN
	sMessage := CONCAT (mac, ' mixer volume 0');
	sendMessage := TRUE;
END_IF;

TP_Out(IN := sendMessage, PT := T#20ms);

IF sendMessage THEN
	fbTelnet(SendText:=sMessage, SendSend:=TP_Out.Q);
	sToTelnet := sMessage;
END_IF;

```

Viele Grüße,  
Anhalter

---

<div class="post-metadata">

**Author:** ![tomne](https://avatars.discourse-cdn.com/v4/letter/t/45deac/32.png) [@tomne](https://oscat.discourse.group/u/tomne)\
**Post date:** [7. September 2015 um 09:08 UTC](https://oscat.discourse.group/t/telnet-mit-wago-881/1633/13 "2015-09-07T09:08:40Z")

</div>

Vielen Dank,

es läuft bei mir nun auch :).

FG Tomne
