Design de aplicação para conversão RS{1}}232 em CAN usando tecnologia Fieldbus

Jun 27, 2026 Deixe um recado

1 Introdução


A comunicação de equipamentos industriais normalmente envolve uma ampla variedade de produtos de hardware e software, bem como protocolos usados ​​para conectar plataformas de computador padrão (computadores pessoais ou estações de trabalho) a dispositivos de automação industrial. Conseqüentemente, a maioria dos dispositivos de automação são projetados para executar comandos seriais simples que são compatíveis com as portas seriais padrão encontradas em computadores pessoais ou em placas de porta serial adicionais. RS-232 é atualmente a interface serial mais utilizada nos setores de PC e comunicações industriais. RS-232 é definido como um-padrão de terminação única projetado para estender distâncias de comunicação em comunicação serial de baixa velocidade. Como o RS-232 compartilha um sinal terra comum entre o transmissor e o receptor, ele não pode usar sinais diferenciais; caso contrário, o ruído de modo comum seria acoplado ao sistema de sinal. O padrão RS-232 especifica uma distância máxima de apenas 15 m e uma taxa máxima de transmissão de sinal de 20 kbit/s.


CAN, abreviação de “Controller Area Network”, é um dos fieldbuses mais utilizados internacionalmente. Uma única rede composta por barramentos CAN é limitada pelas características elétricas do hardware da rede. Como um barramento de comunicação serial multi-mestre, as especificações básicas do projeto CAN exigem altas taxas de bits e forte resistência à interferência eletromagnética, bem como a capacidade de detectar quaisquer erros que ocorram no barramento de comunicação. Mesmo quando a distância de transmissão do sinal atinge 10 km, o CAN ainda pode fornecer taxas de transmissão de dados de até 50 kbit/s. A Tabela 1 mostra a relação entre a distância máxima de transmissão entre quaisquer dois nós em um barramento CAN e suas taxas de bits.

 

Distância máxima entre quaisquer dois nós em uma configuração triangular em um sistema CAN Bus

Taxa de bits/kbps 1000 500 250 125 100

Distância máxima/m 40 130 270 530 620

Taxa de bits (kbps) 50 20 10 5

Distância Máxima (m) 1300 3300 6700 10000


Como pode ser visto, o barramento CAN é um barramento serial superior ao RS-232 em termos de desempenho em tempo real, adaptabilidade, flexibilidade e confiabilidade. Quando dois dispositivos seriais estão localizados distantes um do outro e não podem ser conectados diretamente via RS-232, o RS-232 pode ser convertido em CAN para obter interconexão de rede dos dispositivos seriais através do barramento CAN.


No entanto, RS-232 e CAN diferem significativamente em termos de níveis de tensão e formatos de quadro. Especificamente:


O padrão RS-232 usa lógica negativa, definindo qualquer nível de tensão entre +3V e +15V como um "0" lógico e qualquer nível de tensão entre -3V e -15V como um "1" lógico. Os sinais CAN, por outro lado, são transmitidos usando tensão diferencial. As duas linhas de sinal são chamadas "CAN_H" e "CAN_L". No estado estático, ambos têm aproximadamente 2,5V; esse estado é representado como um "1" lógico e também é chamado de "recessivo". Quando CAN_H é maior que CAN_L, representa um “0” lógico conhecido como “dominante”. No estado dominante, os valores típicos de tensão são: CAN_H=3.5V, CAN_L=1.5V;

 

O formato do quadro para a porta serial RS-232 é: um bit de início, oito bits de dados, um nono bit programável (que serve como bit de endereço/dados para transmissão e recepção) e um bit de parada. O formato do quadro de dados CAN consiste em: cabeçalho do quadro + ID + dados (que podem ser divididos em dois formatos: quadros padrão e quadros estendidos).

基于现场总线实现RS-232到CAN转换的应用设计Portanto, o projeto requer um microcontrolador para realizar conversões, como conversões de nível e formato de quadro. O processo de conversão é mostrado na Figura 1.

 

2 Projeto de hardware para conversão RS{2}}232 em CAN


Ao projetar o dispositivo de conversão RS-232-para-CAN, o microcontrolador AT89C52 é usado como microprocessador; o SJA1000 é usado como microcontrolador CAN. O SJA1000 integra as funções da camada física e da camada de enlace de dados do protocolo CAN e pode lidar passivamente com o enquadramento de dados de comunicação; O AT82C250 serve como interface entre o controlador CAN e o barramento físico, fornecendo capacidade de transmissão diferencial para o barramento e capacidade de recepção diferencial para o controlador CAN. Três modos de operação diferentes (alta-velocidade, controle de inclinação e espera) podem ser selecionados através do pino 3 do AT82C250. Quando o pino 3 está aterrado, o dispositivo opera em modo de alta velocidade; o isolamento óptico de alta velocidade é implementado usando o 6N137, que evita interferência de sinais externos; O MAX232 é usado para converter sinais de nível 232 em níveis TTL para o chip de interface do microcontrolador. Para obter detalhes específicos do circuito de interface de hardware, consulte os recursos relevantes do SJA1000; explicações adicionais não são fornecidas aqui. No entanto, os seguintes pontos devem ser observados.


(1) Um resistor de 120Ω é conectado em ambas as extremidades do barramento CAN para corresponder à impedância do barramento, melhorando assim a imunidade a interferências e a confiabilidade da comunicação de dados. Na prática, porém, é suficiente garantir que o resistor shunt entre "CAN_H" e "CAN_L" na rede CAN seja de 60Ω.


(2) O pino 20 (RX1) do SJA1000 pode ser aterrado quando não estiver em uso (consulte o design do software para saber o motivo específico); quando combinado com o bit de configuração CDR.6, isso pode aumentar significativamente o comprimento do barramento.


(3) O método de conexão dos pinos TX0 e TX1 determina o nível da saída serial. Consulte as configurações no Output Control Register (OCR) para obter detalhes específicos.


(4) Um resistor de inclinação é conectado entre o pino RS do AT82C250 e o terra. O valor da resistência pode ser ajustado adequadamente com base na velocidade de comunicação do barramento, normalmente variando de 16 kΩ a 140 kΩ.


(5) O MAX232 requer quatro capacitores eletrolíticos -C1, C2, C3 e C4 - que também são usados ​​para conversão de energia interna. Todos têm uma classificação de 1 μF/25 V; capacitores de tântalo são recomendados e devem ser colocados o mais próximo possível do chip. Um capacitor de desacoplamento de 0,1 μF deve ser conectado entre a fonte de alimentação VCC e o terra.


3 Projeto de Software para Conversão RS-232 em CAN


Sob controle do microprocessador, o uso da recepção da porta serial e interrupções CAN durante a troca de dados entre RS-232 e CAN pode melhorar a eficiência operacional. O fluxograma principal do programa é mostrado na Figura 2. O SJA1000 só pode ser inicializado no modo reset; isso inclui principalmente definir o modo de operação, divisão de relógio e registros de filtro de aceitação, configurar parâmetros de taxa de transmissão e definir o registro de habilitação de interrupção.

 

A precisão da transmissão dos dados também depende da taxa de transmissão e do controle de fluxo, aspectos que não podem ser negligenciados durante o projeto do software. Portanto, as seções a seguir se concentrarão na configuração da taxa de transmissão CAN, na detecção automática das taxas de transmissão da porta serial e no controle do fluxo de dados da porta serial.

info-1-1

 

3.1 Configurando a taxa do filtro CAN


Um dos elementos-chave do protocolo CAN é a taxa de transmissão. Os usuários podem definir a posição dos pontos de amostragem de bits dentro do período de bits e o número de amostras, permitindo-lhes otimizar livremente o desempenho da rede para suas aplicações. Contudo, durante este processo de otimização, deve-se prestar atenção à relação entre a tolerância do oscilador de referência utilizado para parâmetros de temporização de bits e os atrasos de propagação de diferentes sinais dentro do sistema.


A taxa de bits do sistema, fBil, representa o número de bits de dados transmitidos por unidade de tempo, ou seja, a taxa de transmissão fBit=1/tBit. O tempo de bit nominal consiste em três segmentos não{4}}sobrepostos: SYNC_SEG, TSEG1 e TSEG2. Esses três segmentos de tempo são indicados como tSYNC_SEG, tTSEG1 e tTSEG2, respectivamente. Portanto, o período nominal do bit tBit é a soma desses três segmentos de tempo.


tBit=tSYNC_SEG + tTSEG1 + tTSEG2


Dentro do período de bits, esses segmentos são expressos em termos de múltiplos inteiros de uma unidade de tempo básica. Esta unidade de tempo é chamada de cota de tempo (TQ), e a duração de uma cota de tempo é um ciclo do relógio do sistema CAN (tSCL), que é derivado do período do relógio do oscilador (tCLK). O relógio do sistema CAN pode ser ajustado programando o fator prescaler (valor predefinido da taxa de transmissão, BRP). Especificamente:


tSCL=BRP × 2tCLK=2BPR/fCLK


Outro intervalo de tempo muito importante para cálculos de temporização de bits CAN é a largura do salto de sincronização (SJW), que tem duração de tSJW. O segmento SJW não faz parte do ciclo de bits; em vez disso, define o número máximo de TQs pelos quais o ciclo de bits é estendido ou encurtado durante um evento de ressincronização. Além disso, o protocolo CAN permite que os usuários especifiquem o modo de amostragem de bits (SAM), que pode ser um modo de-amostra única ou um modo de três{3}}amostras (selecionando um resultado de três amostras). No modo-de amostragem única, o ponto de amostragem está no final do segmento TSEG1. No modo de três-amostras, dois pontos de amostragem adicionais são obtidos em comparação com o modo de-amostra única; estes estão localizados antes do final do segmento TSEG1, separados por um TQ.

 

info-1-1

O BPR, SJW, SAM, TESG1 e TESG2 mencionados acima podem ser definidos pelo usuário através dos registros internos BTR0 e BTR1 do controlador CAN. Os detalhes são mostrados na Figura 3. Depois que BTR0 e BTR1 forem definidos, a faixa real da taxa de transmissão será:
Máximo=1/(tBit - tSJW), Mínimo=1/(tBit + tSJW)

 

3.2 Detecção da taxa de transmissão da porta serial


Quando um dispositivo serial atua como host, se você precisar detectar a taxa de transmissão da porta serial do dispositivo de conversão naquele momento, você pode primeiro definir a taxa de transmissão de recepção do host (9600 baud, por exemplo) e enviar um caractere específico (um retorno de carro, por exemplo) do terminal. Desta forma, o host pode determinar a taxa de transmissão de comunicação do dispositivo de conversão com base nas informações de caracteres recebidas. O valor ASCII do caractere de retorno de carro é 0DH; os valores recebidos em diferentes taxas de transmissão estão listados na Tabela 2.


Bytes recebidos em diferentes taxas de transmissão


Taxa de transmissão (bit/s) Bytes recebidos (hexadecimal) Taxa de transmissão (bit/s) Bytes recebidos (hexadecimal)


1200 80 4800 E6

1800 F0 9600 0D

2400 78 19200 F*


3.3 Controle de fluxo da porta serial


O termo “fluxo” usado aqui refere-se ao fluxo de dados. A perda de dados geralmente ocorre durante a transmissão entre duas portas seriais. Como o buffer do microcontrolador tem capacidade limitada, se o buffer estiver cheio quando os dados estiverem sendo recebidos, todos os dados que continuarem a ser enviados nesse momento serão perdidos. O controle de fluxo resolve efetivamente esse problema: quando a extremidade receptora não consegue processar os dados a tempo, o sistema de controle de fluxo envia um sinal de "não receber", fazendo com que a extremidade emissora pare de transmitir até receber um sinal de "retomar transmissão". Portanto, o controle de fluxo gerencia o processo de transmissão de dados e evita a perda de dados. Os dois tipos de controle de fluxo comumente usados ​​são controle de fluxo de hardware (incluindo RTS/CTS, DTR/CTS, etc.) e controle de fluxo de software (XON/XOFF-continuar/parar). A explicação a seguir concentra-se exclusivamente no método de controle de fluxo de hardware usando RTS/CTS.


Ao usar hardware para controle de fluxo, os pinos RTS e CTS do terminal serial são conectados às portas de E/S do microcontrolador e os sinais de início/parada são recebidos e transmitidos configurando as portas de E/S para 1 ou 0. O equipamento terminal de dados (como um computador) usa RTS para iniciar o fluxo de dados enviado pelo microcontrolador, enquanto o microcontrolador usa CTS para iniciar e pausar o fluxo de dados do computador. Para implementar esse método de handshake de hardware, um sinalizador de nível-alto e um sinalizador de nível-baixo são definidos durante a programação com base no tamanho do buffer de recebimento. Quando a quantidade de dados no buffer atinge o limite-de nível alto, a linha CTS na extremidade receptora é definida como baixa (lógica 0). Quando o programa na extremidade de transmissão detecta que o CTS está baixo, ele interrompe a transmissão de dados até que a quantidade de dados no buffer de recebimento caia abaixo do limite-de nível baixo e o CTS seja definido como alto. RTS é usado para indicar se o dispositivo receptor está pronto para receber dados.


3.4 PODE receber sub-rotina


O formato PeliCAN suporta quadros padrão e estendidos. O modo CAN pode ser configurado usando CDR.7 no registro divisor de clock (0 para BasicCAN, 1 para PeliCAN). Ao receber dados CAN, o bit FF nas informações do quadro é usado para determinar se é um quadro padrão ou estendido, e o bit RTR é usado para distinguir entre um quadro remoto e um quadro de dados. A seguir está a sub-rotina de recebimento CAN:

 

;//////////////////////////////////////////////////////////////////

;//Recepção de dados CAN/Unificado em um formato de quadro com um ID de 2 bytes //

;///////////////////////////////////////////////////////////////////////

 

RECANSAR:

MOV R0, #C_RE ; Endereço inicial do buffer interno do microcontrolador

MOV DPTR, #RXBUF ; Leia e salve o conteúdo do buffer de recebimento

MOVX A, @DPTR; Leia o segundo byte do buffer CAN

MOV @R0, A ; Salvar

JB ACC.7, EFF_RE ; Bit FF: 0=SFF, 1=EFF

MOV R2, #0

SJMP SFF_RE ; Dependendo do número de identificação, a posição onde o “byte de dados” é capturado varia

EFF_RE: MOV R2, #2

SFF_RE: MOV R2, #2

SFF_RE:

JB ACC.6, EXIT_RECAN ; Verifique o bit RTR; se 1 (quadro remoto), salte

ANL A, #0FH

MOV R3, A; Neste ponto, os 4 bits do meio representam o comprimento dos dados

MOV C_NUM, A ; Armazene o comprimento do quadro recebido em R3 e R5

RDATA0:

INC DPTR; ID de 2 bytes

INC R0

MOVX A, @DPTR

MOV@R0, A

INC DPTR

MOVX A, @R0, A

INC DPTR

MOVX A, @DPTR

MOV@R0, A

MOV A, R2; Se for EFF, ignore o ID de dois{1}}bytes

JZ DRATA1

INC DPTR

INC DPTR

DADOS1: ; Bytes de dados

INC DPTR

INC R0

MOVX A, @DPTR

MOV@R0, A

DJNZ R3, RDATA1

EXIT_RECAN:

RET

 

4 Conclusão


A miniaturização dos computadores forneceu as condições necessárias para o desenvolvimento inteligente de instrumentos de medição e controle, permitindo que dispositivos terminais-baseados em microprocessadores possuíssem capacidades superiores de comunicação digital. Com o surgimento de um número crescente de terminais inteligentes, maiores demandas estão sendo colocadas em arquitetura de rede, protocolos, desempenho-em tempo real, bem como aplicabilidade, flexibilidade, confiabilidade e até mesmo custo. Consequentemente, a tecnologia fieldbus é uma grande promessa para o desenvolvimento futuro. A estrutura do quadro do barramento CAN inclui um identificador (ID), que possibilita ter vários hosts de rede dentro de uma rede de dispositivos; isto é, através desses hosts de rede, o status operacional de toda a rede do dispositivo pode ser monitorado e as decisões de controle correspondentes podem ser tomadas. Este dispositivo já foi totalmente desenvolvido e alcançou excelentes resultados em aplicações práticas.

Enviar inquérito

whatsapp

Telefone

Email

Inquérito