Um programador tentando entender CANopen
Pergunta
-
Será que o cartão de interface CAN provável ser instalado como uma porta COM?
-
Como faço para acabar com uma mensagem a ser enviada como quadros separados? Que tal montar dados de vários quadros recebidos em uma mensagem? Será esta uma preocupação válida?
-
O que é a pilha CANopen? Se eu já tenho uma API para se comunicar com portas seriais, posso ter meu programa de leitura / enviar mensagens CANopen sem a pilha CANopen? O que faz exatamente o meu programa tem que fazer?
-
O que é a maneira ideal / correto de implementação do dicionário de objetos (OD) em software?
(situação atual:. Eu tenho que escrever um programa Java para interpretar mensagens CANopen Devido fazer certas circunstâncias, eu sou incapaz de chegar em minhas mãos o hardware CAN).
(Este é continuação da série de perguntas Stack Overflow Tenho postado na semana passada em Java e CANopen .)
Solução
-
Isso depende de seu cartão de interface. Mas, muito provavelmente, não será uma porta COM, mas você vai ter um arquivo DLL que exporta funções para acessar o cartão (a maioria das interfaces CAN disponíveis são conectados via porta USB ao seu PC). Mas não se preocupe: mesmo que ele não é um padrão oficial, a maioria desses arquivos DLL usar as mesmas funções para que você possa trocar sua interface CAN com outro de outro fabricante sem problemas
.
-
É muito incomum para enviar tantos dados sobre o barramento CAN que você tem que dividi-los em vários quadros. Mas se você absolutamente necessário, então você tem que fazer isso mesmo.
-
A CANopen pilha é uma biblioteca que fornece funções de nível superior para você usar. Ele cuida de tudo CANopen exige (por exemplo, batimentos cardíacos) para que você não tem que fazê-lo sozinho. Uma boa pilha também cuida de vários quadros (2). Infelizmente, essas pilhas não estão disponíveis para barato, mas IMHO eles são vale a pena.
-
A maioria das implementações usar um struct, seja em ROM ou RAM, dependendo se o OD podem ser modificados ou não. Mas um bom CANopen pilha também já cuida disso para você.
Outras dicas
3) Enquanto uma pilha comercial CANopen é certamente uma boa idéia, ainda é possível ler / enviar mensagens CANopen sem usar um.
Nós não sabemos o que o propósito da sua aplicação é. Mas um exemplo, quando você provavelmente seria bem sem uma pilha CANopen é se você já tem um barramento CANopen funcionando com nós mestre e escravo e você só quer ouvir em uma mensagem particular. Outro exemplo poderia ser se você estiver escrevendo uma pequena configuração ou utilitário de teste com um pequeno e bem definido conjunto de mensagens que estão sendo usadas. Em tais casos, uma pilha CANopen comercial full-blown poderia ser um monte de exagero.