Geschwindigkeitsermittlung: Unterschied zwischen den Versionen
(47 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt) | |||
Zeile 6: | Zeile 6: | ||
[[Benutzer:Hauke_Ludwig| Hauke Ludwig]] | [[Benutzer:Hauke_Ludwig| Hauke Ludwig]] | ||
== Hardware == | == Hardware == | ||
Die Hardware wird im Artikel vom Sommersemester 2014 beschrieben: [[Carolo_Geschwindigkeit_SS14|Hardwarebeschreibung]]. | |||
;Fahrzeugübersetzung | |||
Die Fahrzeugübersetzung wurde durch einen Verdacht auf einen Defekt verändert. Dies ist das Resultat daraus, dass das neue Zahnrad eine andere Zahnanzahl besitzt. Die neue Übersetzung bildet sich aus dem bisherigen Motorritzel mit 24 Zähnen und dem neuen Zwischenzahnrad mit 72 Zähnen. Die resultierende Übersetzung ist dabei 7,5. | |||
Autor: [[Benutzer:Philipp Tewes|Philipp Tewes]] ([[Benutzer Diskussion:Philipp Tewes|Diskussion]]) 11:44, 1. Feb. 2017 (CET) | |||
== Software == | == Software == | ||
=== Auslesen der Interrupts === | |||
[[Datei:CC_Geschwindigkeit_Interrupt.png|right|thumb|Abb. 1: Submodul "SEN - Geschwindigkeit"]] | |||
Nachdem im vorherigen Abschnitt die Hardware-Ansteuerung für die Geschwindigkeitsermittlung dargestellt wurde, soll der folgende Abschnitt die Software-Implementierung darstellen. | Nachdem im vorherigen Abschnitt die Hardware-Ansteuerung für die Geschwindigkeitsermittlung dargestellt wurde, soll der folgende Abschnitt die Software-Implementierung darstellen. | ||
Um nach Möglichkeiten alle Hall-Signale auslesen zu können, wird die Abfrage der Sensoren in einen asynchronen Task ausgelagert. Die geschieht durch die Anbindung eines Triggers, welcher auf die Interrupts der DS1104 achtet. Sobald dort ein Interrupt gesetzt wird, werden die Sensoren abgefragt und einmalig ausgewertet. | Um nach Möglichkeiten alle Hall-Signale auslesen zu können, wird die Abfrage der Sensoren in einen asynchronen Task ausgelagert. Die geschieht durch die Anbindung eines Triggers, welcher auf die Interrupts der DS1104 achtet. Sobald dort ein Interrupt gesetzt wird, werden die Sensoren abgefragt und einmalig ausgewertet. | ||
Der asynchrone Task | Der asynchrone Task befindet sich im Hauptmodell "CCF_online" im Submodul "SEN - Geschwindigkeit". Dort sieht man, dass es ein weiteres Submodul gibt, welches als Trigger den Eingang "DS1104MASTER_HWINT_I2" hat. Über diesen Block werden die Interrupts der DS1104 eingelesen. Das ist in der Abbildung 1 dargestellt. | ||
[[Datei: | |||
Wie man in Abbildung 1 erkennen kann, werden die einzelnen Outputs des Submodules durch "Rate Transmission" auf "GoTo" gesendet. Die "GoTo" verweisen auf die Bibliothek "Sensoren online", wo die ermittelten Werte weiter verwendet werden. Die Trennung zwischen den beiden Modulen ist notwendig, um das Modell ständig mit aktuellen Werten versorgen zu können. Diese Versorgung wird dadurch sichergestellt, dass die Rate Transmission für jeden Durchlauf den alten Wert bereit hält. | |||
=== Kombinatorik der Hall-Signale === | |||
[[Datei:CC_Geschwindigkeit_Kombinatorik.png|right|thumb|Submodul "SEN - Geschwindigkeit"]] | |||
Wie eben beschrieben werden die Hall-Signale asynchron ausgelesen. Sobald diese über den ADC-Eingang der DS1104 eingelesen wurden, werden diese mit dem Wert 0.5 verglichen. Dieser Schritt erzeugt aus dem analogen Eingangssignal ein digitales Signal im Wertebereich [0 1], welches die weitere Verarbeitung deutlich erleichtert. Die digitalen Signale werden anschließend in einer S-Function bearbeitet und zur Geschwindigkeitsermittlung aufbereitet. | |||
''Sollte es beim Kompilieren des Projektes Probleme geben, kann es hilfreich sein, wenn man die S-Function einmal neu "Builded". Dies passiert, indem man die S-Function öffnet und oben rechts auf den Button "Build" klickt.'' | |||
Innerhalb der S-Function werden die Hall-Signale einer Kombinatorik unterzogen, welche die folgenden Gesetzen folgt: | |||
{| class="wikitable" | |||
! style="font-weight: bold;" | Motorstatus | |||
! style="font-weight: bold;" | Hall A | |||
! style="font-weight: bold;" | Hall B | |||
! style="font-weight: bold;" | Hall C | |||
|- | |||
| 1 | |||
| 1 | |||
| 0 | |||
| 1 | |||
|- | |||
| 2 | |||
| 1 | |||
| 0 | |||
| 0 | |||
|- | |||
| 3 | |||
| 1 | |||
| 1 | |||
| 0 | |||
|- | |||
| 4 | |||
| 0 | |||
| 1 | |||
| 0 | |||
|- | |||
| 5 | |||
| 0 | |||
| 1 | |||
| 1 | |||
|- | |||
| 6 | |||
| 0 | |||
| 0 | |||
| 1 | |||
|} | |||
Die Auswertung der Motoränderungen werden in der zweiten S-Function beschrieben. Hierbei entspricht jeder positive Wechsel (1->2 ... 5->6) einer Vorwärtsbewegung und jeder negative Wechsel (6->5 ... 2->1) einer Rückwärtsbewegung. Dabei entspricht ein Statuswechsel einer 1/6-Motordrehung. Durch empirische Studien konnte nachgewiesen werden, dass sich eine Motordrehung nach folgender Formel in die reale Bewegung in des Fahrzeuges auf der Straße umwandeln lässt: SPEED = 0.0867 * MOTORSPEED + 0.027. | |||
=== Filterung === | |||
[[Datei:V_Messung.png|right|thumb|Abb. 3a: Messung "Geschwindigkeit"]] | |||
[[Datei:CC_Geschwindigkeit_Filterung.png|right|thumb|Abb. 3b: Messung "Geschwindigkeit"]] | |||
Die ermittelte Geschwindigkeit weißt ein starkes Rauschen auf, welches durch "Zucken" des Motors und ungenaues Auslesen der Hall-Sensoren erklärt werden kann. Um die Geschwindigkeit sauber auf den Bus legen zu können, soll diese gefiltert werden. Diese Filterung erfolgt wie nachfolgend erklärt mit einer Limitierung und einem PT1-Filter. | |||
In Abbildung 3a kann man erkennen, dass im ersten Graph das reine Messsignal abgebildet ist. Hierbei erkennt man deutlich die Peaks und das hohe Flattern des Signals. Um aus diesem Signal eine saubere Messung zu kreieren wird das Signal durch ein "Limiter" begrenzt. Dieser Limiter hat die Funktion, dass er alle Werte, welche größer als "20" sind, durch den vorherigen Wert ersetzt. Als zweiten Limiter wird ein Änderungslimiter genutzt, welcher eine Steigung, die größer als "10" ist, nicht zulässt, sondern den Wert limitiert. Das Ergebnis dieser Limiter sieht man in Graph 2 und 3 der Abbildung 3. Das dazugehörige Simulink-Modell ist in Abbildung 3b dargestellt. | |||
Das limitierte Signal kann nun durch einen PT1-Filter gefiltert werden. Das Ergebnis der Filterung mit einer Frequenz von 0.5 Hz lässt sich in Graph 4 der Abbildung 3 erkennen. Nach der Übertragung des Messsignals in das wahre Signal per Funktion kann man in Graph 5 der Abbildung 3 die Geschwindigkeit in m/s erkennen. | |||
=== Wegmessung === | |||
Die Messung des Weges erfolgt per Integration der Geschwindigkeit. Diese Messmethode erscheint sicherer zu sein, als die Messung direkt von den Hall-Signalen. Eine genaue detailierte Überprüfung dieses Sachverhaltes steht noch aus. | |||
=== Quellcode === | |||
Nachfolgend abgebildet ist der Quellcode der Funktion get_direction.c : | |||
<source lang="C" style="background-color: #EFF1C1; font-size:larger"> | |||
// Author: Assad Al-Suleihi | |||
// CASES: | |||
// | |||
// A B C CaseNum | |||
// 1 0 1 1 | |||
// 1 0 0 2 | |||
// 1 1 0 3 | |||
// 0 1 0 4 | |||
// 0 1 1 5 | |||
// 0 0 1 6 | |||
#define FORWARD 1 | |||
#define BACKWARD 0 | |||
// init | |||
static int last_case = 0; | |||
static int last_dir = FORWARD; | |||
int state; | |||
int case_num = 0; | |||
state = 0; | |||
// setzen des Status | |||
if(HALL_A[0]>0){ | |||
state +=100; | |||
} | |||
if(HALL_B[0]>0){ | |||
state+=10; | |||
} | |||
if(HALL_C[0]>0){ | |||
state+=1; | |||
} | |||
// Übersetzung des Status | |||
switch(state){ | |||
case 101: | |||
case_num = 1; | |||
break; | |||
case 100: | |||
case_num = 2; | |||
break; | |||
case 110: | |||
case_num = 3; | |||
break; | |||
case 10: | |||
case_num = 4; | |||
break; | |||
case 11: | |||
case_num = 5; | |||
break; | |||
case 1: | |||
case_num = 6; | |||
break; | |||
default: | |||
break; | |||
} | |||
// Ermittlung der Drehrichtung | |||
//Case: Forward Wrap-Around 6->1 | |||
if(case_num == 1 && last_case == 6){ | |||
direction[0] = FORWARD; | |||
last_dir = FORWARD; | |||
//Case: Backward Wrap-Around 1->6 | |||
}else if(case_num == 6 && last_case == 1){ | |||
direction[0] = BACKWARD; | |||
last_dir = BACKWARD; | |||
//Case: Forward 1->2 .. 5->6 | |||
}else if(case_num > last_case){ | |||
direction[0] = FORWARD; | |||
last_dir = FORWARD; | |||
//Case: Backward 6->5 .. 2->1 | |||
}else if(case_num < last_case){ | |||
direction[0] = BACKWARD; | |||
last_dir = BACKWARD; | |||
//Case: No change | |||
}else if(case_num == last_case){ | |||
direction[0] = last_dir; | |||
} | |||
current_state[0] = case_num; | |||
//save current case number | |||
last_case = case_num; | |||
</source> | |||
Nachfolgend abgebildet ist der Quellcode der Funktion meas_accel_rtlib.c: | |||
<source lang="C" style="background-color: #EFF1C1; font-size:larger"> | |||
// Author: Asaad Al-Suleihi | |||
// Update: Philipp Tewes und Janis Ostermann | |||
// init | |||
static bool first_run = true; | |||
const double disp_single_int = 1; | |||
const double max_time = 171.827509221549; | |||
static double last_time = 0; | |||
static double last_interrupt_count = 0; | |||
static double last_speed = 0; | |||
static double acceleration = 0; | |||
static double delta_interrupts = 1; | |||
static double disp = 1; | |||
double curr_time; | |||
double delta_loops; | |||
double dt; | |||
double speed; | |||
//displacement | |||
#define FORWARD 1 | |||
#define BACKWARD 0 | |||
const double diameter = 0.0663; // Raddurchmesser in m | |||
#define M_PI 3.14 | |||
double circumference = M_PI*diameter; // Umfang (0.2083) in m | |||
//disable for setting ratio in ControlDesk | |||
const double ratio = 7.5; // 7.5 Motorumdrehungen = 1 Radumdrehung | |||
const double hall_per_evo = 2; // 2 Flanken Hall-Sensor | |||
double step = circumference / (ratio * hall_per_evo); // Gefahrene Strecke zwischen zwei Hall-Sensor Signalen | |||
//filter array | |||
#define BUFF_SIZE 100 | |||
static double circ_buff[BUFF_SIZE]={0}; | |||
static int buff_wr=0; | |||
static int num_vals_in_buff = 0; | |||
double rolling_mean; | |||
int i; | |||
double mean_speed; | |||
static double last_mean_speed; | |||
double mean_accel; | |||
// | |||
//time using timestamping | |||
static double curr_sec; | |||
static double last_sec; | |||
double dsec; | |||
double timestamp_vel; | |||
// | |||
//Ermittlung der Geschwindigkeit | |||
if (first_run == true){ | |||
first_run = false; | |||
#ifndef MATLAB_MEX_FILE | |||
ts_init(TS_MODE_SINGLE,0.0); | |||
last_sec = ts_time_read(); | |||
#endif | |||
disp = 0; | |||
} | |||
#ifndef MATLAB_MEX_FILE | |||
curr_sec = ts_time_read(); | |||
#endif | |||
//Prüfen auf "false" Flanken | |||
if ( (curr_sec - last_sec) > min_delta_t[0]){ | |||
//dt = curr_time - last_time; | |||
dsec = curr_sec - last_sec; | |||
timestamp_vel = step / dsec; | |||
//last_time = curr_time; | |||
last_sec = curr_sec; | |||
if(direction[0] == FORWARD){ | |||
disp += step; | |||
}else{ | |||
disp -= step; | |||
} | |||
displacement[0] = disp; | |||
velocity[0] = timestamp_vel; | |||
} | |||
</source> | |||
== HIL Test == | == HIL Test == | ||
Zeile 54: | Zeile 307: | ||
* Absolute Referenzmessung der Strecke und Geschwindigkeit | * Absolute Referenzmessung der Strecke und Geschwindigkeit | ||
== Test im/am Fahrzeug == | |||
'''Autor:''' [[Benutzer:Alexander_Schirrmeister | Alexander Schirrmeister]]<br> | |||
'''Betreuer:''' [[Benutzer:Ulrich_Schneider |Prof. Schneider]], [[Benutzer:Prof._Mirek_Göbel| Prof. Göbel]], [[ Benutzer:Marc_Ebmeyer | Marc Ebmeyer]]<br/> | |||
=== Einleitung === | |||
In diesem Kapitel wird die Umsetzung der Tests für das Softwaremodul "Geschwindigkeitsermittlung inkl. Hall-Sensorik" beschrieben und dokumentiert. <br> | |||
Zum Beginn werden die Testfälle vorgestellt, inklusive der Präkonditionen, Testschritte, und der Postkonditionen. Im Anschluss daran werden die erzielten ergebnisse erläutert. <br> | |||
Zum Schluss werden mögliche Ursachen und Fehlerquellen genannt. | |||
===Testfälle=== | |||
Die Testfälle wurden auf Basis der aktuellen SVN Softwareversion durchgeführt. Hierzu wurde ein Simulinkmodell erstellt, welches aus einzelnen Bibliotheksblöcken der zu testenden Funktionen aufgebaut ist (bib_Sensoren_Aktoren_online [Rev.: 6815]). <br> | |||
Diese Dateien befinden sich unter dem Pfad "https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/Vx_Testumgebung.slx". Das zum Test erstellte Modell ist "Vx_Testumgebung.slx", welches über das Start-Script "start_Vx_Hallsensorik.m" initialisiert und geöffnet wird. <br> | |||
Zur Durchführung einiger Tests wurde ein externer Antrieb für eines der Räder genutzt. Mithilfe eines Akkuschraubers mit der einer Nenndrezahl von 450 U/min, lässt sich eine feste erwartete Geschwindigkeit ermitteln. | |||
Zur Berechnung wird die Umdrehung des Differenzialtellers benötigt. Diese lässt sich wie folgt bestimmen: <br> | |||
<math> | |||
U_{Teller} = \frac{U_{links} + U_{rechts}}{2} | |||
</math> <br> | |||
Mithilfe des Raddurchmessers von <math> d = 0{,}0663m </math> lässt sich die erwartete Geschwindigkeit ermitteln: <br> | |||
<math> | |||
v = \pi \cdot d \cdot U_{Teller} = \pi \cdot d \cdot \frac {U_{links} + U_{rechts}}{2} = 0{,}0663 \cdot \pi \cdot \frac {0 + 450}{2} = 0{,}7811 \frac {m}{s} | |||
</math> | |||
'''Die ausführlichen Tabellen zu den Testfällen lassen sich mit Klick auf den Button "Ausklappen" anzeigen''' | |||
===Testfall 1=== | |||
Bezeichnung: Funktionsfähigkeit Hallensor A <br> | |||
Tester: Alexander Schirrmeister<br> | |||
Datum: 09.02.2022 <br> | |||
Testinstanz: Fahrzeug <br> | |||
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk | |||
<div class="mw-collapsible mw-collapsed"> | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | Schritt Nr. | |||
! style="font-weight: bold;" | Beschreibung | |||
! style="font-weight: bold;" | Ausgangszustand | |||
! style="font-weight: bold;" | Aktion(en) | |||
! style="font-weight: bold;" | Erwartetes Ergebnis | |||
! style="font-weight: bold;" | Ergebnis | |||
! style="font-weight: bold;" | Bewertung | |||
! style="font-weight: bold;" | Bemerkung | |||
|+ style = "text-align: left"|'''Tabelle:Funktionsfähigkeit Hallensor A''' | |||
|- | |||
| Precondition 1 | |||
| Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | |||
| Fahrzeug ist ausgeschaltet | |||
| Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | |||
| Fahrzeug fährt hoch | |||
| Das Fahrzeug ist hochgefahren | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 2 | |||
| Simulation öffnen | |||
| Desktop des Fahrzeugs ist zu sehen und bedienbar | |||
| Matlab 2019a starten | |||
| Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | |||
| Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 3 | |||
| Modell kompilieren | |||
| Simulinkmodell ist geöffnet und "Ready" | |||
| Starten des Buildprozesses (Shortcut: Strg + B) | |||
| Simulink builded das geöffnete Modell | |||
| Das Simulink generiert das File "vx_testumgebung.sdf | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 4 | |||
| ControlDesk starten | |||
| ControlDesk ist nicht geöffnet | |||
| Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/ControlDesk/Vx_Testumgebung] und Messung starten. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 1 | |||
| Linkes Hinterrad festhalten, rechtes hinterrad händisch drehen | |||
| Räder sind in Ruhe | |||
| Händisch das Rechte Hinterrad mit dem Uhrzeigersinn (vorwärts) drehen | |||
| Das Rad dreht sich | |||
| Das Rad dreht sich | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 2 | |||
| Control Desk Plotter überprüfen | |||
| In Control Desk wird eine 0 angezeigt für Hallsensor A angezeigt | |||
| Plotter beobachten | |||
| Es werden positive und negative Flanken ausgelöst | |||
| [[Datei:HallA_Flanken.PNG|100px|thumb|center|Plot der Signale von Hallsensor A]] | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 1 | |||
| ControlDesk Experiment anhalten | |||
| Das ControlDesk Experiment läuft | |||
| Auf "Go Offline" klicken | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 2 | |||
| Matlab und Controldesk schließen | |||
| Modell und Experiment sind geöffnet | |||
| Fenster der Programme schließen | |||
| Die Programme sind geschlossen | |||
| Die Programme sind geschlossen | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 3 | |||
| Fahrzeug herunterfahren | |||
| PC ist noch an | |||
| Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | |||
| Der PC ist aus | |||
| Der PC ist aus | |||
| i.O. | |||
| ---- | |||
|- | |||
|} | |||
</div> | |||
===Testfall 2=== | |||
Bezeichnung: Funktionsfähigkeit Hallensor B <br> | |||
Tester: Alexander Schirrmeister<br> | |||
Datum: 09.02.2022 <br> | |||
Testinstanz: Fahrzeug <br> | |||
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk | |||
<div class="mw-collapsible mw-collapsed"> | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | Schritt Nr. | |||
! style="font-weight: bold;" | Beschreibung | |||
! style="font-weight: bold;" | Ausgangszustand | |||
! style="font-weight: bold;" | Aktion(en) | |||
! style="font-weight: bold;" | Erwartetes Ergebnis | |||
! style="font-weight: bold;" | Ergebnis | |||
! style="font-weight: bold;" | Bewertung | |||
! style="font-weight: bold;" | Bemerkung | |||
|+ style = "text-align: left"|'''Tabelle:Funktionsfähigkeit Hallensor B''' | |||
|- | |||
| Precondition 1 | |||
| Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | |||
| Fahrzeug ist ausgeschaltet | |||
| Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | |||
| Fahrzeug fährt hoch | |||
| Das Fahrzeug ist hochgefahren | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 2 | |||
| Simulation öffnen | |||
| Desktop des Fahrzeugs ist zu sehen und bedienbar | |||
| Matlab 2019a starten | |||
| Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | |||
| Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 3 | |||
| Modell kompilieren | |||
| Simulinkmodell ist geöffnet und "Ready" | |||
| Starten des Buildprozesses (Shortcut: Strg + B) | |||
| Simulink builded das geöffnete Modell | |||
| Das Simulink generiert das File "vx_testumgebung.sdf | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 4 | |||
| ControlDesk starten | |||
| ControlDesk ist nicht geöffnet | |||
| Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/ControlDesk/Vx_Testumgebung] und Messung starten. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 1 | |||
| Linkes Hinterrad festhalten, rechtes hinterrad händisch drehen | |||
| Räder sind in Ruhe | |||
| Händisch das Rechte Hinterrad mit dem Uhrzeigersinn (vorwärts) drehen | |||
| Das Rad dreht sich | |||
| Das Rad dreht sich | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 2 | |||
| Control Desk Plotter überprüfen | |||
| In Control Desk wird eine 0 angezeigt für Hallsensor B angezeigt | |||
| Plotter beobachten | |||
| Es werden positive und negative Flanken ausgelöst | |||
| [[Datei:HallB_Flanken.PNG|100px|thumb|center|Plot der Signale von Hallsensor B]] | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 1 | |||
| ControlDesk Experiment anhalten | |||
| Das ControlDesk Experiment läuft | |||
| Auf "Go Offline" klicken | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 2 | |||
| Matlab und Controldesk schließen | |||
| Modell und Experiment sind geöffnet | |||
| Fenster der Programme schließen | |||
| Die Programme sind geschlossen | |||
| Die Programme sind geschlossen | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 3 | |||
| Fahrzeug herunterfahren | |||
| PC ist noch an | |||
| Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | |||
| Der PC ist aus | |||
| Der PC ist aus | |||
| i.O. | |||
| ---- | |||
|- | |||
|} | |||
</div> | |||
===Testfall 3=== | |||
Bezeichnung: Funktionsfähigkeit Hallensor C <br> | |||
Tester: Alexander Schirrmeister<br> | |||
Datum: 09.02.2022 <br> | |||
Testinstanz: Fahrzeug <br> | |||
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk | |||
<div class="mw-collapsible mw-collapsed"> | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | Schritt Nr. | |||
! style="font-weight: bold;" | Beschreibung | |||
! style="font-weight: bold;" | Ausgangszustand | |||
! style="font-weight: bold;" | Aktion(en) | |||
! style="font-weight: bold;" | Erwartetes Ergebnis | |||
! style="font-weight: bold;" | Ergebnis | |||
! style="font-weight: bold;" | Bewertung | |||
! style="font-weight: bold;" | Bemerkung | |||
|+ style = "text-align: left"|'''Tabelle:Funktionsfähigkeit Hallensor C''' | |||
|- | |||
| Precondition 1 | |||
| Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | |||
| Fahrzeug ist ausgeschaltet | |||
| Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | |||
| Fahrzeug fährt hoch | |||
| Das Fahrzeug ist hochgefahren | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 2 | |||
| Simulation öffnen | |||
| Desktop des Fahrzeugs ist zu sehen und bedienbar | |||
| Matlab 2019a starten | |||
| Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | |||
| Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 3 | |||
| Modell kompilieren | |||
| Simulinkmodell ist geöffnet und "Ready" | |||
| Starten des Buildprozesses (Shortcut: Strg + B) | |||
| Simulink builded das geöffnete Modell | |||
| Das Simulink generiert das File "vx_testumgebung.sdf | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 4 | |||
| ControlDesk starten | |||
| ControlDesk ist nicht geöffnet | |||
| Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/ControlDesk/Vx_Testumgebung] und Messung starten. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 1 | |||
| Linkes Hinterrad festhalten, rechtes hinterrad händisch drehen | |||
| Räder sind in Ruhe | |||
| Händisch das Rechte Hinterrad mit dem Uhrzeigersinn (vorwärts) drehen | |||
| Das Rad dreht sich | |||
| Das Rad dreht sich | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 2 | |||
| Control Desk Plotter überprüfen | |||
| In Control Desk wird eine 0 angezeigt für Hallsensor C angezeigt | |||
| Plotter beobachten | |||
| Es werden positive und negative Flanken ausgelöst | |||
| [[Datei:HallC_Flanken.PNG|100px|thumb|center|Plot der Signale von Hallsensor C]] | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 1 | |||
| ControlDesk Experiment anhalten | |||
| Das ControlDesk Experiment läuft | |||
| Auf "Go Offline" klicken | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 2 | |||
| Matlab und Controldesk schließen | |||
| Modell und Experiment sind geöffnet | |||
| Fenster der Programme schließen | |||
| Die Programme sind geschlossen | |||
| Die Programme sind geschlossen | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 3 | |||
| Fahrzeug herunterfahren | |||
| PC ist noch an | |||
| Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | |||
| Der PC ist aus | |||
| Der PC ist aus | |||
| i.O. | |||
| ---- | |||
|- | |||
|} | |||
</div> | |||
===Testfall 4=== | |||
Bezeichnung: Funktionsfähigkeit Richtungsbit <br> | |||
Tester: Alexander Schirrmeister <br> | |||
Datum: 09.02.2022 <br> | |||
Testinstanz: Fahrzeug <br> | |||
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk | |||
<div class="mw-collapsible mw-collapsed"> | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | Schritt Nr. | |||
! style="font-weight: bold;" | Beschreibung | |||
! style="font-weight: bold;" | Ausgangszustand | |||
! style="font-weight: bold;" | Aktion(en) | |||
! style="font-weight: bold;" | Erwartetes Ergebnis | |||
! style="font-weight: bold;" | Ergebnis | |||
! style="font-weight: bold;" | Bewertung | |||
! style="font-weight: bold;" | Bemerkung | |||
|+ style = "text-align: left"|'''Tabelle:Funktionsfähigkeit Richtungsbit''' | |||
|- | |||
| Precondition 1 | |||
| Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | |||
| Fahrzeug ist ausgeschaltet | |||
| Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | |||
| Fahrzeug fährt hoch | |||
| Das Fahrzeug ist hochgefahren | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 2 | |||
| Simulation öffnen | |||
| Desktop des Fahrzeugs ist zu sehen und bedienbar | |||
| Matlab 2019a starten | |||
| Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | |||
| Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 3 | |||
| Modell kompilieren | |||
| Simulinkmodell ist geöffnet und "Ready" | |||
| Starten des Buildprozesses (Shortcut: Strg + B) | |||
| Simulink builded das geöffnete Modell | |||
| Das Simulink generiert das File "vx_testumgebung.sdf | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 4 | |||
| ControlDesk starten | |||
| ControlDesk ist nicht geöffnet | |||
| Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/ControlDesk/Vx_Testumgebung] und Messung starten. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 1 | |||
| Drehung mit Hand im Uhrzeigersinn | |||
| Räder sind in Ruhe | |||
| Händisch das Rechte Hinterrad mit dem Uhrzeigersinn (vorwärts) drehen | |||
| Das Rad dreht sich, anschließend ändert es die Richtung | |||
| Das Rad dreht sich, anschließend ändert es die Richtung | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 2 | |||
| Control Desk Plotter überprüfen | |||
| In Control Desk wird eine 1 für das Richtungsbit angezeigt | |||
| Plotter beobachten | |||
| Es wird eine negative Flanke ausgelöst | |||
| [[Datei:Hall_Richtung_Hand.png|100px|thumb|center|Plot der Signale des Richtungsbits incl. Hallsensorik]] | |||
| n.i.O. | |||
| Dieser Test wurde noch einmal mit dem externen Antrieb getestet um zu überprüfen, ob es vielleicht an einer zu langsamen Umdrehung liegt. [[Datei:Hall_Richtung_Akkuschrauber.png|100px|thumb|center|Plot der Signale des Richtungsbits incl. Hallsensorik]] | |||
|- | |||
| Testschritt 3 | |||
| Drehung mit Hand gegen den Uhrzeigersinn | |||
| Räder sind in Ruhe | |||
| Händisch das Rechte Hinterrad gegen den Uhrzeigersinn rückwärts drehen | |||
| Das Rad dreht sich | |||
| Das Rad dreht sich | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 4 | |||
| Control Desk Plotter überprüfen | |||
| In ControlDesk wird eine negative Flanke angezeigt | |||
| Plotter beobachten | |||
| Es werden positive und negative Flanken ausgelöst | |||
| Trotz umgekehrter Richtung zeigt sich ein ähnliches Bild analog zu Testschritt 2. | |||
| n.i.O. | |||
| ---- | |||
|- | |||
| Postcondition 1 | |||
| ControlDesk Experiment anhalten | |||
| Das ControlDesk Experiment läuft | |||
| Auf "Go Offline" klicken | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 2 | |||
| Matlab und Controldesk schließen | |||
| Modell und Experiment sind geöffnet | |||
| Fenster der Programme schließen | |||
| Die Programme sind geschlossen | |||
| Die Programme sind geschlossen | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 3 | |||
| Fahrzeug herunterfahren | |||
| PC ist noch an | |||
| Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | |||
| Der PC ist aus | |||
| Der PC ist aus | |||
| i.O. | |||
| ---- | |||
|- | |||
|} | |||
</div> | |||
===Testfall 5=== | |||
Bezeichnung: Positive wahre Geschwindigkeit <br> | |||
Tester: Alexander Schirrmeister <br> | |||
Datum: 09.02.2022 <br> | |||
Testinstanz: Fahrzeug <br> | |||
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk | |||
<div class="mw-collapsible mw-collapsed"> | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | Schritt Nr. | |||
! style="font-weight: bold;" | Beschreibung | |||
! style="font-weight: bold;" | Ausgangszustand | |||
! style="font-weight: bold;" | Aktion(en) | |||
! style="font-weight: bold;" | Erwartetes Ergebnis | |||
! style="font-weight: bold;" | Ergebnis | |||
! style="font-weight: bold;" | Bewertung | |||
! style="font-weight: bold;" | Bemerkung | |||
|+ style = "text-align: left"|'''Tabelle:Testfall 5 Positive wahre Geschwindigkeit''' | |||
|- | |||
| Precondition 1 | |||
| Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | |||
| Fahrzeug ist ausgeschaltet | |||
| Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | |||
| Fahrzeug fährt hoch | |||
| Das Fahrzeug ist hochgefahren | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 2 | |||
| Simulation öffnen | |||
| Desktop des Fahrzeugs ist zu sehen und bedienbar | |||
| Matlab 2019a starten | |||
| Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | |||
| Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 3 | |||
| Modell kompilieren | |||
| Simulinkmodell ist geöffnet und "Ready" | |||
| Starten des Buildprozesses (Shortcut: Strg + B) | |||
| Simulink builded das geöffnete Modell | |||
| Das Simulink generiert das File "vx_testumgebung.sdf | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 4 | |||
| ControlDesk starten | |||
| ControlDesk ist nicht geöffnet | |||
| Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/ControlDesk/Vx_Testumgebung] und Messung starten. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 1 | |||
| Rechtes Hinterrad extern antreiben | |||
| Das Rad ist in Ruhe | |||
| Den Akkuschrauber mit 7mm Nuss auf die Sechskantmutter setzen und mit voller Leistung im Uhrzeigersinn drehen | |||
| Das Hinterrad dreht sich | |||
| Das Hinterrad dreht sich | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 2 | |||
| ControlDesk Plotter prüfen | |||
| Im Plotter wird die wahre Geschwindigkeit mit 0m/s angezeigt | |||
| Ankommende Werte in Control Desk überwachen | |||
| Die wahre Geschwindigkeit steigt auf etwa 0.8m/s an. | |||
| [[Datei:Vx_Akkuschrauber_stabil.png|100px|thumb|center|Plot der absoluten Geschwindigkeit]] | |||
| n.i.O. | |||
| Die Geschwindigkeit erreicht ein stabiles Niveau, ist allerdings zu hoch. Dies lässt sich eventuell durch eine Ungenaue Nenndrehzahl des Akkuschraubers erklären, bedarf allerdings weiterer Tests. | |||
| ---- | |||
|- | |||
| Testschritt 3 | |||
| ControlDesk Plotter prüfen nachdem das Rad in Ruhe ist | |||
| Die wahre Geschwindigkeit zeigt 0.8m/s | |||
| ControlDesk Plotter prüfen | |||
| Die Geschwindigkeit ist 0m/s | |||
| [[Datei:Vx_Akkuschrauber_stabil.png|100px|thumb|center|Plot der absoluten Geschwindigkeit]] | |||
| n.i.O. | |||
| Die wahre Geschwindigkeit liegt nach Beendigung des Antriebs nicht auf 0m/s. | |||
| ---- | |||
|- | |||
| Postcondition 1 | |||
| ControlDesk Experiment anhalten | |||
| Das ControlDesk Experiment läuft | |||
| Auf "Go Offline" klicken | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 2 | |||
| Matlab und Controldesk schließen | |||
| Modell und Experiment sind geöffnet | |||
| Fenster der Programme schließen | |||
| Die Programme sind geschlossen | |||
| Die Programme sind geschlossen | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 3 | |||
| Fahrzeug herunterfahren | |||
| PC ist noch an | |||
| Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | |||
| Der PC ist aus | |||
| Der PC ist aus | |||
| i.O. | |||
| ---- | |||
|- | |||
|} | |||
</div> | |||
===Testfall 6=== | |||
Bezeichnung: Negative wahre Geschwindigkeit <br> | |||
Tester: Alexander Schirrmeister <br> | |||
Datum: 09.02.2022 <br> | |||
Testinstanz: Fahrzeug <br> | |||
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk | |||
<div class="mw-collapsible mw-collapsed"> | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | Schritt Nr. | |||
! style="font-weight: bold;" | Beschreibung | |||
! style="font-weight: bold;" | Ausgangszustand | |||
! style="font-weight: bold;" | Aktion(en) | |||
! style="font-weight: bold;" | Erwartetes Ergebnis | |||
! style="font-weight: bold;" | Ergebnis | |||
! style="font-weight: bold;" | Bewertung | |||
! style="font-weight: bold;" | Bemerkung | |||
|+ style = "text-align: left"|'''Tabelle:Testfall 5 Negative wahre Geschwindigkeit''' | |||
|- | |||
| Precondition 1 | |||
| Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | |||
| Fahrzeug ist ausgeschaltet | |||
| Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | |||
| Fahrzeug fährt hoch | |||
| Das Fahrzeug ist hochgefahren | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 2 | |||
| Simulation öffnen | |||
| Desktop des Fahrzeugs ist zu sehen und bedienbar | |||
| Matlab 2019a starten | |||
| Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | |||
| Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 3 | |||
| Modell kompilieren | |||
| Simulinkmodell ist geöffnet und "Ready" | |||
| Starten des Buildprozesses (Shortcut: Strg + B) | |||
| Simulink builded das geöffnete Modell | |||
| Das Simulink generiert das File "vx_testumgebung.sdf | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 4 | |||
| ControlDesk starten | |||
| ControlDesk ist nicht geöffnet | |||
| Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/ControlDesk/Vx_Testumgebung] und Messung starten. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 1 | |||
| Linkes Hinterrad extern antreiben | |||
| Das Rad ist in Ruhe | |||
| Den Akkuschrauber mit 7mm Nuss auf die Sechskantmutter setzen und mit voller Leistung im Uhrzeigersinn drehen | |||
| Das Hinterrad dreht sich | |||
| Das Hinterrad dreht sich | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 2 | |||
| ControlDesk Plotter prüfen | |||
| Im Plotter wird die wahre Geschwindigkeit mit 0m/s angezeigt | |||
| Ankommende Werte in Control Desk überwachen | |||
| Die wahre Geschwindigkeit steigt auf etwa 0.8m/s an. | |||
| Dieser Testfall erzielt das gleiche Ergebnis wie Testfall 5. | |||
| i.O. | |||
| | |||
| ---- | |||
|- | |||
| Testschritt 3 | |||
| ControlDesk Plotter prüfen nachdem das Rad in Ruhe ist | |||
| Die wahre Geschwindigkeit zeigt 0.8m/s | |||
| ControlDesk Plotter prüfen | |||
| Die Geschwindigkeit ist 0m/s | |||
| Dieser Testfall erzielt das gleiche Ergebnis wie Testfall 5. | |||
| n.i.O. | |||
| Die wahre Geschwindigkeit liegt nicht auf 0m/s. | |||
|- | |||
| Postcondition 1 | |||
| ControlDesk Experiment anhalten | |||
| Das ControlDesk Experiment läuft | |||
| Auf "Go Offline" klicken | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 2 | |||
| Matlab und Controldesk schließen | |||
| Modell und Experiment sind geöffnet | |||
| Fenster der Programme schließen | |||
| Die Programme sind geschlossen | |||
| Die Programme sind geschlossen | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 3 | |||
| Fahrzeug herunterfahren | |||
| PC ist noch an | |||
| Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | |||
| Der PC ist aus | |||
| Der PC ist aus | |||
| i.O. | |||
| ---- | |||
|- | |||
|} | |||
</div> | |||
===Testfall 7=== | |||
Bezeichnung: Positive gefilterte Geschwindigkeit <br> | |||
Tester: Alexander Schirrmeister <br> | |||
Datum: 09.02.2022 <br> | |||
Testinstanz: Fahrzeug <br> | |||
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk | |||
<div class="mw-collapsible mw-collapsed"> | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | Schritt Nr. | |||
! style="font-weight: bold;" | Beschreibung | |||
! style="font-weight: bold;" | Ausgangszustand | |||
! style="font-weight: bold;" | Aktion(en) | |||
! style="font-weight: bold;" | Erwartetes Ergebnis | |||
! style="font-weight: bold;" | Ergebnis | |||
! style="font-weight: bold;" | Bewertung | |||
! style="font-weight: bold;" | Bemerkung | |||
|+ style = "text-align: left"|'''Tabelle:Testfall 7 Positive gefilterte Geschwindigkeit''' | |||
|- | |||
| Precondition 1 | |||
| Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | |||
| Fahrzeug ist ausgeschaltet | |||
| Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | |||
| Fahrzeug fährt hoch | |||
| Das Fahrzeug ist hochgefahren | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 2 | |||
| Simulation öffnen | |||
| Desktop des Fahrzeugs ist zu sehen und bedienbar | |||
| Matlab 2019a starten | |||
| Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | |||
| Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 3 | |||
| Modell kompilieren | |||
| Simulinkmodell ist geöffnet und "Ready" | |||
| Starten des Buildprozesses (Shortcut: Strg + B) | |||
| Simulink builded das geöffnete Modell | |||
| Das Simulink generiert das File "vx_testumgebung.sdf | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 4 | |||
| ControlDesk starten | |||
| ControlDesk ist nicht geöffnet | |||
| Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/ControlDesk/Vx_Testumgebung] und Messung starten. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 1 | |||
| Rechtes Hinterrad extern antreiben | |||
| Das Rad ist in Ruhe | |||
| Den Akkuschrauber mit 7mm Nuss auf die Sechskantmutter setzen und mit voller Leistung im Uhrzeigersinn drehen | |||
| Das Hinterrad dreht sich | |||
| Das Hinterrad dreht sich | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 2 | |||
| ControlDesk Plotter prüfen | |||
| Im Plotter wird die gefilterte Geschwindigkeit mit 0m/s angezeigt | |||
| Ankommende Werte in Control Desk überwachen | |||
| Die gefilterte Geschwindigkeit steigt auf etwa zügig aber leicht verzögert auf 0.8 m/s an. | |||
| [[Datei:Vx_Akkuschrauber_stabil.png|100px|thumb|center|Plot der gefilterten Geschwindigkeit]] | |||
| n.i.O. | |||
| Die gefilterte Geschwindigkeit ist sehr träge und folgt nicht der wahren Geschwindigkeit. | |||
| ---- | |||
|- | |||
| Testschritt 3 | |||
| ControlDesk Plotter prüfen nachdem das Rad in Ruhe ist | |||
| Die wahre Geschwindigkeit zeigt 0.8m/s | |||
| ControlDesk Plotter prüfen | |||
| Die Geschwindigkeit ist 0m/s | |||
| [[Datei:Vx_Akkuschrauber_stabil.png|100px|thumb|center|Plot der gefilterten Geschwindigkeit]] | |||
| n.i.O. | |||
| Die gefilterte Geschwindigkeit kehrt nicht auf 0 m/s zurück, da die wahre Geschwindigkeit ebenfalls nicht auf 0 m/s fällt. | |||
|- | |||
| Postcondition 1 | |||
| ControlDesk Experiment anhalten | |||
| Das ControlDesk Experiment läuft | |||
| Auf "Go Offline" klicken | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 2 | |||
| Matlab und Controldesk schließen | |||
| Modell und Experiment sind geöffnet | |||
| Fenster der Programme schließen | |||
| Die Programme sind geschlossen | |||
| Die Programme sind geschlossen | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 3 | |||
| Fahrzeug herunterfahren | |||
| PC ist noch an | |||
| Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | |||
| Der PC ist aus | |||
| Der PC ist aus | |||
| i.O. | |||
| ---- | |||
|- | |||
|} | |||
</div> | |||
===Testfall 8=== | |||
Bezeichnung: Varialble gefilterte Geschwindigkeit <br> | |||
Tester: Alexander Schirrmeister <br> | |||
Datum: 09.02.2022 <br> | |||
Testinstanz: Fahrzeug <br> | |||
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk | |||
<div class="mw-collapsible mw-collapsed"> | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | Schritt Nr. | |||
! style="font-weight: bold;" | Beschreibung | |||
! style="font-weight: bold;" | Ausgangszustand | |||
! style="font-weight: bold;" | Aktion(en) | |||
! style="font-weight: bold;" | Erwartetes Ergebnis | |||
! style="font-weight: bold;" | Ergebnis | |||
! style="font-weight: bold;" | Bewertung | |||
! style="font-weight: bold;" | Bemerkung | |||
|+ style = "text-align: left"|'''Tabelle:Testfall 5 Variable gefilterte Geschwindigkeit''' | |||
|- | |||
| Precondition 1 | |||
| Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | |||
| Fahrzeug ist ausgeschaltet | |||
| Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | |||
| Fahrzeug fährt hoch | |||
| Das Fahrzeug ist hochgefahren | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 2 | |||
| Simulation öffnen | |||
| Desktop des Fahrzeugs ist zu sehen und bedienbar | |||
| Matlab 2019a starten | |||
| Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | |||
| Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 3 | |||
| Modell kompilieren | |||
| Simulinkmodell ist geöffnet und "Ready" | |||
| Starten des Buildprozesses (Shortcut: Strg + B) | |||
| Simulink builded das geöffnete Modell | |||
| Das Simulink generiert das File "vx_testumgebung.sdf | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 4 | |||
| ControlDesk starten | |||
| ControlDesk ist nicht geöffnet | |||
| Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/ControlDesk/Vx_Testumgebung] und Messung starten. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 1 | |||
| Rechtes Hinterrad in Impulsen extern antreiben | |||
| Das Rad ist in Ruhe | |||
| Den Akkuschrauber mit 7mm Nuss auf die Sechskantmutter setzen und mit voller Leistung im Uhrzeigersinn drehen | |||
| Das Hinterrad dreht sich mit ungleichmäßiger Geschwindigkeit | |||
| Das Hinterrad dreht sich mit ungleichmäßiger Geschwindigkeit | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 2 | |||
| ControlDesk Plotter prüfen | |||
| Im Plotter wird die wahre Geschwindigkeit mit 0m/s angezeigt | |||
| Ankommende Werte in Control Desk überwachen | |||
| Die gefilterte Geschwindigkeit steigt an und folgt der wahren Geschwindigkeit zügig aber leicht verzögert. | |||
| [[Datei:Vx_Akkuschrauber_variabel.png|100px|thumb|center|Plot der gefilterten Geschwindigkeit]] | |||
| n.i.O. | |||
| Die gefilterte Geschwindigkeit ist sehr träge und schafft es nicht in einer geeigneten Zeit auf einen angemessenen Wert zu folgen. Eine Reaktion auf die Geschwindigkeitsveränderungen ist nicht direkt zu erkennen. | |||
|- | |||
| Testschritt 3 | |||
| ControlDesk Plotter prüfen nachdem das Rad in Ruhe ist | |||
| Die gefilterte Geschwindigkeit ist ungleich 0 m/s | |||
| ControlDesk Plotter prüfen | |||
| Die Geschwindigkeit ist 0m/s | |||
| [[Datei:Vx_Akkuschrauber_variabel.png|100px|thumb|center|Plot der gefilterten Geschwindigkeit]] | |||
| n.i.O. | |||
| Die gefilterte Geschwindigkeit sinkt nicht und hält das Niveau von etwa 0.1 m/s | |||
| ---- | |||
|- | |||
| Postcondition 1 | |||
| ControlDesk Experiment anhalten | |||
| Das ControlDesk Experiment läuft | |||
| Auf "Go Offline" klicken | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 2 | |||
| Matlab und Controldesk schließen | |||
| Modell und Experiment sind geöffnet | |||
| Fenster der Programme schließen | |||
| Die Programme sind geschlossen | |||
| Die Programme sind geschlossen | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 3 | |||
| Fahrzeug herunterfahren | |||
| PC ist noch an | |||
| Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | |||
| Der PC ist aus | |||
| Der PC ist aus | |||
| i.O. | |||
| ---- | |||
|- | |||
|} | |||
</div> | |||
===Testfall 9=== | |||
Bezeichnung: Geschwindigkeit mit Vorzeichen <br> | |||
Tester: Alexander Schirrmeister <br> | |||
Datum: 09.02.2022 <br> | |||
Testinstanz: Fahrzeug <br> | |||
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk | |||
<div class="mw-collapsible mw-collapsed"> | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | Schritt Nr. | |||
! style="font-weight: bold;" | Beschreibung | |||
! style="font-weight: bold;" | Ausgangszustand | |||
! style="font-weight: bold;" | Aktion(en) | |||
! style="font-weight: bold;" | Erwartetes Ergebnis | |||
! style="font-weight: bold;" | Ergebnis | |||
! style="font-weight: bold;" | Bewertung | |||
! style="font-weight: bold;" | Bemerkung | |||
|+ style = "text-align: left"|'''Tabelle:Testfall 9 Geschwindigkeit mit Vorzeichen''' | |||
|- | |||
| Precondition 1 | |||
| Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | |||
| Fahrzeug ist ausgeschaltet | |||
| Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | |||
| Fahrzeug fährt hoch | |||
| Das Fahrzeug ist hochgefahren | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 2 | |||
| Simulation öffnen | |||
| Desktop des Fahrzeugs ist zu sehen und bedienbar | |||
| Matlab 2019a starten | |||
| Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | |||
| Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 3 | |||
| Modell kompilieren | |||
| Simulinkmodell ist geöffnet und "Ready" | |||
| Starten des Buildprozesses (Shortcut: Strg + B) | |||
| Simulink builded das geöffnete Modell | |||
| Das Simulink generiert das File "vx_testumgebung.sdf | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 4 | |||
| ControlDesk starten | |||
| ControlDesk ist nicht geöffnet | |||
| Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/ControlDesk/Vx_Testumgebung] und Messung starten. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 1 | |||
| Hinterräder mit voller Leistung mithilfe des Akkuschraubers antreiben | |||
| Die Räder sind in RUhe | |||
| Den Akkuschrauber mit 7mm Nuss auf nacheinander auf die Sechskantmuttern setzen und mit voller Leistung im Uhrzeigersinn drehen | |||
| Die Hinterräder drehen sich nacheinander mit gleichmäßiger Geschwindigkeit | |||
| Die Hinterräder drehen sich nacheinander mit gleichmäßiger Geschwindigkeit | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 2 | |||
| ControlDesk Plotter prüfen | |||
| Im Plotter wird die Geschwindigkeit mit Vorzeichen mit 0m/s angezeigt | |||
| Ankommende Werte in Control Desk überwachen | |||
| Die Geschwindigkeit mit Vorzeichen steigt an und folgt der Geschwindigkeit, bei Richtungswechsel folgt sie der wahren Geschwindigkeit in an der X-Achse gespiegelter Form. | |||
| [[Datei:Vx_Akkuschrauber_stabil.png|100px|thumb|center|Plot der vorzeichenbehafteten Geschwindigkeit]] | |||
| n.i.O. | |||
| Die vorzeichenbehaftete Geschwindigkeit wechselt aufgrund des fehlerhaften Richtungsbits ebenfalls das Vorzeichen. Dies lässt sich anhand der blauen Linie erkennen. | |||
| ---- | |||
|- | |||
| Postcondition 1 | |||
| ControlDesk Experiment anhalten | |||
| Das ControlDesk Experiment läuft | |||
| Auf "Go Offline" klicken | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 2 | |||
| Matlab und Controldesk schließen | |||
| Modell und Experiment sind geöffnet | |||
| Fenster der Programme schließen | |||
| Die Programme sind geschlossen | |||
| Die Programme sind geschlossen | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 3 | |||
| Fahrzeug herunterfahren | |||
| PC ist noch an | |||
| Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | |||
| Der PC ist aus | |||
| Der PC ist aus | |||
| i.O. | |||
| ---- | |||
|- | |||
|} | |||
</div> | |||
===Testfall 10=== | |||
Bezeichnung: Geschwindigkeitsermittlung in Ruhe <br> | |||
Tester: Alexander Schirrmeister <br> | |||
Datum: 09.02.2022 <br> | |||
Testinstanz: Fahrzeug <br> | |||
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk | |||
<div class="mw-collapsible mw-collapsed"> | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | Schritt Nr. | |||
! style="font-weight: bold;" | Beschreibung | |||
! style="font-weight: bold;" | Ausgangszustand | |||
! style="font-weight: bold;" | Aktion(en) | |||
! style="font-weight: bold;" | Erwartetes Ergebnis | |||
! style="font-weight: bold;" | Ergebnis | |||
! style="font-weight: bold;" | Bewertung | |||
! style="font-weight: bold;" | Bemerkung | |||
|+ style = "text-align: left"|'''Tabelle:Testfall 10 Geschwindigkeitsermittlung in Ruhe''' | |||
|- | |||
|- | |||
| Precondition 1 | |||
| Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | |||
| Fahrzeug ist ausgeschaltet | |||
| Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | |||
| Fahrzeug fährt hoch | |||
| Das Fahrzeug ist hochgefahren | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 2 | |||
| Simulation öffnen | |||
| Desktop des Fahrzeugs ist zu sehen und bedienbar | |||
| Matlab 2019a starten | |||
| Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | |||
| Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 3 | |||
| Modell kompilieren | |||
| Simulinkmodell ist geöffnet und "Ready" | |||
| Starten des Buildprozesses (Shortcut: Strg + B) | |||
| Simulink builded das geöffnete Modell | |||
| Das Simulink generiert das File "vx_testumgebung.sdf | |||
| i.O. | |||
| ---- | |||
|- | |||
| Precondition 4 | |||
| ControlDesk starten | |||
| ControlDesk ist nicht geöffnet | |||
| Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/ControlDesk/Vx_Testumgebung] und Messung starten. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | |||
| i.O. | |||
| ---- | |||
|- | |||
| Testschritt 1 | |||
| Plotter überprüfen | |||
| Die Geschwindigkeiten sind alle 0 m/s, nur ein Hallsensor hat den Wert 1 | |||
| Plotter überprüfen | |||
| Die Geschwindigkeit und die Hall-Sensor Signale ändern sich nicht. | |||
| Die Geschwindigkeit und die Hall-Sensor Signale ändern sich nicht. | |||
| i.O. | |||
| [[Datei:Geschwindigkeitsermittlung_in_Ruhe.PNG|100px|thumb|center|Plot der Geschwindigkeiten in Ruhelage]] | |||
|- | |||
| Postcondition 1 | |||
| ControlDesk Experiment anhalten | |||
| Das ControlDesk Experiment läuft | |||
| Auf "Go Offline" klicken | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| Die Messungen werden gestoppt und Plotter halten die Werte fest | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 2 | |||
| Matlab und Controldesk schließen | |||
| Modell und Experiment sind geöffnet | |||
| Fenster der Programme schließen | |||
| Die Programme sind geschlossen | |||
| Die Programme sind geschlossen | |||
| i.O. | |||
| ---- | |||
|- | |||
| Postcondition 3 | |||
| Fahrzeug herunterfahren | |||
| PC ist noch an | |||
| Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | |||
| Der PC ist aus | |||
| Der PC ist aus | |||
| i.O. | |||
| ---- | |||
|- | |||
|} | |||
</div> | |||
<br><br> | |||
===Zusammenfassung=== | |||
Es lässt sich festhalten, dass die Hall-Sensoren ohne Probleme funktionieren und sicher ihre Flanken auslösen. Hingegen dazu funktioniert die Bestimmung der Richtung nicht so reibungslos. Das Richtungsbit oszilliert zwischen 0 und 1, hierbei ist anzumerken, dass der Richtungswechsel immer stattfindet, sobald Hallsensor A eine positive Flanke auslöst. Für die Dauer Flanken von Hall B und C ist die Richtungsbestimmung korrekt. <br> | |||
Die Geschwindigkeiten weisen ebenfalls Problematiken auf. Die wahre Geschwindigkeit kann anfangs korrekt bestimmt werden, fällt jedoch trotz der ruhenden Räder nicht wieder auf 0m/s ab. Ein ähnliches Bild ist bei den gefilterten und vorzeichenbehafteten Geschwindigkeiten zu erkennen. Hierbei ist anzumerken, dass die Filterung der Geschwindigkeit exträm träge ist. Dies kann durch die ständigen Richtungswechsel erklärt werden. Steht das Auto länger still, ist der Filter durch einen Windup nicht mehr ansprechbar. <br> | |||
Aufgrund dieser Gegebenheiten lässt sich der Schluss ziehen, dass die Geschwindigkeitsermittlung nicht robust genug ist, um eine stabile Längsregelung zu gewährleisten. | |||
== Umsetzung der Lösung auf der Hardware (AMR) == | == Umsetzung der Lösung auf der Hardware (AMR) == | ||
Zeile 72: | Zeile 1.465: | ||
[[Carolo_Geschwindigkeit_SS14 | Sommersemester 2014]] | [[Carolo_Geschwindigkeit_SS14 | Sommersemester 2014]] | ||
<!-- | |||
== [[Kalman-Filter zur Bestimmung von Position und Geschwindigkeit]] == | |||
== [[Kalman-Filter zur Bestimmung der Geschwindigkeit aus dem Videobild]] == | |||
== [[Kalman-Filter zur Bestimmung der Geschwindigkeit aus den LIDAR-Daten]] == | |||
--> | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]] | → zurück zum Hauptartikel: [[Praktikum_SDE|Praktikum SDE]] |
Aktuelle Version vom 11. Februar 2022, 13:11 Uhr
→ zurück zum Hauptartikel: Praktikum SDE
Ziel dieses Spezialthemas ist die Ermittlung der wahren Gechwindigkeit des Fahrzeuges im Online-Model. Als Input werden die Hallsensoren des Motors asynchron ausgelesen und durch eine Logik verarbeitet.
Projektteam
Hardware
Die Hardware wird im Artikel vom Sommersemester 2014 beschrieben: Hardwarebeschreibung.
- Fahrzeugübersetzung
Die Fahrzeugübersetzung wurde durch einen Verdacht auf einen Defekt verändert. Dies ist das Resultat daraus, dass das neue Zahnrad eine andere Zahnanzahl besitzt. Die neue Übersetzung bildet sich aus dem bisherigen Motorritzel mit 24 Zähnen und dem neuen Zwischenzahnrad mit 72 Zähnen. Die resultierende Übersetzung ist dabei 7,5.
Autor: Philipp Tewes (Diskussion) 11:44, 1. Feb. 2017 (CET)
Software
Auslesen der Interrupts
Nachdem im vorherigen Abschnitt die Hardware-Ansteuerung für die Geschwindigkeitsermittlung dargestellt wurde, soll der folgende Abschnitt die Software-Implementierung darstellen. Um nach Möglichkeiten alle Hall-Signale auslesen zu können, wird die Abfrage der Sensoren in einen asynchronen Task ausgelagert. Die geschieht durch die Anbindung eines Triggers, welcher auf die Interrupts der DS1104 achtet. Sobald dort ein Interrupt gesetzt wird, werden die Sensoren abgefragt und einmalig ausgewertet. Der asynchrone Task befindet sich im Hauptmodell "CCF_online" im Submodul "SEN - Geschwindigkeit". Dort sieht man, dass es ein weiteres Submodul gibt, welches als Trigger den Eingang "DS1104MASTER_HWINT_I2" hat. Über diesen Block werden die Interrupts der DS1104 eingelesen. Das ist in der Abbildung 1 dargestellt.
Wie man in Abbildung 1 erkennen kann, werden die einzelnen Outputs des Submodules durch "Rate Transmission" auf "GoTo" gesendet. Die "GoTo" verweisen auf die Bibliothek "Sensoren online", wo die ermittelten Werte weiter verwendet werden. Die Trennung zwischen den beiden Modulen ist notwendig, um das Modell ständig mit aktuellen Werten versorgen zu können. Diese Versorgung wird dadurch sichergestellt, dass die Rate Transmission für jeden Durchlauf den alten Wert bereit hält.
Kombinatorik der Hall-Signale
Wie eben beschrieben werden die Hall-Signale asynchron ausgelesen. Sobald diese über den ADC-Eingang der DS1104 eingelesen wurden, werden diese mit dem Wert 0.5 verglichen. Dieser Schritt erzeugt aus dem analogen Eingangssignal ein digitales Signal im Wertebereich [0 1], welches die weitere Verarbeitung deutlich erleichtert. Die digitalen Signale werden anschließend in einer S-Function bearbeitet und zur Geschwindigkeitsermittlung aufbereitet.
Sollte es beim Kompilieren des Projektes Probleme geben, kann es hilfreich sein, wenn man die S-Function einmal neu "Builded". Dies passiert, indem man die S-Function öffnet und oben rechts auf den Button "Build" klickt.
Innerhalb der S-Function werden die Hall-Signale einer Kombinatorik unterzogen, welche die folgenden Gesetzen folgt:
Motorstatus | Hall A | Hall B | Hall C |
---|---|---|---|
1 | 1 | 0 | 1 |
2 | 1 | 0 | 0 |
3 | 1 | 1 | 0 |
4 | 0 | 1 | 0 |
5 | 0 | 1 | 1 |
6 | 0 | 0 | 1 |
Die Auswertung der Motoränderungen werden in der zweiten S-Function beschrieben. Hierbei entspricht jeder positive Wechsel (1->2 ... 5->6) einer Vorwärtsbewegung und jeder negative Wechsel (6->5 ... 2->1) einer Rückwärtsbewegung. Dabei entspricht ein Statuswechsel einer 1/6-Motordrehung. Durch empirische Studien konnte nachgewiesen werden, dass sich eine Motordrehung nach folgender Formel in die reale Bewegung in des Fahrzeuges auf der Straße umwandeln lässt: SPEED = 0.0867 * MOTORSPEED + 0.027.
Filterung
Die ermittelte Geschwindigkeit weißt ein starkes Rauschen auf, welches durch "Zucken" des Motors und ungenaues Auslesen der Hall-Sensoren erklärt werden kann. Um die Geschwindigkeit sauber auf den Bus legen zu können, soll diese gefiltert werden. Diese Filterung erfolgt wie nachfolgend erklärt mit einer Limitierung und einem PT1-Filter.
In Abbildung 3a kann man erkennen, dass im ersten Graph das reine Messsignal abgebildet ist. Hierbei erkennt man deutlich die Peaks und das hohe Flattern des Signals. Um aus diesem Signal eine saubere Messung zu kreieren wird das Signal durch ein "Limiter" begrenzt. Dieser Limiter hat die Funktion, dass er alle Werte, welche größer als "20" sind, durch den vorherigen Wert ersetzt. Als zweiten Limiter wird ein Änderungslimiter genutzt, welcher eine Steigung, die größer als "10" ist, nicht zulässt, sondern den Wert limitiert. Das Ergebnis dieser Limiter sieht man in Graph 2 und 3 der Abbildung 3. Das dazugehörige Simulink-Modell ist in Abbildung 3b dargestellt.
Das limitierte Signal kann nun durch einen PT1-Filter gefiltert werden. Das Ergebnis der Filterung mit einer Frequenz von 0.5 Hz lässt sich in Graph 4 der Abbildung 3 erkennen. Nach der Übertragung des Messsignals in das wahre Signal per Funktion kann man in Graph 5 der Abbildung 3 die Geschwindigkeit in m/s erkennen.
Wegmessung
Die Messung des Weges erfolgt per Integration der Geschwindigkeit. Diese Messmethode erscheint sicherer zu sein, als die Messung direkt von den Hall-Signalen. Eine genaue detailierte Überprüfung dieses Sachverhaltes steht noch aus.
Quellcode
Nachfolgend abgebildet ist der Quellcode der Funktion get_direction.c :
// Author: Assad Al-Suleihi
// CASES:
//
// A B C CaseNum
// 1 0 1 1
// 1 0 0 2
// 1 1 0 3
// 0 1 0 4
// 0 1 1 5
// 0 0 1 6
#define FORWARD 1
#define BACKWARD 0
// init
static int last_case = 0;
static int last_dir = FORWARD;
int state;
int case_num = 0;
state = 0;
// setzen des Status
if(HALL_A[0]>0){
state +=100;
}
if(HALL_B[0]>0){
state+=10;
}
if(HALL_C[0]>0){
state+=1;
}
// Übersetzung des Status
switch(state){
case 101:
case_num = 1;
break;
case 100:
case_num = 2;
break;
case 110:
case_num = 3;
break;
case 10:
case_num = 4;
break;
case 11:
case_num = 5;
break;
case 1:
case_num = 6;
break;
default:
break;
}
// Ermittlung der Drehrichtung
//Case: Forward Wrap-Around 6->1
if(case_num == 1 && last_case == 6){
direction[0] = FORWARD;
last_dir = FORWARD;
//Case: Backward Wrap-Around 1->6
}else if(case_num == 6 && last_case == 1){
direction[0] = BACKWARD;
last_dir = BACKWARD;
//Case: Forward 1->2 .. 5->6
}else if(case_num > last_case){
direction[0] = FORWARD;
last_dir = FORWARD;
//Case: Backward 6->5 .. 2->1
}else if(case_num < last_case){
direction[0] = BACKWARD;
last_dir = BACKWARD;
//Case: No change
}else if(case_num == last_case){
direction[0] = last_dir;
}
current_state[0] = case_num;
//save current case number
last_case = case_num;
Nachfolgend abgebildet ist der Quellcode der Funktion meas_accel_rtlib.c:
// Author: Asaad Al-Suleihi
// Update: Philipp Tewes und Janis Ostermann
// init
static bool first_run = true;
const double disp_single_int = 1;
const double max_time = 171.827509221549;
static double last_time = 0;
static double last_interrupt_count = 0;
static double last_speed = 0;
static double acceleration = 0;
static double delta_interrupts = 1;
static double disp = 1;
double curr_time;
double delta_loops;
double dt;
double speed;
//displacement
#define FORWARD 1
#define BACKWARD 0
const double diameter = 0.0663; // Raddurchmesser in m
#define M_PI 3.14
double circumference = M_PI*diameter; // Umfang (0.2083) in m
//disable for setting ratio in ControlDesk
const double ratio = 7.5; // 7.5 Motorumdrehungen = 1 Radumdrehung
const double hall_per_evo = 2; // 2 Flanken Hall-Sensor
double step = circumference / (ratio * hall_per_evo); // Gefahrene Strecke zwischen zwei Hall-Sensor Signalen
//filter array
#define BUFF_SIZE 100
static double circ_buff[BUFF_SIZE]={0};
static int buff_wr=0;
static int num_vals_in_buff = 0;
double rolling_mean;
int i;
double mean_speed;
static double last_mean_speed;
double mean_accel;
//
//time using timestamping
static double curr_sec;
static double last_sec;
double dsec;
double timestamp_vel;
//
//Ermittlung der Geschwindigkeit
if (first_run == true){
first_run = false;
#ifndef MATLAB_MEX_FILE
ts_init(TS_MODE_SINGLE,0.0);
last_sec = ts_time_read();
#endif
disp = 0;
}
#ifndef MATLAB_MEX_FILE
curr_sec = ts_time_read();
#endif
//Prüfen auf "false" Flanken
if ( (curr_sec - last_sec) > min_delta_t[0]){
//dt = curr_time - last_time;
dsec = curr_sec - last_sec;
timestamp_vel = step / dsec;
//last_time = curr_time;
last_sec = curr_sec;
if(direction[0] == FORWARD){
disp += step;
}else{
disp -= step;
}
displacement[0] = disp;
velocity[0] = timestamp_vel;
}
HIL Test
Datum: 02.09.2014 Teilnehmer: Al-Suleihi, Prof. Schneider
Aufbau
- Signalgenerator erzeugt Rechteckflanken mit einer Frequenz von 735,2 Hz
- Frequenz mit Oszilloskop geprüft
- Signal geht auf dSpace Breakoutbox
- Signalverarbeitung im Simulink Modell
- Gesamte AMR Modell läuft mit.
- Die Flanken starten einen 10uS Timer.
- Zwischen den Flanken liegen 1,36ms
- In Control Desk werden n=137 bzw. 138 Flanken gezählt.
- Zu Testzwecken wurde die Frequenz ermittelt.
- Die Frequenz liegt zwischen 724,6Hz und 729,92Hz.
- Der Raddurchmesser beträgt 0,0663m.
- Der Radumfang berechnet sich zu 0,2083m.
- 4 Motorumdrehungen entsprechen 1 Radumdrehung.
- Mit der neuen Schaltung werden die steigenden und fallenden Flanken des Hallgebers zu je einer steigenden Flanke gewandelt.
- Pro Kanal A, b, c ergeben sich somit 2 Flanken.
- Pro Motorumdrehung entstehen 6 Flanken.
- Mit jeder Flanke hat sich das Rad um 0,008678m bzw. 8,7mm gedreht.
- Die gefahrene Strecke sollte aus der Summe der Teilstrrecken ermittelt werden.
- Der Geschwindigkeitsfehler berechnet sich zu:
- Der maximale Geschwindigkeitsfehler liegt somit bei 4,6cm jede Sekunde.
- Mit statistischen Mitteln (z.B. Tiefpassfilterung) sollte dieser Fehler um den Faktor 0,1 auf 5mm/s verbessert werden können.
- Um die Auflösung zu erhohen, könnte mit jedem Timerimpuls die Stecke inkrementiert werden. Dies würde die Auflösung um den Faktor 137 erhöhen. Wenn je 8,7mm 137 Timerflanken gezählt werden sind dies 63um.
Nächste Schritte
Deadline: Freitag, 05.09.14 Bearbeiter: Asaad Al-Suleihi
- Umsetzung der Testumgebung auf der Hardware (AMR)
- Strecken und Geschwindigkeitsberechnung.
- Tiefpassfilterung über 10 Werte
- Autonome Fahrt in den Geschwindigkeiten 0,5m/s, 1m/s, 2m/s, 3m/s
- Verifizierung des HIL-ergebnisse am Fahrzeug.
- Absolute Referenzmessung der Strecke und Geschwindigkeit
Test im/am Fahrzeug
Autor: Alexander Schirrmeister
Betreuer: Prof. Schneider, Prof. Göbel, Marc Ebmeyer
Einleitung
In diesem Kapitel wird die Umsetzung der Tests für das Softwaremodul "Geschwindigkeitsermittlung inkl. Hall-Sensorik" beschrieben und dokumentiert.
Zum Beginn werden die Testfälle vorgestellt, inklusive der Präkonditionen, Testschritte, und der Postkonditionen. Im Anschluss daran werden die erzielten ergebnisse erläutert.
Zum Schluss werden mögliche Ursachen und Fehlerquellen genannt.
Testfälle
Die Testfälle wurden auf Basis der aktuellen SVN Softwareversion durchgeführt. Hierzu wurde ein Simulinkmodell erstellt, welches aus einzelnen Bibliotheksblöcken der zu testenden Funktionen aufgebaut ist (bib_Sensoren_Aktoren_online [Rev.: 6815]).
Diese Dateien befinden sich unter dem Pfad "https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Software/CaroloCupFahrzeug/testumgebungen/Vx_HallSensorik/Vx_Testumgebung.slx". Das zum Test erstellte Modell ist "Vx_Testumgebung.slx", welches über das Start-Script "start_Vx_Hallsensorik.m" initialisiert und geöffnet wird.
Zur Durchführung einiger Tests wurde ein externer Antrieb für eines der Räder genutzt. Mithilfe eines Akkuschraubers mit der einer Nenndrezahl von 450 U/min, lässt sich eine feste erwartete Geschwindigkeit ermitteln.
Zur Berechnung wird die Umdrehung des Differenzialtellers benötigt. Diese lässt sich wie folgt bestimmen:
Mithilfe des Raddurchmessers von lässt sich die erwartete Geschwindigkeit ermitteln:
Die ausführlichen Tabellen zu den Testfällen lassen sich mit Klick auf den Button "Ausklappen" anzeigen
Testfall 1
Bezeichnung: Funktionsfähigkeit Hallensor A
Tester: Alexander Schirrmeister
Datum: 09.02.2022
Testinstanz: Fahrzeug
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk
Schritt Nr. | Beschreibung | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Bemerkung |
---|---|---|---|---|---|---|---|
Precondition 1 | Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | Fahrzeug ist ausgeschaltet | Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | Fahrzeug fährt hoch | Das Fahrzeug ist hochgefahren | i.O. | ---- |
Precondition 2 | Simulation öffnen | Desktop des Fahrzeugs ist zu sehen und bedienbar | Matlab 2019a starten | Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | i.O. | ---- |
Precondition 3 | Modell kompilieren | Simulinkmodell ist geöffnet und "Ready" | Starten des Buildprozesses (Shortcut: Strg + B) | Simulink builded das geöffnete Modell | Das Simulink generiert das File "vx_testumgebung.sdf | i.O. | ---- |
Precondition 4 | ControlDesk starten | ControlDesk ist nicht geöffnet | Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [1] und Messung starten. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | i.O. | ---- |
Testschritt 1 | Linkes Hinterrad festhalten, rechtes hinterrad händisch drehen | Räder sind in Ruhe | Händisch das Rechte Hinterrad mit dem Uhrzeigersinn (vorwärts) drehen | Das Rad dreht sich | Das Rad dreht sich | i.O. | ---- |
Testschritt 2 | Control Desk Plotter überprüfen | In Control Desk wird eine 0 angezeigt für Hallsensor A angezeigt | Plotter beobachten | Es werden positive und negative Flanken ausgelöst | i.O. | ---- | |
Postcondition 1 | ControlDesk Experiment anhalten | Das ControlDesk Experiment läuft | Auf "Go Offline" klicken | Die Messungen werden gestoppt und Plotter halten die Werte fest | Die Messungen werden gestoppt und Plotter halten die Werte fest | i.O. | ---- |
Postcondition 2 | Matlab und Controldesk schließen | Modell und Experiment sind geöffnet | Fenster der Programme schließen | Die Programme sind geschlossen | Die Programme sind geschlossen | i.O. | ---- |
Postcondition 3 | Fahrzeug herunterfahren | PC ist noch an | Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | Der PC ist aus | Der PC ist aus | i.O. | ---- |
Testfall 2
Bezeichnung: Funktionsfähigkeit Hallensor B
Tester: Alexander Schirrmeister
Datum: 09.02.2022
Testinstanz: Fahrzeug
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk
Schritt Nr. | Beschreibung | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Bemerkung |
---|---|---|---|---|---|---|---|
Precondition 1 | Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | Fahrzeug ist ausgeschaltet | Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | Fahrzeug fährt hoch | Das Fahrzeug ist hochgefahren | i.O. | ---- |
Precondition 2 | Simulation öffnen | Desktop des Fahrzeugs ist zu sehen und bedienbar | Matlab 2019a starten | Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | i.O. | ---- |
Precondition 3 | Modell kompilieren | Simulinkmodell ist geöffnet und "Ready" | Starten des Buildprozesses (Shortcut: Strg + B) | Simulink builded das geöffnete Modell | Das Simulink generiert das File "vx_testumgebung.sdf | i.O. | ---- |
Precondition 4 | ControlDesk starten | ControlDesk ist nicht geöffnet | Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [2] und Messung starten. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | i.O. | ---- |
Testschritt 1 | Linkes Hinterrad festhalten, rechtes hinterrad händisch drehen | Räder sind in Ruhe | Händisch das Rechte Hinterrad mit dem Uhrzeigersinn (vorwärts) drehen | Das Rad dreht sich | Das Rad dreht sich | i.O. | ---- |
Testschritt 2 | Control Desk Plotter überprüfen | In Control Desk wird eine 0 angezeigt für Hallsensor B angezeigt | Plotter beobachten | Es werden positive und negative Flanken ausgelöst | i.O. | ---- | |
Postcondition 1 | ControlDesk Experiment anhalten | Das ControlDesk Experiment läuft | Auf "Go Offline" klicken | Die Messungen werden gestoppt und Plotter halten die Werte fest | Die Messungen werden gestoppt und Plotter halten die Werte fest | i.O. | ---- |
Postcondition 2 | Matlab und Controldesk schließen | Modell und Experiment sind geöffnet | Fenster der Programme schließen | Die Programme sind geschlossen | Die Programme sind geschlossen | i.O. | ---- |
Postcondition 3 | Fahrzeug herunterfahren | PC ist noch an | Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | Der PC ist aus | Der PC ist aus | i.O. | ---- |
Testfall 3
Bezeichnung: Funktionsfähigkeit Hallensor C
Tester: Alexander Schirrmeister
Datum: 09.02.2022
Testinstanz: Fahrzeug
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk
Schritt Nr. | Beschreibung | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Bemerkung |
---|---|---|---|---|---|---|---|
Precondition 1 | Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | Fahrzeug ist ausgeschaltet | Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | Fahrzeug fährt hoch | Das Fahrzeug ist hochgefahren | i.O. | ---- |
Precondition 2 | Simulation öffnen | Desktop des Fahrzeugs ist zu sehen und bedienbar | Matlab 2019a starten | Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | i.O. | ---- |
Precondition 3 | Modell kompilieren | Simulinkmodell ist geöffnet und "Ready" | Starten des Buildprozesses (Shortcut: Strg + B) | Simulink builded das geöffnete Modell | Das Simulink generiert das File "vx_testumgebung.sdf | i.O. | ---- |
Precondition 4 | ControlDesk starten | ControlDesk ist nicht geöffnet | Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [3] und Messung starten. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | i.O. | ---- |
Testschritt 1 | Linkes Hinterrad festhalten, rechtes hinterrad händisch drehen | Räder sind in Ruhe | Händisch das Rechte Hinterrad mit dem Uhrzeigersinn (vorwärts) drehen | Das Rad dreht sich | Das Rad dreht sich | i.O. | ---- |
Testschritt 2 | Control Desk Plotter überprüfen | In Control Desk wird eine 0 angezeigt für Hallsensor C angezeigt | Plotter beobachten | Es werden positive und negative Flanken ausgelöst | i.O. | ---- | |
Postcondition 1 | ControlDesk Experiment anhalten | Das ControlDesk Experiment läuft | Auf "Go Offline" klicken | Die Messungen werden gestoppt und Plotter halten die Werte fest | Die Messungen werden gestoppt und Plotter halten die Werte fest | i.O. | ---- |
Postcondition 2 | Matlab und Controldesk schließen | Modell und Experiment sind geöffnet | Fenster der Programme schließen | Die Programme sind geschlossen | Die Programme sind geschlossen | i.O. | ---- |
Postcondition 3 | Fahrzeug herunterfahren | PC ist noch an | Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | Der PC ist aus | Der PC ist aus | i.O. | ---- |
Testfall 4
Bezeichnung: Funktionsfähigkeit Richtungsbit
Tester: Alexander Schirrmeister
Datum: 09.02.2022
Testinstanz: Fahrzeug
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk
Schritt Nr. | Beschreibung | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Bemerkung |
---|---|---|---|---|---|---|---|
Precondition 1 | Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | Fahrzeug ist ausgeschaltet | Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | Fahrzeug fährt hoch | Das Fahrzeug ist hochgefahren | i.O. | ---- |
Precondition 2 | Simulation öffnen | Desktop des Fahrzeugs ist zu sehen und bedienbar | Matlab 2019a starten | Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | i.O. | ---- |
Precondition 3 | Modell kompilieren | Simulinkmodell ist geöffnet und "Ready" | Starten des Buildprozesses (Shortcut: Strg + B) | Simulink builded das geöffnete Modell | Das Simulink generiert das File "vx_testumgebung.sdf | i.O. | ---- |
Precondition 4 | ControlDesk starten | ControlDesk ist nicht geöffnet | Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [4] und Messung starten. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | i.O. | ---- |
Testschritt 1 | Drehung mit Hand im Uhrzeigersinn | Räder sind in Ruhe | Händisch das Rechte Hinterrad mit dem Uhrzeigersinn (vorwärts) drehen | Das Rad dreht sich, anschließend ändert es die Richtung | Das Rad dreht sich, anschließend ändert es die Richtung | i.O. | ---- |
Testschritt 2 | Control Desk Plotter überprüfen | In Control Desk wird eine 1 für das Richtungsbit angezeigt | Plotter beobachten | Es wird eine negative Flanke ausgelöst | n.i.O. | Dieser Test wurde noch einmal mit dem externen Antrieb getestet um zu überprüfen, ob es vielleicht an einer zu langsamen Umdrehung liegt. | |
Testschritt 3 | Drehung mit Hand gegen den Uhrzeigersinn | Räder sind in Ruhe | Händisch das Rechte Hinterrad gegen den Uhrzeigersinn rückwärts drehen | Das Rad dreht sich | Das Rad dreht sich | i.O. | ---- |
Testschritt 4 | Control Desk Plotter überprüfen | In ControlDesk wird eine negative Flanke angezeigt | Plotter beobachten | Es werden positive und negative Flanken ausgelöst | Trotz umgekehrter Richtung zeigt sich ein ähnliches Bild analog zu Testschritt 2. | n.i.O. | ---- |
Postcondition 1 | ControlDesk Experiment anhalten | Das ControlDesk Experiment läuft | Auf "Go Offline" klicken | Die Messungen werden gestoppt und Plotter halten die Werte fest | Die Messungen werden gestoppt und Plotter halten die Werte fest | i.O. | ---- |
Postcondition 2 | Matlab und Controldesk schließen | Modell und Experiment sind geöffnet | Fenster der Programme schließen | Die Programme sind geschlossen | Die Programme sind geschlossen | i.O. | ---- |
Postcondition 3 | Fahrzeug herunterfahren | PC ist noch an | Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | Der PC ist aus | Der PC ist aus | i.O. | ---- |
Testfall 5
Bezeichnung: Positive wahre Geschwindigkeit
Tester: Alexander Schirrmeister
Datum: 09.02.2022
Testinstanz: Fahrzeug
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk
Schritt Nr. | Beschreibung | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Bemerkung | |
---|---|---|---|---|---|---|---|---|
Precondition 1 | Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | Fahrzeug ist ausgeschaltet | Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | Fahrzeug fährt hoch | Das Fahrzeug ist hochgefahren | i.O. | ---- | |
Precondition 2 | Simulation öffnen | Desktop des Fahrzeugs ist zu sehen und bedienbar | Matlab 2019a starten | Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | i.O. | ---- | |
Precondition 3 | Modell kompilieren | Simulinkmodell ist geöffnet und "Ready" | Starten des Buildprozesses (Shortcut: Strg + B) | Simulink builded das geöffnete Modell | Das Simulink generiert das File "vx_testumgebung.sdf | i.O. | ---- | |
Precondition 4 | ControlDesk starten | ControlDesk ist nicht geöffnet | Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [5] und Messung starten. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | i.O. | ---- | |
Testschritt 1 | Rechtes Hinterrad extern antreiben | Das Rad ist in Ruhe | Den Akkuschrauber mit 7mm Nuss auf die Sechskantmutter setzen und mit voller Leistung im Uhrzeigersinn drehen | Das Hinterrad dreht sich | Das Hinterrad dreht sich | i.O. | ---- | |
Testschritt 2 | ControlDesk Plotter prüfen | Im Plotter wird die wahre Geschwindigkeit mit 0m/s angezeigt | Ankommende Werte in Control Desk überwachen | Die wahre Geschwindigkeit steigt auf etwa 0.8m/s an. | n.i.O. | Die Geschwindigkeit erreicht ein stabiles Niveau, ist allerdings zu hoch. Dies lässt sich eventuell durch eine Ungenaue Nenndrehzahl des Akkuschraubers erklären, bedarf allerdings weiterer Tests. | ---- | |
Testschritt 3 | ControlDesk Plotter prüfen nachdem das Rad in Ruhe ist | Die wahre Geschwindigkeit zeigt 0.8m/s | ControlDesk Plotter prüfen | Die Geschwindigkeit ist 0m/s | n.i.O. | Die wahre Geschwindigkeit liegt nach Beendigung des Antriebs nicht auf 0m/s. | ---- | |
Postcondition 1 | ControlDesk Experiment anhalten | Das ControlDesk Experiment läuft | Auf "Go Offline" klicken | Die Messungen werden gestoppt und Plotter halten die Werte fest | Die Messungen werden gestoppt und Plotter halten die Werte fest | i.O. | ---- | |
Postcondition 2 | Matlab und Controldesk schließen | Modell und Experiment sind geöffnet | Fenster der Programme schließen | Die Programme sind geschlossen | Die Programme sind geschlossen | i.O. | ---- | |
Postcondition 3 | Fahrzeug herunterfahren | PC ist noch an | Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | Der PC ist aus | Der PC ist aus | i.O. | ---- |
Testfall 6
Bezeichnung: Negative wahre Geschwindigkeit
Tester: Alexander Schirrmeister
Datum: 09.02.2022
Testinstanz: Fahrzeug
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk
Schritt Nr. | Beschreibung | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Bemerkung | |
---|---|---|---|---|---|---|---|---|
Precondition 1 | Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | Fahrzeug ist ausgeschaltet | Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | Fahrzeug fährt hoch | Das Fahrzeug ist hochgefahren | i.O. | ---- | |
Precondition 2 | Simulation öffnen | Desktop des Fahrzeugs ist zu sehen und bedienbar | Matlab 2019a starten | Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | i.O. | ---- | |
Precondition 3 | Modell kompilieren | Simulinkmodell ist geöffnet und "Ready" | Starten des Buildprozesses (Shortcut: Strg + B) | Simulink builded das geöffnete Modell | Das Simulink generiert das File "vx_testumgebung.sdf | i.O. | ---- | |
Precondition 4 | ControlDesk starten | ControlDesk ist nicht geöffnet | Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [6] und Messung starten. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | i.O. | ---- | |
Testschritt 1 | Linkes Hinterrad extern antreiben | Das Rad ist in Ruhe | Den Akkuschrauber mit 7mm Nuss auf die Sechskantmutter setzen und mit voller Leistung im Uhrzeigersinn drehen | Das Hinterrad dreht sich | Das Hinterrad dreht sich | i.O. | ---- | |
Testschritt 2 | ControlDesk Plotter prüfen | Im Plotter wird die wahre Geschwindigkeit mit 0m/s angezeigt | Ankommende Werte in Control Desk überwachen | Die wahre Geschwindigkeit steigt auf etwa 0.8m/s an. | Dieser Testfall erzielt das gleiche Ergebnis wie Testfall 5. | i.O. | ---- | |
Testschritt 3 | ControlDesk Plotter prüfen nachdem das Rad in Ruhe ist | Die wahre Geschwindigkeit zeigt 0.8m/s | ControlDesk Plotter prüfen | Die Geschwindigkeit ist 0m/s | Dieser Testfall erzielt das gleiche Ergebnis wie Testfall 5. | n.i.O. | Die wahre Geschwindigkeit liegt nicht auf 0m/s. | |
Postcondition 1 | ControlDesk Experiment anhalten | Das ControlDesk Experiment läuft | Auf "Go Offline" klicken | Die Messungen werden gestoppt und Plotter halten die Werte fest | Die Messungen werden gestoppt und Plotter halten die Werte fest | i.O. | ---- | |
Postcondition 2 | Matlab und Controldesk schließen | Modell und Experiment sind geöffnet | Fenster der Programme schließen | Die Programme sind geschlossen | Die Programme sind geschlossen | i.O. | ---- | |
Postcondition 3 | Fahrzeug herunterfahren | PC ist noch an | Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | Der PC ist aus | Der PC ist aus | i.O. | ---- |
Testfall 7
Bezeichnung: Positive gefilterte Geschwindigkeit
Tester: Alexander Schirrmeister
Datum: 09.02.2022
Testinstanz: Fahrzeug
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk
Schritt Nr. | Beschreibung | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Bemerkung | |
---|---|---|---|---|---|---|---|---|
Precondition 1 | Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | Fahrzeug ist ausgeschaltet | Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | Fahrzeug fährt hoch | Das Fahrzeug ist hochgefahren | i.O. | ---- | |
Precondition 2 | Simulation öffnen | Desktop des Fahrzeugs ist zu sehen und bedienbar | Matlab 2019a starten | Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | i.O. | ---- | |
Precondition 3 | Modell kompilieren | Simulinkmodell ist geöffnet und "Ready" | Starten des Buildprozesses (Shortcut: Strg + B) | Simulink builded das geöffnete Modell | Das Simulink generiert das File "vx_testumgebung.sdf | i.O. | ---- | |
Precondition 4 | ControlDesk starten | ControlDesk ist nicht geöffnet | Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [7] und Messung starten. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | i.O. | ---- | |
Testschritt 1 | Rechtes Hinterrad extern antreiben | Das Rad ist in Ruhe | Den Akkuschrauber mit 7mm Nuss auf die Sechskantmutter setzen und mit voller Leistung im Uhrzeigersinn drehen | Das Hinterrad dreht sich | Das Hinterrad dreht sich | i.O. | ---- | |
Testschritt 2 | ControlDesk Plotter prüfen | Im Plotter wird die gefilterte Geschwindigkeit mit 0m/s angezeigt | Ankommende Werte in Control Desk überwachen | Die gefilterte Geschwindigkeit steigt auf etwa zügig aber leicht verzögert auf 0.8 m/s an. | n.i.O. | Die gefilterte Geschwindigkeit ist sehr träge und folgt nicht der wahren Geschwindigkeit. | ---- | |
Testschritt 3 | ControlDesk Plotter prüfen nachdem das Rad in Ruhe ist | Die wahre Geschwindigkeit zeigt 0.8m/s | ControlDesk Plotter prüfen | Die Geschwindigkeit ist 0m/s | n.i.O. | Die gefilterte Geschwindigkeit kehrt nicht auf 0 m/s zurück, da die wahre Geschwindigkeit ebenfalls nicht auf 0 m/s fällt. | ||
Postcondition 1 | ControlDesk Experiment anhalten | Das ControlDesk Experiment läuft | Auf "Go Offline" klicken | Die Messungen werden gestoppt und Plotter halten die Werte fest | Die Messungen werden gestoppt und Plotter halten die Werte fest | i.O. | ---- | |
Postcondition 2 | Matlab und Controldesk schließen | Modell und Experiment sind geöffnet | Fenster der Programme schließen | Die Programme sind geschlossen | Die Programme sind geschlossen | i.O. | ---- | |
Postcondition 3 | Fahrzeug herunterfahren | PC ist noch an | Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | Der PC ist aus | Der PC ist aus | i.O. | ---- |
Testfall 8
Bezeichnung: Varialble gefilterte Geschwindigkeit
Tester: Alexander Schirrmeister
Datum: 09.02.2022
Testinstanz: Fahrzeug
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk
Schritt Nr. | Beschreibung | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Bemerkung | |
---|---|---|---|---|---|---|---|---|
Precondition 1 | Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | Fahrzeug ist ausgeschaltet | Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | Fahrzeug fährt hoch | Das Fahrzeug ist hochgefahren | i.O. | ---- | |
Precondition 2 | Simulation öffnen | Desktop des Fahrzeugs ist zu sehen und bedienbar | Matlab 2019a starten | Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | i.O. | ---- | |
Precondition 3 | Modell kompilieren | Simulinkmodell ist geöffnet und "Ready" | Starten des Buildprozesses (Shortcut: Strg + B) | Simulink builded das geöffnete Modell | Das Simulink generiert das File "vx_testumgebung.sdf | i.O. | ---- | |
Precondition 4 | ControlDesk starten | ControlDesk ist nicht geöffnet | Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [8] und Messung starten. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | i.O. | ---- | |
Testschritt 1 | Rechtes Hinterrad in Impulsen extern antreiben | Das Rad ist in Ruhe | Den Akkuschrauber mit 7mm Nuss auf die Sechskantmutter setzen und mit voller Leistung im Uhrzeigersinn drehen | Das Hinterrad dreht sich mit ungleichmäßiger Geschwindigkeit | Das Hinterrad dreht sich mit ungleichmäßiger Geschwindigkeit | i.O. | ---- | |
Testschritt 2 | ControlDesk Plotter prüfen | Im Plotter wird die wahre Geschwindigkeit mit 0m/s angezeigt | Ankommende Werte in Control Desk überwachen | Die gefilterte Geschwindigkeit steigt an und folgt der wahren Geschwindigkeit zügig aber leicht verzögert. | n.i.O. | Die gefilterte Geschwindigkeit ist sehr träge und schafft es nicht in einer geeigneten Zeit auf einen angemessenen Wert zu folgen. Eine Reaktion auf die Geschwindigkeitsveränderungen ist nicht direkt zu erkennen. | ||
Testschritt 3 | ControlDesk Plotter prüfen nachdem das Rad in Ruhe ist | Die gefilterte Geschwindigkeit ist ungleich 0 m/s | ControlDesk Plotter prüfen | Die Geschwindigkeit ist 0m/s | n.i.O. | Die gefilterte Geschwindigkeit sinkt nicht und hält das Niveau von etwa 0.1 m/s | ---- | |
Postcondition 1 | ControlDesk Experiment anhalten | Das ControlDesk Experiment läuft | Auf "Go Offline" klicken | Die Messungen werden gestoppt und Plotter halten die Werte fest | Die Messungen werden gestoppt und Plotter halten die Werte fest | i.O. | ---- | |
Postcondition 2 | Matlab und Controldesk schließen | Modell und Experiment sind geöffnet | Fenster der Programme schließen | Die Programme sind geschlossen | Die Programme sind geschlossen | i.O. | ---- | |
Postcondition 3 | Fahrzeug herunterfahren | PC ist noch an | Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | Der PC ist aus | Der PC ist aus | i.O. | ---- |
Testfall 9
Bezeichnung: Geschwindigkeit mit Vorzeichen
Tester: Alexander Schirrmeister
Datum: 09.02.2022
Testinstanz: Fahrzeug
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk
Schritt Nr. | Beschreibung | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Bemerkung | |
---|---|---|---|---|---|---|---|---|
Precondition 1 | Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | Fahrzeug ist ausgeschaltet | Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | Fahrzeug fährt hoch | Das Fahrzeug ist hochgefahren | i.O. | ---- | |
Precondition 2 | Simulation öffnen | Desktop des Fahrzeugs ist zu sehen und bedienbar | Matlab 2019a starten | Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | i.O. | ---- | |
Precondition 3 | Modell kompilieren | Simulinkmodell ist geöffnet und "Ready" | Starten des Buildprozesses (Shortcut: Strg + B) | Simulink builded das geöffnete Modell | Das Simulink generiert das File "vx_testumgebung.sdf | i.O. | ---- | |
Precondition 4 | ControlDesk starten | ControlDesk ist nicht geöffnet | Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [9] und Messung starten. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | i.O. | ---- | |
Testschritt 1 | Hinterräder mit voller Leistung mithilfe des Akkuschraubers antreiben | Die Räder sind in RUhe | Den Akkuschrauber mit 7mm Nuss auf nacheinander auf die Sechskantmuttern setzen und mit voller Leistung im Uhrzeigersinn drehen | Die Hinterräder drehen sich nacheinander mit gleichmäßiger Geschwindigkeit | Die Hinterräder drehen sich nacheinander mit gleichmäßiger Geschwindigkeit | i.O. | ---- | |
Testschritt 2 | ControlDesk Plotter prüfen | Im Plotter wird die Geschwindigkeit mit Vorzeichen mit 0m/s angezeigt | Ankommende Werte in Control Desk überwachen | Die Geschwindigkeit mit Vorzeichen steigt an und folgt der Geschwindigkeit, bei Richtungswechsel folgt sie der wahren Geschwindigkeit in an der X-Achse gespiegelter Form. | n.i.O. | Die vorzeichenbehaftete Geschwindigkeit wechselt aufgrund des fehlerhaften Richtungsbits ebenfalls das Vorzeichen. Dies lässt sich anhand der blauen Linie erkennen. | ---- | |
Postcondition 1 | ControlDesk Experiment anhalten | Das ControlDesk Experiment läuft | Auf "Go Offline" klicken | Die Messungen werden gestoppt und Plotter halten die Werte fest | Die Messungen werden gestoppt und Plotter halten die Werte fest | i.O. | ---- | |
Postcondition 2 | Matlab und Controldesk schließen | Modell und Experiment sind geöffnet | Fenster der Programme schließen | Die Programme sind geschlossen | Die Programme sind geschlossen | i.O. | ---- | |
Postcondition 3 | Fahrzeug herunterfahren | PC ist noch an | Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | Der PC ist aus | Der PC ist aus | i.O. | ---- |
Testfall 10
Bezeichnung: Geschwindigkeitsermittlung in Ruhe
Tester: Alexander Schirrmeister
Datum: 09.02.2022
Testinstanz: Fahrzeug
Verwendete Software: Vx_Testumgebung.slx , Matlab/Simulink, Controldesk
Schritt Nr. | Beschreibung | Ausgangszustand | Aktion(en) | Erwartetes Ergebnis | Ergebnis | Bewertung | Bemerkung |
---|---|---|---|---|---|---|---|
Precondition 1 | Fahrzeug aufbocken, sodass die Räder freilaufend sind, Akku für die Adapterplatine anschließen, Akku für den Fahrantrieb anschließen, Stromkabel für externe Spannungsversorgung an das Fahrzeug anschließen | Fahrzeug ist ausgeschaltet | Motorschalter in die rechte Position legen um den Motor und die Hall-Sensorik mit Spannung zu versorgen, Taster des Fahrzeug-PCs betätigen | Fahrzeug fährt hoch | Das Fahrzeug ist hochgefahren | i.O. | ---- |
Precondition 2 | Simulation öffnen | Desktop des Fahrzeugs ist zu sehen und bedienbar | Matlab 2019a starten | Skript "start_Vx_HallSensorik.m" in Matlab öffnen und ausführen | Parameter werden geladen, Simulinkmodell wird initialisiert und geöffnet | i.O. | ---- |
Precondition 3 | Modell kompilieren | Simulinkmodell ist geöffnet und "Ready" | Starten des Buildprozesses (Shortcut: Strg + B) | Simulink builded das geöffnete Modell | Das Simulink generiert das File "vx_testumgebung.sdf | i.O. | ---- |
Precondition 4 | ControlDesk starten | ControlDesk ist nicht geöffnet | Controldesk 7.1 starten und aus dem neuen ControlDesk Fenster das ControlDesk Experiment öffnen [10] und Messung starten. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | Das Experiment öffnet sich und die Plotter fangen an, Daten aufzuzeichnen. | i.O. | ---- |
Testschritt 1 | Plotter überprüfen | Die Geschwindigkeiten sind alle 0 m/s, nur ein Hallsensor hat den Wert 1 | Plotter überprüfen | Die Geschwindigkeit und die Hall-Sensor Signale ändern sich nicht. | Die Geschwindigkeit und die Hall-Sensor Signale ändern sich nicht. | i.O. | |
Postcondition 1 | ControlDesk Experiment anhalten | Das ControlDesk Experiment läuft | Auf "Go Offline" klicken | Die Messungen werden gestoppt und Plotter halten die Werte fest | Die Messungen werden gestoppt und Plotter halten die Werte fest | i.O. | ---- |
Postcondition 2 | Matlab und Controldesk schließen | Modell und Experiment sind geöffnet | Fenster der Programme schließen | Die Programme sind geschlossen | Die Programme sind geschlossen | i.O. | ---- |
Postcondition 3 | Fahrzeug herunterfahren | PC ist noch an | Fahrzeug herunterfahren, Motorschalter in Linke Stellung bringen, Akkus abziehen | Der PC ist aus | Der PC ist aus | i.O. | ---- |
Zusammenfassung
Es lässt sich festhalten, dass die Hall-Sensoren ohne Probleme funktionieren und sicher ihre Flanken auslösen. Hingegen dazu funktioniert die Bestimmung der Richtung nicht so reibungslos. Das Richtungsbit oszilliert zwischen 0 und 1, hierbei ist anzumerken, dass der Richtungswechsel immer stattfindet, sobald Hallsensor A eine positive Flanke auslöst. Für die Dauer Flanken von Hall B und C ist die Richtungsbestimmung korrekt.
Die Geschwindigkeiten weisen ebenfalls Problematiken auf. Die wahre Geschwindigkeit kann anfangs korrekt bestimmt werden, fällt jedoch trotz der ruhenden Räder nicht wieder auf 0m/s ab. Ein ähnliches Bild ist bei den gefilterten und vorzeichenbehafteten Geschwindigkeiten zu erkennen. Hierbei ist anzumerken, dass die Filterung der Geschwindigkeit exträm träge ist. Dies kann durch die ständigen Richtungswechsel erklärt werden. Steht das Auto länger still, ist der Filter durch einen Windup nicht mehr ansprechbar.
Aufgrund dieser Gegebenheiten lässt sich der Schluss ziehen, dass die Geschwindigkeitsermittlung nicht robust genug ist, um eine stabile Längsregelung zu gewährleisten.
Umsetzung der Lösung auf der Hardware (AMR)
Die Lösung wurde auf Basis der in der HIL-Simulation gewonnenen Erkenntnisse auf der Hardware umgestzt. Dabei ist abweichend zu der HIL-Simulation zwecks der Ermittlung der Zeit nicht auf einem zyklischen Timer zurückgegriffen. Die Zeitmessung wurde auf Basis der dSPACE RTLib (Real-Time Library) implementiert. Die RTLib stellt C-Funktionen zur Verfügung, mit denen den Wert der Zeitgeber der Hardware gelesen werden kann. Diese stellt die höchste genauigkeit dar, die mit der Hardware erreicht werden kann.
Bei der Implementierung und Test hat sich herausgestellt, dass:
- Die Geschwindigkeit des Fahrzeugs im aufgebockten Zustand wellenformig schwingt. Die Frequenz der Signale der Hall-Sensoren variiert Sinusformig.
- Bei der Ausgang des XOR-Gatters zu Zusammenführung der Hall-Signale treten Ausreißer auf die einige 10µ-Sekunden breit sind. Diese sind aber ausreichend, um bei der Hardware ein Interrupt auszulösen. Die Ursache der Ausreißer und eine Möglichkeit zur hardwaremäßigen Lösung soll noch betrachtet werden.
Die Detektion der Ausreißer könnte per Software gelöst werden. Es wurde ein mindest Abstand zwischen 2 Flanken definiert. Alle Flanken, die in einem kurzeren Abstand zu einander auftreten werden als Fehlflanken erkannt und nicht für die Geschwindigkeitsberechnung herangezogen.
Jedoch ist noch ein Rauschen auf Geschwindigkeitssignal festzustellen. Diese lässt sich durch minimal abweichenden Zeiten zwischen den Flanken erklären. Dieses Rauschen kann gefiltert werden. Zu Demonstration wurde das Signal in PT-1-Glieder unterschiedliche Frequenzen weiterbearbeitet.
Versionsablage
→ zurück zum Hauptartikel: Praktikum SDE