Comunicação por linha de força. Parte 1 - Fundamentos da transmissão de dados de linhas de energia

Não faz muito tempo, me deparei com uma tarefa nada trivial - montar um dispositivo que pudesse transmitir algumas informações por linhas de força (0,4 kV), nas redes de consumidores domésticos comuns, ou melhor, leituras de medidores de energia elétrica.







Antes de começar a trabalhar na criação deste dispositivo, eu tinha pouco conhecimento do processamento digital de sinais e de como as redes de computadores funcionam no nível físico. Era necessário mergulhar rapidamente na questão e construir um plano para criar um protótipo funcional.

No processo de estudo, encontrei muita literatura especializada em eletrônica, microcontroladores e processamento digital de sinais, o que me ajudou muito com isso. Mas, logo no início da jornada, artigos de revisão como este seriam úteis para eu escolher áreas de estudo.



Mais material é um extrato de experiência profissional na forma em que eu gostaria de contar para mim mesmo do passado. Muitos fatos foram bastante simplificados para melhor legibilidade.






Comunicação



Vamos começar com abstrações. Imagine que você precise transferir uma informação de uma pessoa para outra. Na imagem: o homem vermelho é o transmissor e o azul é o receptor.







Usaremos voz para transmitir informações. Informação é algum tipo de texto em nossa cabeça. O texto pode ser dividido em letras e cada letra pode ser representada como um sinal sonoro. Desta forma, cada letra pode ser codificada com algum sinal de som apropriado.







Condutor



Como você sabe, o som se propaga na forma de ondas - flutuações na densidade do ar ou outro meio. Em nosso caso, o meio de propagação do sinal é o ar. Do homem vermelho, as ondas sonoras se espalham pelo ar em todas as direções.



Sinal útil







Felizmente, não podemos transmitir informações mentalmente de nossa cabeça diretamente para a cabeça do interlocutor. Portanto, as letras de nossa cabeça no “nível de hardware” nós transformamos (codificamos) em sinais sonoros (conjuntos de ondas sonoras). Chamaremos isso de “sinal útil”.

Importante: cada letra é codificada por um conjunto estável de ondas sonoras. A partir dessas ondas, podemos reconhecer uma determinada letra (se a conhecemos, é claro). Há uma conversão de letra em som e vice-versa.



Ruído





O ruído é o mesmo sinal, mas não contém informações úteis. O ruído distorce o sinal desejado e reduz a faixa de recepção confiável. Pode ser uma multidão de pessoas falando em voz alta sobre algo próprio, ou talvez até mesmo um eco ou outros sons estranhos que são misturados com um sinal útil. O ruído geralmente interfere na passagem do sinal desejado para o receptor.



Protocolo





Desta forma, o sinal chega ao receptor. O receptor reconhece (decodifica) letras de um conjunto de ondas sonoras e coleta palavras delas. Se lhe parece que se trata de um conjunto de sons sem sentido, ele os descarta ou tenta restaurar o sinal original usando um algoritmo complexo. Em parte, por causa disso, às vezes perguntamos primeiro “O quê?”, E só então percebemos que ouvimos tudo.



Um protocolo é, na verdade, um conjunto de regras e algoritmos pelos quais podemos extrair informações de um sinal útil. Neste exemplo, esta é a nossa linguagem na qual nos comunicamos com o interlocutor. Com ele aprendemos o significado dos sons transmitidos. Tudo isso acontece inconscientemente, podemos dizer “no nível do hardware”.



Tudo o que foi descrito acima de forma bastante simplificada mostra como a transferência de dados funciona não só entre pessoas, mas também entre dispositivos eletrônicos. Eles terão apenas um efeito físico, por exemplo, uma voltagem elétrica e um cabo de cobre como condutor. As informações armazenadas no dispositivo podem ser transmitidas por meio de vários meios de transmissão física e protocolos, mas a essência é aproximadamente a mesma: condutor, impacto físico, protocolo.




Linhas de energia como canal de comunicação





A seguir, descobriremos passo a passo como transferir dados por linhas de energia e, ao longo do caminho, apresentaremos um protocolo para nossa bicicleta . Ideias-chave do padrão aberto da indústria X10.



Para usar linhas de energia como um canal de comunicação, você precisa entender como elas funcionam e quais processos físicos ocorrem nelas.

Vamos dar uma olhada no esquema de entrega de eletricidade da subestação para edifícios residenciais. As redes elétricas são trifásicas, e existem três “fases” (A, B e C) da subestação, que são isoladas eletricamente uma da outra.







Para simplificar, vamos concordar que cada fase é um canal de comunicação separado. Dispositivos conectados a fases diferentes não podem ouvir uns aos outros.



Já existem no mercado dispositivos que podem se comunicar entre as fases, para eles toda a subestação é um canal de comunicação. Mas, até agora, isso não desempenha um papel especial para a compreensão.



Além disso, nos diagramas, consideraremos apenas a fase "A" (em outras, tudo é semelhante).







Quando vários transceptores são conectados a uma fase, uma topologia de rede do tipo “barramento comum” é formada. Um sinal enviado por um dos dispositivos será recebido por todos os outros dispositivos dentro da faixa de propagação do sinal.





Condutor



Vamos estudar o meio de transmissão de sinal com mais detalhes. Para fazer isso, considere a forma como a energia elétrica é transmitida e descubra como, por meio desse fluxo, podemos transmitir nosso sinal útil.

A eletricidade é transmitida na forma de corrente alternada. Os condutores são geralmente cabos de alumínio ou cobre. A tensão na rede elétrica tem a forma de uma sinusóide com um período de 20 milissegundos (frequência 50 Hz).





Como a corrente é alternada, ela muda periodicamente a direção do "fluxo" e, no momento da mudança de direção, a potência praticamente não é transmitida (se você não levar em consideração a mudança devido a uma forte carga capacitiva ou indutiva). Existem momentos de calma. Isso é chamado de "cruzamento zero" (doravante ZC ) - o momento em que a tensão é zero.





Nesse ponto, a rede também apresenta o nível de ruído mais baixo. Este é o momento mais favorável para gerar um sinal útil.



Em uma rede elétrica com frequência de 50 Hz (como na Rússia), o momento ZC ocorre 100 vezes por segundo. E se você transmitir um caractere por vez por meio de um cruzamento zero, a velocidade da conexão será de 100 baud. A taxa de transmissão em bytes já depende do formato do quadro, de quantos bits de serviço, além dos dados em si, estarão no quadro (sobre o formato do quadro abaixo no texto).



Sincronização



Outro ponto importante é a sincronização do momento de transmissão e recepção entre os dispositivos.



Para o nosso novo protocolo, usaremos “transferência síncrona de dados”, pois é mais fácil de implementar.



O transmissor precisa saber em que momento específico o DAC precisa ser ligado para gerar o sinal. O receptor precisa entender em que momento específico o ADC precisa ser ligado para medir e digitalizar o sinal de entrada. Para fazer isso, alguém deve sinalizar o processador.



Isso será tratado por uma parte separada do circuito Zero Cross Detector. Ele apenas espera que a tensão da linha seja 0 volts e sinaliza isso. Em redes com frequência de 50 Hz, o sinal chegará a cada 10 milissegundos.





A tensão elétrica se propaga na velocidade da luz e, portanto, podemos assumir condicionalmente que o momento ZC ocorre em todos os pontos da rede simultaneamente.



Na Internet você pode encontrar exemplos de circuitos detectores chamados "Zero Cross Detector" ou "Zero Cross Detector".


Sinal útil



Existem várias opções para codificar informações para transmissão por linhas de energia . Usaremos chaveamento de frequência de banda estreita porque é mais fácil de entender e mais confiável. A desvantagem é a baixa taxa de transferência de dados, mas para nós isso ainda não desempenha um papel especial.



O sinal desejado é uma onda senoidal regular de amplitude fixa. Apenas a frequência do sinal muda. Vamos escolher um par de frequências e dizer que um sinal com uma frequência é “0” e um sinal com uma frequência diferente é “1”.







Alternativamente, como no padrão "X10", a presença de um sinal significa "1" e sua ausência significa "0".



Nota. As frequências do sinal útil são da ordem de 35-91 kHz. Todo o componente de sinal inferior (50 Hz e harmônicos) é cortado na entrada do dispositivo. Tudo o que resta é o ruído de alta frequência misturado com o sinal útil.


Fisicamente, esse sinal pode ser gerado usando um módulo DAC , que é encontrado em quase todos os microcontroladores modernos. Na entrada, o DAC pega os números (nível do sinal) por software e emite o nível de tensão correspondente a este valor na saída. De uma forma tão simples, você pode fornecer uma matriz de números ao módulo DAC por temporizador , e na saída você pode obter uma senoide com a frequência que precisamos.





Mais informações sobre como gerar com eficiência uma forma de onda senoidal no próximo artigo.



Ruído



Um sinal bastante poderoso está inicialmente presente na linha de força - esta é a energia elétrica transmitida da subestação para edifícios residenciais. E sob carga, há muito ruído em uma ampla largura de banda. Eletrodomésticos, fonte de alimentação de computador, carregadores - eles emitem uma ampla gama de frequências na rede elétrica.



Para entender, vamos comparar uma linha de dados dedicada com uma linha de transmissão de energia .



Uma linha dedicada é um fio separado por meio do qual vários dispositivos se comunicam. Pode ser comparado a uma sala vazia na qual você pode se comunicar confortavelmente.







Uma linha de transmissão de energia pode ser comparada a um corredor em que o trabalho é realizado com um perfurador e um trem circula no meio (muito barulhento). Nessas condições, é difícil transmitir informações, mas são reais.







Protocolo



A codificação é muito simples - selecionamos vários símbolos e atribuímos uma certa frequência de sinal a cada um. Vamos fazer três símbolos para simplificar:



  • “Iniciar” - por este símbolo o dispositivo entenderá que a transmissão de quadros foi iniciada;
  • “0” é o caractere para o bit 0;
  • “1” é o caractere para o bit 1.




Com base no sinal do detector ZC , o transmissor gera uma sinusóide com a frequência desejada por um curto período de tempo. E assim, um caractere é transmitido ("S", "0" ou "1") para uma transição da tensão da rede para zero (a cada 10 milissegundos). Os receptores medem este sinal, descubram sua frequência e escrevem o símbolo correspondente a esta frequência ("S", "0" ou "1") no buffer.





Agora podemos relatar o início do quadro e transmitir um conjunto de uns e zeros. Além disso, adicionaremos palavras ou "quadros" a partir deles. Porções integrais de informação.



Formato de quadro



Também precisamos criar um formato de quadro que transmitiremos usando esses símbolos. Existem vários pontos importantes que afetarão o formato dos dados: comprimento do quadro, endereçamento, verificação de integridade.



Comprimento do quadro

Quanto maior a porção de dados, menor será o overhead de transferência de dados, pois, além dos próprios dados, o quadro contém informações de overhead, como checksum e endereço de destino. Porém, quanto menor o pedaço de dados, maior a probabilidade de uma transferência bem-sucedida. É importante encontrar um meio-termo aqui. Isso geralmente é determinado empiricamente. Se tomarmos um exemplo de redes de computadores, então no frame Ethernet foi escolhido o limite de 1500 bytes de dados (apesar do fato de que este número foi rapidamente desatualizado, ele ainda é usado hoje).





Com um forte aumento no comprimento do quadro, a probabilidade de transmitir pelo menos alguns dados tende a zero.



Endereçamento

Não devemos esquecer que temos uma topologia de rede "barramento comum". Todos os dispositivos receberão informações enviadas para este barramento. E para que sua comunicação funcione de alguma forma, eles devem ter endereços.



Adicionaremos o endereço bem no início do quadro para que o lado receptor, para o qual esses dados não se destinam, não perca tempo ouvindo e aguardando o quadro inteiro, assim liberaremos um pouco o processador de trabalho inútil.





O comprimento do endereço é selecionado com base no número máximo de dispositivos que podem estar simultaneamente no mesmo escopo. Por exemplo, 8 bits é um máximo de 255 dispositivos (se você deixar 0 como transmissão).



Verificação de integridade

Ao transmitir informações por linhas de energia, há uma probabilidade muito alta de perder parte dos dados. Portanto, deve haver uma verificação de integridade. Para esses fins, um "interruptor de limite" é adicionado ao quadro. Estas são algumas informações redundantes com as quais o receptor será capaz de se certificar de que os dados não estão corrompidos.



Vamos ver a aparência final do quadro. Permita que o comprimento do endereço seja de 8 bits (255 dispositivos no canal + 1 endereço de broadcast). Em seguida, vêm os dados de 8 bits (1 byte).



Teremos um trailer apenas o resultado da adição de um endereço e um byte. Mas há uma advertência: o dispositivo pode capturar de forma estável ruídos fortes na frequência de nossos símbolos "0" ou "1" e pensar que este é um sinal útil. E há uma alta probabilidade de leituras falsas de valores extremos como "0x00" ou "0xFF". Para se proteger contra isso, ao calcular o interruptor de limite, vamos simplesmente adicionar o número "42".



Algo assim vai se parecer com um quadro de dados: enviamos o número "110" para o dispositivo com o endereço "17", a chave fim de curso "169" (110 + 17 + 42).





Todo o quadro será montado peça por peça a partir dos símbolos de entrada "0" e "1" após o símbolo "Iniciar".



Vamos descrever o algoritmo para receber um quadro.



Inicialmente, o dispositivo está aguardando o símbolo "Iniciar". O buffer está desabilitado, não gravamos nada nele.

Quando o símbolo "Iniciar" aparece, por conveniência, limpamos o buffer de recepção e iniciamos o contador de bits (determinaremos todo o quadro pelo contador de bits).







Cada caractere seguinte ("0" ou "1") é gravado sequencialmente no buffer de recepção e o contador de bits é incrementado.





Quando o número necessário de bits é coletado (quadro completo), verificamos a integridade. Selecione no quadro "Endereço" e "Dados". Nós o contamos usando o algoritmo "Limite" e o comparamos com o que está no quadro.





Se os valores estiverem de acordo, extraímos os dados do quadro e os enviamos para o protocolo superior.





Se os valores não coincidirem, continuamos aguardando o símbolo "Iniciar". E tudo de novo.



É assim que podemos lenta mas seguramente transferir byte por byte de um dispositivo para outro. O receptor irá adicionar esses bytes ao buffer de recebimento do protocolo em um nível superior ao físico e lá ele já decidirá o que fazer: executar o comando de entrada ou retornar alguns dados em resposta.



Resultado



Neste artigo, tentei apresentar ao leitor o tópico da transmissão de dados por linhas de transmissão de energia em uma linguagem geral e compreensível. Espero que alguém ache esta informação útil, talvez não apenas no campo do PLC .



Na próxima parte, gostaria de falar sobre o algoritmo de geração de seno rápido que usei. E como descobrir sua frequência ( DFT ) a partir da matriz de números do sinal digitalizado . Vou contar um pouco sobre as glândulas para tudo isso.



Talvez alguém nos comentários apresente mais ideias. Eu ficaria feliz em receber feedback!






Links e materiais sobre o tema:






All Articles