Espionando caminhões



Por mais banal que pareça, no século XXI, os caminhões não apenas transportam mercadorias do ponto A ao ponto B, mas são sistemas bastante complexos de componentes conectados por uma rede. A coleta de informações desses componentes, complementada pelos recursos dos dispositivos móveis modernos que podem determinar sua localização através do sistema GPS e ter comunicações móveis, revela grandes oportunidades para otimizar o transporte, o gerenciamento de frotas e, de alguma forma, o comportamento do motorista. Tudo isso é chamado de telemática de transporte, ao qual este artigo é dedicado.

Tenho que avisar que não uso o idioma russo há 25 anos com muita frequência; portanto, não se surpreenda se a estrutura da frase ou as palavras usadas parecerem estranhas.

Eu já trabalhei por um total de 13 anos na área de telemática de transporte, 5 anos ajudando a monitorar os coletores de lixo, 8 anos em caminhões de combustível. Essas duas opções tinham muito em comum, mas também muitas coisas diferentes.

Primeiro, um pouco sobre o geral


A primeira e principal função é o rastreamento por GPS. Você pode ver para onde o caminhão estava passando, determinar onde perdeu sua posição e onde foi encontrado novamente, em tempo quase real.

Se não houver conexão com o servidor, a faixa é gravada na memória do computador de bordo. Na ausência de recepção GPS, é possível o monitoramento indireto através das posições das torres GSM. Ao mesmo tempo, tivemos uma parceria com o OpenCellId - um banco de dados aberto da localização de estações base GSM (mais sobre isso foi escrito aqui ), onde eu carregava cerca de um milhão de coordenadas toda semana, mas infelizmente a parceria foi fechada quando o OpenCellId foi vendido a uma empresa indiana que virou o serviço pago até por assistentes - e, no entanto, nosso sistema único forneceu cerca de um quarto de todas as coordenadas recebidas.

Ao ficar offline, os dados não são perdidos, são simplesmente gravados com menos frequência para que a memória interna não fique muito cheia. A quantidade de dados da pista também depende da velocidade com que o caminhão viaja. Geralmente, a frequência da coleta de dados aumenta proporcionalmente à velocidade, para que a pista no mapa pareça mais suave, mas alguns clientes não estão interessados ​​nos dados em que o carro está viajando em alta velocidade - nesses casos, o carro geralmente está localizado na estrada, onde nada interessante acontece de qualquer maneira .

A segunda função principal, que é frequentemente implementada separadamente da primeira - tanto que é usado ferro adicional para isso - é trabalhar diretamente com o motorista. A tela do tablet exibe uma lista de tarefas para o motorista com os endereços dos clientes a quem ele deve ir. Normalmente, o driver é obrigado a selecionar uma tarefa da lista, "iniciar" esta tarefa e, ao executar a tarefa "concluir", é possível inserir dados adicionais.
Assim, no escritório, em tempo real, é possível ver com o que o motorista está especificamente ocupado quando começou a trabalhar, quando o trabalho foi feito. Graças a essa oportunidade, será possível calcular no escritório quanto o motorista realmente deu certo e quanto essa viagem em particular custou à empresa. Ao mesmo tempo, todas as informações necessárias, que antes estavam apenas no papel, vão imediata e automaticamente aos sistemas de computador. Para esse trabalho adicional, o driver recebe várias comodidades, como: ativar automaticamente a navegação para o destino ou a capacidade de imprimir imediatamente todos os papéis necessários, em vez de preencher formulários.

Em seguida, vem o monitoramento do FMS e vários sensores. Os caminhões modernos têm um sistema de controle de motor digital bastante sofisticado e, para facilitar a coleta de informações para esses computadores de bordo, sete fabricantes europeus de caminhões criaram juntos o formato FMS (Fleet Management System), uma interface padronizada para conectar (somente leitura) ao sistema de controle de motor via CAN-Bus, no qual em tempo real os principais parâmetros do caminhão estão presentes, como velocidade, quilometragem, consumo de combustível em um determinado formato padrão.

Basicamente, essas informações servem para verificar a qualidade do trabalho dos motoristas - como eles dirigem economicamente, mas é bem possível capturar ladrões. Por exemplo, se o nível de combustível no tanque cair mais rápido que o normal, especialmente se o caminhão estiver parado nesse momento, a situação será inequívoca.

Além disso, algumas informações são provenientes de um tacógrafo digital, um instrumento obrigatório na União Europeia que registra os períodos de trabalho dos motoristas e a velocidade do veículo. Assim, sem conectar ao tacógrafo, você pode descobrir diretamente quando um motorista em particular ficou atrás do volante ou terminou o trabalho. Normalmente, diferentes sensores são entradas digitais, para que você possa verificar onde está incluído (faróis, cinto de segurança etc.). Um exemplo básico desse tipo de sensor é o computador de bordo que monitora o freio de mão e, somente se o freio estiver ativado, ele pára de bloquear o telefone - muitas empresas que transportam mercadorias perigosas proíbem que os motoristas falem ao telefone enquanto dirigem.

Como os modems GSM são usados ​​em dispositivos telemáticos, significa que, em princípio, eles podem ser usados ​​como telefones celulares, então o motorista não precisará fornecer um meio de comunicação. Ao mesmo tempo, você pode controlar como essa ferramenta de comunicação será usada - a própria trava do telefone com um freio de mão, que escrevi acima, trava do telefone fora da rede doméstica, permissão para ligar apenas para determinados números.

O SMS também é recebido e enviado, e é por isso que às vezes você precisa ouvir as reclamações dos motoristas que costumavam estar perto da fronteira - as tarifas aumentam constantemente, o que levou a um dilema - sem uma lista negra adicional, você só pode desativar completamente a recepção do SMS (simplesmente excluindo a tabela do SMS) banco de dados), mas as mensagens não serão recebidas.

Há outro recurso útil associado ao uso de um modem GSM - quando um sinal é recebido de um gravador de dados de eventos (EDR), o computador de bordo pode discar automaticamente um número de telefone específico.

Agora um pouco sobre as diferenças


Para caminhões de lixo, o principal é para onde ir e quanto pegar. Consequentemente, uma tarefa bastante importante foi conectar as balanças embutidas no elevador dos contêineres de lixo e pesá-las automaticamente ao levantar. Para esse peso, os clientes corporativos são cobrados pelo trabalho.

Os motoristas, por sua vez, podem receber um bônus pelo trabalho rápido; portanto, você precisa saber quanto tempo levou para agitar o contêiner e a rapidez com que o contêiner foi retirado depois que o caminhão de lixo chegou ao seu destino.

Para isso, foi necessário conectar o joystick de controle do elevador a uma entrada digital, que nem sempre foi tão simples quanto parece na fase de planejamento. Uma vez, um técnico mergulhou na eletricidade de um caminhão por tanto tempo que o motorista se cansou de esperar, e ele foi para casa, e o técnico e eu ficamos. Tudo está conectado, parece funcionar, e o sinal continua, mas sem um driver, não poderíamos fazer uma verificação completa.

Na manhã seguinte, estávamos esperando uma grande separação do cliente - o técnico fez algo errado e o elevador elevou o contêiner apenas metade da altura necessária. Outra vez, houve um problema com a eletricidade do caminhão, da qual um dos fusíveis teve que ser retirado. Depois disso, o caminhão ignorou completamente a chave de ignição e não desligou, e ficou ocioso até o diesel no tanque acabar.

Como existem muitos fabricantes de complementos para caminhões de lixo, há um número correspondentemente grande de protocolos diferentes para as balanças embutidas no elevador, e para cada um deles tivemos que escrever funções separadas. Em algumas escalas, não havia nenhuma interface para telemática, a única saída de informação era para sua impressora especial via RS232. Aqui já tivemos que soldar o cabo Y e retirar as informações necessárias do fluxo de dados da impressora.


Verificando pesos

Havia também a tarefa de treinar novos motoristas que ainda não conhecem a rota. Isso foi feito da seguinte maneira: um motorista experiente viaja pela rota mais ideal, sua pista de GPS é gravada, otimizada manualmente para o número de pontos e depois enviada ao sistema de navegação para iniciantes.

Naquele momento, os navegadores não tinham a oportunidade de baixar as faixas gravadas, então tivemos que definir cada ponto "manualmente", monitorar o sistema de navegação e, quando restavam apenas alguns metros até esse ponto, substituí-lo pelo próximo, para que o navegador não tivesse tempo de anunciar alegremente o alcance da meta. Mas era possível pendurar uma janela com informações sobre o navegador, usado para comentários nos quais o motorista podia ver as características do alvo - qual é a maneira mais conveniente de ligar, quem pedir documentos etc.

Existem outros requisitos para caminhões de combustível, a ênfase está mais no fato de que os motoristas têm uma tendência ruim a roubar combustível. E se na Europa Ocidental é mais provável o caso dos solitários, no Leste o roubo de gasolina é realizado por gangues inteiras que enviam seus motoristas para empresas de transporte.

É impossível atravessar esse negócio, então a maioria das funções anti-roubo é projetada para capturar ladrões na cena do crime. A principal ferramenta para isso são as cercas geográficas. De uma maneira simples - desenhe círculos no mapa em torno de locais onde certas ações são permitidas. Se essas ações ocorrerem fora do local especificado, uma notificação será enviada ao administrador.

Em seguida, vem o monitoramento dessas mesmas ações, o que pode ser muito. São divulgadas as abas do sistema de drenagem do tanque, o dreno de líquido do tanque, um cinto de segurança aberto e até uma parada por mais de 5 minutos. O monitoramento do sistema de drenagem geralmente captura os motoristas que desejam lucrar às custas de outras pessoas: por vários dias, são exibidas notificações de que o combustível está drenando da cerca geográfica. A pista mostra que o motorista no local onde passou as ameixas não deveria estar. No dia seguinte, a polícia estava esperando por ele lá.

Outra opção é um tanque de gasolina, que emite um sinal contínuo quando fechado. Se o sinal desaparecer - o tanque de gasolina está aberto ou o cabo de sinal está cortado - significa que alguém está lentamente querendo drenar o combustível enquanto o motorista está dormindo. O sistema dispara um sinal sonoro, o motorista acorda e dirige os ladrões com a ajuda de tal mãe.

Sobre a técnica utilizada



Aplicom f-series

Quando comecei meu trabalho com telemática de transporte em 2003, praticamente não havia dispositivos relativamente universais adequados no mercado para os quais eu pudesse escrever meus programas. A escolha naquele momento, em geral, limitou-se às séries Aplicom C / F e Owasys Owa2x.

O primeiro dispositivo foi fabricado por nativos da Nokia, trabalhados em seu próprio sistema operacional (OS95A), que era uma variante do sistema operacional para telefones antigos da Nokia, mesmo aqueles que tinham duas linhas de tela de texto. O desenvolvimento foi realizado no C99 pelo compilador CodeWarrior ARM e foi bastante inconveniente devido ao compilador desatualizado e ao sistema operacional bastante primitivo, que foi realmente compilado com o programa que escrevi para o dispositivo.

O segundo dispositivo foi feito por imigrantes da filial espanhola da Ericsson, tinha um processador um pouco mais rápido, mas uma porta RS232 a menos e funcionava sob o Linux bastante antigo. O desenvolvimento foi realizado pelo mesmo antigo GCC (2.95.3), com todas as conseqüências resultantes disso (erros, funções de linguagem inoperantes, francamente péssimo suporte para C ++ e baixa otimização de código).

A Aplicom posteriormente portou o Linux para suas máquinas, mas já era tarde demais. A maior desvantagem dos dispositivos Aplicom era a falta de um sistema de arquivos, era necessário gravar na memória Flash mais ou menos diretamente nas células e, de fato, o fabricante geralmente não recomendava a gravação nessa memória.

Por outro lado, o Owa2x tinha uma grande vantagem - Linux - e um grande número de deficiências - apenas duas portas RS232, o que dificultava a depuração no console, o controlador CAN-Bus de buggy, que pendia regularmente, usando uma porta RS232 interna para GPS e para o GSM usando um multiplexador, que causou o congelamento do GPS quando o GSM foi iniciado ou parado, um sistema de arquivos que era descompactado em um disco RAM a cada inicialização, o que tornava impossível substituir permanentemente qualquer arquivo do sistema e, por sobremesa, doca entatsiya, cujo uso foi menor do que a de papel higiênico.

Quando visitei o escritório do fabricante e mostrei a eles todos esses problemas (que eles não resolveram mais tarde, apenas dizendo que agora estão fabricando um novo hardware - Owa3x, no qual tudo ficará melhor), deixei a documentação da Aplikom para dar um exemplo (exemplo começou a demorar cerca de 6 anos, quando eles já estavam fazendo a próxima geração - Owa4x).


Piscando Owa2x

Quando o Owa3x saiu, a princípio fiquei muito feliz. Havia um compilador mais recente (GCC 4.3), um processador rápido, três portas RS232 e, finalmente, um slot para cartão microSD. Agora era possível colocar o programa em um cartão, para que mais tarde, se houver, pudesse simplesmente ser substituído. No entanto, eu me alegrei cedo.

Permaneceram erros de arquitetura, como um sistema de arquivos descompactado e o mesmo multiplexador para GPS e GSM, e o primeiro erro ficou mais sério - o firmware ficou muito maior e o modem continuou a suportar apenas GPRS, a versão com suporte UMTS era muito mais cara, e isso é 2011 ano.

As pessoas faziam ferro como costumavam fazer. Acontece que os cartões MicroSD estão sendo transmitidos se você os escrever regularmente. Eles vivem cerca de um ano, após o qual morrem, e o programa para de começar. No início, eles tentaram fazer várias seções no cartão, e uma - onde o programa é somente leitura. Não ajudou, e foi bastante contraproducente - o controlador da placa não foi projetado para uma perversão tão grande.

Agora, o programa está na memória interna do dispositivo e há apenas dados no cartão; portanto, se o cartão parar de funcionar, ele é simplesmente alterado. Eu não fiz isso antes, porque muitas vezes havia problemas com o sistema de arquivos da memória interna, os arquivos eram quebrados regularmente, que o fabricante acabou consertando com o firmware.


Owa3x

Dois anos atrás, eu decidi fazer uma refatoração séria e reescrever parte do programa, porque antes disso ele simplesmente adquiria sistematicamente todos os tipos de funções. Ao mesmo tempo, decidi me livrar da dependência do impulso, que inflou muito a fonte e o binário, e padronizamos a abordagem para resolver problemas, ou geralmente usamos a função de impulso, a função c ++ ou o clássico de C para obter o mesmo efeito.

Era mais fácil se livrar do impulso reescrevendo um programa para C ++ 11, que ao mesmo tempo simplificaria muitas outras coisas - que é apenas o intervalo baseado em iteradores de quilômetros.

Como se viu, o suporte ao C ++ 11 no GCC 4.3 é absolutamente distorcido, mesmo os programas mínimos usando STL não foram compilados. Houve uma resposta oficial do fabricante de que outro compilador neste hardware não é suportado, mas o 4.7.3 funciona oficialmente se você carregar o libstdc ++ correspondente, que mais ou menos funcionou, mas não era realista.

Então eu já tinha que atravessá-lo com um porco-espinho - peguei o GCC 4.8.3 (4.9 não funcionaria, eles mudaram algo na ABI), coloquei o libstdc ++ do meu GCC 4.3 nele e copiei o sistema, incluindo arquivos por sua vez, que continham erros , a partir daí, até começar a compilar. Curiosamente, todo esse design funcionou, e não é ruim.

Por algum tempo, a mistura resultante de bibliotecas e inclusões poderia até ser usada no clang, mas os binários não eram ótimos e havia mais erros - o clang às vezes compilava chamadas para algumas funções que a biblioteca antiga simplesmente não possuía, mas pelo menos dessa maneira houve erros estilísticos que o GCC perdoou.

Contos da Fogueira


  • Quando comecei a trabalhar neste campo, eu era um estudante-estagiário absolutamente verde. A empresa em que consegui um emprego acabou de vender o que era, em geral, uma apresentação em PowerPoint e fui imediatamente enviado a esse negócio.

    Aparentemente, meu novo empregador não levou tudo isso a sério, apesar do cliente ter que levar o programa em três meses, e o estagiário que começou a escrevê-lo antes de eu sair.

    Eu então não sabia programar em C, antes escrevi apenas programas para o Turbo Pascal, principalmente para bibliotecas de feeds. A linguagem C me atingiu terrivelmente - quantas oportunidades para se dar um tiro no pé!

    Depois de algum tempo, tudo começou, e o programa, embora tenha sido escrito de forma muito torta, funcionou, mas eu estava descaradamente atrasado. Naquele momento, tive a sorte de que naquele momento foi introduzido um novo sistema de pagamento de rodovias alemão, que em geral também possuía o mesmo monitoramento de veículos, e seu desenvolvedor TollCollect também estava muito atrasado, tornando-se motivo de chacota para todo o país. Nesse contexto, os clientes demoraram vários meses com entendimento.
  • Imagine que o computador de bordo morreu durante a atualização de um programa baixado via celular. Algo não deu certo, o computador parou de carregar. Não há nada a fazer, você precisa ir ao caminhão, instalar a atualização manualmente através da porta serial.
    Um representante do cliente me levou para a base onde ficava o caminhão, de onde ela tinha as chaves. , , , , . , . , , .
  • - , , . , , — , , , . , , , , , FIFO .
  • , , . , , — Renault Kerax, , .

    , 20 , - , , , . .
  • . , . , , - . , , .


Owa3x

Conclusão


— , — , , , — , .

. , / — RS232, CAN-Bus. , , , — .

, , , ( , ) .

hdablin .

Source: https://habr.com/ru/post/pt408243/


All Articles