KOM: RS232-Kommunikation DS1104-Karte mit PC: Unterschied zwischen den Versionen
(Weitere Erklärungen zur Kommunikation) |
|||
Zeile 5: | Zeile 5: | ||
= Ist-Stand 23/24 RS232-Kommunkikation = | = Ist-Stand 23/24 RS232-Kommunkikation = | ||
Der Aktuelle Zustand zum Begin des Praktikum ist es, dass die Kommunikation nicht fehlerfrei lauffähig ist. Diese Problematik ist daher ein Knackpunkt für die Lauffähigkeit des Fahrzeugs. Aus diesem Grund ist, wie in ''Sprint 1'' ausführlich analysiert und beschrieben, die Lauffähigkeit Prio eins dieses Teams. | |||
== Aufbau der Kommunikation == | == Aufbau der Kommunikation == | ||
[[Datei:Schema_Konzept_SDE_CCF_Kommunikation.PNG|thumb|right|600px|Abb. 1: Schema des Kommunikations-Konzepts nach Schnittstellen Dokumentation (Regelkreis mit dSPACE-Karte stark vereinfacht) ]] | [[Datei:Schema_Konzept_SDE_CCF_Kommunikation.PNG|thumb|right|600px|Abb. 1: Schema des Kommunikations-Konzepts nach Schnittstellen Dokumentation (Regelkreis mit dSPACE-Karte stark vereinfacht) ]] | ||
Der Aufbau der Kommunikation ist in Abbildung 1 dargestellt. Zunächst werden die aufgenommenen Daten vom LiDaR und der Kamera an den PC weitergeleitet. Durch eine Software in C++ wird die Objekt- und Spurerkennung (OSE), sowie das Versenden der OSE-Daten über die RS232 Schnittstelle realisiert. Über ein 9 poliges Sub-D Kabel werden die Daten der OSE an die dSPACE-Karte übermittelt. Die Daten der OSE werden dann in die Berechnung der Bahn- und Spurführung einbezogen. Zur Berechnung der OSE-Daten sendet die dSPACE-Karte den Lenkwinkel und die Geschwindigkeit an den PC zurück. Eine genauere Beschreibung des Kommunikationskonzeptes und der seriellen Schnittstelle findet unter folgendem Artikel: [https://wiki.hshl.de/wiki/index.php/Kom_-_Kommunikation Kommunikation Wintersemester 2022/23] | Der Aufbau der Kommunikation ist in ''Abbildung 1'' dargestellt. Zunächst werden die aufgenommenen Daten vom LiDaR und der Kamera an den PC weitergeleitet. Durch eine Software in C++ wird die Objekt- und Spurerkennung (OSE), sowie das Versenden der OSE-Daten über die RS232 Schnittstelle realisiert. Über ein 9 poliges Sub-D Kabel werden die Daten der OSE an die dSPACE-Karte übermittelt. Die Daten der OSE werden dann in die Berechnung der Bahn- und Spurführung einbezogen. Zur Berechnung der OSE-Daten sendet die dSPACE-Karte den Lenkwinkel und die Geschwindigkeit an den PC zurück. Eine genauere Beschreibung des Kommunikationskonzeptes und der seriellen Schnittstelle findet unter folgendem Artikel: [https://wiki.hshl.de/wiki/index.php/Kom_-_Kommunikation Kommunikation Wintersemester 2022/23] | ||
Durch ein Testprogramm können Dummy-Parameter der OSE über die RS232 Schnittstelle an eine baugleiche dSPACE-Karte gesendet werden. Auf der dSPACE-Karte ist ein Simulink-Testmodell des Datenaustauschs der dSPACE-Karte geladen, worüber das Empfangen der OSE-Daten im ControlDesk sichtbar gemacht werden kann. | Durch ein Testprogramm können Dummy-Parameter der OSE über die RS232 Schnittstelle an eine baugleiche dSPACE-Karte gesendet werden. Auf der dSPACE-Karte ist ein Simulink-Testmodell des Datenaustauschs der dSPACE-Karte geladen, worüber das Empfangen der OSE-Daten im ControlDesk sichtbar gemacht werden kann. | ||
<br/><br/> | |||
== Code Aufbau auf '''PC''' == | |||
Der Eigentliche Code für die Übertragung auf die dSPACE Karte beinhaltet einen Aufbau über mehrere Bibliotheken. So sind im Testmodell des Trunks im Ordner der Spurpolynom Software folgende Einbindungen zu finden. | |||
<syntaxhighlight lang="cpp"> | |||
//RS232 Kommunikation | |||
#include "all_needed.h" | |||
#include "RS232Comm.h" | |||
#include "rs232.h" | |||
#include "Connect.h" | |||
</syntaxhighlight> | |||
Diese sollen einen einfachen Umgang mit der RS232 Schnittstelle gewährleisten. So sind Objekte mit den entsprechenden Membern und Variablen im Vorfeld programmiert. | |||
Einen einfache Initialisierung der Schnittstellen Datentypen und die Nutzung der Member für die Definition der RS232 Kommunikationseigenschaften, ist im folgenden Code Ausschnitt einmal dargestellt. | |||
<syntaxhighlight lang="cpp"> | |||
RS232Comm OSE_comPort_st; | |||
msg_to_pc OSE_msg_p; //Datenstruktur für Daten die von der dSpace Karte an den PC gesendet werden | |||
msg_to_dspace OSE_msg_d; //Datenstruktur für Daten die vom PC an die dSpace Karte gesendet werden | |||
OSE_comPort_st.RS232_SetComPort(0, 115200, "8N1", 0); //Port nummer und Baudrate befinden sich in all_needed.h | |||
OSE_comPort_st.RS232_OpenComPort(); //Startet eine Verbindung ohne Handshake | |||
</syntaxhighlight> | |||
<br/><br/> | |||
== Simulink Model auf '''dSPACE Karte''' == | |||
<br/><br/> | |||
<br/><br/><br/> | |||
= Sprint 1 = | |||
== Problembeschreibung == | == Problembeschreibung == | ||
[[Datei:Kommunikationstest ControlDesk.png|thumb|right|400px|Abb. 2: Darstellung des Datenempfangs in ControlDesk (Regelkreis mit dSPACE-Karte stark vereinfacht) ]] | [[Datei:Kommunikationstest ControlDesk.png|thumb|right|400px|Abb. 2: Darstellung des Datenempfangs in ControlDesk (Regelkreis mit dSPACE-Karte stark vereinfacht) ]] | ||
Beim Test der Kommunikation mit dem Testmodell ergaben sich bei gegebener Übertragungsrate von 115200 Baut Unterbrechungen bei der Übertragung der Dummy-Parameter. Abbildung 2 zeigt die Darstellung der übertragenen Spurparameter A, B und C im ControlDesk. Dabei ist festzustellen, dass jeweils alle drei Werte zu bestimmten Zeiten auf 0 springen. Das bedeutet es gibt Unterbrechungen bei der Übertragung der | Beim Test der Kommunikation mit dem Testmodell ergaben sich bei gegebener Übertragungsrate von 115200 Baut Unterbrechungen bei der Übertragung der Dummy-Parameter. ''Abbildung 2'' zeigt die Darstellung der übertragenen Spurparameter A, B und C im ControlDesk. Dabei ist festzustellen, dass jeweils alle drei Werte zu bestimmten Zeiten auf 0 springen. Das bedeutet es gibt Unterbrechungen bei der Übertragung der | ||
Spurparameter. Im vorherigen Semester wurde bereits ein Test mit erhöhtem Pufferspeicher der dSPACE-Karte durchgeführt. Bei maximaler Puffergröße konnte bis auf wenige Ausreißer eine Lückenlose Übertragung realisiert werden. Die maximale Puffergröße ist jedoch für den Anwendungsfall zu groß dimensioniert. Desweiteren wurde bereits mit einer kleineren Bautrate experimentiert. Die Bautraten für eine Lückenlose Übertragung waren jedoch zu gering um eine Echtzeitreaktion des Systems zu gewährleisten. Ziel soll es sein mit der Bautrate von 115200 und dem für den Anwendungsfall ausreichendem Pufferspeicher eine Lückenlose Kommunikation herzustellen. | Spurparameter. Im vorherigen Semester wurde bereits ein Test mit erhöhtem Pufferspeicher der dSPACE-Karte durchgeführt. Bei maximaler Puffergröße konnte bis auf wenige Ausreißer eine Lückenlose Übertragung realisiert werden. Die maximale Puffergröße ist jedoch für den Anwendungsfall zu groß dimensioniert. Desweiteren wurde bereits mit einer kleineren Bautrate experimentiert. Die Bautraten für eine Lückenlose Übertragung waren jedoch zu gering um eine Echtzeitreaktion des Systems zu gewährleisten. Ziel soll es sein mit der Bautrate von 115200 und dem für den Anwendungsfall ausreichendem Pufferspeicher eine Lückenlose Kommunikation herzustellen. | ||
<br/><br/><br/><br/><br/><br/><br/><br/><br/> | |||
== Analyse der Ursachen == | == Analyse der Ursachen == |
Version vom 10. November 2023, 22:20 Uhr
Betreuer: Prof. Dr.-Ing Ulrich Schneider
Autor: David Weigt, Louis Holtaple(WiSe 23/24)
Einleitung
Der Artikel behandelt die Kommunikation zwischen der DS1104-Karte und den PC via RS232-Schnittstelle. Dabei versendet der PC die Aufgenommenen Kameradaten an die dSPACE-Karte. Diese wiederum sendet einen Lenkwinkel und eine Längsgeschwindigkeit zurück. Eine C++ Software sowie ein entsprechendes Simulink Modell für den Test der RS232-Kommunikation sind bereits vorhanden. Der Test ergab, dass eine Fehlerfreie Kommunikation nur unter Nutztung einer sehr geringen Übertragungsrate oder unter Nutztung eines für den Anwendungszweck überdimensionierten Pufferspeichers möglich ist (siehe Abschnitt „Ist-Analyse“). Das gesetzte Ziel liegt darin eine Fehlerfreie Kommunikation unter Verwendung eines passenden Puffers von 256 Bytes und der angestrebten Übertragungsrate von 115200 Baut zu erreichen. Zwecks der Genauigkeit sollen dabei auch die Datentypen der Übertragenen Signale bestehen bleiben.
Ist-Stand 23/24 RS232-Kommunkikation
Der Aktuelle Zustand zum Begin des Praktikum ist es, dass die Kommunikation nicht fehlerfrei lauffähig ist. Diese Problematik ist daher ein Knackpunkt für die Lauffähigkeit des Fahrzeugs. Aus diesem Grund ist, wie in Sprint 1 ausführlich analysiert und beschrieben, die Lauffähigkeit Prio eins dieses Teams.
Aufbau der Kommunikation
Der Aufbau der Kommunikation ist in Abbildung 1 dargestellt. Zunächst werden die aufgenommenen Daten vom LiDaR und der Kamera an den PC weitergeleitet. Durch eine Software in C++ wird die Objekt- und Spurerkennung (OSE), sowie das Versenden der OSE-Daten über die RS232 Schnittstelle realisiert. Über ein 9 poliges Sub-D Kabel werden die Daten der OSE an die dSPACE-Karte übermittelt. Die Daten der OSE werden dann in die Berechnung der Bahn- und Spurführung einbezogen. Zur Berechnung der OSE-Daten sendet die dSPACE-Karte den Lenkwinkel und die Geschwindigkeit an den PC zurück. Eine genauere Beschreibung des Kommunikationskonzeptes und der seriellen Schnittstelle findet unter folgendem Artikel: Kommunikation Wintersemester 2022/23
Durch ein Testprogramm können Dummy-Parameter der OSE über die RS232 Schnittstelle an eine baugleiche dSPACE-Karte gesendet werden. Auf der dSPACE-Karte ist ein Simulink-Testmodell des Datenaustauschs der dSPACE-Karte geladen, worüber das Empfangen der OSE-Daten im ControlDesk sichtbar gemacht werden kann.
Code Aufbau auf PC
Der Eigentliche Code für die Übertragung auf die dSPACE Karte beinhaltet einen Aufbau über mehrere Bibliotheken. So sind im Testmodell des Trunks im Ordner der Spurpolynom Software folgende Einbindungen zu finden.
//RS232 Kommunikation
#include "all_needed.h"
#include "RS232Comm.h"
#include "rs232.h"
#include "Connect.h"
Diese sollen einen einfachen Umgang mit der RS232 Schnittstelle gewährleisten. So sind Objekte mit den entsprechenden Membern und Variablen im Vorfeld programmiert. Einen einfache Initialisierung der Schnittstellen Datentypen und die Nutzung der Member für die Definition der RS232 Kommunikationseigenschaften, ist im folgenden Code Ausschnitt einmal dargestellt.
RS232Comm OSE_comPort_st;
msg_to_pc OSE_msg_p; //Datenstruktur für Daten die von der dSpace Karte an den PC gesendet werden
msg_to_dspace OSE_msg_d; //Datenstruktur für Daten die vom PC an die dSpace Karte gesendet werden
OSE_comPort_st.RS232_SetComPort(0, 115200, "8N1", 0); //Port nummer und Baudrate befinden sich in all_needed.h
OSE_comPort_st.RS232_OpenComPort(); //Startet eine Verbindung ohne Handshake
Simulink Model auf dSPACE Karte
Sprint 1
Problembeschreibung
Beim Test der Kommunikation mit dem Testmodell ergaben sich bei gegebener Übertragungsrate von 115200 Baut Unterbrechungen bei der Übertragung der Dummy-Parameter. Abbildung 2 zeigt die Darstellung der übertragenen Spurparameter A, B und C im ControlDesk. Dabei ist festzustellen, dass jeweils alle drei Werte zu bestimmten Zeiten auf 0 springen. Das bedeutet es gibt Unterbrechungen bei der Übertragung der Spurparameter. Im vorherigen Semester wurde bereits ein Test mit erhöhtem Pufferspeicher der dSPACE-Karte durchgeführt. Bei maximaler Puffergröße konnte bis auf wenige Ausreißer eine Lückenlose Übertragung realisiert werden. Die maximale Puffergröße ist jedoch für den Anwendungsfall zu groß dimensioniert. Desweiteren wurde bereits mit einer kleineren Bautrate experimentiert. Die Bautraten für eine Lückenlose Übertragung waren jedoch zu gering um eine Echtzeitreaktion des Systems zu gewährleisten. Ziel soll es sein mit der Bautrate von 115200 und dem für den Anwendungsfall ausreichendem Pufferspeicher eine Lückenlose Kommunikation herzustellen.
Analyse der Ursachen
Fehlender Handshake bei der Datenübertragung
Für die Kommunikation zwischen zwei RS232 Teilnehmern können spezielle Flags verwendet werden, welche die Gegenseite die Empfangs- und Sendebereitschaft symbolisieren. Eine genauere Beschreibung bietet hierbei folgender Artikel Link. In diesem ist zu sehen, dass sogenannte CTS Flags der Gegenseite die Empfangsbereitschaft signalisieren. So kann sichergestellt werden, dass die Empfangsseite auch wirklich die Daten verarbeiten kann. Eine solche Abfrage kann leicht über die DSpace Karte eingestellt werden. Die Senderseite, also der C++ Code, muss dafür sorgen, dass diese Flags erkannt und nur bei Bestätigung die Daten gesendet werden. Dazu wurden die Folgenden Befehle dem Code hinzugefügt.
// Dient der Abfrage der Empfangsbereitschaft
while (!RS232_IsCTSEnabled(comPortNumber_u16)) {}
Fehlerfafte Löschung des FIFO Speichers
Bei Überlauf des FIFO-Puffers der dSPACE-Karte müssen die alten Daten aus dem Puffer gelöscht werden. Bei der Löschung ist es essentiell, dass die gelöschte Datenmenge der Größe des Datenpakets, welches mit einem Übertragungszyklus gesendet werden entspricht. Andernfalls werden Datenpakete teilweise gelöscht und somit unvollständig am Ausgang des FIFO-Puffers anliegen.
Inbetriebnahme
Nützliche Links
Mögliche Software
→ zurück zum Hauptartikel: Praktikum SDE | SDE-Team 2023/24