# Beckhoff Verbindung zu externem Gerät über RS232 Schnitstelle mit EL6001



## Pyrotika (23 Juli 2013)

Schönen Guten Tag,

ich hab mich gerade hier im Forum angemeldet da es anscheinend hier viele Menschen gibt die ebenfalls mit Beckhoff (Twincat) arbeiten. Ich versuche inzwischen seit 2 Tagen mit dem EL6001 Modul ein Julabo Kältegerät anzusteuern.

Zu erst habe ich einfach drauf los getestet hab den Befehl in das Beispielprogramm von beckhoff gepackt und los... Fail. (Verdrahtung war da schon zu diesem Zeitpunkt richtig, auch wenn ich das inzwischen noch drei mal geprüft hab...

Im Anschluss hab ich das gerät diereckt mit einem PC verbunden und mit dem Julabo Programm angesteuert. 
Das Funktioniert.

Als nächstes habe ich mit "Free Serial Port Monitor" den befehl aufgezeichnet. Dieser liegt nun in Aski II, hex und Binär vor.

Danach habe ich mir erneut meine Programierung mit der Beispiel Sofware angeschaut. Hier bei habe ich festgestellt das die Zeichen Sauber in meinen definierten TXbuffer eingeladen soweit richtig sind aber der "CR" >(Carriage Return) fehlt. Diesen habe ich dann Manuell hinten angefügt. Für ähnlich verzweifelte hier der code:

cmd:= CONCAT (befehl,' ');
cmd:= CONCAT (cmd,par);

(*CR Anfügen: pb(pointer to byte) kann so an jede belibige stelle des String ein zeichen setzen*)
pb:= ADR(cmd);
pb:= pb + INT_TO_DWORD(LEN(cmd));
pb^:= 16#0D;
pb:= ADR(cmd);

FOR i:=0 TO LEN(cmd) DO
     COMout_EL6001_:=pb^;
     pb:= pb + INT_TO_DWORD(1);
END_FOR

(* ich hab hier den Buffer übersprungen aufgrund des nachfolgenden Problems*)

Die so entstehende Zeichen folge deckt sich 1 zu 1 mit den Aufgezeichneten aus der Julabo Firmware.
So weit so gut.

Nun habe ich im System Manager festgestellt das diese Zeichen aber im Buffer verweilen und nicht in die Klemme selbst geladen werden. Nach Stunden langen versuchen die Bibliothek zu verstehen, was aufgrund mangelhafter Dokumentation echt schwer ist, habe ich mich entschieden den Buffer zu überspringen und das direckt in die Klemme zu schreiben. Wie oben Erwähnt.
Auch das funktioniert...

ABER 

der letzt Schritt diese Daten aus der klemme zum Gerät zu senden Will und will nicht ausgeführt werden.
Ich hab versucht die einzelnen boolschen Variablen zu forcen damit er sendet, aber er tut nix, oder zumindest sehe ich nix. 

Kann mir jemand sagen wie ich sehen kann ob die klemme sendet oder wie ich sie dazu bringe was zu senden?

Die boolschen variablen sind im blauen Kasten und die Daten sind im Rotenkasten.

Für Hilfe wäre ich sehr Dankbar.
Neue Ansätze sind auch immer Wilkommen

Gruß Pyrotika


_


----------



## Onkelweed (23 Juli 2013)

Hallo Pyrotika,

das Problem hatte ich auch. Du musst im System Manager den Handshake von 1 auf 0 setzen, da dein Julabo Kältegerät anscheinend keinen an die Klemme sendet. 
Unter E/A Geräte -> Deine Klemme -> CoE -Online -> Com Settings -> RTS/CTS


----------



## mkd (23 Juli 2013)

Zugegeben, die Doku ist nicht wirklich gut.
Meinen wir dennoch die gleiche?
http://infosys.beckhoff.com/index.p...1031/tcplclibserialcom/html/note.htm&id=20729


Daniel


----------



## Pyrotika (24 Juli 2013)

Moin moin mkd und Onkelweed,

Schon mal danke das wer mein Problem gelesen und geantwortet hat

leider hab ich den rts/CTS schon aktiviert. auch hab ich die Baudrate und die benötigten bits eingestellt...
und ja die even/ ODD/ none Einstellung stimmen auch über ein....

Mit der Doku meinte ich die Hinweise der COMlibV2.
Die andere Doku von beckhoff finde ich auch bescheiden weil sie Unglaublich viel aber nie das wirklich entscheidende sagt. Kommt mir zu mindest so vor...

Gruß Pyro


----------



## Pyrotika (24 Juli 2013)

Sooo nächstes Update:

in der Zwischenzeit hab ich einen Adapter gebaut der direkt von der sps an meinen COM port am PC geht damit ich mit dem Monitor aufzeichnen kann was das EL Modul macht. 
Ziemlich genau gar nix.
Hab jetzt gekreuzte Verdrahtung eben so wie ungekreuzt, alle Kombinationen der boolschen Zusatz ein und Ausgänge durch. 

Daher denke ich nun das man das EL Modul initialisieren muss... 
mal schauen ob die lib doch noch was sinnvolles ausspuckt...

Gruß Pyro


----------



## Pyrotika (24 Juli 2013)

Hier bin ich nochmal^^

Also inzwischen funktioniert es. Ich Hab einfach nochmal die "Passive" Funktion aus dem Beispielprogramm eingefügt. Dann hatte ich leider noch nicht die beiden Struktur teile "Status" und "Ctrl" im Systemmanager Verknüpft. Das Datenformat EL6inData22B bzw. EL6outData22B beinhalten auch eine Struktur variable welche mit den beiden Ein und Ausgangs Mastervariablen verknüpft werden müssen. des weiteren hab ich noch ne Macke in meiner CTS Leitung gefunden.... Naja viel Arbeit aber jetzt geht es.
Sollte jemand ähnliche Probleme haben wir ich bin ich gerne bereit meine gesammelten Erfahrungen zu teilen

Gruß Pyrotika


----------



## fastfunk (13 Dezember 2013)

Schönen guten Tag,

auch ich bin neu im Forum und habe ein ähnliches Problem wie Pyrotika es hatte.
Ich  versuche seit einigen Tagen ein Faulhaber Motion Controll System (Motor  und Controller) über die Beckhoff EL6001 anzusteuern (Weitere Klemmen  CX9020 EL2008 El1008 El3104).
Die Komunikation zwischen  Steuersoftware des Motors und dem Controller habe ich mit Serial Port  Monitor aufgezeichnet und sende nun einzelne Befehle als Hex Code an die  Ausgänge der Klemme EL6001.
Die comLibV2 habe ich erstanden und das Programm läuft soweit auch.
Ebenfalls sehe ich im System Manager, wie die Ausgänge der Klemme beschrieben werden.
Ctrl und Status sind ebenfalls Verknüpft genauso wie Handshake:=false.

Mein  Problem: verbinde ich nun den Com Port des PC mit der Klemme um über  COM Port Monitor Befehle aufzuzeichnen, tut sich genau wie bei  Pyrotika NICHTS.

Hat jemand eine Idee woran das liegen könnte.

Vielen Dank schonmal

Gruß 
FastFunk


----------



## MasterOhh (13 Dezember 2013)

Rufst du den Funktionbaustein SerialLineControl zyklisch auf? Hast du das Beispielprojekt von Beckhoff mal ausprobiert?


----------



## mkd (13 Dezember 2013)

1. SerialLineControl in schnellem 1ms Task aufrufen und mit entsprechenden Parametern füttern
2. PLC Projekt übersetzen und im System Manager neu einlesen
3. Variablen der RS232 Hardware mit Variablen aus schnellem Task verknüpfen
4. Testdaten z.B. 1x pro Sekunde aus PLC senden (mit timer) 
5. PC mit Nullmodemkabel an PLC RS232 anschliessen
6. Terminalprogramm (Docklight/HTerm) auf PC starten
7. Kontrollieren ob die Testdaten an PC gesedet werden
8. Wenn Daten erfolgreich empfangen werden RS232 Kommunikation zum Zielgerät implementieren


----------



## fastfunk (16 Dezember 2013)

Anhang anzeigen 22648
Anhang anzeigen 22649
Anhang anzeigen 22650
Anhang anzeigen 22651

Danke für die schnelle Antwort.

Ja das Bsp. Programm habe ich versucht einzulesen... 17 Fehler 
Oben hab ich Bilder vom bisherigen Code angefügt.
Die Background Komunikation (SLC) läuft bereits im 1ms Task
Die Ausgänge im SystemManager werden auch beschrieben.
Beim logging wird allergings nichts aufgezeichnet.

Die EL6001 verfügt ja über keinen RS232 Steckplatz sonder muss Ader für  Ader angeschlossen werden. Ein Kreuzen von Tx und Rx wie manchmal  beschriben, hat ebenfalls nicht geholfen.


----------

