ForHosting KIT · Outils pour développeurs

Somme CRC-16 Modbus

Une requête Modbus RTU qui lit dix registres dès le registre 0 de l'appareil 1 reçoit le CRC CDC5, envoyé comme C5 CD. Collez une trame en hexadécimal ou en texte pour obtenir la valeur sur 16 bits et ses octets dans l'ordre d'envoi. Gratuit dans votre navigateur.

  • Gratuit
  • Fonctionne dans votre navigateur
  • Sans inscription
  • Vos données restent sur votre appareil
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt
Si vous saisissez
Texte
123456789
Vous obtenez
CRC en hex
4B37
CRC (entier)
19 255
Crc lo
37
Crc hi
4B

Le CRC-16 Modbus est le contrôle de redondance cyclique qui clôt presque chaque trame Modbus RTU sur liaison série et sur de nombreux bus industriels. Les programmeurs, intégrateurs PLC et testeurs de protocole ont besoin d'un seul nombre déterministe pour construire une requête, valider une réponse ou déboguer un paquet corrompu sur le fil. Cette capacité accepte soit du texte UTF-8 brut, soit un dump hexadécimal d'octets, exécute l'algorithme standard CRC-16/MODBUS avec le polynôme 0xA001 et la valeur initiale 0xFFFF, et renvoie le résultat sur seize bits en hexadécimal majuscule avec les octets bas et haut dans l'ordre de transmission Modbus.

Ce qu'est le CRC-16 Modbus et pourquoi les outils industriels en ont besoin

Un contrôle de redondance cyclique fait passer chaque octet de données dans un polynôme fixe de sorte qu'un seul bit inversé change presque toujours le résidu. Modbus RTU a adopté un CRC de seize bits précis : le générateur est le polynôme réfléchi 0xA001 (équivalent à 0x8005 sous forme non réfléchie), le registre démarre à 0xFFFF, chaque octet de données est combiné par XOR dans les huit bits bas, puis huit étapes de décalage et XOR conditionnel suivent par octet, sans XOR final.

Le mot de seize bits résultant est ajouté à la trame d'abord l'octet bas, puis l'octet haut — l'ordre que les électriciens et analyseurs de protocole attendent sur un oscilloscope ou un sniffeur série. Manuels et fiches techniques nomment ce profil CRC-16/MODBUS ; des calculateurs en ligne utilisent parfois d'autres initiales ou polynômes et divergent en silence d'un PLC.

Ce point de terminaison fige le profil industriel de sorte que la chaîne un-deux-trois-quatre-cinq-six-sept-huit-neuf produit le résidu bien connu 0x4B37, et qu'une requête classique de lecture de registres holding comme adresse un, fonction trois, registre de départ zéro, quantité dix produit 0xCDC5 avec ordre fil C5 CD. Utilisez-le chaque fois que vous assemblez ou vérifiez du Modbus RTU, de nombreux protocoles de compteurs qui ont repris le même CRC, ou toute trame binaire personnalisée qui spécifie CRC-16 Modbus par nom.

Contrat d'entrée, analyse hex et champs de réponse

En mode text la chaîne est encodée en UTF-8 et chaque octet résultant entre dans le CRC ; le texte vide est autorisé et donne le résidu FFFF pour une charge de longueur nulle. En mode hex la chaîne est interprétée comme une séquence d'octets : les préfixes 0x optionnels, espaces, deux-points, tirets, underscores et virgules sont d'abord retirés, puis les caractères restants doivent former uniquement des chiffres hexadécimaux en nombre pair. Une validation échouée n'est pas facturée.

Gardez des charges modestes dans le navigateur ; l'algorithme est linéaire en longueur d'octets et entièrement en mémoire.

Analyse de captures et débogage

Collez des dumps hex d'un sniffeur série en mode hex pour recalculer le CRC et repérer vite des trames industrielles tronquées ou corrompues.

Quel polynôme et quelle valeur initiale utilise-t-elle ?

CRC-16/MODBUS : polynôme réfléchi 0xA001, registre initial 0xFFFF, sans XOR final. Cela correspond aux implémentations PLC et compteurs sur Modbus RTU.

Dans quel ordre les octets du CRC sont-ils envoyés dans une trame Modbus ?

L'octet bas d'abord, puis l'octet haut. Un CRC de 4B37 circule donc sous la forme 37 puis 4B, l'ordre qu'affiche un oscilloscope ou un analyseur série. L'outil renvoie les deux octets séparément et dans l'ordre d'envoi.

Puis-je coller un vidage hexadécimal issu d'un analyseur série ?

Oui. Passez en mode hexadécimal et collez les octets : espaces, deux-points, tirets, soulignés, virgules et préfixes 0x sont d'abord retirés. Le reste doit compter un nombre pair de chiffres hexadécimaux, sinon l'outil signale un hexadécimal mal formé.

Pourquoi un autre calculateur en ligne donne-t-il un CRC différent ?

Certains utilisent une autre valeur initiale ou un autre polynôme et contredisent un automate sans prévenir. Vérifiez avec le texte 123456789 : CRC-16 Modbus doit donner 4B37. Tout autre résultat signale un profil différent.

Peut-on calculer le CRC d'un message vide ?

Oui. En mode texte, une chaîne vide est acceptée et donne FFFF, la valeur de départ du registre, puisqu'aucun octet n'a été traité. Tout autre texte est encodé en UTF-8 avant le calcul.

Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.

POSThttps://api.kit.forhosting.com/enc/crc16-modbus

Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.

curl -X POST https://api.kit.forhosting.com/enc/crc16-modbus \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"123456789"}'
{
  "text": "123456789"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.crc16_modbus",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Un hex mal formé — nombre impair de chiffres ou caractères non hex — échoue avec invalid_input au lieu d'inventer une somme.

Contrat d'entrée, analyse hex et champs de réponse

Envoyez en POST un corps JSON avec le champ chaîne obligatoire text et l'option input_format valant text ou hex, par défaut text. Un nombre impair de chiffres après nettoyage, ou tout caractère hors de zéro à neuf et de A à F, lève invalid_input avec un message nommant l'hex mal formé pour que le client affiche l'erreur à côté du champ sans deviner. En cas de succès le corps inclut crc_hex comme quatre chiffres hex majuscules, crc_int comme entier non signé de zéro à soixante-cinq mille cinq cent trente-cinq, crc_lo et crc_hi comme octets bas et haut de ce mot, wire_hex comme l'ordre de transmission little-endian sur deux octets de Modbus RTU, byte_count de la charge interprétée, l'input_format renvoyé en écho, et les chaînes fixes algorithm, poly et init documentant CRC-16/MODBUS avec 0xA001 et 0xFFFF. Les alias data, payload, value et input sont acceptés pour la charge ; format, mode et encoding aliasent input_format.

Où une API CRC-16 Modbus prouve sa valeur

Les ingénieurs protocoles et chercheurs en sécurité recalculent les résidus sur le trafic capturé pour séparer les trames propres du bruit sans monter une pile complète. Les sites de contenu qui ciblent la somme de contrôle CRC-16 Modbus gagnent une calculatrice en direct dont le chemin gratuit correspond octet pour octet au chemin d'automatisation. Gardez des requêtes déterministes, épinglez le vecteur connu un-deux-trois-quatre-cinq-six-sept-huit-neuf égal à quatre B trois sept dans les suites de régression, et vous obtenez une reproductibilité de grade industriel sans embarquer des tables CRC dans chaque microservice. Les intégrateurs systèmes scriptent l'API dans des outils de mise en service qui génèrent des centaines de trames Modbus de lecture et d'écriture pour compteurs, variateurs et unités terminales distantes, en épinglant des valeurs dorées de crc_hex en intégration continue pour qu'une faute de polynôme ne parte jamais en production. Comme l'implémentation est parse pure de niveau A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle ni réseau sortant. Associez le wire_hex de la réponse à votre chemin d'écriture série lorsque vous avez besoin des deux octets de queue exacts, ou utilisez crc_hex lorsque vous n'avez besoin que du résidu numérique pour les journaux et tests unitaires.

Assemblage de trames Modbus RTU

Construisez les octets d'adresse, de fonction et de données, puis ajoutez le trailer wire_hex renvoyé pour que l'octet bas du CRC soit transmis en premier, comme l'exige Modbus RTU.

Contrôles dorés firmware et CI

Affirmez que le code appareil et les outils côté serveur produisent tous deux crc_hex 4B37 pour ASCII 123456789 et le résidu documenté de vos modèles de requête fixes.

Comment calculer une somme de contrôle CRC-16 Modbus ?

Envoyez text en UTF-8 avec input_format text (par défaut), ou une chaîne d'octets hex avec input_format hex. L'API renvoie crc_hex, crc_int, octets bas/haut et wire_hex dans l'ordre Modbus RTU.

Que se passe-t-il si la chaîne hex est mal formée ?

Un nombre impair de chiffres après retrait des séparateurs, ou tout caractère non hex, échoue avec invalid_input et un message d'hex mal formé. Ces échecs ne sont pas facturés.

Quelle est la différence entre wire_hex et crc_hex ?

crc_hex est le résidu de seize bits en quatre chiffres hex (nibble haut de l'octet haut en premier dans la chaîne). wire_hex est l'octet bas puis l'octet haut — l'ordre ajouté sur le fil Modbus RTU.

Combien coûte l'outil de somme CRC-16 Modbus ?

L'outil navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.

Consulter la documentation complète du KIT →