1. Canal de communication
- Type de canal : TCP/IP
- Interface physique : connexion par câble Ethernet RJ45 / connexion Wi-Fi
2. Communication TCP/IP
2.1 Configuration du réseau
- Mode réseau : obtention dynamique d'une adresse IP via DHCP
- Mode de secours : adresse IP statique configurée dans l'application
En mode DHCP, après la mise sous tension, l'appareil demande automatiquement une adresse IP au serveur DHCP. Une fois l'adresse obtenue, l'appareil diffuse ses informations via mDNS. Le nom du service diffusé est :
_nexblue_modbus._tcp.local
Cela peut être détecté automatiquement par les systèmes EMS prenant en charge le protocole mDNS, tels que Home Assistant et Tibber.
2.2 Port de communication
2.3 Identifiant de l'unité
- Valeur par défaut : 200
- Plage configurable : 1–247
Dans Modbus TCP, l'ID d'unité est un identifiant logique conservé à des fins de compatibilité avec le mode RTU. Il utilise le même paramètre de configuration que l'adresse d'esclave utilisée en mode RTU.
2.4 Définitions des registres
2.4.1 Types de registres
| Type de registre | Fonction | Code de fonction | Description |
| Registres d'entrée | Lire les registres d'entrée | 0x04 | Registres en lecture seule qui fournissent des mesures ou des informations d'état telles que la tension, le courant, la puissance, la température, l'énergie cumulée, etc. |
| Registres de conservation | Lire les registres de maintien | 0x03 | Registres de lecture/écriture. Le maître peut lire la configuration actuelle, les limites de courant, l'état du mode, etc. |
| Registres de conservation | Écriture dans un registre de maintien unique | 0x06 | Le maître saisit un seul paramètre de configuration ou une seule commande, comme le réglage du courant maximal ou le démarrage/l'arrêt de la charge. |
| Registres de conservation | Écrire dans plusieurs registres de maintien | 0x10 | Le maître écrit simultanément dans plusieurs registres consécutifs, ce qui permet d'effectuer des mises à jour par lots de la configuration ou de groupes de paramètres structurés. |
Ces quatre codes de fonction sont les codes fondamentaux reconnus par les normes CEI 61131-3, EN 61107 et la spécification Modbus de l'ISO ; ils sont pris en charge par défaut par la quasi-totalité des maîtres, des automates programmables et des systèmes EMS.
2.4.2 Planification des adresses de registre (carte d'adresses)
| Principe | Description |
| Longueur | Le champ d'adresse d'une trame Modbus est un entier non signé de 16 bits. |
| Partitionnement par couches | Partition par fonction : Identification → Au niveau de la station → Par connecteur. Veillez à ce que la logique soit claire et facile à étendre. |
| Point de départ commun | Tous les registres utilisent des adresses logiques. L'adressage logique commence généralement à 0. Le document présente à la fois les formats décimal et hexadécimal. |
| Règle d'alignement | Les données 32 bits doivent commencer à une adresse paire afin d'éviter de franchir les limites des registres. |
| Espace réservé à l'extension | Chaque zone comporte des espaces réservés afin que les versions futures puissent ajouter des champs sans compromettre la compatibilité. |
| Encodage des caractères | Chaque registre occupe 2 octets. Les chaînes de caractères sont de longueur fixe et ne sont pas complétées par des 0x00 pour les octets inutilisés. |
| Ordre des octets/mots | L'ordre des octets pour un registre unique est « Big-Endian ». Les données multi-registres utilisent l'ordre des mots « Little-Endian » DCBA. |
| Modes d'accès | La valeur d'entrée est 0x04. Les registres de maintien sont lus avec 0x03 et écrits avec 0x06 (en mode simple) ou 0x10 (en mode multiple). |
2.4.3 Identification, version et heure (entrée, 0x04)
| Adresse | Nom | Type | Unité | Accès | Description |
| 0000–0007 / 0x0000–0x0007 | Marque | STRING(16) | — | RO | 2 octets par registre, UTF-8/ASCII. |
| 0008–0015 / 0x0008–0x000F | Modèle | STRING(16) | — | RO | Modèle de l'appareil. |
| 0016–0027 / 0x0010–0x001B | Numéro de série | STRING(24) | — | RO | Numéro de série de l'appareil. |
| 0028–0035 / 0x001C–0x0023 | Version du micrologiciel | STRING(16) | — | RO | Par exemple : 04.00.19. |
| 0036 / 0x0024 | Version du tableau Modbus | UINT16 | — | RO | Numéro de version de mappage, par exemple 0x0100. |
| 0037 / 0x0025 | Nombre de connecteurs | UINT16 | — | RO | Nombre de connecteurs : 1 ou 2. |
| 0038–0039 / 0x0026–0x0027 | Date | UINT32 | AAAAMMJJ | RO | Alignement sur un nombre pair de 32 bits. Exemple : 20251202. |
| 0040–0041 / 0x0028–0x0029 | Heure | UINT32 | HHMMSS | RO | Exemple : 155630 correspond à 15 h 56 min 30 s. |
| 0042 / 0x002A | Fuseau horaire | UINT16 | minutes | RO | Exemple : UTC+2 → +120. |
| 0044 | Version matérielle | STRING(16) | — | RO | Version matérielle. |
| 0043–0099 | Réservé | — | — | — | Réservé à des fins d'identification ultérieure, de certificats, d'informations de fabrication, etc. |
2.4.4 État et comptage en temps réel (entrée, 0x04)
| Adresse | Nom | Type | Unité | Accès | Description |
| 0100 / 0x0064 | État de Chargepoint | UINT16 | — | RO | - 0 : Disponible
- 1 : Préparation
- 2 : Recharge
- 3 : EVSE suspendu
- 4 : SuspendedEV
- 5 : Finitions
- 6 : Réservé
- 7 : Indisponible
- 8 : Anomalie
|
| 0102–0103 / 0x0066–0x0067 | Niveau 1 actuel | FLOAT32 | A | RO | Alignement pair sur 32 bits. |
| 0104–0105 / 0x0068–0x0069 | Niveau 2 actuel | FLOAT32 | A | RO | — |
| 0106–0107 / 0x006A–0x006B | Niveau L3 actuel | FLOAT32 | A | RO | — |
| 0108–0109 / 0x006C–0x006D | Tension L1-N | FLOAT32 | V | RO | — |
| 0110–0111 / 0x006E–0x006F | Tension L2-N | FLOAT32 | V | RO | — |
| 0112–0113 / 0x0070–0x0071 | Tension L3-N | FLOAT32 | V | RO | — |
| 0114–0115 / 0x0072–0x0073 | Angle de phase L1 | FLOAT32 | ° | RO | Angle de phase par rapport à L1-N. |
| 0116–0117 / 0x0074–0x0075 | Angle de phase L2 | FLOAT32 | ° | RO | Angle de phase par rapport à L1-N. |
| 0118–0119 / 0x0076–0x0077 | Angle de phase L3 | FLOAT32 | ° | RO | Angle de phase par rapport à L1-N. |
| 0120–0121 / 0x0078–0x0079 | Puissance active L1 | FLOAT32 | W | RO | — |
| 0122–0123 / 0x007A–0x007B | Puissance active L2 | FLOAT32 | W | RO | — |
| 0124–0125 / 0x007C–0x007D | Puissance active L3 | FLOAT32 | W | RO | — |
| 0126–0127 / 0x007E–0x007F | Puissance active totale | FLOAT32 | W | RO | — |
| 0128–0129 / 0x0080–0x0081 | Énergie de session | FLOAT32 | kWh | RO | Session en cours. |
| 0130–0133 / 0x0082–0x0085 | Énergie à vie | UINT64 | Qu | RO | Énergie cumulée. 64 bits, 4 registres. |
| 0134–0135 / 0x0086–0x0087 | Courant de secours | FLOAT32 | A | RO | Courant de secours défini via NexBlue ou le cloud. |
| 0136–0137 / 0x0088–0x0089 | Courant de charge maximal | FLOAT32 | A | RO | Courant de charge maximal réglable via NexBlue ou le cloud. |
| 0138 / 0x008A | Charge par phase | UINT16 | — | RO | - 0 : Adaptatif
- 1 : Mode monophasé forcé
- 2 : Force triphasée
|
| 0137–0399 / 0x0088–0x018F | Réservé | — | — | — | Réservé à la tension, au facteur de puissance, à la fréquence, à la puissance par phase, etc. |
2.4.5 Commande et sécurité (maintien, lecture 0x03 / écriture 0x06 ou 0x10)
Remarques : en cas de coupure et de rétablissement de l'alimentation secteur du chargeur, celui-ci reprendra automatiquement ses valeurs par défaut et devra être reconfiguré.
| Adresse | Nom | Type | Unité | Accès | Description |
| 1000–1001 / 0x03E8–0x03E9 | Limite de courant | FLOAT32 | A | RW | Limite de courant au niveau de la station. Valeur par défaut : 16 A. Plage : 0–32 A. |
| 1002–1003 / 0x03EA–0x03EB | Limite de repli | FLOAT32 | A | RW | Le courant de coupure de secours ne peut être réglé que sur une valeur comprise entre 0 et 16. Les valeurs inférieures à 6 sont considérées comme égales à 0. |
| 1004–1005 / 0x03EC–0x03ED | Délai d'expiration de la solution de secours | UINT32 | s | RW | Seuil de délai d'expiration de la pulsation. Valeur par défaut : 5 minutes. Minimum : 30 secondes. Maximum : 30 minutes. |
| 1006 / 0x03EE | IF_START | UINT16 | — | RW | - Commande marche/arrêt
- 0 : STOP
- 1 : DÉMARRAGE
|
| 1007 / 0x03EF | Mode de phase d'exécution | UINT16 | — | RW | Valeurs : - 0 : Adaptatif
- 1 : Mode monophasé forcé
- 2 : Force triphasée
Contraintes de commutation : - Intervalle minimum recommandé entre les changements de phase : 10 minutes
- Au maximum 2 commutations de phase par période d'une heure
- 6 commutateurs de phase au maximum au cours d'une même session de charge
|
| 1008-1999 | Réservé | — | — | — | Réservé aux extensions. |
2.4.6 Alarmes et erreurs (erreur / avertissement)
| Adresse | Nom | Type | Unité | Accès | Description |
| 0400 / 0x0190 | Ensemble de bits d'erreur | UINT16 | — | RO | - Bit 0 : tension CP anormale
- Bit 1 : fuite de ligne de phase
- Bit 2 : anomalie de courant / surintensité
- Bit 3 : tension anormale / surtension ou sous-tension
- Bit 4 : température anormale / trop élevée ou trop basse
- Bit 5 : relais bloqué
- Bit 6 : Échec de l'autotest du disjoncteur différentiel (RCD)
- Bit 7 : court-circuit de la diode CP
- Bit 8 : PEN ouvert
- Bit9 : fuite de PE
- Bit10 : PE ouvert
- Bit 11 : PP anormal
- Bits 12 à 15 : réservés
|
| 0401 / 0x0191 | Ensemble de bits d'avertissement | UINT16 | — | RO | - Bit 0 : anomalie de la puce du compteur
- Bit 1 : communication entre cartes anormale
- Bit 2 : Anomalie RF RFID
- Bit 3 : anomalie RF 868
- Bit 4 : anomalie du module 4G
- Bit 5 : couvercle ouvert (anomalie)
- Bit 6 : réservé
- Bit 7 : Anomalie de perte de phase du système TN
- Bit 8 : surintensité neutre du circuit informatique
- Bit9 : anomalie du réseau
- Bit10 : mode MID
- Bits 11 à 15 : réservés
|
| 0402 / 0x0192 | Ensemble de bits en attente | UINT16 | — | RO | - Bit 0 : solution de secours en cas de mise hors ligne du CT
- Bit 1 : basculement en mode de secours en raison de la mise hors ligne de l'unité principale
- Bit2 : mis en pause en raison d'une erreur de faible gravité / le courant du profil de charge est égal à 0 via OCPP
- Bit3 : le chargeur réduit le courant en cours de charge
- Bit 4 : première requête envoyée, mais l'hôte n'a pas répondu
- Bit 5 : protection contre les coupures de courant active
- Bit 6 : déclenchement du mode de secours par Modbus
- Bits 6 à 15 : réservés
|
Annexe
Codes de fonction
Un code de fonction dans Modbus indique l'opération que le maître souhaite effectuer sur l'esclave. Chaque trame comprend un code de fonction d'un octet.
| Hex | Signification | Cible |
| 0x01 | Lire les bobines | Sorties binaires |
| 0x02 | Lire les entrées discrètes | Entrées binaires |
| 0x03 | Lire les registres de détention | 16 bits |
| 0x04 | Lire les registres d'entrée | 16 bits |
| 0x05 | Écrire « Single Coil » | Bit |
| 0x06 | Écriture dans le registre de détention unique | 16 bits |
| 0x0F | Écrire plusieurs bobines | Bit |
| 0x10 | Écriture dans plusieurs registres de maintien | 16 bits |
Résumé des types de données Modbus courants
| Type de données | Registres utilisés | Largeur en bits | Type C | Signification et utilisation | Exemples typiques |
| UINT16 | 1 | 16 bits | uint16_t | Entier non signé | Codes d'état, énumérations, compteurs, nombre de connecteurs. |
| INT16 | 1 | 16 bits | int16_t | Entier signé | Température, décalages, fuseau horaire. |
| UINT32 | 2 | 32 bits | uint32_t | Entier long non signé | Horodatages, comptage d'énergie, compteurs de secondes. |
| INT32 | 2 | 32 bits | int32_t | Entier long signé | Puissance, valeurs directionnelles. |
| FLOAT32 | 2 | 32 bits | flotter | Nombre à virgule flottante simple précision, norme IEEE 754. | Courant, tension, puissance, énergie, etc. |
| UINT64 | 4 | 64 bits | uint64_t | Très grand nombre entier | Énergie totale, comptage cumulé. |
| STRING[n] | n/2 | n × 8 bits | char[] | Informations textuelles | Marque, modèle, numéro de série, numéro de version. |