Probleme mit TwinCat und KL6001 (ComBuffer der serielle Schnittstelle läuft über)

Monty87

Member
Beiträge
23
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo zusammen.

Ich versuche nun schon seit Tagen mit TwinCat eine serielle Kommunikation mittels einer KL6001 zum Laufen zu bekommen und bin langsam aber sicher der Verzweiflung nahe.

Was ich genau gemacht habe:
- Das Beispiel-Programm (Sample Program Serial Communication) aus dem Beckhoff Information System herrunter geladen:
http://infosys.beckhoff.com/content/1033/tcplclibserialcom/Software/COMlibV2 Sample Program 2.0.zip
- Im Systemmanager die Ein- und Ausgangvariablen des FastTask mit meiner Hardware verknüpft (Jede einzeln: Also Status mit Status, D[0] mit Data In 0, D[1] mit Data In[1], usw)
- Ich nutze folgende Hardware: EtherCat Buskoppler BK1120 mit KL6001 (Diese habe ich mit der Software KS2000 v4 auf 5Byte eingestellt)
- Wenn ich nun das Programm im PLC Control starte kann ich problemlos Daten senden und diese auf einem Rechner mit COM-Schnittstelle empfangen. Das funktioniert aber nur solange ich das original TwinCat Beispielprogramm von oben nehme. Bei keinem eigenen Programm habe ich das bisher geschaft.
- Also habe ich versucht das Beispielprogramm 1 zu 1 nachzubauen: Beide Tasks 1 zu 1 übernommen. Die COMLibV2.lib in die Bibliothek aufgenommen. Alle globalen Variablen mit Copy und Paste übernommen. Jeden einzelnen Baustein mit Copy und Paste übernommen.
- Trotzdem gibt es einen auffälligen Unterschied sobald ich das Programm im System Manager einbinde: Die Ein- und Ausgangsvariablen die mit der KL6001 verknüpft werden müssen befinden sich nicht im FastTask sonden im Standardtask. Wie kann ich das ändern?
- Wenn ich mein nachgebautes Programm nun starte wird zwar versucht Daten zu senden aber nach einiger Zeit wird das Bit SendBusy = TRUE und SendErrorID = COMERROR_TXBUFFEROVERRUN
- Tatsächlich kann ich in den globalen Variablen beobachten wie der TxBuffer2 immer voller wird und scheinbar einfach die Daten nicht abgeholt werden (Das müsste doch Aufgabe des SerialLineControls im FastTask sein oder?)

Was könnte ich hier falsch gemacht haben?
Falls es etwas nutzen würde kann ich zuhause auch noch beide Programme hochladen (Diese Funktion wird hier leider von der Firewall geblockt).

Ich hoffe jemand kann mir helfen. Vielen Dank schon im vorraus.
PS.: Frohe Weihnachten :)

mfg
Eike Volpert
 

trinitaucher

Well-known member
Beiträge
1.364
Punkte Reaktionen
248
Zuviel Werbung?
->Hier kostenlos registrieren
- Trotzdem gibt es einen auffälligen Unterschied sobald ich das Programm im System Manager einbinde: Die Ein- und Ausgangsvariablen die mit der KL6001 verknüpft werden müssen befinden sich nicht im FastTask sonden im Standardtask. Wie kann ich das ändern?
Ich schätze hier liegt dein Problem. Die Ein- und Ausgänge deines Programms stehen nach kompilieren und Einbinden im SystemManger immer bei einer Task, egal zu welcher sie im PLC Control zugeordnet sind. Wenn die Variablen von verschiedenen Task getriggert werden sollen, musst du diese Variablen manuell im System Manager zu dieser Task hin ziehen (Drag&Drop).
 
OP
M

Monty87

Member
Beiträge
23
Punkte Reaktionen
0
jaaaa es geht nun doch... Vielen Dank - Aber es dauert sicher nicht lange bis ich mich mit dem nächsten Problem melde ^^

Guten Rutsch
Eike
 

Strike

Member
Beiträge
10
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo, wie hast du den Overrun des Buffers verhindert? Ich habe zwar die Klemme EL6002 habe aber das gleiche Problem, mein TX Buffer läuft einfach voll und die Daten werden nicht abgeholt. Ich habe jedoch die Variablen schon in der Fast Task drin.
 
OP
M

Monty87

Member
Beiträge
23
Punkte Reaktionen
0
Das kann ich dir leider nicht mehr ganz genau sagen. Ich glaube es war einfach irgendwo ein Leichtsinnsfehler drin - Manchmal hilft es noch einmal in einem neuen Projekt von vorne anzufangen wenn es da dann klappt einfach ins richtige Projekt übertragen.
 
Oben