
Bem-vindo à segunda parte do balé Marleson.
Tempo parcial.
No primeiro, falamos sobre como, em geral, a doença encontra no território da Federação Russa, hoje vamos discutir o que acontece quando você sobe muito sob a saia de Robert.
Vou inserir na citação para destacar - minhas mais profundas desculpas ao Khabravchanin que escreveu uma mensagem em meu post anterior sobre kawasaki e universais em São Petersburgo. Eu realmente sinto muito, e minha usabilidade não é uma desculpa para apertar o botão "reclamar" em vez do botão "responder". Isso é puramente meu descuido, e eu nem tive tempo de lembrar seu apelido para me desculpar. Se isso não incomoda você, bata na porta para que eu possa me desculpar pessoalmente. Tenho certeza de que só a modéstia virtuosa o impediu de dar esse passo, com o comentário “Que diabos!” De ontem.Bem, ainda não começamos - acumulei muitas informações heterogêneas. Haverá um post sobre como entrar na profissão, haverá programação de microcontroladores, haverá milagres na organização e gestão do processo de desenvolvimento, e assim por diante. Nesse sentido, os hubs, nos quais o material será publicado, irão flutuar para não entulhar as áreas temáticas com informações irrelevantes.
Agora vamos embora! (c) Yuri Gagarin.
O que estamos fazendo?
Como discutimos com você na primeira parte, Roberts é ideal em situações de "cavar daqui para almoçar", quando as operações são padronizadas e ele gira o mesmo programa em um loop.

Mas e se não for? O que acontece se precisarmos fazer um pequeno lote, cerca de 200 peças? Carregue o complexo por uma semana. E depois de uma semana - coloque outro produto lá. Só há uma saída - descobrir programas com alças, por meio do controle remoto. Eu destaquei a inconveniência desse rito sagrado no último artigo.
Vamos agravar. Mas e se - um produto?
Tome como exemplo o gentilmente fornecidoVakhramovexemplo com fresagem do casco do barco. Não é forte na construção naval (bem, exceto para soldagem de micropanéis, que na construção naval levam esse nome Gulliver apenas para zombaria - eles são tolos por vários metros e pesando centenas de kg), mas posso assumir a seguinte declaração de trabalho:
- Temos um casco de barco em algum modelo CAD.
- Temos um cubo de tamanho não figurativo feito de algo fresado.
- Queremos cutucar o botão e que o software crie mágica, e o próprio robô do cubo (ou paralelepípedo) fresou e verificou algo para nós.
Na verdade, o problema é simples para nós (isso não foi resolvido especificamente). Existe um modelo 3D, existe um blank e um robert no sistema de movimento. Precisamos criar um programa para ele na máquina, controlar sua implementação em tempo real, rodar o scanner e comparar a expectativa e a realidade, e polir algo, bem, voila.
Falaremos sobre programação, as nuances da análise 3D, o problema inverso da cinemática, a formação de programas de controle, sobre scanners e câmeras muito mais tarde. É claro que essa tarefa não é trivial, e nós, enxugando lágrimas de felicidade com a manga, mergulhamos no processo. Mas, como uma jovem absurda, Robert puxa orgulhosamente sua tromba e pergunta:
- Por que toda essa atenção a esses seus programas? Por que você só está fazendo algo aí? E quanto a mim? O que, eles me fizeram em vão?
Bem, ele lança um monte de recursos. Sobre o qual falaremos.
Singularidade
A primeira coisa que nos espera no meio de comunicação com Robert. O fato é que um programa para uma mão pode ser escrito em dois tipos principais de coordenadas: cartesianas e conjuntas. O primeiro é a posição XYZ e rotações em torno de cada um dos eixos. O segundo é uma indicação dos ângulos de instalação de cada um dos eixos em que a condição de colocação do tronco no espaço é satisfeita. Os primeiros são traduzidos para o segundo e vice-versa de forma bastante correta dentro do próprio controlador. É outra questão se você, acidentalmente decidindo que esta é definitivamente a mesma história, decidir trabalhar em cartesiano. Olá
Em geral, uma singularidade é um estado de espírito de um amigo de ferro, no qual a velocidade do motor ao longo de qualquer um dos eixos será superior à construtiva. Não está totalmente claro, vou tentar explicar.

Quando Robert move sua mão do ponto A para o ponto B, ele tem duas opções. Ou - defina a velocidade para todos os motores uniformemente. Nesse caso, a velocidade de cada motor em particular é igual ao ângulo de rotação necessário de um determinado eixo, dividido pelo tempo que leva para executar o movimento. Se este modo for selecionado, o robô, movendo-se entre os pontos, grava lindos arcos. É uma pena, mas no processo desse movimento ele não dirige em linha reta, mas da maneira que lhe convém. Como resultado, temos uma chance não ilusória de ir com um baú a um produto / paredes / outros como ele.
O movimento linear garante que ele dirija em linha reta. Mas, ao mesmo tempo, os motores precisam trabalhar em velocidades diferentes em intervalos de tempo diferentes. E se essa velocidade exceder aquela que os motores podem espremer fisicamente de sua alma sinuosa, o robô escreve "singularidade". E isso é tudo. O programa pára.
A situação é um pouco melhor nos casos em que as coordenadas são especificadas nas juntas em vez das cartesianas. Não entendo muito bem por que o controlador reage a pontos nas juntas de maneira um pouco diferente dos cartesianos - talvez isso seja devido à lógica de converter coordenadas em cantos. Mas em geral “talvez” é uma frase mágica em robótica, ajuda muito no trabalho e é usada como banana universal.
No entanto, mesmo o movimento linear entre pontos, que são escritos em cantos em vez de coordenadas, não é uma garantia de que isso obrigará o robô a segui-los. Fanuk fez uma instrução especial para isso, e Yaskawa geralmente declara que seus robôs não tocam a singularidade. Ambas as abordagens não funcionam. Com yaskava - se você pensar sobre a essência desse fenômeno - parece uma tentativa de contornar a física. O painel de controle realmente não mostra a inscrição "singularidade", mas ao mesmo tempo informa sobre a velocidade em algum eixo. Como isso é diferente de uma singularidade? Nada. Os fanooks têm uma equipe especial. WIRSJ, se não me falha a memória (foi há muito tempo e não funcionou, então esqueceram). Bem, sim. O robô continua a dirigir. Só no processo do movimento ele “amassa uma escova dura”, fazendo um movimento com as juntas das pontas, tão querido pelos programadores na hora de digitar - torcer o pulso.As consequências de acenar, se Robert tiver um cortador ou uma cabeça de laser na mão, são muito engraçadas, mas assustadoras. Portanto, o singular deve ser levado em consideração.
Ethernet

Digamos que descobrimos essa história. Digamos que descobrimos as nuances do registro do UP nos cantos das juntas no funuk e nos pulsos dependentes do modelo no Yaskawa. E agora precisamos enviar o programa para o robô. Você pode, é claro, levar um flash drive e um trabalhador que orgulhosamente o contaminará para Robert, mas estamos falando sobre automação em sua forma mais pura? Portanto, precisamos enviar um programa para um amigo de ferro. O acesso direto à memória está ausente como uma classe, mas nós, inquietos, ficamos com algo como FTP. Parece que está tudo bem, conecte-se e vá embora. Mas não. O robô só pode ser um cliente.
Na verdade, essa função é usada para pegar um UE do compartimento de arquivos da rede corporativa, carregá-lo no robô e executá-lo. Um robô é uma coisa muito moderna, porque a quantidade de memória que contém é calculada em megabytes, e os barões cubanos engolem lágrimas de desespero, contando o custo de 1 byte e olhando para a caixa de areia de seus filhos com pó branco. Com relação a isso - não funcionará armazenar mil UPs em Robert - a memória dirá "ah, tudo". E se tivermos muitos programas, tenha a gentileza de usar o controle remoto para entrar no arquivo mais solto e viva: apenas alguns minutos e ele, colocando o programa no Dial-up, relatará que está pronto para trabalhar.
Bem, bem, se o caos não pode ser derrotado, deve ser liderado. Obrigaremos Robert a enviar o arquivo via FTP. Por que ele deve especificar o nome do arquivo (bem, ou sempre colocar um arquivo com o mesmo nome na pasta), business. O que é necessário para isso? Escreva um programa para Robert, que em segundo plano aguardará o comando para carregar e carregar o programa. E então faça. Para fazer isso, Yaskawa nos oferece a compra de um ambiente de desenvolvimento e lidar com a sandbox interna que executa programas escritos em C. Em termos de sintaxe, isso é, claro, C, mas com as construções lá tudo não é tão óbvio e muito fraco (porque novo, até 2 anos) está documentado. E o suporte técnico está na Alemanha, e não há pressa em fornecer assistência.
Fanuc não foi longe aqui. Você também precisa comprar um ambiente de desenvolvimento, ao mesmo tempo em que compra uma opção. No funook, todo espirro é uma opção. A lista dessa alegria é realmente impressionante, e o custo pode causar alergia contábil ao amarelo. Mas - todos ganham como podem.
Escreveu, lançado. Até funciona. Vezes 5. E jura pela falta de memória, porque seus programas são longos - é foda. Três vezes. Estamos xingando, vamos terminar de escrever a exclusão. Debazhim. E em algum ponto, Robert para de responder pela rede. E tudo por quê? E porque ele mantém a conexão e não sabe como reconectar. O servidor ficou lento? Reinicie a comida. Coloque um ponto de interrupção? Dosviduli, reinicialização da comida. No decorrer de nosso trabalho, nunca encontramos uma maneira de ressuscitar a conexão do lado de Robert, e o clique sonoro do botão era um obituário para cada sessão de depuração.
Depurado, concluído e enxugado o suor do parto? Robert está em posição, o cubo está pronto para ser limado, o cortador está funcionando e afiando os dentes em antecipação? Hooray? Você tem certeza?
Precisão

As coordenadas do ponto são especificadas com uma precisão de 1 milésimo mm. Robert pode andar com uma precisão de cem metros quadrados. Hipoteticamente. Mais menos. Mas ainda assim impressionante! Mas o que é essa precisão?
Essa precisão é sobre repetibilidade. A recorrência da chegada de Robert a um ponto do espaço é de 100 mil vezes. Mas se de repente você decidir mover Robert em 1000 mm, então isso não será 1000 mm. Não na vida. Pelo menos no valor normal de Robert, e não no valor da asa da aeronave. Por quê?
O fato é que Robert tem um modelo virtual dentro dele. Ele não sabe como, como um terminador, considerar suas entranhas no visor dentro do crânio, mas usa esse conjunto de números que caracterizam o tamanho de cada junta para converter de cartesiano em juntas. Na verdade, para Robert, as coordenadas cartesianas são apenas um jogo desconhecido, cujo nome é "pura abstração". Tudo o que o driver dentro do controlador pode fazer é girar cada um dos 6 motores de Robert em um determinado ângulo. E para converter de cartesiano em articulações, são usadas as próprias constantes que denotam os tamanhos das articulações. E na fábrica, onde despejam, afiam e vêem os detalhes dos futuros opressores da raça humana, também existem tolerâncias. Agora imagine que tipo de erro o deslocamento do tamanho de uma das juntas, digamos, 0,5 mm pode trazer.
Então, verifica-se que o controlador considera tudo corretamente, mas é baseado em dados imprecisos. Na roda livre de um metro, pretendíamos um spread de 1,5 mm para um fanook completamente novo, nunca familiarizado com paredes. Tem até caras especiais que vêm e, por meio de passeios complexos com equipamentos de medição em toda a zona de acessibilidade, fazem ou tabelas de correção, ou - corrigem esses valores nos miúdos de Robert. Novamente, na aplicação clássica isso não é necessário - o operador trouxe o robô a vários pontos, verificou a precisão e pediu que ele repetisse isso pelos próximos 5 anos. Os erros não desempenham um papel aqui - o robô perde sua capacidade de crescer, não importa o quanto você despeje nele, imediatamente após sair da fábrica. E para dobrar a geometria de uma peça de ferro, ela precisa ser tãããão sacudida ... Acho que não vai conseguir funcionar a princípio depois de tais cargas. Mas precisamos dissoe esse problema tem que ser resolvido.
Comentários
... está completamente ausente. Se você quiser perguntar a Robert suas coordenadas atuais, a posição dos motores ou a linha do programa executável, o pássaro oblomingo chega e feliz começa a sugerir que seria bom continuar fumando manuais e aprender programação. É necessário - escreva.
Não me importo - mas parece que não quero receber um passaporte e as chaves do apartamento de Robert. Parece ser uma coisa padrão. Embora, em geral, eu possa não estar ciente da lógica por trás dessas restrições, que transformaram a Ethernet em uma ponte unilateral - é bem possível que isso esteja relacionado à segurança.
Eu decidi que sim

Outro
Além disso, não há um padrão claro - às vezes de -185 a +180 ele dirige corretamente, e às vezes de -165 a +175, ele pode decolar na direção errada. Por que essa otimização não está clara, mas o programa deve ser escrito inserindo um ponto no qual o eixo é definido como zero. E se, de acordo com a tecnologia do processo, você aumentou para ± 180, então some ± 90, caso contrário, ele explodirá novamente no caminho mais curto. Relevante para 4º e 6º eixos.
Xamanismo

Os administradores de sistemas têm um pandeiro? Eles são fracos! O motorista robótico não aparece diante da face do pedaço de ferro sem borrifá-lo com água benta, sem se pendurar nas pernas de galinhas e coelhos, sem colocar um crânio de búfalo na cabeça e sem soltar yaki shurikens de uma dezena de ferraduras.
Parei de ficar surpreso com a regra dos "sete problemas - uma reinicialização". Essa mudança já se tornou cara para mim, um cachorro. Não estou surpreso com as respostas “por quê” e “porque”. Mas algumas coisas continuam funcionando. Por exemplo, uma calibração com um sistema de rastreamento de solda, após o qual Robert pode começar a dirigir para o lado. Ou backups que não se expandem. Ou os comentários "próximo% CrapName% voou." Ou filetes de caminho nativo trabalhando de forma absolutamente aleatória. Isso se tornou a norma.
Em vez de uma conclusão
Não chamo para avaliar minhas palavras como lamentações. Tipo "ah, como é difícil viver com eles." Apesar de suas peculiaridades, esses animais muito engraçados trazem muita alegria. E romper os espinhos de funções mal documentadas e arrebatar milagres em coisas aparentemente padronizadas diz apenas uma coisa - ao desenvolver o Roberts, essas questões não receberam a devida atenção. E, no geral, o que seu uso diário depende funciona muito bem.
O surgimento de novas tecnologias inevitavelmente levará ao fato de que Roberts se tornará mais amigável com o desenvolvedor, e a dança atual com um pandeiro gradualmente se tornará uma coisa do passado. Eles mudam, no entanto, não tão rápido quanto gostaríamos. Em termos de conservadorismo, eles galopam à frente da evolução dos tubarões, mas não acompanham a velocidade das reformas do parlamento britânico. Você só precisa esperar e hoje - aprenda a contornar essas restrições irritantes e esquisitices fofas.
Na próxima vez, falaremos sobre o limiar de entrada na profissão e, em seguida, consideraremos os recursos de implementação de importação de modelos de CAD para .NET. Ou - as nuances da varredura de superfície. Todos - no exemplo de um barco de um cubo. Temos que cortar isso.