Numerosas perguntas sobre o protocolo ARINC429 [closed]

0

Eu recentemente fiz um progresso significativo no meu entendimento sobre o ARINC429 graças a um usuário neste site, mas depois de ler mais sobre ele, eu posso ter me confundido um pouco. Qualquer ajuda em qualquer uma das seguintes perguntas é muito apreciada.

  • Eu encontrei uma especificação pdf online, mas ela contradiz (eu acho) algumas das outras informações que recebi. O link para o pdf é aqui . É seguro assumir que a informação é precisa o suficiente para confiar? Assumindo que este livro é um documento adequado sobre a especificação ARINC429
  • Se o acima estiver correto, é correto que os campos de dados BNR sejam representados no complemento positivo de dois com o bit 29 indicando seu sinal (positivo / negativo)? Isso não seria apenas um binário regular com o bit 29 indicando o sinal de valores?
  • O fator de escala aplica-se a partir do MSB (bit 28) e continua a metade com cada bit entre 27 e 11. A conversão do valor real seria aplicar o fator de escala a cada sig bit e adicionar os valores de todos os sig bits juntos para obter o valor final e usando o bit 29 para identificar se é +/-. Algum disso correto?
  • Como a resolução funciona? Eu fiquei muito confuso com isso. O que é isso? Como isso afeta o campo de dados?
  • Alguém pode explicar o formato BNR do campo de dados e como traduzi-lo? Eu sinto que talvez tenha lido muitas fontes diferentes e fiquei confuso com a variação nas explicações ... haha
por woudie 28.06.2017 / 17:36

1 resposta

Resoluções na especificação A429 são aproximadas, então calcule você mesmo.

Resolução = intervalo / (2 ^ bits significativos)

Aqui está uma maneira de fazer isso: Carregue seus 32 bits em um inteiro assinado de 32 bits. Shift esquerda 3 para que o bit de sinal esteja agora no bit 32. Desloque para a direita (32 bits significativos) -1 para formar um número de "ponto fixo" de complemento de 2. Converta para flutuar e multiplique pela resolução. Feito.

Observe que quando um inteiro assinado é usado, o bit alto é um sinal estendido no deslocamento para a direita.

"Ponto fixo" também é conhecido como "dimensionado" em alguns círculos. É um método de armazenar e executar matemática em um número real usando um inteiro em vez de usar um float. A resolução é o peso de um bit de lsb. A resolução é documentada em algum lugar e multiplicada pelo número inteiro para obter o ponto flutuante durante a depuração e tal, mas o código de máquina não "sabe" que você pensa nele como um ponto flutuante.

O intervalo é a chave para números de pontos fixos porque limita o valor. O número de bits significativos afeta a precisão. Você pode usar o número errado de bits significativos e ainda obter um número "utilizável", mas com uma possível perda de precisão se escolher um que seja muito pequeno. Tenha em atenção que os bits baixos não utilizados são por vezes reaproveitados para sinalizadores de estado, etc., por isso não espere que estes sejam sempre zero. Além disso, as especificações descrevem um padrão ideal, mas no mundo real as liberdades são tomadas com rótulos reaproveitados conforme necessário.

Devido à forma como os inteiros do complemento de 2 funcionam, o valor positivo máximo possível será o intervalo menos a resolução. Por exemplo, você pode obter exatamente -180 graus, mas não exatamente +180 graus.

    
28.06.2017 / 21:07

Tags