# Wago PFC200 Linux-Ebene RS232 Empfangen geht nicht



## sonny_b (13 Februar 2019)

Wago: WAGO 750-8207 PFC200 CS 2ETH RS 3G
Firmware: 02.06.20(09)
Linux: barebox 2014.11.0
Hallo,
ich bin neu hier im Forum als Beitragsersteller, bis jetzt war ich nur Leser der Beiträge.*

Was möchte ich tun?*
Ich möchte mit einem C/C++-Programm Daten senden/empfangen via RS232. Dies muss auf der Linux-Ebene erfolgen.

*Wie bin ich vorgegangen?*
Ich habe in der Weboberfläche Serial- und Serviceinterface auf Linux-Console gestellt. Ich habe das kompilierte Programm hochgeladen auf die Wago. Auf Wago-Ebene auf das Programm die Rechte zur Ausführung zu gewiesen und dann ausgeführt.
Das Prorgramm startet, baut alles auf und sendet fleißig Nachrichten via RS232 (simples Ping/Pong-Verfahren). Antwortet die Gegenseite auf diese Nachricht, grätscht sofort die Terminalkonsole dazwischen und will anscheinend einen Login anbieten. Diese fängt folglich die Nachricht ab und somit kommt diese nicht mehr bei meinem Programm an.
Testweise habe ich das Serialinterface der PLC-Ebene zu gewiesen. Jetzt kann ich keine Nachrichten mehr senden, aber dafür einwandfrei empfangen und verarbeiten.

Über ps -aux | grep serial  habe ich mir ausgeben lassen wer alles auf die RS232-Schittstelle zugreift. Es ist der Getty-Dienst.
Den habe nach dem mir bekannten Standardverfahren(in manchen Wago Dokumentationen sogar beschrieben) versucht zu "deaktivieren", also /etc/inittab die betreffene Zeile auszukommentieren. Es hilft nicht. Ein neuladen mit "init q" geht nicht.
Den Dienst mehr als 5 mal killen geht auch nicht. Der verhält sich wie ein Kopf einer Hydra, er kommt immer wieder. Nach einem Reboot ist die auskommentierte Zeile wieder einkommentiert.
*
Was muss machen, damit ich die RS232-Schnittstelle auf der Linux-Ebene nutzen kann, also senden und empfangen?*
Ich hoffe jemand kann mir helfen.


----------



## dingo (13 Februar 2019)

Hast du die Linux Toolchain von Wago?
Ich meine, es gibt ein HowTo für die Serielle Schnittstelle unter C/Cpp


----------



## sonny_b (13 Februar 2019)

ich benutze den aktutellen Linaro-Arm-Compiler. Der erzeugt auch eine Anwendung die läuft. Senden oder Empfangen geht damit auch.
Das HowTo kenne ich nicht.


----------



## dingo (13 Februar 2019)

Die Toolchain+ HowTo findest Du auf der Wago Seite:

Anhang anzeigen 44480


----------



## sonny_b (14 Februar 2019)

Das kenne ich habe es auch zum Teil installiert. Der Schritt für die  Gesamtkompilierung des Images scheitert aktuell. Die Toolchain ist aber  installiert.

Das Problem sehe ich aber weniger auf der Toolchaineben, als auf der Linuxebene.
Ich habe mit Screen (Programm zum Testen von seriellen Schnittstellen; senden/empfangen) das gleiche Problem.
Wenn  ich senden will, muss ich RS232 an die Linuxconsole übergeben, will  empfangen muss ich an die Codesysebene übergeben. Dies kann in meinen  Augen nicht korrekt sein oder?


----------



## Aekschn (18 Februar 2019)

Hallo,

das Problem hatte ich auch mal. Folgende Wagoanleitung half mir damals:

Step1: Changing ownerchip of "/dev/ttyO0"
Variante A - WebBasedManagement(WBM)
1A.1) Open WBM in browser(https://<ip or hostname>)
1A.2) Ignore x509 certificate warning and proceed.
1A.3) Navigate to "Administration" --> "Serial Interface"
1A.4) Login as user/password (Default: "admin"/"wago")
1A.5) Select "unassigned(usage by Application, Libraries, CoDeSys)"
1A.6) Press button "Change Owner"

Step2: Block usage of "/dev/ttyO0" by CoDesys
2.1) Start ssh-client, such as putty
2.2) Open ssh session to PFC200
2.3) Login as user/password (Default: "root"/"wago")
2.4) Open CoDeSys-Runtime config file "/etc/rts3s.cfg" in editor
            > vim /etc/rts3s.cfg
2.5) Delete complied lines with 'dd', or switch into insert mode by pressing key 'i'      
2.6) Comment out or delete sections "RS232" and "MODBUS_RTU"
      ;[RS232]
      ;PORT=1
      ;PARITY=2
      ;BAUDRATE=115200
      ;STOPBITS=0
      ;DEVICEFILE=/dev/ttyO0

      ;[MODBUS_RTU]
      ;Enabled=0
      ;Node_ID=1
      ;Timeout=60000
      ;Log=0
      ;Interface=/dev/ttyS0
      ;Baud=19200
      ;Data_Bits=8
      ;Parity=Even
      ;Stop_Bits=1
      ;Flow_control=None
2.7) Enter command mode by press key [Esc]
2.8) Save changes and exit editor by typing ':wq' and [Enter]
2.9) Restart PFC200

Now the onboard serial interface is yours....
Without additional actions it will operate as RS485!!!

Hoffe das hilft dir.


Gruß


----------



## sonny_b (19 Februar 2019)

Vielen Dank! 
schaue ich mir gleich mal an


----------



## sonny_b (19 Februar 2019)

Habe ich probiert. Führt leider nicht zum Ziel. Die Manipulation der Inittab führt zu einem halbwegs gewünschten Ergebnis, aber trotzdem pumpt er bei jedem Bootvorgang alles über die serielle Schnittstelle aus.


----------

