Communication sur courant porteur. Partie 1 - Principes de base de la transmission de données sur les lignes électriques

Il n'y a pas si longtemps, j'étais confronté à une tâche non triviale: assembler un appareil capable de transmettre des informations via des lignes électriques (0,4 kV), dans les réseaux des consommateurs domestiques ordinaires, ou plutôt des relevés de compteurs d'électricité.







Avant de commencer à travailler sur la création de cet appareil, j'avais peu de connaissances sur le traitement numérique du signal et sur le fonctionnement des réseaux informatiques au niveau physique. Il était nécessaire de plonger rapidement dans la question et de construire un plan pour créer un prototype fonctionnel.

Au cours de mes études, j'ai trouvé beaucoup de littérature spécialisée sur l'électronique, les microcontrôleurs et le traitement numérique du signal, ce qui m'a beaucoup aidé. Mais au tout début du voyage, des articles de synthèse comme celui-ci me seraient utiles pour choisir des domaines d'étude.



Un autre matériau est un extrait d'expérience professionnelle sous la forme dans laquelle je voudrais me le raconter du passé. De nombreux faits ont été grandement simplifiés pour une meilleure lisibilité.






la communication



Commençons par les abstractions. Imaginez que vous ayez besoin de transférer une information d'une personne à une autre. Dans l'image: l'homme rouge est l'émetteur et le bleu est le récepteur.







Nous utiliserons la voix pour transmettre des informations. L'information est une sorte de texte dans notre tête. Le texte peut être divisé en lettres et chaque lettre peut être représentée comme un signal sonore. De cette manière, chaque lettre peut être encodée avec un signal sonore approprié.







Conducteur



Le son, comme vous le savez, se propage sous forme d'ondes - des fluctuations de la densité de l'air ou d'un autre milieu. Dans notre cas, le support de propagation du signal est l'air. De l'homme rouge, des ondes sonores se propagent dans l'air dans toutes les directions.



Signal utile







Heureusement, nous ne pouvons pas transmettre mentalement des informations de notre tête directement à la tête de l'interlocuteur. Par conséquent, les lettres de notre tête au «niveau matériel» nous transformons (encodons) en signaux sonores (ensembles d'ondes sonores). Nous appellerons cela un «signal utile».

Important: chaque lettre est codée par un ensemble stable d'ondes sonores. De ces ondes, nous pouvons reconnaître une certaine lettre (si nous la connaissons, bien sûr). Il y a une conversion de la lettre au son et inversement du son à la lettre.



Bruit





Le bruit est le même signal, mais il ne transporte pas d'informations utiles. Le bruit déforme le signal souhaité et réduit la plage de réception fiable. Il peut s'agir d'une foule de personnes parlant fort de quelque chose qui leur est propre, ou peut-être même d'un écho ou d'autres sons parasites mélangés à un signal utile. Le bruit interfère généralement avec le passage du signal utile vers le récepteur.



Protocole





Sous cette forme, le signal atteint le récepteur. Le récepteur reconnaît (décode) les lettres d'un ensemble d'ondes sonores et recueille des mots à partir d'elles. S'il lui semble qu'il s'agit d'un ensemble de sons dénués de sens, il les rejette ou tente de restaurer le signal d'origine à l'aide d'un algorithme complexe. En partie, à cause de cela, nous demandons parfois d'abord «Quoi?», Et alors seulement nous nous rendons compte que nous avons tout entendu.



Un protocole est en fait un ensemble de règles et d'algorithmes permettant d'extraire des informations d'un signal utile. Dans cet exemple, c'est notre langue dans laquelle nous communiquons avec l'interlocuteur. De là, nous apprenons la signification des sons transmis. Tout cela se passe inconsciemment, on peut dire «au niveau matériel».



Tout ce qui est décrit ci-dessus sous une forme très simplifiée montre comment le transfert de données fonctionne non seulement entre les personnes, mais aussi entre les appareils électroniques. Ils n'auront qu'un effet physique, par exemple, une tension électrique et un câble en cuivre comme conducteur. Les informations stockées dans l'appareil peuvent être transmises à l'aide de divers supports et protocoles de transmission physique, mais l'essentiel est à peu près le même: conducteur, impact physique, protocole.




Les lignes électriques comme canal de communication





Ensuite, nous découvrirons étape par étape comment transférer des données sur les lignes électriques, et en cours de route, nous élaborerons un protocole pour notre vélo . Idées clés de la norme industrielle ouverte X10.



Pour utiliser les lignes électriques comme canal de communication, vous devez comprendre comment elles fonctionnent et quels processus physiques s'y déroulent.

Jetons un coup d'œil au schéma de livraison d'électricité de la sous-station aux bâtiments résidentiels. Les réseaux électriques sont triphasés, et il y a trois «phases» (A, B et C) de la sous-station, qui sont électriquement isolées les unes des autres.







Pour simplifier, admettons que chaque phase est un canal de communication distinct. Les appareils connectés à différentes phases ne peuvent pas s'entendre.



Il existe maintenant sur le marché des appareils capables de communiquer entre les phases, pour eux, la sous-station entière est un canal de communication. Mais jusqu'ici cela ne joue pas un rôle particulier pour la compréhension.



De plus, dans les schémas, nous ne considérerons que la phase "A" (dans d'autres, tout est similaire).







Lorsque plusieurs émetteurs-récepteurs sont connectés à une phase, une topologie de réseau de type «bus commun» est formée. Un signal envoyé par l'un des appareils sera reçu par tous les autres appareils dans la plage de propagation du signal.





Conducteur



Étudions plus en détail le support de transmission du signal. Pour ce faire, réfléchissez à la forme sous laquelle l'énergie électrique est transmise et découvrez comment à travers ce flux nous pouvons transmettre notre signal utile.

L'électricité est transmise sous forme de courant alternatif. Les conducteurs sont généralement des câbles en aluminium ou en cuivre. La tension dans le réseau électrique a la forme d'une sinusoïde avec une période de 20 millisecondes (fréquence 50 Hz).





Le courant étant alternatif, il change périodiquement le sens du «flux», et au moment du changement de direction, la puissance n'est pratiquement pas transmise (si vous ne tenez pas compte du décalage dû à une forte charge capacitive ou inductive). Il y a des moments de calme. Ceci est appelé "passage à zéro" (ci-après ZC ) - le moment où la tension est nulle.





À ce stade, le réseau a également le niveau de bruit le plus bas. C'est le moment le plus propice pour générer un signal utile.



Dans un réseau électrique avec une fréquence de 50 Hz (comme en Russie), le moment ZC se produit 100 fois par seconde. Et si vous transmettez un caractère à la fois par un passage à zéro, la vitesse de connexion sera de 100 bauds. La vitesse de transmission en octets dépend déjà du format de la trame, du nombre de bits de service, en plus des données elles-mêmes, qui seront dans la trame (à propos du format de trame ci-dessous dans le texte).



Synchronisation



Un autre point important est la synchronisation du moment de la transmission et de la réception entre les appareils.



Pour notre nouveau protocole, nous utiliserons le «transfert de données synchrone» car il est plus facile à mettre en œuvre.



L'émetteur doit savoir à quel moment précis le DAC doit être allumé pour générer le signal. Le récepteur doit comprendre à quel moment précis l' ADC doit être activé pour mesurer et numériser le signal entrant. Pour ce faire, quelqu'un doit signaler le processeur.



Cela sera fait par une partie distincte du circuit du détecteur de passage à zéro. Il attend juste que la tension de la ligne soit de 0 volts et donne un signal à ce sujet. Sur les réseaux avec une fréquence de 50 Hz, le signal arrivera toutes les 10 millisecondes.





La tension électrique se propage à la vitesse de la lumière, et nous pouvons donc supposer conditionnellement que le moment ZC se produit simultanément à tous les points du réseau.



Sur Internet, vous pouvez trouver des exemples de circuits de détection appelés «Zero Cross Detector» ou «Zero Cross Detector».


Signal utile



Il existe différentes options pour coder les informations pour la transmission sur les lignes électriques . Nous utiliserons la modulation par décalage de fréquence à bande étroite car il est plus facile à comprendre et plus fiable. L'inconvénient est le faible taux de transfert de données, mais pour nous, cela ne joue pas encore un rôle particulier.



Le signal utile est une onde sinusoïdale ordinaire d'amplitude fixe. Seule la fréquence du signal change. Prenons une paire de fréquences et disons qu'un signal avec une fréquence est «0» et un signal avec une fréquence différente est «1».







Alternativement, comme dans la norme "X10", la présence d'un signal signifie "1", et son absence signifie "0".



Remarque. Les fréquences du signal utile sont de l'ordre de 35 à 91 kHz. Toute la composante inférieure du signal (50 Hz et harmoniques) est coupée à l'entrée de l'appareil. Il ne reste que le bruit haute fréquence mélangé au signal utile.


Physiquement, ce signal peut être généré à l'aide d'un module DAC , qui se trouve dans presque tous les microcontrôleurs modernes. En entrée, le DAC prend les nombres (niveau du signal) par logiciel et délivre le niveau de tension correspondant à ce chiffre en sortie. De manière aussi simple, vous pouvez fournir un tableau de nombres au module DAC par minuterie , et à la sortie, vous pouvez obtenir une sinusoïde avec la fréquence dont nous avons besoin.





Plus d'informations sur la façon de générer efficacement une forme d'onde sinusoïdale dans l'article suivant.



Bruit



Un signal assez puissant est initialement présent dans la ligne électrique - il s'agit de l'énergie électrique transmise de la sous-station aux bâtiments résidentiels. Et sous charge, il y a beaucoup de bruit sur une large bande passante. Appareils électroménagers, alimentation informatique, chargeurs - ils émettent une large gamme de fréquences dans le réseau électrique.



Pour comprendre, comparons une ligne de données dédiée avec une ligne de transmission d'énergie .



Une ligne dédiée est un fil séparé par lequel un certain nombre d'appareils communiquent. Cela peut être comparé à une pièce vide dans laquelle vous pouvez communiquer confortablement.







Une ligne de transport d'électricité peut être comparée à un couloir dans lequel le travail est effectué avec un perforateur, et un train circule au milieu (très bruyant). Dans ces conditions, il est difficile de transmettre des informations, mais elles sont réelles.







Protocole



Le codage est très simple - nous sélectionnons plusieurs symboles et attribuons une certaine fréquence de signal à chacun. Faisons trois symboles pour plus de simplicité:



  • «Démarrer» - par ce symbole, l'appareil comprendra que la transmission de la trame a commencé;
  • «0» est le caractère du bit 0;
  • «1» est le caractère du bit 1.




Sur la base du signal du détecteur ZC , l' émetteur génère une sinusoïde de la fréquence souhaitée pendant une courte période. Et ainsi, un caractère («S», «0» ou «1») est transmis pour une transition de la tension secteur à zéro (toutes les 10 millisecondes). Les récepteurs mesurent ce signal, découvrent sa fréquence et écrivent le symbole correspondant à cette fréquence («S», «0» ou «1») dans le tampon.





Nous pouvons maintenant signaler le début de la trame et transmettre un ensemble de uns et de zéros. De plus, nous ajouterons des mots ou des "cadres" à partir d'eux. Parties intégrales de l'information.



Format de trame



Nous devons également proposer un format de trame que nous transmettrons à l'aide de ces symboles. Plusieurs points importants affecteront le format des données: longueur de trame, adressage, contrôle d'intégrité.



Longueur de la trame

Plus la partie des données est grande, plus le temps système de transfert de données est faible, car en plus des données elles-mêmes, la trame contient des informations supplémentaires telles qu'une somme de contrôle et une adresse de destination. Mais plus la donnée est petite, plus le transfert a de chances de réussir. Il est important de trouver un terrain d'entente ici. Ceci est généralement déterminé empiriquement. Pour prendre un exemple sur les réseaux informatiques, la trame Ethernet était limitée à 1500 octets de données (malgré le fait que ce chiffre soit rapidement dépassé, il est toujours utilisé aujourd'hui).





Avec une forte augmentation de la longueur de la trame, la probabilité de transmettre au moins certaines données tend vers zéro.



Adressage

Il ne faut pas oublier que nous avons une topologie de réseau "bus commun". Tous les appareils recevront des informations envoyées sur ce bus. Et pour que leur communication fonctionne d'une manière ou d'une autre, ils doivent avoir des adresses.



Nous ajouterons l'adresse au tout début de la trame afin que le côté réception, auquel ces données ne soient pas destinées, ne perde pas de temps à écouter et à attendre toute la trame, nous allons donc libérer un peu le processeur du travail inutile.





La longueur de l'adresse est sélectionnée en fonction du nombre maximum d'appareils pouvant être simultanément dans la même étendue. Par exemple, 8 bits est un maximum de 255 périphériques (si vous laissez 0 comme diffusion).



Contrôle d'intégrité

Lors de la transmission d'informations sur des lignes électriques, la probabilité de perdre une partie des données est très élevée. Par conséquent, il doit y avoir un contrôle d'intégrité. A ces fins, un "interrupteur de fin de course" est ajouté au châssis. Ce sont des informations redondantes avec lesquelles le récepteur pourra s'assurer que les données ne sont pas corrompues.



Imaginons le look final du cadre. Soit la longueur d'adresse de 8 bits (255 appareils sur le canal + 1 adresse de diffusion). Viennent ensuite les données 8 bits (1 octet).



Nous aurons une bande-annonce juste le résultat de l'ajout d'une adresse et d'un octet. Mais il y a une mise en garde: l'appareil peut capter de manière stable un bruit fort à la fréquence de nos symboles «0» ou «1» et penser que c'est un signal utile. Et il y a une forte probabilité de fausses lectures de valeurs extrêmes telles que "0x00" ou "0xFF". Pour éviter cela, lors du calcul de l'interrupteur de fin de course, nous ajouterons simplement le nombre "42".



Quelque chose comme ceci ressemblera à une trame de données: nous envoyons le numéro "110" à l'appareil avec l'adresse "17", l'interrupteur de fin de course "169" (110 + 17 + 42).





L'ensemble du cadre sera assemblé pièce par pièce à partir des symboles entrants «0» et «1» après le symbole «Début».



Décrivons l'algorithme de réception d'une trame.



Au départ, l'appareil attend le symbole «Démarrer». Le tampon est désactivé, on n'y écrit rien.

Lorsque le symbole «Start» arrive, pour plus de commodité, nous effaçons le tampon de réception et démarrons le compteur de bits (nous déterminerons la trame entière par le compteur de bits).







Chaque caractère suivant ("0" ou "1") est écrit séquentiellement dans le tampon de réception et le compteur de bits est incrémenté.





Lorsque le nombre de bits requis est collecté (plein cadre), nous vérifions l'intégrité. Sélectionnez dans le cadre "Adresse" et "Données". Nous le comptons en utilisant l'algorithme "Limit" et le comparons avec ce qui est dans la trame.





Si les valeurs concordent, nous extrayons les données de la trame et les envoyons au protocole supérieur.





Si les valeurs ne concordent pas, nous continuons d'attendre le symbole "Démarrer". Et encore une fois.



C'est ainsi que nous pouvons lentement mais sûrement transférer octet par octet d'un appareil à un autre. Le récepteur ajoutera ces octets au tampon de réception du protocole à un niveau supérieur au niveau physique, et là il décidera déjà quoi faire: exécuter la commande entrante ou renvoyer des données en réponse.



Résultat



Dans cet article, j'ai essayé d'introduire le lecteur au sujet de la transmission de données sur les lignes électriques dans un langage général et compréhensible. J'espère que quelqu'un trouvera ces informations utiles, peut-être pas seulement dans le domaine des API .



Dans la partie suivante, je voudrais vous parler de l'algorithme de génération sinusoïdale rapide que j'ai utilisé. Et comment connaître sa fréquence ( DFT ) à partir du tableau de nombres du signal numérisé . Je vais vous parler un peu des glandes pour tout cela.



Peut-être que quelqu'un dans les commentaires lancera plus d'idées. Je serais heureux de recevoir des commentaires!






Liens et matériel sur le sujet:






All Articles