Grundlegende Vorgehensweise zur Programmierung einer seriellen Kommunikation EL6001

d-fan02

Level-1
Beiträge
35
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an Alle!

Ich möchte gern eine grundlegende serielle Kommunikation (RS-232) zwischen der EtherCAT - Klemme EL6001 und einem Aktor realisieren. Handshake und Paritätskontrolle sind erstmal nicht vorgesehen.

Befehlssatz des anzusteuernden Gerätes ist vorhanden. Viele meinen es wäre gar nicht so schwer, eine eigene kleine Routine zu schreiben (FB´s), ohne auf die für TwinCAT bereitgestellte Bibliothek zuzugreifen (kostenpflichtig). Was sind die wesentlichsten Dinge die man beachten muss? Wie geht man vor?


Mein aktueller SPS-Task Zyklus beträgt 1 ms. Ist ein zweiter Task notwendig? Geplant ist mit einer Baudrate von 9600 Bd zu kommunizieren. Befehlssatz enthält maximal 10 Zeichen zu 1 Byte.

Werde jetzt erstmal mit "HTerm" das Verhalten der EL6001 testen.

Ich würde mich sehr über eine paar Impulse freuen.

Mit freundlichen Grüßen

d-fan02
 
Halllo d-fan02

Die Bausteine von TwinCat nehmen dir gewisse Funktionen ab wie den Buffer leer etc.
Auf der Internetseite von Beckhoff kannst du dir ein Beispielprogramm herunterladen und dies mal direkt mit der EL6001 versuchen. Das Programm kann im CHM Beschrieb angewählt werden für den Download.

Darauf achten dass die Klemme richtig parametriert ist.

Die Zykluszeit spielt keine Rolle für eine RS232. Wichtig ist, Kommando einmal senden und dann lesen was die Schnittstelle oder deine Hardware meint. Erst wenn du die Rückmeldung verarbeitet hast wieder senden.

Gruss Daet
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke, ich werde mir das Programm mal anschauen. Aber ist für die Ausführung des Beispielprogramms nicht die kostenpflichtige Bibliothek nötig? So steht es zumindest in der chm.
Ist der Empfangspuffer FIFO in der Klemme schon vorhanden oder muss ich ein separaten Speicher (Womit verknüpfen, mappen?) anlegen. Über welche Prozessvariable wird er zurückgesetzt.

Mit freundlichen Grüßen

d-fan02
 
Hallo d-fan02,

so ist es. Du benötigst zum Testen das Supplement TwinCAT PLC Serial Comm (TS6340).
Ich kenne niemanden, der es zu Fuß nachprogrammiert hat. Zumal du dann auch keinerlei Unterstützung vom Beckhoff Support erwarten darfst, falls Probleme auftauchen.
Und bei etwas mehr als 60,-€ .....ist das ja auch nicht die wahnsinns Investition.

Gruß,
mac203
 
Hallo d-fan2,

die Daten die von der EL60xx empfangen werden, landen in einem 864 Byte großem Empfangspuffer in der Klemme. Über das Prozessabbild kannst du diesen dann in Stücken von 22 Byte abrufen.

Die Empfangsfunktion ist eigentlich recht simpel. Ich hänge mal ein stück Pseudocode an (ungetestet).

Code:
InputLength:BYTE;
i:BYTE;

IF ReceiveRequest <> ReceiveAccepted THEN    (* neue Daten im Puffer? *)
    (* Die Anzahl der aus dem Puffer gelesenen Bytes steht im HiByte des Control Words *)
    InputLength := WORD_TO_BYTE( (StatusWord AND 16#FF00) / 256 );
    (* In den Prozessdatenobjekten DataIn0 ... DataIn21 stehen die Empfangsdaten. *)
    FOR i:=0 TO InputLength-1 BY 1 DO
        (* Hier die Daten aus den Inputprozessdaten kopieren *)
    END_FOR

    ReceiveAccepted := NOT ReceiveAccepted; (* ReceiveAccepted toggeln --> Empfang bestätigen *)
END_IF

Schau mal in die Doku unter "Konfiguration mit dem TwinCAT System Manager --> EL6001, EL60021 --> Control- und Status-Daten"
Dort gibt es unten drei Tabellen in denen beschriebn ist, wie man das Control- und Statusword zum Senden und Empfangen bedienen muss.

Eine Zykluszeit von 1 ms reicht bei 9600 Baud vollkommen aus.

Gruß,
Otti
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke an euch alle! Werde mal verschieden Funktionen ausprobieren. Letzte Alternative wäre die SerialComm Lib. Hab schon ein Angebotsschreiben rausgeschickt.

Mit freundlichen Grüßen

d-fan02

PS: Vermutlich ein Schreibfehler: Die Anzahl der zu lesenden Bytes stehen im HighByte des Status Word ( nicht Control Word)!!!

Könnte man die Übertragung im FreeRun-Modus des TC-SysMan testen, indem man einfach mal ein paar Daten austauscht und CW und SW manuell forced? Hab das noch nicht hinbekommen.

Danke
 
Zuletzt bearbeitet:
Hallo d-fan2,

jo, da habe ich mich verschrieben. Ist natürlich das Status Word. (Steht ja auch im Code)

Ja, im Freerun geht das auch. Einfach z.B. die ersten drei Datenbyte mit 1, 2 und 3 füllen und dann im Control eine 0x0301 eintragen. Dann sollte die Klemme die drei Zeichen senden. Du kannst übrigens auch Tx und Rx direkt an der Klemme brücken. Dann kannst du gleich sehen, ob die Klemme das empfängt was du gesendet hast.

Gruß,
Otti
 
Zurück
Oben