Cadre de protocole de communication série couramment utilisé dans les micro-ordinateurs à puce unique

avant-propos

Ces derniers temps, les ports série sont beaucoup utilisés, j'estime qu'il est nécessaire de lister brièvement les trames de protocole de communication utilisées, afin que je puisse les résumer et communiquer avec vous.Si nécessaire, vous pouvez vous y référer directement.

1. Introduction au port série MCU

Le port série (UART) dans le micro-ordinateur à puce unique est une méthode de communication d'émetteur-récepteur à un octet. Généralement, trois fils suffisent. Si la séquence de fils standard est connectée, il s'agit d'un type DB9 à neuf broches. fil (rx tx gnd | AB gnd) est facile à utiliser. , souvent utilisé pour la communication à courte distance avec moins d'appareils connectés.
L'ajout d'une puce de contrôle externe au port série changera le port série au niveau de deux types de communication, RS232 et RS485.Les logiques 1 et 0 de RS232 sont divisées en +15V et -15V, et les logiques 1 et 0 de RS485 correspond à la différence de tension du port AB +2 ~ +6 et -2 ~ -6. RS232 ne peut pas connecter plusieurs sous-appareils et peut réaliser une communication en duplex intégral.RS485 peut réaliser le montage de plusieurs appareils et une communication en duplex unique.
Étant donné qu'il s'agit d'un envoi et d'une réception sur un seul octet, un format de communication prescrit est nécessaire pour réaliser l'analyse et l'envoi. Il s'agit du protocole de communication.

2. Types de protocoles de communication couramment utilisés

1. Pas de mise en forme

Parfois, aucun format n'est roi et de nombreux fabricants d'appareils utilisent directement le contrôle impératif des chaînes. Par exemple

/s1000 

Réglez la vitesse sur 1000

/r0000

Rétablir les paramètres d'usine.
Cela a l'avantage qu'il peut être utilisé directement dans certains appareils avec des ressources et des performances générales, sans files d'attente ni caches, et lit et affecte directement les données dans les interruptions, ce qui est simple et grossier. Le cas de l'interrupteur est facilement résolu. Il convient aux commandes courtes simples et aux occasions de données courtes.
L'inconvénient est que les données de communication ne peuvent pas être trop longues et qu'elles sont sujettes à une mauvaise opération (quiconque envoie les données sans discernement et change les données de base aura fini).

2. En-tête de trame et queue de trame + données

en-tête de cadre Longueur des données données Chiffre de contrôle fin de cadre
0XF5 0X4 0X01 0X02 0X03 0X04 0XC5 0X5F

Le format simple et couramment utilisé est ce format avec en-tête de trame et queue de trame ou chiffre de contrôle. Habituellement, les données sont reçues dans le micro-ordinateur à puce unique, puis stockées dans la file d'attente du cache, puis les données de la file d'attente du cache sont extraites dans la boucle principale en fonction de l'en-tête de trame et de la queue de trame, et l'opération d'attribution est effectuée trame par cadre.
Il existe de nombreuses sommes de contrôle, telles que la vérification de la somme, le CRC, etc. Ici, je pense que le cryptage peut également être implémenté. Vous pouvez définir vous-même un algorithme de cryptage et le chiffre de contrôle peut être obtenu à l'aide de l'algorithme de cryptage. D'autres ne peuvent pas obtenir le algorithme de cryptage. Seul le protocole de communication ne peut pas être piloté. de votre appareil. (Afficher l'opération, beaucoup n'ont même pas de chiffre de contrôle, le plus simple est le plus fiable)
C'est un peu simple et fiable, et les ordinateurs supérieurs et inférieurs peuvent facilement effectuer une interaction de données en fonction du format de communication, qui convient aux données plus longues transmission.

3. En-tête de trame et queue de trame + données + code de fonction supplémentaire

en-tête de cadre code de fonction Longueur des données données Chiffre de contrôle fin de cadre
0XF5 0X01 0X4 0X01 0X02 0X03 0X04 0XC5 0X5F

Ce format est compatible avec le second et peut gérer différents types de commandes, comme la lecture et l'écriture.
Les codes de fonction peuvent être ajoutés indéfiniment, par exemple en utilisant deux codes de fonction, l'un pour indiquer sur quelle variable opérer et l'autre pour indiquer s'il faut lire ou écrire. Cela devrait être le plus largement utilisé, la charge de travail n'est pas très importante et il est facile de déboguer par vous-même.

4. En-tête de trame et queue de trame + données + code de fonction supplémentaire + adresse cible

en-tête de cadre adresse code de fonction Longueur des données données Chiffre de contrôle fin de cadre
0XF5 0XCC 0X01 0X4 0X01 0X02 0X03 0X04 0XC5 0X5F

Ce type d'adressage est intéressant, et il a la capacité d'identifier les appareils. Par exemple, si vous accédez au hasard à un appareil du même type mais avec une adresse différente, l'appareil ne vous tuera pas si vous envoyez une commande. Ceci est adapté pour une utilisation sur le bus de communication 485, et tous les appareils identifient s'ils doivent être exécutés en fonction de l'adresse.
L'avantage est qu'il a la fonction d'identification de l'appareil et l'unicité de l'exécution de la commande, ce qui convient à la communication 485.
L'inconvénient est que 232 est un peu insipide lorsqu'il est utilisé. La plupart de ce que j'ai vu jusqu'à présent est ce type de communication, que ce soit 485 ou 232 (en fait, l'adresse est aussi un code de fonction, donc ce n'est pas un gros problème).

5. En-tête de trame et queue de trame + données + code de fonction supplémentaire + fonction de transfert

en-tête de cadre longueur de la source adresse source longueur cible adresse cible code de fonction Longueur des données données Chiffre de contrôle fin de cadre
0XF5 0X01 0XCC 0X02 0XDD 0XBB 0X01 0X4 0X01 0X02 0X03 0X04 0XC5 0X5F

C'est le protocole de communication de port série le plus puissant que j'aie jamais utilisé. Il peut être utilisé pour juger s'il est nécessaire de transmettre le niveau suivant ou d'effectuer une commande d'opération via la longueur d'adresse et le champ d'adresse.
Le processus de cette commande est : l'appareil de 0XCC envoie une trame de commande à l'appareil de 0XDD, l'appareil de 0XDD constate qu'il n'est pas la cible finale, réorganise la trame et l'envoie à l'appareil de niveau suivant avec l'adresse de 0XBB, et 0XBB se trouve être la cible finale après avoir reçu la commande Exécutez donc la commande.
L'avantage de ce protocole de communication est qu'il possède des fonctions complètes et peut réaliser des renvois.
L'inconvénient est que la procédure d'analyse des trames est compliquée, l'ajout d'un transfert ajoutera un temps de recadrage, et plus il y a de transfert, plus cela prend du temps. (Cependant, qui peut utiliser le port série pour enchaîner autant de sous-niveaux ? Êtes-vous malade ? Vous pouvez envisager d'utiliser d'autres méthodes de communication.)
Cela devrait consister à adapter le port série à d'autres méthodes de communication (telles que can, tcp/ip , etc.), de sorte que le programme S'il est géré correctement, il devrait être possible de mélanger et d'assortir différentes méthodes de communication. Par exemple, la carte principale envoie via le port série et le niveau suivant envoie à plusieurs appareils via le CAN Avec le renvoi, il existe un certain degré de compatibilité de communication.
Il est un peu compliqué d'utiliser la quatrième voie pour le port série.

6. RTU MODBUS

C'est génial, je ne l'ai jamais utilisé, laissez-moi juste le dire. Ce micro-ordinateur à puce unique doit utiliser la communication 485. Il s'agit d'une norme unifiée formelle. Il existe des modules intégrés prêts à l'emploi qui peuvent être utilisés après l'achat. Le PLC est couramment utilisé dans le contrôle industriel électrique.
Le mode Modbus-RTU signifie que lorsque le contrôleur est configuré pour communiquer en mode RTU (mode terminal distant) sur le réseau Modbus, chaque 8 bits du message contient deux caractères hexadécimaux de 4 bits. Markdown convertit le texte en HTML 1 .
La méthode d'opération est similaire à celle de 4 (mais les gens en ont fait une norme reconnue, ce qui est haussier), et elle implique plus d'opérations sur les registres. Les registres sont généralement exploités bit par bit, et chaque bit a le fonction de chaque bit, qui peut être étendue à la fois.Il a de nombreuses utilisations.

7. Autre

D'autres sont autres, certaines méthodes peuvent être regroupées, et ce sont principalement un mélange et une correspondance des types mentionnés ci-dessus. Certains ont un en-tête de trame mais pas de fin de trame, certains ont une fin de trame mais utilisent l'adresse comme en-tête de trame, certains n'ajoutent pas de somme de contrôle, certains utilisent une longueur fixe pour réaliser la fonction de la fin de trame, et certains bizarres aussi utilisez l'adresse comme en-tête de trame. La somme de contrôle n'a pas de longueur fixe à la fin de la trame.

Résumer

C'est à peu près tout, le cadre du protocole de communication de base d'un port série n'est que cela, et je l'ajouterai plus tard quand j'y penserai. Ne poursuivez pas aveuglément plus de fonctions, simples et pratiques sont les plus fiables. Il est préférable de ne pas ajouter le protocole de communication.
Soudainement pensé à une idée, le programme MCU peut-il également modulariser chaque bit de fonction dans la trame de protocole ci-dessus pour obtenir une compatibilité complète, par exemple, si j'utilise l'en-tête de trame, j'appellerai un programme d'ajout pour ajouter l'en-tête de trame, Si le code de fonction est utilisé, ajoutez un bit de code de fonction pour mettre le code de fonction, puis créez un grand paquet à l'extérieur, de sorte qu'il sera facile pour un modèle de communication d'être compatible avec tous les protocoles de communication. (Peut-être que ce n'est pas nécessaire, la plupart sont très simples, et les données extraites ne sont pas nombreuses, sans compter que mon C++ est toujours en pagaille, j'y penserai quand j'en aurai la force, pas de panique)

les références


  1. Protocole de communication Modbus (2)—RTU ↩︎

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43058521/article/details/119494326
conseillé
Classement