BWP-SS19-01/Fein Design/Haupt-Steuerung: Unterschied zwischen den Versionen

Aus Verteilte Systeme - Wiki
Zur Navigation springen Zur Suche springen
Zeile 3: Zeile 3:
 
Der Grund für die verwendete Systemstruktur ist, dass über den Haupt-Thread die einzelnen Modul-Threads über Funktionen angesprochen werden.
 
Der Grund für die verwendete Systemstruktur ist, dass über den Haupt-Thread die einzelnen Modul-Threads über Funktionen angesprochen werden.
   
  +
== Main_Control ==
<!--
 
Diese Funktionen sind:
 
<table>
 
{| Border=1 style="border-collapse:collapse; width: 800px;" cellpadding=10
 
| '''Modul'''
 
| '''Funktion'''
 
| '''Einheit'''
 
|-
 
|Odometrie
 
|Geradeaus()
 
|2cm
 
|-
 
|Odometrie
 
|Drehen()
 
|5°
 
|-
 
|Odometrie
 
|s* = Get_Karte()
 
|Pointer auf globale Karte
 
|-
 
|Odometrie
 
|s* = Get_CurPos()
 
|Pointer auf die momentane Position innerhalb der Karte
 
|-
 
|Odometrie
 
|Vector = Get_Distance()
 
|Distance-Vector zwischen letztem Get_CurPos() und vorletztem
 
|-
 
|BLE
 
|BLE_SendData(void * Data, int Art_des_Inhaltes)
 
|Sendet Data-Struct abhängig von der Art des Inhaltes
 
|-
 
|Energy-Management
 
|Energy_deepSleep(int Minuten)
 
|Setzt den Controller in ein Schlafzustand
 
|-
 
|Energy-Management
 
|int Get_Battery_Level(void)
 
|Milliampere des momentanen Akkuzustandes
 
|-
 
|Energy-Management
 
|int Get_CurIncome(void)
 
|Milliampere der momentanen Energie, die durch die Solar-Panel erhalten wird
 
|-
 
|Energy-Management
 
|int Get_CurConsumption(void)
 
|Milliampere des momentanen Energie-Verbrauchs
 
|-
 
|Energy-Management
 
|void energy_management_reset(void)
 
|Führt ein Reset des Energy-Management Systems aus
 
|-}
 
</table>
 
   
  +
Die Haupt-Steuerung (Main_Control.c) definiert einige Funktionen selbst, oder erweitert bestehende Funktionen der einzelnen Module um die Möglichkeit der Energiemessung sowie dem Versenden der Daten über BLE.
Funktionen zur Berechnung des Weges und der Zusammenstellung und Verwendung der obigen Funktionen sind innerhalb der Haupt-Steuerung implementiert.
 
   
  +
-->
 
  +
Ob das Versenden der Daten erfolgt, ist mit einer symbolischen Konstanten im Main_Interface.h festgelegt, dort befinden sich auch die entsprechenden ''States'' der Energiemessung :
  +
<pre>/* If DEBUG_MODE is on, every function call sends a message via BLE */
  +
#define DEBUG_MODE 1
  +
  +
#define ENERGY_STATE_NONE 0
  +
#define ENERGY_STATE_FORWARD 1
  +
#define ENERGY_STATE_BACKWARD 2
  +
#define ENERGY_STATE_TURN 3
  +
#define ENERGY_STATE_BLE_SEND 4
  +
#define ENERGY_STATE_DEEP_SLEEP 5
  +
#define ENERGY_STATE_BATTERY_LEVEL 6
  +
#define ENERGY_STATE_INCOME 7
  +
#define ENERGY_STATE_CONSUMPTION 8
  +
#define ENERGY_STATE_ENERGY_RESET 9
  +
#define ENERGY_STATE_ODOM_MEASURING 10
  +
</pre>
  +
  +
Die folgenden Funktionen des Energy-Managements werden hier definiert und interagieren mit dem Modul:
  +
<pre>// go into deep sleep
  +
void Energy_deepSleep(int minutes);
  +
  +
// get current battery level in miliAmpere
  +
int Get_BatteryLevel_from_Module(int usage);
  +
  +
// get current income
  +
int Get_CurIncome(void);
  +
  +
// get current consumption
  +
int Get_CurConsumption(void);
  +
  +
// Energy Management Modul Reset
  +
int energy_management_reset(void);
  +
</pre>
  +
  +
Interne Funktionen der Main_Control mit Bezug auf das Energy-Management:
  +
<pre>// function to print all energy values
  +
void print_energy_values(void);
  +
  +
// calculate current battery level in percentage and returns status
  +
int cur_battery_leveltest(void);
  +
</pre>
  +
  +
Die erweiterten Funktionen der Odometrie sowie der Engine sind:
  +
<pre>
  +
// read distance from sensor
  +
odm_sensor_value_t odom_sensor_read();
  +
  +
// drive forward
  +
void odom_forward(int msec);
  +
  +
// drive backwards
  +
void odom_backward(int msec);
  +
  +
// turn right or left
  +
void odom_turn(int msec, int direcction);
  +
</pre>
  +
Die dabei die jeweiligen Funktionen der Module aufrufen, den ''State'' entsprechend setzen (z.B. <kbd>ENERGY_STATE_FORWARD</kbd>) und die Daten mit <kbd>ble_set_data()</kbd> dem BLE-Modul übergeben, sofern die symbolische Konstante <kbd>DEBUG_MODE</kbd> auf 1 gesetzt ist.

Version vom 25. August 2019, 11:44 Uhr

Haupt-Steuerung

Der Grund für die verwendete Systemstruktur ist, dass über den Haupt-Thread die einzelnen Modul-Threads über Funktionen angesprochen werden.

Main_Control

Die Haupt-Steuerung (Main_Control.c) definiert einige Funktionen selbst, oder erweitert bestehende Funktionen der einzelnen Module um die Möglichkeit der Energiemessung sowie dem Versenden der Daten über BLE.


Ob das Versenden der Daten erfolgt, ist mit einer symbolischen Konstanten im Main_Interface.h festgelegt, dort befinden sich auch die entsprechenden States der Energiemessung :

/* If DEBUG_MODE is on, every function call sends a message via BLE */
#define DEBUG_MODE 1

#define ENERGY_STATE_NONE 0
#define ENERGY_STATE_FORWARD 1
#define ENERGY_STATE_BACKWARD 2
#define ENERGY_STATE_TURN     3
#define ENERGY_STATE_BLE_SEND 4
#define ENERGY_STATE_DEEP_SLEEP 5
#define ENERGY_STATE_BATTERY_LEVEL 6
#define ENERGY_STATE_INCOME 7
#define ENERGY_STATE_CONSUMPTION 8
#define ENERGY_STATE_ENERGY_RESET 9
#define ENERGY_STATE_ODOM_MEASURING 10

Die folgenden Funktionen des Energy-Managements werden hier definiert und interagieren mit dem Modul:

// go into deep sleep
void Energy_deepSleep(int minutes);

// get current battery level in miliAmpere
int Get_BatteryLevel_from_Module(int usage);

// get current income
int Get_CurIncome(void);

// get current consumption
int Get_CurConsumption(void);

// Energy Management Modul Reset
int energy_management_reset(void);

Interne Funktionen der Main_Control mit Bezug auf das Energy-Management:

// function to print all energy values
void print_energy_values(void);

// calculate current battery level in percentage and returns status
int cur_battery_leveltest(void);

Die erweiterten Funktionen der Odometrie sowie der Engine sind:

// read distance from sensor
odm_sensor_value_t odom_sensor_read();

// drive forward
void odom_forward(int msec);

// drive backwards
void odom_backward(int msec);

// turn right or left
void odom_turn(int msec, int direcction);

Die dabei die jeweiligen Funktionen der Module aufrufen, den State entsprechend setzen (z.B. ENERGY_STATE_FORWARD) und die Daten mit ble_set_data() dem BLE-Modul übergeben, sofern die symbolische Konstante DEBUG_MODE auf 1 gesetzt ist.