1. Communicatiekanaal
- Kanaaltype: TCP/IP
- Fysieke aansluiting: RJ45-ethernetkabel / wifi-verbinding
2. TCP/IP-communicatie
2.1 Netwerkconfiguratie
- Netwerkmodus: dynamische IP-toewijzing via DHCP
- Fallback-modus: statisch IP-adres geconfigureerd in de app
In de DHCP-modus vraagt het apparaat na het opstarten automatisch een IP-adres aan bij de DHCP-server. Zodra het adres met succes is verkregen, verzendt het apparaat zijn gegevens via mDNS. De naam van de broadcast-service is:
_nexblue_modbus._tcp.local
Dit kan automatisch worden gedetecteerd door EMS-systemen die mDNS ondersteunen, zoals Home Assistant en Tibber.
2.2 Communicatiepoort
2.3 Eenheids-ID
- Standaardwaarde: 200
- Instelbaar bereik: 1–247
In Modbus TCP is de Unit ID een logische identificatiecode die wordt behouden om compatibiliteit met RTU te waarborgen. Hiervoor wordt dezelfde configuratieparameter gebruikt als het slave-adres dat in de RTU-modus wordt gebruikt.
2.4 Definities van registers
2.4.1 Soorten registers
| Type register | Functie | Functiecode | Beschrijving |
| Invoerregisters | Invoerregisters lezen | 0x04 | Alleen-lezen registers die meetwaarden of statusinformatie weergeven, zoals spanning, stroom, vermogen, temperatuur, cumulatieve energie, enz. |
| Registratieregisters | Registers voor het vasthouden van gegevens uitlezen | 0x03 | Lees-/schrijfregisters. De master kan de huidige configuratie, de stroomlimieten, de modusstatus enz. uitlezen. |
| Registratieregisters | Schrijf naar het register met één waarde | 0x06 | De master voert één configuratieparameter of commando in, zoals de instelling voor de maximale stroomsterkte of het starten/stoppen van het opladen. |
| Registratieregisters | Meerdere opslagregisters schrijven | 0x10 | De master schrijft meerdere opeenvolgende registers tegelijk weg; dit wordt gebruikt voor batch-updates van configuraties of gestructureerde parametergroepen. |
Dit zijn de vier basisfunctiecodes die worden erkend door IEC 61131-3, EN 61107 en de ISO Modbus-specificatie, en die standaard door vrijwel alle masters, PLC’s en EMS-systemen worden ondersteund.
2.4.2 Planning van registeradressen (adreskaart)
| Beginsel | Beschrijving |
| Lengte | Het adresveld in een Modbus-frame is een 16-bits geheel getal zonder teken. |
| Gelaagde indeling | Indeling op basis van functie: Identificatie → Op stationsniveau → Per connector. Zorg ervoor dat de logica duidelijk en eenvoudig uit te breiden is. |
| Gemeenschappelijk uitgangspunt | Alle registers maken gebruik van logische adressen. De logische adressering begint doorgaans bij 0. In het document worden zowel decimale als hexadecimale notaties weergegeven. |
| Uitlijningsregel | 32-bits gegevens moeten op een even adres beginnen om te voorkomen dat registergrenzen worden overschreden. |
| Ruimte gereserveerd voor uitbreiding | Elk gebied bevat lege velden, zodat er in toekomstige versies velden kunnen worden toegevoegd zonder dat de compatibiliteit in het gedrang komt. |
| Tekenset | Elk register is 2 bytes groot. Tekststrings hebben een vaste lengte en worden niet aangevuld met 0x00 voor ongebruikte bytes. |
| Byte-/woordvolgorde | De bytevolgorde voor één register is Big-Endian. Voor gegevens met meerdere registers wordt de Little-Endian-woordvolgorde DCBA gebruikt. |
| Toegangsmethoden | Voor invoer wordt 0x04 gebruikt. De opslagregisters worden met 0x03 uitgelezen en met 0x06 (eenmalig) of 0x10 (meerdere keren) beschreven. |
2.4.3 Identificatie, versie en tijd (invoer, 0x04)
| Adres | Naam | Type | Eenheid | Toegang | Beschrijving |
| 0000–0007 / 0x0000–0x0007 | Merk | STRING(16) | — | RO | 2 bytes per register, UTF-8/ASCII. |
| 0008–0015 / 0x0008–0x000F | Model | STRING(16) | — | RO | Apparaatmodel. |
| 0016–0027 / 0x0010–0x001B | Serienummer | STRING(24) | — | RO | Serienummer van het apparaat. |
| 0028–0035 / 0x001C–0x0023 | Firmwareversie | STRING(16) | — | RO | Bijvoorbeeld: 04.00.19. |
| 0036 / 0x0024 | Modbus-tabelversie | UINT16 | — | RO | Toewijzingsversienummer, bijvoorbeeld 0x0100. |
| 0037 / 0x0025 | Aantal connectoren | UINT16 | — | RO | Aantal aansluitingen: 1 of 2. |
| 0038–0039 / 0x0026–0x0027 | Datum | UINT32 | JJJJMMDD | RO | 32-bits even uitlijning. Voorbeeld: 20251202. |
| 0040–0041 / 0x0028–0x0029 | Tijd | UINT32 | HHMMSS | RO | Voorbeeld: 155630 betekent 15:56:30. |
| 0042 / 0x002A | Tijdzone | UINT16 | notulen | RO | Voorbeeld: UTC+2 → +120. |
| 0044 | Hardwareversie | STRING(16) | — | RO | Hardwareversie. |
| 0043–0099 | Gereserveerd | — | — | — | Voorbehouden voor toekomstige identificatie, certificaten, productiegegevens, enz. |
2.4.4 Real-time status en meting (ingang, 0x04)
| Adres | Naam | Type | Eenheid | Toegang | Beschrijving |
| 0100 / 0x0064 | Status van het laadpunt | UINT16 | — | RO | - 0: Beschikbaar
- 1: Voorbereiding
- 2: Opladen
- 3: EVSE in stand-by
- 4: Opgeschort EV
- 5: Afwerking
- 6: Gereserveerd
- 7: Niet beschikbaar
- 8: Defect
|
| 0102–0103 / 0x0066–0x0067 | Huidige L1 | FLOAT32 | A | RO | 32-bits even uitlijning. |
| 0104–0105 / 0x0068–0x0069 | Huidige L2 | FLOAT32 | A | RO | — |
| 0106–0107 / 0x006A–0x006B | Huidige L3 | FLOAT32 | A | RO | — |
| 0108–0109 / 0x006C–0x006D | Spanning L1-N | FLOAT32 | V | RO | — |
| 0110–0111 / 0x006E–0x006F | Spanning L2-N | FLOAT32 | V | RO | — |
| 0112–0113 / 0x0070–0x0071 | Spanning L3-N | FLOAT32 | V | RO | — |
| 0114–0115 / 0x0072–0x0073 | Fasehoek L1 | FLOAT32 | ° | RO | Fasehoek ten opzichte van L1-N. |
| 0116–0117 / 0x0074–0x0075 | Fasehoek L2 | FLOAT32 | ° | RO | Fasehoek ten opzichte van L1-N. |
| 0118–0119 / 0x0076–0x0077 | Fasehoek L3 | FLOAT32 | ° | RO | Fasehoek ten opzichte van L1-N. |
| 0120–0121 / 0x0078–0x0079 | Actief vermogen L1 | FLOAT32 | W | RO | — |
| 0122–0123 / 0x007A–0x007B | Actief vermogen L2 | FLOAT32 | W | RO | — |
| 0124–0125 / 0x007C–0x007D | Actief vermogen L3 | FLOAT32 | W | RO | — |
| 0126–0127 / 0x007E–0x007F | Totaal actief vermogen | FLOAT32 | W | RO | — |
| 0128–0129 / 0x0080–0x0081 | Sessie-energie | FLOAT32 | kWh | RO | Huidige sessie. |
| 0130–0133 / 0x0082–0x0085 | Levenslange energie | UINT64 | Wh | RO | Cumulatieve energie. 64-bits, 4 registers. |
| 0134–0135 / 0x0086–0x0087 | Reserve-stroom | FLOAT32 | A | RO | De reserve-stroomsterkte kan via NexBlue of de cloud worden ingesteld. |
| 0136–0137 / 0x0088–0x0089 | Maximale laadstroom | FLOAT32 | A | RO | De maximale laadstroom kan worden ingesteld via NexBlue of de cloud. |
| 0138 / 0x008A | Fase-opladen | UINT16 | — | RO | - 0: Adaptief
- 1: Eenfasig forceren
- 2: Driefasig
|
| 0137–0399 / 0x0088–0x018F | Gereserveerd | — | — | — | Voorbehouden voor spanning, vermogensfactor, frequentie, vermogen per fase, enz. |
2.4.5 Besturing en veiligheid (Holding, lezen 0x03 / schrijven 0x06 of 0x10)
Opmerkingen: Als de wisselstroomvoeding van de lader wordt uit- en weer ingeschakeld, worden automatisch de standaardwaarden hersteld en moeten deze opnieuw worden ingesteld.
| Adres | Naam | Type | Eenheid | Toegang | Beschrijving |
| 1000–1001 / 0x03E8–0x03E9 | Stroomlimiet | FLOAT32 | A | RW | Stroomlimiet op stationsniveau. Standaard 16 A. Bereik 0–32 A. |
| 1002–1003 / 0x03EA–0x03EB | Reservelimiet | FLOAT32 | A | RW | De fallback-stroom bij het loskoppelen kan alleen worden ingesteld op 0–16. Waarden lager dan 6 worden als 0 beschouwd. |
| 1004–1005 / 0x03EC–0x03ED | Time-out bij terugval | UINT32 | s | RW | Drempelwaarde voor time-out van de heartbeat. Standaard 5 minuten. Minimaal 30 seconden. Maximaal 30 minuten. |
| 1006 / 0x03EE | IF_START | UINT16 | — | RW | - Start-/stopregeling
- 0: STOP
- 1: START
|
| 1007 / 0x03EF | Uitvoeringsfase-modus | UINT16 | — | RW | Waarden: - 0: Adaptief
- 1: Eenfasig forceren
- 2: Driefasig
Beperkingen bij het schakelen: - Aanbevolen minimumtijd tussen het omschakelen van de fasen: 10 minuten
- Maximaal 2 faseschakelaars binnen een periode van 1 uur
- Maximaal 6 faseschakelaars tijdens één oplaadbeurt
|
| 1008–1999 | Gereserveerd | — | — | — | Voorbehouden voor uitbreidingen. |
2.4.6 Alarmen en fouten (fout / waarschuwing)
| Adres | Naam | Type | Eenheid | Toegang | Beschrijving |
| 0400 / 0x0190 | Foutbitset | UINT16 | — | RO | - Bit 0: Afwijkende CP-spanning
- Bit1: lekstroom in de faseleiding
- Bit 2: stroomafwijking / overstroom
- Bit 3: afwijkende spanning / overspanning of onderspanning
- Bit 4: afwijkende temperatuur / te hoog of te laag
- Bit 5: relais zit vast
- Bit 6: RCD-zelftest mislukt
- Bit 7: Kortsluiting in de CP-diode
- Bit 8: PEN open
- Bit9: PE-lek
- Bit10: PE open
- Bit11: PP afwijkend
- Bit 12–15: gereserveerd
|
| 0401 / 0x0191 | Waarschuwingsbitset | UINT16 | — | RO | - Bit 0: storing in de meterchip
- Bit 1: afwijkende communicatie tussen printplaten
- Bit 2: RFID RF-afwijking
- Bit 3: 868 RF afwijkend
- Bit 4: 4G-module vertoont een storing
- Bit 5: deksel open – afwijking
- Bit 6: gereserveerd
- Bit7: Afwijking in faseverlies van het TN-systeem
- Bit 8: IT-neutrale overstroom
- Bit9: storing in het net
- Bit10: MID-modus
- Bit 11–15: gereserveerd
|
| 0402 / 0x0192 | Wachtende bitset | UINT16 | — | RO | - Bit 0: uitwijkregeling omdat CT offline is
- Bit 1: uitwijkregeling omdat het hoofdapparaat offline is
- Bit2: onderbroken vanwege een fout met lage ernst / de stroom van het laadprofiel is 0 via OCPP
- Bit3: de host verlaagt de stroom tijdens het opladen
- Bit 4: eerste verzoek verzonden, maar de host heeft nog niet gereageerd
- Bit 5: beveiliging tegen stroomonderbrekingen actief
- Bit 6: fallback geactiveerd door Modbus
- Bit 6–15: gereserveerd
|
Bijlage
Functiecodes
Een functiecode in Modbus geeft aan welke bewerking de master op de slave wil uitvoeren. Elk frame bevat een functiecode van 1 byte.
| Hex | Betekenis | Doel |
| 0x01 | Lees spoelen | Bituitgangen |
| 0x02 | Discrete ingangen uitlezen | Bitinvoer |
| 0x03 | Lees de registers | 16-bits |
| 0x04 | Invoerregisters lezen | 16-bits |
| 0x05 | Schrijf Single Coil | Bit |
| 0x06 | Schrijf naar het register voor afzonderlijke posities | 16-bits |
| 0x0F | Meerdere spoelen schrijven | Bit |
| 0x10 | Meerdere opslagregisters schrijven | 16-bits |
Overzicht van veelgebruikte Modbus-gegevenstypen
| Gegevenstype | Gebruikte registers | Bitbreedte | Type C | Betekenis en gebruik | Typische voorbeelden |
| UINT16 | 1 | 16-bits | uint16_t | Ongetekend geheel getal | Statuscodes, opsommingen, tellers, aantal connectoren. |
| INT16 | 1 | 16-bits | int16_t | Getekend geheel getal | Temperatuur, correctiewaarden, tijdzone. |
| UINT32 | 2 | 32-bits | uint32_t | Ongetekend lang geheel getal | Tijdstempels, energiemeting, secondentellers. |
| INT32 | 2 | 32-bits | int32_t | Ondertekend lang geheel getal | Vermogen, richtingswaarden. |
| FLOAT32 | 2 | 32-bits | drijven | Float met enkele precisie, IEEE 754. | Stroom, spanning, vermogen, energie, enz. |
| UINT64 | 4 | 64-bits | uint64_t | Zeer groot geheel getal | Totale energie, cumulatieve meting. |
| STRING[n] | n/2 | n × 8-bit | char[] | Tekstinformatie | Merk, model, serienummer, versienummer. |