226 lines
4.9 KiB
Markdown
226 lines
4.9 KiB
Markdown
# LF 7: Cyber-physische Systeme ergänzen
|
||
|
||
> **2. Ausbildungsjahr** | Zeitrichtwert: **80 Stunden**
|
||
|
||
## Kernkompetenz
|
||
|
||
Die Schülerinnen und Schüler verfügen über die Kompetenz, die physische Welt und IT-Systeme funktional zu einem cyber-physischen System zusammenzuführen.
|
||
|
||
---
|
||
|
||
## Lernziele
|
||
|
||
Nach diesem Lernfeld kannst du:
|
||
- [ ] Ein CPS analysieren und dessen Komponenten beschreiben
|
||
- [ ] Datenfluss an Schnittstellen verstehen
|
||
- [ ] Sensoren und Aktoren auswählen und integrieren
|
||
- [ ] IoT-Kommunikationsprotokolle anwenden
|
||
- [ ] Energiebedarf berechnen
|
||
- [ ] System testen und dokumentieren
|
||
- [ ] Sicherheitsaspekte berücksichtigen
|
||
|
||
---
|
||
|
||
## Was ist ein CPS?
|
||
|
||
```
|
||
Cyber-Physical System (CPS)
|
||
│
|
||
├── PHYSISCHE WELT
|
||
│ ├── Sensoren (Messdaten erfassen)
|
||
│ └── Aktoren (physikalische Aktionen)
|
||
│
|
||
├── IT-SYSTEM
|
||
│ ├── Steuerung/Regelung
|
||
│ ├── Datenverarbeitung
|
||
│ └── Speicherung
|
||
│
|
||
└── KOMMUNIKATION
|
||
├── Netzwerkverbindung
|
||
└── Protokolle (MQTT, REST, etc.)
|
||
```
|
||
|
||
### CPS vs. IoT
|
||
|
||
| Merkmal | CPS | IoT |
|
||
|---------|-----|-----|
|
||
| Fokus | Steuerung + Regelung | Vernetzung + Daten |
|
||
| Bereich | Produktion, Auto | Consumer, Gebäude |
|
||
| Echtzeit | Oft kritisch | Meist weniger |
|
||
|
||
---
|
||
|
||
## Sensoren
|
||
|
||
### Typen
|
||
|
||
| Sensortyp | Messgröße | Anwendung |
|
||
|-----------|-----------|------------|
|
||
| Temperatursensor | °C/°F | Klimaanlage |
|
||
| Feuchtigkeitssensor | %rH | Gewächshaus |
|
||
| Drucksensor | bar/Pa | Hydraulik |
|
||
| Lichtsensor | Lux | Beleuchtung |
|
||
| Abstandssensor | cm/mm | Automatisierung |
|
||
| Füllstandssensor | % | Tank |
|
||
| Bewegungssensor | bool | Sicherheit |
|
||
|
||
### Schnittstellen
|
||
|
||
```
|
||
Sensor-Schnittstellen
|
||
├── Analog
|
||
│ ├── 0-10V
|
||
│ └── 4-20mA (Stromschleife)
|
||
├── Digital
|
||
│ ├── I2C (Two-Wire)
|
||
│ ├── SPI
|
||
│ ├── 1-Wire
|
||
│ └── UART
|
||
└── Funk
|
||
├── Zigbee
|
||
├── Bluetooth LE
|
||
└── LoRa
|
||
```
|
||
|
||
---
|
||
|
||
## Aktoren
|
||
|
||
### Typen
|
||
|
||
| Aktortyp | Funktion | Beispiel |
|
||
|---------|---------|---------|
|
||
| Relais | Schalten | Licht, Motor |
|
||
| Motor | Drehung | Roboterarm |
|
||
| Ventil | Durchfluss | Hydraulik |
|
||
| Heizelement | Wärme | 3D-Drucker |
|
||
| LED | Lichtsignal | Statusanzeige |
|
||
| Piezo | Tonalarm | Signalton |
|
||
|
||
---
|
||
|
||
## Mikrocontroller & Einplatinencomputer
|
||
|
||
### Vergleich
|
||
|
||
| Plattform | Prozessor | RAM | GPIO | OS |
|
||
|-----------|-----------|-----|------|-----|
|
||
| **Arduino Uno** | ATmega328P | 2KB | 14 | Nein |
|
||
| **Raspberry Pi 4** | ARM Cortex-A72 | 8GB | 40 | Linux |
|
||
| **ESP32** | Xtensa | 520KB | 34 | FreeRTOS |
|
||
| **BBC micro:bit** | ARM Cortex-M4 | 256KB | 19 | Keins |
|
||
|
||
### Programmierung
|
||
|
||
```python
|
||
# Raspberry Pi / Python Beispiel
|
||
import RPi.GPIO as GPIO
|
||
import time
|
||
|
||
GPIO.setmode(GPIO.BCM)
|
||
GPIO.setup(18, GPIO.OUT)
|
||
|
||
try:
|
||
while True:
|
||
GPIO.output(18, True) # LED an
|
||
time.sleep(1)
|
||
GPIO.output(18, False) # LED aus
|
||
time.sleep(1)
|
||
except KeyboardInterrupt:
|
||
GPIO.cleanup()
|
||
```
|
||
|
||
---
|
||
|
||
## IoT-Kommunikationsprotokolle
|
||
|
||
### MQTT
|
||
|
||
**Publish/Subscribe-Prinzip:**
|
||
|
||
```
|
||
Publisher Broker Subscriber
|
||
│ │ │
|
||
│──Topic: temp───>│ │
|
||
│ │──temp───> │
|
||
│ │ │
|
||
│──Topic: temp───>│ │
|
||
│ │ │
|
||
```
|
||
|
||
**Beispiel (Python):**
|
||
|
||
```python
|
||
import paho.mqtt.client as mqtt
|
||
|
||
def on_connect(client, userdata, flags, rc):
|
||
client.subscribe("sensor/temperature")
|
||
|
||
def on_message(client, userdata, msg):
|
||
print(f"Temperatur: {msg.payload.decode()}")
|
||
|
||
client = mqtt.Client()
|
||
client.on_connect = on_connect
|
||
client.on_message = on_message
|
||
client.connect("broker.example.com", 1883)
|
||
client.loop_forever()
|
||
```
|
||
|
||
### REST API
|
||
|
||
```
|
||
HTTP-Methoden:
|
||
GET → Daten abrufen
|
||
POST → Daten erstellen
|
||
PUT → Daten vollständig ersetzen
|
||
PATCH → Daten teilweise ändern
|
||
DELETE → Daten löschen
|
||
```
|
||
|
||
---
|
||
|
||
## Energiebedarf
|
||
|
||
### Berechnung
|
||
|
||
```
|
||
P = U × I (Leistung = Spannung × Strom)
|
||
|
||
Beispiel:
|
||
Mikrocontroller: 5V × 0,5A = 2,5W
|
||
Stunden pro Tag: 24h
|
||
Verbrauch/Tag: 2,5W × 24h = 60Wh = 0,06kWh
|
||
Jahr: 0,06kWh × 365 = 21,9kWh
|
||
```
|
||
|
||
---
|
||
|
||
## Handlungsphasen
|
||
|
||
1. **Analysieren**: Bestehendes System verstehen
|
||
2. **Informieren**: Technische Dokumentation studieren
|
||
3. **Planen**: Komponentenauswahl, Konzept erstellen
|
||
4. **Implementieren**: Software, Hardware integrieren
|
||
5. **Testen**: Funktion prüfen, dokumentieren
|
||
6. **Reflektieren**: Optimierungsmöglichkeiten finden
|
||
|
||
---
|
||
|
||
## Prüfungsrelevanz
|
||
|
||
- Wichtig für Anwendungsentwicklung
|
||
- Projektion in LF 10a-12a
|
||
- Praxisbezug für Abschlussprojekt
|
||
|
||
---
|
||
|
||
## Querverweise
|
||
|
||
- [[2-Ausbildungsjahr/LF6-Serviceanfragen|Vorher: LF 6]]
|
||
- [[2-Ausbildungsjahr/LF8-Daten-bereitstellen|Nachher: LF 8]]
|
||
- [[IoT-Programmierung|IoT-Programmierung Vertiefung]]
|
||
|
||
---
|
||
|
||
*Stand: 2024 | Quelle: KMK Rahmenlehrplan 13.12.2019*
|