Modbus
Zde je kompletní přehled Modbus registrů pro vaše zařízení GEOSNAKE:
📋 Modbus Registry pro STATOTEST GEOSNAKE
🔧 Základní konfigurace zařízení
| Registr | Typ | Popis | Jednotka | Poznámka |
|---|---|---|---|---|
0x0000 | R | Status registr | - | Vždy 1 |
0x0001 | R | Firmware verze | - | 0x0005 |
0x0002 | R | Hardware verze | - | 0x0003 |
0x0080 | R/W | Baudrate | bps | 9600, 19200, 38400, 57600, 115200 (kvůli zpětné kompatibilitě s FW < 5 ) |
0x0082 | R/W | Modbus adresa | 1-255 | Uloženo v flash (kvůli zpětné kompatibilitě s FW < 5 ) |
0x0083 | R/W | Baudrate | bps | 1 = 9600,2 = 19200,3 = 38400,4 = 57600,5 = 115200 |
0x0084 | R/W | WiFi stav | 0/1 | 0=OFF, 1=ON (pro verzi E-C6) |
0x0085 | R/W | Bluetooth stav | 0/1 | 0=OFF, 1=ON (pro verzi E-C6) |
0x0086 | W | Restart zařízení | - | Nenulová hodnota = restart (pro verzi E-C6) |
0x0087 | R/W | HTTP Enable | 0/1 | HTTP odesílání dat (pro verzi E-C6 pouze při aktivní wifi) |
🔍 IDENTIFIKACE ZAŘÍZENÍ 0x0700-0x070F
Chip ID a MAC Address
| Registr | Název | Typ | Popis |
|---|---|---|---|
| 0x0700 | Chip ID [63:48] | R | Chip ID bits 63-48 |
| 0x0701 | Chip ID [47:32] | R | Chip ID bits 47-32 |
| 0x0702 | Chip ID [31:16] | R | Chip ID bits 31-16 |
| 0x0703 | Chip ID [15:0] | R | Chip ID bits 15-0 |
| 0x0704 | MAC [47:32] | R | MAC adresa bits 47-32 |
| 0x0705 | MAC [31:16] | R | MAC adresa bits 31-16 |
| 0x0706 | MAC [15:0] | R | MAC adresa bits 15-0 |
System Information
| Registr | Název | Typ | Popis | Jednotka |
|---|---|---|---|---|
| 0x0707 | CPU Cores | R | Počet CPU jader | - |
| 0x0708 | CPU Frequency | R | Frekvence CPU | MHz |
| 0x0709 | Flash Size | R | Velikost Flash paměti | KB |
| 0x070A | Free Heap | R | Volná RAM paměť | KB |
| 0x070B | Uptime High | R | Uptime horních 16 bitů | sekundy |
| 0x070C | Uptime Low | R | Uptime spodních 16 bitů | sekundy |
| 0x070F | Chip Revision | R | Revize čipu | - |
WiFi Klientská IP adresa (0x0710-0x0713)
| Adresa | Registr | Popis | Typ | R/W | Jednotka |
|---|---|---|---|---|---|
| 0x0710 | WiFi IP [31:24] | IP adresa klienta (nejvyšší byte) | uint16 | R | - |
| 0x0711 | WiFi IP [23:16] | IP adresa klienta | uint16 | R | - |
| 0x0712 | WiFi IP [15:8] | IP adresa klienta | uint16 | R | - |
| 0x0713 | WiFi IP [7:0] | IP adresa klienta (nejnižší byte) | uint16 | R | - |
Poznámka: Pokud není zařízení připojeno k WiFi jako klient (STA nebo APSTA), registry vrací 0.
⚙️ Konfigurace ADXL355
| Registr | Typ | Popis | Jednotka | Poznámka |
|---|---|---|---|---|
0x0601 | R/W | Počet vzorků | ks | 24-1024 |
0x0602 | R/W | Rozsah měření | - | 1=±2g, 2=±4g, 3=±8g |
0x0603 | R/W | Výstupní frekvence | - | 0=4000Hz, 1=2000Hz, 2=1000Hz, 3=500Hz, 4=250Hz, 5=125Hz, 6=62.5Hz, 7=31.25Hz, 8=15.625, 9=7.813, 10=3.906 |
📊 Výsledky měření ADXL355 (původní formát)
| Registr | Typ | Popis | Jednotka | Poznámka |
|---|---|---|---|---|
0x0609 | R | Teplota (raw) | - | Raw hodnota |
0x060A-0x060B | R | Průměr X (32-bit) | raw | High+Low word |
0x060C-0x060D | R | Průměr Y (32-bit) | raw | High+Low word |
0x060E-0x060F | R | Průměr Z (32-bit) | raw | High+Low word |
0x0610-0x0611 | R | Minimum X (32-bit) | raw | High+Low word |
0x0612-0x0613 | R | Minimum Y (32-bit) | raw | High+Low word |
0x0614-0x0615 | R | Minimum Z (32-bit) | raw | High+Low word |
0x0616-0x0617 | R | Maximum X (32-bit) | raw | High+Low word |
0x0618-0x0619 | R | Maximum Y (32-bit) | raw | High+Low word |
0x061A-0x061B | R | Maximum Z (32-bit) | raw | High+Low word |
📊 Výsledky měření ADXL355 (scaled × 10,000,000)
| Registr | Typ | Popis | Jednotka | Poznámka |
|---|---|---|---|---|
0x0650-0x0651 | R | Minimum X (32-bit) | g × 10⁷ | Signed int |
0x0652-0x0653 | R | Minimum Y (32-bit) | g × 10⁷ | Signed int |
0x0654-0x0655 | R | Minimum Z (32-bit) | g × 10⁷ | Signed int |
0x0656-0x0657 | R | Maximum X (32-bit) | g × 10⁷ | Signed int |
0x0658-0x0659 | R | Maximum Y (32-bit) | g × 10⁷ | Signed int |
0x065A-0x065B | R | Maximum Z (32-bit) | g × 10⁷ | Signed int |
0x065C-0x065D | R | Průměr X (32-bit) | g × 10⁷ | Signed int |
0x065E-0x065F | R | Průměr Y (32-bit) | g × 10⁷ | Signed int |
0x0660-0x0661 | R | Průměr Z (32-bit) | g × 10⁷ | Signed int |
📐 Vypočítané úhly ADXL355
| Registr | Typ | Popis | Jednotka | Poznámka |
|---|---|---|---|---|
0x0662-0x0663 | R | Úhel X (32-bit) | ° × 10⁴ | angleX v setinách stupně |
0x0664-0x0665 | R | Úhel Y (32-bit) | ° × 10⁴ | angleY v setinách stupně |
0x0666-0x0667 | R | Úhel Z (32-bit) | ° × 10⁴ | angleZ v setinách stupně |
0x0668-0x0669 | R | Pitch (32-bit) | ° × 10⁴ | Náklon dopředu/dozadu |
0x066A-0x066B | R | Roll (32-bit) | ° × 10⁴ | Náklon doleva/doprava |
0x066C-0x066D | R | Celkový náklon (32-bit) | ° × 10⁴ | Od horizontály |
⚙️ Konfigurace MLX90393
| Registr | Typ | Popis | Jednotka | Poznámka |
|---|---|---|---|---|
0x0605 | R/W | Počet vzorků | ks | 1-1024 |
0x0630 | R/W | MLX90393 Gain | 0-7 (viz tabulka) | |
0x0631 | R/W | MLX90393 Oversampling | 0-3 (OSR_0 až OSR_3) | |
0x0632 | R/W | MLX90393 Filter | 0-7 (FILTER_0 až FILTER_7) |
MLX90393 Gain hodnoty
| Index | Zesílení | Popis |
|---|---|---|
| 0 | 1.0x | Výchozí |
| 1 | 1.33x | Nízké zesílení |
| 2 | 1.67x | Střední-nízké |
| 3 | 2.0x | Střední |
| 4 | 2.5x | Střední-vysoké |
| 5 | 3.0x | Vysoké |
| 6 | 4.0x | Velmi vysoké |
| 7 | 5.0x | Maximální |
🧲 Výsledky měření MLX90393
| Registr | Typ | Popis | Jednotka | Poznámka |
|---|---|---|---|---|
0x061C-0x061D | R | Průměr X (32-bit) | mT × 1000 | High+Low word |
0x061E-0x061F | R | Průměr Y (32-bit) | mT × 1000 | High+Low word |
0x0620-0x0621 | R | Průměr Z (32-bit) | mT × 1000 | High+Low word |
🎛️ Ovládací registry
| Registr | Typ | Popis | Hodnota | Akce |
|---|---|---|---|---|
0x0600 | R/W | Spustit měření ADXL355 | 0=Připraven 1=Start 2=Dokončeno | FC06/FC03 Spustí task měření, obsahuje stav měření |
0x0604 | R/W | Spuštění měření MLX90393 | 0=Připraven 1=Start 2=Dokončeno | FC06/FC03 Spustí task měření, obsahuje stav měření |
0x000D | Coil | Spustit měření ADXL355 | 0xFF00 | FC05 - Write Coil |
🎛️ Řízení měření pomocí registru 0x0600
Stavy měření:
| Hodnota | Stav | Popis | Akce |
|---|---|---|---|
| 0 | Idle | Žádné měření neběží | Připraveno ke spuštění |
| 1 | Running | Měření právě probíhá | Čekejte na dokončení |
| 2 | Completed | Měření dokončeno | Data připravena ke čtení |
Automatické chování:
- Spuštění měření: Zápis hodnoty
1do registru0x0600 - Dokončení měření: Registr se automaticky nastaví na
2 - Automatický reset: Po přečtení hodnoty
2se registr resetuje na0
💡 Příklady použití
Spuštění a sledování měření:
1. Kontrola stavu: 03 01 06 00 00 01 → 00 (idle)
2. Spuštění měření: 06 01 06 00 00 01 → Spustí task
3. Kontrola průběhu: 03 01 06 00 00 01 → 01 (running)
4. Kontrola dokončení: 03 01 06 00 00 01 → 02 (completed) + auto reset
5. Další kontrola: 03 01 06 00 00 01 → 00 (idle)
Konfigurace před měřením:
Nastavit 500 vzorků: 06 01 06 01 01 F4
Nastavit rozsah ±4g: 06 01 06 02 00 01
Spustit měření: 06 01 06 00 00 01
Čtení scaled hodnot (g × 10,000,000):
Průměr X: 03 01 06 5C 00 02 → 2 registry (High+Low)
Minimum Y: 03 01 06 52 00 02 → 2 registry (High+Low)
Maximum Z: 03 01 06 5A 00 02 → 2 registry (High+Low)
Čtení úhlů (° × 10,000):
Úhel X: 03 01 06 62 00 02 → 2 registry (High+Low)
Pitch: 03 01 06 68 00 02 → 2 registry (High+Low)
Roll: 03 01 06 6A 00 02 → 2 registry (High+Low)
Alternative spuštění přes coil:
Spuštění přes FC05: 05 00 0D FF 00 → Spustí měření
Čtení stavů:
Čtení WiFi stavu: 03 01 06 25 00 01 → 00 (OFF) nebo 01 (ON)
Čtení BT stavu: 03 01 06 26 00 01 → 00 (OFF) nebo 01 (ON)
Nastavení stavů:
Vypnout WiFi: 06 01 06 25 00 00 → WiFi se vypne okamžitě
Zapnout WiFi: 06 01 06 25 00 01 → WiFi se zapne po restartu
Vypnout Bluetooth: 06 01 06 26 00 00 → BT se vypne po restartu
Zapnout Bluetooth: 06 01 06 26 00 01 → BT se zapne po restartu
Restart zařízení: 06 01 06 27 00 01 → Okamžitý restart
Typický workflow pro změnu nastavení:
1. Vypnout WiFi: 06 01 06 25 00 00
2. Zapnout Bluetooth: 06 01 06 26 00 01
3. Restart: 06 01 06 27 00 01
4. Kontrola po restartu: 03 01 06 25 00 02 → Čtení WiFi a BT stavu
⚠️ Důležité poznámky
- Registr 0x0600 je klíčový pro řízení a sledování měření
- 32-bit hodnoty jsou vždy rozděleny na 2×16-bit registry (High + Low word)
- Scaled hodnoty (0x0650-0x0661) poskytují vysokou přesnost s faktorem 10,000,000
- Úhly jsou v desetitisícinách stupně (× 10,000) pro přesnost
- Automatický reset stavu po přečtení dokončeného měření
- Podporované adresy: 1-255 + broadcast adresa 255
- Měření trvá podle počtu vzorků (obvykle několik sekund)
- Pouze jedno měření může běžet současně
⚠️ Důležité poznámky (WiFi/Bluetooth):
- WiFi vypnutí - účinkuje okamžitě
- WiFi zapnutí - vyžaduje restart zařízení
- Bluetooth změny - vyžadují restart zařízení
- Restart registr - jakákoliv nenulová hodnota spustí restart
- Nastavení se ukládají do flash paměti a přežijí restart
- Po restartu se aplikují nová nastavení WiFi/Bluetooth
📊 Formáty dat
- Raw hodnoty: Přímo z senzoru ADXL355
- Scaled hodnoty: g × 10,000,000 (signed int32)
- Úhly: stupně × 10,000 (signed int32)
- Magnetometr: mT × 1,000 (signed int32)
- Teplota: Raw hodnota z ADXL355
🔄 Typický workflow
- Konfigurace - Nastavit počet vzorků, rozsah, frekvenci
- Spuštění - Zapsat 1 do registru 0x0600 nebo použít coil 0x000D
- Sledování - Periodicky číst registr 0x0600 (1=běží, 2=hotovo)
- Čtení výsledků - Po dokončení číst agregované hodnoty a úhly
- Opakování - Registr se automaticky resetuje na 0