# Frage zu serial_interface e!COCKPIT



## Rayk (13 September 2015)

Hallo
ich bin gerade beim Versuch in e!COCKPIT eine serielle Schnittstelle (RS232) mit serial_interface zu nutzen.
Controller ist 750-8202. 
  Im Bibliotheksverwalter habe ich "FbSerialInterface_cpt" in der Lib. "WagoAppCom" gefunden aber in der Hilfe "Types and Interfaces "steht Die Dokumentation wird gerade erstellt".....

  Nun zur Frage in Codesys 2.x gibt es den Empfangspuffer von Typ "typRing_Buffer" welcher Typ muss in V3.x (e!COCKPIT) genutzt werden um den Empfangspuffer festzulegen?
Ich habe mir erst einmal einen eigen Typ "typRing_Buffer" nach der Vorlage von Codesys 2.x erstellt, geht das einfacher?
Stellt Wago, alternativ zur Hilfe in e!COCKPIT,  noch Anwendungshinweise und Dokumentationen zu den Bibliotheken zur Verfügung?


Gruß
Rayk


----------



## Termi (17 September 2015)

Hallo Rayk,
es gibt keinen Ringpuffer mehr. Dafür hast Du jetzt xRxBufferFull und xRxOverflow. Du mußt jetzt die Schnittstelle auslesen, das Gelesene verarbeiten und den Index des Empfangpuffers wieder zurücksetzen. Die Hilfe im e!cockpit ist derzeit noch sehr überschaubar. Läuft denn die Konvertierung von mir mit Owos9 nicht? Du hattest dich noch nicht gemeldet. 

Chris


----------



## Rayk (17 September 2015)

Hallo Chris,
die konvertierte owos 9 habe ich noch nicht getestet, hoffe ich schaffe es in der nächsten Woche.
Ich habe mit der seriellen Schnittstelle noch ein wenig Verständnisprobleme, muss mich noch ein wenig in die Materie einlesen.
Gruß
Rayk


----------



## Termi (17 September 2015)

Hallo Rayk,
da wirst Du nicht viel zum Einlesen finden. Ich habe ca. 1 Woche mit dem Wago-Support gesprochen, bis ich die neue Wirkungsweise verstanden und ein lauffähiges Programm hatte. Ich hatte an meinem eHz geübt. Der schickt zum Glück nur Daten und ich brauche keine Kommunikation aufbauen, sondern nur lauschen. Mittlerweile läuft mein 8204 mit drei seriellen Schnittstellen. Die vierte liegt hier schon und wartet darauf, von einer ELSNER Wetterstation gefüttert zu werden. Aber dazu muß ich sie erst einmal aufs Dach schrauben.

Na ja, wenn Du Fragen hast, frag nur. Ich werde mich bemühen sie zu beantworten. Ansonsten schau dir mal deine konvertierte Lib an. Ich hatte sie dir auch als Programm zugesandt. Da sind die objektorientierten Basics eingebaut.

Gruß
Chris


----------



## ruediger.noack (1 Juni 2017)

Hallo Chris,
ich beschäftige mich auch gerade damit eine serielle Schnittstelle (Waage) an meinem 750-8202 mit e!cockpit zum laufen zu bekommen. Derzeit schaffe ich es nur vom Controller über die integrierte RS232-Schnittstelle ein Tara-Signal per .Write(...) an die Waage zu senden, die dann auch den Befehl ausführt. Wenn ich den aktuellen Waagen-Messwert per .Read() abfrage, kommt nur die Meldung dass keine Daten empfangen wurden (ENODATA).
Alternativ zur integrierten RS232-Schnittstelle habe ich mehrere Module (750-650/003, 750-652 und 750-653/003) ausprobiert - leider bekomme ich bei denen noch nicht einmal den .OpenAndConfigure(...)-Befehl zustande - die Schnittstelle wird einfach nicht geöffnet.
Hast Du bzw. einer der anderen Lesenden da evtl. ein bisschen was an Tipps oder sogar Code für mich, um mein Vorhaben umzusetzen?
Vielen Dank schon mal im Voraus.

Gruß
Rüdiger

Läuft:

```
var
     send:BYTE;
     BausteinInterface:FbSerialInterface;
end_var
-------------

BausteinInterface.OpenAndConfigure(IoConfig_Globals.COM1,9600,8,eTTYParity.None,eTTYStopBits.One,eTTYHandshake.None,eTTYPhysicalLayer.RS232);//RS_232_C_Interface_Adjustable
send:=115; // 119 = w, 116 = t, 115 = s, 
BausteinInterface.Write(ADR(send),1);
BausteinInterface.Close();
```


Läuft nicht:

```
var
     receive:BYTE;
     BausteinInterface:FbSerialInterface;
end_var
-------------

BausteinInterface.OpenAndConfigure(IoConfig_Globals.COM1,9600,8,eTTYParity.None,eTTYStopBits.One,eTTYHandshake.None,eTTYPhysicalLayer.RS232);
BausteinInterface.Read(ADR(receive),1); // Hier kommt als eResultCode ein "ENODATA"
BausteinInterface.Close();
```


----------



## Termi (2 Juni 2017)

Hallo,
 Code habe ich hier veröffentlicht. 
Rs232 pfc200

Gruß

Chris


----------



## ruediger.noack (7 Juni 2017)

Hallo Chris,
danke - das hatte ich mir auch schon mal angeguckt und bin nicht wirklich schlau draus geworden.
Ich habe mir eine neue Zugriffsvariante auf die 750-650 über IoConfig_Globals.RS_232... gebastelt und die funktioniert super - nur komischer Weise nach längerer Arbeit an dem Controller lässt sich der Kanal nicht mehr öffnen (eResultCode:=41).
Da werde ich mal mit dem WAGO-Support reden woran das liegen kann.
Trotzdem danke für Deine Rückmeldung.
Viele Grüße
Rüdiger


----------



## V.I.D. (19 August 2017)

Hallo Chris,

ich bin grad mit meiner Programmierung auch soweit dass es an das Einbinden von den 1-Wire Sensoren geht. Ich hab von eservice den Buskoppler und Hub und so verteilt sich das Netzwerk.
Angeschossen habe ich noch keine Sensoren, da ich erst mal mit einem anfangen möchte. 

Nun habe ich gelesen, dass Du eine konvertierte owos-LIB für e!cockpit hast, könntest Du mir die bitte zukommen lassen. Denn ich benutze für mein Projekt das e!cockpit, dafür wäre ich sehr dankbar.

MfG
V.I.D.


----------



## Nilzon (21 September 2017)

Hallo zusammen,

mich würde interessieren, was denn bei Rüdigers Problem herausgekommen ist.

Ich habe nämlich einganz ähnliches Phänomen. 
Die Kommunikation (RS232) über die On-Board-Schnittstelle (ioconfig_globals.COM1, 9600, 8, 1, N) läuft einwandfrei. 
Um dasselbe über eine RS232-Karte 750-650 laufen zu lassen müsste man ja nur den I_Port am Baustein umstellen (auf ioconfig_globals.RS_232_C_Interface_9600_8_1_N).
Leider kommt dann aber die Rückmeldung xIsOpen nicht. Der Status bleibt bei 'The requested action is in progress but not yet completed.' stehen. 
Anders als bei Rüdiger ist das Verhalten aber hier nicht zeitabhängig ("...nach längerer Arbeit an dem Controller...").

Ich habe auch mal versuchsweise eine RS485-Karte angeschlossen, es zeigt sich aber dasselbe Verhalten. 
Auch wenn man die modularen Bausteine (statt "FbSerialInterface_cpt") ändert sich nicht. 
Der Kanal wird nicht geöffnet. 

@ Chris & Rüdiger: Da das ja bei Chris offenbar funktioniert... welche Firmware am PFC200 habt ihr denn? Ich verwende derzeit 2.07.07(10) mit Gerätebeschreibung 1.3.5.1108.

Viele Grüße,
Nils


----------



## Tobsucht (22 September 2017)

Hallo,

ich hatte auch Probleme mit gesteckten seriellen Modulen. Dies lag einer unterschiedlichen Konfiguration der Abbildgröße.
Wenn das Modul (650 und 653) hinzugefügt wird, wird es mit der Standardgröße (3Byte Nutzdaten) eingefügt. Ist dies jedoch auf fünf Byte eingestellt, gibt es bei einer Firmware kleiner 10 keine Meldung jedoch läuft das Modul dann nicht.
Hier muss aus der Gerätestruktur (Modul markieren, im Einstellungen Reiter Einstellungen wählen) einmal die Konfiguration des Moduls ausgelesen werden. Beim Beenden des Dialogs wird die Konfiguration ins e!Cockpit geladen.
Bei der Firmware 10 erhält man die Meldung "K-Bus mismatch".

Ansonsten erstmal mit dem Kompaktbaustein und nicht mit dem Base-Baustein anfangen.


----------



## Nilzon (22 September 2017)

Hallo Tobsucht,

vielen Dank für die Anregung, das habe ich gleich  überprüft. 
Ich verwende die "Grundform" der 750-650.
Diese hat 4 Datenbytes, das läuft bei Wago als "Serielle Schnittstellen mit alternativem Datenformat" (Handbuch PFC200)
Diese Karte ist nicht einstellbar, daher wird der Menüpunkt "Einstellungen" zwar angezeigt, es können aber keine Einstellungen vorgenommen werden. 
Im K-Bus E/A-Abbild wird die Karte aber auch mit 4 Bytes angezeigt, von daher scheint e!Cockpit das richtig erkannt zu haben.
Ich verwende ja auch die Firmware 10, dann hätte ich ja eigentlich die Meldung "K-Bus mismatch" erhalten müssen, da scheint aber soweit alles in Ordnung zu sein. 

Ich habe zwei Programme angelegt, einmal mit dem Kompaktbaustein und einmal mit dem Base-Baustein sowie den zugehörigen Modulen.
Das Verhalten ist bei beiden dasselbe. 

Ich werde aber dennoch in dieser Richtung noch etwas weiterforschen...
Der Support wollte auch noch zurückrufen, vielleicht ergibt sich ja da auch noch was...

Viele Grüße,
Nils


----------



## Nilzon (22 September 2017)

Hallo zusammen,

es funktioniert. 
Letztendlich war es ein ganz banales Problem (mal wieder).
Die Gegenstelle unterstützt keinen Handshake, daher habe ich diesen auf "eTTYHandshake.None" gestellt. 
So hat es nicht funktioniert. 

Als nächsten Versuch habe ich dann eine externe Brücke zwischen RTS und CTS gesetzt. Damit hat es immer noch nicht funktioniert.

Zusätzlich zu der Brücke habe ich nun den Handshake auf "eTTYHandshake.Hardware_DTE_RTSCTS" gestellt. Damit funktioniert das wunderbar. 

Es scheint also daran gelegen zu haben, dass man bei der 750-650 den Handshake nicht bereits im Baustein ausschalten darf, da die Karte dies offenbar erwartet. 
Man muss den Handshake über die externe Brücke vortäuschen und auch im Baustein parametrieren. 

Leider zeigt der Baustein in diesem Fall nicht an, dass die Parametrierung nicht zur Karte passt. Sonst wäre es eine Sache von wenigen Minuten gewesen, diesen Fahler zu finden...

Vielen Dank für Eure Unterstützung!

Viele Grüße,
Nils


----------

