Você definitivamente desejará escolher uma camada de rede padrão. Eu já vi alguns casos em que as pessoas criaram seus próprios e, frequentemente, o protocolo é ineficiente e, no final, é uma perda de tempo. Uma camada de rede comprovada fornece funcionalidade básica para resolver a maioria dos problemas que você provavelmente enfrentará na rede com um dispositivo incorporado, o que economizará tempo e dinheiro preciosos no final.
Eu tenho familiaridade com o CANopen, então vou colocar uma explicação aqui e isso pode ajudá-lo a decidir se é esse o caminho que você deseja seguir. Se não se encaixa no que você precisa fazer, eu procuraria outra coisa.
O CANopen é muito centralizado em dados. Todos os nós escravos CANopen (itens que você controla a partir de um nó mestre, como sensores ou drivers de motor) fornecem um dicionário que contém todos os dados de configuração, controle e aquisição de dados que você precisa ler / gravar para realizar seu trabalho. Em seguida, você pode ler / gravar esses objetos individualmente através do mecanismo SDO (objeto de dados de serviço) ou ler / gravar esses objetos periodicamente em transmissões de mensagem CAN temporizadas através do mecanismo PDO (objeto de dados do produtor). A detecção de inicialização, desligamento, redefinição e pulsação / mau funcionamento do nó é fornecida pelos serviços NMT, bem como um serviço de atribuição de ID do nó (se você deseja usá-lo). Para implementar um dispositivo usando uma biblioteca CANOpen incorporada, você basicamente configura um dicionário de objetos, configura PDOs para enviar / receber atualizações de dados periodicamente, e escreva o código do usuário que se comporte com base nessas entradas de dados. Há outras coisas que o CANopen fornece, mas essa é a maior parte. Leia este livro para mais informações.
Eu escrevo código para acessar o barramento CAN em carros GM, que usa uma camada de rede proprietária. Você já viu o OpenCAN? Eu escolheria um padrão aberto, como CANOpen ou mesmo OpenCAN. Realmente depende do nível de controle e flexibilidade que você deseja no seu ambiente de automação.
fonte
Houve ótimas respostas. Não sei qual micro você usa, mas aqui estão os links para algumas informações do microchip.
Biblioteca J1939
Firmware do DeviceNet ™ Group 2 Slave para PIC18 com CAN
Pode abrir
Cada um deles possui código e uma folha de dados básica, informando o que você precisa para implementá-los.
fonte