Comunicación por línea eléctrica. Parte 1 - Transmisión básica de datos por líneas eléctricas

No hace mucho, me enfrenté a una tarea no trivial: ensamblar un dispositivo que pudiera transmitir información a través de líneas eléctricas (0,4 kV), en las redes de consumidores domésticos comunes, o más bien, lecturas de medidores de electricidad.







Antes de trabajar en este dispositivo, tenía pocos conocimientos sobre el procesamiento de señales digitales y cómo funcionan las redes informáticas a nivel físico. Fue necesario sumergirse rápidamente en la pregunta y construir un plan para crear un prototipo funcional.

En el proceso de estudio, encontré mucha literatura especializada en electrónica, microcontroladores y procesamiento de señales digitales, lo que me ayudó mucho con esto. Pero al comienzo del viaje, artículos de revisión como este me serían útiles para elegir áreas de estudio.



El material adicional es un extracto de la experiencia profesional en la forma en que me gustaría contármelo a mí mismo del pasado. Muchos hechos se han simplificado enormemente para una mejor legibilidad.






Comunicación



Empecemos por las abstracciones. Imagine que necesita transferir información de una persona a otra. En la imagen: el hombre rojo es el transmisor y el azul es el receptor.







Usaremos la voz para transmitir información. La información es una especie de texto en nuestra cabeza. El texto se puede dividir en letras y cada letra se puede representar como una señal de sonido. De esta manera, cada letra se puede codificar con alguna señal de sonido adecuada.







Conductor



El sonido, como saben, se propaga en forma de ondas: fluctuaciones en la densidad del aire u otro medio. En nuestro caso, el medio de propagación de la señal es el aire. Desde el hombre rojo, las ondas sonoras se esparcen por el aire en todas direcciones.



Señal útil







Afortunadamente, no podemos transmitir información mentalmente desde nuestra cabeza directamente a la cabeza del interlocutor. Por lo tanto, las letras de nuestra cabeza en el "nivel de hardware" las transformamos (codificamos) en señales de sonido (conjuntos de ondas de sonido). A esto lo llamaremos una "señal útil".

Importante: cada letra está codificada por un conjunto estable de ondas sonoras. De estas ondas podemos reconocer cierta letra (si la conocemos, por supuesto). Hay una conversión de letra a sonido y viceversa.



ruido





El ruido es la misma señal, pero no transporta información útil. El ruido distorsiona la señal deseada y reduce el rango de recepción confiable. Puede ser una multitud de personas hablando en voz alta sobre algo propio, o tal vez incluso un eco u otros sonidos extraños que se mezclan con una señal útil. El ruido suele interferir con el paso de la señal deseada al receptor.



Protocolo





De esta forma, la señal llega al receptor. El receptor reconoce (decodifica) letras de un conjunto de ondas sonoras y recopila palabras de ellas. Si le parece que se trata de un conjunto de sonidos sin sentido, los descarta o intenta restaurar la señal original utilizando un algoritmo complejo. En parte, debido a esto, a veces preguntamos primero “¿Qué?”, Y solo entonces nos damos cuenta de que lo hemos escuchado todo.



Un protocolo es, de hecho, un conjunto de reglas y algoritmos mediante los cuales podemos extraer información de una señal útil. En este ejemplo, este es nuestro idioma en el que nos comunicamos con el interlocutor. De él aprendemos el significado de los sonidos transmitidos. Todo esto sucede de manera inconsciente, podemos decir “a nivel de hardware”.



Todo lo descrito anteriormente en una forma muy simplificada muestra cómo funciona la transferencia de datos no solo entre personas, sino también entre dispositivos electrónicos. Solo tendrán un efecto físico, por ejemplo, un voltaje eléctrico y un cable de cobre como conductor. La información almacenada en el dispositivo se puede transmitir utilizando varios medios y protocolos de transmisión física, pero la esencia es aproximadamente la misma: conductor, impacto físico, protocolo.




Líneas eléctricas como canal de comunicación





A continuación, descubriremos paso a paso cómo transferir datos a través de líneas eléctricas y, a lo largo del camino, elaboraremos un protocolo para nuestra bicicleta . Ideas clave del estándar industrial abierto X10.



Para utilizar las líneas eléctricas como canal de comunicación, es necesario comprender cómo funcionan y qué procesos físicos tienen lugar en ellas.

Echemos un vistazo al esquema de suministro de electricidad desde la subestación a los edificios residenciales. Las redes eléctricas son trifásicas y hay tres “fases” (A, B y C) de la subestación, que están eléctricamente aisladas entre sí.







Para simplificar, convengamos en que cada fase es un canal de comunicación independiente. Los dispositivos conectados a diferentes fases no pueden escucharse entre sí.



Ahora hay dispositivos en el mercado que pueden comunicarse entre fases, para ellos toda la subestación es un canal de comunicación. Pero hasta ahora esto no juega un papel especial para la comprensión.



Además, en los diagramas consideraremos solo la fase "A" (en otros, todo es similar).







Cuando varios transceptores están conectados a una fase, se forma una topología de red del tipo "bus común". Una señal enviada por uno de los dispositivos será recibida por todos los demás dispositivos dentro del rango de propagación de la señal.





Conductor



Estudiemos el medio de transmisión de la señal con más detalle. Para ello, considere la forma en que se transmite la energía eléctrica y descubra cómo a través de este flujo podemos transmitir nuestra señal útil.

La electricidad se transmite en forma de corriente alterna. Los conductores suelen ser cables de aluminio o cobre. El voltaje en la red eléctrica tiene la forma de una sinusoide con un período de 20 milisegundos (frecuencia 50 Hz).





Como la corriente es alterna, cambia periódicamente la dirección del "flujo", y en el momento del cambio de dirección, la potencia prácticamente no se transmite (si no se tiene en cuenta el cambio debido a una fuerte carga capacitiva o inductiva). Hay momentos de calma. Esto se llama "cruce por cero" (en adelante ZC ), el momento en el que el voltaje es cero.





En este punto, la red también tiene el nivel de ruido más bajo. Este es el momento más favorable para generar una señal útil.



En una red eléctrica con una frecuencia de 50 Hz (como en Rusia), el momento ZC ocurre 100 veces por segundo. Y si transmite un carácter a la vez a través de un cruce por cero, la velocidad de conexión será de 100 baudios. La velocidad de transmisión en bytes ya depende del formato de la trama, de cuántos bits de servicio, además de los datos en sí, habrá en la trama (sobre el formato de trama a continuación en el texto).



Sincronización



Otro punto importante es la sincronización del momento de transmisión y recepción entre dispositivos.



Para nuestro nuevo protocolo usaremos “transferencia de datos sincrónica” ya que es más fácil de implementar.



El transmisor necesita saber en qué momento específico debe encenderse el DAC para generar la señal. El receptor debe comprender en qué momento específico debe encenderse el ADC para medir y digitalizar la señal entrante. Para hacer esto, alguien tiene que señalar al procesador.



Esto será manejado por una parte separada del circuito del detector de cruce por cero. Solo espera que el voltaje de la línea sea de 0 voltios y da una señal al respecto. En redes con una frecuencia de 50 Hz, la señal llegará cada 10 milisegundos.





El voltaje eléctrico se propaga a la velocidad de la luz y, por lo tanto, podemos suponer condicionalmente que el momento ZC ocurre en todos los puntos de la red simultáneamente.



En Internet puede encontrar ejemplos de circuitos detectores denominados "Detector de cruce por cero" o "Detector de cruce por cero".


Señal útil



Hay varias opciones para codificar información para su transmisión a través de líneas eléctricas . Usaremos codificación por desplazamiento de frecuencia de banda estrecha porque es más fácil de entender y más confiable. La desventaja es la baja tasa de transferencia de datos, pero para nosotros esto todavía no juega un papel especial.



La señal deseada es una onda sinusoidal ordinaria de amplitud fija. Solo cambia la frecuencia de la señal. Escojamos un par de frecuencias y digamos que una señal con una frecuencia es "0" y una señal con una frecuencia diferente es "1".







Alternativamente, como en el estándar "X10", la presencia de una señal significa "1" y su ausencia significa "0".



Nota. Las frecuencias de la señal útil son del orden de 35-91 kHz. Todo el componente de señal más bajo (50 Hz y armónicos) se corta en la entrada del dispositivo. Todo lo que queda es el ruido de alta frecuencia mezclado con la señal útil.


Físicamente, esta señal se puede generar utilizando un módulo DAC , que se encuentra en casi cualquier microcontrolador moderno. En la entrada, el DAC toma los números (nivel de señal) por software y emite el nivel de voltaje correspondiente a esta cifra en la salida. De una manera tan simple, puede suministrar una matriz de números al módulo DAC por temporizador , y en la salida puede obtener una sinusoide con la frecuencia que necesitamos.





Más sobre cómo generar de manera eficiente una forma de onda sinusoidal en el próximo artículo.



ruido



Una señal bastante potente está inicialmente presente en la línea eléctrica : esta es la energía eléctrica transmitida desde la subestación a los edificios residenciales. Y bajo carga, hay mucho ruido en un ancho de banda amplio. Electrodomésticos, fuente de alimentación para computadoras, cargadores: emiten una amplia gama de frecuencias a la red eléctrica.



Para entenderlo, comparemos una línea de datos dedicada con una línea de transmisión de energía .



Una línea dedicada es un cable separado a través del cual se comunican varios dispositivos. Se puede comparar con una habitación vacía en la que puede comunicarse cómodamente.







Una línea de transmisión de energía se puede comparar con un corredor en el que se trabaja con una perforadora y un tren circula en el medio (muy ruidoso). En estas condiciones, es difícil transmitir información, pero real.







Protocolo



La codificación es muy simple: seleccionamos varios símbolos y asignamos una determinada frecuencia de señal a cada uno. Hagamos tres símbolos para simplificar:



  • "Inicio": con este símbolo, el dispositivo comprenderá que ha comenzado la transmisión de tramas;
  • "0" es el carácter del bit 0;
  • “1” es el carácter del bit 1.




Basado en la señal del detector ZC , el transmisor genera una sinusoide de la frecuencia deseada por un corto tiempo. Y así, se transmite un carácter ("S", "0" o "1") para una transición de la tensión de red a cero (cada 10 milisegundos). Los receptores miden esta señal, averiguan su frecuencia y escriben el símbolo correspondiente a esta frecuencia ("S", "0" o "1") en el búfer.





Ahora podemos informar sobre el comienzo de la trama y transmitir un conjunto de unos y ceros. Además, agregaremos palabras o "marcos" de ellos. Porciones integrales de información.



Formato de cuadro



También necesitamos crear un formato de trama que transmitamos usando estos símbolos. Hay varios puntos importantes que afectarán el formato de datos: longitud de la trama, direccionamiento, verificación de integridad.



Longitud de la trama

Cuanto mayor es la porción de datos, menor es la sobrecarga de transferencia de datos, ya que además de los datos en sí, la trama contiene información de sobrecarga, como una suma de comprobación y una dirección de destino. Pero cuanto más pequeño sea el dato, más probable será una transferencia exitosa. Es importante encontrar un término medio aquí. Esto generalmente se determina empíricamente. Si tomamos un ejemplo de redes de computadoras, entonces en la trama de Ethernet se eligió el límite de 1500 bytes de datos (a pesar de que esta cifra quedó rápidamente desactualizada, todavía se usa hoy).





Con un fuerte aumento en la longitud de la trama, la probabilidad de transmitir al menos algunos datos tiende a cero.



Direccionamiento

No debemos olvidar que tenemos una topología de red de "bus común". Todos los dispositivos recibirán la información enviada a este bus. Y para que su comunicación funcione de alguna manera, deben tener direcciones.



Agregaremos la dirección al comienzo del cuadro para que el lado receptor, para el que no están destinados estos datos, no pierda el tiempo escuchando y esperando el cuadro completo, por lo que liberaremos un poco al procesador de un trabajo inútil.





La longitud de la dirección se selecciona en función del número máximo de dispositivos que pueden estar simultáneamente en el mismo ámbito. Por ejemplo, 8 bits es un máximo de 255 dispositivos (si deja 0 como transmisión).



Verificación de integridad

Al transmitir información a través de líneas eléctricas, existe una probabilidad muy alta de perder parte de los datos. Por lo tanto, debe haber una verificación de integridad. Para estos fines, se agrega un "interruptor de límite" al marco. Esta es una información redundante con la que el receptor podrá asegurarse de que los datos no estén corruptos.



Propongamos el aspecto final del marco. Deje que la longitud de la dirección sea de 8 bits (255 dispositivos en el canal + 1 dirección de transmisión). Luego vienen los datos de 8 bits (1 byte).



Tendremos un tráiler solo el resultado de agregar una dirección y un byte. Pero hay una advertencia: el dispositivo puede captar ruidos fuertes de manera estable a la frecuencia de nuestros símbolos "0" o "1" y cree que esta es una señal útil. Y existe una alta probabilidad de lecturas falsas de valores extremos como "0x00" o "0xFF". Para protegerse contra esto, al calcular el interruptor de límite, simplemente agregaremos el número "42".



Algo así se verá como una trama de datos: enviamos el número "110" al dispositivo con la dirección "17", el interruptor de límite "169" (110 + 17 + 42).





Todo el marco se ensamblará pieza a pieza a partir de los símbolos entrantes "0" y "1" después del símbolo "Inicio".



Describamos el algoritmo para recibir una trama.



Inicialmente, el dispositivo está esperando el símbolo "Inicio". El búfer está deshabilitado, no escribimos nada en él.

Cuando aparece el símbolo de "Inicio", por conveniencia, borramos el búfer de recepción e iniciamos el contador de bits (determinaremos el cuadro completo por el contador de bits).







Cada carácter siguiente ("0" o "1") se escribe secuencialmente en el búfer de recepción y se incrementa el contador de bits.





Cuando se recopila el número requerido de bits (cuadro completo), verificamos la integridad. Seleccione del cuadro "Dirección" y "Datos". Lo contamos usando el algoritmo "Limit" y lo comparamos con lo que está en el marco.





Si los valores concuerdan, extraemos los datos del marco y los enviamos al protocolo superior.





Si los valores no coinciden, seguimos esperando el símbolo "Inicio". Y todo de nuevo.



Así es como podemos transferir de forma lenta pero segura byte a byte de un dispositivo a otro. El receptor agregará estos bytes al búfer de recepción del protocolo a un nivel superior al físico, y allí ya decidirá qué hacer: ejecutar el comando entrante o devolver algunos datos en respuesta.



Salir



En este artículo, traté de presentar al lector el tema de la transmisión de datos a través de líneas eléctricas en un lenguaje general y comprensible. Espero que alguien encuentre útil esta información, quizás no solo en el campo de los PLC .



En la siguiente parte me gustaría hablar sobre el algoritmo de generación de seno rápido que utilicé. Y cómo averiguar su frecuencia ( DFT ) a partir de la matriz de números de la señal digitalizada . Te contaré un poco sobre las glándulas para todo esto.



Quizás alguien en los comentarios arroje más ideas. ¡Me encantaría recibir comentarios!






Enlaces y materiales sobre el tema:






All Articles