Ferramenta CAN para Atlas Copco PT-BR
Ferramenta CAN para Atlas Copco PT-BR
Ferramenta CAN para Atlas Copco PT-BR
Abstrato
O objetivo desta tese de 15 hp em engenharia da computação foi desenvolver uma ferramenta para monitorar
e analisar o fluxo de dados em uma Controller Area Network (CAN) chamada Rig Control System (RCS) que é
usada pela Atlas Copco. A Atlas Copco desenvolve e fabrica máquinas para mineração e escavação de
rochas. A divisão Rocktec é responsável pela plataforma Rig Control System utilizada nas máquinas de todas as
divisões da área de negócios Mining and Rock Excavation Technique (MR). O objetivo principal da ferramenta é
monitorar e analisar dados da rede RCS e apresentar os dados analisados de maneira fácil para ajudar no
desenvolvimento e manutenção de RCS e máquinas que usam RCS. São apresentadas as vantagens
e como os dados são enviados pelo barramento CAN, bem como o protocolo CANopen, que é um protocolo de
camada superior baseado em CAN. São apresentadas duas formas de aquisição de dados do RCS, um ambiente
simulado e um hardware real. Diferentes tipos de comunicação entre processos são apresentados,
bem como os prós e contras de cada um desses tipos. A criação da ferramenta exigiu uma Interface Gráfica do
Usuário (GUI) para que diferentes frameworks para esta tarefa também sejam apresentados e discutidos.
Uma versão da ferramenta é apresentada e discutida em detalhes. O resultado do projeto é uma ferramenta
que, com mais desenvolvimento, pode ser de grande utilidade para desenvolvedores e engenheiros de serviço
que trabalham com RCS.
Resumo
O objetivo deste projeto de graduação de 15 créditos em tecnologia da computação era desenvolver uma
ferramenta para monitorar e analisar o fluxo de dados em uma rede de área de controlador (CAN) chamada Rig
Control System (RCS) usada pela Atlas Copco. A Atlas Copco desenvolve e fabrica máquinas para mineração
e pedreiras. A divisão Rocktec é responsável pela plataforma Rig Control System utilizada em máquinas
de todos os departamentos da área de negócios Mining and Rock Excavation Technique (MR). A principal
tarefa da ferramenta é monitorar e analisar dados da rede RCS e apresentar os dados analisados de maneira
fácil de entender para auxiliar no desenvolvimento e manutenção de RCS e máquinas que usam RCS.
São apresentadas vantagens, como os dados são enviados pelo barramento CAN e também o protocolo
CANopen, que é um protocolo de alto nível baseado em CAN. São apresentadas duas formas diferentes
de coleta de dados do RCS, um ambiente simulado e um hardware real.
Diferentes tipos de comunicação entre processos e suas respectivas vantagens e desvantagens são apresentados.
A criação da ferramenta exigiu uma interface gráfica com o usuário para que diferentes frameworks para
esta tarefa sejam apresentados e discutidos em detalhes. O resultado do projeto é uma ferramenta que, com
maior desenvolvimento, pode ser de grande utilidade para desenvolvedores e técnicos de serviço que trabalham
com RCS.
1 (32)
Machine Translated by Google
Prefácio
Gostaríamos de agradecer a todos os colegas de trabalho da Atlas Copco, especialmente Jan
Knutsson, Lars Sandström, Fredrik Grahn e Hans Gustavsson por toda a ajuda que nos deram durante
o projeto. Também gostaríamos de agradecer a Jack Pencz pelo apoio.
2 (32)
Machine Translated by Google
Conteúdo
1. INTRODUÇÃO ................................................ ................................................ .......... 5
1,1 ANTECEDENTES ...................................................... ................................................ ...... 5
1,2 PROJETO ...................................................... ................................................ .............. 5
1,3 OBJETIVO ...................................................... ................................................ ........... 5
1,4 REQUISITOS ...................................................... ................................................ ... 6
2 MÉTODOS E FERRAMENTAS ....................................... ................................................ 7
2.1 MÉTODOS ................................................. ................................................ ............. 7
2.2 FERRAMENTAS................................................. ................................................ ................... 7
2.2.1 Kvaser USBcan Rugged HS/HS ....................................... ................................................ ......... 7
2.2.2 Controle de versão ....................................... ................................................ ................................ 8
2.2.3 Documentação do código ...................................... ................................................ ...................... 8
3 (32)
Machine Translated by Google
APÊNDICES
R: Cenários de Caso de Uso
4 (32)
Machine Translated by Google
1 Introdução Neste
capítulo, os antecedentes da tese são descritos com mais detalhes, o projeto e os
objetivos do projeto são discutidos e os requisitos para o projeto são listados.
Anteriormente, a Atlas Copco usava um programa chamado CANLab, que era um programa geral destinado a
monitorar e analisar dados em uma rede de barramento CAN. O problema com o CANLab e programas
semelhantes era que eles não podiam analisar ou analisar os dados do RCS. Isso tornou difícil para os usuários
decifrar os dados em textos compreensíveis. Além disso, o sistema era muito caro, o que significava que nem
todo usuário tinha acesso ao software em seu computador.
Algumas ferramentas já existiam para ajudar os desenvolvedores com esse problema: um programa que
registrava todos os dados no arquivo e um programa que analisava os dados em um formato mais
legível. Esses programas estavam apenas no estágio de protótipo e não podiam mostrar dados em tempo
real, portanto, mais desenvolvimento foi necessário para torná-los úteis.
1.3 Objetivo O
objetivo deste projeto era criar um software que pudesse ler dados do barramento CAN e mostrá-los em
visualizações que ajudassem os desenvolvedores e engenheiros de serviço da Atlas Copco em seu trabalho.
A parte mais importante do programa seria mostrar os dados analisados ao usuário.
Outro fator-chave importante foi que o software usado anteriormente custava muito dinheiro, o que levou ao fato
de que nem todo desenvolvedor poderia participar desse trabalho. A visão era que cada desenvolvedor teria o
software em seu computador para ajudar na depuração de problemas específicos do barramento CAN.
5 (32)
Machine Translated by Google
1.4 Requisitos
o Aplicativo de teste usando a interface de programação de aplicativos (API) para a família USB CAN de
produtos da Kvaser
o Tradução de mensagens CAN em tabela RCS I/O e lista de sinais para apresentação
- Visualização do módulo
- Estatísticas de ônibus
6 (32)
Machine Translated by Google
2 Métodos e ferramentas
Neste capítulo são listados e explicados os métodos, ferramentas e outros recursos que
foram utilizados no projeto.
2.1 Métodos
A linguagem de programação deveria ser C++, mas a implementação da GUI do programa foi
deixada para nós decidirmos qual estrutura usar. Especificações para CAN Open foram fornecidas.
Métodos de desenvolvimento ágil, contendo uma mistura de programação extrema e scrum, foram usados,
especialmente programação em pares e prototipagem rápida. Foi um processo de
desenvolvimento iterativo em que protótipos com determinados objetivos eram criados a cada duas semanas.
Esses protótipos foram demonstrados a um grupo de desenvolvedores várias vezes, onde feedback
importante foi coletado. Isso ajudou no desenvolvimento do projeto, pois adições e alterações puderam
ser feitas com base no feedback recebido sobre o protótipo durante a demonstração.
2.2 Ferramentas
O ambiente de desenvolvimento usado para este projeto foi o Visual Studio 2005 que veio pré-
instalado nos computadores fornecidos pela Atlas Copco. Os computadores vieram com o Windows
7 pré-instalado como sistema operacional. Outras ferramentas utilizadas foram Microsoft Office
2010, Lotus Notes e Acrobat Reader como auxílio para planejamento, reuniões e documentação. Quanto
à parte mais de programação e simulação foram utilizados IncrediBuild, Perl, Python 2.7, TortoiseHg,
Mercurial, Visual Assist X, Qt Creator e FogBugz. A Atlas Copco forneceu tudo o que foi necessário
para a conclusão bem-sucedida do projeto.
7 (32)
Machine Translated by Google
Para tornar o processo de codificação mais eficiente, foi utilizado um sistema de controle de versão. Os
candidatos a representar o projeto foram Git, Subversion e Mercurial. A Mercurial foi escolhida principalmente
porque a Atlas Copco já a utilizava em outros projetos. Um sistema de controle de versão é usado para
poder voltar e recomeçar a partir de um ponto anterior, geralmente quando um erro foi cometido.
Mais benefícios são que mais de uma pessoa pode trabalhar em um projeto simultaneamente sem
problemas.
Para garantir que o código do projeto seria fácil de trabalhar após o término do projeto, era necessária
uma boa ferramenta de documentação. A escolha recaiu sobre Doxygen. Atualmente, o Doxygen é
usado pela Atlas Copco para documentar classes e funções públicas. Doxygen é uma ferramenta amplamente
utilizada para criar documentação a partir do código-fonte.
Para a busca de textos acadêmicos foram utilizados os bancos de dados da Universidade de Örebro. Foi
usado o Wiki interno da Atlas Copco onde as especificações e a documentação do RCS foram localizadas.
Também foi utilizado um simulador do sistema RCS para poder testar o programa sem acesso a hardware real.
Para começar bem o projeto e não ter que escrever tudo do zero, foram usadas as bibliotecas de
desenvolvimento da Atlas Copco. Foi dado acesso ao equipamento de laboratório da Atlas Copco para
testar o programa em hardware real. Os resultados de laboratório, os arquivos de log e o simulador foram
usados para obter os dados necessários. Tivemos muitas reuniões, agendadas e não agendadas,
com pessoas que estavam envolvidas com o projeto. Essas reuniões ajudaram muito no desenvolvimento
do projeto. A comunicação foi muito rápida e eficaz usando o Lotus Notes.
8 (32)
Machine Translated by Google
3 Implementação Este
capítulo descreve a implementação do projeto. O protocolo CAN Bus, CANopen e Rig
Control System são descritos em detalhes. A escolha da estrutura para a GUI é
explicada e as opções de comunicação entre processos para o projeto são discutidas
e analisadas. As implementações das diferentes partes da GUI também são descritas.
Para poder iniciar o projeto realizou-se uma reunião onde surgiram os requisitos, ferramentas, GUI e o que era esperado.
Para começar bem o projeto, foram criados casos de uso para as tarefas mais comuns. Eles deram um bom ponto de partida
e algo para construir. Eles também foram uma boa referência ao projetar o programa.
desenvolvido pela BOSCH como um barramento de rede de comunicação serial. É usado em muitas aplicações industriais e
provou ser muito confiável e tem alta tolerância a interferências. O baixo custo e a alta velocidade do barramento CAN o
tornaram uma escolha popular para uso em aplicações de barramento de campo [18]. O barramento CAN pode mover
dados até 1 Mbit por segundo. Mais uma vantagem é que o barramento CAN pode ser implementado em sistemas de
tempo real. O barramento CAN é diferente de USB e Ethernet porque envia muitas mensagens curtas transmitidas por toda
a rede, em vez de enviar apenas grandes blocos de dados. O protocolo de barramento CAN também é capaz de lidar com
nós defeituosos sem derrubar toda a rede [19]. Um barramento CAN só pode ter dois valores lógicos. Esses valores são
'dominantes' e 'recessivos'. Na maioria das implementações do protocolo de barramento CAN, o valor 'dominante' é zero
e o valor 'recessivo' é um.
Existem quatro tipos de mensagens que podem ser enviadas pelo barramento CAN. Estes são:
• QUADRO DE DADOS
Este tipo de mensagem contém dados que são enviados de um transmissor para um ou mais receptores.
É o tipo de mensagem mais comum em uma rede de barramento CAN.
• ESTRUTURA REMOTA
Este tipo de mensagem é utilizado sempre que um nó em uma rede CAN bus precisa solicitar dados de outro nó.
Ele então enviará um REMOTE FRAME para este nó para iniciar a transmissão dos dados solicitados.
• QUADRO DE ERRO
Este tipo de mensagem é enviado sempre que um erro é detectado por qualquer nó em uma rede CAN bus. O
layout de um frame de erro não está de acordo com a especificação CAN para o layout DATA FRAME. Se um nodo
detecta um erro em uma mensagem recebida, ele imediatamente envia um frame de erro que, ao ser
recebido por outros nodos, faz com que eles também enviem um frame de erro. Quando o transmissor da
mensagem de falha receber o frame de erro, ele tentará enviar a mensagem novamente. Um quadro de erro
substitui qualquer outra mensagem atualmente no barramento.
• ESTRUTURA DE SOBRECARGA
Este tipo de mensagem é usado sempre que um nó que recebe dados não consegue acompanhar a quantidade de
dados recebidos. Sempre que um nó que está transmitindo dados recebe um frame de erro, ele adia o envio
de novos dados por um curto período de tempo para permitir que o receptor o acompanhe.
9 (32)
Machine Translated by Google
O único tipo de mensagem que foi usado no programa foi o tipo DATA FRAME.
Um quadro de dados do barramento CAN consiste em sete campos de bits diferentes. Veja a Fig. 6. Esses campos são:
• CAMPO DE ARBITRAGEM
Este campo de bit consiste no identificador CAN e no bit RTR (Remote Transmission Request). O
identificador CAN tem 11 bits (v. 1.xe 2.0A) ou 31 bits (v.
2.0B) e é usado para identificar de qual nó o DATA FRAME se originou. (O Rig Control System da Atlas
Copco usa identificadores CAN de 11 bits.) O bit RTR é usado para identificar se a mensagem é um
DATA FRAME ou um REMOTE FRAME.
• CAMPO DE CONTROLE
Este campo de bit contém o DATA LENGTH CODE. Tem seis bits de comprimento e o DATA LENGTH
CODE ocupa 4 desses bits. Os outros dois bits são bits reservados. O DATA LENGTH CODE contém
o número de bytes no DATA FIELD.
• CAMPO DE DADOS
Este campo de bit contém os dados reais do DATA FRAME. Pode ter de 0 a 8 bytes de comprimento.
• CAMPO CRC
Este campo de bit contém o CRC SEQUENCE (Cyclic Redundancy Code) que é usado para verificar se o
quadro não foi corrompido durante a transferência e um CRC DELIMITER que tem um bit de
comprimento e é 'recessivo'.
• CAMPO DE RECONHECIMENTO
Este campo de bit consiste no ACK SLOT e no ACK DELIMITER. O ACK SLOT é usado para reconhecer
ao nó transmissor que pelo menos um outro nó recebeu o quadro enviado. O ACK DELIMITER tem
um bit de comprimento e é 'recessivo'.
As partes do quadro de dados CAN que este projeto utilizou foram o CAMPO DE ARBITRAGEM, CAMPO DE
CONTROLE e CAMPO DE DADOS.
Os nós CAN verificam todas as mensagens em busca de erros, mesmo que a mensagem não se destine a esse
nó específico. Se um nodo CAN detecta um erro, ele envia um ERROR FRAME para todos os outros nodos CAN.
A CAN emprega cinco métodos diferentes de verificação de erros: •
Erro de bit
Quando um nó envia um bit no barramento, ele verifica o barramento para ver se o valor do bit verificado
é o mesmo que o valor do bit enviado. Se forem diferentes, ocorreu um erro de bit.
• Erro de preenchimento
de bit Quando uma mensagem é recebida e 6 bits consecutivos de valor igual são detectados, ocorreu
um erro de preenchimento de bit. O preenchimento de bits sempre insere um bit de valor
oposto sempre que 5 bits de valor igual são enviados, portanto, se 6 bits de valor igual forem
encontrados, ocorreu um erro.
10 (32)
Machine Translated by Google
• erro de CRC
Se o cálculo CRC do receptor diferir do valor CRC na mensagem CAN que foi calculado pelo transmissor,
ocorreu um erro CRC.
• Erro de formulário
Um erro de formulário ocorre sempre que uma parte predefinida de uma mensagem CAN tem um tamanho
diferente do esperado.
• Erro de reconhecimento
Um erro de reconhecimento ocorre sempre que um transmissor não detecta um bit dominante no ACK
SLOT após ter enviado uma mensagem. [19, 20, 23[23]
3.3 CANopen O
primeiro passo da análise de dados foi interpretar que tipo de mensagem cada frame de dados era.
Como o RCS é construído sobre o protocolo CANopen, a especificação CANopen foi consultada.
CANopen é um protocolo de camada superior baseado em CAN. Ele fornece habilidades para dispositivos de
diferentes fabricantes se comunicarem entre si. Todos os dispositivos conectados a uma rede CANopen precisam
implementar um perfil de dispositivo. Este perfil de dispositivo garante que todos os dispositivos conectados à mesma
rede CANopen possam se comunicar e se entender. O perfil do dispositivo contém um dicionário de objetos. O
dicionário de objetos contém dados, objetos de comunicação e comandos. Existem muitos perfis diferentes com
diferentes dicionários de objetos, dependendo do tipo de dispositivo para o qual o perfil se destina. 4 tipos diferentes
de comunicação estão disponíveis para uso no CANopen:
PDO é a principal opção para transferência de dados entre nós. A comunicação PDO só pode ocorrer quando
todos os dispositivos da rede estiverem funcionando. Existem três modos diferentes de comunicação
PDO:
o Comunicação síncrona, que transmite e recebe dados a cada mensagem de sincronização recebida
o Comunicação de evento, que responde a um determinado evento, por exemplo, um botão sendo
pressionado, e envia uma mensagem de evento informando a outros nós que o botão foi
pressionado
Usado para operação e gerenciamento de rede. Um nodo da rede CANopen pode ser designado como
gerenciador da rede. Este nó informa aos outros nós em que estado de operação eles devem estar.
Existem três modos de operação: inicialização, pré-operacional e operacional. A inicialização ocorre
quando o nó está iniciando, pré-operacional ocorre quando o nó completou a sequência de inicialização
ou quando o gerente de rede diz ao nó para entrar no modo pré-operacional e operacional que
11 (32)
Machine Translated by Google
Essas mensagens são usadas para relatar erros, temporização e sincronização, por exemplo, o
telegrama de emergência que é enviado sempre que ocorre um erro em um nó.
CANopen divide o identificador CAN em duas partes, CFC (Can Function Code) e CANopen
node ID. O CFC tem 4 bits e o ID do nó CANopen tem 7 bits. Muitas informações podem ser obtidas
apenas dessas duas partes da mensagem CAN. A Fig. 2 mostra a informação que se pode obter do
CAN ID. [25]
• módulo APP
O módulo DISP é um display que mostra dados relevantes para o operador da máquina.
• módulo CCI
• Módulo de E/S
Um módulo de E/S consiste em muitas entradas e saídas digitais e analógicas que podem
acionar relés ou ler sinais de atuadores.
12 (32)
Machine Translated by Google
• Módulo decodificador
Os módulos decodificadores são geralmente usados em painéis de operação para leitura de botões e joysticks.
• Módulo resolvedor
Um módulo resolvedor é usado para sensores que podem medir ângulos, por exemplo, o ângulo de uma
lança em um boomer.
estável, ou seja, nenhuma versão beta ou recém-lançada que possa conter bugs
e outros erros
Os desejos eram os seguintes:
• Compatibilidade entre plataformas • Fácil
de trabalhar • Uma boa
comunidade • Capaz de
programar em C++
3.5.1.2 wxWidgets
wxWidgets é uma biblioteca C++ de plataforma cruzada que suporta Windows, Linux, UNIX e Mac OS X. Também
oferece suporte para plataformas móveis. É gratuito e de código aberto. C++, Python, Perl e C# são linguagens
suportadas para uso com wxWidgets. Existe algum suporte para o Visual Studio, mas outros Ambientes de
Desenvolvimento Integrado (IDE) têm melhor suporte interno para wxWidgets. [5]
Windows Forms é uma API gráfica. É uma parte da estrutura .NET. É um wrapper para a API Win32. Possui suporte
para as linguagens de programação C#, Visual Basic e C++/CLI.
O Visual Studio tem suporte interno para Windows Forms. [7]
3.5.1.5 Qt
Qt é uma biblioteca C++ de plataforma cruzada que suporta Windows, Linux, UNIX e Mac OS X. Também oferece
suporte para algumas plataformas móveis, como Symbian. Possui versão comercial e
13 (32)
Machine Translated by Google
uma versão de código aberto. O Qt é feito principalmente para desenvolvimento com C++. Existe um suplemento
para suporte ao Visual Studio, bem como o próprio IDE Qt Creator do Qt. [8]
3.5.1.7 Análise
O suporte ao Visual Studio foi bom para todos os frameworks escolhidos, seja diretamente
ou por meio de um add-in. A documentação do WTL estava, no momento em que este livro foi
escrito, incompleta e faltavam recursos adicionados nas versões recentes do WTL. As
outras opções tinham documentação excelente, fácil de entender e trabalhar. Todos os
frameworks escolhidos tinham uma versão estável para trabalhar. O MFC não tinha
nenhuma forma de compatibilidade entre plataformas, era apenas para Windows, era o mesmo
para WPF, Windows Forms e WTL, apenas wxWidgets e Qt atendiam ao desejo de compatibilidade
entre plataformas. O desejo do framework ser fácil de trabalhar não foi avaliado, pois era difícil
saber se algo era fácil de trabalhar sem pelo menos experimentar. O mesmo poderia ser dito sobre
o desejo de uma boa comunidade em torno do framework, mas uma rápida análise mostrou que
todas as escolhas pareciam ter uma boa comunidade ao seu redor. C++ foi suportado por
todas as estruturas, exceto WPF e Windows Forms (C++/CLI é suportado por WPF e Windows
Forms, mas não é C++ nativo).
Após esta análise, foi tomada a decisão de que o Qt 4.8.4 seria usado. As razões para esta
escolha foram as seguintes:
• Boa documentação •
Uma grande comunidade em torno do Qt que pode fornecer suporte, se
necessário • A Atlas Copco já usa o Qt em seu sistema
RCS • Ferramentas para auxiliar na implementação
da GUI • Suporte multiplataforma
Um dos requisitos do projeto era criar uma view onde todas as mensagens CAN enviadas na rede
RCS pudessem ser vistas, para isso foi criada uma view de barramento. Essa exibição
conteria todas as mensagens enviadas na rede RCS. Consistia em uma mesa
14 (32)
Machine Translated by Google
com 9 colunas diferentes. As colunas mostravam dados relevantes para cada mensagem CAN, por exemplo,
a hora em que a mensagem foi recebida, qual CAN ID a mensagem tinha e os dados que a mensagem
continha. Para poder ver e entender melhor os dados, uma alternância entre hexadecimal e decimal foi
implementada nas colunas CAN ID e Dados na visualização da tabela. Uma alternância entre tempo absoluto e
relativo também foi adicionada. A caixa de seleção colorida indica se as mensagens de sincronização devem ser
representadas com um fundo amarelo para maior clareza, pois as mensagens de sincronização podem ser
importantes para verificar se todos os nós respondem à sincronização dentro de um determinado período de
tempo. Para sempre ver a mensagem mais recente, um recurso de rolagem automática foi adicionado. Essa
função garante que a visualização do barramento role até a última mensagem recebida sempre que ocorrer
uma atualização na visualização do barramento.
15 (32)
Machine Translated by Google
Para poder ver os módulos conectados a uma rede de barramento CAN, uma visualização de módulo foi adicionada.
Essa visualização mostrava os módulos e a capacidade de expandir um módulo específico para mostrar mais
informações sobre ele. Essa visualização estava localizada à direita da tela, ao lado da visualização do ônibus.
Isso é mostrado na Fig. 5. Quando um módulo específico enviou uma mensagem, esse módulo foi adicionado na
exibição do módulo, caso ainda não existisse. Os módulos foram classificados por número de módulo, dessa
forma os módulos sempre vinham na ordem numérica correta. A visualização do módulo era atualizada assim
que uma nova mensagem enviada ou recebida era analisada pelo cliente. Os dados para esta visualização
foram obtidos da classe do módulo de E/S.
16 (32)
Machine Translated by Google
Um cálculo da carga atual do barramento can foi necessário para a simulação. Ao conectar através do
hardware Kvaser, a carga do barramento e outras informações eram recebidas dele por meio de um simples
comando. Esta informação não existia ao se conectar à simulação. Portanto, era necessário calcular isso no
cliente. A fórmula utilizada para o cálculo da carga do ônibus foi:
ÿ8
O preenchimento de bits teve que ser estimado, pois o acesso à mensagem CAN completa conforme
enviada no barramento CAN não era possível no software cliente. O número máximo de bits de material
que uma mensagem CAN pode conter é [21
17 (32)
Machine Translated by Google
[21]:
82ÿ
Como essa foi a estimativa do pior caso, a fórmula usada no cliente dividiu por 2 para obter uma estimativa mais
média. A estimativa foi calculada usando a seguinte fórmula:
82ÿ
2
Um timer que disparou a cada segundo foi usado para disparar o cálculo da carga do barramento. Ao
comparar a carga de barramento calculada com a carga de barramento recebida do hardware Kvaser, a
diferença geralmente fica abaixo de 1%, em casos raros acima de 2%. Isso foi considerado bom o suficiente.
3.6.1 D-Bus
D-Bus é um protocolo desenvolvido para permitir a comunicação entre processos. Ele é construído como um
sistema de barramento de mensagens com um modelo de publicação-assinatura. Isso significa que um processo
pode publicar uma mensagem em um barramento de mensagens e vários outros processos podem se
inscrever nele e receber a mensagem. Ele também possui comunicação direta um-para-um por meio de
chamadas de procedimento remoto (RPC). Este modo é mais simples e rápido, pois pula todo o sistema de
barramento de mensagens. O D-Bus é usado principalmente no Linux, mas existem implementações para
quase todas as outras plataformas, incluindo Windows. Existem ligações para muitos frameworks e
linguagens, incluindo Qt e C++. [11, 12]
18 (32)
Machine Translated by Google
comunicação se tiver alguma forma de notificar os clientes quando novos dados chegarem. A maioria
das implementações de RDBMS tem suporte embutido para isso. [14]
3.6.4 Memória
compartilhada A memória compartilhada é um método de comunicação entre processos compatível com
Windows, Linux e outros sistemas operacionais. A memória compartilhada é um segmento físico ou virtual
de memória que um processo alocou. Outros processos podem mapear para o mesmo segmento de
memória, permitindo assim a comunicação entre processos, escrevendo e lendo no mesmo segmento de
memória. [15]
3.6.6 Análise
Todas as opções listadas eram viáveis, algumas mais do que outras.
D-Bus
• Bom suporte em muitos sistemas operacionais • Qt
tem suporte embutido para ele • Leve
• Fácil de
implementar no RCS
TCP
• Bom suporte em muitos sistemas operacionais • Qt
tem suporte embutido para ele • RCS
tem suporte embutido para ele •
Capacidade de se conectar facilmente pela rede
• Boa escalabilidade
RDBMS •
Boa escalabilidade •
Fornece uma maneira fácil de salvar os
dados • Dependendo de qual implementação, o suporte para diferentes plataformas difere •
Demorado para implementar no RCS
Memória
compartilhada • Muitas plataformas suportam, mas as implementações
diferem • Baixa escalabilidade [15]
Canal
nomeado • Muitas plataformas suportam, mas as implementações
diferem • Fácil de implementar no RCS
19 (32)
Machine Translated by Google
No final, o TCP foi escolhido como meio para facilitar as comunicações entre processos.
As razões para escolher o TCP foram as seguintes: •
Compatibilidade entre plataformas
Muitas outras opções dependem do sistema operacional, enquanto o TCP é o mesmo em todas as
plataformas
• Tecnologia comprovada
Um servidor TCP foi implementado no coletor de dados e um cliente TCP foi implementado no lado do
cliente.
Para se conectar ao barramento CAN simulado e obter os dados necessários, foi usado o código
existente da implementação do sistema básico da Atlas Copco. Foi criado um novo programa que usou
um exemplo existente da Atlas Copco como referência. O novo programa foi escrito usando as bibliotecas
de desenvolvimento da Atlas Copco, o que significava que o programa poderia ser executado diretamente
no sistema RCS. Uma vez estabelecida a conexão com o barramento CAN, o próximo passo foi recuperar
os dados dele. Isso foi feito usando um processo encadeado que lia os dados do barramento CAN e os
colocava em uma fila onde poderia ser facilmente usado por outras partes do programa. Para começar, os
dados foram coletados e gravados em um arquivo de log que foi comparado ao arquivo de log criado
pelo programa de exemplo para garantir que os dados recebidos estivessem completos e nenhuma
mensagem fosse perdida. Esta parte do programa foi então estendida com um servidor TCP que esperou
por uma conexão do cliente que fazia parte da implementação da GUI. Quando uma conexão foi
estabelecida, o servidor começou a recuperar as mensagens da fila e começou a enviá-las ao cliente. O
cliente recebeu as mensagens e as adicionou ao modelo de dados. O caminho de uma mensagem CAN
da simulação RCS para a GUI é ilustrado na Fig. 7.
20 (32)
Machine Translated by Google
Um módulo de E/S é a interface física para atuadores e sensores em uma máquina Atlas Copco.
Um módulo de E/S consiste em entradas digitais, entradas analógicas, saídas PWM (modulação por largura de
pulso) controladas por corrente, saídas digitais e uma interface de encoder. O módulo de E/S era um dos
21 (32)
Machine Translated by Google
três módulos que o programa deve ser capaz de analisar mais profundamente do que os outros dados que estão
sendo enviados na rede de barramento CAN.
Para poder analisar os dados pertencentes aos módulos de E/S na rede CAN bus foi criada uma classe de
módulo de E/S. Esta classe continha funções para analisar e analisar quadros de dados CAN que foram
enviados ou recebidos por um módulo de E/S. Também armazenava todas as mensagens que foram
enviadas ou recebidas por um determinado módulo de E/S. Esta classe foi desenvolvida com o uso da
especificação do módulo de E/S da Atlas Copco que continha as informações necessárias para poder criar
uma classe de módulo de E/S que pudesse ser vista como uma representação de software do hardware.
Se o programa estava conectado à máquina quando foi iniciado e foi capaz de pegar as mensagens de inicialização
do RCS para o módulo de E/S, a classe também continha informações sobre como um módulo de E/S
específico foi configurado. Esta informação só pode ser recuperada no início de uma máquina, portanto,
se o programa estiver conectado a uma máquina já em execução, a configuração do módulo não poderá
ser lida. A diferença que isso fazia no programa era que se a inicialização fosse lida então o programa tinha a
informação para saber quais portas estavam habilitadas no módulo de E/S e em que modo elas estavam. Caso
contrário o programa teria apenas que mostrar todas as portas e não sabia em que modo as portas estavam.
Não havia como contornar esse problema, portanto, se os dados de configuração fossem necessários, era
necessário reiniciar a máquina.
Quando faltavam algumas semanas para o projeto, uma reunião foi realizada e, após uma discussão
com o supervisor, foi decidido que as classes de decodificador e resolvedor deveriam ser excluídas. A principal
razão para esta decisão foi que o módulo de E/S deveria ser priorizado e finalizado antes de trabalhar no
decodificador e no resolvedor. O tempo não era suficiente para criar todas as classes e a classe do módulo I/
O era a mais necessária, então o foco foi mudado para criar apenas uma classe e criá-la de forma que pudesse
ser usada como modelo para as outras classes . A classe do módulo de E/S era a mais complicada das três,
o que a tornaria um modelo ideal para os outros módulos menos complicados.
22 (32)
Machine Translated by Google
4 Resultado
Os resultados do projeto são discutidos neste capítulo, começando pelo desempenho da ferramenta
que foi desenvolvida para o projeto. O uso da ferramenta também é descrito em detalhes.
4.1 Desempenho
No início, uma grande preocupação era que o programa fosse capaz de coletar uma grande
quantidade de dados em um curto período de tempo e exibir esses dados ao usuário em tempo hábil.
A máquina à qual o programa estava conectado enviava cerca de 800-900 mensagens por segundo com
20% de carga de barramento e outras máquinas da Atlas Copco tinham uma utilização muito maior do
barramento CAN, o que significava muito mais dados para manipular por segundo. O programa recebeu
todas as mensagens sem nenhum problema quando conectado ao hardware real. Também não houve
problema em receber mensagens por TCP da simulação e o período de tempo desde que a mensagem
foi enviada do servidor até quando o cliente a recebeu foi tão pequeno que não foi perceptível, portanto,
a escalabilidade e a latência ao usar o TCP eram mais do que adequado. A tarefa mais difícil para o
programa era gravar todos os dados na GUI, isso tinha que ser feito por um cronômetro para garantir que
o programa tivesse o tempo necessário para atualizar a GUI e mostrar os dados ao usuário. Quando a
filtragem foi adicionada, o programa pode ficar bastante lento quando muitos dados foram coletados e os
parâmetros do filtro foram alterados. No final, porém, o desempenho foi adequado para o uso
normal do programa.
4.3 Uso No
final, o programa se parece com a Fig. 10, nós movemos a caixa de informações para o canto inferior
esquerdo para abrir espaço para a visualização do módulo. Em vez de ter uma única janela para ambas
as visualizações, decidimos que teríamos ambas as visualizações na mesma janela. Isso tornou o
programa mais informativo, o que é o mais importante em um programa desse tipo.
23 (32)
Machine Translated by Google
Para se conectar ao Simulador RCS o usuário pressiona o botão “Simulação”. Em seguida, uma nova caixa
de diálogo é mostrada ao usuário na qual o usuário insere o endereço e a porta para se conectar.
Pressionando o botão “OK” com os valores corretos de endereço e porta o programa tenta se
conectar ao simulador, conforme a Fig. 11.
Para se conectar ao hardware Kvaser, o usuário pressiona o botão “Kvaser”. Em seguida, uma nova caixa
de diálogo é mostrada ao usuário, na qual o usuário escolhe o hardware Kvaser e o canal ao qual se
conectar, conforme mostrado na Fig. 12. Feito isso, o programa tenta se conectar ao hardware Kvaser
escolhido. Se nenhum hardware estiver conectado ao computador, apenas os canais virtuais do Kvaser
serão mostrados na caixa de diálogo.
24 (32)
Machine Translated by Google
Para abrir um arquivo de log o usuário pressiona “Arquivo”, “Abrir arquivo de log” e qual tipo de arquivo de log abrir,
conforme mostrado na Fig. 13. Em seguida, uma caixa de diálogo é mostrada ao usuário onde o usuário escolhe qual
arquivo abrir .
25 (32)
Machine Translated by Google
5 Discussão Neste
capítulo são discutidos os resultados do projeto, se todos os requisitos foram atendidos
e se todas as metas dos objetivos do curso foram cumpridas. Também é discutido o
futuro do projeto e o que pode ser melhorado.
5.1.2 Aspectos de
segurança Muitos perigos estão presentes quando se trabalha em uma mina, incluindo, mas não
limitado a, explosões, queda de pedras soltas, incêndios e mau funcionamento do equipamento. Ao
desenvolver sistemas autônomos que podem realizar as tarefas perigosas em uma mina sem ter
um humano por perto, os perigos para as vidas humanas são minimizados. Muitas empresas
desenvolveram sistemas para automatizar tarefas em minas e a Atlas Copco desenvolveu um
sistema para localização e roteamento em minas. Este sistema pode guiar o veículo Load-Haul-Dump
(LHD) ao redor da mina. O veículo LHD é conduzido primeiro ao longo da rota pré-determinada onde
os dados sobre a rota são coletados. Ele pode então dirigir automaticamente por essa rota sem a
necessidade de controle humano. Há também um sistema de tele-remoto que permite que o
LHD seja controlado remotamente por um operador com a ajuda de câmeras montadas no veículo.
O operador não precisa estar próximo ao veículo, o que minimiza os perigos para o operador e,
como o operador geralmente não precisa dirigir o veículo e apenas auxiliá-lo quando estiver carregando
ou descarregando, o operador pode se encarregar de mais mais de um veículo LHD de uma só vez,
aumentando a produtividade. Ambos os tipos de automação levam ao fato de que menos pessoas
precisam estar nas minas realizando tarefas perigosas e isso levará a menos mortes e ferimentos e a uma maior produt
26 (32)
Machine Translated by Google
Conseguimos cumprir os requisitos priorizados para o projeto. Criamos um aplicativo de teste usando a
Application Programming Interface (API) para a família de produtos USB CAN da Kvaser.
Criamos uma classe para o módulo de Entrada/Saída (I/O) usado no RCS. Esta classe foi criada de forma
que seja relativamente fácil implementar outros módulos RCS. Esta classe é usada na conversão de
mensagens CAN em tabelas de E/S RCS e listas de sinais. Esta tradução pode ser vista na visualização do
módulo do programa.
• Visualização do Ônibus
• Visualização do módulo
• Estatísticas de ônibus
Essas três partes da GUI são todas visíveis assim que o programa é iniciado, o que dá ao usuário uma boa
representação dos dados disponíveis sem ter que usar botões ou menus para alternar entre as diferentes
visualizações. As mensagens CAN podem ser visualizadas em tempo real na visualização do barramento. Se
a mensagem for enviada ou recebida por um módulo de E/S, mais informações podem ser obtidas
selecionando a mensagem na visualização do barramento. Essas informações extras são mostradas ao
usuário na caixa de informações abaixo da visualização do barramento. Criamos uma maneira de selecionar
e visualizar dados de um nó no barramento CAN, tanto entradas quanto saídas, filtrando a exibição do
barramento no número do módulo para o nó específico. Também é possível filtrar uma mensagem específica
ou um código de função CAN específico.
Os sinais de e para o módulo de E/S podem ser monitorados na visualização do módulo e são atualizados
em tempo real. Eles são mostrados como valores analógicos/digitais e físicos.
27 (32)
Machine Translated by Google
É possível monitorar dois barramentos CAN na mesma visualização conectando dois canais em uma interface Kvaser
USBcan a diferentes barramentos CAN. Não há limite no software para a quantidade de barramentos CAN que
podem ser monitorados.
Os requisitos não priorizados que não foram concluídos foram: • Criar turmas para
cada um dos seguintes tipos de módulo:
- Decodificador
- Resolver
Como mencionado anteriormente, não criamos essas classes ausentes porque foi decidido que priorizaríamos a classe
do módulo de E/S para fazê-la funcionar perfeitamente e poder usá-la como modelo para os outros tipos de módulo,
em vez de apenas apressá-la e terminando com todas as três classes de qualidade inferior.
Achamos que poderíamos ter planejado melhor o projeto, assim teríamos tempo para cumprir todos os requisitos do
projeto. Outra coisa que poderíamos ter feito melhor seria definir os requisitos de maneira mais realista, por exemplo,
ter quatro requisitos rígidos e o restante como requisitos flexíveis. Ao definir todos os requisitos como rígidos, não
havia espaço para erros.
A escolha do framework para a GUI pode ter contribuído para o fato de não atendermos a todos os requisitos. Não
havíamos trabalhado com o Qt antes, então gastamos muito tempo aprendendo como ele funcionava. Se tivéssemos
escolhido um framework com o qual estivéssemos mais familiarizados, por exemplo .NET, teríamos mais
tempo para focar no projeto em questão. Por outro lado, o Qt é um ótimo framework, é fácil de trabalhar depois que
você passa dos primeiros passos de aprendizado e ainda parece a escolha certa para este projeto.
No futuro, o programa RCS CAN Tool pode ser modificado para ser ainda melhor. Algumas esperanças futuras que
foram discutidas com nosso supervisor são:
• Para poder ver a iniciação em uma nova janela, isso para descartar iniciação errada em
caso de erro.
• Para ver se todos os dados são recebidos a tempo. Para ser capaz de escolher o tempo sozinho.
• Para poder salvar a configuração em arquivo, isso porque você pode ter diferentes configurações em
diferentes máquinas.
• Para adicionar funcionalidade para barramento CAN de acordo com o padrão SAE J1939
• Ser capaz de enviar mensagens. Poder escolher a ordem das mensagens a enviar.
Se essas coisas forem implementadas, o programa será mais completo e, portanto, um produto melhor. Se isso for
feito, o programa começará a se tornar cada vez mais útil para os funcionários da Atlas Copco e, finalmente,
todo desenvolvedor poderá ter o RCS CAN Tool em seu computador, se desejar.
28 (32)
Machine Translated by Google
29 (32)
Machine Translated by Google
6 Referências [1]
Página inicial da Atlas Copco
URL obtido em
2013-06-10: http://www.atlascopco.se
[10] Wei Wu, "Bancos de dados multiparâmetros de acesso remoto e layout automático e
análise conjunta por meio da estrutura de aplicativo de plataforma cruzada QT," Computing in Cardiology,
2011, vol., no., pp.585, 588, 18-21 de setembro de 2011 URL: http://
ieeexplore.ieee.org.db .ub.oru.se/stamp/stamp.jsp?tp=&arnumber=6164633&isnu
mber=6164486
30 (32)
Machine Translated by Google
[12] JÄRVINEN, R., et al. Plataforma de mensagens MICS: arquitetura, design e roteamento. In:
CONFERÊNCIA DE COMUNICAÇÕES MILITAR, 2010-MILCOM 2010. IEEE, 2010. p.
1893-1898.
URL:
http://ieeexplore.ieee.org.db.ub.oru.se/stamp/stamp.jsp?tp=&arnumber=5680396&isnu
mber=5679517
[14] Janssen, C.; Pearce, M.; Kollipara, S., "Appbus: fornecendo memória de curto prazo para
dispositivos móveis," Consumer Communications and Networking Conference, 2006.
CCNC 2006. 3rd IEEE , vol.2, no., pp.1078,1082, 8-10 Jan. 2006
2013-05-02: http://msdn.microsoft.com/library/windows/desktop/aa365590%28v=vs.85%29.aspx
[19] Hanxing C, Jun T. Pesquisa sobre a rede de área do controlador. Em: Anais - 2009
Conferência Internacional sobre Redes e Sociedade Digital, ICNDS 2009; 20092009. p. 251-4
URL:
http://
ieeexplore.ieee.org.db.ub.oru.se/stamp/stamp.jsp?tp=&arnumber=5116731
[20] Farsi, M.; Ratcliff, K.; Barbosa, M., "Uma visão geral da controller area network,"
Computing & Control Engineering Journal, vol.10, no.3, pp.113,120, junho de 1999 URL:
http://
ieeexplore.ieee.org.db.ub.oru.se/stamp/stamp.jsp?tp=&arnumber= 788104&isnu
mber=17068
31 (32)
Machine Translated by Google
[21] Cena, G.; Bertolotti, IC; Tingting Hu; Valenzano, A., "Comparação de desempenho de mecanismos
para reduzir jitters de preenchimento de bits em redes de área de controlador," Emerging
Technologies & Factory Automation (ETFA), 2012 IEEE 17th Conference on , vol., no., pp.1,8,
17- 21 de setembro de 2012
URL: http://ieeexplore.ieee.org.db.ub.oru.se/stamp/stamp.jsp?tp=&arnumber=648955
9&isnumber=6489522
[24] Farsi, M.; Ratcliff, K.; Barbosa, M., "Uma introdução ao CANopen," Computing & Control
Engineering Journal, vol.10, no.4, pp.161,168, ago. 1999.
URL: http://ieeexplore.ieee.org.db.ub.oru.se/stamp/stamp.jsp?tp=&arnumber=796056
&isnumber=17263
[25] Camada de Aplicação CANopen e Perfil de Comunicação DS-301, v4.01, CAN in Automation eV,
junho de 2000.
URL obtido em
2013-04-15: http://www.can-cia.org/index.php?id=specifications
[30] Larsson, J., Operação não tripulada de veículos load-haul-dump em ambientes de mineração, [Tese].
Örebro: Universidade de Örebro; 2011. Örebro Studies in Technology, 51.
URL: http://urn.kb.se/resolve?urn=urn:nbn:se:oru:diva-22264
32 (32)
Machine Translated by Google
1. Conecte-se à máquina ou simulador com o qual deseja executar o programa 2. O usuário inicia
o computador 3. O usuário inicia o
programa clicando duas vezes no símbolo RCS CAN Tool 4. A visualização principal é mostrada
ativo e envia mensagens para o banco de dados que responde 6. Uma lista de mensagens CAN é mostrada
% de carga do ônibus
quadros de erro
Pré-requisitos: RCS CAN Tool está monitorando uma fonte de dados e há dados na tela
Sair: o usuário obtém uma lista de quadros de erro
Atores: Usuário, RCS CAN Tool, PC
2 (3)
Machine Translated by Google
Pré-requisitos: RCS CAN Tool está monitorando uma fonte de dados e há dados na tela
Sair: os dados foram registrados no arquivo
Atores: Usuário, RCS CAN Tool, PC
Sincronização/sincronização
Pré-requisitos: RCS CAN Tool está monitorando uma fonte de dados e há dados na tela
Sair: o usuário vê se a mensagem foi enviada e recebida a tempo
Atores: Usuário, RCS CAN Tool, PC
3 (3)