Eu tive que me fazer essa pergunta cerca de dez anos atrás ou mais. O trabalho que precisava ser feito era dar uma segunda vida à sala de controle. Isso é algo em toda a parede, consistindo de lâmpadas e interruptores com interruptores. Acho que não me engano ao supor que os escudos estejam funcionando desde o aparecimento das lâmpadas, já que os interruptores da época provavelmente já eram conhecidos. E o desejo de beleza, em geral, chegou a pessoas de antiguidade distante.
Agora muitos preferem painéis de exibição a escudos. Mas se haverá uma maioria de fãs de exibição depende de muito desconhecido para nós. Mas agora isso não é sobre isso.
Todo mundo que puder falar sobre fiação elétrica por cinco minutos imediatamente me dirá que a blindagem consiste em painéis planos nos quais são colocados interruptores e lâmpadas, além de uma caixa com muitos fios. Afinal, uma lâmpada sem fios é adequada apenas para quebrá-la estupidamente ou, se você surgir de forma criativa e ativar a imaginação, coloque-a no mais inquisitivo da sua boca e descubra rapidamente onde fica a sala de emergência.
Isso foi tudo, um monte de fios deixando a caixa para os interruptores e lâmpadas, apenas as lâmpadas eram pequenas. Aparentemente, a neta da famosa lâmpada Ilyich.
E agora, lembro-me, olhou pela janela e existe o século XXI. Portanto, é necessário fazer tudo de novo e de uma maneira diferente. Em vez de lâmpadas - LEDs econômicos. Em vez de fios - fiação. Em vez de uma gaveta - muitas, muitas gavetas pequenas, controladores, portanto.
Descobriu-se que se cada controlador puder atender a quatro LEDs e dois switches, isso parecerá ideal. Quero dizer, não tão aterrorizante. E se o barramento de força e o barramento de informações passam por todos os controladores, existem apenas quatro fios, uma certa graça aparecerá. Descobriu-se também que os controladores precisariam de 104 peças. De uma maneira amigável, aqui seria necessário apresentar e resolver o problema do vendedor ambulante. E então, talvez, os controladores gastariam menos. Mas não era bom.
Naquela época, eu já sabia o que é CAN e o nível de meu respeito pela Bosch era muito maior do que o de um chef decente de restaurante ou de uma dona de casa arrumada. E os fabricantes de automóveis BMW, tenho certeza, foram visitar os engenheiros da Bosch.
A Controller Area Network, como diriam os estrangeiros, na minha opinião, como uma solução técnica, surgiu do desejo de fazer algo, finalmente, bem. Não vou me esconder, você não sentirá todos os encantos dos resultados do trabalho dos engenheiros imediatamente quando dominar dois volumes do padrão, mas muito mais tarde. Quando você fala com testemunhas oculares, entreviste testemunhas. Agora há mais volumes, mas talvez você possa começar imediatamente a partir do terceiro, porque agora é chamado de CAN_FD. No entanto, deixe-me continuar.
Mesmo antes da colisão com o escudo, eu tive que encontrar as decisões de engenharia de outras pessoas sobre o uso do CAN, além de cometer meus erros. Os erros geralmente aparecem entre as instruções de leitura e as descrições dos estudos. Bem, apenas na segunda vez eles parecem um ancinho.
Agora, alguns milhares de palavras para o leitor, que é tolerante com os nerds e não os considera inimigos.
O CAN pode ser instalado onde o RS485 trabalhou anteriormente em um cabo de par trançado. Par trançado não é uma condição indispensável, é simplesmente conveniente comparar. Usando um cabo de par trançado, via CAN, bem como via RS485, você pode enviar mensagens do controlador de controle para o escravo e receber uma resposta. A semelhança é impressionante, mas vamos nos concentrar melhor nas diferenças. Algumas das diferenças podem ter um sinal de menos para alguns dos leitores. Mas eu os aconselharia a não ficarem chateados, mas a recordar a lei de Lomonosov.
Graças à organização síncrona do protocolo, a resolução de colisão no barramento é implementada em hardware, em tempo real, por assim dizer. É observado abaixo o que isso leva e o que dá ao engenheiro inquieto.
Você pode receber uma mensagem sem uma solicitação.
Não é preciso esperar até que a resposta esteja pronta; você pode perguntar a outra pessoa neste momento.
O controlador escravo também pode perguntar e obter uma resposta.
Devido à operação síncrona, o comprimento do barramento CAN é inversamente proporcional à velocidade de transmissão ou algo assim.
A velocidade máxima é de 1 MBaud (10 a caminho).
O remetente sabe que a mensagem não foi distorcida durante a transmissão imediatamente após o último bit. Mais precisamente, todos no ônibus sabem disso.
Se a mensagem estiver distorcida para um, a tentativa não será contada por todos.
Se a mensagem foi enviada ao barramento, o assinante não a receberá apenas com a condição de que esteja quebrada.
O número de controladores no barramento não deve exceder 127.
As mensagens são limitadas em tamanho. Eles consistem em um identificador, um indicador de comprimento em bytes e um bloco de dados, com exatamente o número de bytes indicado. Existem mais alguns bits de serviço, mas vamos ficar quietos, pois o serviço deve ser discreto. O identificador pode ter tamanho de 11 ou 29 bits. Um bloco de dados pode conter de 0 a 8 bytes (64 a caminho).
Para detalhes, vou dar alguns números. Se você deseja trabalhar a uma velocidade de 1Mbaud, o comprimento do barramento não deve ser superior a 35 metros (alguns preferem 40, ou seja, mais quente). Se você precisar transmitir algo a uma distância de 8 km, a velocidade não deverá exceder 5 kbaud. A propósito, o leitor tem o direito de perguntar por que kilobod, e não kilobit? Porque nem todos os bauds se tornam bits. Algo assim.
Como posso descartar todos esses ingredientes altamente secretos? Aqueles que vêem o jogo dos dados em tudo se lembram imediatamente de que existe uma coisa maravilhosa como CANopen e muitas outras combinações e abreviações mais bonitas, e não há nada para reinventar a roda. Por isso, muitas vezes quero responder: “Esse ovo frito de dois ovos, que muitos cozinham para o café da manhã, não se parece com uma bicicleta? Por que não ir a um serviço de alimentação e tomar uma omelete? Mas é melhor ficar calado e continuar sem me distrair com os gritos da platéia.
Naqueles dias, quando os identificadores de 29 bits ainda não haviam sido inventados, havia apenas 11 bits. Alguns começaram a usá-lo para colocar o nome (número) do tipo de dados desejado lá. Outros usados como o endereço do controlador que está sendo acessado. Ambos faziam sentido. Por exemplo, você pode perguntar o seguinte:
- E nos dê, meu caro, um castelo do décimo terceiro ano em um litro de embalagem de papel.
Ou então:
Envolva-me, por favor, o que está escondido na sua prateleira de baixo à direita.
A propósito, no CAN esse design também pode funcionar:
Mentir para todos! E você rapidamente coloca tudo das prateleiras na minha bolsa.
Mas esse design geralmente não é usado, porque você precisa esperar um pouco.
Aguarde até que todas as respostas sejam alinhadas uma a uma e estejam disponíveis para o controlador solicitante. Já deixamos o filme, se isso.
No meu caso, eu ficaria feliz com a variante do identificador como um endereço. Dos 11 bits, 7 eram necessários e mais 4 restavam para tornar algumas mensagens mais urgentes que outras, além de marcar alguns dos controladores como os principais.
Alguma inconveniência migrada aqui do RS485, a saber, os endereços tiveram que ser definidos manualmente em cada controlador. Em seguida, verifique e reinstale. E talvez volte ao passo anterior e repita.
Felizmente, naquele momento, duas circunstâncias já existiam.
Primeiro, um identificador de 29 bits já apareceu. E a segunda é que muitos fabricantes de microcontroladores começaram a considerar a condição de que cada chip possui um número único e bastante longo como uma boa forma.
Agora, em um identificador longo, 24 bits podem ser alocados com segurança para um endereço exclusivo. Restavam outros 5, para garantir que os trens diferissem em urgência, direção (lá, costas), presença de um vagão-restaurante e vagões com maior conforto.
Se você parar de brincar e se tornar sério, ligue para os agentes controladores subordinados e os demais chefes, em seguida, poderá criar uma tabela. Ela será mostrada um pouco mais tarde.
Um pouco mais sobre o endereçamento. Um número de chip exclusivo, como regra, ocupa um número de bits bem superior a 24, por exemplo, 96 com STM32FXXX. Portanto, você precisa, de alguma forma, obter 24 de 96. Eu escolhi a operação XOR. Você pode escolher outra coisa, mas um pequeno problema permanecerá. Estas são correspondências de endereços após a redução.
A probabilidade desse problema é extremamente pequena, mas é. É solucionável, mas adiciona trabalho aos instaladores. Aqui deve ser lembrado que as mensagens CAN podem não conter dados. Isso é útil para nós ao decidir. Consiste nas seguintes ações.
O controlador controlador (chefe) envia uma solicitação de transmissão à qual todos os agentes devem responder (essa é uma solicitação com um endereço zero). As mensagens de resposta com comprimento zero de dados e endereços correspondentes não se deterioram, mas alcançam o chefe na forma de um.
Agora resta calcular quantas respostas são recebidas e quantas devem ser. Se esses dois números coincidirem, tudo estará em ordem. Se houver menos respostas que controladores, haverá uma coincidência de endereços e haverá trabalho para os ajustadores. E se houver mais respostas que controladores, você precisará pensar em uma dissertação, porque está à beira da descoberta.
Se a mudança no comprimento da mensagem for considerada uma variação de seu significado, você poderá obter recursos adicionais, sobre os quais falarei mais tarde, se minha mãe não quiser comer.
Outro ponto interessante é que, se você usar identificadores curtos e longos ao mesmo tempo, poderá obter, por exemplo, endereçamento de grupo ou solicitações de difusão parcial. Mas ainda não vamos nos aprofundar.
Vamos voltar à codificação do identificador.
Para fins de endereçamento, 24 bits são alocados no identificador estendido e seis no identificador padrão. Um endereço com um valor de 0x000000 é transmitido para o identificador estendido. Para um identificador padrão, um endereço nulo (seus 6 bits) também é considerado transmitido. Os cinco bits iniciais (altos) nos identificadores longos e curtos são chamados de cabeçalho, afetam o significado da mensagem e são indicados pelas letras NVADR:

Obviamente, para o painel de controle, era necessário implementar apenas parte desse esquema. No primeiro projeto com um escudo (ou no escudo, quão certo?), Foram utilizados chips Cortex da NXP, e nos próximos projetos (havia alguns) M0 da STMicroelectronics já foram usados.
Algumas palavras sobre o uso de identificadores curtos. Os seis bits alocados para endereçamento não endereçam o controlador, mas o grupo. No início, este grupo tem zero para todos. Em seguida, os agentes são configurados, após o qual alguns ou todos eles se tornam membros de seu grupo. Agora, uma solicitação ao grupo, obtemos as respostas dos agentes que coletamos nesse grupo.
Agora, um pouco sobre o que é adicionado se você interpretar mensagens com diferentes comprimentos de dados de maneira diferente. Por exemplo, uma consulta de comprimento zero ajuda muito na depuração, conforme mencionado acima. Uma solicitação com um comprimento de 3 serve o espaço variável de 16384 bytes. Uma solicitação com um comprimento de 4 faz o mesmo, mas destina-se a um agente de gateway que serve um barramento CAN de segundo nível. Esse ônibus pode consistir em um ou dois agentes, a alguns quilômetros de distância.
Uma consulta com um comprimento de 5 e 6, da mesma forma, destina-se a um espaço de variáveis de dois bytes do tamanho 4194304. Dois bits não são usados para endereçamento. Um bit controla a leitura e gravação. Outro sinaliza um erro.
Em seguida, 7 e 8 veiculam palavras de quatro bytes. Existem também 4.194.304.
Esses espaços são comuns a todos os agentes. Cada um deles, dependendo da finalidade, usa apenas um segmento do espaço das variáveis. O controlador para medir a temperatura em dois pontos é mostrado na foto. Isso é para depuração e teste.

Os controladores são conectados com um cabo plano para 6 núcleos. Dual são usados para alimentos. O chip de seis metros é o STM32F042.
No verso está o MAX3051, um driver CAN no pacote SOT23-8.
Bem, mamãe liga para comer.