TwinCAT 2- EL 6001

azubi2

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich möchte ein Netzgerät mit RS232-Schnittstelle mithilfe einer SPS von Beckhoff steuern. Dazu ist die EL 6001 schließlich da.
Jetzt kann ich sehen, dass zwar die notwendigen Bytes in die Klemme geschrieben werden, diese aber nicht in Richtung Netzgerät verlassen.
Ich habe bereits in den COE-Settings unter COMSettings RTS und CTS disabled. Die korrekte Baudrate von 9600 und das Datenformat 8N1, was das Netzgerät nach Datenblatt erfordert, sind auch eingestellt. Die COMLibV2 Bibliothek von Beckhoff ist bereits in das Projekt eingebunden.


Würde mich freuen, wenn mir jemand weiterhelfen kann.

Mit freundlichen Grüßen,
ein Azubi.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo oliver.tonn,
ja die laut Doku notwendigen FBs werden ausgeführt. Ich führe SendByte in meinem Hauptprogramm aus und habe einen separaten Fasttask laufen, in dem SerialLineControl ausgeführt wird. Meines Wissens nach ist das so korrekt.

Mit freubdlichen Grüßen,
ein Azubi
 
Scheint als ob ich beim Verkabeln Rx und Tx vertauscht habe. Kein Wunder, dass nichts angezeigt wurde. Hab zwar gedacht, dass ich auch bei falschem Anschluss etwas sehe, aber da lag ich wohl falsch. :rolleyes: Jetzt läuft das Ding auf jeden Fall wie ne eins
 
Hallo in diese Runde,

ich hab da mal eine Frage, @azubi2 kannst du mir deinen Code mal Posten? Oder das Programm vielleicht schicken. Oder hat irgendwer ein Testprogramm?

Ich versuche gerade eine EL6001 in mein CX8090 Projekt zu bekommen, aber ich stelle mich wohl zu blöd an. Ich möchte eigentlich nur Befehle senden und empfangen. Versuche das gerade, in dem mein PC Seriell mit der EL verbunden ist, aber ich bekomme nichts. Kann auch meinem Programm liegen, deswegen würde ich es gerne mit einem anderen versuchen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

so etwas ähnliches versuche ich auch gerade. Bin aber was das angeht absoluter Neuling.
Kann mir jemand ein Beispielprgramm für eine EL6001 (an einer CX8090) posten, oder schicken. Ich versuche gerade einfache Strings zu senden und zu empfangen. Mit der COMlib hab ich aber gerade so meine Probleme.
 
Hast Du mal im Infosys geschaut? M.W. gibt es für die intelligenten Klemmen meistenteils auch Beispielcode.
 
Also ich habe versucht, das Twincat Serielle Schnittstelle? nachzubauen,
zumindest konnte ich kompilieren und es schien auch etwas zu laufen. Habe den Task, für die Serielle Schnittstelle aber jetzt auf 1s erhöht, da ich denke das mein PC das nicht geschaft hat. Ich konnte mit zumindest ein h schicken.

Deklaration:
Code:
VAR
    sendSt: STRING:='test';
    empfSt:STRING;
    send:BOOL;
    empf:BOOL;
    RS232: PcComControl;
    RS232Send : SendString;
    TrigSend: R_TRIG;
    RS232Empf : ReceiveString;
END_VAR

VAR_INPUT
    RS232InData AT %IB1100 : PCComInData;
    RS232OutData AT %QB1100 : PCComOutData;
END_VAR
So wie es beschrieben ist.
Ausführung:
Code:
Trig_Send;
TrigSend.CLK:=send;

IF TrigSend.Q=TRUE
THEN
RS232(
            COMin := RS232InData,
            COMout := RS232OutData,
            TxBuffer := TxBuffer,
            RxBuffer := RxBuffer
            );
RS232Send(SendString:=sendST'$0A', TxBuffer:=TxBuffer);
END_IF;

RS232(
            RxBuffer := RxBuffer,
            Suffix:='$0A',
            ReceivedString := msg
);

IF RS232Empf.StringReceived= TRUE
THEN
 empfSt:=ReceivedRS232.ReceivedString;
END_IF;

Ich wollte im ersten Versuch so eine Art Terminal erstellen, wo ich Strings vom PC zur EL6001 schicke und auch Strings zurück schicke. (lerning by doing)
 
Dann lies Dir den von Dir verlinkten Thread nochmals genauer durch, denn Deine Umsetzung entspricht nicht dem dort geschilderten Beispiel. Bei Dir wird der FB RS232 an zwei Stellen mit unterschiedlichen Parametern ausgeführt, dass dürfte eine Ursache für Deine Probleme sein. Im erwähnten Beispiel erfolgt der Aufruf in einem extra Task mit allen Parametern. Das Senden und Empfangen erfolgt dann über die Send und Receive FBs. Außerdem kannst Du die Angabe einer Adresse bei den Ein- und Ausgängen weglassen und diese durch ein * ersetzen, TC regelt das eigentlich sehr gut selber.
@Alle die dies Wissen: Wann macht es Sinn bei %I oder %Q Variablen Adressen anzugeben?
Das Du nichts empfängst liegt übrigens daran, dass Du den Empfangs FB RS232Empf nie aufrufst, dann kann auch nichts ankommen.
Deine Zykluszeit von 1s ist übrigens viel zu hoch und wird vermutlich einen Watchdog auslösen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Alle die dies Wissen: Wann macht es Sinn bei %I oder %Q Variablen Adressen anzugeben?

Auf jeden Fall, wenn z.B. von extern via ADS absolut auf Adressen zugriffen wird. Dann würde das einfügen einer E/A-Variable eine Adressverschiebung verursachen.
Hatte ich schonmal mit einem externen HMI. Da guckt man ganz schön blöd.
 
Ich habe mal etwas gespielt und dabei doch tatsächlich eine Kommunikation hinbekommen. Ich habe dazu das Beispiel implimentiert.

Anhang anzeigen 45_COM Beispielprogramm FUNKTIONIERT.rar

Verstehe ich das richtig, das ich die KL Sache löschen kann, da ich nur eine EL habe?

was muss dann aber in den Fast(PRG)?

weiteres Update:
ich hab das Fast(PRG) erst einmal übernommen. Mit dem STX und ETX geht es soweit. Aber noch verbesserungswürdig. Wobei ich nicht verstehe, warum ich das "Hello World" nicht empfange? Auch scheint es nach mehrmaligen einloggen mit der PLC und verbessern.. Dann keine Kommunikation mehr zu geben, zumindest empfängt die CX nichts
Unbenannt.JPG
 
Zuletzt bearbeitet:
PCComInData: Das ist der Datentyp für die IPC-Schnittstelle und zu gross für die EL60xx. Hier musst du einen anderen Typ nehmen (weiss aber nicht auswendig wie er heisst, irgendwas mit EL.... Der hat 22 Datenbytes).
PCComControl: Das ist ein "alter" Baustein, steht auch entsprechend so in der Doku. Nutze doch SerialLineControl. Und der sollte auch zyklisch laufen da er das Handshake zur El60xx macht. Den nur 1xmalig (R_TRIG) aufzurufen ist ziemlich sinnfrei.

Ansonsten mein allgemeiner Vorschlag: Schau doch mal das du Rx auf Tx auf der Klemme verdrahtest. Dann kannst du mit dir selber sprechen. Und schau noch mal in die Hilfe...

Guga
 
Zurück
Oben