Machine Translated by Google
Script de programação Lua FR
Machine Translated by Google
EU
Catálogo
Catálogo
1 Visão geral ....................................................................................................................1
2 Fundamentos do script de programação Lua FR.............................................................1
2.1 Gramática básica.................................................................................................1
2.1.1 Anotações FR Lua...........................................................................................1
2.1.2 Palavras-chave FR Lua...................................................................................2
2.1.3 Variáveis.................................................................................................2
2.1.4 Tipos de Dados.............................................................................................3
2.1.5 Operadores..............................................................................................8
2.2 Estrutura de controle.............................................................................................11
2.2.1 Declarações condicionais.......................................................................11
2.2.2 Instruções de loop .............................................................................................12
2.2.3 Instruções de controle .............................................................................16
2.3 Funções............................................................................................................18
2.3.1 Definição e uso de funções FR Lua..........................................18
2.3.2 Funções e fechamentos anônimos...................................................18
2.3.3 Parâmetros de função.........................................................................20
2.3.4 Valor de retorno da função .....................................................................21
2.3.5 Funções como parâmetros e valores de retorno.......................................22
2.3.6 Funções Recursivas ............................................................................23
2.4 Sequência de caracteres..............................................................................................24
2.4.1 Definição de String ..............................................................................24
2.4.2 Caracteres de escape ............................................................................25
2.4.3 Operações de string.................................................................................25
2.5 Matrizes .............................................................................................................33
Machine Translated by Google
II Catálogo
2.5.1 Matriz unidimensional........................................................................34
1.5.2 Matriz multidimensional.......................................................................35
2.6 Tabela...................................................................................................................36
2.6.1 Uso básico da tabela............................................................................37
2.6.2 Funções de operação de tabela..............................................................37
2.7 Programa colaborativo ...................................................................................40
2.8 Operação de arquivo .............................................................................................42
2.8.1 Modo simples .......................................................................................42
2.8.2 Modo completo ................................................................................................44
2.9 Tratamento de erros ................................................................................................45
2.9.1 Erros de sintaxe .......................................................................................45
2.9.2 Erros de tempo de execução..............................................................................47
2.9.3 Tratamento de erros.....................................................................................49
2.10 Módulos.......................................................................................................................51
2.10.1 Criando Módulos..............................................................................................51
2.10.2 Chamada de Módulo .......................................................................................51
2.10.3 Caminho de pesquisa ....................................................................................................52
3 Funções predefinidas do script Lua FR..............................................................................................53
3.1 Instrução lógica ..........................................................................................53
3.1.1 Laço.....................................................................................................................53
3.1.2 Esperando ................................................................................................53
3.1.3 Pausa...................................................................................................56
3.1.4 Sub-rotinas.........................................................................................56
3.1.5 Variáveis..............................................................................................57
3.2 Comando de movimento ..........................................................................................58
3.2.1 Ponto a ponto ......................................................................................58
3.2.2 Linha Reta ........................................................................................60
Machine Translated by Google
III Catálogo
3.2.3 Arco ....................................................................................................................61
3.2.4 Círculo completo.................................................................................63
3.2.5 Espiral.................................................................................................65
3.2.6 Nova Espiral ...........................................................................................66
3.2.7 Espiral horizontal..............................................................................67
3.2.8 Spline...................................................................................................68
3.2.9 Nova spline.........................................................................................73
3.2.10 Balanço.................................................................................................76
3.2.11 Reprodução da Trajetória ...................................................................78
3.2.12 deslocamento de ponto........................................................................................78
3.2.13 Servo .................................................................................................79
3.2.14 Trajetória ..........................................................................................81
3.2.15 Trajetória J........................................................................................84
3.2.16 DMP...................................................................................................85
3.2.17 Conversão de peças de trabalho ......................................................................86
3.2.18 Conversão de ferramentas.................................................................................87
3.3 Instrução de controle .........................................................................................88
3.3.1 E/S digitais..............................................................................................88
3.3.2 E/S analógica...................................................................................91
3.3.3 E/S Virtual...................................................................................94
3.3.4 Esportes DO.............................................................................................96
3.3.5 Exercise AO..........................................................................................98
3.3.6 Expandindo IO..............................................................................................100
3.3.7 Sistema de Coordenadas............................................................................103
3.3.8 Comutação de modo.............................................................................103
3.3.9 Nível de colisão.............................................................................................104
Machine Translated by Google
4 Catálogo
3.3.10 Aceleração ....................................................................................104
3.4 Instrução periférica ..............................................................................................105
3.4.1 Garra..............................................................................................105
3.4.2 Pistola de pulverização.........................................................................................106
3.4.3 Eixo de expansão..............................................................................................107
3.4.4 Correia Transportadora..............................................................................................112
3.4.5 Equipamentos de moagem..........................................................................113
3.5 Instruções de soldagem.............................................................................................116
3.5.1 Soldagem .............................................................................................116
3.5.2 Rastreamento de arco.......................................................................................119
3.5.3 Rastreamento a laser.............................................................................................123
3.5.4 Gravação a laser.................................................................................126
3.5.5 Posicionamento do fio.................................................................................127
3.5.6 Ajuste de atitude ........................................................................129
3.6 Comando de Controle de Força ..............................................................................131
3.6.1 Conjunto de Controle de Força.............................................................................131
3.6.2 Registro de torque ..........................................................................137
3.7 Instrução de comunicação .........................................................................138
3.7.1 Modbus............................................................................................138
3.8 Instrução auxiliar .....................................................................................147
3.8.1 Roscas Auxiliares.............................................................................147
3.8.2 Chamada de Função......................................................................................148
3.8.3 Tabela de Pontos.........................................................................................149
Machine Translated by Google
Em Registro de revisão
Registro de revisão
Edição de data Descrição Autor
2024/09/30 V1.0 Primeira versão do Manual do Usuário JUSTO
Machine Translated by Google
1 / 152 Script de programação FRLua
1 Visão geral
Bem-vindo ao manual do usuário para scripts de programação para o FAIRINO
Robô colaborativo FR Lua. Este manual foi escrito com base na versão de software v3.7.4
e tem como objetivo fornecer aos usuários orientação abrangente sobre como programar com eficiência
Scripts FRLua em robôs colaborativos FAIRINO. Através de scripts FR Lua, os usuários podem
controlar robôs de forma flexível para executar diversas tarefas.
2 Fundamentos de script de programação Lua FR
2.1 Gramática básica
2.1.1 Anotações FR Lua
Os comentários em scripts FR Lua são divididos em comentários de linha única e comentários de linha múltipla
comentários de linha.
Comentários de linha única em FR Lua, começando com -, será ignorado pelo intérprete.
Comentários de linha única são normalmente usados para breves explicações ou anotações de código.
Comentários de múltiplas linhas em FR Lua, usando -- [[ ]] para comentar, começando com -- [[ e terminando
com]], são adequados para situações em que grandes seções de código precisam ser explicadas.
FR Lua não suporta comentários aninhados, o que significa que outro comentário de várias linhas não pode
ser aninhado em um único comentário. A explicação para FR Lua
comentários é o seguinte.
Explicação da anotação Lua do Código 2-1 FR
--Este é um comentário de uma única linha
12
--[[
34 Este é um comentário de várias linhas
5 Pode conter várias linhas de texto
6 ]]
7
8 --[[
Este é um comentário de várias linhas
9 10 --[[
11 Comentários multilinha aninhados (esta é uma operação ilegal)
12 ]]
13 ]]
Machine Translated by Google
2 / 152 Script de programação FRLua
2.1.2 Palavras-chave FR Lua
A seguir estão as palavras-chave reservadas em FR Lua que não podem ser usadas como nomes.
As palavras-chave do FR Lua são as seguintes:
Código 2-2 FR Palavra-chave Lua
1e quebrar fazer outro fim elseif
2 falso para função Vá para se em
3 local nulo 4 então não ou repetir retornar
verdadeiro até enquanto
2.1.3 Variáveis
No ambiente FR Lua, as variáveis são identificadores usados para armazenar dados, que podem
contém vários tipos de dados, incluindo funções e tabelas. Os nomes das variáveis consistem em letras,
números e sublinhados e deve começar com uma letra ou sublinhado. FR Lua é caso
confidencial.
1) Tipo de variável
FR Lua contém três tipos de variáveis:
Variáveis globais: por padrão, todas as variáveis são variáveis globais, a menos que explicitamente
declaradas como variáveis locais.
variável local: Declarada com a palavra-chave local, o escopo começa na posição declarada até o final
do bloco de instruções atual.
Campos em Tabelas: Tabelas são estruturas de dados muito importantes em FR Lua, e campos em
tabelas também podem ser usados como variáveis. Exemplos de tipos de variáveis em FR Lua são mostrados
abaixo.
Exemplo de tipo de variável Lua do código 2-3 FR
1 --Variáveis globais
2 globalVar = 10
3 --variáveis locais
4 localVar = 20
5 --Campos na tabela
6 tabela localVar = {chave = 30}
2) Atribuição e atribuição de múltiplos valores
Instrução de atribuição: usada para alterar o valor de uma variável ou campo de tabela. Ao usar "=", o
valor à direita será atribuído à variável à esquerda em sequência.
Machine Translated by Google
3 / 152 Script de programação FRLua
O exemplo de atribuição FR Lua é mostrado abaixo.
O exemplo de atribuição de valores ao código Lua FR 2-4 é mostrado abaixo
1 local a = 5
2 locais b = 10
3 a = b --O valor de a=b, a agora é 10
Atribuição de múltiplos valores: FR Lua suporta a atribuição de valores a múltiplas variáveis
simultaneamente, geralmente usada para trocar valores de variáveis ou atribuir valores de retorno de
função a múltiplas variáveis. O exemplo de atribuição de múltiplos valores em FR Lua é mostrado abaixo.
Exemplo de atribuição de múltiplos valores do código 2-5 FR Lua
1 --Trocar valores de variáveis
2 locais x = 1
3 local y = 2
4 x, y=y, x --x agora é 2, y agora é 1
5 --A função retorna vários valores
6 função local getvalues()
7 retornar 5, 10
8 final
9 local a, b=getvalues() -- a agora é 5, b agora é 10
2.1.4 Tipos de Dados
FR Lua suporta oito tipos básicos de dados: nulo, booleano, número, string, dados do usuário,
função, thread e tabela. Os tipos básicos de dados são descritos na Tabela 2-1.
Tabela 2-1 Descrição do tipo de dados Lua FR
Tipo de valor Descrição
Indica um valor inválido, o valor padrão quando a variável não recebe um
Nada
valor.
Contém apenas dois valores, true e false, normalmente usados para julgamento
Valor booleano
condicional.
FR Lua usa números de ponto flutuante de precisão dupla para representar
Número
números, incluindo inteiros e números de ponto flutuante.
Usado para armazenar texto, pode ser representado por aspas simples, aspas
Corda
duplas ou strings longas.
Dados do usuário Usado para armazenar dados externos gerados pela linguagem C.
Funções escritas em C ou RFLua que podem ser atribuídas, passadas e
Função
retornadas são a base da implementação lógica.
Como uma implementação de corrotina, os threads permitem execução
Fio simultânea, com cada thread tendo uma pilha de execução independente
enquanto compartilha o ambiente e o estado globais.
Machine Translated by Google
4 / 152 Script de programação FRLua
Em FR Lua, a função type pode ser usada para testar o tipo de uma determinada variável ou
valor. Um exemplo de visualização do tipo de uma variável ou valor é mostrado abaixo.
Exemplo de visualização de tipos de variáveis ou valores no Código 2-6
1 imprimir(tipo("Olá mundo")) 2 --> corda
imprimir(tipo(10.4*3)) --> número
3 imprimir(tipo(imprimir)) --> função
4 imprimir(tipo(tipo)) --> função
5 --> booleano
6 --> zero
7 imprimir(tipo(verdadeiro)) imprimir(tipo(nulo))-->imprimir(tipo(tipo(X)))
corda
Exemplo de uso de tipos de dados básicos do FR Lua
1) Tipo de dado nulo
Indica 'valor inválido' ou 'valor nulo', que é o valor padrão não inicializado. Geralmente usado para indicar
que não há valor ou que o valor de uma variável é indefinido, por exemplo:
Exemplo de tipo de dado nulo do código 2-7
1. local a = nulo
2. print (a) -- Saída: nulo
2) Booleano (booleano)
Em FR Lua, os tipos booleanos têm apenas dois valores: true e false. Exceto para false
e nulo, todos os outros valores (incluindo o número 0) são considerados verdadeiros, conforme mostrado na
exemplo a seguir:
Exemplo de tipo de dado booleano do código 2-8
1. --Definir valores booleanos
2. local a = verdadeiro
3. local b = false
4. --Saída direta de valores booleanos
5. print (a) - Saída: verdadeiro
6. print (b) - Saída: falso
7. --Julgamento de condição booleana
8. se um então
9. print ("a é verdadeiro") - Saída: a é verdadeiro
10. fim
11. se não b então
12. print ("b é falso") - Saída: b é falso
13. fim
14. --Nota: O número 0 também é considerado verdadeiro
15. c local = 0
Machine Translated by Google
5 / 152 Script de programação FRLua
Código 2-8 (continuação)
16. se c então
17. print ("O número 0 também é considerado verdadeiro") -- Saída: O número 0 também é considerado verdadeiro
18. fim
19. --Falso e nulo serão considerados falsos
20. local d = nulo
21. se não d então
22. print ("nil é tratado como falso") -- Saída: nil é tratado como falso
23. fim
3) Número
O tipo numérico é usado para armazenar números inteiros ou de ponto flutuante. FR Lua usa
números de ponto flutuante de precisão dupla para representar o tipo numérico, permitindo a
representação precisa de uma ampla gama de números inteiros e decimais. O exemplo é o seguinte:
Exemplo de tipo de dado numérico do código 2-9
local x = 10 --Inteiro
1. local y = 3,14 --Número de ponto flutuante
2. local z = 1e3 --Notação científica, representando 1000
3. 4. imprimir(tipo(x)) --Número de saída
5. imprimir(x) --Saída: 10
6. imprimir(tipo(y)) 7. --Número de saída
imprimir(y) 8. --Saída: 3,14
imprimir(tipo(z)) 9. --Número de saída
imprimir(z) --Saída: 1000,0
4) Corda (corda)
Strings são usadas para armazenar dados textuais. Strings podem ser representadas por aspas
simples, aspas duplas ou [[]] para representar strings de várias linhas. Um exemplo de ligação entre
duas strings é o seguinte:
Código 2-10 Exemplo de tipo de dados de string
1. --Exemplo 1: Usando aspas simples e duplas
2. local str1 = 'Olá, FR!' --Use aspas simples
3. local str2 = "Olá, FR!" --Use aspas duplas
4. print (str1) - Saída: Olá, FR!
5. print (str2) - Saída: Olá, FR!
6. --Exemplo 2: [[]], quando uma string é longa ou precisa abranger várias linhas, [[]] pode ser usado para
representa uma sequência de várias linhas.
7. string_multi_linha_local = [[
8. Sou um robô colaborativo FAIRINO.
9. Obrigado pela sua confiança.
10. Posso ajudar você com alguma coisa?
11. ]]
Machine Translated by Google
6 / 152 Script de programação FRLua
Código 2-10 (continuação)
12. imprimir(str_de_várias_linhas)
13. --Saída:
14. --Sou um robô colaborativo FAIRINO.
15. --Obrigado pela sua confiança.
16. --Posso ajudar você com alguma coisa?
17.
18. --Exemplo 3: Conexão de string
19. --Usando FRLua para conectar várias strings.
20. local part1 = "Olá"
21. parte local2 = "FRÿ "
22. local combinado=part1.. "".. Parte2- Conecte strings usando
23. print (combinado) -- Saída: Olá FR!
5) Dados do usuário
Dados do usuário são um tipo especial usado para representar dados criados por código C/C++. Em FR
Lua é normalmente usada para interagir com programas ou bibliotecas externas.
6) Função
Funções em FR Lua também são um tipo de dado que pode ser atribuído a variáveis ou passado como
parâmetros. Funções podem ser nomeadas ou anônimas (funções lambda), por exemplo:
Exemplo de tipo de dados de função do código 2-11
1. função local greet()
2. print("Olá, FR!")
3. fim
4. Greet() -- Saída: Olá, FR!
7) Fio (thread)
Em FR Lua, threads são usadas para representar implementações de corrotinas, que permitem
multitarefa não preemptiva entre diferentes blocos de código, semelhante a threads leves. Exemplos são os
seguintes:
Exemplo de tipo de dados de thread de função de código 2-12
1. co local = coroutine.create(function()
2. print("Executando corrotina") fim)
3. Coroutine. sum (co) -- Saída: Executando coroutine
8) Tabela (Tabela)
A estrutura de dados central do FR Lua é a tabela, que cria tabelas vazias por meio de {}. Ela serve
como um array associativo, suportando indexação numérica e de strings, proporcionando flexibilidade na
organização dos dados. O índice da tabela começa em 1 e
Machine Translated by Google
7 / 152 Script de programação FRLua
Expande automaticamente o comprimento com o conteúdo. Elementos não alocados assumem o valor nulo por padrão.
A sintaxe básica para criar e usar tabelas é a seguinte:
Código 2-13 Sintaxe básica da tabela
1. local FR={} -- Cria uma tabela vazia
2. Usuário local={"Olá", "FR", "!"} -- Inicializa a tabela diretamente
Um exemplo de índice numérico (semelhante a uma matriz) para uma tabela é o seguinte:
Código 2-14 Índice Numérico da Tabela
1. --Tabela de índices numéricos
2. números locais = {10, 20, 30, 40}
3. --Acessando os valores na tabela
4. print (números [1]) -- Saída: 10
5. print (números [2]) -- Saída: 20
6. --O comprimento da tabela será expandido automaticamente
7. números[5] = 50
8. imprimir (números [5]) --Saída: 50
Um exemplo de um índice de string (semelhante a um dicionário) para uma tabela é o seguinte:
Código 2-15 Índice de String da Tabela
1. --Tabela com índice de string
2. pessoa local = {
3. nome = "FR",
4. idade = FR,
5. cidade = "China"
6. }
7. --Acessando os valores na tabela
8. print (pessoa. nome) -- Saída: FR
9. print (pessoa ["idade"]) -- Saída: FR
O índice misto de tabelas, tabelas FR Lua podem usar índices numéricos e de string
simultaneamente, conforme mostrado no exemplo a seguir:
Código 2-16 Índice Misto de Tabela
1. -Crie uma tabela de índice misto.
2. fr_robots locais = {
3. "FR3",
4. "FR5",
5. "FR10",
6. empresa = "FR",
7. fundada = 2019
8. }
Machine Translated by Google
8 / 152 Script de programação FRLua
O crescimento dinâmico de uma tabela, por exemplo:
Código 2-17 Crescimento Dinâmico de Tabelas
1. --Crie uma tabela vazia para armazenar modelos de robôs
2. local fr_models = {}
3. --Adicionar dinamicamente modelos de produtos de
robôs 4. fr_models[1] = "FR3" 5.
fr_models[2] = "FR5" 6.
fr_models[3] = "FR10" 7.
8. --Adicione mais informações dinamicamente 9.
fr_models["total_models"] = 3 10.
fr_models["latest_model"] = "FR10" 11.
12. --Acessando dados na tabela 13.
print (fr_madels [1]) - Saída: FR3 14. print
(fr_madels ["total models"]) -- Saída: 3 15. print (fr_madels
["latest_madel"]) -- Saída: FR10
2.1.5 Operadores
1) Operador aritmético
Os operadores aritméticos comumente usados em FR Lua incluem adição (+), subtração (-),
multiplicação (*), divisão (/), resto (%), exponenciação (^), sinal (-) e divisão (//). A seguir, exemplos de
operadores aritméticos comumente usados:
Código 2-18 Exemplos de operadores aritméticos comuns usados em FR Lua
1. --Definição de variável
2. FR_1 local = 10 3.
FR_2 local = 20
4.
5. --Adição
6. adição local = FR_1 + FR_2 7. print
("Adição (FR_1+FR_2):", adição) -- Saída: Adição (FR_1+FR_2): 30
8.
9. --Subtração
10. subtração local = FR_1 FR_2 11. print
("Subtração (FR_1 FR_2):", subtração) -- Saída: Subtração (FR_1 FR_2): -10 12. --Multiplicação 13. multiplicação
local = FR_1
*
FR_2
Machine Translated by Google
9 / 152 Script de programação FRLua
Código 2-18 (continuação)
14. print ("Multiplicar (FR_1 * FR_2):", multiplicação) -- Saída: Multiplicar (FR_1 * FR_2): 200 15.
16. --Divisão
17. divisão local = FR_2 / FR_1 18.
print ("Divisão (FR_2/FR_1):", divisão) -- Saída: Divisão (FR_2/FR_1): 2.0
19.
20. --Pegue o
excedente 21. módulo local = FR_2 %
FR_1 22. print ("pegue o restante (FR_2% FR_1):", modular) -- Saída: pegue o restante (FR_2% FR_1): 0
23.
24. --Multiplicando potência
25. potência local = FR_1 ^ 2 26.
print ("FR_1 ^ 2:", potência) -- Saída: FR_1 ^ 2: 100
27.
28. --Sinal negativo 29.
negativo local = -FR_1 30. print
("sinal negativo (- FR_1):", negativo) -- Saída: sinal negativo (- FR_1): -10
31.
32. --Divisível
33. local integerDivision = 5 // 2 34.
print ("Dividir (5//2):", integraterDivision) -- Saída: Dividir (5//2): 2
2) Operador relacional
Os operadores relacionais comumente usados em FR Lua são igual a (==),
diferente de (~=), maior que (>), menor que (<), maior ou igual a (>=) e menor ou igual
a (<=). A seguir, exemplos de operadores relacionais comumente usados:
Exemplo de uso de operadores relacionais comumente usados no FR Lua Code 2-19
1. --Definição de variável
2. local FR_1 = 10 3. local
FR_2 = 20 4. --Igual a 5.
local isEqual =
(FR_1 == FR_2) 6. print ("igual a
(FR_1==FR_2):", isEqual) -- Saída: igual a (FR_1==FR_2): falso 7. --Diferente de 8. local isNotEqual =
(FR_1 ~= FR_2) 9.
print ("Diferente de (FR_1~=FR_2):", isNotEqual)
-- Saída: Diferente de (FR_1~=FR_2): verdadeiro
10. --Maior que
11. local isGreaterThan = (FR_1 > FR_2) 12. print
("maior que (FR_1>FR_2):", isGreaterHan) -- Saída: maior que (FR_1>FR_2): falso
Machine Translated by Google
10 / 152 Script de programação FRLua
Código 2-19 (continuação)
13. --Menos que
14. local éMenor que = (FR_1 < FR_2)
15. print ("Menor que (FR_1<FR_2):", isLessTan) -- Saída: Menor que (FR_1<FR_2): true
16. --Maior ou igual a
17. local éMaiorOuIgual = (FR_1 >= FR_2)
18. print ("maior ou igual a (FR_1>=FR_2):", isGreaterOrEqual) -- Saída: maior ou igual a (FR_1>=FR_2): falso
19. --Menor ou igual a
20. local éMenorOuIgual = (FR_1 <= FR_2)
21. print ("Menor ou igual a (FR_1<=FR_2):", isLesOrEqual) -- Saída: Menor ou igual a (FR_1<=FR_2): true
3) Operador lógico
Os operadores lógicos comumente usados em RLua são (==), or (~=) e non (>).
a seguir estão alguns exemplos de operadores lógicos comumente usados:
Código 2-20 Exemplos de operadores lógicos comuns usados em FR Lua
1. --Exemplo:
2. FR local = verdadeiro
3. NFR local = falso
4. resultado local1 = FR e NFR
5. print ("FR e NFR:", resultado1) -- Saída: FR e NFR: falso
6. resultado local2 = FR ou NFR
7. print ("FR ou NFR:", resultado2) -- Saída: FR ou NFR: verdadeiro
8. resultado local3 = não FR
9. print ("não FR:", resultado3) -- Saída: não FR: falso
4) Outros operadores
Outros operadores comumente usados em FR Lua incluem o operador de junção (..), índice de tabela
([]), atribuição (=), construtor de tabela ({}) e operador de comprimento variável (#).
Exemplos de outros operadores comumente usados são os seguintes:
Código 2-21 Exemplo de uso de outros operadores comumente usados em FR Lua
1. --Exemplos de uso de outros operadores:
2. local str1 = "Olá"
3. local str2 = "FR!"
""
4. resultado local = str1 .. .. str2
5. print ("Operador de conexão (str1.. ''.. Str2):", resultado) -- Saída: Olá FR!
6. local minhaTabela = {a = 1, b = 2}
7. valor localA = minhaTabela["a"]
Machine Translated by Google
11 / 152 Script de programação FRLua
Código 2-21 (continuação)
8. print ("índice da tabela (minhaTabela ['a ']:", valorA) -- Saída: 1
9. local x = 5
10. print("Atribuir (x=5):", x) -- Saída: 5
11. local minhaTabela = {1, 2, 3, 4}
12. print ("construtor de tabela (minhaTabela [1]:", minhaTabela [1]) -- Saída: 1
13. print ("Operador de comprimento variável (# myTable):", comprimento) -- Saída: 4
2.2 Estrutura de controle
2.2.1 Declarações condicionais
Em FR Lua, as palavras-chave if, elseif e else são usadas para executar códigos diferentes
blocos, e o caminho de execução é determinado com base na autenticidade das condições.
A seguir está o mecanismo de funcionamento das instruções condicionais FR Lua:
Instrução condicional: usada para especificar uma condição. Se a condição for verdadeira,
execute o código no bloco de condição.
Declaração condicional Elseif: Quando a condição if é falsa, outra condição pode
ser fornecido para verificação.
Se todas as condições if e elseif forem falsas, execute o código no bloco else.
Avaliação de condição: FR Lua assume que valores booleanos são verdadeiros e valores não nulos
são verdadeiras. Valores booleanos falsos ou nulos são considerados falsos.
Nota: Em FR Lua, 0 é considerado verdadeiro, diferentemente de algumas outras linguagens de programação.
A estrutura básica das instruções condicionais:
Estrutura básica de instruções condicionais em FR Lua Code 2-22
1. se condição1 então
2. --Bloco de código executado quando a condição 1 é verdadeira
3.
4. elseif condição2 então
5. --O bloco de código executado quando a condição 1 é falsa e a condição 2 é verdadeira
6.
7. outro
8. --Bloco de código executado quando todas as condições são falsas
9.
10. fim
Machine Translated by Google
12 / 152 Script de programação FRLua
A seguir, um exemplo de uso de instruções condicionais:
Exemplo de uso de instruções condicionais no Código 2-23
1. --Exemplo 1: Julgando o positivo e o negativo dos números
2. número local = 10
3.
4. se número > 0 então
5. print ("O número é positivo")
6. elseif número < 0 então
7. print ("O número é negativo")
8. outro
9. print ("O número é zero")
10.
11. fim
12. --Resultado de saída: O número é um número positivo
13.
14. --Exemplo 2: Verifique se a variável é nula
15. valor local = nulo
16.
17. se valor então
18. print ("variável não nula")
19. senão
20. imprimir (variável é nula)
21.
22. fim·
23. --Resultado de saída: A variável é nula
24.
25. --Exemplo 3: 0 é considerado verdadeiro em FRLua
26. num local = 0
27.
28. se num então
29.
30. senão
31.
32.
33. fim
34. --Resultado de saída: 0 é considerado verdadeiro
2.2.2 Instruções de loop
Na programação FR Lua, muitas vezes é necessário executar repetidamente certos
segmentos de código, o que é chamado de loop. Um loop consiste em duas partes: o corpo do
loop e a condição de término do loop. FR Lua fornece várias estruturas de controle de loop para
executar repetidamente um determinado trecho de código quando as condições são atendidas.
Machine Translated by Google
13 / 152 Script de programação FRLua
Um loop consiste em um corpo de loop e condições de término, onde o corpo do loop se
refere a um conjunto de instruções que são executadas repetidamente; a condição de término
se refere à condição que determina se o loop continua. Quando a condição é falsa, o loop
termina.
1) Laço while
O loop while executará repetidamente o bloco de código quando a condição especificada
for verdadeira e não terminará até que a condição seja falsa. A estrutura básica e o exemplo
de um loop while são os seguintes:
A estrutura básica do loop while no FR Lua Code 2-24
1. enquanto condição fazer
2. --Corpo circular
3.
4. fim
Exemplo de uso do Código 2-25 enquanto
1. --Exemplo: Calcular a soma de 1 a 5
2. soma local = 0
3. local i = 1
4. enquanto eu <= 5 faço
5. soma = soma + i
6. i=i+1
7.
8. fim
9. print ("soma de 1 a 5:", soma) -- Saída: soma de 1 a 5: 15
2. Laço numérico for: O laço for é usado para iterar sobre um intervalo de números e
executar o corpo do laço. A estrutura básica e o exemplo de um laço numérico for são os seguintes:
segue:
Estrutura básica do loop numérico for em FR Lua Code 2-26
1. para i = início, fim, passo faça
2. --Corpo circular
3.
4. fim
Exemplo de uso do Código 2-27 para loop numérico
1. Exemplo: Números de saída de 1 a 5
2. para i = 1, 5 faça
3. imprimir(i)
4.
5. fim
6. --[[Saída:
7. 1
Machine Translated by Google
14 / 152 Script de programação FRLua
Código 2-27 (continuação)
8. 2
9. 3
10. 4
11. 5
12. ]]
3) Para Loop Genérico
Os loops genéricos são usados para percorrer tabelas ou iteradores. A estrutura básica e
exemplos de um loop genérico são os seguintes:
Estrutura básica do loop genérico for em FR Lua Code 2-28
1. para chave, valor em pares (tabela) faça
2. --Corpo circular
3.
4. fim
Exemplo de uso do Código 2-29 para loops genéricos
1. --Exemplo: Percorrer chaves e valores em uma tabela
2. local minhaTabela = {a = 1, b = 2, c = 3}
3. para chave, valor em pares (minhaTabela) faça
4. imprimir(chave, valor)
5. fim
6. --[[Saída:
7. a 1
8. b 2
9. c 3
10. ]]
4ÿrepita... Até o loop
O loop Repeat... until é semelhante ao loop while, mas primeiro executa o corpo do loop e
Em seguida, verifica as condições. Somente quando a condição for falsa, a execução continuará.
A estrutura básica e o exemplo do loop repeat... until são os seguintes:
Repetir em FR Lua Código 2-30 A estrutura básica do loop até
1. repita
2. --Corpo circular
3.
4. até a condição
Machine Translated by Google
15 / 152 Script de programação FRLua
Código 2-31 repeat Exemplo de uso do loop until
1. --Exemplo: Calcular a soma de 1 a 5
2. soma local = 0
3. local i = 1
4. repita
5. soma = soma + i
6. i=i+1
7. até i > 5
8. print ("soma de 1 a 5:", soma)
9. --Saída: Soma de 1 a 5: 15
5) Loop aninhado
Loop aninhado refere-se a uma estrutura de loop contida dentro de outra estrutura de loop.
Isso normalmente é usado em cenários onde dados multidimensionais são processados ou múltiplos
conjuntos de operações semelhantes precisam ser repetidos. Em loops aninhados, o loop externo controla
operações maiores, como o número de linhas, enquanto o loop interno controla operações menores
operações como o conteúdo específico de cada linha.
Exemplo de loop aninhado do código 2-32
1. --Exemplo: imprima uma matriz estrela 5x5.
2. para i=1,5 faça -- loop externo, linha de controle
3. para j=1,5 faça -- Laço interno, coluna de controle
4. io. write ("*") -- Produz asteriscos e os mantém na mesma linha
5.
6. fim
7. print() -- Quebra de linha após completar cada linha de saída
8.
9. fim
10. para i=1,5 faça -- loop externo, linha de controle
11. para j=1,5 faça -- Laço interno, coluna de controle
12. io. write ("*") -- Produz asteriscos e os mantém na mesma linha
13. fim
14. print() -- Quebra de linha após completar cada linha de saída
15.
16. fim
17. --[[Saída:
18. * * * * *
19. * * * * *
20. * * * * *
21. * * * * *
22. * * * * *
23. ]]
Machine Translated by Google
16 / 152 Script de programação FRLua
2.2.3 Instruções de controle
FR Lua fornece duas instruções especiais para controlar loops, nomeadamente break e
Vá para.
Instrução Break: usada para sair do loop atual antecipadamente. Quando o loop
encontra uma instrução break, ela encerrará imediatamente o loop, sairá do loop atual
corpo do loop e não executar mais iterações subsequentes. Isso pode evitar loops desnecessários
e melhorar a eficiência.
Exemplo de instrução break no código Lua FR 2-33
1. --Exemplo: Sair do loop quando o contador atingir 3
2. para i = 1, 5 faça
3. se i==3 então -- Quando i for igual a 3, saia do loop
4. break -- encerra prematuramente o loop
5. fim
6. imprimir(i)
7.
8. fim
9. --[[Saída
10. 1
11. 2]]
Instrução goto: pode pular incondicionalmente para a posição da tag especificada. É
possível simplificar a lógica do código em certas situações complexas.
Exemplo de instrução goto no código Lua FR 2-34
1. --Exemplo: Usando goto para pular certas instruções
2. local i = 1
3. :: loop_start:: -- Definir um rótulo
4. imprimir(i)
5. i=i+1
6. se i <= 5 então
7. goto loop_start -- Volta para a tag e continua o loop
8. fim
9. --[[
10. Saída:
11. 1
12. 2
13. 3
14. 4
15. 5
16. ]]
Machine Translated by Google
17 / 152 Script de programação FRLua
Uso simples do Código 2-35 combinando sintaxe básica e estrutura de controle
1. --Tipos básicos de dados dos robôs colaborativos FAIRINO
2. local robotmodel="FR5" -- Modelo de robô
3. Capacidade de carga local = 5 -- Capacidade de carga (kg)
4. local isOperational=true -- O robô está funcionando
5. local errCode=nil -- Código de erro (inicialmente vazio)
6.
7. --Atribuição de variáveis
8. local operaHours=100-- Tempo de execução do robô (horas)
9. operationHours=operationHours+10-- Aumenta o tempo de execução em 10 horas
10.
11. --Declaração condicional
12. se capacidade de carga útil > 10 então
13. imprimir ("A carga do robô FR5 excede 10 kg")
14. elseif capacidade_de_carga < 3 então
15. imprimir ("Carga do robô FR5 menor que 3 kg")
16. senão
17. print ("A carga do robô FR5 está entre 3 e 10 kg")
18. fim
19.
20. --Instrução de loop: exibe as primeiras 5 horas de operação do robô
21. para hora = 1, 5 faça
22. print ("FR5 está em execução há horas:" hora)
23. fim
24.
25. --While loop: Verifique se atingiu a operação de carga total
26. Carga atual local = 0
27. enquanto currentLoad < payloadCapacity faça
28. print("Carga atual:"CargaAtual.. "Kg, continuar aumentando")
29. CargaAtual = CargaAtual + 1
30. fim
31.
32. --Ciclo de repetição: Reduza a carga até atingir 0
33. repita
34. print("Reduzindo carga, carga atual:") currentLoad .. "kg")
35. CargaAtual = CargaAtual + 1
36. até que currentLoad == 0
37.
38. print ("Carga FR5 liberada, pronta para parar")
Machine Translated by Google
18 / 152 Script de programação FRLua
2.3 Funções
Uma função é uma abstração de um conjunto de instruções em um programa, usada para
executar tarefas ou cálculos específicos e retornar resultados. As funções na linguagem Lua são
muito flexíveis em escrita e uso, podem ter ou não parâmetros e retornar um ou vários valores.
2.3.1 Definição e uso de funções FR Lua
As funções em FR Lua são um componente importante da programação, suportando
encapsulamento de código duplicado, programação modular e manipulação de operações lógicas
complexas. A estrutura básica das funções em FR Lua é a seguinte:
Código 2-36 Estrutura básica das funções FR Lua
1. função optional_function_scope nome_da_função(argumento1, argumento2, ...)
2. --Função Corporal: Operação da Função
3. retornar result_params_comma_separated
4. fim
Análise da estrutura funcional:
optional_function-scope: configuração de escopo opcional. Se a função precisar ser usada
apenas em um módulo ou bloco específico, ela pode ser definida como uma função local e, se não
for definida, o padrão é uma função global.
·function_name: O nome da função usado para identificar a função para facilitar a chamada.
·argumento1, Argumento2,...: Parâmetros da função, dados passados para a função.
·function_fody: O corpo da função contém o código específico que precisa ser
executado.
·O valor de retorno da função 'return result_crams_comma_separated' pode retornar vários
valores.
Os dois principais usos das funções são:
Tarefas completas: por exemplo, chamar funções no robô cooperativo para executar
operações como mover e agarrar. Funções são usadas como instruções de chamada.
Calcular e retornar valores: Ao calcular cargas ou coordenadas, funções são usadas como
expressões para instruções de atribuição.
2.3.2 Funções e fechamentos anônimos
Em FR Lua, fechamentos de funções anônimas são dois conceitos importantes em funções
Machine Translated by Google
19 / 152 Script de programação FRLua
programação. Eles permitem a criação de comportamento dinâmico dentro de funções, tornando-os altamente
adequados para cenários que exigem manipulação flexível.
Funções anônimas referem-se a funções sem nomes. Funções anônimas podem
podem ser passados diretamente como parâmetros para outras funções ou atribuídos a uma variável.
Código 2-37 Estrutura básica e chamada de funções anônimas em FR Lua
1. --Crie uma função anônima e atribua-a a uma variável
2. saudação local = função(nome)
3. retorne "Olá, " .. nome
4.
5. fim
6.
7. --Chamar funções anônimas
8. print (verde ("FR") -- Saída: Olá, FR
9. --Funções anônimas são normalmente usadas para funções de retorno de chamada ou cenários de uso único.
10. --Exemplo: Função anônima como parâmetro
11. --Defina uma função de execução que aceite outra função como parâmetro
12. função local execute(func, valor)
13. retornar função(valor)
14.
15. fim
16.
17. --Passando funções anônimas como parâmetros
18. print(execute(function(name) return "Olá, " .. nome fim, "FR5"))
19. --Saída: Olá, FR5
Fechamentos são um recurso poderoso em FR Lua. Um fechamento é uma função que contém não apenas
o código da função, mas também as variáveis de seu ambiente externo. Em outras palavras, fechamentos permitem
que funções acessem o ambiente em que foram definidas, mesmo que esse ambiente não exista mais.
A principal característica de um closure é que ele pode capturar e armazenar o estado de variáveis externas.
Mesmo após a execução da função externa, as variáveis capturadas ainda podem ser acessadas. Isso permite que
closures sejam usados para criar funções de fábrica, atrasar cálculos e outros cenários de aplicação.
Código 2-38 Estrutura básica e chamada de fechamento de FR Lua
1. --Criar um fechamento e retornar uma função
2. função local create_counter()
3. contagem local=0-- Variável externa
4. retornar função()
5. contagem = contagem + 1
6. contagem de retorno
Machine Translated by Google
20 / 152 Script de programação FRLua
Código 2-38 (continuação)
7. fim
8. fim
9.
10. --Crie dois contadores independentes
11. contador local1 = criar_contador()
12. contador local2 = criar_contador()
13.
14. --Ligue para o fechamento do balcão
15. print (counter1()) -- Saída: 1
16. print (counter1()) -- Saída: 2
17. print (counter2()) -- Saída: 1 (Diferentes fechamentos têm estados independentes)
18. print (counter2()) -- Saída: 2
2.3.3 Parâmetros de Função
As funções Lua FR suportam diferentes tipos de métodos de passagem de parâmetros, permitindo a passagem de tipos
de dados básicos, tabelas e funções.
1) A passagem de tipos básicos de dados pode incluir valores numéricos, de sequência de caracteres e booleanos como
Parâmetros:
Exemplo de passagem de parâmetros de função do código 2-39
1. função set_speed(velocidade)
2. print("Definir velocidade para:", velocidade)
3. fim
4. set_speed(15)
2) Uma tabela, como uma tabela de parâmetros e uma estrutura de dados complexa, é comumente usada para
passe vários valores relacionados:
Código 2-40 A função pega uma tabela como parâmetro e a passa em
1. função set_position(pos)
2. print ("O robô se move para a posição:", pos.x, pos.y, pos.z)
3. fim
4.
5. posição local = {x = 100, y = 200, z = 300}
6. set_position(posição)
3) Varargs, FR Lua suporta parâmetros mutáveis, o que significa que funções podem aceitar
qualquer número de parâmetros. Através da implementação da gramática:
Código 2-41 A função pega uma tabela como parâmetro e a passa em
Machine Translated by Google
21 / 152 Script de programação FRLua
1. função print_args(...)
2. argumentos locais = {...} -- Empacote todos os parâmetros em uma tabela
3. para i, v em ipairs(args) faça
4. print("Parâmetro") i .. ": " .. v)
5. fim fim
6. print_args("Olá, FR!", 123, true)
7. --
[[ 8. Saída:
9. Parâmetro 1: Olá, FR!
10. Parâmetro 2: 123
11. Parâmetro 3: verdadeiro
12. ]]
2.3.4 Valor de retorno da função
A função Lua FR pode retornar qualquer tipo de valor, incluindo um valor único, vários valores ou
uma tabela. O valor de retorno é usado para fornecer ao chamador o resultado da operação.
1) Retornar um único valor: A função pode retornar um resultado de cálculo ou status
Informação:
O código 2-42 retorna um único valor
1. função quadrado(x)
*
2. retornar x x
3. fim
4.
5. resultado local=quadrado (5) -- retorna 25
6. print (resultado) -- Saída: 25
2) Se uma função precisar retornar vários resultados, você pode usar vírgulas para separar vários
retornos:
O código 2-43 retorna vários valores
1. função calcular(a, b)
2. soma local = a + b
3. diferença local = ab
4. retornar soma, diferença
5. fim
6.
7. soma_resultado local, resultado_diferença = calcular(10, 5)
8. print ("soma:", soma_resultado, "diferença:", diff_resultado)
9. --[[
10. Saída
11. Soma: 15 Diferença: 5
12. ]]
Machine Translated by Google
22 / 152 Script de programação FRLua
3) retornar tabela: Dados complexos podem ser retornados por meio de uma tabela, especialmente
quando vários valores precisam ser passados:
O código 2-44 retorna a tabela
1. função get_robot_status()
2. retornar {velocidade = 10, posição = {x = 100, y = 200, z = 300}}
3. fim
4.
5. status local = get_robot_status()
6. print ("velocidade:", status. velocidade)
7. print("Localização:", status.position.x, status.position.y, status.position.z)
8. --[[
9. Saída
10. velocidade: 10
11. Localização: 100 200 300
12. ]]
2.3.5 Funções como Parâmetros e Valores de Retorno
FR Lua é uma linguagem funcional que permite que funções sejam passadas como parâmetros para
outras funções e também permite que funções retornem a outras funções. Este recurso
pode ser usado para criar mecanismos de retorno de chamada flexíveis e funções de ordem superior.
1) Função como parâmetro: Uma função pode ser passada como parâmetro para outra
função para implementar retornos de chamada
Código 2-45 função passada como parâmetro
1. função operate_on_numbers(a, b, operação)
2. operação de retorno (a, b)
3. fim
4.
5. resultado local = operar_em_números(5, 10, função(x, y)
*
6. retornar xy
7. fim)
8. print (resultado) -- Saída: 50
2) Funções como valores de retorno: As funções também podem retornar outra função, que
é muito útil ao criar lógica personalizada:
Código 2-46 função passada como parâmetro
1. função multiplicador(fator)
2. retornar função(x)
3. retornar x * fator
4. fim
Machine Translated by Google
23 / 152 Script de programação FRLua
Código 2-46 (continuação)
5. fim
6.
7. local double = multiplicador(2)
8. triplo local = multiplicador(3)
9.
10. print (double (5)) -- Saída: 10
11. imprimir (triplo (5)) -- Saída: 15
2.3.6 Funções Recursivas
FR Lua suporta recursão, o que significa que a função chama a si mesma. Recursiva
funções são comumente usadas para lidar com tarefas como problemas de decomposição e
atravessando estruturas de árvores.
A estrutura básica das funções recursivas geralmente consiste em duas partes:
Caso Base: Esta é a condição de término da recursão para evitar infinitas
recursão da função.
Caso recursivo: uma função se chama recursivamente para reduzir gradualmente o tamanho de
o problema até que ele atenda às condições básicas.
Código 2-47 Estrutura básica de funções recursivas
1. função recursiva_função(parâmetro)
2. se condição de referência então
3. --Terminar recursão e retornar resultado
4. retornar resultado
5. outro
6. --Chamada recursiva
7. retornar função_recursiva (parâmetro reduzido)
8. fim
9. fim
Exemplo simples: cálculo fatorial, fatorial é um exemplo clássico de recursividade
funções. A definição de fatorial é: n= n * (n-1) * (n-2) * ... * 1 e 0 = 1. Podemos
calcular fatorial por meio de funções recursivas.
Fórmula recursiva passo a passo: n! = n * (n 1)!
A condição de referência é 0! = 1
Machine Translated by Google
24 / 152 Script de programação FRLua
Código 2-48 Implementação recursiva de fatorial
1. função fatorial(n)
2. se n == 0 então
3. retornar 1-- Condição de referência: O fatorial de 0 é 1
4. outro
5. retornar n * fatorial (n-1) -- Chamada recursiva: n * (n-1)!
6. fim
7. fim
8.
9. print (fatorial (5)) -- Saída: 120
10. --[[
11. Processo de execução:
12. Calcule 5 * fatorial (4) para fatorial (5)
13. Calcule 4 * fatorial (3) para fatorial (4)
14. Até que o fatorial (0) retorne 1, retorne recursivamente o resultado passo a passo.
15. ]]
2.4 Sequência de caracteres
Na linguagem Lua FR, string é um tipo de dado básico usado para armazenar dados textuais.
Strings em Lua FR podem conter vários caracteres, incluindo, entre outros, letras, números, símbolos,
espaços e outros caracteres especiais.
2.4.1 Definição de String
Em FR Lua, strings podem ser representadas usando aspas simples, aspas duplas ou quadrados
colchetes [[]]. Colchetes são comumente usados para representar strings de várias linhas.
Exemplo de definição de string de código 2-49
1. --Defina uma string usando aspas simples
2. local str1 = 'Olá FR3'
3. --Defina uma string usando aspas duplas
"
4. local str2 = "Bem-vindo ao FR
5. --Defina uma string multilinha usando colchetes
6. str3 local = [[
7. Este é um multi-linha
8. string para produto FR5.
9. ]]
10. --Sequência de saída
11. print (str1) -- Saída: Olá FR3
12. print (str2) -- Saída: Bem-vindo ao FR
13. print (str3) -- Saída: Esta é uma linha múltipla
14. --
string para produto FR5.
Machine Translated by Google
25 / 152 Script de programação FRLua
2.4.2 Caracteres de escape
Lua suporta o uso de barras invertidas para representar caracteres de escape.
caracteres e seus significados correspondentes:
Tabela 2-2 Caracteres de escape e seus significados correspondentes
Caracteres de escape Significado Valor do código ASCII (decimal)
\um Toque de sino (BEL) 007
Backspace (BS), move a posição atual para a
\b 008
coluna anterior
Mudança de página (FF), mover a posição atual
\f 012
para o início da próxima página
Quebra de linha (LF), move a posição atual para o
\n 010
início da próxima linha
Enter (CR) para mover a posição atual para o início
\r 013
da linha
Tabulação horizontal (HT) (pula para a próxima
\t 009
posição TAB)
\v Tabulação Vertical (VT) 011
\\ Representa um caractere de barra invertida '' \ ' 092
Representa um caractere de aspas simples
\' 039
(apóstrofo)
Representa uma aspa dupla
\" 034
personagem
0 Caractere vazio (NULL) 000
Qualquer caractere representado por 1 a 3 dígitos
\ddd Octal de três dígitos
octais
Qualquer caractere representado por 1 a 2 dígitos
\xhh Sistema hexadecimal de dois dígitos
hexadecimais
2.4.3 Operações de string
Lua fornece várias funções integradas para operações de string, incluindo algumas
funções comumente usadas:
Tabela 2-3 Funções comuns para operações de string
Série de fontes Método e Aplicação
1 String.upper (argumento) converte todas as strings em letras maiúsculas.
2 String. power (argumento) converte todas as strings em letras minúsculas.
String.gsub (mainString, findString, replaceString, num) substitui um caractere especificado em
3
uma string.
Machine Translated by Google
26 / 152 Script de programação FRLua
Tabela 2-3 (continuação)
Série de fontes Método e Aplicação
1 String.upper (argumento) converte todas as strings em letras maiúsculas.
2 String. power (argumento) converte todas as strings em letras minúsculas.
String.gsub (mainString, findString, replaceString, num) substitui um caractere especificado
3
em uma string.
4 String.find (str, substr, [init, [plain]) procura substrings em uma string especificada e retorna
substrings com os índices inicial e final.
5 String. reverse (arg) inverte a string.
6 string.format (...) Formata uma string.
String.char (arg) e string.byte (arg)
7 String.char: Converte números inteiros em caracteres.
String.byte: converte caracteres em valores inteiros.
8 String. len (arg) calcula o comprimento de uma string.
9 String.rep (string, n) retorna n cópias de uma string.
String.match (str, pattern, init) procura a primeira substring da string especificada str que
10
corresponde ao padrão pattern.
11 String. sub(s, i[, j]) executa operações de truncamento de strings.
1) String.upper: Converte letras minúsculas em maiúsculas
Tabela 2-4 Parâmetros detalhados de string.upper
Atributo Explicação
Protótipo local upper_str = string.upper(argumento)
Descrição Converte todas as strings em letras maiúsculas
Parâmetro ·Argumento: A string a ser convertida
Valor de retorno ·Upper_str: A string de saída convertida
Exemplo de código 2-50 string.upper
1. local original_str = "Olá, FR!"
2. local upper_str = string.upper(original_str)
3. print (upper_str) -- Saída "OLÁ, FR!"
2) String.lower: Converte letras minúsculas em maiúsculas
Tabela 2-5 Parâmetros detalhados de string.lower
Atributo Explicação
Protótipo local lower_str = string.lower(str)
Descrição Converte todas as letras maiúsculas de uma string em letras minúsculas
Parâmetro ·Str: A string a ser convertida
Valor de retorno ·Lower_str: A string de saída convertida
Machine Translated by Google
27 / 152 Script de programação FRLua
Exemplo de código 2-51 string.upper
1. local original_str = "OLÁ, FR!"
2. local lower_str = string.lower(original_str)
3. print (lowerstr) -- Exibe "olá, fr!"
3) String.gsub: Substituição global em strings
Tabela 2-6 Parâmetros detalhados de string.gsub
Atributo Explicação
Protótipo local newString = string.gsub(stringprincipal, findString, replaceString, num)
Descrição Usado para substituição global em uma string, ou seja, substituindo todas as substrings correspondentes.
·MainString: A string original a ser substituída;
·FindString: A substring ou padrão a ser pesquisado;
· (Ponto): Corresponde a qualquer caractere individual.
·.% Caracteres especiais de escape ou padrões Lua. Por exemplo,% Representando
caracteres de ponto no sentido literal;
·%a: Corresponde a qualquer letra ([A-Za-Z]);
·%c: Corresponde a qualquer caractere de controle;
·%d: Corresponde a qualquer número ([0-9]);
·%l: Corresponde a qualquer letra minúscula;
·%u: corresponde a qualquer letra maiúscula;
·%x: Corresponde a qualquer dígito hexadecimal ([0-9A-Fa-f]);
·%p: Corresponde a qualquer sinal de pontuação;
·%s: Corresponde a qualquer caractere em branco (espaço, tabulação, quebra de linha, etc.);
·%w: Corresponde a qualquer caractere alfanumérico (equivalente a% a% d);
Parâmetro ·%b: corresponde a qualquer limite de palavra;
·%f: Corresponde a qualquer caractere do nome do arquivo;
·%[: Corresponde a qualquer classe de caractere;
·%]Fim da classe de caracteres;
·%*: Indica que o caractere precedente ou subpadrão pode aparecer zero ou várias vezes;
·%+: Indica que o caractere precedente ou subpadrão aparece pelo menos
uma vez.
·%-: Indica que o caractere precedente ou subpadrão aparece zero ou
uma vez.
·%?ÿ Indica que o caractere precedente ou subpadrão aparece zero ou
uma vez.
·%n: representa o enésimo subpadrão capturado, onde n é um número.
·%%Corresponde ao próprio sinal de porcentagem%.
·ReplaceString: uma string usada para substituir a substring encontrada;
Valor de retorno ·NewString: A string substituída.
Machine Translated by Google
28 / 152 Script de programação FRLua
Exemplo de código 2-52 string.gsub
1. local mainString = "Olá, FR! Olá, Lua!"
2. findString local = "Olá"
3. local replaceString = "Olá"
4. --Substituir todas as substrings correspondentes
5. local newString = string.gsub(stringprincipal, findString, replaceString)
6. print (newString) -- Saída "Olá, FR! Olá, Lua!"
4) String.find: Procura por substrings em uma string.
Tabela 2-7 Parâmetros detalhados de string.lind
Atributo Explicação
Protótipo início local, fim_ string.find (str, substr, init, plain)
Busca substrings em uma string e retorna os índices inicial e final da substring. Se
Descrição uma substring for encontrada, retorna as posições inicial e final da substring na string; se
não for encontrada, retorna nulo.
·str: A string a ser pesquisada;
·substr: A substring a ser pesquisada;
·init: A posição inicial da pesquisa, o padrão é 1. Se especificado, a pesquisa
Parâmetro
começará neste local.
·plain: Se definido como verdadeiro, a pesquisa usará comparação de strings regular em vez de
correspondência de padrões. O padrão é falso.
Início: O índice inicial da substring na string (com base no índice 1);
Valor de retorno
end_:O índice final de uma substring em uma string (com base em um índice 1).
Exemplo de código 2-53 string.find
1. local str = "Olá, FR
2. substr local = "mundo"
3.
4. --Encontre a posição da substring 'FR'
5. início local, fim_ = string.find(str, substr)
6. print (início, fim_) -- Saída 8 9
7.
8. --Iniciar a pesquisa a partir do local especificado
9. início local, fim_ = string.find(str, substr, 6)
10. print (start, end_) -- Saída 8 9
11.
12. --Compare usando strings regulares
13. início local, fim_ = string.find(str, "FR", 1, true)
14. print (início, fim_) -- Saída 8 9
Machine Translated by Google
29 / 152 Script de programação FRLua
5) String.reverse: Inverte a string.
Tabela 2-8 Parâmetros detalhados de string.reverse
Atributo Explicação
Protótipo local reversed_str = string.reverse (arg)
Descrição Usado para inverter strings
Parâmetro ·Arg: A string que precisa ser invertida;
Valor de retorno Reversed_str: A string invertida
Exemplo de código 2-54 string.reverse
1. local original_str = "Olá, Mundo!" 2. local
reversed_str = string.reverse(original_str) 3. print (reversed_str)
-- Saída "! DlroW, olleH"
6) Formato String.f: A função é usada para criar uma string formatada.
Tabela 2-9 Parâmetros detalhados de string.form
Atributo Explicação
Protótipo local Reversed_str = string.format(format, arg1, arg2, ...)
Descrição Usado para criar strings formatadas ·Formato: uma
string contendo instruções de formatação que começam com o símbolo% e são
seguidas por um ou mais caracteres para especificar o formato;
·%d ou%i: inteiro; ·%f:
Número de ponto flutuante; ·%g:
Seleciona automaticamente%f ou%e com base no tamanho do valor; ·%e ou%E:
número de ponto flutuante representado pela notação científica; ·%X ou%X: inteiro
hexadecimal; ·%o: inteiro octal; ·%p:
Parâmetro Ponteiro (geralmente
exibido como um número hexadecimal); ·%s: String; ·%q: Uma string
entre aspas
duplas, usada para saída do programa; ·%c: Caracteres; ·%b: Números binários; ·%
%Símbolo de saída;
·Arg1, arg2,...: Parâmetros
a serem inseridos na string
formatada.
Valor de retorno ·Reversed_str: Cria uma string formatada.
Exemplo de string.format do código 2-55
1. --Formatar números
2. num local = 123
3. local formatted_num = string.format("Número: %d", num) 4. print
(formatted_num) -- Saída "Número: 123"
Machine Translated by Google
30 / 152 Script de programação FRLua
Código 2-55 (continuação)
5.
6. --Formatar números de ponto flutuante 7.
local pi = 3,14159 8. local
formatted_pi = string.format("Pi: %.2f", pi) 9. print (formatted_pi)
-- Saída "Pi: 3,14"
10.
11. --Formatar string
12. nome local = "Kimi"
13. saudação local = string.format("Olá, %s!", nome) 14. print
(saudação) -- Saída "Olá Kimi!"
15. --Formatar valores múltiplos
16. nome local = "Kimi"
17. idade local = 30
18. saudação local = string.format("Olá, %s. Você tem %d anos.", nome, idade) 19. print
(saudação) -- Saída "Olá, Kimi. Você tem 30 anos
20.
21. --Formatar como hexadecimal
22. num local = 255
23. local formatted_hex = string.format("Hex: %x", num) 24. print
(formatted_hex) -- Saída "Hex: ff"
25.
26. --Formato como notação científica
27. local large_num = 123456789 28.
local formatted_scientific = string.format("Scientific: %e", large_num) 29. print (formatado
como científico) -- Saída "Scientific: 1,234568e+8"
7) String.char: Converte um ou mais parâmetros inteiros em strings correspondentes
Tabela 2-10 Parâmetros detalhados de string.char
Atributo Explicação
Protótipo string.char(arg1, arg2, ...)
Converta um ou mais parâmetros inteiros em strings correspondentes, onde cada inteiro
Descrição
representa a codificação ASCII ou Unicode de um caractere ·Arg1, arg2,...:
Parâmetro sequência de inteiros a ser convertida em caracteres; Valor de retorno
·Str: uma string composta de caracteres convertidos.
Exemplo de código 2-56 string.char
1. local str = string.char(72, 101, 108, 108, 111) 2. print
(str) -- Saída "Olá"
Machine Translated by Google
31 / 152 Script de programação FRLua
8) String.byte: Converte um ou mais caracteres de uma string em um inteiro.
Tabela 2-11 Parâmetros detalhados de string.byte
Atributo Explicação
Protótipo byte1 local, byte2 = string.byte (s, i, j)
Converta um ou mais caracteres em uma string em seus inteiros codificados em ASCII
Descrição
ou Unicode correspondentes.
·s: A string a ser convertida.
·i: A posição do primeiro caractere a ser convertido em uma string é definida como 1 por
Parâmetro padrão;
·j: A posição do último caractere a ser convertido em uma string é definida como i por
padrão.
Valor de retorno ·byte1, byte2: Os valores codificados correspondentes aos caracteres convertidos.
Exemplo de código 2-57 string.byte
1. local str = "Olá"
2. local byte1 = string.byte(str, 1)
3. print (byte1) -- Saída 72, que é o código ASCII para 'H'
4. bytes locais = string.byte(str, 1, 5)
5. para i, v em ipairs(bytes) faça
'
6. print (i, v) -- Código ASCII de saída para caracteres 'H', 'e', 'l', 'l', 'o'
7.
8. fim
9) String.len: Calcula o comprimento de uma string.
Tabela 2-12 Parâmetros detalhados de string.len
Atributo Explicação
Protótipo comprimento local = string.len (arg)
A função é usada para calcular o comprimento de uma string, que é o número de
Descrição
caracteres contidos na string.
Parâmetro ·arg: A string para calcular seu comprimento.
Comprimento do valor de retorno: O comprimento de uma string, que é o número de caracteres na string.
Exemplo de código 2-58 string.len
1. local str = "Olá, FR!"
2. comprimento local = string.len(str)
3. print(comprimento)
4.
5. --Saída 11
Machine Translated by Google
32 / 152 Script de programação FRLua
10) String.rep: Copia uma string.
Tabela 2-13 Parâmetros detalhados de string.rep
Atributo Explicação
Protótipo local repeat_str = string.rep(string, n)
Usado para repetir uma string um número especificado de vezes, ou seja, para copiar
Descrição
e concatenar uma string várias vezes.
·string: A string original a ser repetida.
Parâmetro ·n: O número de repetições, ou seja, o número de vezes que a string original precisa ser
copiada e concatenada
Valor de retorno repeat_str: string repetida
Exemplo de código 2-59 string.rep
1. local str = "FR "
2. local n = 3
3. local repeat_str = string.rep(str, n)
4. print (d_str repetido) -- Saída "FR FR FR FR"
11) String.match: procura por substrings na string str que correspondem ao especificado
padrão.
Tabela 2-14 Parâmetros detalhados de string.match
Atributo Explicação
Protótipo resultado de correspondência local = string.match (str, padrão, inicialização)
A função é usada para procurar substrings em uma determinada string str que correspondam a
Descrição
um padrão especificado.
·str: A string a ser pesquisada;
·padrão: uma string que define o padrão de pesquisa e pode conter caracteres especiais
Parâmetro de correspondência de padrões;
·init: A posição inicial da pesquisa, o padrão é 1. Se especificado, a pesquisa começará
neste local.
match_desult: Se uma substring correspondente for encontrada, retorna a string correspondente.
Valor de retorno Se capturas (subpadrões entre parênteses) estiverem definidas no padrão, retorna os valores
dessas capturas. Se nenhuma correspondência for encontrada, retorna nulo.
Exemplo de string.match do código 2-60
1. texto local = "Olá, mundo 1234!"
2. padrão local="% d+" -- corresponde a um ou mais números
3. início local = 1
4. --Combine números
5. correspondência local = string.match(texto, padrão, início)
6. imprimir (corresponder) -- saída "1234"
7. --Combine e retorne
8. padrão local_com_captura = "(%d+) mundo"
9. correspondência local, número = string.match(texto, padrão_com_captura, início)
Machine Translated by Google
33 / 152 Script de programação FRLua
Código 2-60 (continuação)
10. print (match) -- Saída "1234 world"
11. imprimir (número) -- saída "1234"
12) String.sub: Extrai substrings de uma string.
Tabela 2-15 Parâmetros detalhados de string.sub
Atributo Explicação
Protótipo sub_resultado local = string.sub(s, i, j)
Extrai uma substring da string s fornecida. Determina o intervalo de substrings a
Descrição serem truncadas com base na posição inicial especificada i e na posição final
opcional j.
·s: Para extrair a string original de uma substring;
·i: A posição do índice no início de uma substring pode ser negativa, indicando
que o cálculo começa no final da string;
Parâmetro
·j: Posição final (opcional), também pode ser negativa, indicando que o cálculo começa
no final da string. Se j for omitido, ele será truncado para o final da string por padrão.
Valor de retorno Sub_result: A substring extraída.
Exemplo de código 2-61 string.sub
1. --Trecho simples
2. texto local = "FR3 Robótica"
3. subTexto local = string.sub(texto, 1, 3)
4. print (subTexto) -- Saída: FR3
5.
6. --Corte da posição inicial
7. texto local = "FRs FR5"
8. subTexto local = string.sub(texto, 5)
9. print (subTexto) -- Saída: FR5
10.
11. --Use índice negativo para extrair do final
12. texto local = "Bem-vindo ao FR10"
13. subTexto local = string.sub(texto, -4, -1)
14. print (subTexto) -- Saída: FR10
2.5 Matrizes
Em FR Lua, arrays são implementados usando o tipo table. Na verdade, não há um tipo de
array dedicado em FR Lua, mas tabelas podem ser usadas como arrays para processar elementos.
O índice de um array geralmente começa em 1, em vez de 0, como em outras linguagens. Você
pode usar {} para criar um array vazio e armazenar vários tipos de elementos nele.
Machine Translated by Google
34 / 152 Script de programação FRLua
2.5.1 Matriz unidimensional
1) Crie uma matriz
Código 2-62 - Exemplo de criação de matriz
1. --Criar uma matriz vazia
2. matriz local = {}
3. --Inicializar array
4. modelos de robôs locais = {"FR3", "FR5", "FR10", "FR20"}
2) Acessando elementos de array: Acessando elementos de array através de índices, começando
a partir de 1.
Exemplo de acesso a elementos de array no Código 2-63
1. --Acessando elementos do array
2. print(modelos de robôs [1])
3. --Saída: FR3
4. print(modelos de robôs [3])
5. --Saída: FR10
3) Modificando elementos de uma matriz: Você pode modificar elementos em uma matriz indexando
eles.
Exemplo de modificação de elementos de array no Código 2-64
1. --Modificar um elemento em uma matriz
2. robotmodels [2] = "FE5_1"
3. print (robotmodels [2]) -- Saída: FE5_1
4) O comprimento de um array: FR Lua fornece o operador # para obter o comprimento de
uma matriz.
Exemplo de obtenção do comprimento do array no Código 2-65
1. --Obter comprimento da matriz
2. print(#modelosderobôs)
3. --Saída: 4
5) Crescimento dinâmico da matriz
O comprimento da tabela (matriz) de FR Lua não é fixo e novos elementos podem ser adicionados
a qualquer momento, e a matriz crescerá automaticamente.
Código 2-66 Exemplo de crescimento dinâmico de matriz
1. --Adicionar novos elementos dinamicamente
2. modelos de robôs[#modelos de robôs + 1] = "FR20_1"
3. print (robotmodels [5]) -- Saída: FR20_1
Machine Translated by Google
35 / 152 Script de programação FRLua
1.5.2 Matriz multidimensional
Em FR Lua, arrays multidimensionais são implementados por meio de tabelas aninhadas, o que significa
que cada elemento no próprio array também é um array. Por meio desse método, arrays bidimensionais,
arrays tridimensionais e até mesmo arrays de dimensões mais altas podem ser criados.
ser criado.
1) Criar array multidimensional
Para criar uma matriz bidimensional, você pode armazenar os dados de cada linha em uma tabela
separada e, em seguida, armazenar as tabelas dessas linhas em uma tabela maior.
Aqui está um exemplo simples de uma matriz bidimensional que armazena diferentes robôs
modelos e seus parâmetros.
Código 2-67 Exemplo de matriz 2D
1. --Crie uma matriz bidimensional
2. robôs locais = {
3. {"FR3", 3, "Leve"},
4. {"FR5", 5, "Padrão"},
5. {"FR10", 10, "Pesado"}
6. }
7. --Acessando elementos em uma matriz bidimensional
8. print (robôs [1] [1]) -- Saída: FR3
9. print (robôs [2] [2]) -- Saída: 5
10. print (robôs [3] [3]) -- Saída: Pesado
11. --[[
12. Robôs [1] representa a primeira linha de uma matriz bidimensional, ou seja, {"FR3", 3, "Leve"}.
13. Robôs [1] [1] representam a primeira linha e a primeira coluna de uma matriz bidimensional, ou seja, "FR3".
14. Robôs [2] [2] representam a segunda linha e a segunda coluna de uma matriz bidimensional, que é 5.
15. ]]
2) Percorrer uma matriz bidimensional
Loops aninhados podem ser usados para percorrer matrizes multidimensionais. O seguinte
O exemplo demonstra como percorrer uma matriz bidimensional de robôs.
Exemplo de matriz transversal 2D do código 2-68
1. para i = 1, #robôs fazem
2. para j = 1, #robots[i] fazem
3. imprimir(robôs[i][j])
4. fim
5. fim
Machine Translated by Google
36 / 152 Script de programação FRLua
Código 2-68 (continuação)
6. --[[
7. Saída:
8. FR3
9. 3
10. Leve
11. FR5
12. 5
13. Padrão
14. FR10
15. 10
16. Serviço pesado
17. ]]
3) Crescimento dinâmico de matrizes multidimensionais
Em FR Lua, novas linhas ou colunas podem ser adicionadas dinamicamente a objetos multidimensionais
matrizes.
Exemplo de código 2-69 de adição de novas linhas a uma matriz 2D
1. --Adicione um novo modelo de robô
2. table.insert(robôs, {"FR20", 20, "Super Pesado"})
3. print (robôs [4] [1]) -- Saída: FR20
4.
5. --Exemplo: Adicionar uma nova coluna a uma linha existente
6.
7. --Adicione um novo elemento a cada linha
8. para i = 1, #robôs fazem
9. table.insert(robots[i], "Disponível")
10. fim
11.
12. print (robots [1] [4]) -- Saída: Disponível
13. print (robots [4] [4]) -- Saída: Disponível
Matrizes tridimensionais ou de dimensões superiores também podem ser implementadas por meio de tabelas
aninhadas.
2.6 Tabela
Em Lua FR, tabela é uma estrutura de dados poderosa e flexível. Ela pode ser usada para representar matrizes,
dicionários, coleções e outros tipos de dados complexos. Devido à falta de matrizes ou sistemas de objetos integrados
em Lua FR, tabelas são um dos principais componentes de dados.
estruturas em FR Lua.
Machine Translated by Google
37 / 152 Script de programação FRLua
2.6.1 Uso básico da tabela
Tabela é uma matriz associativa que usa qualquer tipo de chave (mas não nula) para indexar. Isso
ou seja, tanto números quanto strings podem ser usados como valores-chave.
Exemplo de índice de tabela de código 2-70
1. --Exemplo 1: Usando números como índices
2. frutas locais = {"FR3", "FR5", "FR10"}
3. print (frutas [1]) -- Saída: FR3
4.
5. --Exemplo 2: Usando uma string como índice
6. pessoa local = {nome = "FR", idade = 5}
7. print (pessoa ["nome"]) -- Saída: FR
8. print (pessoa. idade) -- Saída: 30 (escrita equivalente)
2.6.2 Funções de operação de tabela
No FR Lua, o módulo table fornece algumas funções comumente usadas para manipular dados de
tabela.
Tabela 2-16 Parâmetros detalhados de funções comuns no módulo Tabela
Serial
Método e Aplicação
fonte
table.concat (table, sep, start Todos os , fim):
1 elementos da posição inicial até a posição final são separados pelo delimitador especificado (sep) e reconectados.
table.insert (tabela, pos, valor):
2
Insira elementos de valor em posições especificadas na seção de matriz da tabela
tabela.remove (tabela, pos)
3
retorna os elementos na matriz da tabela que estão parcialmente localizados na posição pos
tabela.sort (tabela, comp)
4
Classifique a tabela fornecida em ordem crescente.
Aqui estão explicações detalhadas e exemplos de uso dessas funções:
1) Table.cncat: Conectando strings em uma tabela
Tabela 2-17 Parâmetros detalhados de table.cncat
Atributo Explicação
Protótipo local concatenado = tabela.concat (tabela, sep, , fim) start
Esta função é usada para concatenar strings em uma tabela e pode especificar o delimitador sep,
Descrição bem como concatenar do item inicial ao item final da tabela.
Machine Translated by Google
38 / 152 Script de programação FRLua
Tabela 2-17 (continuação)
Atributo Explicação
·tabela: uma tabela contendo os elementos da string a serem conectados;
·sep: O delimitador usado ao conectar strings. Se não for fornecido ou nulo, faça
Não utilize o delimitador ·. O valor padrão é nulo.
Parâmetro ·start: Especifica de qual índice na tabela iniciar a conexão.
o valor padrão é 1, começando pelo primeiro elemento da tabela.
·end: Especifica a qual índice da tabela se conectar. Se não for fornecido ou nulo,
conectar ao final da tabela.
Valor de retorno concatenado: A string concatenada.
Exemplo de código 2-71 table.cncat
1. local FRuser = {" Bem-vindo ", " a ", " FR "}
2.
3. resultado local = tabela.concat(FRuser, " ")
4.
5. imprimir(resultado)
6. --Saída: Bem-vindo ao FR
2) table.insert: insere um valor em um local especificado em uma tabela
Tabela 2-18 Parâmetros detalhados de table.insert
Atributo Explicação
Protótipo table.insert (tabela, pos, valor)
Descrição Usado para inserir um valor em um local especificado em uma tabela
·tabela: Tabela onde novos elementos precisam ser inseridos;
·pos: Índice da posição onde o novo elemento é inserido. Se pos for igual a
o comprimento da tabela mais um, o novo elemento será adicionado ao final da tabela. Se
Parâmetro
pos for maior que o comprimento da tabela, o novo elemento será inserido no final da tabela
e o comprimento da tabela aumentará;
·valor: O valor do novo elemento a ser inserido.
Valor de retorno nulo
Código 2-72 Tabela. inserir Exemplo
1. robôs locais = {"FR3", "FR5"}
2.
3. --Inserir na segunda posição
4. table.insert(robôs, 2, "FR10") 5. print
(robôs [2]) -- Saída: FR10
Machine Translated by Google
39 / 152 Script de programação FRLua
3) Table.remove: Elementos removidos de uma tabela
Tabela 2-19 Parâmetros detalhados de table.remove
Atributo Explicação
Protótipo local removido = tabela.remove(tabela, pos)
Exclui o elemento na posição especificada da tabela. Se a posição pos não for
Descrição
especificada, exclua o último elemento.
·tabela: A tabela da qual os elementos precisam ser removidos;
·pos: Para remover o índice posicional de um elemento. O valor padrão é nulo, indicando
Parâmetro
a remoção do último elemento. Se pos for maior que o comprimento da tabela, nulo será
retornado e a tabela não será alterada.
removido: O valor do elemento removido. Se nenhuma pos for especificada ou se pos estiver fora
Valor de retorno
do intervalo, retorna nulo.
Exemplo de código 2-73 table.remove
1. robôs locais = {"FR3", "FR5", "FR10"}
2. tabela.remove(robôs, 2)
3.
4. --Remova o elemento da segunda posição
5. print(robôs [2])
6. --Saída: FR10
4) Table.sort: Classifica os elementos na tabela.
Tabela 2-20 Parâmetros detalhados de table.sort
Atributo Explicação
Protótipo tabela.sort (tabela, comp)
Classifique os elementos na tabela. Se a função comp estiver disponível, use uma função de
Descrição
comparação personalizada para determinar a ordem de classificação.
·tabela: A tabela a ser classificada;
·comp: Uma função de comparação usada para determinar a ordem de dois elementos.
Parâmetro Esta função recebe dois parâmetros (geralmente elementos de uma tabela) e retorna um
valor booleano. Se o primeiro parâmetro estiver antes do segundo,
retornar verdadeiro; caso contrário, retornar falso.
Valor de retorno nulo
Exemplo de código 2-74 table.sort
1. números locais = {5, 2, 9, 1, 7}
2. tabela.sort(números)
3. para i, v em ipairs(números) faça
4. imprimir(v)
5. fim
6. --Saída: 1 2 5 7 9
Machine Translated by Google
40 / 152 Script de programação FRLua
Código 2-74 (continuação)
7.
8. --Exemplo: Classificação Personalizada
9. números locais = {5, 2, 9, 1, 7}
10. Table.sort (números, função (a, b) return a>b end) -- Classificar em ordem decrescente
11. para i, v em ipairs(números) faça
12. imprimir(v)
13. fim
14. --Saída: 9 7 5 2 1
2.7 Programa colaborativo
Em FR Lua, programas colaborativos são uma estrutura de programação semelhante a threads.
No entanto, diferentemente das threads tradicionais, os programas colaborativos oferecem um
controle mais refinado sobre o fluxo de execução. Eles permitem pausar a execução de uma função
e reiniciá-la posteriormente. Programas colaborativos possuem pilhas independentes, variáveis locais
e ponteiros de instrução, mas compartilham variáveis globais e outros recursos. Portanto, programas
colaborativos são altamente adequados em cenários de multitarefa não preemptivos.
Características dos programas colaborativos:
Independência: Cada programa colaborativo tem uma execução independente
ambiente, com suas próprias variáveis locais independentes e pilha.
Compartilhamento: programas colaborativos compartilham variáveis globais entre si.
Não preemptivo: a execução de programas colaborativos é controlada manualmente,
usando operações como yield e resume.
Multitarefa flexível: programas colaborativos podem pausar e retomar outros programas
colaborativos em momentos apropriados.
As operações relevantes dos programas colaborativos são suportadas pelo módulo de corrotina,
e a Tabela 2-21 mostra as funções comumente usadas dos programas colaborativos:
Tabela 2-21 Funções comuns de programas colaborativos
Número de série Método e Aplicação
corrotina.criar(f)
1 Crie um novo programa colaborativo, onde f é a função executada ao iniciar o
programa colaborativo.
coroutine.resume (co [, val1, ...])
2 Restaurar a corrotina co e passar parâmetros (se houver).
Machine Translated by Google
41 / 152 Script de programação FRLua
Tabela 2-21 (continuação)
Número de série Método e Aplicação
coroutine.yield (...)
3 Pausar a execução do programa colaborativo e retornar para onde foi chamado
coroutine.status (co)
4
Consultar o status dos programas colaborativos
coroutine.wrap(f)
5 Crie um programa colaborativo e retorne uma função que executará o programa
colaborativo quando chamada
coroutine.running()
6
retornará o programa colaborativo em execução
Exemplo 1: Criação e restauração de programas colaborativos
Código 2-75 Criar e Restaurar Programa Colaborativo
1. --Crie um programa colaborativo, imprima 'Início do Programa Colaborativo' e pause usando yield 2. co =
coroutine.create(function() print ("Início do
3. Programa Colaborativo") coroutine. Field()
4. -- Pause o programa colaborativo print ("O programa
5. colaborativo continua") 6. end)
7.
8. --Iniciar programa colaborativo 9.
coroutine. resume (co) -- Saída: Programa colaborativo inicia
10.
11. --Restaurar programa colaborativo 12.
corrotina. retomar (co) -- Resultado: O programa colaborativo continua
Exemplo 2: Transferência de dados entre programas colaborativos
Código 2-76 Transferência de Dados entre Programas Colaborativos
1. co = coroutine.create(function(a, b) 2. print
("Execução do Programa Colaborativo", a, b) 3. local
x=coroutine. field (a+b) -- Pausa e retorna resultado 4. print ("Restaurar
Programa Colaborativo", x) 5. end)
6. --Inicie o programa colaborativo, parâmetros de entrada 3 e 7, saída: execução do programa colaborativo
37
7. --Yield retorna o resultado de a+b: 10
8. print (coroutine. resume (co, 3, 7)) -- Saída: true 10 9. --Restaura
o programa colaborativo e passa o novo parâmetro 15, saída: Restaura o programa colaborativo 15 10.
coroutine.resume(co, 15)
Machine Translated by Google
42 / 152 Script de programação FRLua
Exemplo 3: Simplifique chamadas usando coroutine-wrap
O código 2-77 simplifica a chamada usando coroutine-wrap
11. --Wrap retorna uma função para chamar diretamente o programa colaborativo
12. wrapped = coroutine.wrap(função()
13. print ("Início do Programa Colaborativo")
14. corrotina.rendimento()
15. print (“Programa colaborativo continua”)
16. fim)
17. --Chamar wrapped é equivalente a corrotina. sum (co)
18. wraped() -- Saída: Programa colaborativo inicia
19. wraped() -- Saída: O programa colaborativo continua
Exemplo 4: O status do programa colaborativo pode ser consultado usando coroutine. status (co)
para verificar o status atual do programa colaborativo
Em execução: O programa colaborativo está em execução.
Suspenso: O programa colaborativo foi pausado ou nunca foi iniciado.
Morto: O programa colaborativo concluiu a execução ou encontrou um erro
durante o tempo de execução.
Status do programa colaborativo Código 2-78
1. --Consulta de status
2. co = coroutine.create(function() 3. print
("programa colaborativo")
4. fim)
5. print (coroutine. status (co)) -- Saída: suspenso
6. Coroutine.resome (co) -- Iniciar programa colaborativo
7. print (coroutine. status (co)) -- Saída: morto
2.8 Operação de arquivo
A E/S de arquivos em FR Lua é usada para ler e modificar arquivos. Ela opera em dois modos:
modo simples e modo completo.
2.8.1 Modo simples
O modo simples é semelhante às operações de E/S de arquivo na linguagem C. Ele mantém um
arquivo de entrada e um arquivo de saída atuais, fornecendo operações para esses arquivos. É adequado
para operações básicas de arquivo.
Use a função io.open para abrir o arquivo, onde o valor do modo é mostrado em
Tabela 2-22.
Machine Translated by Google
43 / 152 Script de programação FRLua
Tabela 2-22 valores do modo
Modo Descrição
r Abra o arquivo no modo somente leitura, o arquivo deve existir.
Abra o arquivo somente gravação. Se o arquivo existir, o comprimento do arquivo será redefinido para 0, o
Em
que significa que o conteúdo do arquivo desaparecerá. Se o arquivo não existir, crie-o.
Abra arquivos somente para gravação de forma anexada. Se o arquivo não existir, ele será criado. Se existir,
um os dados gravados serão adicionados ao final do arquivo e o conteúdo original será mantido. (Símbolo EOF
reservado)
r+ Abra o arquivo no modo de leitura e gravação, o arquivo deve existir.
Abra o arquivo de leitura e gravação e, se o arquivo existir, o comprimento do arquivo será zerado, o que
em+
significa que o conteúdo do arquivo desaparecerá. Se o arquivo não existir, crie-o.
um+ Semelhante a a, mas este arquivo é legível e gravável
b Modo binário, se o arquivo for um arquivo binário, b pode ser adicionado
+ O número indica que o arquivo pode ser lido ou escrito
O modo simples usa E/S padrão ou um arquivo de entrada atual e um arquivo de saída atual.
Por exemplo, se houver um arquivo chamado 'exemplo. txt', execute uma operação de leitura de arquivo
O código 2-79 lê arquivos
1. --Abra arquivos em modo somente leitura
2. arquivo = io.open("exemplo.txt", "r")
3.
4. --Defina o arquivo de entrada padrão como 'example. txt'
5. io.input(arquivo)
6.
7. --Primeira linha do arquivo de saída
8. imprimir(io.read())
9.
10. --Fechar arquivos abertos
11. io.close(arquivo)
12.
13. --Abrir arquivos somente gravação de forma anexada
14. arquivo = io.open("exemplo.txt", "a")
15.
16. --Defina o arquivo de saída padrão como 'example. txt'
17. io.output(arquivo)
18.
19. --Adicione comentários Lua na última linha do arquivo
20. Io. write ("fim do comentário do arquivo example.txt")
21.
22. --Fechar arquivos abertos
23. io.close(arquivo)
Machine Translated by Google
44 / 152 Script de programação FRLua
No exemplo acima, foi utilizado o método io. "x", onde io. read() não possui parâmetros. Os parâmetros podem
ser um da Tabela 2-23:
Tabela 2-23 Parâmetros de io. read()
Modo Descrição
"*n" Lê um número e o retorna. Exemplo: file.read ("* n")
"*um" Leia o arquivo inteiro a partir do local atual. Exemplo: file.read ("* a")
Lê a próxima linha e retorna nil no final do arquivo (EOF). Exemplo: file.read ("* l")
* l "(padrão)
retorna uma string com um número especificado de caracteres ou retorna nulo no EOF.
número
Exemplo: arquivo. leia (5)
Outros métodos de E/S incluem:
Io. tpfile(): retorna um identificador de arquivo temporário que abre no modo de atualização e é
excluído automaticamente no final do programa
Tipo Io (arquivo): Verifique se obj tem um identificador de arquivo disponível
Io. lush(): Grava todos os dados do buffer no arquivo
Io. linhas (nome de arquivo opcional): retorna uma função iterativa que recupera uma linha de conteúdo do
arquivo sempre que é chamada. Ao chegar ao final do arquivo, retorna nil, mas não fecha o arquivo.
2.8.2 Modo completo
O modo completo utiliza identificadores de arquivo para executar operações, definindo todas as operações de
arquivo como métodos de identificador de arquivo em um estilo orientado a objetos. É adequado para tarefas mais
complexas, como a leitura de vários arquivos simultaneamente. Por exemplo, usando um arquivo chamado example.txt,
você pode executar várias operações de arquivo.
O código 2-80 opera em arquivos em modo completo
1. --1. Leia todo o conteúdo do arquivo:
2. arquivo local = io.open("exemplo.txt", "r")
3. local content=file: read ("* a") -- Lê todo o conteúdo do arquivo
4. imprimir(conteúdo)
5. arquivo:fechar()
6.
7. --2. Leia os arquivos linha por linha:
8. arquivo local = io.open("exemplo.txt", "r")
9. para linha no arquivo: linhas() faça
10. imprimir(linha)
11. fim
Machine Translated by Google
45 / 152 Script de programação FRLua
Código 2-80 (continuação)
12. arquivo:fechar()
13.
14. --3. Leia uma linha
15. arquivo local = io.open("exemplo.txt", "r")
16. linha local=arquivo: leitura ("* l") -- Lê uma linha
17. imprimir(linha)
18. arquivo:fechar()
19.
20. --Operação de gravação de arquivo no arquivo txt de exemplo
21. --1. Escreva a sequência:
22. arquivo local = io.open("exemplo.txt", "w")
23. file:write("Olá, Lua!\n")
24. arquivo:fechar()
25.
26. --2. Adicione gravação e anexe conteúdo ao final do arquivo:
27. arquivo local = io.open("exemplo.txt", "a")
28. file:write("Este é um texto anexado.\n")
29. arquivo:fechar()
2.9 Tratamento de erros
FR Lua oferece um mecanismo de tratamento de erros simples e flexível. Ao usar
métodos apropriados de tratamento de erros, os programas podem detectar e gerenciar erros, prevenindo
o programa seja encerrado imediatamente quando ocorrem erros.
2.9.1 Erros de sintaxe
Erros de sintaxe ocorrem durante a escrita do programa quando o código viola a sintaxe
regras da linguagem de programação. Esses erros são normalmente identificados antes do código
compilação ou interpretação. Em linguagens interpretadas como FR Lua, esses erros são
geralmente detectado imediatamente durante a execução do código.
Erros de gramática de sintaxe incluem:
Erro de ortografia: Erros na ortografia de nomes de variáveis, nomes de funções ou
palavras-chave.
Descompasso entre parênteses: por exemplo, falta de parênteses de fechamento, chaves,
ou colchetes.
Uso incorreto de símbolos: usar operadores incorretos ou colocar operadores em
Machine Translated by Google
46 / 152 Script de programação FRLua
contextos inapropriados.
Erros de estrutura de sintaxe: uso incorreto de instruções ou formatação incorreta delas.
Exemplo de código de erro Lua FR 2-81
1. --Erro de ortografia: Erros de ortografia em nomes de variáveis, nomes de funções ou palavras-
chave. 2. variável local="Este é um erro de digitação no nome da variável" -- deveria ser variável em vez de variável
3. --Incompatibilidade de parênteses: por exemplo, parênteses fechados, chaves ou quadrados ausentes
colchetes.
4. array local={1, 2, 3}-- Falta uma chave fechada
5.
6. --Uso incorreto de símbolos: como usar operadores incorretos ou usar operadores em
contextos inapropriados.
7. soma local=1+{2,3} -- Os parênteses contêm uma matriz e não podem ser adicionados diretamente a uma
número
8.
9. --Erro de estrutura gramatical: como usar uma declaração em uma posição inadequada ou
formatando a declaração incorretamente.
10. functon myFunctional() -- deve ser uma função em vez de functon 11. print("Olá,
mundo!") 12. end
13.
14. MyFunction )-- Parênteses ausentes para chamar a função, deveria ser myFunctional()
15. --Estrutura de fluxo de controle errada
16. Enquanto verdadeiro -- palavra-chave do
ausente 17. print("Loop infinito!")
18. fim
19. //Comentário incorreto -- Este é um comentário incorreto porque não foi fechado corretamente
Código 2-82 FR Exemplo de código correto Lua
1. --Código Lua correto
2. variável local = "Este é um nome de variável correto"
3. matriz local = {1, 2, 3} 4. soma
local = 1+2+3 -- Uso correto do operador 5. função
myFunction() 6. print("Olá, mundo!")
7. fim
8. MyFunctional() -- Chamada de função correta 9.
while true do
10. print("Loop infinito!")
11. fim
12. --Anotação correta
Machine Translated by Google
47 / 152 Script de programação FRLua
2.9.2 Erros de tempo de execução
Erros de tempo de execução são erros que ocorrem durante a execução do programa, normalmente devido a
problemas lógicos ou fatores externos, como indisponibilidade de recursos. Esses tipos de erros só aparecem quando o
programa está em execução, pois estão relacionados ao estado de execução do programa e aos dados de entrada.
Erros comuns de tempo de execução incluem:
Erros lógicos: O programa é executado conforme o esperado, mas o resultado não é o esperado,
geralmente devido a algoritmo incorreto ou processamento lógico.
Erro de tipo: tentativa de executar uma operação em dados do tipo errado, como passar uma string para uma
função que requer um número.
Erros de recursos: por exemplo, um arquivo inexistente, falha de conexão de rede ou memória insuficiente.
Violação de acesso: como acessar índices ilegais de matrizes ou tentar modificar constantes.
Um exemplo de código que está sintaticamente correto, mas pode causar erros de tempo de execução é
mostrado no Código 2-80:
Exemplo de código de erro de execução do código 2-83 FR Lua
1. --Supondo que este seja um pedaço de código Lua
2.
3. --Erro lógico: O programa foi executado conforme o esperado, mas o resultado não foi o esperado
4. função calculateArea(largura, altura)
5. retornar largura * altura -- Cálculo incorreto do perímetro do retângulo como área
6. fim
7. área local = calcularArea(10, 5)
8. print ("Área:", área) -- Esperava obter a área, mas obteve a circunferência
9.
10. --Erro de tipo: Tentativa de executar uma operação em dados do tipo errado
11. função addNumbers(a, b)
12. retorne a + b
13. fim
14. local result=addNumbers ("10", 5) -- Números esperados para serem adicionados, mas o primeiro parâmetro
é uma string
15.
16. --Erro de recurso: se o arquivo não existir
17. função readFile(nome do arquivo)
18. arquivo local = io.open(nome do arquivo, "r")
19. se não arquivar então
20. print("Erro: Arquivo não existe.")
Machine Translated by Google
48 / 152 Script de programação FRLua
Código 2-83 (continuação)
21. retornar
22. fim
23. conteúdo local = arquivo:ler("*a")
24. arquivo:fechar()
25. retornar conteúdo
26. fim
27. conteúdo local = readFile("arquivo inexistente.txt")
28.
29. --Violação de acesso: como acessar índices ilegais de matrizes
30. matriz local = {1, 2, 3}
31. valor local=array [4] -- Tentando acessar um índice de array inexistente
32. --Tentativa de modificar constantes
33. constante local = 10
34. constante=20-- Tenta modificar o valor constante
Código 2-84 FR Código de erro de execução Lua modificado para o exemplo de código correto
1. --Código Lua correto
2.
3. --Correção de erro lógico: calcular área com precisão
4. função calculateArea(largura, altura)
5. retornar largura * altura
6. fim
7. área local = calcularArea(10, 5)
8. print ("Área:", área) -- obtenha a área corretamente
9.
10. --Correção de erro de tipo: Certifique-se de que os tipos de parâmetro estejam corretos
11. função addNumbers(a, b)
12. assert(tonumber(a) e tonumber(b), "Ambos os argumentos devem ser números")
13. retornar para número(a) + para número(b)
14.
15. fim
16. local result=addNumbers (10, 5) -- Adicione dois números corretamente
17.
18. --Tratamento de erros de recursos: lidar adequadamente com situações em que os arquivos não existem
19. função readFile(nome do arquivo)
20. arquivo local = io.open(nome do arquivo, "r")
21. se não arquivar então
22. print("Erro: Arquivo não existe.")
23. retornar nulo
24. fim
25. conteúdo local = arquivo:ler("*a")
26. arquivo:fechar()
27. retornar conteúdo
Machine Translated by Google
49 / 152 Script de programação FRLua
Código 2-84 (continuação)
28. fim
29. conteúdo local = readFile("nonexistentfile.txt") ou "Conteúdo do arquivo não disponível"
30.
31. --Correção de violação de acesso: Manipulação adequada de índices de array
32. matriz local = {1, 2, 3}
33. valor local=array [1] -- Acessando o índice do array existente
34. --Proteção constante: Não modifique valores constantes
35. constante local = 10
36. --Constante=20-- Não modifique o valor da constante
2.9.3 Tratamento de erros
O tratamento de erros em FR Lua é obtido principalmente por meio dos dois seguintes
mecanismos:
Função Error(): usada para gerar um erro manualmente.
As funções pcall() e xpcall() são usadas para capturar e tratar erros.
1) Use error() para lançar um erro
FR Lua fornece a função err() para lançar manualmente um erro em um programa.
Quando err() é chamado, o programa encerra a execução da função atual e
retorna uma mensagem de erro ao chamador.
Código 2-85 FR Lua lança um exemplo de código de erro usando error()
1. função divide(a, b)
2. se b == 0 então
3. erro ("divisor não pode ser zero")
4. outro
5. retornar a / b
6. fim
7. fim
8.
9. print (dividir (10, 2)) -- Saída: 5
10. print (divide (10, 0)) -- Erro: O divisor não pode ser zero
2) Capturar erros usando pcall()
Pcall() (chamada protegida) é usado para capturar erros que ocorrem em blocos de código FR Lua.
A função pcall() executará a função fornecida e, se nenhum erro ocorrer, ela retornará
verdadeiro e o valor de retorno da função; Se ocorrer um erro, ele retorna falso e um erro
Machine Translated by Google
50 / 152 Script de programação FRLua
mensagem.
Código 2-86 FR Lua usando pcall() para capturar exemplo de código de erro
1. função divide(a, b)
2. se b == 0 então
3. erro ("divisor não pode ser zero")
4. outro
5. retornar a / b
6. fim
7. fim
8.
9. print (dividir (10, 2)) -- Saída: 5
10. print(divide(10, 0)) -- Erro: O divisor não pode ser zero. Função divide(a, b)
11. se b == 0 então
12. erro ("divisor não pode ser zero")
13. outro
14. retornar a / b
15. fim
16. fim
17.
18. --Capturar erros usando pcall
19. status, resultado = pcall(dividir, 10, 2)
20. print (status, resultado) -- Saída: true 5
21.
22. status, resultado = pcall(dividir, 10, 0)
23. print (status, resultado) -- Saída: divisor falso não pode ser zero
3) Capture erros usando xpcall() e especifique funções de tratamento de erros
xpcall() é uma extensão de pcall() que permite especificar uma função de tratamento de erros
quando um erro é detectado. Isso permite a personalização da lógica de tratamento de erros.
Código 2-87 FR Lua xpcall() captura erros e especifica exemplo de código de tratamento de erros
1. função divide(a, b)
2. se b == 0 então
3. erro ("divisor não pode ser zero")
4. outro
5. retornar a / b
6. fim
7. fim
8.
9. --Defina uma função de tratamento de erros
10. função errorHandler(err)
Machine Translated by Google
51 / 152 Script de programação FRLua
Código 2-87 (continuação)
11. print ("Ocorreu um erro:" err)
12. fim
13.
14. --Capturar erros usando xpcall e chamar funções de tratamento de erros
15. Status=xpcall (divide, error Handler, 10, 0) -- Saída: Ocorreu um erro: o divisor não pode ser zero
2.10 Módulos
Módulos são um mecanismo usado em FR Lua para organizar o código, fornecendo uma maneira melhor
para encapsular e reutilizar código. Em aplicações de grande escala, o uso de módulos pode tornar a
estrutura do código mais clara e facilitar a manutenção e expansão.
2.10.1 Criando Módulos
Em FR Lua, as tabelas são usadas para criar módulos definindo diretamente uma tabela e
retornando-o como módulo. Este método é mais intuitivo e claro.
Código 2-88 Criando um módulo usando tabelas
1. --Criar módulos usando tabelas
2. --robot_module.lua
3. módulo_robô local = {}
4.
5. robot_module.versão = "1.0"
6.
7. função robot_module.greet()
8. imprimir ("Bem-vindo ao uso do robô colaborativo FAIRINO")
9. fim
10.
11. retornar robot_module
2.10.2 Chamada de Módulo
FR Lua usa a função require para carregar módulos. Require executará o módulo
arquivo e retornar a tabela do módulo. Os módulos geralmente são salvos no mesmo diretório que
Scripts FR Lua ou configurados no caminho especificado pelo ambiente LUA_PATH
variável.
A função require será executada apenas uma vez quando o módulo for carregado para
Machine Translated by Google
52 / 152 Script de programação FRLua
primeira vez e o resultado será armazenado em cache. Se você chamar require o mesmo módulo várias vezes
vezes, ele retornará apenas a tabela do primeiro módulo carregado e não recarregará o
módulo. Este comportamento ajuda a melhorar o desempenho e evitar carregamento duplicado e
execução.
O código 2-89 registra os módulos que foram criados
1. --Carregando módulo
2. robô local = requer "robot_module"
3.
4. --Usando funções no módulo
5. robot.green() -- Saída: Bem-vindo ao uso do robô colaborativo FAIRINO
2.10.3 Caminho de pesquisa
FR Lua usa um caminho de busca para encontrar arquivos de módulo. Este caminho pode ser definido através do
pacote. variável de caminho. O caminho é uma string contendo padrões, e FR Lua irá pesquisar
para arquivos de módulo nos diretórios especificados por esses padrões. O caminho do pacote pode ser definido
no script para especificar o caminho de pesquisa para o módulo:
O código 2-90 registra os módulos que foram criados
1. package.path = package.path .. ";/ caminho/para/módulos/?.lua"
2. mathlib local = require("módulo_robô")
Machine Translated by Google
53 / 152 Script de programação FRLua
3 funções predefinidas do script Lua FR
3.1 Instrução lógica
3.1.1 Laço
Consulte a seção 2.2.2 para obter detalhes.
3.1.2 Esperando
Esta instrução é uma instrução de atraso, dividida em quatro partes: "WaitMs", "WaitDI",
"WaitMultiDI" e "WaitAI".
WaitMs: Aguarde um tempo especificado
Tabela 3-1 Parâmetros detalhados de WaitMs
Atributo Explicação
Protótipo EsperaMs(t_ms)
Descrição Aguarde o tempo especificado
Parâmetro ·t_ms: Unidade [ms].
Valor de retorno nulo
WaitDI: Aguardando entrada digital da caixa de controle
Tabela 3-2 Parâmetros detalhados de WaitDI
Atributo Explicação
Protótipo WaitDI (id, status, tempo máximo, opção)
Descrição Aguardando entrada digital da caixa de controle
·id: Número da porta DI da caixa de controle, caixa de controle 0-7 DI0-DI7, caixa de controle 8-15
CI0-CI7;
·status:0-Falso,1-Verdadeiroÿ
Parâmetro
·maxtime:tempo máximo de espera, unidade [ms];
·opt: Política após tempo limite, 0-o programa para e avisa sobre tempo limite, 1-ignorar
prompt de tempo limite para continuar a execução do programa, 2-espere indefinidamente.
Valor de retorno nulo
Machine Translated by Google
54 / 152 Script de programação FRLua
WaitToolDI: Aguardando entrada numérica da ferramenta
Tabela 3-3 Parâmetros detalhados do WaitToolDI
Atributo Explicação
Protótipo WaitToolDI (id, status, tempo máximo, opção)
Descrição Aguardando entrada digital da caixa de controle
·id: Número da porta DI da ferramenta, 0 - End-DI0, 1 - End-DI1;
·status:0-Falso,1-Verdadeiroÿ
Parâmetro ·maxtime:tempo máximo de espera, unidade [ms];
·opt: Política após tempo limite, 0-o programa para e avisa sobre tempo limite, 1-ignorar
prompt de tempo limite para continuar a execução do programa, 2-espere indefinidamente.
Valor de retorno nulo
WaitMultiDI: Aguardando múltiplas entradas digitais da caixa de controle
Tabela 3-4 Parâmetros detalhados de WaitMultiDI
Atributo Explicação
Protótipo WaitMultiDI (modo, id, status, tempo máximo, opção)
Descrição Aguardando múltiplas entradas digitais da caixa de controle
·modo: [0] - Multicanal AND, [1] - Multicanal OR;
·id: número io, bit0~bit7 corresponde a DI0~DI7, bit8~bit15 corresponde a
CI0~CI7;
·status: bit0~bit7 corresponde ao status DI0~DI7, bit8~bit15 corresponde ao status CI0~CI7: 0-
Parâmetro
Falso, 1-Verdadeiro;
·maxtime:tempo máximo de espera, unidade [ms];
·opt: Política após tempo limite, 0-o programa para e solicita tempo limite, 1-ignora o prompt de
tempo limite para continuar a execução do programa, 2-aguarda indefinidamente.
Valor de retorno nulo
WaitAI: Aguardando entrada analógica da caixa de controle
Tabela 3-5 Parâmetros detalhados do WaitAI
Atributo Explicação
Protótipo WaitAI (id, sinal, valor, tempo máximo, opção)
Descrição Aguardando entrada analógica da caixa de controle
·id: número io, intervalo [0~1];
·sinal: 0- maior que, 1- menor que
Parâmetro ·valor: Insira a porcentagem do valor de corrente ou tensão, com um intervalo de [0~100]
correspondendo ao valor de corrente [0~20mA] ou tensão [0~10V];
·maxtime:tempo máximo de espera, unidade [ms];
Machine Translated by Google
55 / 152 Script de programação FRLua
Tabela 3-5 (continuação)
Atributo Explicação
·opt: Política após tempo limite, 0-o programa para e solicita tempo limite, 1-ignora o prompt de
Parâmetro
tempo limite para continuar a execução do programa, 2-aguarda indefinidamente.
Valor de retorno nulo
WaitToolAI: Aguardando entrada analógica da ferramenta
Tabela 3-6 Parâmetros detalhados do WaitToolAI
Atributo Explicação
Descrição WaitToolAI (id, sinal, valor, tempo máximo, opção)
do protótipo Aguardando entrada analógica da ferramenta
·id: número io, 0 Fim AI0;
·sinal: 0 maior que, 1 menor que;
·valor: Insira a porcentagem do valor de corrente ou tensão, com um intervalo de [0~100]
Parâmetro correspondendo ao valor de corrente [0~20mA] ou tensão [0~10V];
·maxtime: tempo máximo de espera, unidade [ms];
·opt: Política após tempo limite, 0-o programa para e solicita tempo limite, 1-ignora o prompt de
tempo limite para continuar a execução do programa, 2-aguarda indefinidamente.
Valor de retorno nulo
Exemplo de instrução de espera do código 3-1
1. --Esperando
2. WaitMs (1000) – Aguarda um tempo especificado de 1000 ms
3.
4. --Aguardando entrada digital da caixa de controle
5. WaitDI (1,1,0,1) -- Número da porta: Ctrl-DI1, status: verdadeiro (ligado), tempo máximo de espera: 1000 ms,
política após aguardar o tempo limite: ignorar o prompt de tempo limite e continuar a execução do programa
6.
7. --Aguardando entrada digital da ferramenta
8. WaitToolDI (1,1,0,1) -- Número da porta: End DI0, status: verdadeiro (aberto), tempo máximo de espera: 1000 ms, política
após tempo limite de espera: ignorar prompt de tempo limite e continuar a execução do programa
9.
10. --Aguardando múltiplas entradas digitais da caixa de controle
11. WaitMultiDI (0,3,11000,0) -- Multicanal AND, números de porta IO: DI0 e DI1, DI0 ligado, DI1 desligado, tempo máximo de
espera: 1000 ms, política após tempo limite: o programa para e exibe o tempo limite.
12. WaitMultiDI (1,3,3,1,0) -- Vários OR, números de porta IO: DI0 e DI1, DI0 aberto, DI1 aberto, tempo máximo de espera: 1000
ms, política após tempo limite: o programa para e exibe tempo limite.
13.
14. --Aguardando entrada analógica da caixa de controle
15. WaitAI (0,0,20,1000,0) -- Porta IO: caixa de controle AI0, condição:<, valor: 20, espera máxima
Machine Translated by Google
56 / 152 Script de programação FRLua
Código 3-1 (continuação)
tempo: 1000 ms, política após tempo limite: o programa para e exibe tempo limite.
16. --Aguardando entrada analógica da ferramenta
17. WaitToolAI (0,0,20,1000,0) -- Porta IO: Caixa de controle End-AI0, condição:<, valor: 20, tempo máximo de espera: 1000
ms, política após tempo limite: o programa para e emite um prompt
tempo esgotado.
3.1.3 Pausa
Pausa: Pausa
Tabela 3-7 Parâmetros detalhados de pausa
Atributo Explicação
Protótipo Pausa (número)
Descrição Chamar sub-rotinas
Parâmetro ·num: valor numérico personalizado
Valor de retorno nulo
FR Lua definiu os seguintes métodos de pausa
Exemplo de pausa do código 3-2
1. Pausa (0) -- Sem função
2. Pausa (2) -- Cilindro não colocado
3. Pausa (3) -- O parafuso não está no lugar
4. Pausa (4) -- Manuseio de fechadura flutuante
5. Pausa (5) -- Tratamento de dente deslizante
3.1.4 Sub-rotinas
NewDofile: chamada de subrotina
Tabela 3-8 Parâmetros detalhados de NewDofile
Atributo Explicação
Protótipo NewDofile (nome_caminho, camada, id)
Descrição Chamar sub-rotinas
·Name_cath: O caminho do arquivo contendo a sub-rotina do arquivo, "/fruser/# # # #. lua";
Parâmetro ·Camada: número da camada que chama a subrotina;
·id: número de identificação.
Valor de retorno nulo
Machine Translated by Google
57 / 152 Script de programação FRLua
DofileEnd: chamada de subrotina termina
Tabela 3-9 Parâmetros detalhados de DofileEnd
Atributo Explicação
Protótipo DofileEnd()
Descrição A chamada da subrotina termina
Parâmetro nulo
Valor de retorno nulo
Código 3-3 Exemplo de chamada e fechamento de sub-rotinas
1. --Chame a sub-rotina dofile1.lua
2. NewDofile("/fruser/dofile1.lua",1,1);
3.
4. DofileEnd();-- Fim da chamada de subrotina
3.1.5 Variáveis
O conteúdo básico das variáveis é detalhado na seção 2.1.3. FR Lua também define
tipos de variáveis de consulta e consultas e atribuições de variáveis do sistema.
RegisterVar: Consulta de tipo de variável
Tabela 3-10 Parâmetros detalhados de RegisterVar
Atributo Explicação
Protótipo RegisterVar (tipo, nome)
Descrição Tipo de variável consulta
·tipo: tipo de variável;
Parâmetro
·nome: nome da variável.
Valor de retorno nulo
GetSysVarvalue: recuperar variáveis do sistema
Tabela 3-11: Parâmetros detalhados de GetSysVarvalue
Atributo Explicação
Protótipo Obter valor SysVar (s_var)
Descrição Recuperar variáveis do sistema
Parâmetro ·s_var: Nome da variável do sistema.
Valor de retorno var_ralue: valor da variável do sistema
Machine Translated by Google
58 / 152 Script de programação FRLua
SetSysVarvalue: define variáveis do sistema
Tabela 3-12 Parâmetros detalhados de SetSysVarvalue
Atributo Explicação
Protótipo SetSysVarvalue (s_var, valor)
Descrição Definir variáveis do sistema
·s_var: nome da variável do sistema;
Parâmetro
·valor: O valor da variável de entrada.
Valor de retorno nulo
Exemplo de operações relacionadas a variáveis FR Lua e valores de variáveis de sistema no código 3-4
1. frvalue1 local = 0,0
2. Registrar Var ("número", "frvalue1") -- Consulta de variáveis numéricas
3. frString local = "X:3.4, Y:0.0"
4. Registrar Var ("string", "frString") -- Consulta de variável de caractere
5.
6. TEST_1=Get SysVarvalue (s_var_3) -- Obtenha o valor da variável do sistema e atribua-o a
TESTE_1
7. Definir valor da variável do sistema (s_var_3,1) -- Definir valor da variável do sistema
3.2 Comando de movimento
3.2.1 Ponto a ponto
PTP: ponto a ponto
Tabela 3-13 Parâmetros detalhados do PTP
Atributo Explicação
PTP (nome_do_ponto, ovl, blendT, sinalizador_deslocamento, deslocamento_x, deslocamento_y, deslocamento_z,
Protótipo
deslocamento_rx, deslocamento_ry, deslocamento_rz)
Descrição movimento ponto a ponto
·point_name: Nome do ponto de ensino alvo
·ovl: Velocidade de depuração, intervalo [0~100%];
·blend T: [-1] - Não suave, [0~500] - Tempo suave, unidade: [ms];
Parâmetro
·offset_flag: [0] - sem deslocamento, [1] - deslocamento na coordenada da peça/base
sistema, [2] - o deslocamento padrão no sistema de coordenadas da ferramenta é 0;
·offset_x~offset_rz: deslocamento, unidade [mm] [°];
Valor de retorno nulo
Machine Translated by Google
59 / 152 Script de programação FRLua
MoveJ: Movimento Espacial Articular
Tabela 3-14 Parâmetros detalhados do MoveJ
Atributo Explicação
MoveJ (j1, j2, j3, j4, j5, j6, x, y, z, rx, ry, rz, ferramenta, usuário, velocidade, acc, ovl, ep1, ep2, ep3, ep4, blendT,
Protótipo deslocamento, deslocamento_x, deslocamento_y, deslocamento_z, deslocamento_rx, deslocamento_ry,
deslocamento_rz)
Descrição Movimento do Espaço Articular
·j1~j6: Posição da articulação alvo, unidade [°];
·x. y, z, rx, ry, rz: Pose cartesiana do alvo, unidade [mm] [°];
·ferramenta: número da ferramenta;
·usuário: número da peça;
·velocidade: velocidade, intervalo [0~100%];
·acc: Aceleração, alcance [0~100%], temporariamente não aberto;
Parâmetro
·ovl: Velocidade de depuração, intervalo [0~100%];
·ep1~ep4: Posição do eixo externo 1~Posição do eixo externo 4;
·blend T: [-1] - Não suave, [0~500] - Tempo suave, unidade: [ms];
·offset: [0] - sem offset, [1] - offset no sistema de coordenadas da peça/base, [2] - offset no sistema de
coordenadas da ferramenta;
·offset_x~offset_rz: deslocamento, unidade [mm] [°].
Valor de retorno nulo
Código 35: Usando instruções ponto a ponto para exemplo de movimento
1. --Usando o MoveJ para exercícios
2. x,y,z,rx,ry,rz=ObterKinParaFrente(149,135,-79,058,-78,558,-145,409,-94,182,88,654)
3. MoverJ(149.135,-79.058,-78.558,-145.409,-94.182,88.654,
x,y,z,rx,ry,rz,1,0,100,180,100,0,000,0,000,0,000,0,000,0,0,0,0,0,0,0)
4. --Usando PTP para movimento
5. PTP (DW01,100, -1,0) -- Nome do ponto alvo: DW01, Porcentagem de velocidade: 100, Bloqueado:
Sim (-1- Parada), deslocamento: 0- Não
6. PTP(DW01,100,10,0)
7. --Nome do ponto alvo: DW01, Porcentagem de velocidade: 100, Bloqueio: Não (10- Transição suave
Tempo de 10ms), offset: 0- Não
8. PTP(DW01,100,10,1,0,0,0,0,0,0)
9. --Nome do ponto alvo: DW01, Porcentagem de velocidade: 100, Bloqueio: Não (10 ms), Deslocamento: Sim (1-
Deslocamento do sistema de coordenadas da peça de trabalho/base), Deslocamento de pose: [0,0, 0,0, 0,0, 0,0]
10. PTP(DW01,100,10,2,0,0,0,0,0,0)
11. --Nome do ponto alvo: DW01, Porcentagem de velocidade: 100, Bloqueio: Não (10 ms), Deslocamento: Sim (2-
Deslocamento do sistema de coordenadas da ferramenta), Deslocamento de pose: [0,0, 0,0, 0,0, 0,0, 0,0]
Machine Translated by Google
60 / 152 Script de programação FRLua
3.2.2 Linha Reta
Lin: Movimento linear
Tabela 3-15 Parâmetros detalhados de Lin
Atributo Explicação
Lin (nome_do_ponto, ovl, blendR, pesquisa, sinalizador_deslocamento, deslocamento_x, deslocamento_y,
Protótipo
deslocamento_z, deslocamento_rx, deslocamento_ry, deslocamento_rz)
Descrição Movimento Linear Lin
·point_name: Nome do ponto de destino;
·ovl: Velocidade de depuração, padrão de 0 a 100 é 100,0;
·blendR: [-1.0] - Movimento no local (bloqueio), [0~1000] - Raio suave (não
bloqueio), unidade [mm];
Parâmetro
·pesquisar: [0] - Nenhum posicionamento (fio de solda), [1] posicionamento (fio de solda);
·offset: [0] - sem offset, [1] - offset no sistema de coordenadas da peça/base, [2] - offset no sistema
de coordenadas da ferramenta;
·offset_x~offset_rz: deslocamento, unidade [mm] [°].
Valor de retorno nulo
MoveL: Movimento Linear no Espaço Cartesiano
Tabela 3-16 Parâmetros detalhados do MoveL
Atributo Explicação
MoveL (j1, j2, j3, j4, j5, j6, x, y, z, rx, ry, rz, ferramenta, usuário, velocidade, acc, ovl, ep1, ep2, ep3, ep4,
Protótipo blendR, pesquisa, deslocamento, deslocamento_x, deslocamento_y, deslocamento_z, deslocamento_rx,
deslocamento_ry, deslocamento_rz)
Descrição movimento linear no espaço cartesiano
·j1~j6: Posição da articulação alvo, unidade [°];
·x, y, z, rx, ry, rz: Pose cartesiana do alvo, unidade [mm] [°];
·ferramenta: número da ferramenta;
·usuário: número da peça;
·velocidade: velocidade, intervalo [0~100%];
·acc: Aceleração, alcance [0~100%], temporariamente não aberto;
Parâmetro ·ovl: Velocidade de depuração, intervalo [0~100%];
·ep1~ep4: Posição do eixo externo 1~Posição do eixo externo 4;
·blendR: [-1] - Não suave, [0~1000] - Raio suave, unidade [mm];
·pesquisar: [0] - Posicionamento de arame não soldado, [1] - posicionamento de arame soldado;
·offset: [0] - sem offset, [1] - offset no sistema de coordenadas da peça/base, [2] - offset no sistema
de coordenadas da ferramenta;
·offset_x~offset_rz: deslocamento, unidade [mm] [°].
Valor de retorno nulo
Machine Translated by Google
61 / 152 Script de programação FRLua
Exemplo de movimento do código 3-6 usando instruções lineares
1. --Usando MoveL para movimento linear
2. j1,j2,j3,j4,j5,j6=ObterKinInverso(0,-315,039,327,526,786,334,0,052,-32,916,-32,464,-
1)
3. MoveL(j1, j2,j3,j4,j5,j6,-315.039,327.526,786.334,0.052,-32.916,-32.464, 1,0, 100, 180, 100, -1,
0.000,0.000,0.000,0.000,0,0,0,0,0,0,0,0)
4. --Movimento Linear Básico
5. Lin (DW01,100, -1,0,0) -- Nome do ponto alvo: DW01, Porcentagem de velocidade: 100, Bloqueio: Sim (-1),
Posicionamento: Não, Deslocamento: Não
6. Lin (DW01,100,10,0,0) -- Informações do ponto alvo: DW01, Porcentagem de velocidade: 100, Bloqueio: Não (10
mm), Posicionamento: Não, Deslocamento: Não
3.2.3 Arco
ARC: Movimento de Arco
Tabela 3-17 Parâmetros detalhados do ARC
Atributo Explicação
ARC (nome_ponto_p, deslocamento_p, deslocamento_px, deslocamento_py, deslocamento_pz, deslocamento_prx,
Protótipo deslocamento_pry, deslocamento_prz, nome_ponto_t, deslocamento_tx, deslocamento_ty, deslocamento_tz,
deslocamento_trx, deslocamento_try, deslocamento_trz, ovl, mistura)
Descrição ARC movimento de arco
·point_p_name: o nome do ponto médio do arco;
·poffset: [0] - sem deslocamento, [1] - deslocamento no sistema de coordenadas da peça/base, [2] -
deslocamento no sistema de coordenadas da ferramenta;
offset_px~offset_prz: deslocamento, unidade [mm] [°];
·point_t_name: o nome do ponto final do arco;
Parâmetro
·Toffst: [0] - sem deslocamento, [1] - deslocamento no sistema de coordenadas da peça/base, [2] -
deslocamento no sistema de coordenadas da ferramenta;
·offset_tx~offset_trz: Quantidade de deslocamento, unidade [mm] [°].
·ovl: Velocidade de depuração, intervalo [0~100%];
·blendR: [-1] - Não suave, [0~1000] - Raio suave, unidade [mm].
Valor de retorno nulo
MoveC: movimento circular no espaço cartesiano
Tabela 3-18 Parâmetros detalhados do MoveC
Atributo Explicação
MoveC (pj1, pj2, pj3, pj4, pj5, pj6, px, py, pz, prx, alavanca, prz, ptool, puser, pspeed, pacc, pep1,
pep2, pep3, pep4, poffset, offset_px, offset_py, offset_pz, offset_prx, offset_pry, offset_prz, tj1, tj2,
Protótipo tj3, tj4, tj5, tj6, tx, ty, tz, trx, try, trz, ttool, tuser, tspeed, tacc, tep1, tep2, tep3, tep4, tooffset, offset_tx,
offset_ty, offset_tz, offset_trx, offset_try, offset_trz, ovl, blendR)
Machine Translated by Google
62 / 152 Script de programação FRLua
Tabela 3-18 (continuação)
Atributo Explicação
Descrição Movimento circular no espaço cartesiano
·pj1~pj6: Posições conjuntas dos pontos do caminho, unidade [°];
·px, py, pz, prx, pry, prz: Pose cartesiana de pontos do caminho, unidade [mm] [°];
·ptool: número da ferramenta;
·empurrador: número da peça de trabalho;
·pspeed: velocidade, intervalo [0~100%];
·pacc: Aceleração, alcance [0~100%], temporariamente não aberto;
·pep1~pep4: Posição do eixo externo 1~Posição do eixo externo 4;
·poffset: [0] - sem deslocamento, [1] - deslocamento no sistema de coordenadas da peça/base, [2] -
deslocamento no sistema de coordenadas da ferramenta;
offset_px~offset_prz: deslocamento, unidade [mm] [°];
·tj1~tj6: Posição conjunta do ponto alvo, unidade [°];
Parâmetro
·tx, ty, tz, trx, try, trz: Pose cartesiana do ponto alvo, unidade [mm] [°];
·ttool: número da ferramenta;
·tuser: número da peça de trabalho;
·tspeed: velocidade, intervalo [0~100%];
·tacc: Aceleração, alcance [0~100%], temporariamente não aberto;
·passo 1~passo 4: Posição do eixo externo 1~Posição do eixo externo 4;
·Toffst: [0] - sem deslocamento, [1] - deslocamento no sistema de coordenadas da peça/base, [2] -
deslocamento no sistema de coordenadas da ferramenta;
·offset_tx~offset_trz: Quantidade de deslocamento, unidade [mm] [°].
·ovl: Velocidade de depuração, intervalo [0~100%];
·blendR: [-1] - Não suave, [0~1000] - Raio suave, unidade [mm].
Valor de retorno nulo
Código 3-7: Usando instruções de arco para exemplo de movimento
1. --Usando MoveC para movimento circular
2. pj1,pj2,pj3,pj4,pj5,pj6=ObterKinInverso(0,388,104,-462,265,-5,226,177,576,-
1.292.143.417,-1)
3. tj1,tj2,tj3,tj4,tj5,tj6=ObterKinInverso(0, 271,474,-476,328,3,739,179,502,-2,433,134,753,-1)
4. MoverC(pj1, pj2,pj3,pj4,pj5,pj6,388.104,-462.265,-5.226,177.576,-
1.292,143.417,1,0,100,180,0.000,0.000,0.000,0.000,0,0,0,0,0,0,0,
-
tj1,tj2,tj3,tj4,tj5,tj6,271.474,-476.328,3.739,179.502,
2.433,134.753,1,0,100,180,0.000,0.000,0.000,0.000,0,000,0,0,0,0,0,0,100,-1)
5. --Usando ARC para movimento circular básico
6. PTP (DW01,100, -1,0) -- Modo PTP, movendo para a posição do ponto inicial
7. -- Lin(DW01,100, -1,0,0) -- Mover em linha reta até a posição do ponto inicial
8.
Machine Translated by Google
63 / 152 Script de programação FRLua
Código 3-7 (continuação)
7. ARCO(DW02,0,0,0,0,0,0,0, DW03,0,0,0,0,0,0,0,100,-1)
8. --O ponto médio do movimento do arco DW02, 0- não deslocado; DW03: Coordenadas do ponto final do arco, 0-
sem deslocamento, 100% da velocidade do movimento, -1- parada no ponto final
9.
10. --Movimento de arco baseado no deslocamento de coordenadas base usando ARC
11. PTP (DW01, 100, -1,0) --modo PTP, movendo para a posição do ponto inicial
12. ARC(DW02, 1, 1, 2, 3, 4, 5, 6, DW03, 1, 11, 12, 13, 14, 15, 16, 100, -1)
13. --O ponto médio do movimento do arco DW02, deslocamento de coordenada de base 1; coordenadas cartesianas de
deslocamento 1, 2, 3, 4, 5, 6, DW03: coordenadas do ponto final do arco, deslocamento de coordenada de base 1,
coordenadas cartesianas de deslocamento 11, 12, 13, 14, 15, 16, porcentagem de velocidade de movimento 100,
deslocamento -1- no ponto final
14.
15. --Movimento de arco baseado no deslocamento de coordenadas da ferramenta usando ARC
16. PTP (DW01,100, -1,0)--Modo PTP, movendo para a posição do ponto inicial
17. ARCO(DW02,2,1,2,3,4,5,6, DW03,2,11,12,13,14,15,16,100,-1)
18. --O ponto médio do movimento do arco DW02, deslocamento de marca de 2 ferramentas; 1, 2, 3, 4, 5, 6-deslocamentos de coordenadas
cartesianas, DW03: coordenadas do ponto final do arco, deslocamento de coordenada de 2 ferramentas, 11, 12, 13, 14, 15, 16
deslocamentos de coordenadas cartesianas, 100 porcentagem de velocidade de movimento, deslocamento de -1- no ponto final
19.
20. --Usando ARC para permitir movimento circular suave
21. PTP (DW01,100, -1,0) --modo ponto a ponto, movendo-se para a posição do ponto inicial
22. ARCO(DW02,0,0,0,0,0,0,0, DW03,0,0,0,0,0,0,0,100,30)
23. --O ponto médio do movimento do arco DW02, 0- não deslocado; DW03: Coordenadas do ponto final do arco, 0-
sem deslocamento, 100% da velocidade de movimento, 30- suave 30mm
3.2.4 Círculo completo
Círculo: Movimento circular completo (espaço cartesiano)
Tabela 3-19: Parâmetros detalhados do círculo
Atributo Explicação
Círculo (pj1, pj2, pj3, pj4, pj5, pj6, px, py, pz, prx, pry, prz, ptool, puser, pspeed, pacc, pep1, pep2, pep3,
pep4, tj1, tj2, tj3, tj4, tj5, tj6, tx, ty, tz, trx, try, trz, ttool, tuser, tspeed, tacc, tep1, tep2, tep3, tep4, ovl,
Protótipo
deslocamento, deslocamento_x, deslocamento_y, deslocamento_z, deslocamento_rx, deslocamento_ry,
deslocamento_rz)
Descrição Movimento circular completo (espaço cartesiano)
·pj1~pj6: Posições conjuntas dos pontos do caminho, unidade [°];
·px, py, pz, prx, pry, prz: Pose cartesiana de pontos do caminho, unidade [mm] [°];
Parâmetro
·ptool: número da ferramenta;
·empurrador: número da peça de trabalho;
Machine Translated by Google
64 / 152 Script de programação FRLua
Tabela 3-19 (continuação)
Atributo Explicação
·pspeed: velocidade, intervalo [0~100%];
·pacc: Aceleração, alcance [0~100%], temporariamente não aberto;
·pep1~pep4: Posição do eixo externo 1~Posição do eixo externo 4;
·tj1~tj6: Posição conjunta do ponto alvo, unidade [°];
·tx, ty, tz, trx, try, trz: Pose cartesiana do ponto alvo, unidade [mm] [°];
·ttool: número da ferramenta;
·tuser: número da peça de trabalho;
Parâmetro
·tspeed: velocidade, intervalo [0~100%];
·tacc: Aceleração, alcance [0~100%], temporariamente não aberto;
·passo 1~passo 4: Posição do eixo externo 1~Posição do eixo externo 4;
·ovl: Velocidade de depuração, intervalo [0~100%];
·offset: [0] - sem offset, [1] - offset no sistema de coordenadas da peça/base, [2] - offset no sistema
de coordenadas da ferramenta;
·offset_x~offset_rz: deslocamento, unidade [mm] [°].
Valor de retorno nulo
Círculo: movimento de círculo completo
Tabela 3-20: Parâmetros detalhados do novo círculo
Atributo Explicação
Círculo (nome_pos_p, nome_pos_t, ovl, sinalizador_deslocamento, deslocamento, deslocamento_x, deslocamento_y,
Protótipo
deslocamento_z, deslocamento_rx, deslocamento_ry, deslocamento_rz)
Descrição Movimento circular
·pos_p_name: Nome do ponto médio 1 de todo o círculo;
·pos_t_name: Nome do ponto médio 2 de todo o círculo;
·ovl: Velocidade de depuração, intervalo [0~100%];
Parâmetro
·offset: [0] - sem offset, [1] - offset no sistema de coordenadas da peça/base, [2] - offset no sistema
de coordenadas da ferramenta;
·offset_x~offset_rz: deslocamento, unidade [mm] [°].
Valor de retorno nulo
O código 3-8 utiliza a instrução circular para movimento
1. --Movimento circular completo (espaço cartesiano)
2. pj1,pj2,pj3,pj4,pj5,pj6=ObterKinInverso(0,388,104,-462,265,-5,226,177,576,-
1.292.143.417,-1)
3. tj1,tj2,tj3,tj4,tj5,tj6=ObterKinInverso(0, 271,474,-476,328,3,739,179,502,-2,433,134,753,-1)
4. Círculo(pj1, pj2,pj3,pj4,pj5,pj6,388,104,-462,265,-5,226,177,576,-1,292, 143,417, 1, 0, 100, 180, 0,000, 0,000, 0,000, tj1,
tj2, tj3, tj4, tj5, tj6, 271,474, -476,328, 3,739, 179,502,-
2.433.134.753,1,0,100,180,0,000,0,000,0,000,0,000,100,0,0,0,0,0,0,0)
Machine Translated by Google
65 / 152 Script de programação FRLua
Código 3-8 (continuação)
5.
6. --Movimento circular
7. PTP (DW01,100, -1,0) Movimento PTP para a posição do ponto inicial
8. --Lin (DW01,100, -1,0,0) -- Movimento em linha reta até a posição do ponto inicial
9.
10. Círculo(DW02,DW03,100,0)
11. --O ponto médio do movimento circular do DW02 (ponto de trajetória 1); DW03: Coordenadas do ponto final do
arco (ponto de caminho 2), 100-- porcentagem da velocidade do movimento, 0- sem deslocamento
12.
13. Círculo(DW02, DW03,100,1,0,0,10,0,0,0)
14. --O ponto médio do movimento circular de DW02; DW03: Coordenadas do ponto final do arco, 100-
porcentagem da velocidade do movimento, 1- com base no deslocamento da coordenada base, ângulo de deslocamento da junta
0,0,10,0,0,0
15.
16. Círculo(DW02, DW03,100,2, 0,0,10,0,0,0)
17. --O ponto médio do movimento circular de DW02; DW03: Coordenadas do ponto final do arco, 100-
porcentagem da velocidade de movimento, 2- com base no deslocamento da coordenada da ferramenta, ângulo de deslocamento da junta 0,0,10,0,0,0
3.2.5 Espiral
Espiral: movimento espiral
Tabela 3-21 Parâmetros detalhados da espiral
Atributo Explicação
Espiral (nome_pos_1, nome_pos_2, nome_pos_3, ovl, sinalizador_deslocamento, deslocamento_x,
deslocamento_y, deslocamento_z,offset_rx,
deslocamento_ry, deslocamento_rz, número_círculo,
Protótipo
ângulo_círculo_Co_rx, ângulo_círculo_Co_ry, ângulo_círculo_Co_rz, adição_rad, adição_rotaxis)
Descrição Movimento espiral
·pos_1_name: o nome do ponto médio 1 da linha espiral;
·pos_2_name: o nome do ponto médio 2 da linha espiral;
·pos_3_name: o nome do ponto médio 3 da linha espiral;
·ovl: Velocidade de depuração, intervalo [0~100%], padrão 100,0;
·offset_flag: [0] - sem deslocamento, [1] - deslocamento no sistema de coordenadas da peça/
base, [2] - o deslocamento padrão no sistema de coordenadas da ferramenta é 0;
Parâmetro
·offset_x~offset_rz: deslocamento, unidade [mm] [°];
·circle_num: número de voltas em espiral;
Parâmetro ·circle_ongle Co_rx~circle_ongle Co_rx: ângulo de atitude
correção, unidade [°]
·radadded: incremento de raio, unidade [mm];
·rotaxias_add: direção do eixo incremental, unidade [mm].
Valor de retorno nulo
Machine Translated by Google
66 / 152 Script de programação FRLua
Exemplo de movimento de instrução espiral do código 3-9
1. --Movimento Espiral Espiral Básico
2. Espiral (DW01, DW02, DW03, 100,0,0,0,0,0,0,5,0,0,0,10,10)
3. --DW01- Nome do ponto médio 1 da linha espiral, DW02- Nome do ponto médio 2 da linha espiral, DW03-
Nome do ponto médio 3 da linha espiral, 100- Velocidade de depuração, 0- Sem deslocamento, 5- Número de voltas
espirais, (0,0,0) correção do ângulo de atitude, 10- Incremento do raio, 10- Incremento da direção do eixo;
4. --Movimento espiral em espiral com deslocamento de coordenada de base
5. Espiral (DW01, DW02, DW03,100,1,1,0,0,10, 0,0,0,0,0,0,10,10)
6. --DW01- Nome do ponto médio da espiral 1, DW02- Nome do ponto médio da espiral 2, DW03- Nome do ponto médio da
espiral 3, 100- Velocidade de depuração, 1- Deslocamento da coordenada base, (0,0,10, 0,0,0) - Parâmetro de deslocamento, 5-
Giros espirais, correção de ângulo de atitude (0,0,0), incremento de raio de 10, incremento de direção do eixo de 10;
7. --Movimento espiral em espiral com deslocamento de coordenadas da ferramenta
8. Espiral(DW01, DW02,DW03,100,2,1, 0,0,10, 0,0,0,0,0,0,10,10)
9. --DW01- Nome do ponto médio da espiral 1, DW02- Nome do ponto médio da espiral 2, DW03- Nome do ponto médio da espiral 3,
100- Velocidade de depuração, 0- Deslocamento da coordenada da ferramenta, (0,0,10, 0,0,0) - Parâmetro de deslocamento, 5-
Giros espirais, correção do ângulo de atitude (0,0,0), incremento de raio de 10, direção do eixo de 10
incremento.
3.2.6 Nova Espiral
NewSpiral: Novo Movimento Espiral
Tabela 3-22 Parâmetros detalhados do NewSpiral
Atributo Explicação
NewSpiral (nome_pos_desc, ovl, sinalizador_deslocamento = 2, deslocamento_x, deslocamento_y, deslocamento_z,
Protótipo deslocamento_rx, deslocamento_ry, deslocamento_rz, número_do_círculo, ângulo_do_círculo, inicialização_rad, adição_rad ÿ
direção_de_rotura)
Descrição NewSpiral novo movimento espiral
·desc_pos_name: Nome do ponto inicial do novo movimento espiral;
·ovl: Velocidade de depuração, padrão de 0 a 100 é 100,0;
·offset_flag: [0] - sem deslocamento, [1] - deslocamento no sistema de coordenadas da peça/base, [2] -
deslocamento padrão no sistema de coordenadas da ferramenta 2 (parâmetro fixo);
·offset_x~offset_rz: deslocamento, unidade [mm] [°];
Parâmetro ·circle_num: número de voltas em espiral;
·circle_angle Ângulo de inclinação da espiral, unidade [°];
·rad_init: Raio inicial da espiral, unidade [mm];
·radadded: incremento de raio, unidade [mm];
·rotaxias_add: direção do eixo incremental, unidade [mm];
·rot_direction: Direção de rotação, 0- sentido horário, 1- sentido anti-horário.
Valor de retorno nulo
Machine Translated by Google
67 / 152 Script de programação FRLua
Código 3-10 - Novo Exemplo de Movimento de Instrução em Espiral
1. --Movimento espiral N-espinhal no sentido horário
2. PTP (DW01,100,0,2,50,0,0, -30,0,0) -- Usando PTP para mover para o ponto inicial da linha espiral (modo de movimento
fixo)
3. --DW01 Ponto de partida em espiral 1 Nome, 100 Velocidade de depuração, 2 Deslocamento de coordenada da ferramenta,
(50, 0, 0, -30, 0, 0) - Parâmetros de deslocamento (x, y, z, rx, ry, rz)
4.
5. Nova Espiral(DW01,100,2,50,0,0,30,0,0,5,30,50,10,15,0)
6. --DW01 Ponto de partida em espiral 1 Nome, 100 Velocidade de depuração, 2 Deslocamento de coordenada da ferramenta,
(50, 0, 0, -30, 0, 0) - Parâmetros de deslocamento (x, y, z, rx, ry, rz), 5 Círculos em espiral, 30 Ângulo de inclinação em
espiral, 50 Raio inicial, 10 Incremento de raio, 15 Incremento de direção do eixo, 0 Sentido horário
7. --Movimento espiral N-Espiral no sentido anti-horário
8. PTP (DW01,100,0,2,50,0,0, -30,0,0) -- Use PTP para mover para o ponto inicial da espiral
linha
9.
10. Nova Espiral(DW01,100,2,50,0,0,30,0,0,5,30,50,10,15,1)
11. --DW01 Nome do ponto inicial da espiral 1, 100 Velocidade de depuração, 2 Deslocamento da coordenada da ferramenta, (50, 0, 0,
-30, 0, 0) - Parâmetros de deslocamento (x, y, z, rx, ry, rz), 5 Voltas da espiral, 30 Ângulo de inclinação da espiral, 50 Raio inicial,
10 Incremento do raio, 15 Incremento da direção do eixo, 1 Sentido anti-horário
3.2.7 Espiral horizontal
O movimento espiral horizontal H-Spiral é completado pela combinação do Horizonte
Início do movimento em espiral e fim do movimento em espiral no horizonte.
Início do movimento espiral horizontal: o movimento espiral horizontal começa
Tabela 3-23: Parâmetros detalhados do início do movimento espacial do horizonte
Atributo Explicação
Protótipo HorizonSpiralMotionStart (rad, vel, direção_rot, ângulo_círculo)
Descrição O movimento espiral horizontal começa
·rad: Raio espiral, unidade [mm];
·vel: velocidade de rotação, unidade [rev/s];
Parâmetro
·rot_direction: Direção de rotação, 0- sentido horário, 1- sentido anti-horário;
·circle_angle Ângulo de inclinação da espiral, unidade [°]
Valor de retorno nulo
Machine Translated by Google
68 / 152 Script de programação FRLua
Fim do movimento espiral horizontal: Fim do movimento espiral horizontal
Tabela 3-24: Parâmetros detalhados do movimento espacial do horizonte
Atributo Explicação
Protótipo Fim do movimento espiral do horizonte ()
Descrição O movimento espiral horizontal termina
Parâmetro nulo
Valor de retorno nulo
Código 3-11 Exemplo de movimento espiral horizontal em espiral H
1. --Espiral H-horário espiral horizontal
2. HorizonSpiralMotionStart(30,2,0,20)
3. --Espiral horizontal, raio de rotação de 30, 2 velocidades selecionadas, rotação no sentido horário de 0, rotação de 20
ângulo de inclinação
4. Lin(DW01,100,-1,0,0)
5. Horizon Spiral MotionEnd() -- Fim da espiral horizontal
6.
7. --Espiral H-Espiral horizontal no sentido anti-horário
8. HorizonSpiralMotionStart(30,2,1,20)
9. --Espiral horizontal, raio de rotação de 30, 2 velocidades selecionadas, 1 rotação no sentido anti-horário, 20
ângulo de inclinação de rotação
10. Lin(DW01,100,-1,0,0)
11. Horizon Spiral MotionEnd() -- Fim da espiral horizontal
3.2.8 Spline
A instrução spline é dividida em três partes: início do grupo spline, segmento spline,
e o fim do grupo de splines. O início do grupo de splines é o símbolo inicial do movimento da spline, e o
gráfico do nó atual do segmento de spline inclui SPL, SLIN e SCIRC.
O fim do grupo spline é o símbolo final do movimento do spline.
SplineStart: o movimento do spline começa
Tabela 3-25 Parâmetros detalhados de SplineStart
Atributo Explicação
Protótipo SplineStart ()
Descrição Início do grupo Spline
Parâmetro nulo
Valor de retorno nulo
Machine Translated by Google
69 / 152 Script de programação FRLua
Método SPL um: segmentos de spline do tipo SPTP
Tabela 3-26 Parâmetros detalhados do SPTP
Atributo Explicação
Protótipo SPTP(nome_do_ponto, ovl)
Descrição Segmento spline SPTP
·point_name: Nome do ponto de destino;
Parâmetro
·ovl: Velocidade de depuração, intervalo [0~100%].
Valor de retorno nulo
Método SPL 2: segmentos de spline do tipo SplinePTP
Tabela 3-27 Parâmetros detalhados do SplinePTP
Atributo Explicação
Protótipo SplinePTP (j1, j2, j3, j4, j5, j6, x, y, z, rx, ry, rz, ferramenta, usuário, velocidade, acc, ovl)
Descrição SplinePP movimento spline
·j1~j6: Posição da articulação alvo, unidade [°];
·x, y, z, rx, ry, rz: Pose cartesiana do alvo, unidade [mm] [°];
·ferramenta: número da ferramenta;
Parâmetro ·usuário: número da peça;
·velocidade: velocidade, intervalo [0~100%];
·acc: Aceleração, alcance [0~100%], temporariamente não aberto;
·ovl: Velocidade de depuração, intervalo [0~100%].
Valor de retorno nulo
Método SLIN 1: Segmentos de spline do tipo SLIN
Tabela 3-28 Parâmetros detalhados do SLIN
Atributo Explicação
Protótipo SLIN (point_name, ovl)
Descrição Segmento spline SLIN
·point_name: Nome do ponto de destino;
Parâmetro
·ovl: Velocidade de depuração, intervalo [0~100%].
Valor de retorno nulo
Machine Translated by Google
70 / 152 Script de programação FRLua
Método SLIN 2: segmentos de spline do tipo SplineLINE
Tabela 3-29 Parâmetros detalhados de SplineLINE
Atributo Explicação
Protótipo SplineLINE (j1, j2, j3, j4, j5, j6, x, y, z, rx, ry, rz, ferramenta, usuário, velocidade, acc, ovl)
Descrição SplineLINE segmento spline
·j1~j6: Posição da articulação alvo, unidade [°];
·x, y, z, rx, ry, rz: Pose cartesiana do alvo, unidade [mm] [°];
·ferramenta: número da ferramenta;
Parâmetro ·usuário: número da peça;
·velocidade: velocidade, intervalo [0~100%];
·acc: Aceleração, alcance [0~100%], temporariamente não aberto;
·ovl: Velocidade de depuração, intervalo [0~100%].
Valor de retorno nulo
Método SCIRC 1: Segmento Spline do Tipo SCIRC
Tabela 3-30 Parâmetros detalhados do SCIRC
Atributo Explicação
Protótipo SCIRC(nome_pos_p, nome_pos_t, ovl)
Descrição Segmento spline SCIRC
·pos_p_name: o nome do ponto médio do arco;
Parâmetro ·pos_t_name: nome do ponto final do arco;
·ovl: Velocidade de depuração, intervalo [0~100%].
Valor de retorno nulo
Método SCIRC 2: Segmentos de spline do tipo SplineCIRC
Tabela 3-31 Parâmetros detalhados de SplineCIRC
Atributo Explicação
SplineCIRC (pj1, pj2, pj3, pj4, pj5, pj6, px, py, pz, prx, pry, prz, ptool, puser, pspeed, pacc, tj1, tj2,
Protótipo tj3, tj4, tj5, tj6, tx, ty, tz, trx, try, trz, ttool, tuser, tspeed, tacc,
(ovl)
Descrição Segmento spline SplineCIRC
·pj1~pj6: Posição da junta do ponto médio do arco, unidade [°];
·px, py, pz, prx, pry, prz: Pose cartesiana do ponto médio do arco, unidade [mm] [°];
Parâmetro
·ptool: número da ferramenta para o ponto médio do arco;.
Machine Translated by Google
71 / 152 Script de programação FRLua
Tabela 3-31 (continuação)
Atributo Explicação
·ptool: número da ferramenta para o ponto médio do arco;
·empurrador: número da peça no ponto médio do arco;
·pspeed: velocidade no ponto médio do arco, intervalo [0~100%];
·pacc: Aceleração no ponto médio do arco, intervalo [0~100%], temporariamente fechado;
·tj1~tj6: Posição da junta no final do arco, unidade [°];
Parâmetro
·tx, ty, tz, trx, try, trz: Pose cartesiana do ponto final do arco, unidade [mm] [°];
·ttool: número da ferramenta para o ponto final do arco;
·tuser: Número da peça de trabalho do ponto final do arco;
·tspeed: Velocidade final do arco, intervalo [0~100%];
·tacc: Aceleração final do arco, alcance [0~100%], fechado temporariamente;
·ovl: Velocidade de depuração, intervalo [0~100%].
Valor de retorno nulo
SplineEnd: Fim do grupo de splines
Tabela 3-32 Parâmetros detalhados de SplineEnd
Atributo Explicação
Protótipo SplineEnd()
Descrição SplineEnd extremidades do grupo spline
Parâmetro nulo
Valor de retorno nulo
Código 3-12: Exemplo de movimento na mesma direção
1. --Movimento de spline de segmentos de spline SPTP
2. SplineStart() -- o movimento da spline começa
3. SPTP (DW01,100) -- DW01- Nome do ponto, 100- Velocidade de depuração
4. SPTP (DW02100) -- DW02- Nome do Ponto, 100- Velocidade de Depuração
5. SPTP (DW03100) -- DW03- Nome do Ponto, 100- Velocidade de Depuração
6. SPTP (DW04100) -- DW04- Nome do ponto, 100- Velocidade de depuração 7.
SplineEnd() -- Fim do movimento da spline
8.
9. --Movimento de spline de segmentos de spline SLIN
10. SplineStart() --o movimento da spline começa
11. SLIN (DW01,100) -- DW01- Nome do Ponto, 100- Velocidade de Depuração
12. SLIN (DW02100) -- DW02- Nome do Ponto, 100- Velocidade de Depuração
13.
Machine Translated by Google
72 / 152 Script de programação FRLua
Código 3-12 (continuação)
14. SLIN (DW03100) -- DW03- Nome do Ponto, 100- Velocidade de Depuração
15. SLIN (DW04100) -- DW04- Nome do Ponto, 100- Velocidade de Depuração
16. SplineEnd() -- Fim do movimento da spline
17. --Movimento de spline de segmentos de spline SCIRC
18. SplineStart() -- o movimento da spline começa
19. SCIRC (DW01, DW02100) -- DW01- nome do ponto médio do arco, nome do ponto final do arco DW02,
100- Velocidade de depuração 100%
20. SCIRC (DW03, DW04100) -- DW03- nome do ponto médio do arco, nome do ponto final do arco DW04,
100- Velocidade de depuração 100%
21. SCIRC (DW05, DW06100) -- DW05 - Nome do ponto central do arco, Nome do ponto final do DW06
Arc, 100- Velocidade de depuração 100%
22. SCIRC (DW07, DW08100) -- DW07- nome do ponto médio do arco, nome do ponto final do arco DW08,
100- Velocidade de depuração 100%
23. SplineEnd() -- Fim do movimento da spline
Exemplo de movimento de spline no método 2 do código 3-13
1. --Movimento de spline dos segmentos de spline SplinePP
2. SplineStart() -- o movimento da spline começa
3. SplinePTP(-88,938,-67,089,-119,074,-57,750,78,739,-53,107,-154,495,-456,371,271,098,-
172.005,-27.192,-130.384,1,0,100,180,100)
4. SplinePTP(-50,137,-67,089,-119,074,-57,750,78,739,-53,108,165,568,-452,472,271,098, -
172.005, -27.192,-91.582,1,0.100.180.100)
5. SplinePTP(-116,604,-103,398,-106,020,-60,282,89,088,-26,541,-340,231,-440,449,
59.996.179.861,-0.950.179.936,1.0.100.180.100)
6. SplinePTP(-117,355,-89,202,-120,591,-59,927,89,057,-27,266,-297,517,-
341.920.69.240.179.817,-0.966.179.910.1,0.100.180.100)
7. SplineEnd() -- Fim do movimento da spline
8. --Movimento de spline dos segmentos de spline SplineLINE
9. SplineStart() -- o movimento da spline começa
10. SplineLINE(-88.938,-67.089,-119.074,-57.750,78.739,-53.107,-154.495,-456.371,
271.098, -172.005,-27.192,-130.384,1,0,100,180,100)
11. SplineLINE(-50,137,-67,089,-119,074,-57,750,78,739,-53,108,165,568,-452,472,
271.098,-172.005,-27.192,-91.582,1,0,100,180,100)
12. SplineLINE(-116.604,-103.398,-106.020,-60.282,89.088,-26.541,-340.231,-440.449,
59.996.179.861,-0.950.179.936,1.0.100.180.100)
13. SplineLINE(-117,355,-89,202,-120,591,-59,927,89,057,-27,266,-297,517,-341,920,
69.240.179.817,-0.966.179.910,1,0.100.180.100)
14. SplineEnd() -- Fim do movimento da spline
Machine Translated by Google
73 / 152 Script de programação FRLua
Código 3-13 (continuação)
15. --Movimento Spline do Segmento SplineCIRC Spline
16. SplineStart() - o movimento da spline começa
17. SplineCIRC(-88,938, -67,089, -119,074, -57,750, 78,739, -53,107, -154,495, -456,371, 271,098, -172,005, -27,192,
-130,384, 1, 0, 100, 180, -50,137, -67,089, -119,074, -57,750, 78,739, -53,108, 165,568, -452,472, 271,098,
-172,005, -27,192, -91,582, 1,0,100,180,100)
18. SplineCIRC(-116,604, -103,398, -106,020, -60,282, 89,088, -26,541, -340,231, -440,449, 59,996, 179,861, -0,950,
179,936, 1, 0, 100, 180, -117,355, -89,202, -120,591, -59,927, 89,057,
-27,266,-297,517,-341,920,69,240,179,817,-0,966,179,910,1,0,100,180,100)
19. SplineCIRC(-110,420, -104,178, -103,638, -59,952, 89,153, -26,480, -297,923, -494,668, 71,977,
-178,379,-1,753,-173,981,1,0,100,180,-115,854,-85,308,-123,979,-59,371,89,058,-
27.513,-279.135,-330.367,72.864,-179.245,-1.455,-178.362,1,0,100.180,100)
20. SplineCIRC(-108,752,-104,491,-103,204,-59,601,89,035,-26,465,-285,668,-507,818,
73.101, -178.008,-2.068,-172.346,1.0.100.180,-123.459,-95.123,-113.554,-62.039.87.801,
-26.914,-361.158,-339.783,72.733.178.366,-1.636.173.492,1,0,100.180.100)
21. SplineEnd() -- Fim do movimento da spline
3.2.9 Nova spline
NewSplineStart: Início de nova trajetória multiponto de spline
Tabela 3-33: Parâmetros detalhados de NewSplineStart
Atributo Explicação
Protótipo NewSplineStart (modo_Con, tempo_Gac)
Descrição Nova trajetória multiponto de spline iniciando
·Con_mode: Modo de controle, 0-Ponto de transição de arco, 1-Ponto de transição dado;
Parâmetro
·Gac_time: Tempo médio global de conexão, maior que 10.
Valor de retorno nulo
NewSP: Método 1: Novo segmento de trajetória multiponto de spline
Tabela 3-34: Parâmetros detalhados do NewSP
Atributo Explicação
Protótipo NewSP (nome_do_ponto, ovl, blendR, islast_point)
Descrição Novo segmento de trajetória multiponto de spline
·point_name: Nome do ponto;
·ovl: Velocidade de depuração, intervalo [0~100%];
Parâmetro
·blendR: Raio suave [0~1000], unidade [mm];
·islast_point: É o último ponto? 0- Não, 1- Sim.
Valor de retorno nulo
Machine Translated by Google
74 / 152 Script de programação FRLua
NewSplinePoint: Método 2: Novo segmento de trajetória de vários pontos de spline
Tabela 3-35: Parâmetros detalhados de NewSplinePoint
Atributo Explicação
NewSplinePoint(j1, j2, j3, j4, j5, j6, x, y, z, rx, ry, rz, ferramenta, usuário, velocidade, acc, ovl ,
Protótipo
blendR)
Descrição Novo segmento de trajetória multiponto de spline
·j1~j6: Posição da articulação alvo, unidade [°];
·x, y, z, rx, ry, rz: Pose cartesiana do alvo, unidade [mm] [°];
·ferramenta: número da ferramenta;
·usuário: número da peça;
Parâmetro
·velocidade: velocidade, intervalo [0~100%];
·acc: Aceleração, alcance [0~100%], temporariamente não aberto;
·ovl: Velocidade de depuração, intervalo [0~100%];
·blendR: [-1] - Não suave, [0~1000] - Raio suave, unidade [mm].
Valor de retorno nulo
NewSplineEnd: Fim do grupo de splines
Tabela 3-36: Parâmetros detalhados de NewSplineEnd
Atributo Explicação
Protótipo NewSplineEnd ()
Descrição Fim do novo grupo de splines
Parâmetro nulo
Valor de retorno nulo
Código 3-14 Método 1: Exemplo de movimento de nova instrução de spline
1. --Novo movimento de spline do modo de controle de ponto de transição de arco N-Spline
2. NewSplineStart (0,10) --início do movimento da spline, modo de controle do ponto de transição de arco 0, 10- global
tempo médio de conexão 10ms
3. NewSP (DW01,100,10,0) -- DW01- Nome do ponto, 100- Velocidade de depuração, 10- Suavidade
raio de transição de 10 mm, 0- Não é o último ponto
4. NewSP (DW02100,10,0) -- DW02- Nome do ponto, 100- Velocidade de depuração, 10- Suavidade
raio de transição de 10 mm, 0- Não é o último ponto
5. NewSP (DW03100,10,0) -- DW03- Nome do ponto, 100- Velocidade de depuração, 10- Suavidade
raio de transição de 10 mm, 0- Não é o último ponto
6. NewSP (DW04100,10,1) -- DW04- Nome do ponto, 100- Velocidade de depuração, 10- Suavidade
raio de transição de 10 mm, 1- é o último ponto
Machine Translated by Google
75 / 152 Script de programação FRLua
Código 3-14 (continuação)
7. NewSplineEnd() -- Fim do novo movimento de spline
8. -Novo movimento de spline com modo de controle de ponto de caminho fornecido em N-Spline
9. NewSplineStart (1,10) -- início do movimento da spline, 1- modo de controle do ponto de caminho fornecido, 10- global
tempo médio de conexão 10ms
10. NewSP (DW01,100,10,0) -- DW01- Nome do ponto, 100- Velocidade de depuração, 10- Suavidade
raio de transição de 10 mm, 0- Não é o último ponto
11. NewSP (DW02100,10,0) -- DW02- Nome do ponto, 100- Velocidade de depuração, 10- Suavidade
raio de transição de 10 mm, 0- Não é o último ponto
12. NewSP (DW03100,10,0) -- DW03- Nome do ponto, 100- Velocidade de depuração, 10- Suavidade
raio de transição de 10 mm, 0- Não é o último ponto
13. NewSP (DW04100,10,1) -- DW04- Nome do ponto, 100- Velocidade de depuração, 10- Suavidade
raio de transição de 10 mm, 1- é o último ponto
14. NewSplineEnd() -- Fim do novo movimento de spline
Código 3-15 Método 2 Novo Exemplo de Movimento de Instrução de Spline
1. --Novo movimento de spline do modo de controle de ponto de transição de arco N-Spline
2. NewSplineStart (0,10) --início do movimento da spline, modo de controle do ponto de transição de arco 0, 10- global
tempo médio de conexão 10ms
3.
4. NewSplinePoint(-88.938,-67.089,-119.074,-57.750,78.739,-53.107,-154.495,-456.371,
271.098,-172.005,-27.192,-130.384,1,0,100,180,100,10,0)
5. NewSplinePoint(-50.137,-67.089,-119.074,-57.750,78.739,-53.108,165.568,-452.472,
271.098,-172.005,-27.192,-91.582,1,0,100,180,100,10,0)
6. NewSplinePoint(-116.604,-103.398,-106.020,-60.282,89.088,-26.541,-340.231,-440.449,
59.996.179.861,-0.950.179.936,1,0,100.180.100,10,0)
7. NewSplinePoint(-117,355,-89,202,-120,591,-59,927,89,057,-27,266,-297,517,-341,920,
69,240,179,817,-0,966,179,910,1,0,100,180,100,10,1)
8. NewSplineEnd() -- Fim do novo movimento de spline
9.
10. --Novo movimento de spline com modo de controle de ponto de caminho fornecido em N-Spline
11. NewSplineStart(1,10)
12. --O movimento da spline começa, modo de controle de ponto de caminho fornecido 1, tempo médio de conexão global 10
10 ms
13.
14. NewSplinePoint(-88.938,-67.089,-119.074,-57.750,78.739,-53.107,-154.495,-456.371,
271.098,-172.005,-27.192,-130.384,1,0,100,180,100,0,0)
15. NewSplinePoint(-50.137,-67.089,-119.074,-57.750,78.739,-53.108,165.568,-452.472,
271.098,-172.005,-27.192,-91.582,1,0,100,180,100,0,0)
Machine Translated by Google
76 / 152 Script de programação FRLua
Código 3-15 (continuação)
16. NewSplinePoint(-116.604,-103.398,-106.020,-60.282,89.088,-26.541,-340.231,-440.449,
59.996.179.861,-0.950.179.936,1,0,100.180.100,0,0)
17. NewSplinePoint(-117.355,-89.202,-120.591,-59.927,89.057,-27.266,-297.517,-341.920,
69.240.179.817,-0.966.179.910,1,0,100.180.100,0,1)
18. NewSplineEnd() -- Fim do novo movimento de spline
3.2.10 Balanço
WeaveStart: O swing começa
Tabela 3-37 Parâmetros detalhados do WeaveStart
Atributo Explicação
Protótipo WeaveStart(núm.tecelagem)
Descrição Balanço Inicial
Parâmetro ·weaveNum: Número de configuração para parâmetros de soldagem por oscilação.
Valor de retorno nulo
WeaveEnd: Fim do swing
Tabela 3-38 Parâmetros detalhados de WeaveEnd
Atributo Explicação
Protótipo WeaveEnd(weaveNum)
Descrição Balanço terminal
Parâmetro ·weaveNum: Número de configuração para parâmetros de soldagem por oscilação.
Valor de retorno nulo
WeaveStartSim: Início do balanço da simulação
Tabela 3-39 Parâmetros detalhados do WeaveStartSim
Atributo Explicação
Protótipo WeaveStartSim(núm.tecelagem)
Descrição Simulação de swing começa
Parâmetro ·weaveNum: Número de configuração para parâmetros de soldagem por oscilação.
Valor de retorno nulo
Machine Translated by Google
77 / 152 Script de programação FRLua
WeaveEndSim: Simulação de extremidades oscilantes
Tabela 3-40 Parâmetros detalhados de WeaveEndSim
Atributo Explicação
Protótipo WeaveEndSim (weaveNum)
Descrição Simulação de extremidades oscilantes
Parâmetro ·weaveNum: Número de configuração para parâmetros de soldagem por oscilação.
Valor de retorno nulo
WeaveInspectStart: aviso de trajetória inicial
Tabela 3-41 Parâmetros detalhados do WeaveInspectStart
Atributo Explicação
Protótipo WeaveInspectStart (weaveNum)
Descrição Aviso de trajetória inicial
Parâmetro ·weaveNum: Número de configuração para parâmetros de soldagem por oscilação.
Valor de retorno nulo
WeaveInspectEnd: Aviso de parada de trajetória
Tabela 3-42 Parâmetros detalhados do WeaveInspectEnd
Atributo Explicação
Protótipo WeaveInspectEnd (weaveNum)
Descrição Aviso de parada de trajetória
Parâmetro ·weaveNum: Número de configuração para parâmetros de soldagem por oscilação.
Valor de retorno nulo
Exemplo de movimento de comando de oscilação do código 3-16
1. WeaveInspectStart(0);-- Aviso de trajetória inicial
2. Lin(DW01,100,0,0,0)
3. WeaveInspectEnd(0);-- Aviso de parada de trajetória
4. WeaveStartSim (weaveNum) -- Simula início de swing
5. Lin(DW01,100,0,0,0)
6. WeaveEndSim (weaveNum) -- extremidades oscilantes da simulação
7. WeaveStart (weaveNum) -- Comece a balançar
8. Linha(DW01,100,0,0,0)
9. WeaveEnd (weaveNum) -- Fim do movimento
Machine Translated by Google
78 / 152 Script de programação FRLua
3.2.11 Reprodução da Trajetória
LoadTPD: Pré-carregamento de trilha
Tabela 3-43 Parâmetros detalhados do LoadTPD
Atributo Explicação
Protótipo LoadTPD(nome)
Descrição Pré-carregamento de trajetória
Parâmetro ·nome: Nome da faixa.
Valor de retorno nulo
MoveTPD: Reprodução de Trajetória
Tabela 3-44 Parâmetros detalhados do MoveTPD
Atributo Explicação
Protótipo MoveTPD(nome, mistura, ovl)
Descrição Reprodução da trajetória
·name: Nome da Trajetória,/fruser/traj/trajHelix_aima_2.txt;;
Parâmetro ·mistura: Suave ou não, 0-Não suave, 1-Suave;
·ovl: Velocidade de depuração, intervalo [0~100].
Valor de retorno nulo
Exemplo de reprodução de trajetória do código 3-17
1. CarregarTPD("20lin")
2. MoverTPD("20lin",0,25)
3.2.12 deslocamento de ponto
O comando de deslocamento de ponto é um comando de deslocamento geral. Ao inserir vários
offsets, os comandos de abertura e fechamento são adicionados ao programa. Os comandos de movimento
entre o início e o fechamento será deslocado com base nas coordenadas de base (ou peça de trabalho
coordenadas).
PointsOffsetEnable: O deslocamento geral da posição do ponto começa
Tabela 3-45 Parâmetros detalhados de PointsOffsetEnable
Atributo Explicação
Protótipo PointsOffsetEnable(bandeira, x,y,z,rx,ry,rz)
Descrição O deslocamento geral da posição do ponto começa
Machine Translated by Google
79 / 152 Script de programação FRLua
Tabela 3-45 (continuação)
Atributo Explicação
·bandeira: deslocamento no sistema de coordenadas base ou de coordenadas da peça, deslocamento no
Parâmetro sistema de coordenadas da ferramenta;
·x, y, z, rx, ry, rz: deslocamento de pose, unidade [mm] [°].
Valor de retorno nulo
PointsOffsetDisable: Fim do deslocamento geral do ponto
Tabela 3-46 Parâmetros detalhados de PointsOffsetDisable
Atributo Explicação
Protótipo DesativarDeslocamentoDePontos()
Descrição O deslocamento geral da posição do ponto terminou
Parâmetro nulo
Valor de retorno nulo
Exemplo de deslocamento de ponto de código 318
1. PontosOffsetEnable (0,0,0,10,0,0,0)
2. --A partir do deslocamento geral da posição do ponto, deslocamento 0 no sistema de coordenadas base ou de
coordenadas da peça de trabalho, (0,0,10,0,0,0) - quantidade de deslocamento
3. PTP (DW01,100, -1,0) Movimento PTP
4. PointsOffsetDisab() -- Fim do deslocamento geral do ponto
3.2.13 Servo
Instruções de servocontrole (movimento espacial cartesiano), que podem controlar o robô
movimento por meio de controle de pose absoluto ou com base no deslocamento de pose atual.
ServoMoveStart: O movimento do servo começa
Tabela 3-47 Parâmetros detalhados do ServoMoveStart
Atributo Explicação
Protótipo ServoMoveStart()
Descrição O movimento do servo começa
Parâmetro nulo
Valor de retorno nulo
Machine Translated by Google
80 / 152 Script de programação FRLua
ServoMoveEnd: Fim do movimento do servo
Tabela 3-48 Parâmetros detalhados de ServoMoveEnd
Atributo Explicação
Protótipo ServoMoveEnd()
Descrição O servo movimento termina
Parâmetro nulo
Valor de retorno nulo
ServoCart: Movimento do modo servo do espaço cartesiano
Tabela 3-49 Parâmetros detalhados do ServoCart
Atributo Explicação
ServoCart (modo, x, y, z, Rx, Ry, Rz, pos_gainx, pos_gainy, pos_gainz, pos_gainrx, pos_gainry,
Protótipo
pos_gainrz, acc, vel, cmdT, filterT, ganho)
Descrição Movimento do modo servo espacial cartesiano
·modo: [0] - Movimento absoluto (sistema de coordenadas base), [1] - Movimento incremental
(sistema de coordenadas base), [2] - Movimento incremental (sistema de coordenadas da
ferramenta);
·x, y, z, Rx, Ry, Rz: pose cartesiana ou incremento de pose, unidade [mm];
·Pos_gainx, pos_gainy, pos_gainz, pos_gainrx, pos_gainry, pos_gainrz: coeficientes proporcionais
incrementais de pose, efetivos somente sob movimento incremental, intervalo [0~1];
Parâmetro
·acc: Aceleração, intervalo [0~100];
·vel: velocidade, alcance [0~100];
· CmdT: Ciclo de emissão de instruções, unidades, intervalo recomendado
[0,001~0,0016];
·FilterT: tempo de filtragem, tempo de filtragem, em segundos;
·Ganho: Amplificador proporcional na posição alvo.
Valor de retorno nulo
Exemplo de servo de código 3-19
1. --Controle de servo
2. modo = 2
3. --[0] - Movimento absoluto (sistema de coordenadas base), [1] - Movimento incremental (sistema de coordenadas
base), [2] - Movimento incremental (sistema de coordenadas da ferramenta)
4. contagem = 0
5. ServoMoveStart() -- o movimento do servo é iniciado
6. Enquanto (contar<100) faça
7. ServoCart (modo, 0,0, 0,0, 0,5, 0,0, 0,0, 0,0, 40) -- movimento do modo servo do espaço cartesiano
8. contagem = contagem + 1
9. Espere Sra. (10)
10. fim
11. ServoMoveEnd() -- Fim do movimento do servo
Machine Translated by Google
81 / 152 Script de programação FRLua
3.2.14 Trajetória
A instrução Trajetory é uma interface universal para câmeras que fornecem trajetórias diretamente, que podem
ser importadas para o sistema para permitir que os robôs se movam de acordo com a trajetória do arquivo importado
quando já existem pontos de trajetória discretos.
arquivos em um formato fixo.
1. Função de importação de arquivo de trajetória: Selecione o arquivo do computador local para importar para
o sistema de controle do robô;
2. Pré-carregamento da trajetória: selecione o arquivo de trajetória importado e carregue-o através
instruções;
3. Movimento de trajetória: O movimento do robô é emitido por meio de uma combinação de arquivos de
trajetória pré-carregados e comandos de velocidade de depuração selecionados;
4. imprimir números de pontos de trajetória: imprimir números de pontos de trajetória durante o robô
trajetória para visualizar o progresso atual do movimento.
LoadTrajectory: Pré-carregamento de trajetória
Tabela 3-50 Parâmetros detalhados de LoadTrajectory
Atributo Explicação
Protótipo LoadTrajectory (nome)
Descrição Pré-carregamento de trajetória
Parâmetro ·nome: Nome da trajetória, como:/fruser/traj/trajHelix_aim_1. txt.
Valor de retorno nulo
Obtenha os parâmetros do ponto inicial, o número de coordenadas da ferramenta e o número de coordenadas
da peça de trabalho da trajetória por meio de Obter pose inicial de trajetória, Obter ActualTCPNum e Obter
ActualWObjNum, respectivamente.
Obter pose inicial da trajetória: Obter pose inicial da trajetória
Tabela 3-51 Parâmetros detalhados de Get TrajectoryStartPose
Atributo Explicação
Protótipo GetTrajectoryStartPose (nome)
Descrição Obtenha a pose inicial da trajetória
Parâmetro ·nome: Nome da trajetória, como:/fruser/traj/trajHelix_aim_1. txt.
Valor de retorno desc_pose {x,y,z,rx,ry,rz}
Machine Translated by Google
82 / 152 Script de programação FRLua
FHIR ctualTCPNum: Obtenha o número atual do sistema de coordenadas da ferramenta
Tabela 3-52: Parâmetros detalhados do VNet TCPNum
Atributo Explicação
Protótipo GetActualTCPNum (sinalizador)
Descrição Obter o número atual do sistema de coordenadas da ferramenta
Parâmetro ·bandeira: 0- bloqueio, 1- não bloqueio padrão 1.
Valor de retorno Tool_id: Número do sistema de coordenadas da ferramenta
FHIR ctualWObjNum: Obtém o número atual do sistema de coordenadas da peça de trabalho
Tabela 3-53 Parâmetros detalhados de GetActualWObjNum
Atributo Explicação
Protótipo GetActualWObjNum (sinalizador)
Descrição Obter o número atual do sistema de coordenadas da ferramenta
Parâmetro ·bandeira: 0- bloqueio, 1- não bloqueio padrão 1.
Valor de retorno Wobj-id: número do sistema de coordenadas da peça de trabalho
MoveCart: Movimento Ponto a Ponto no Espaço Cartesiano
Tabela 3-54: Parâmetros detalhados do MoveCart
Atributo Explicação
Protótipo MoveCart (desc_pos, ool, user, vel, acc, ovl, blendT, config)
Descrição Movimento ponto a ponto no espaço cartesiano
·desc_pos: Posição cartesiana alvo;
·ferramenta: número da ferramenta, [0~14];
·usuário: número da peça de trabalho, [0~14];
vel: velocidade, intervalo [0~100], o padrão é 100;
·acc: Aceleração, intervalo [0~100], temporariamente não aberto, o padrão é 100;
Parâmetro
·ovl: Velocidade de depuração, intervalo [0~100%];
·blend T: [-1,0] - Movimento no local (bloqueio), [0~500] - Tempo suave (não
bloqueio), unidade [ms] padrão é -1,0;
·config: Configuração da junta, [-1] - resolver com base na posição atual da junta, [0~7] - resolver
com base na configuração da junta, o padrão é -1.
Valor de retorno nulo
Machine Translated by Google
83 / 152 Script de programação FRLua
MoveTrajectory: Reprodução de Trajetória
Tabela 3-55 Parâmetros detalhados de MoveTrajectory
Atributo Explicação
Protótipo MoveTrajectory (nome, ovl)
Descrição Reprodução da trajetória
·nome: Nome da trajetória, como:/fruser/traj/trajHelix_aim_1. txt;
Parâmetro
·ovl: Velocidade de depuração, intervalo [0~100%].
Valor de retorno nulo
GetTrajectoryPointNum: Obter número do ponto de trajetória
Tabela 3-56 Parâmetros detalhados de Get TrajectoryPointNum
Atributo Explicação
Protótipo ObterNúmeroDoPontoDaTrajetória()
Descrição Obter número do ponto de trajetória
Parâmetro nulo
Valor de retorno Num: Número do ponto de trajetória
Exemplo de Trajetória do Código 3-20
1. --Trajetória
2. LoadTrajectory ("/fruser/traj/trajHelix_ima_1. txt") -- Caminho absoluto do arquivo de trajetória pré-carregado
3. startPose = ObterPoseInicialTrajetória("/fruser/traj/trajHelix_aima_1.txt")
4. --Obtenha a pose inicial da trajetória
5. Tool_num=VNet TCPNum() -- Obtém o número atual do sistema de coordenadas da ferramenta
6. Wobj_num=GetActualWObjNum() -- Obtém o número do sistema de coordenadas da peça de trabalho atual
7. MoveCart(startPose, núm_ferramenta,wobj_num,100,100,25,-1,-1)
8. --Movimento ponto a ponto do espaço cartesiano até o ponto inicial da trajetória, startPose - posição cartesiana
alvo, 100- velocidade, 100- aceleração, -1- parada no lugar, -1- junta resolvida de acordo com a configuração
9. MoveTrajectory("/fruser/traj/trajHelix_aima_1.txt",25)
10. --Reprodução de trajetória,/fruser/traj/trajHelix_aim_1.txt - Nome do arquivo de trajetória, 25- Depuração
velocidade (velocidade de depuração)
11. Num=Get Trajectory PointNum() -- Obter número do ponto da trajetória
12. Registre Var ("número", "num") - imprima as informações do número
Machine Translated by Google
84 / 152 Script de programação FRLua
3.2.15 Trajetória J
A instrução Trajtory J, assim como Trajtory, é uma interface universal adequada para
câmeras fornecerem trajetórias diretamente. Ela pode ser importada para o sistema quando já
existem arquivos de pontos de trajetória discretos em um formato fixo, permitindo que o robô
se mova de acordo com a trajetória do arquivo importado.
LoadTrajectoryJ: Pré-processamento de Trajetória
Tabela 3-57 Parâmetros detalhados de LoadTrajectoryJ
Atributo Explicação
Protótipo LoadTrajectoryJ(nome, ovl, opt)
Descrição Pré-processamento de trajetória
·nome: Nome da faixa, como:/fruser/traj/trajHelix_aima_2.txt;
Parâmetro ·ovl: Velocidade de depuração, intervalo [0~100];
·opt: 0- Ponto de caminho, 1- Ponto de controle.
Valor de retorno nulo
MoveTrajectoryJ: Reprodução de Trajetória
Tabela 3-58: Parâmetros detalhados de MoveTrajectoryJ
Atributo Explicação
Protótipo MoveTrajectoryJ ( )
Descrição Reprodução da trajetória
Parâmetro nulo
Valor de retorno nulo
Exemplo de Trajetória J do Código 3-21
1. LoadTrajectoryJ("/fruser/traj/trajHelix_aima_2.txt",30,0)
2. --Pré-processamento do Trajectory J,/fruser/traj/trajHelix_ima_2. txt - Nome do arquivo de trajetória, 30-
Velocidade de depuração, 1- Pontos de controle
3. startPose = ObterTrajetóriaInícioPose("/fruser/traj/trajHelix_aima_2.txt")
4. --Obtenha a pose inicial da trajetória
5. Tool_num=VNet TCPNum() -- Obtém o número atual do sistema de coordenadas da ferramenta
6. Wobj_num=GetActualWObjNum() -- Obtém o número atual do sistema de coordenadas da peça de trabalho
7. MoveCart(startPose, núm_ferramenta,wobj_num,100,100,25,-1,-1)
8. --Movimento ponto a ponto do espaço cartesiano até o ponto inicial da trajetória, startPose -
posição cartesiana alvo, 100- velocidade, 100- aceleração, -1- parada no lugar, -1- junta resolvida de acordo com
a configuração
9. MoveTrajectoryJ()
10. Num=Get Trajectory PointNum() -- Obter número do ponto da trajetória
11. Registre Var ("número", "num") - imprima as informações do número
Machine Translated by Google
85 / 152 Script de programação FRLua
3.2.16 DMP
DMP/dmpMotion é um método de aprendizado de imitação de trajetória que requer planejamento prévio de
trajetórias de referência. O caminho específico do DMP é uma nova trajetória que imita a trajetória de referência a
partir de um novo ponto de partida.
DMP: Imitação de Trajetória
Tabela 3-59 Parâmetros detalhados do DMP
Atributo Explicação
Protótipo DMP (nome_do_ponto, ovl)
Descrição Imitação de trajetória
·point_name: Nome do ponto de destino
Parâmetro
·ovl: Velocidade de depuração, intervalo [0~100%].
Valor de retorno nulo
DmpMotion: Imitação de trajetória
Tabela 3-60 Parâmetros detalhados de dmpMotion
Atributo Explicação
dmpMotion (joint_pos, desc_pos, ferramenta, usuário, vel, acc, ovl, exaxis_pos)
Protótipo
Descrição Imitação de trajetória
·Joint_pos: Posição da articulação alvo, unidade [°];
·desc_pos: Pose cartesiana alvo, unidade [mm] [°]. O valor inicial padrão é [0,0, 0,0, 0,0,
0,0, 0,0, 0,0], e o valor padrão é chamado de solução cinemática direta. Valor de retorno;
·ferramenta: número da ferramenta, [0~14];
Parâmetro ·usuário: número da peça de trabalho, [0~14];
·vel: Porcentagem de velocidade, [0~100] padrão é 100,0;
·acc: Porcentagem de aceleração, [0~100], temporariamente não aberto;
·ovl: Velocidade de depuração, intervalo [0~100%];
·exaxis_pos: As posições padrão para o eixo externo 1 ao eixo externo 4 são [0,0, 0,0, 0,0,
0,0].
Valor de retorno nulo
Exemplo de Imitação de Trajetória do Código 3-22
1. --Imitação de trajetória DMP
2. DMP (DW01,100) -- Imitação de Trajetória, DW01- Nome do Ponto de Partida, 100- Depuração
Velocidade
Machine Translated by Google
86 / 152 Script de programação FRLua
Código 3-22 (continuação)
3. --Imitação de trajetória DmpMotion
4. dmpMotion({-88.938,-67.089,-119.074,-57.750,78.739,-53.107},{-154.495,-456.371, 271.098,
-172.005,-27.192,-130.384},1,0,100,180,100, {0.000,0.000,0.000,0.000})
3.2.17 Conversão de peças de trabalho
WPTrsfÿ Conversão do sistema de coordenadas da peça de trabalho, esta instrução é
implementada pela execução de instruções PTP e LIN internas, e a posição do ponto no sistema de
coordenadas da peça de trabalho é convertida automaticamente.
WorkPieceTrsfStart: Início da conversão de coordenadas da peça de trabalho
Tabela 3-61 Parâmetros detalhados de WorkPieceTrsfStart
Atributo Explicação
Protótipo WorkPieceTrsfStart (id)
Descrição A conversão de coordenadas da peça de trabalho começa
·id: Número do sistema de coordenadas da peça de trabalho alvo, como 0-wobjcoord0, 1-
Parâmetro
wobjcoord1.
Valor de retorno nulo
WorkPieceTrsfEnd: Conversão de coordenadas do final da peça de trabalho
Tabela 3-62 Parâmetros detalhados de WorkPieceTrsfEnd
Atributo Explicação
Protótipo WorkPieceTrsfEnd ( )
Descrição A conversão de coordenadas da peça de trabalho começa
Parâmetro nulo
Valor de retorno nulo
Código 3-23 Exemplo de conversão de coordenadas da peça de trabalho
1. --Executar conversão de coordenadas da peça de trabalho
2. WorkPieceTrsfStart (1) -- Início da conversão de coordenadas da peça de trabalho, 1 coordenada da peça de trabalho
número do sistema
3. PTP(DW01,100,0,0)
4. --DW01- Nome do ponto a ser convertido, 100- Velocidade de depuração, 0- Bloqueio (parada), 0- Sem deslocamento
5. PTP(DW02,100,0,0)
6. --DW02- Nome do ponto a ser convertido, 100- Velocidade de depuração, 0- Bloqueio (parada), 0- Sem deslocamento
7. PTP(DW03,100,0,0)
Machine Translated by Google
87 / 152 Script de programação FRLua
Código 3-23 (continuação)
8. --DW03- Nome do ponto a ser convertido, 100- Velocidade de depuração, 0- Bloqueio (parada), 0- Sem deslocamento
9. --Fim da conversão da peça de trabalho
10. WorkPieceTrsfEnd()
3.2.18 Conversão de ferramentas
ToolTrsf é uma instrução de conversão do sistema de coordenadas da ferramenta que converte automaticamente
as posições dos pontos no sistema de coordenadas da ferramenta executando PTP interno e
Instruções LIN.
SetToolList: Definir sistema de coordenadas da ferramenta
Tabela 3-63 Parâmetros detalhados de SetToolList
Atributo Explicação
Protótipo SetToolList (nome)
Descrição Definir sistema de coordenadas da ferramenta
Parâmetro ·nome: Nome do sistema de coordenadas da ferramenta alvo, como toolcoold0, toolcoold1.
Valor de retorno nulo
ToolTrsfStart: inicia a conversão do sistema de coordenadas da ferramenta
Tabela 3-64 Parâmetros detalhados de ToolTrsfStart
Atributo Explicação
Protótipo ToolTrsfStart (id)
Descrição A conversão do sistema de coordenadas da ferramenta começa
Parâmetro ·id: Número do sistema de coordenadas da ferramenta alvo, como 0-toolcoold0, 1-toolcoold1.
Valor de retorno nulo
ToolTrsfEnd: Conversão do sistema de coordenadas da ferramenta concluída
Tabela 3-65 Parâmetros detalhados de ToolTrsfEnd
Atributo Explicação
Protótipo ToolTrsfEnd ()
Descrição Conversão do sistema de coordenadas da ferramenta concluída
Parâmetro nulo
Valor de retorno nulo
Machine Translated by Google
88 / 152 Script de programação FRLua
Exemplo de conversão de coordenadas da ferramenta Código 3-24
1. --Conversão de coordenadas da ferramenta
2. SetToolList (toolcoord0) -- Define a conversão de coordenadas da ferramenta, toolcoord0 - Ferramenta alvo
nome da coordenada
3. ToolTrsfStart (0) -- A conversão de coordenadas da ferramenta começa, 0-Número do sistema de coordenadas da
ferramenta 4. PTP (DW01,100,0,0) -- DW01- Nome do ponto a ser convertido, 100- Velocidade de depuração, 0-
Bloqueio (parada), 0- Sem deslocamento
5. PTP (DW02100,0,0) -- DW02- Nome do ponto a ser convertido, 100- Velocidade de depuração, 0-
Bloqueio (parada), 0- Sem deslocamento
6. PTP (DW03100,0,0) -- DW03- Nome do ponto a ser convertido, 100- Velocidade de depuração, 0-
Bloqueio (parada), 0- Sem deslocamento
7. ToolTrsfEnd() -- Conversão de coordenadas da ferramenta concluída
3.3 Instrução de controle
3.3.1 E/S digitais
A instrução digital 'IO' é dividida em duas partes: configuração de IO
(SetDO/SPLCSetDO) e obtendo IO (dDI/SPLCDetBI).
SetDO: Define a saída de bloqueio da quantidade digital da caixa de controle
Tabela 3-66 Parâmetros detalhados de SetDO
Atributo Explicação
Protótipo SetDO (id, status, suave, thread)
Descrição Conjunto de saída de bloqueio de quantidade digital da caixa de controle
·id: número io, 0~7: Caixa de controle DO0~DO7, 8~15: Caixa de controle CO0~CO7; ·status:0-Flaseÿ
1-Trueÿ
Parâmetro
·suave:0-Quebraÿ1-Sérioÿ
·thread: Se deve aplicar threads, 0- Não, 1- Sim. null
Valor de retorno
SPLCsetDO: Define a quantidade digital da caixa de controle, saída não bloqueante
Tabela 3-67 Parâmetros detalhados de SPLCsetDO
Atributo Explicação
Protótipo SPLCSetDO (id, status)
Descrição Define a quantidade digital da caixa de controle, saída não bloqueante ·id:
número io, 0~7: Caixa de controle DO0~DO7, 8~15: Caixa de controle CO0~CO7; ·status: 0-Falso, 1-
Parâmetro
Verdadeiro.
Valor de retorno nulo
Machine Translated by Google
89 / 152 Script de programação FRLua
SetToolDO: define a quantidade digital da ferramenta para bloquear a saída
Tabela 3-68 Parâmetros detalhados de SetToolDO
Atributo Explicação
Protótipo SetToolDO (id, status, suave, thread)
Descrição Conjunto de ferramentas de bloqueio de quantidade digital de saída
·id: número io, 0-End-DO0, 1-End-DO1;
·status:0-Falso,1-Verdadeiroÿ
Parâmetro
·suave:0-quebra,1-Sério;
·thread: Se deve aplicar threads, 0- Não, 1- Sim.
Valor de retorno nulo
SPLSetToolDO: Define a quantidade digital da ferramenta, saída não bloqueante
Tabela 3-69 Parâmetros detalhados de SPLSetToolDO
Atributo Explicação
Protótipo SPLSetToolDO (id, status, suave, thread)
Descrição Conjunto de ferramentas de quantidade digital, saída não bloqueante
·id: número io, 0-End-DO0, 1-End-DO1;
Parâmetro
·status: 0-Falso, 1-Verdadeiro.
Valor de retorno nulo
GetDI: Bloqueia a aquisição da entrada digital da caixa de controle
Tabela 3-70 Parâmetros detalhados do GetDI
Atributo Explicação
Protótipo ret = GetDI(id, thread)
Descrição Bloqueia a aquisição da entrada digital da caixa de controle
·id: número io, 0~7: caixa de controle DI0~DI7, 8~15: caixa de controle CI0~CI7;
Parâmetro
·thread: Se deve aplicar threads, 0- Não, 1- Sim.
Valor de retorno ·ret: 0-inválido, 1-válido
SPLCGetDI: acesso não bloqueante a E/S
Tabela 3-71 Parâmetros detalhados do SPLCGetDI
Atributo Explicação
Protótipo SPLCGetDI (id, status, stime)
Descrição Aquisição não bloqueante da entrada digital da caixa de controle
Machine Translated by Google
90 / 152 Script de programação FRLua
Tabela 3-71 (continuação)
1Atributo Explicação
·id: número io, 0~7: caixa de controle DI0~DI7, 8~15: caixa de controle CI0~CI7;
Parâmetro ·status:0-Falso,1-Verdadeiroÿ
·Stime: unidade de tempo de espera [ms].
Valor de retorno ·ret: 0-inválido, 1-válido
GetToolDI: Bloqueia a ferramenta de obter entrada numérica
Tabela 3-72 Parâmetros detalhados de GetToolDI
Atributo Explicação
Protótipo GetToolDI (id, thread)
Descrição Bloqueia a aquisição da entrada digital da caixa de controle
·id: número io, 0-End-DI0, 1-End-DI1;
Parâmetro
·thread: Se deve aplicar threads, 0- Não, 1- Sim.
Valor de retorno ·ret: 0-Inválido, 1-Válido.
SPLCGetDI: acesso não bloqueante a E/S
Tabela 3-73 Parâmetros detalhados de SPLCGetDI
Atributo Explicação
Protótipo SPLCGetToolDI (id, status, tempo)
Descrição Aquisição não bloqueante da entrada digital da caixa de controle
·id: número io, 0-End-DI0, 1-End-DI1;
Parâmetro ·status:0-Falso,1-Verdadeiroÿ
·Stime: unidade de tempo de espera [ms].
Valor de retorno ·ret: 0-inválido, 1-válido
Código 3-25 Exemplo de E/S digital
1. --Defina E/S digital
2. SetDO (0,1,0,1) -- Define a saída de bloqueio da quantidade digital da caixa de controle
3. SPLCsetDO (1,1) -- Define a saída digital não bloqueante da caixa de controle
4. SetToolDO (1,0,1,1) -- Define a quantidade digital da ferramenta para bloquear a saída
5. SPLCSetToolDO (1,0) -- Define a quantidade digital da ferramenta de saída não bloqueante
6. --PTP (DW01,100,0,0) Modo de movimento PTP
7.
8. --Obtenha IO digital
9. Ret1=dDI (0,1) -- Bloqueia a aquisição da entrada digital da caixa de controle
Machine Translated by Google
91 / 152 Script de programação FRLua
Código 3-25 (continuação)
10. Ret2=SPLCdEI (1,0,1000) -- Aquisição não bloqueante da entrada digital da caixa de controle
11. Ret3=Obter DI da ferramenta (1,0) -- Bloqueia a ferramenta de obter entrada numérica
12. Ret4=SPLCDetToolDI (1,0,100) -- Ferramenta não bloqueante para obtenção de entrada numérica
3.3.2 E/S analógicas
Nesta instrução, ela é dividida em duas partes: configuração da saída analógica
(SetAO/PLCSetAO) e obtenção de entrada analógica (GetDI/SPLCDeAI).
SetAO: define a saída de bloqueio analógico da caixa de controle
Tabela 3-74 Parâmetros detalhados do SetAO
Atributo Explicação
Protótipo SetAO (id, valor, thread)
Descrição Definir saída de bloqueio analógico da caixa de controle
·id: número io, 0-AI0, 1-AI1;
·valor: porcentagem do valor de corrente ou tensão, faixa [0~100%] correspondente ao valor
Parâmetro
de corrente [0~20mA] ou tensão [0~10V];
·thread: Se deve aplicar threads, 0- Não, 1- Sim.
Valor de retorno nulo
SPLCSetAO: define a saída analógica não bloqueante da caixa de controle
Tabela 3-75 Parâmetros detalhados de SPLCSetAO
Atributo Explicação
Protótipo SPLCSetAO (id, valor)
Descrição: Defina a saída analógica não bloqueante da caixa de controle
·id: número io, 0-AI0, 1-AI1;
Parâmetro ·valor: Porcentagem do valor de corrente ou tensão, a faixa [0~100%] corresponde ao valor de
corrente [0~20mA] ou tensão [0~10V].
Valor de retorno nulo
SetToolAO: Definir saída analógica da ferramenta
Tabela 3-76 Parâmetros detalhados de SetToolAO
Atributo Explicação
Protótipo SetToolAO (id, valor, thread)
Descrição Definir saída de bloqueio analógico da caixa de controle
Machine Translated by Google
92 / 152 Script de programação FRLua
Tabela 3-76 (continuação)2
Atributo Explicação
·id: número io, 0-End-AO0;
·valor: porcentagem do valor de corrente ou tensão, faixa [0~100%] correspondente ao
Parâmetro
valor de corrente [0~20mA] ou tensão [0~10V];
·thread: Se deve aplicar threads, 0- Não, 1- Sim.
Valor de retorno nulo
SPLCSetToolAO: define saída analógica não bloqueante da ferramenta
Tabela 3-77 Parâmetros detalhados de SPLCSetToolAO
Atributo Explicação
Protótipo SPLCSetToolAO (id, valor)
Descrição Conjunto de ferramentas de saída analógica não bloqueante
·id: número io, 0-End-AO0;
Parâmetro ·valor: Porcentagem do valor de corrente ou tensão, intervalo [0~100%] corresponde
para valor de corrente [0~20mA] ou tensão [0~10V].
Valor de retorno nulo
GetAI: Obtenha entrada analógica da caixa de controle
Tabela 3-78 Parâmetros detalhados do GetAI
Atributo Explicação
Protótipo ObterAI(id, thread)
Descrição Bloqueia a aquisição da entrada analógica da caixa de controle
·id: número io, 0 - AI0, 1 - AI1;
Parâmetro
·thread: Se deve aplicar threads, 0- Não, 1- Sim.
valor: porcentagem do valor de corrente ou tensão de entrada, faixa [0~100] corresponde
Valor de retorno
ao valor de corrente [0~20mA] ou tensão [0~10V]
SPLCGetAI: Aquisição não bloqueante da entrada analógica da caixa de controle
Tabela 3-79 Parâmetros detalhados de SPLCGetAI
Atributo Explicação
Protótipo SPLCGetAI (id, condição, valor, tempo)
Descrição Aquisição não bloqueante da entrada analógica da caixa de controle
Machine Translated by Google
93 / 152 Script de programação FRLua
Tabela 3-79 (continuação)
Atributo Explicação
·id: número io, 0-AI0, 1-AI1;
·valor: valor numérico, 1%~100%;
Parâmetro
·condição:0 - >ÿ1 - <;
·Stime:tempo máximo, unidade [ms];
Status do valor de retorno: status de retorno, 1-bem-sucedido, 0-falha.
GetToolAI: Ferramenta de bloco para obter entrada analógica
Tabela 3-80 Parâmetros detalhados do GetToolAI
Atributo Explicação
Protótipo GetToolAI (id, thread)
Descrição Ferramenta de bloco para obter entrada analógica
·id: número io, 0 - AI0, 1 - AI1;
Parâmetro
·thread: Se deve aplicar threads, 0- Não, 1- Sim.
valor: porcentagem do valor de corrente ou tensão de entrada, faixa [0~100] corresponde ao valor
Valor de retorno
de corrente [0~20mA] ou tensão [0~10V]
SPLCDetToolAI: Ferramenta de aquisição não bloqueante para entrada analógica
Tabela 3-81 Parâmetros detalhados de SPLCDetToolAI
Atributo Explicação
Protótipo SPLCGetToolAI (id, condição, valor, tempo)
Descrição Ferramenta de aquisição não bloqueante para entrada analógica
·id: número io, 0 - AI0, 1 - AI1;
·valor: valor numérico, 1%~100%;
Parâmetro
·condição:0->ÿ1-<;
·Stime:tempo máximo, unidade [ms];
Status do valor de retorno: status de retorno, 1-bem-sucedido, 0-falha.
Exemplo de simulação de E/S do código 3-26
1. -- Definir grandeza analógica
2. SetAO (0,10,0) -- Define a saída de bloqueio analógico da caixa de controle
3. SPLCSetAO (1,10) -- Define a saída analógica não bloqueante da caixa de controle
4. SetToolAO (0,10,0) -- Define a saída de bloqueio analógico da ferramenta
5. SPLCSetToolAO (0,10) -- Define a saída analógica não bloqueante da ferramenta
Machine Translated by Google
94 / 152 Script de programação FRLua
Código 3-26 (continuação)
6. --Obter grandeza analógica
7. value1=GetAI (0,0) -- Bloqueia a aquisição da entrada analógica da caixa de controle
8. value2=SPLCVEI (1,0,30,1000) -- Aquisição não bloqueante da entrada analógica da caixa de controle
9. value3=Get Tool AI (0,1) -- Bloqueia a entrada analógica da ferramenta de aquisição
10. value3=SPLCDetToolAI (0,0,10,50) -- Entrada analógica da ferramenta de aquisição não bloqueante
3.3.3 E/S virtuais
Virtual-IO é uma instrução de controle de IO virtual que define ou recupera simulações
estados DI e AI externos.
SetVirtualDI: Configurar DI externo simulado
Tabela 3-82 Parâmetros detalhados do SetVirtualDI
Atributo Explicação
Protótipo SetVirtualDI (id, status)
Descrição Configurar DI externo simulado
·id: número io, 0~15: Caixa de controle Vir-Ctrl-DI0~DI5;
Parâmetro
·status: 0-Flash, 1-Verdadeiro.
Valor de retorno nulo
SetVirtualToolDI: define DI de ferramenta externa simulada
Tabela 3-83 Parâmetros detalhados do SetVirtualToolDI
Atributo Explicação
Protótipo SetVirtualToolDI (id, status)
Descrição Configurar ferramenta externa de simulação DI
·id: número io, 0 - For-End-DI0, 1 - For-End-DI1;
Parâmetro
·status: 0-Flash, 1-Verdadeiro.
Valor de retorno nulo
GetVirtualDI: Obtenha DI externo simulado
Tabela 3-84 Parâmetros detalhados de GetVirtualDI
Atributo Explicação
Protótipo Obter VirtualDI(s)
Descrição Obter DI externo simulado
Parâmetro ·id: número io, 0~15: Caixa de controle Vir-Ctrl-DI0~DI5.
Valor de retorno ret: 0-inválido, 1-válido.
Machine Translated by Google
95 / 152 Script de programação FRLua
GetVirtualToolDI: Obter DI de ferramenta externa simulada
Tabela 3-85 Parâmetros detalhados de GetVirtualToolDI
Atributo Explicação
Protótipo Obter VirtualToolDI(s)
Descrição Obter DI de ferramenta externa simulada
Parâmetro ·id: número io, 0 - For-End-DI0, 1 - For-End-DI1.
Valor de retorno ret: 0-inválido, 1-válido.
SetVirtualAI: Configurar IA externa simulada
Tabela 3-86 Parâmetros detalhados do GetVirtualAI
Atributo Explicação
Descrição SetVirtualAI (id, valor)
do protótipo Configurar IA externa simulada
·id: número io, 0 - AI0, 1 - AI1;
Parâmetro
·valor: Valor de corrente correspondente [0~20mA] ou valor de tensão [0~10V].
Valor de retorno nulo
SetVirtualToolAI: Configurar ferramenta externa de simulação AI
Tabela 3-87 Parâmetros detalhados de GetVirtualToolAI
Atributo Explicação
Protótipo SetVirtualToolAI (id, valor)
Descrição Configurar ferramenta externa de simulação AI
·id: número io, 0 - Vir-End-AI0;
Parâmetro
·valor: Valor de corrente correspondente [0~20mA] ou valor de tensão [0~10V].
Valor de retorno nulo
GetVirtualAIÿ Obtenha IA externa simulada
Tabela 3-88 Parâmetros detalhados do GetVirtualAI
Atributo Explicação
Protótipo ObtenhaVirtualAI(s)
Descrição Obtenha IA externa simulada
Parâmetro ·id: número io, 0 - Vir-Ctrl-AI0, 1 - Vir-Ctrl-AI1.
valor: porcentagem do valor de corrente ou tensão de entrada, faixa [0~100] corresponde
Valor de retorno
ao valor de corrente [0~20mA] ou tensão [0~10V]
Machine Translated by Google
96 / 152 Script de programação FRLua
GetVirtualToolAIÿ Obtenha IA de ferramenta externa simulada
Tabela 3-89 Parâmetros detalhados de GetVirtualToolAI
Atributo Explicação
Protótipo valor = GetVirtualToolAI (id)
Descrição Obtenha IA de ferramenta externa simulada
Parâmetro ·id: número io, 0 - Vir-End-AI0.
valor: porcentagem do valor de corrente ou tensão de entrada, faixa [0~100] corresponde ao valor
Valor de retorno
de corrente [0~20mA] ou tensão [0~10V]
Exemplo de E/S Virtual do Código 3-27
1. --Simular configurações e recuperação de DI externo
2. SetVirtualDI (0,1) -- Define DI externo simulado, 0-número da porta DI0, 1-Verdadeiro
3. SetVirtualAI (0,5) -- Define AI externo simulado, 0-número da porta AI0,5- valor numérico 5ma
4. Ret1=GetVirtualDI (1) -- Obter DI externo simulado, número de porta 1 DI1
5. value1=GetVirtualAI (1) -- Obter IA externa simulada, 1 porta número AI1
6. --Simular configurações e recuperação de DI de ferramenta externa
7. SetVirtualToolDI (1,0) -- Define a ferramenta externa de simulação DI
8. SetVirtualToolAI (0,12) -- Configurar IA de ferramenta externa simulada
9. Ret2=GetVirtualToolDI (1) -- Obter DI de ferramenta externa simulada
10. value2=GetVirtualToolAI (0) -- Obter IA de ferramenta externa simulada
3.3.4 Esportes DO
As instruções relevantes para o movimento DO são divididas em modo de saída contínua
e modo de saída única para atingir a função de emitir continuamente sinais DO
de acordo com o intervalo definido durante o movimento linear.
MoveDOStart: A configuração paralela do status DO da caixa de controle inicia durante o movimento
Tabela 3-90 Parâmetros detalhados do MoveDOStart
Atributo Explicação
Protótipo MoveDOStart (doNum, distância, ciclo de trabalho)
Descrição Configuração paralela do status DO da caixa de controle durante o início do exercício
·doNum: Número DO da caixa de controle, 0~7: Caixa de controle DO0~DO7, 8~15:
Caixa de controle CO0~CO7;
Parâmetro
·distância: distância do intervalo, intervalo: 0~500, unidade [mm, padrão 10];
·dutyCycle: Unidade de ciclo de trabalho de pulso de saída [%], 0~99, padrão 50%.
Valor de retorno nulo
Machine Translated by Google
97 / 152 Script de programação FRLua
MoveDOStop: Configuração paralela do status DO da caixa de controle para parar durante o movimento
Tabela 3-91 Parâmetros detalhados do MoveDOStop
Atributo Explicação
Protótipo MoveDOStop()
Descrição Configuração paralela do status DO da caixa de controle para parar durante o movimento.
Parâmetro nulo
Valor de retorno nulo
MoveToolDOStart: Configuração paralela do status DO da ferramenta durante o início do movimento
Tabela 3-92 Parâmetros detalhados do MoveToolDOStart
Atributo Explicação
Protótipo MoveToolDOStart (doNum, distância, dutyCycle)
Descrição A configuração paralela do status DO da ferramenta durante o movimento é iniciada.
·doNum: Número de DO da ferramenta, 0-End-DO0, 1-End-DO1;
Parâmetro ·distância: distância do intervalo, intervalo: 0~500, unidade [mm, padrão 10];
·dutyCycle: Unidade de ciclo de trabalho de pulso de saída [%], 0~99, padrão 50%.
Valor de retorno nulo
MoveToolDOStop: define o status DO da ferramenta para parar em paralelo durante o movimento
Tabela 3-93 Parâmetros detalhados do MoveToolDOStop
Atributo Explicação
Protótipo MoveToolDOStop()
Descrição Define o status DO da ferramenta para parar em paralelo durante o movimento.
Parâmetro nulo
Valor de retorno nulo
Exemplo de movimento de código 3-28
1. --Caixa de controle
2. MoveDOStart (1,10,50)
3. --Defina o movimento DO saída contínua, 1 número de porta DO1, 10 intervalo de tempo 10 mm, 50 saídas
ciclo de trabalho de pulso 50%
4. Lin (DW01,100, -1,0,0) -- Movimento Linear
5. MoveDOStop() -- Entrada DO de parada de movimento
Machine Translated by Google
98 / 152 Script de programação FRLua
Código 3-28 (continuação)
6.
7. --Ferramentas
8. MoveToolDOStart(0,10,50)
9. Lin (DW01,100, -1,0,0) -- Movimento Linear
10. MoveToolDOStop() -- Entrada DO de parada de movimento
3.3.5 Exercise AO
MoveAO, quando usado em conjunto com comandos de movimento, pode atingir saída proporcional de
sinais AO com base na velocidade TCP em tempo real durante o movimento
processo.
MoveAOStart: O movimento da caixa de controle AO inicia
Tabela 3-94 Parâmetros detalhados de MoveAOStart
Atributo Explicação
Protótipo MoveAOStart (AONum, maxTCPSpeed, maxAOPercent, zeroZoneCmp)
Descrição Caixa de controle de movimento AO inicia
·AONum: Número AO da caixa de controle, 0-AO0,1-AO1;
·maxTCpspeed: valor máximo de velocidade TCP [1-5000mm/s], padrão 1000;
·maxAOPercent: A porcentagem de AO correspondente ao TCP máximo
Parâmetro
valor de velocidade, com padrão de 100%;
·zeroZoneCmp: valor de compensação de zona morta, porcentagem AO, modelagem, padrão é
20%, intervalo [0-100].
Valor de retorno nulo
MoveAOStop: Fim do movimento da caixa de controle AO
Tabela 3-95 Parâmetros detalhados de MoveAOStop
Atributo Explicação
Protótipo MoveAOStop()
Descrição Caixa de controle de movimento AO termina
Parâmetro nulo
Valor de retorno nulo
Machine Translated by Google
99 / 152 Script de programação FRLua
MoveToolAOStart: Início do movimento da ferramenta AO
Tabela 3-96 Parâmetros detalhados de MoveAOStart
Atributo Explicação
Protótipo MoveToolAOStart (AONum, maxTCPSpeed, maxAOPercent, zeroZoneCmp)
Descrição O movimento da ferramenta AO começa
·AONum: Número AO da caixa de controle, 0-AO0,1-AO1;
·maxTCpspeed: valor máximo de velocidade TCP [1-5000mm/s], padrão 1000;
·maxAOPercent: A porcentagem de AO correspondente ao TCP máximo
Parâmetro
valor de velocidade, com padrão de 100%;
·zeroZoneCmp: valor de compensação de zona morta AO porcentagem, modelagem,
o padrão é 20%, intervalo [0-100].
Valor de retorno nulo
MoveToolAOStop: Fim do movimento da ferramenta AO
Tabela 3-97 Parâmetros detalhados de MoveAOStop
Atributo Explicação
Protótipo MoveToolAOStop ()
Descrição Movimento da ferramenta AO termina
Parâmetro nulo
Valor de retorno nulo
Exemplo de AO de movimento do código 3-29
1. --Caixa de controle
2. MoveAOStart (1,1000,100,20) -- Define a saída AO de movimento, 1 número de porta AO1,1000-
velocidade máxima do TCP, 100-porcentagem de velocidade máxima do TCP, 20-porcentagem de valor de
compensação de zona morta AO
3. Lin (DW01,100,0,0,0) -- Movimento Linear
4. MoveAOStop() -- Saída AO de stop motion
5.
6. -- Ferramentas
7. MoveToolAOStart (0,1000,100,20)
8. Linha(DW01,100,0,0,0)
9. MoveToolAOStop ()
Machine Translated by Google
100 / 152 Script de programação FRLua
3.3.6 Expandindo IO
Aux-IO é uma função de comando para controle de expansão de E/S externa entre robôs e CLPs,
que exige que o robô estabeleça comunicação UDP com o CLP. Com base nos 16 canais de entrada/
saída originais, 128 canais de entrada/saída podem ser expandidos.
ExtDevSetUDPComParam: Configurar dados de comunicação UDP
Tabela 3-98 Parâmetros detalhados de ExtDevSetUDPComParam
Atributo Explicação
Protótipo ExtDevSetUDPComParam (ip, porta, período)
Descrição Configuração de parâmetros de comunicação do eixo estendido UDP
·ip: endereço IP do PLC;
Parâmetro ·porta: Número da porta;
·período: Ciclo de comunicação (ms).
Valor de retorno nulo
ExtDevLoadUDPDriver carrega comunicação UDP
Tabela 3-99 Parâmetros detalhados do ExtDevLoadUDPDriver
Atributo Explicação
Protótipo ExtDevLoadUDPDriver()
Descrição Carregar comunicação UDP
Parâmetro nulo
Valor de retorno nulo
Exemplo de AO de movimento do código 3-30
1. --Configuração e carregamento de parâmetros de comunicação do eixo estendido UDP
2.ExtDevSetUDPComParam("192.168.58.88",2021,2)
3. --Configuração de comunicação UDP, "192.168.58.88" - endereço IP, número da porta 2021, 2-
ciclo de comunicação
4. ExtDevLoadUDPDriver() -- Carrega o driver UDP para habilitar a comunicação.
5. WaitMs (500) - Aguarde 500 milissegundos para garantir que o driver UDP foi carregado
corretamente.
SetAuxDO: Definir DO estendido
Tabela 3-100 Parâmetros detalhados de SetAuxDO
Atributo Explicação
Protótipo SetAuxDO (DONum, status, smooth, thread)
Descrição Conjunto estendido DO
Machine Translated by Google
101 / 152 Script de programação FRLua
Tabela 3-100 (continuação)
Atributo Explicação
·DOUm: número DO, intervalo [0~127];
·status:0-Falso,1-Verdadeiroÿ
Parâmetro
·suave:0-Quebraÿ1-Sérioÿ
·thread: Se deve aplicar threads, 0- Não, 1- Sim.
Valor de retorno nulo
GetAuxDI: Obtenha DI Estendido
Tabela 3-101 Parâmetros detalhados de GetAuxDI
Atributo Explicação
Protótipo GetAuxDI (DINum)
Descrição Obtenha valor DI estendido
Parâmetro ·DINum: Número DI, faixa [0~127].
O valor de retorno éOpen: 0-off; 1- Open
SetAuxAO: Set Extended AO
Tabela 3-102 Parâmetros detalhados de SetAuxAO
Atributo Explicação
Protótipo SetAuxAO (AONum, valor, thread)
Descrição Configurar AO estendido
·id: número AO, intervalo [0~3];
·valor: porcentagem do valor de corrente ou tensão, intervalo [0~100%] correspondente
Parâmetro
para valor de corrente [0~20mA] ou tensão [0~10V];
·thread: Se deve aplicar threads, 0- Não, 1- Sim.
Valor de retorno nulo
GetAuxAI: Obtenha valor de IA estendido
Tabela 3-103 Parâmetros detalhados de GetAuxAI
Atributo Explicação
Protótipo GetAuxAI (AINum, thread)
Descrição Obtenha valores de IA estendidos
·AINum: número AuxAI, intervalo [0~3];
Parâmetro
·thread: Se deve aplicar threads, 0- Não, 1- Sim.
valor: porcentagem do valor de corrente ou tensão de entrada, faixa [0~100] corresponde
Valor de retorno
ao valor de corrente [0~20mA] ou tensão [0~10V]
Machine Translated by Google
102 / 152 Script de programação FRLua
WaitAuxDI: Aguardando entrada DI estendida
Tabela 3-104 Parâmetros detalhados de WaitAuxDI
Atributo Explicação
Protótipo WaitAuxDI(DINum, bOpen, tempo, tempo limite)
Descrição Aguardando entrada DI estendida
·DINum: número DI;
·bBOpen: Liga Verdadeiro, desliga Falso;
Parâmetro ·time: tempo máximo de espera (ms); ·timeout:
aguardando processamento de tempo limite 0- parar erro, 1- continuar esperando, 2- continuar
esperando.
Valor de retorno nulo
WaitAuxAI: Aguardando entrada de IA estendida
Tabela 3-105 Parâmetros detalhados de WaitAuxAI
Atributo Explicação
Protótipo WaitAuxAI (AINum, sinal, valor, tempo, tempo limite)
Descrição Aguardando entrada de IA estendida
·AINum: número AI; ·sign:
0- maior que; 1- menor que; ·value: valor AI;
·time: tempo máximo
Parâmetro
de espera (ms); ·timeout: aguardando
processamento de tempo limite 0- parar erro, 1- continuar esperando, 2-
continue esperando.
Valor de retorno nulo
Código 3-31 Exemplo de conjunto de instruções de E/S estendido
1. --Defina DO estendido
2. DefinirAuxDO(0,1,1,0)
3. --Configurar AO estendido 4.
SetAuxAO(0,10,0)
5. --Aguardando entrada DI estendida 6.
WaitAuxDI(0,0,1000,0)
7. --Aguardando entrada de IA estendida 8.
WaitAuxAI(0,0,50,1000,0)
9. --Obter valor DI estendido
10. Direita = GetAuxDI(0,0)
11. --Obter valores de IA estendidos
12. valor = GetAuxAI(0,0)
Machine Translated by Google
103 / 152 Script de programação FRLua
3.3.7 Sistema de Coordenadas
A instrução do sistema de coordenadas é dividida em duas partes: “Definir coordenada da ferramenta
sistema" e "Definir sistema de coordenadas da peça de trabalho".
SetToolList: Definir tabela de séries de coordenadas de ferramentas
Tabela 3-106 Parâmetros detalhados de SetToolList
Atributo Explicação
Protótipo SetToolList(nome)
Descrição Definir tabela de séries de coordenadas de ferramentas
Parâmetro ·nome: O nome do sistema de coordenadas da ferramenta, como toolcoord0.
Valor de retorno nulo
SetWObjList: define a tabela de séries de coordenadas da peça de trabalho
Tabela 3-107 Parâmetros detalhados de SetWObjList
Atributo Explicação
Protótipo SetWObjList (nome)
Descrição Definir tabela de séries de coordenadas de ferramentas
Parâmetro ·nome: O nome do sistema de coordenadas da peça de trabalho, como wobjcoord0.
Valor de retorno nulo
Exemplo de sistema de coordenadas do código 3-32
1. SetWObjList (wobjcoord0) -- Define coordenadas da peça de trabalho
2. SetToolList (toolcoord0) -- Define coordenadas da ferramenta
3.3.8 Comutação de modo
Mode() pode ser usado para alternar o modo do robô. Este comando pode alternar o robô para o modo manual,
geralmente adicionado ao final de um programa, para que o usuário possa alternar automaticamente o robô para o modo manual
e arrastá-lo após a execução do programa.
Modo: alternar do modo robô para o modo manual
Tabela 3-108 Parâmetros detalhados do modo
Atributo Explicação
Modo de protótipo (estado)
Descrição Controle o robô para alternar para o modo manual
Parâmetro ·estado: 0- Modo robô, padrão 1- Modo manual.
Valor de retorno nulo
Machine Translated by Google
104 / 152 Script de programação FRLua
Exemplo de sistema de coordenadas do código 3-33
1. Lin(DW01,100,-1,0,0)
2. Lin(DW02,100,-1,0,0)
3. Lin(DW03,100,-1,0,0)
4. Modo(1)
3.3.9 Nível de colisão
Ao definir os níveis de colisão, os níveis de colisão de cada eixo podem ser ajustados em tempo real.
tempo durante a execução do programa, tornando a implantação de cenários de aplicação mais
flexível. No modo de porcentagem personalizado, 1~100% corresponde a 0~100N.
SetAnticollision: Configuração do nível de colisão
Tabela 3-109 Parâmetros detalhados de SetAnticollision
Atributo Explicação
Protótipo SetAnticollision (modo, nível, configuração)
Descrição Definir nível de colisão
·modo: 0- nível padrão, 1- porcentagem personalizada;
·Nível={j1, j2, j3, j4, j5, j6}: limite de colisão, um total de 11 níveis, 1 é o nível 1, 2 é o
Parâmetro nível 1 e 2100 é o nível de colisão;
·Config: 0- Não atualizar arquivo de configuração, 1- Atualizar arquivo de configuração,
o padrão é 0.
Valor de retorno nulo
Exemplo de sistema de coordenadas do código 3-34
1. nível={4,4,4,4,4,5}
2. SetAnticollision (0, nível, 0) -- Define nível de colisão, 0-Modo padrão, nível - Nível de colisão
de cada junta, 0-Não atualizar arquivo de configuração
1. nível1={40,40,40,40,40,50}
2. SetAnticollision (1, nível 1,0) -- Define nível de colisão, 1- Modo de porcentagem personalizado, nível -
Limite de colisão para cada junta, 0- Não atualizar arquivo de configuração
3.3.10 Aceleração
O comando Acc é usado para habilitar a configuração independente da aceleração do robô.
Ajustando o comando de movimento e ajustando a velocidade, a aceleração e
o tempo de desaceleração pode ser aumentado ou diminuído, e o tempo do ritmo de ação do robô pode
ser ajustado.
Machine Translated by Google
105 / 152 Script de programação FRLua
SetOaccScale, define a aceleração do robô
Tabela 3-110 Parâmetros detalhados de SetOaccScale
Atributo Explicação
Protótipo DefinirEscalaOacc(acc)
Descrição Definir aceleração do robô
Parâmetro ·acc: Porcentagem de aceleração do robô.
Valor de retorno nulo
Exemplo de aceleração do código 3-35
1. SetOaccScale (20) --20- Define a porcentagem de aceleração
3.4 Instrução periférica
3.4.1 Garra
ActGripper: ativação/redefinição da garra
Tabela 3-111 Parâmetros detalhados do ActGripper
Atributo Explicação
Descrição ActGripper(índice,ação)
do protótipo Ativar Gripper
·índice: Número da garra;
Parâmetro
·ação: 0- Redefinir, 1- Ativar.
Valor de retorno nulo
MoveGripper: Parâmetros de controle de movimento da garra
Tabela 3-112 Parâmetros detalhados do MoveGripper
Atributo Explicação
Protótipo MoveGripper (índice, posição, velocidade, força, tempo_máximo, bloco)
Descrição Definir parâmetros de controle de movimento da garra
·índice: Número da garra, intervalo [1~8];
·pos: Porcentagem de posição, intervalo [0~100];
·vel: porcentagem de velocidade, intervalo [0~100];
Parâmetro
·força: porcentagem de torque, intervalo [0~100];
·max_time: tempo máximo de espera, intervalo [0~30000], unidade: ms;
·block: se está bloqueado, 0-bloqueante, 1-não bloqueador.
Valor de retorno nulo
Machine Translated by Google
106 / 152 Script de programação FRLua
Exemplo de pinça de código 3-36
1. ActGripper (1,0) -- Reinicialização da garra, 1-Número da garra, 0-Reinicialização
2. WaitMs (1000) – Aguarde 1000 ms para garantir a reinicialização bem-sucedida do jaw
3. ActGripper (1,1) -- Ativação da garra, 1-Número da garra, 1-Ativação da garra
4. WaitMs (10) – Aguarde 1000 ms para garantir a reinicialização bem-sucedida do jaw
5. MoveGripper(1,62,27,51,3000,1)
6. --Controle de movimento da garra, 1 número de garras, 62 posições da garra, 27 velocidades de abertura e fechamento
da garra, 51 torque de abertura e fechamento da garra, 3000 tempo máximo de espera da garra, 0 bloqueios
3.4.2 Pistola de pulverização
O comando da pistola de pulverização pode controlar ações como "iniciar pulverização", "parar
pulverização", "iniciar limpeza" e "parar pulverização leve" da pistola de pulverização.
SprayStart: A pulverização começa
Tabela 3-113 Parâmetros detalhados do SprayStart
Atributo Explicação
Protótipo SprayStart ()
Descrição A pulverização começa
Parâmetro nulo
Valor de retorno nulo
SprayStop: Pare de pulverizar
Tabela 3-114 Parâmetros detalhados do SprayStop
Atributo Explicação
Protótipo SprayStop ()
Descrição Pare de pulverizar
Parâmetro nulo
Valor de retorno nulo
PowerCleanStart: Comece a limpar a pistola
Tabela 3-115 Parâmetros detalhados do PowerCleanStart
Atributo Explicação
Protótipo PowerCleanStart ()
Descrição Comece a limpar a arma
Parâmetro nulo
Valor de retorno nulo
Machine Translated by Google
107 / 152 Script de programação FRLua
PowerCleanStop: Paradas de limpeza de armas
Tabela 3-116 Parâmetros detalhados do PowerCleanStop
Atributo Explicação
Protótipo PowerCleanStop ()
Descrição Pare de limpar a arma
Parâmetro nulo
Valor de retorno nulo
Exemplo de pistola de pulverização Código 3-37
1. Lin (SprayStart, 100, -1,0,0) -- Inicie o ponto de pulverização e mova para o ponto inicial de pulverização
2. SprayStart() -- Inicia a pulverização
3. Lin (Sprayline, 100, -1,0,0) -- Trajeto de pulverização
4. Lin (template3,100, -1,0,0) -- Ponto de parada de pulverização
5. SprayStop () - Parar de pulverizar
6. Lin (template4,100, -1,0,0) -- Ponto de limpeza da arma, mover para o ponto de limpeza da arma, aguardar o
processamento da limpeza da arma
7. PowerCleanStart() -- Inicia a limpeza da arma
8. WaitMs (5000) -- Tempo de limpeza da arma 5000ms
9. PowerCleanStop() -- Interrompe a limpeza da arma
3.4.3 Eixo de expansão
O eixo de expansão é dividido em dois modos: Controlador PLC (UDP) e
Controlador Servo Driver (485).
EXT_AXIS_PTP: Modo UDP Movimento de eixo estendido
Tabela 3-117 Parâmetros detalhados de EXT_AXIS_PTP
Atributo Explicação
Protótipo EXT_AXIS_PTP (modo, nome, Vel)
Descrição Modo UDP Movimento de eixo estendido
·modo: Modo de movimento, 0-assíncrono, 1-síncrono;
Parâmetro ·nome: Nome do ponto;
·vel: Velocidade de depuração.
Valor de retorno nulo
Machine Translated by Google
108 / 152 Script de programação FRLua
ExtAxisMoveJ: Modo UDP Movimento de eixo estendido
Tabela 3-118 Parâmetros detalhados de ExtAxisMoveJ
Atributo Explicação
Protótipo ExtAxisMoveJ (modo, E1, E2, E3, E4, Vel)
Descrição Modo UDP Movimento de eixo estendido
·modo: Modo de movimento, 0-assíncrono, 1-síncrono;;
Parâmetro ·E1, E2, E3, E4: Posições do eixo externo
·Vel: Velocidade de depuração.
Valor de retorno nulo
ExtAxisSetHoming: Eixo estendido UDP retorna a zero
Tabela 3-119 Parâmetros detalhados de ExtAxisSetHoming
Atributo Explicação
Protótipo ExtAxisSetHoming(axisID, modo, searchVel, latchVel)
Descrição O eixo de extensão UDP retorna a zero
·axisID: número do eixo [1-4];
·modo: retornar a zero modo: 0. retornar a zero na posição atual, 1. retornar
Parâmetro para zero no limite negativo, 2. retornar a zero no limite positivo;
·searchVel: Velocidade de pesquisa zero (mm/s);
·latchVel: Velocidade de posicionamento zero (mm/s).
Valor de retorno nulo
ExtAxisSeroOn: Habilitar eixo estendido UDP
Tabela 3-120 Parâmetros detalhados do ExtAxisSeroOn
Atributo Explicação
Protótipo ExtAxisServoOn(ID do eixo, status)
Descrição Habilitar eixo de extensão UDP
·axisID: número do eixo [1-4];
Parâmetro
·status: 0- Habilitar; 1- Habilitar.
Valor de retorno nulo
Exemplo de eixo de extensão UDP do código 3-38
1. --Exemplo de eixo de extensão UDP
2. ExtDevSetUDPComParam ("192.168.58.88", 2021,10) -- Configurar comunicação UDP
Parâmetros
Machine Translated by Google
109 / 152 Script de programação FRLua
Código 3-38 (continuação)
3. ExtDevLoadUDPDriver() -- Carrega driver UDP para habilitar a comunicação
4. WaitMs (500) – Aguarde 500 milissegundos para garantir que o driver UDP foi carregado
corretamente
5. ExtAxisSeroOn (1,0) -- desabilitar, desabilitar eixo 1
6. ExtAxisSeroOn (1,1) -- Habilitar, habilitar eixo 1
7. ExtAxisSetHoming (1,0,40,45) -- Zerar, 1-Número do eixo estendido, 0-Posição atual
zeragem, 40 Velocidade de zeragem, 45 Velocidade de fixação de zeragem
8. WaitMs (1000) - Aguarde 1000 milissegundos
9. EXT_EAXIS_PTP (0, DW01,100) -- Comando de movimento, 0-Movimento assíncrono, DW01-
Nome do ponto, 100- Velocidade de depuração
10. WaitMs (1000) -- Aguarde 1000 milissegundos
O modo servo driver do controlador (485) é usado para configurar os parâmetros do
eixo estendido.
AuxServosetStatusid: Defina o número do eixo de dados do eixo de extensão 485 no status
opinião
Tabela 3-121 Parâmetros detalhados de AuxServosetStatusID
Atributo Explicação
Protótipo AuxServosetStatusID(servoide)
Descrição Defina o número do eixo de dados do eixo de extensão 485 no feedback de status
Parâmetro ·servoid: ID do servo drive, intervalo [1-15], correspondente ao ID do escravo.
Valor de retorno nulo
AuxServoEnable: O eixo de extensão 485 está habilitado
Tabela 3-122 Parâmetros detalhados de AuxServoEnable
Atributo Explicação
Protótipo AuxServoEnable(servoide, status)
Descrição Habilitar/desabilitar eixo de extensão 485
·servoid: ID do servo drive, intervalo [1-15], correspondente ao ID do escravo;
Parâmetro
·status: Habilitar status, 0-desabilitar, 1-habilitar.
Valor de retorno nulo
Machine Translated by Google
110 / 152 Script de programação FRLua
AuxServoSetControlmode: define o modo de controle do eixo estendido 485
Tabela 3-123 Parâmetros detalhados do AuxServoSetControlmode
Atributo Explicação
Protótipo AuxServoSetControlmode(servoide, modo)
Definir modo de controle do eixo de extensão 485
Descrição
·servoid: ID do servo drive, intervalo [1-15], correspondente ao ID do escravo;
Parâmetro
·modo: Modo de controle, modo de posição 0, modo de velocidade 1.
Valor de retorno nulo
AuxServoHoming: define o retorno do eixo de extensão 485 para o modo zero
Tabela 3-124 Parâmetros detalhados de AuxServoHoming
Atributo Explicação
Protótipo AuxServoHoming(servoide, modo, searchVel, latchVel)
Descrição Defina o eixo de extensão 485 como zero
·servoid: ID do servo drive, intervalo [1-15], correspondente ao ID do escravo;
·modo: modo de retorno a zero, 1- retorno a zero na posição atual; 2-
Parâmetro Limite negativo retorna a zero; 3-Limite positivo retorna a zero;
·searchVel: Velocidade de retorno zero, mm/s ou °/s;
·latchVel: velocidade de fixação, mm/s ou °/s;
Valor de retorno nulo
AuxServoSetTargetSpeed: define a velocidade alvo do eixo de extensão 485 no modo de velocidade
Tabela 3-125 Parâmetros detalhados de AuxServoSetTargetSpeed
Atributo Explicação
Protótipo AuxServoSetTargetSpeed(servoide, velocidade)
Descrição Conjunto 485 Velocidade Alvo do Eixo Estendido (modo Velocidade)
·servoid: ID do servo drive, intervalo [1-15], correspondente ao ID do escravo;
Parâmetro
·velocidade: Velocidade alvo, mm/s ou °/s.
Valor de retorno nulo
AuxServoSetTargetPos: define a posição alvo do eixo de extensão 485 na posição
modo
Machine Translated by Google
111 / 152 Script de programação FRLua
Tabela 3-3 Parâmetros detalhados do AuxServoSetTargetPos
propriedade ilustrar
Protótipo AuxServoSetTargetPos (servoId, pos, velocidade) Descrição Define
a posição alvo do eixo de extensão 485 (modo de posição)
·servoid: ID do servo drive, intervalo [1-15], correspondente ao ID do escravo; ·pos: Posição
parâmetro alvo; ·speed: Velocidade alvo,
mm/s ou °/s.
Exemplo 1 de eixo de acionamento do controlador + servo do código 3-39
1. --Controlador+servo drive (modo de posição)
2. AuxServoSetStatusID (1) – Define o número do eixo de dados do eixo de extensão 485 no status
opinião
3. AuxServoEnable (1,0) -- Define a habilitação do eixo de extensão 485, 1-ID do servo drive, 0-desabilita 4. WaitMs (500)
-- Aguarda 500 milissegundos 5. AuxServoEnable (1,1) -- Define
a habilitação do eixo de extensão 485, 1-ID do servo driver, 1-habilita 6. WaitMs (500) -- Aguarda 500 milissegundos 7.
AuxServoHoming (1,1,10,10) -- Define o modo de zeragem do
eixo de extensão 485, 1-ID do servo driver, 1-
posição atual de zeragem, 10 velocidades de zeragem, 10 velocidades de fixação
8. WaitMs (500) -- Aguarde 500 milissegundos 9. AuxServoSetTarget
Pos (1,300,30) -- Defina a posição alvo do eixo estendido 485 (modo Posição), 1- ID do driver do servo, 300- Posição alvo, 30-
Velocidade alvo
10. WaitMs (500) -- Aguarde 500 milissegundos
11.
12. -Controlador+servo drive (modo de velocidade)
13. AuxServoSetStatusID (1) – Define o número do eixo de dados do eixo de extensão 485 no status
opinião
14. AuxServoEnable (1,0) -- Define a habilitação do eixo de extensão 485, 1-ID do servo drive, 0-desabilita 15. WaitMs
(500) -- Aguarda 500 milissegundos 16. AuxServoSetControlmode
(1,1) -- Define o modo de controle do eixo estendido 485, 1-ID do servo driver, 1-modo de velocidade 17. WaitMs (500) -- Aguarda
500 milissegundos 18.
AuxServoEnable (1,1) -- Define a habilitação do eixo de extensão
485, 1-ID do servo driver, 1-habilita 19. WaitMs (500) -- Aguarda 500 milissegundos 20. AuxServoHoming (1,1,10,10) --
Define o modo de zeragem do eixo de extensão 485, 1-ID do
servo driver, 1-
posição atual de zeragem, 10 velocidades de zeragem, 10 velocidades de fixação
21. WaitMs (500) -- Aguarde 500 milissegundos 22.
AuxServoSetTarget Speed (1, 30) -- Defina a posição alvo do eixo estendido 485 (modo de velocidade), 1- ID do driver do servo, 30-
Velocidade alvo 23. WaitMs (500) -- Aguarde 500
milissegundos
Machine Translated by Google
112 / 152 Script de programação FRLua
3.4.4 Correia Transportadora
ConveyorIODetect: detecção de E/S em tempo real
Tabela 3-127 Parâmetros detalhados do ConveyorIODetect
Atributo Explicação
Protótipo ConveyorIODetect(máx_t)
Descrição Detecção de E/S em tempo real de peças de trabalho de correia transportadora
Parâmetro ·max_t: tempo máximo de detecção, em milissegundos.
Valor de retorno nulo
ConveyorGetRackData: Detecção de localização em tempo real
Tabela 3-128 Parâmetros detalhados de ConveyorGetRackData
Atributo Explicação
Protótipo ConveyorGetTrackData(modo)
Descrição Detecção de localização em tempo real para obter o status atual da localização
Parâmetro ·modo: 1- Rastreamento e preensão 2- Rastreamento de movimento 3- Rastreamento TPD.
Valor de retorno nulo
ConveyorTrackStart: Habilitar rastreamento da correia
Tabela 3-129 Parâmetros detalhados do ConveyorTrackStart
Atributo Explicação
Protótipo ConveyorTrackStart (status)
Descrição O rastreamento da correia de transmissão começa
Parâmetro ·status: Status, 1- Iniciar, 0- Parar.
Valor de retorno nulo
ConveyorTrackEnd: Parar o rastreamento da correia
Tabela 3-130 Parâmetros detalhados de ConveyorTrackEnd
Atributo Explicação
Protótipo ConveyorTrackEnd()
Descrição Paradas de rastreamento da correia de transmissão
Parâmetro nulo
Valor de retorno nulo
Machine Translated by Google
113 / 152 Script de programação FRLua
Exemplo de comando de correia transportadora do código 3-40
1. PTP (conversterstart, 30, -1,0) -- robô agarrando o ponto inicial
2. Enquanto (1) do - captura de loop
3. ConveyorIODetect (10000) -- Detecção de objetos IO em tempo real
4. ConveyorGet RackData (1) -- Aquisição de posição de objeto
5. ConveyorTrackStart (1) -- Início do rastreamento da correia transportadora
6. Lin (cvrCatchPoint, 10, -1,0,0) -- O robô atinge o ponto de preensão
7. MoveGripper (1.255.255.0.10000) -- Agarrar objetos com pinças
8. Lin (cvrRaisePoint, 10, -1,0,0) -- Elevação de robô
9. ConveyorTrackEnd() -- Fim do rastreamento da correia transportadora
10. PTP (transportador, 30, -1,0) -- o robô chega ao ponto de espera
11. PTP (converentes, 30, -1,0) -- o robô atinge o ponto de posicionamento
12. MoveGripper (1,0,255,0,10000) -- Liberação da garra
13. PTP (conversterstart, 50, -1,0) -- O robô retorna ao ponto inicial de preensão
novamente e espera pela próxima tentativa
14. fim -- Fim
3.4.5 Equipamento de moagem
PolishingUnloadComDriver: descarrega o driver de comunicação do cabeçote de polimento
Tabela 3-131 Parâmetros detalhados do PolishingUnloadComDriver
Atributo Explicação
Protótipo PolishingUnloadComDriver ()
Descrição Descarregamento do driver de comunicação para cabeça de polimento
Parâmetro nulo
Valor de retorno nulo
PolishingLoadComDriver: Carrega o driver de comunicação do cabeçote de polimento
Tabela 3-132 Parâmetros detalhados do PolishingLoadComDriver
Atributo Explicação
Protótipo PolishingLoadComDriver ()
Descrição Carregamento do driver de comunicação do cabeçote de polimento
Parâmetro nulo
Valor de retorno nulo
Machine Translated by Google
114 / 152 Script de programação FRLua
PolishingDeviceEnable: Configurações de ativação do dispositivo
Tabela 3-133 Parâmetros detalhados de PolishingDeviceEnable
Atributo Explicação
Protótipo AtivarDispositivoDePolimento (status)
Descrição O equipamento de cabeça de moagem permite
Parâmetro ·status: 0- Habilitar abaixo, 1- Habilitar acima.
Valor de retorno nulo
PolishingClearError: Limpeza de erros
Tabela 3-134 Parâmetros detalhados de PolishingClearError
Atributo Explicação
Protótipo PolishingClearError ()
Descrição Limpe a mensagem de erro do equipamento de cabeça de polimento
Parâmetro nulo
Valor de retorno nulo
PolishingTorqueSensorReset: zera o sensor de força da cabeça de polimento
Tabela 3-135 Parâmetros detalhados de PolishingTorqueSensorReset
Atributo Explicação
Protótipo Redefinição do sensor de torque de polimento ()
Descrição O sensor de força da cabeça de polimento é zerado.
Parâmetro nulo
Valor de retorno nulo
PolishingSetTargetVelocity: Configuração de velocidade do cabeçote de retificação
Tabela 3-136 Parâmetros detalhados de PolishingSetTargetVelocity
Atributo Explicação
Protótipo PolimentoDefinirVelocidadeAlvo (rot)
Descrição Configuração de velocidade do cabeçote de moagem
Parâmetro ·rot: velocidade de rotação, unidade [r/min].
Valor de retorno nulo
Machine Translated by Google
115 / 152 Script de programação FRLua
PolishingSetTargetTorque: Definindo Força
Tabela 3-137 Parâmetros detalhados de PolishingSetTargetTorque
Atributo Explicação
Protótipo Conjunto de polimentoTorqueAlvo (conjuntoN)
Descrição Ajuste da cabeça de polimento com potência de ajuste
Parâmetro ·setN: Define força, unidade [N].
Valor de retorno nulo
PolishingSetTargetPosition: define a distância de extensão da cabeça de polimento
Tabela 3-138 Parâmetros detalhados de PolishingSetTargetPosition
Atributo Explicação
Protótipo PolimentoSetTargetPosition (distância)
Descrição Defina a distância de extensão da cabeça de polimento
Parâmetro ·distância: Distância estendida, medida em milímetros.
Valor de retorno nulo
PolishingSetOperationMode: define o modo de controle do cabeçote de polimento
Tabela 3-139 Parâmetros detalhados de PolishingSetOperationMode
Atributo Explicação
Protótipo PolimentoDefinirPosiçãoAlvo (modo)
Descrição Configuração do modo de cabeça de moagem
Parâmetro ·modo: 1- modo retorno a zero, 2- modo posição, 3- modo torque.
Valor de retorno nulo
PolishingSetTargetTouchforce: Configurações de força de contato
Tabela 3-140 Parâmetros detalhados de PolishingSetTargetTouchForce
Atributo Explicação
Protótipo PolimentoSetTargetTouchForce (conN)
Descrição Configuração de força de contato
Parâmetro ·conN: Força de contato, unidade [N].
Valor de retorno nulo
Machine Translated by Google
116 / 152 Script de programação FRLua
PolishingSetTargetTouchtime: define a configuração do tempo de transição de força
Tabela 3-141 Parâmetros detalhados de PolishingSetTargetTouchTime
Atributo Explicação
Protótipo PolimentoSetTargetTouchForceTime (settime)
Descrição Defina o tempo de transição para configuração de força
Parâmetro ·settime: Tempo, unidade [ms].
Valor de retorno nulo
PolishingSetWorkPieceWeight: configuração do peso da peça de trabalho
Tabela 3-142 Parâmetros detalhados de PolishingSetWorkPieceWeight
Atributo Explicação
Protótipo PolishingSetWorkPieceWeight (peso)
Descrição Configuração do peso da peça de trabalho
Parâmetro ·peso: Peso, unidade [N].
Valor de retorno nulo
Exemplo de equipamento de moagem de código 3-41
1. PolishingLoadComDriver – Carrega o driver de comunicação do cabeçote de polimento
2. PolishingDeviceEnable (1) -- Habilitar no dispositivo
3. Polimento ClearError (1) -- Limpar mensagens de erro do dispositivo de cabeça de polimento
4. PolishingTorqueSensorReset() -- Força a redefinição do sensor para zero
5. Polimento SetTarget Velocity (500) - Defina a velocidade da cabeça de polimento
6. Ajuste de torque alvo de polimento (10) - Defina a força de ajuste da cabeça de polimento
7. Posição de destino do conjunto de polimento (100) - Defina a distância de extensão da cabeça de polimento
8. Modo de operação do conjunto de polimento (3) -- Defina o modo de controle do cabeçote de polimento
9. Polimento SetTarget TouchForce (5) - Define a força de contato da cabeça de polimento
10. Polishing SetTarget TouchTime (500) – Define o tempo de transição para a força de contato do
cabeça de polimento
11. PolishingSetWorkPieceWeight (20) -- Define o peso da peça de trabalho
12. PolishingUnloadComDriver – Driver de comunicação para descarregamento de cabeçote de moagem
3.5 Instruções de soldagem
3.5.1 Soldagem
Machine Translated by Google
117 / 152 Script de programação FRLua
WeldingSetCurrent: define a corrente de soldagem
Tabela 3-143 Parâmetros detalhados de WeldingSetCurrent
Atributo Explicação
Protótipo WeldingSetCurrent(ioType, atual, mistura, índice AO)
Descrição Definir corrente de soldagem
·ioType: Tipo 0- Controlador IO; 1-Protocolo de comunicação digital;
·corrente: valor da corrente de soldagem (A);
Parâmetro ·mistura: suave, 0-não suave, 1-suave;
·Índice AO: Porta de saída analógica (0-1) da caixa de controle de corrente de soldagem. Quando a
mode é protocolo de comunicação digital, blend é 0 e AOIndex é 0.
Valor de retorno nulo
WeldingSetvoltage: Defina a tensão de soldagem
Tabela 3-144 Parâmetros detalhados de WeldingSetVoltage
Atributo Explicação
Protótipo WeldingSetVoltage(ioType, voltagem, mistura, AOIndex)
Descrição Definir tensão de soldagem
·ioType: Tipo 0- Controlador IO; 1- Protocolo de comunicação digital;
·tensão: Valor da tensão de soldagem (V);
·mistura: suave, 0-não suave, 1-suave;
Parâmetro
·AOindex: Porta AO de controle de corrente de soldagem (0-1). Quando o modo é o protocolo
de comunicação digital, a mistura é 0. Quando o protocolo AOIndex é 0, a mistura é 0 e o
AOIndex é 0.
Valor de retorno nulo
ARCStart: Iniciar Arc
Tabela 3-145 Parâmetros detalhados do ARCStart
Atributo Explicação
Protótipo ARCStart (ioType, arcNum, tempo limite)
Descrição Iniciação do Arco
·ioType: Tipo 0- Controlador IO; 1- Protocolo de comunicação digital;
Parâmetro ·arcNum: Número do processo de soldagem;
·timeout:tempo máximo de espera.
Valor de retorno nulo
Machine Translated by Google
118 / 152 Script de programação FRLua
ARCEnd: Fim do arco
Tabela 3-146 Parâmetros detalhados do ARCEnd
Atributo Explicação
Protótipo ARCEnd(ioType, arcNum, timeout)
Descrição Fim do Arco
·ioType: 0- E/S do controlador; 1- Protocolo de comunicação digital;
Parâmetro ·arcNum: Número do processo de soldagem;
·timeout:tempo máximo de espera.
Valor de retorno nulo
SetAspirated: Suprimento de ar
Tabela 3-147 Parâmetros detalhados de SetAspirated
Atributo Explicação
Protótipo DefinirAspirado(ioType, airControl)
Descrição Suprimento de ar
·ioType: 0- E/S do controlador; 1- Protocolo de comunicação digital;
Parâmetro
·airControl: Controle de suprimento de ar 0- Parar suprimento de ar; 1. Suprimento de ar.
Valor de retorno nulo
SetReverseWireFeed: Alimentação reversa do fio
Tabela 3-148 Parâmetros detalhados de SetReverseWireFeed
Atributo Explicação
Protótipo DefinirReverseWireFeed(ioType, wireFeed)
Descrição Alimentação reversa de arame
·ioType: 0- E/S do controlador; 1- Protocolo de comunicação digital;
Parâmetro
·wireFeed: Controle de alimentação do fio 0- Parar alimentação do fio; 1. Alimentação do fio.
Valor de retorno nulo
SetForwardwireFeed: avanço de fio
Tabela 3-149 Parâmetros detalhados de SetForwardWireFeed
Atributo Explicação
Protótipo DefinirForwardWireFeed(ioType, wireFeed)
Descrição Alimentação de arame para frente
·ioType: 0- E/S do controlador; 1- Protocolo de comunicação digital
Parâmetro
·wireFeed: Controle de alimentação do fio 0- Parar alimentação do fio; 1. Alimentação do fio
Valor de retorno nulo
Machine Translated by Google
119 / 152 Script de programação FRLua
Exemplo de soldagem de código 3-42
1. -- Soldagem de E/S do controlador
2. WellIOType=0 -- Define o modo de E/S do controlador
3.
4. --Defina corrente e tensão 5.
WeldingDictCurrent (weldIOType, 2,1,0) -- Configuração de corrente, 2-Tensão de soldagem 2A, 1-
Controle de corrente de soldagem AO porta 1,0- Não suave
6. WeldSetVoltage (weldIOType, 2,1,0) -- Configuração de tensão, 2-Tensão de soldagem 2A, 1-Soldagem
porta AO de controle de corrente 1,0- Não suave
7.
8. -- Mover para o ponto inicial da soldagem 9.
PTP(multilinesafe,10,-1,0)
10. PTP(origemmultilinear1,10,-1,0) 11.
12. --Iniciar um arco
13. ARCStart (weldIOType, 0,1000) -- início do arco, weldIOType - modo de E/S do controlador, 0 - número do processo de
soldagem 0,1000 - tempo máximo de espera 1000 ms
14. Lin(DW01,100,-1,0,0); 15.
ARCEnd (weldIOType, 0,1000) -- extinção de arco, weldIOType - modo IO do controlador, 0-
número do processo de soldagem 0,1000 - tempo máximo de espera 1000 ms
16. --Suprimento de
ar 17. SetAspirated (wellIOType, 1) -- Suprimento de ar, wellIOType - Modo IO do controlador, 1-Ligado 18.
Lin(DW01,100,-1,0,0); 19.
SetAspirated (wellIOType, 0) -- Gás de parada, wellIOType - Modo IO do controlador, 0-Parada 20. WaitMs
(1000) -- Aguarde 1000 milissegundos 21.
22. --Alimentação de fio para frente
23. SetForwardWireFeed (wellIOType, 1) -- Alimentação de fio para frente, wellIOType - Controlador IO
modo, 1- Habilitar
24. Lin(DW01,100,-1,0,0); 25.
SetForwardWireFeed (wellIOType, 0) -- Alimentação de fio para frente, wellIOType - E/S do controlador
modo, 0-Stop 26.
WaitMs (1000) -- Aguarde 1000 milissegundos 27. --Alimentação
reversa do fio 28. SetEverseWireFeed
(wellIOType, 1) -- Alimentação reversa do fio, wellIOType - E/S do controlador
modo, 1- Habilitar
29. Lin(DW01,100,-1,0,0); 30.
SetEverseWireFeed (wellIOType, 0) --Alimentação reversa do fio, wellIOType - E/S do controlador
modo, 0-Stop 31.
WaitMs (1000) -- Aguarde 1000 milissegundos
3.5.2 Rastreamento de arco
ArcWeldTraceControl: Controle de Rastreamento de Arco
Machine Translated by Google
120 / 152 Script de programação FRLua
Tabela 3-150 Parâmetros detalhados do ArcWeldTraceControl
Atributo Explicação
ArcWeldTraceControl(flag, delaytime, isLeftRight, klr, tStartLr, stepmaxLr, summaxLr, isUpLow, kud,
Protótipo tStartUd, stepmaxUd, summaxUd, axisSelect, referenceType, referSampleStartUd, referSampleCountUd,
referenceCurrent)
Descrição Controle de rastreamento de arco
·bandeira: interruptor, 0-desligado; 1- aberto;
·delaytime: Tempo de atraso, em milissegundos;
·isLeftRight: Compensação de desvio para a esquerda e para a direita 0-desligado, 1-ligado;
·klr: coeficiente de ajuste esquerdo e direito (sensibilidade);
·tStartLr: Inicia a compensação do ciclo de tempo em ambos os lados;
·stepmaxLr: valor máximo de compensação em milímetros para cada lado esquerdo e
operação correta;
·summaxLr: valor máximo de compensação em ambos os lados em milímetros;
·isUpLow: Compensação de desvio para cima e para baixo 0-desligado, 1-ligado;
·kud: Coeficiente de ajuste para cima e para baixo (sensibilidade);
·tStartUd: Inicia a compensação do ciclo de tempo de cima para baixo;
·stepmaxUd: valor máximo de compensação em mm para cada subida e descida
Parâmetro
etapa;
·summaxUd: o valor máximo de compensação para os totais superior e inferior;
·axisSlect: seleção de sistemas de coordenadas superior e inferior, 0-swing; 1. Ferramentas; 2-Base;
· referenceType: Método de ajuste de corrente de referência superior e inferior, 0-
feedback; 1- Constante;
·refSampleStartUd: Inicia a contagem da corrente de referência superior e inferior
amostragem (feedback), ciclo;
·refSampleCountUd: Contagem de ciclos de amostragem de corrente de referência para cima e para baixo
(feedback), ciclo;
·referenceCurrent: Correntes de referência superior e inferior em mA.
Valor de retorno nulo
ArcWeldTraceReplayStart: Rastreamento de arco com multicamadas e multicanais
compensação habilitada
Tabela 3-151 Parâmetros detalhados de ArcWeldTraceReplayStart
Atributo Explicação
Protótipo ArcWeldTraceReplayStart ( )
Descrição Rastreamento de arco com compensação multicamadas e multicanal ativada
Parâmetro nulo
Valor de retorno nulo
Machine Translated by Google
121 / 152 Script de programação FRLua
ArcWeldTraceReplayEndÿ
Tabela 3-152 Parâmetros detalhados de ArcWeldTraceReplayEnd
Atributo Explicação
Protótipo ArcWeldTraceReplayEnd ( )
Descrição Rastreamento de arco com desligamento de compensação multicamadas e multicanal
Parâmetro nulo
Valor de retorno nulo
MultiplayerOffsetTrsfToBase: Variação de coordenadas de deslocamento - multicamadas e multi
soldagem de passagem
Tabela 3-153 Parâmetros detalhados de MultiplayerOffsetTrsfToBase
Atributo Explicação
MultilayerOffsetTrsfToBase (pontoO.x, pontoO.y, pontoO.z, pontoX.x, pontoX.y, pontoX.z,
Protótipo
pontoZ.x, pontoZ.y, pontoZ.z, dx, dy, seco)
Descrição Alteração de coordenadas de deslocamento - soldagem multicamadas e multipasse
·pontoO. x, pontoO. y, pontoO. z: Pose cartesiana do ponto de referência O;
·pointX. x, pointX. y, pointX. z: Pose cartesiana do deslocamento do ponto de referência
na direção X;
·pointZ. x, pointZ. y, pointZ. z: Pose cartesiana do deslocamento do ponto de referência Z
Parâmetro
direção;
·dx: deslocamento da direção x, unidade [mm];
·dy: deslocamento da direção x, unidade [mm];
·seco: deslocamento em torno do eixo y, unidade [°].
Valor de retorno offset_x, offset_y, offset_z, offset_rx, offset_ry, offset_rz: valor de deslocamento
Código 3-43 Exemplo de rastreamento de arco
1. --Mova para o ponto inicial da soldagem
2. PTP(multilinesafe,10,-1,0)
3. PTP(origem multilinha 1,10,-1,0)
4.
5. --Soldagem (primeira posição)
6. ARCStart(1,0,3000)
7. WeaveStart(0)
8. ArcWeldTraceControl(1,0,1,0,06,5,5,50,1,0,06,5,5,55,0,0,4,1,10)
9. Lin(origem multilinha2,1,-1,0,0)
10. ArcWeldTraceControl(0,0,1,0,06,5,5,50,1,0,06,5,5,55,0,0,4,1,10)
11. WeaveEnd(0)
Machine Translated by Google
122 / 152 Script de programação FRLua
Código 3-42 (continuação)
12.ARCEND(1,0,3000)
13. PTP(multilinesafe,10,-1,0)
14. Pausa (0) -- Sem função
15.
16. --Soldagem (segunda posição)
17. Deslocamento_x, deslocamento_y, deslocamento_z, deslocamento_rx, deslocamento_ry, deslocamento_rz=MultiplayerOffsetTrsfToBase
(multilineorigin1, mulitilineX1, mulitilineZ1, 10,0,0) -- alteração de coordenada de deslocamento - soldagem
multicamadas e multipasse
18. PTP(origem múltipla1,10,-1,1, deslocamento_x,deslocamento_y,deslocamento_z,deslocamento_rx,deslocamento_ry,deslocamento_rz)
19. ARCStart(1,0,3000)
20.
21. Deslocamento_x, deslocamento_y, deslocamento_z, deslocamento_rx, deslocamento_ry, deslocamento_rz=MultiplayerOffsetTrsfToBase
(multilineorigin2, mulitilineX2, mulitilineZ2, 10,0,0) - alteração de coordenadas de deslocamento - soldagem
multicamadas e multipasse
22. ArcWeldTraceReplayStart() -- Rastreamento de arco com multicamadas e multicanais
compensação habilitada
23. Lin(origem_multilinha2,2,-1,0,1, deslocamento_x,deslocamento_y,deslocamento_z,deslocamento_rx,deslocamento_ry,deslocamento_rz)
24. ArcWeldTraceReplayEnd() -- Rastreamento de arco com multicamadas e multicanal
compensação fechada
25. ARCEnd(1,0,3000)
26. PTP(multilinesafe,10,-1,0)
27. Pausa (0) -- Sem função
28.
29. --Soldagem (terceira posição)
30. Offset_x, offset_y, offset_z, offset_rx, offset_ry, offset_rz=MultiplayerOffsetTrsfToBase (multilineorigin1,
mulitilineX1, mulitilineZ1,0,10,0) - alteração de coordenada de deslocamento - soldagem multicamadas e
multipasse
31. PTP(origem múltipla1,10,-1,1, deslocamento_x,deslocamento_y,deslocamento_z,deslocamento_rx,deslocamento_ry,deslocamento_rz)
32. ARCStart(1,0,3000)
33. Deslocamento_x, deslocamento_y, deslocamento_z, deslocamento_rx, deslocamento_ry, deslocamento_rz=MultiplayerOffsetTrsfToBase
(multilineorigin2, mulitilineX2, mulitilineZ2,0,10,0) - alteração de coordenadas de deslocamento - soldagem
multicamadas e multipasse
34. ArcWeldTraceReplayStart() -- Rastreamento de arco com multicamadas e multicanais
compensação habilitada
35. Lin(origem_multilinha2,2,-1,0,1, deslocamento_x,deslocamento_y,deslocamento_z,deslocamento_rx,deslocamento_ry,deslocamento_rz)
36. ArcWeldTraceReplayEnd() -- Rastreamento de arco com multicamadas e multicanal
compensação fechada
37. ARCEnd(1,0,3000)
38. PTP(multilinesafe,10,-1,0)
Machine Translated by Google
123 / 152 Script de programação FRLua
3.5.3 Rastreamento a laser
O rastreamento a laser requer carregamento do sensor, ativação do sensor, rastreamento a laser, dados
gravação, movimento do ponto do sensor e comandos de posicionamento a serem concluídos juntos.
LoadPosSensorDriver: Carregamento do sensor
Tabela 3-154 Parâmetros detalhados do LoadPosSensorDriver
Atributo Explicação
Protótipo LoadPosSensorDriver (choiceid)
Descrição Seleção de função do sensor de carregamento
·choiceid: Número da função, 101- Ruiniu RRT-SV2-BP, 102- Chuangxiang CXZK-RBTA4L,
Parâmetro 103- Full Vision FV-160G4-WD-PP-RL, 104- Sensor laser Tongzhou, 105- Sensor laser
Aotai.
Valor de retorno nulo
UnloadPosSensorDriver: Descarga do sensor
Tabela 3-155 Parâmetros detalhados do UnloadPosSensorDriver
Atributo Explicação
Protótipo UnloadPosSensorDriver (choiceid)
Descrição Seleção da função do sensor de desinstalação
·choiceid: Número da função, 101- Ruiniu RRT-SV2-BP, 102- Chuangxiang CXZK-RBTA4L,
Parâmetro 103- Full Vision FV-160G4-WD-PP-RL, 104- Sensor laser Tongzhou, 105- Sensor laser
Aotai.
Valor de retorno nulo
LTLaserOn: Liga o sensor
Tabela 3-156 Parâmetros detalhados do LTLaserOn
Atributo Explicação
Protótipo LTLaserOn (Taskid)
Descrição Abra o sensor
·Tarefa: Selecione o tipo de solda (Ruiniu RRT-SV2-BP, Chuangxiang CXZK-RBTA4L),
Parâmetro escolha o número da tarefa (Full View FV-160G4-WD-PP-RL, Aotai Laser Sensor) e
selecione a solução (Tongzhou Laser Sensor).
Valor de retorno nulo
Machine Translated by Google
124 / 152 Script de programação FRLua
LTLaserOff: Desliga o sensor
Tabela 3-157 Parâmetros detalhados de LTLaserOff
Atributo Explicação
Protótipo LTLaserOff()
Descrição Desligue o sensor
Parâmetro nulo
Valor de retorno nulo
LTTrackOn: Iniciar rastreamento
Tabela 3-158 Parâmetros detalhados de LTTrackOn
Atributo Explicação
Protótipo LTLaserOn (cadeiras)
Descrição Comece a rastrear
Parâmetro ·cadeiras: Nome do sistema de coordenadas.
Valor de retorno nulo
LTTrackOff: Desativar rastreamento
Tabela 3-159 Parâmetros detalhados de LTTrackOff
Atributo Explicação
Protótipo LTLaserOff ( )
Descrição Acompanhamento de perto
Parâmetro nulo
Valor de retorno nulo
LaserSensorRecord: Gravação de Dados
Tabela 3-160 Parâmetros detalhados do LaserSensorRecord
Atributo Explicação
Protótipo LaserSensorRecord (recursos, tempo, velocidade)
Descrição registro de dados
· Características: Seleção de função, gravação de 0 paradas, 1 rastreamento em tempo real, 2 inícios
gravação, reprodução de 3 trajetórias (ao selecionar a reprodução de trajetória, a reprodução de
Parâmetro rastreamento a laser pode ser selecionada);
·tempo: tempo de espera;
·velocidade: Velocidade de corrida.
Valor de retorno nulo
Machine Translated by Google
125 / 152 Script de programação FRLua
MoveLTR: Reprodução de Rastreamento a Laser
Tabela 3-161 Parâmetros detalhados de MoveLTR
Atributo Explicação
Protótipo MoveLTR ( )
Reprodução de rastreamento a laser (este comando só pode ser usado após selecionar a
Descrição
reprodução da trajetória para gravação de dados)
Parâmetro nulo
Valor de retorno nulo
LTSearchStart: Iniciar pesquisa de localização
Tabela 3-162 Parâmetros detalhados de LTSearchStart
Atributo Explicação
Protótipo LTSearchStart (direção de referência, função de referência, ovl, comprimento, tempo_máximo, id_da_ferramenta)
Descrição Comece a procurar por localização
·refdirection: direção, 0-+x, 1-x, 2-+y, 3-y, 4+z, 5-z, 6-direção especificada (direção do ponto de
referência personalizado);
·refdpiont: Ponto de direção. Quando a direção é 6, o ponto de direção precisa
a ser especificado, enquanto outros assumem como padrão {0, 0, 0, 0, 0, 0,};
Parâmetro
·ovl: Porcentagem de velocidade, unidade [%];
·comprimento: comprimento, unidade [mm];
·max_time: tempo máximo de posicionamento, unidade [ms];
·roolid: Nome do sistema de coordenadas.
Valor de retorno nulo
LTSearchStop: Pare de localizar
Tabela 3-163 Parâmetros detalhados de LTSearchStop
Atributo Explicação
Protótipo LTSearchStop ( )
Descrição Pare de localizar
Parâmetro nulo
Valor de retorno nulo
Exemplo de Rastreamento a Laser Código 3-442
1. LoadPosSensorDriver (101) -- Driver do sensor de carga
2. LTLaserOn (1) -- Liga o sensor
Machine Translated by Google
126 / 152 Script de programação FRLua
Código 3-44 (continuação)
3. LTTrackOn (1) -- Iniciar rastreamento
4. LaserSensorRecord (2, 5, 30) -- Gravar dados
5. LTSearchStart (0, 0, 50, 100, 5000, 1) -- Encontrar posição
6. MoveLTR() -- Reprodução de Rastreamento a Laser
7. LTSearchStop() -- Parar de encontrar
8. LTTrackOff () -- Desativar rastreamento
9. LTLaserOff() -- Desliga o sensor
10.
11. --Desinstalar driver do sensor
12. DescarregarPosSensorDriver(101)
3.5.4 Gravação a laser
A instrução de gravação a laser realiza a função de extrair o início e
pontos finais da gravação de rastreamento a laser, permitindo que o robô se mova automaticamente para
a posição inicial. É adequado para situações em que o robô começa a se mover a partir da posição inicial.
fora da peça de trabalho e realiza a gravação de rastreamento a laser. Ao mesmo tempo, o
o computador superior pode obter informações sobre os pontos inicial e final no
dados registrados para movimentos subsequentes.
MoveToLaserRecordStart: Mover para o ponto inicial da costura de solda
Tabela 3-164 Parâmetros detalhados de MoveToLaserRecordStart
Atributo Explicação
Protótipo MoveToLaserRecordStart ( )
Descrição Mover para o ponto inicial da costura de solda
Parâmetro nulo
Valor de retorno nulo
MoveToLaserRecordEnd: Mover para o ponto final da costura de solda
Tabela 3-165 Parâmetros detalhados de MoveToLaserRecordEnd
Atributo Explicação
Protótipo MoveToLaserRecordEnd ( )
Descrição Mover para o ponto inicial da costura de solda
Parâmetro nulo
Valor de retorno nulo
Machine Translated by Google
127 / 152 Script de programação FRLua
Exemplo de gravação a laser do código 3-45
1. Lin (recordStartPt, 100, -1,0,0) -- Mover para a posição inicial da costura de solda
2. LaserSensorRecord (2,10,30) – Registre o ponto inicial da costura de solda
3. Lin (recordEndPt, 100, -1,0,0) -- Mover para a posição final da costura de solda
4. LaserSensorRecord (0,10,30) – Registre o ponto final da costura de solda
5. MoveToLaserRecordStart (1,30) -- Mover para o ponto inicial da soldagem
6. ARCStart (0,0,1000) -- Iniciar arco
7. LaserSensorRecord (3,10,30) -- Reprodução da trajetória da costura de solda
8. MoveLTR() -- Movimento linear da costura de solda
9. ARCEnd (0,0,1000) -- Arco desligado
10. MoveToLaserRecordEnd (1,30) -- Mover para o ponto final da soldagem
3.5.5 Posicionamento do fio
A instrução de posicionamento do fio de soldagem é geralmente aplicada em cenários de soldagem,
exigindo uma combinação de máquina de solda e instruções de E/S e movimento do robô.
WireSearchStart: O posicionamento do fio começa
Tabela 3-166 Parâmetros detalhados do WireSearchStart
Atributo Explicação
WireSearchStart (refPos, searchVel, searchDis, autoBackFlag, autoBackVel, autoBackDis,
Protótipo
offectFlag)
Descrição O posicionamento do fio começa
·pedlocation: se a posição de referência foi atualizada, 0-sem atualização,
1-atualização;
·searchVel: Velocidade de pesquisa%;
·searchDis: Distância de posicionamento mm;
Parâmetro
·autoBackflag: sinalizador de retorno automático, 0- Não automático- Automático;
·autoBackvel: Velocidade de retorno automático%;
·autoBackDis: retorna automaticamente a distância em mm;
·offectflag: 1- Posicionamento com offset; 2. Encontre a localização do ponto de ensino.
Valor de retorno nulo
WireSearchEnd: Posicionamento do fim do fio
Tabela 3-167 Parâmetros detalhados de WireSearchEnd
Atributo Explicação
WireSearchEnd (refPos, searchVel, searchDis, autoBackFlag, autoBackVel, autoBackDis,
Protótipo
offectFlag)
Descrição Posicionamento do fio concluído
Machine Translated by Google
128 / 152 Script de programação FRLua
Tabela 3-167 (continuação)
Atributo Explicação
·pedlocation: se a posição de referência foi atualizada, 0-sem atualização, 1-atualização;
·searchVel: Velocidade de pesquisa%;
·searchDis: Distância de posicionamento mm;
Parâmetro
·autoBackflag: sinalizador de retorno automático, 0- Não automático- Automático;
·autoBackvel: Velocidade de retorno automático%;
·autoBackDis: retorna automaticamente a distância em mm;
·offectflag: 1- Posicionamento com offset; 2. Encontre a localização do ponto de ensino.
Valor de retorno nulo
GetWireSearchoffset: Calcula o deslocamento do posicionamento do fio
Tabela 3-168: Parâmetros detalhados de GetWireSearchOffset
Atributo Explicação
Protótipo GetWireSearchOffset (seamType, método, varNameRef, varNameRes)
Descrição Calcular o deslocamento do posicionamento do fio de solda
·seamType: Tipo de costura de solda;
·método: Método de cálculo;
Parâmetro
·varNameRef: Benchmarks 1-6, "#" representa uma variável não pontual;
·varNameRes: Pontos de contato 1-6, onde "#" representa uma variável não pontual.
Valor de retorno nulo
WireSearchWait: Aguardando a conclusão do posicionamento do fio
Tabela 3-169 Parâmetros detalhados de WireSearchWait
Atributo Explicação
Protótipo WireSearchWait(nomevar)
Descrição Aguardando a conclusão do posicionamento do fio
Parâmetro ·varname: Nomes dos pontos de contato "RES0"~"RES99".
Valor de retorno nulo
SetPointToDatabase: Escrevendo pontos de contato de posicionamento de fios no banco de dados
Tabela 3-170 Parâmetros detalhados de SetPointToDatabase
Atributo Explicação
Protótipo SetPointToDatabase(varNome, pos)
Descrição Grave o ponto de contato do posicionamento do arame de soldagem no banco de dados
Machine Translated by Google
129 / 152 Script de programação FRLua
Tabela 3-170 (continuação)
Atributo Explicação
·varname: Nomes dos pontos de contato "RES0"~"RES99";
Parâmetro
·pos: Dados dos pontos de contato x, y, x, a, b,
Valor de retorno c. null
Exemplo de posicionamento de fio de solda Código 3-46
1. WireSearchStart (1,10,300,10,0) -- Início do posicionamento do fio 2. Lin
(2dx1,10,0,0,0) -- Ponto inicial do ponto de referência de posicionamento 3. Lin
(2dx2,10,0,1,0) -- Direção do ponto de referência de posicionamento 4.
WireSearchWait ("REF0") -- Aguarde a conclusão do posicionamento do fio 5. Lin
(2dy1,10,0,0,0) -- Ponto inicial do ponto de referência de posicionamento 6. Lin
(2dy2,10,0,1,0) -- Direção do ponto de referência de posicionamento 7.
WireSearchWait ("REF1") -- Aguarde a conclusão do posicionamento do fio 8. WireSearchEnd
(1,10,300,10,0) -- Fim do posicionamento do fio 9.
WireSearchStart(0,10,300,1,10,10,0)
10. Lin (2dx1,10,0,0,0) -- Posicionando o ponto inicial 11. Lin
(2dx2,10,0,1,0) -- Posicionando o ponto de direção 12.
WireSearchWait("RES0")
13. Lin (2dy1,10,0,0,0) -- Posicionando o ponto inicial 14. Lin
(2dy2,10,0,1,0) -- Posicionando o ponto de direção 15.
WireSearchWait("RES1")
16. WireSearchEnd(0,10,300,1,10,10,0)
17. F1, x1, y1, z1, a1, b1, c1=GetWireSearchOffset (0,1, "REF0", "REF1", "#", "#", "#",
"RES0", "RES1", "#", "#", "#", "#") -- Calcula o deslocamento de posicionamento
18. RegisterVar("número","f1")
19. RegisterVar("número","x1")
20. RegisterVar("número","y1")
21. RegisterVar("número","z1")
22. RegisterVar("número","a1")
23. RegisterVar("número","b1")
24. RegisterVar("número","c1")
25. PointsOffsetEnable (f1, x1, y1, z1, a1, b1, c1) -- Deslocamento de movimento
26. Lin(test1,10,0,0,0)
27. Lin(teste2,10,0,0,0)
28. DesativarDeslocamentoDePontos()
3.5.6 Ajuste de atitude
PostureAdjustOn: Habilitar ajuste de postura
Machine Translated by Google
130 / 152 Script de programação FRLua
Tabela 3-171 Parâmetros detalhados do PostureAdjusteOn
Atributo Explicação
PostureAdjustOn (tipo de placa, tipo de direção = {PosA, PosB, PosC}, tempo, paDisatance_1, tipo de
Protótipo inflexão, paDisatance_2, paDisatance_3 ÿ
paDistância_4, paDistância_5)
Descrição Habilitar ajuste de postura
· plate_date: Tipo de placa, 0-papelão ondulado, 1-papelão ondulado, 2-cerca
placa, aço com 4 camadas de papelão ondulado
·direction-type: direção do movimento, da esquerda para a direita (direction-type é PosA,
PosB, PosC), da direita para a esquerda (o tipo de direção é PosA, PosC, PosB)
·tempo: Tempo de ajuste de atitude, unidade [ms];
·paDissentance_1: comprimento do primeiro segmento, unidade [mm];
Parâmetro
·tipo de inflexão: tipo de ponto de inflexão, 0- de cima para baixo, 1- de baixo
para o topo;
·paDissentance_2: Comprimento do segundo segmento, unidade [mm];
·paDisatance3: Comprimento do terceiro segmento, unidade [mm];
·paDisatance4: Comprimento do quarto segmento, unidade [mm];
·paDissentance_5: Comprimento do quinto segmento, unidade [mm].
Valor de retorno nulo
PostureAdjustOff: Desativa o ajuste de postura
Tabela 3-172 Parâmetros detalhados de PostureAdjusteOff
Atributo Explicação
Protótipo Ajuste de postura desativado ( )
Descrição Ajuste de postura próxima
Parâmetro nulo
valor de retorno nulo
Exemplo de ajuste de atitude do código 3-47
1. --Habilitar ajuste de postura
2. Ajuste de postura em (0, PosA, PosB, PosC, 1000, 100, 0, 100, 100, 100, 100)
3.
4. PTP(DW01,100,10,0)
5. --Ajuste de postura próxima
6. Ajuste de Postura Desligado()
Machine Translated by Google
131 / 152 Script de programação FRLua
3.6 Comando de Controle de Força
3.6.1 Conjunto de Controle de Força
FT_Guard: Detecção de Colisão
Tabela 3-173 Parâmetros detalhados do FT_Guard
Atributo Explicação
FT_Guard (bandeira, id_ferramenta, selecionar_Fx, selecionar_Fy, selecionar_Fz, selecionar_Tx,
selecionar_TY, selecionar_Tz, valor_Fx, valor_Fy, valor_Fz, valor_Tx, valor_TY, valor_Tz,
Protótipo Limite_máximo_Fx,limite_máximo_Fy,limite_máximo_Fz,limite_máximo_Tx, limite_máximo_Ty,
limite_máximo_Tz, limite_mínimo_Fx, limite_mínimo_Fy, limite_mínimo_Fz, limite_mínimo_Tx,
limite_mínimo_Ty, limite_mínimo_Tz)
Descrição detecção de colisão
·flag: sinalizador de ativação de torque, 0-desativa a proteção contra colisão, 1-ativa a proteção
contra colisão;
·tool_id: Nome do sistema de coordenadas;
·select_Fx~select_Tz: Selecione se deseja detectar colisões em seis graus de liberdade, 0-sem
detecção, 1-detecção, select_Tx está definido como não selecionar;
Parâmetro ·valor_Sx~valor_Tz: Os valores atuais dos seis graus de liberdade, com
valor_Tx definido como 0;
·max_threshord_FX~max_threshord_Tz: limite máximo para seis graus
de liberdade, com max_threshord_Tx definido como 0;
· min_threshold_Fx~min_threshold_Tz: O limite mínimo para seis graus de liberdade, com
min_threshold_Tx definido como 0.
Valor de retorno nulo
Código 3-48 Exemplo de modo de detecção de colisão para conjunto de controle de força
1. Detecção de colisão FT_Guard
2. FT_Guard(1,2,1,0,0,0,0,0,1,0,752,-3,173,0,001,0,001,0,004,5,0,0,0,0,0,2,0,0,0,0,0)
3. --Detecção de colisão de força/momento habilitada
4. Lin(fguard1,100,-1,0,0)
5. Lin(ftguard2,100,-1,0,0)-- Comando de movimento
6. FT_Guard(0,2,1,0,0,0,0,0,1,0,752,-3,173,0,001,0,001,0,004,5,0,0,0,0,0,2,0,0,0,0,0)
7. -- Controle de movimento de força/torque desativado
Machine Translated by Google
132 / 152 Script de programação FRLua
FT_Control: Controle de Força Constante
Tabela 3-174 Parâmetros detalhados do FT_Control
Atributo Explicação
FT_Control (flag, sensor_num, select, force_torque, ganho, adj_sign, ILC_sign,
Protótipo
max_dis, max_ang)
Descrição Controle de força constante
·bandeira: Controle de força constante na bandeira, 0-desligado, 1-ligado;
·sensor_num: número do sensor de força;
·Selecionar: Verifique se os seis graus de liberdade detectam fx, fy, fz, mx, my, mz, 0-
inativo, 1-ativo;
·force_torque: detecta força/torque, em N ou Nm;
·ganho: f_p, f_i, f_d, m_p, m_i, m_d, Parâmetros de força PID, torque PID
Parâmetro
Parâmetros;
·Add_sign: estado de parada inicial adaptável, 0-desligado, 1-ligado;
·ILC_sign: ILC controla status de parada/início, 0-parada, 1-treinamento, 2-prático
operação;
·max_dis: distância máxima de ajuste;
·max_ang: ângulo máximo de ajuste.
Valor de retorno nulo
Código 3-49 Exemplo de modo de controle de força constante no conjunto de controle de força
1. --FT_Control, Controle de força constante
2. FT_Control(1,1,0,0,1,0,0,0,0,0,-15,0,0,0,0,0.0001,0,0,0,0,0,1,0,50,0)
3. --Detecção de colisão de força/momento habilitada
4. enquanto(1) faz
5. Lin(ftcontrol1,30,-1,0,0)
6. Lin(ftcontrol2,30,-1,0,0)
7. Lin(ftcontrol1,30,-1,0,0)
8. fim -- Comando de movimento
9. FT_Control(0,1,0,0,1,0,0,0,0,0,-15,0,0,0,0,0.0001,0,0,0,0,0,1,0,50,0)
10. -- Controle de movimento de força/torque desativado
FT_Spiralsearch: Inserção em Espiral
Tabela 3-175 Parâmetros detalhados de FT_SpiralSearch
Atributo Explicação
Protótipo FT_SpiralSearch(rcs, dr, ft, t_ms_máx., vel_máx.)
Descrição Inserção espiral
·
rcs: Sistema de Coordenadas de Referência, Sistema de Coordenadas de 0 Ferramentas, Base 1
Parâmetro
Sistema de Coordenadas
Machine Translated by Google
133 / 152 Script de programação FRLua
Tabela 3-175 (continuação)
Atributo Explicação
·dr: taxa de avanço por raio do círculo, unidade mm padrão 0,7;
·ft: Limite de força/torque, fx,fy,fz,tx,ty,tz, Intervalo [0~100];
Parâmetro
·max_t_ms:tempo máximo de exploração, em milissegundos;
·max_vel: velocidade linear máxima, medida em milímetros por segundo.
Valor de retorno nulo
Código 3-50 Exemplo de modo de inserção espiral no conjunto de controle de força
1. --FT_Spiral, Controle suave
2. FT_Control(1,1,0,0,1,0,0,0,0,0,-10,0,0,0,0,0.0001,0,0,0,0,0,0,0,1000,0)
3. --Detecção de colisão de força/momento habilitada
4.
5. FT_SpiralSearch(0,2,1,60000,2) -- Controle suave habilitado
6. FT_Control(0,1,0,0,1,0,0,0,0,0,-10,0,0,0,0,0.0005,0,0,0,0,0,0,0,1000,0)
7. -- Controle de movimento de força/torque desativado
FT_ComplianceStart: Controle suave habilitado
Tabela 3-176 Parâmetros detalhados de FT_ComplianeStart
Atributo Explicação
Protótipo FT_ComplianceStart(p, força)
Descrição Controle suave habilitado
·p: Coeficiente de ajuste de posição ou coeficiente de conformidade;
Parâmetro
·força: Limiar de força de abertura suave, em unidades de N.
Valor de retorno nulo
FT_ComplianeStop: Controle suave desligado
Tabela 3-177 Parâmetros detalhados de FT_ComplianeStop
Atributo Explicação
Protótipo FT_ComplianceStop ()
Descrição Controle suave desligado
Parâmetro nulo
Valor de retorno nulo
Machine Translated by Google
134 / 152 Script de programação FRLua
Código 3-51 Exemplo de modo de inserção espiral em conjunto de controle de força
1. -- Controle suave
2. enquanto(1) faz
3. FT_ComplianceStart(0,001,10)-- Controle suave habilitado
4. FT_Control(1,2,0,0,1,0,0,0,0,0,-30,0,0,0,0,0,001,0,0,0,0,0,0,1000,0)
5. --Detecção de colisão de força/momento habilitada
6. Lin(com1,30,-1,0,0)
7. Lin(com2,30,-1,0,0)
8. Lin(com1,30,-1,0,0)
9. Lin(com2,30,-1,0,0) -- Comando de movimento
10.
11. FT_Control(0,2,0,0,1,0,0,0,0,0,-10,0,0,0,0,0,005,0,0,0,0,0,1,0,1000,0)
12. -- Controle de movimento de força/torque desativado
13. FT_ComplianceStop()--Controle suave desligado
14. fim
FT_RotInsertion: Inserção Rotativa
Tabela 3-178 Parâmetros detalhados de FT_RotInsertion
Atributo Explicação
Protótipo FT_RotInsertion(rcs, angVelRot, ft, ângulo_máx., orn, max_angAcc, rotorn)
Descrição Inserção rotativa
·rcs: Sistema de coordenadas de referência, 0 - sistema de coordenadas da ferramenta, 1 - base
sistema de coordenadas;
·angVelRot velocidade angular de rotação, unidade graus/s;
·ft: Limite de força ou torque (0~100), medido em N ou Nm;
·ângulo máximo de rotação, unidade: graus;
Parâmetro
·orn: direção da força/torque, 1- ao longo da direção do eixo z, 2- em torno da direção do eixo z;
·max_angAcc: aceleração rotacional máxima, unidade graus/s ^ 2, atualmente não
em uso, padrão para 0;
·rotorn: Sentido de rotação, 1- sentido horário, 2- sentido anti-horário.
Valor de retorno nulo
Código 3-52 Exemplo de modo de inserção rotativa em conjunto de controle de força
1. --FT_Rot, inserção rotativa
2. FT_Control(1,1,0,0,1,0,0,0,0,0,-30,0,0,0,0.0001,0,0,0,0,0,0,0,1000,0)
3. --Detecção de colisão de força/momento habilitada
4. FT_RotInsertion(0,1,5,300,1,0,1) -- inserção rotativa
5. FT_Control(0,1,0,0,1,0,0,0,0,0,-30,0,0,0,0.0001,0,0,0,0,0,0,0,1000,0)
6. -- Controle de movimento de força/torque desativado
Machine Translated by Google
135 / 152 Script de programação FRLua
FT_LinInsertion: Inserção de linha reta
Tabela 3-179 Parâmetros detalhados de FT_LinInsertion
Atributo Explicação
Protótipo FT_LinInsertion(rcs, ft, lin_v, lin_a, dismax, linorn)
Descrição Inserção de linha reta
·rcs: Sistema de coordenadas de referência, 0 - sistema de coordenadas da ferramenta, 1 - base
sistema de coordenadas;
·ft: Limite de força ou torque (0~100), medido em N ou Nm;
Parâmetro ·lin-v: Velocidade linear, unidade mm/s, padrão 1;
·lin_a: Aceleração linear, unidade mm/s ^ 2, não usando o padrão 0 por enquanto;
·dismax:distância máxima de inserção, em milímetros;
·linorn: Direção de inserção: 0-direção negativa, 1-direção positiva.
Valor de retorno nulo
Código 3-53 Exemplo de modo de inserção rotativa em conjunto de controle de força
1. --FT_Lin, Inserção de linha reta
2. FT_Control(1,1,0,0,1,0,0,0,0,0,-5,0,0,0,0,0.0001,0,0,0,0,0,0,0,1000,0)
3. --Detecção de colisão de força/momento habilitada
4. FT_LinInsertion(0,12,3,0,100,1) -- Inserção de linha reta
5. FT_Control(0,1,0,0,1,0,0,0,0,0,-10,0,0,0,0,0.0005,0,0,0,0,0,0,0,1000,0)
6. -- Controle de movimento de força/torque desativado
FT_FindSurface: Posicionamento de superfície
Tabela 3-180 Parâmetros detalhados de FT_SindSurface
Atributo Explicação
Protótipo FT_FindSurface (rcs, dir, eixo, lin_v, lin_a, dismax, ft)
Descrição Posicionamento de superfície
·rcs: Sistema de coordenadas de referência, 0 - sistema de coordenadas da ferramenta, 1 - base
sistema de coordenadas;
·dir: direção do movimento, 1-direção positiva, 2-direção negativa;
·eixo: eixo móvel, 1-x, 2-y, 3-z;
Parâmetro
·lin-v: Explora a velocidade linear, a unidade mm/s padrão é 3;
·lin_a: Explorar aceleração linear, unidade mm/s ^ 2 padrão é 0;
·dismax: Grande distância de exploração, em milímetros;
·ft: Limiar de força de término de ação, em unidades de N.
Valor de retorno nulo
Machine Translated by Google
136 / 152 Script de programação FRLua
FT_CalCenterStart: Comece a calcular a posição do plano médio
Tabela 3-181 Parâmetros detalhados de FT_CalCenterStart
Atributo Explicação
Protótipo FT_CalCenterStart()
Descrição Comece a calcular a posição do plano médio
Parâmetro nulo
Valor de retorno nulo
FT_CalCenterEnd: Fim do cálculo da posição do plano médio
Tabela 3-182 Parâmetros detalhados de FT_CalCenterEnd
Atributo Explicação
Protótipo FT_CalCenterEnd()
Descrição Fim do cálculo da posição do plano médio
Parâmetro nulo
Valor de retorno nulo
FT_Click: Detecção de força de toque
Tabela 3-183 Parâmetros detalhados de FT_Click
Atributo Explicação
Protótipo FT_Click (ft, lin_v, lin_a, dismax)
Descrição Detecção de força de toque
·ft: Limite de força ou torque (0~100), medido em N ou Nm;
·lin-v: Velocidade linear, unidade mm/s, padrão 1;
Parâmetro
·lin_a: Aceleração linear, unidade mm/s ^ 2, não usando o padrão 0 por enquanto;
·dismax: distância máxima de inserção, em milímetros.
Valor de retorno nulo
Código 3-54 Exemplos de conjunto de controle de força em vários modos
1. --FT_FindSurface, posicionamento de superfície
2. PTP (1,30, -1,0) -- Posição Inicial
3. FT FindSurface (0,1,3,0,100,5)-- Localização de superfície
4. --FT_CalCenter, posicionamento central
5. PTP (1,30, -1,0) -- Posição Inicial
6. FT_CalCenterStart() -- Início da localização de superfície
7. FT_Control (1,10,0,0,1,1,0,0,0,0,0, -10,0,0,0,0.00001,0,0,0,0,0,0,0,0,100,0) -- Força/torque
Machine Translated by Google
137 / 152 Script de programação FRLua
Código 3-54 (continuação)
controle de movimento habilitado
8. FT_SindSurface (1,2,10,0200,5) -- Plano de posicionamento A
9. FT_Control (0,10,0,0,1,1,0,0,0,0,0, -10,0,0,0,0,0,00001,0,0,0,0,0,0,0,100,0)
10. -- Controle de força/torquemotion desativado
11. PTP (1,30, -1,0) -- Posição Inicial
12. FT_Control (1,10,0,0,1,1,0,0,0,0,0, -10,0,0,0,0,0,00001,0,0,0,0,0,0,0,0,100,0)
13. -- Controle de movimento de força/torque habilitado
14. FT_FindSurface (1,1,2,20,0200,5) -- Posicionamento do Plano B
15. FT_Control (0,10,0,0,1,1,0,0,0,0,10,0,0,0,0,0,00001,0,0,0,0,0,0,0,0,100,0)
16. -- Controle de movimento de força/torque desativado
17. Pos={} -- Define a posição da matriz
18. Pos=FT_CalCenterEnd() -- Obtém a pose cartesiana do centro de posicionamento
19. MoveCart (pos, GetActualTCPNum(), GetActualWObjNum(), 30,10,100, -1,0) 20. -- move para a
posição central do posicionamento
3.6.2 Registro de Torque
Comando de gravação de torque, realizando gravação de torque e colisão em tempo real
função de detecção.
TorqueRecordStart: inicia a gravação de torque
Tabela 3-184 Parâmetros detalhados de TorqueRecordStart
Atributo Explicação
Descrição TorqueRecordStart (sinalizador, valores negativos, valores positivos, tempo de colisão)
do protótipo Início/parada da gravação de torque
·bandeira: Seleção suave, 0-Não suave, 1-Suave;
·negativevalues: Limiares negativos para cada junta {j1, j2, j3, j4, j5, j6};
Parâmetro ·positivevalues: Limiares positivos para cada junta {j1, j2, j3, j4, j5, j6};
·collisiontime: A duração da detecção de colisão para cada junta {j1, j2, j3, j4, j5, j6}.
Valor de retorno nulo
TorqueRecordEnd: a gravação de torque é interrompida
Tabela 3-185 Parâmetros detalhados de TorqueRecordEnd
Atributo Explicação
Protótipo TorqueRecordEnd ( )
Descrição Gravação de torque interrompida
Machine Translated by Google
138 / 152 Script de programação FRLua
Tabela 3-185 (continuação)
Atributo Explicação
Parâmetro nulo
Valor de retorno nulo
TorqueRecordReset: Redefinição do registro de torque
Tabela 3-186 Parâmetros detalhados de TorqueRecordReset
Atributo Explicação
Redefinição de Registro de Torque ( )
Protótipo
Descrição Redefinir registro de torque
Parâmetro nulo
Valor de retorno nulo
Exemplo de registro de torque para o Código 3-49
1. valores negativos = {-0,1, -0,1, -0,1, -0,1, -0,1, -0,1}
2. valores positivos = {0,1, 0,1, 0,1, 0,1, 0,1, 0,1}
3. tempoDeColisão = {500, 500, 500, 500, 500, 500}
4. TorqueRecordStart(1, valores negativos, valores positivos, tempo de colisão)
5. Fim do Registro de Torque()
6. WaitMs (1000) -- Aguarde 1000 milissegundos
7. Redefinição de Registro de Torque()
3.7 Instrução de comunicação
3.7.1 Modbus
1) Modbus TCP
A função de comando Modbus é uma função de barramento baseada no Modbus TCP
protocolo. Os usuários podem controlar robôs para se comunicar com clientes ou servidores Modbus TCP
(comunicação mestre e escravo) por meio de comandos relevantes e executar leitura e
escrever operações em bobinas, grandezas discretas e registradores.
Instruções de operação relacionadas para a estação principal:
Machine Translated by Google
139 / 152 Script de programação FRLua
ModbusMasterWriteDO: Escrever saída digital (escrever bobina)
Tabela 3-187 Parâmetros detalhados do ModbusMasterWriteDO
Atributo Explicação
ModbusMasterWriteDO (Nome_Modbus, Nome_do_registro, Núm_do_registro,
Protótipo
{Valor_do_registro})
Descrição Modbus TCP Escrita Saída Digital
·Modbus_name: O nome da estação principal do Modbus;
·Nome do registro: Nome DO;
Parâmetro ·Register_num: Número de registradores;
·{ Register_value }: Valor de registro, o número de valores de registro corresponde ao
número de registros {value_1, value_2,...}.
Valor de retorno nulo
ModbusMasterReadDO: Ler saída digital (ler bobina)
Tabela 3-188 Parâmetros detalhados do ModbusMasterReadDO
Atributo Explicação
Protótipo ModbusMasterReadDO (Nome_Modbus, Nome_do_registro, Núm_do_registro)
Descrição Modbus TCP Escrita Saída Digital
·Modbus_name: O nome da estação principal do Modbus;
Parâmetro ·Nome do registro: Nome DO;
·Register_num: Número de registradores.
Reg_value1, Reg_value2,,...: valores int, retorna a quantidade correspondente de valores
Valor de retorno
com base no valor de Regite_num
ModbusMasterReadDI: Leitura de entrada digital (leitura de entrada discreta)
Tabela 3-189 Parâmetros detalhados do ModbusMasterReadDI
Atributo Explicação
Protótipo ModbusMasterReadDI (Nome_Modbus, Nome_do_registro, Núm_do_registro)
Descrição Modbus TCP Leitura Entrada Digital
·Modbus_name: O nome da estação principal do Modbus;
Parâmetro Nome_do_registro: Nome do DI;
·Register_num: Número de registradores;
Reg_value1, Reg_value2,...: valores int, retorna a quantidade correspondente de valores
Valor de retorno
com base no valor de Regite_num
Machine Translated by Google
140 / 152 Script de programação FRLua
Exemplo de entrada/saída numérica do código 3-57
1. ModbusMasterWriteDO(Modbus_0,Registrador_1,1,{1})
2. --Escreva a saída digital, Modbus 0- nome da estação mestre, Register_1-nome DO, 1- número de
registradores, {1}- Valor do registrador
3. DO_value = ModbusMasterReadDO(Modbus_0,Register_1,1)
4. --Leitura da saída digital, Modbus 0- nome da estação mestre, Register_1-nome DO, 1- registro
quantidade
5. DI_valor = ModbusMasterReadDI(Modbus_0,Register_2,1)
6. --Leitura da saída digital, Modbus 0- nome da estação mestre, Register_2- nome DI, 1- número de
registros
ModbusMasterWriteAO: Escreve saída analógica (mantém registro)
Tabela 3-190 Parâmetros detalhados do ModbusMasterWriteAO
Atributo Explicação
ModbusMasterWriteAO (Nome_Modbus, Nome_do_registro, Núm_do_registro,
Protótipo
{Valor_do_registro})
Descrição Modbus TCP Escrita Saída Analógica
·Modbus_name: O nome da estação principal para Modbus
·Nome do registro: nome da AO;
Parâmetro ·Register_num: Número de registradores;
·{ Register_value }: Valor de registro, o número de valores de registro corresponde ao número de
registros {value_1, value_2,...}.
Valor de retorno nulo
ModbusMasterReadAO: Ler saída analógica (ler registro de espera)
Tabela 3-191 Parâmetros detalhados do ModbusMasterReadAO
Atributo Explicação
Protótipo ModbusMasterReadAO (Nome_Modbus, Nome_do_registro, Núm_do_registro)
Descrição Saída analógica de leitura Modbus TCP
·Modbus_name: O nome da estação principal do Modbus;
Parâmetro ·Nome do registro: nome da AO;
·Register_num: Número de registradores.
Valor de retorno Reg_value: Valor do registrador
Machine Translated by Google
141 / 152 Script de programação FRLua
ModbusMasterReadAI: Leitura de entrada analógica (Ler registro de entrada)
Tabela 3-192 Parâmetros detalhados do ModbusMasterReadAI
Atributo Explicação
Protótipo ModbusMasterReadAI (Nome_Modbus, Nome_do_registro, Núm_do_registro)
Descrição Registrador de entrada de leitura Modbus TCP
·Modbus_name: O nome da estação principal do Modbus;
Parâmetro ·Nome do registro: nome da AO;
·Registro: Número de registros.
Reg_value1, Reg_value2,...: valores int, retorna a quantidade correspondente de valores com
Valor de retorno
base no valor de Regite_num
Exemplo de entrada/saída analógica do código 3-51
1. --Configurações de saída analógica
2. ModbusMasterWriteAO(Modbus_0,Registrador_3,1,{2})
3. --Escreva a saída analógica, Modbus 0- nome da estação mestre, Register_3-nome AO, 1- número de
registradores, {2}- Valor do registrador
4. --Configurações de saída analógica
5. ModbusMasterWriteAO(Modbus_0,Registrador_3,1,{2})
6. --Escreva a saída analógica, Modbus 0- nome da estação mestre, Register_3-nome AO, 1- número de
registradores, {2}- Valor do registrador
7. Valor_AO = ModbusMasterReadAO(Modbus_0,Register_3,1)
8. --Leitura de saída analógica, Modbus 0- nome da estação mestre, Register_3- nome AO, 1- quantidade de registradores
9. Valor_AI = ModbusMasterReadAO(Modbus_0,Register_2,1)
10. --Leitura de entrada analógica, Modbus 0- nome da estação mestre, Register_2- nome AI, 1- quantidade de registradores
ModbusMasterWaitDI: Aguardando configurações de entrada analógica (aguardando entrada
valores de registro)
Tabela 3-193 Parâmetros detalhados do ModbusMasterWaitDI
Atributo Explicação
ModbusMasterWaitDI (nome do Modbus, nome do registrador, estado de espera, tempo de espera)
Protótipo
Descrição Modbus TCP aguardando configurações de entrada analógica
·Modbus_name: O nome da estação principal do Modbus;
Nome_do_registro: Nome do DI;
Parâmetro
·Estado_de_espera: estado de espera, 1-Tempo, 0-Tempo;
·Tempo de espera: unidade de tempo limite [ms].
Valor de retorno nulo
Machine Translated by Google
142 / 152 Script de programação FRLua
ModbusMasterWaitAI: Aguardando configurações de entrada digital (Aguardando configuração discreta
Valores de entrada)
Tabela 3-194 Parâmetros detalhados do ModbusMasterWaitAI
Atributo Explicação
ModbusMasterWaitAI (nome_Modbus, nome_registrador, estado_de_espera,
Protótipo
Valor_de_registro, Tempo_de_espera)
Descrição Modbus TCP aguarda configurações de entrada digital
·Modbus_name: O nome da estação principal do Modbus;
·Nome do registro: nome da IA;
Parâmetro ·Waiting_state: estado de espera, 1-<, 0->;
·Register_value: Valor do registro;
·Tempo de espera: tempo limite [ms].
Valor de retorno nulo
Código 3-52 Aguardando Exemplo de Entrada/Saída Digital/Analógica
1. ModbusMasterWaitDI(Modbus_0,Registrador_0,1,1000)
2. --Modbus 0- Nome da estação mestre, Registro 0-Nome DI, 1-Verdadeiro, 1000- Tempo limite ms
3. ModbusMasterWaitAI(Modbus_0, Registrador_2,0,13,1000)
4. --Modbus 0- Nome da estação mestre, Nome do registrador_2-DA, 0->, 13- Valor do registrador,
1000- Tempo limite ms
Instruções relacionadas da estação
ModbusSlaveWriteDO: Configurações de saída digital escrava (gravação de entrada discreta)
Tabela 3-195 Parâmetros detalhados do ModbusSlaveDWriteDO
Atributo Explicação
Protótipo ModbusSlaveWriteDO (Nome_do_registro, Núm_do_registro, {Valor_do_registro})
Descrição Estação Escrava Modbus TCP Gravar Configurações de Saída Digital
·Nome do registro: Nome DO;
·Register_num: Número de registradores;
Parâmetro
·{Register_value}: Valor do registro, o número de valores do registro corresponde ao
número de registradores {valor_1, valor_2,...}.
Valor de retorno nulo
Machine Translated by Google
143 / 152 Script de programação FRLua
ModbusSlaveReadDO: Leitura de saída digital (leitura de entrada discreta)
Tabela 3-196: Parâmetros detalhados do ModbusSlaveRadDO
Atributo Explicação
Protótipo ModbusSlaveReadDO (Nome_do_registro, Núm_do_registro)
Descrição O Modbus TCP lê e grava saídas digitais ·Nome do registrador:
Nome DO; ·Número do registrador:
Parâmetro
Número de registradores; {Valor do registrador}:
Valor do registrador, o número de valores do registrador corresponde ao número de registradores
Valor de retorno
{valor_1, valor_2,...}
ModbusSlaveReadDI: Ler entrada digital (ler bobina)
Tabela 3-197: Parâmetros detalhados do ModbusSlaveReadDI
Atributo Explicação
Protótipo ModbusMasterReadDI (Nome_do_registro, Núm_do_registro)
Descrição Estação escrava Modbus TCP lê entrada digital ·Nome do
registrador: Nome da DI; ·Registro:
Parâmetro
Número de registradores.
Reg_falue1, Reg_falue2,...: retorna a quantidade correspondente de valores com base no valor
Valor de retorno
de Regite_num
Configurações de entrada/saída digital da estação escrava Código 3-53
1. -Configurações de saída digital da estação
escrava 2. ModbusSlaveWriteDO(DO0,1,{2})
3. -Escreva a saída digital, número DO0-DO, 1-registre a quantidade, {2}- valor do registrador 4. DO_value
= ModbusSlaveReadDO(DO0,1)
5. -Leitura da saída digital, número DO0-DO, quantidade de 1 registro 6.
-Configurações de entrada digital
7. ModbusSlaveReadDI(DI1,3)
8. -Leitura de entrada numérica, nome DI1-DI, quantidade de 3 registradores
ModbusSlaveWetDI: Aguardando configurações de entrada digital (aguardando valores da bobina)
Tabela 3-198 Parâmetros detalhados do ModbusSlaveWetDI
Atributo Explicação
Protótipo ModbusSlaveWaitDI (Nome_do_registrador, Estado_de_espera, Tempo_de_espera)
Descrição Modbus TCP aguarda configurações de entrada digital
Machine Translated by Google
144 / 152 Script de programação FRLua
Tabela 3-198 (continuação)
Atributo Explicação
Nome_do_registro: Nome do DI;
Parâmetro ·Estado_de_espera: estado de espera, 1-Tempo, 0-Tempo;
·Tempo de espera: A unidade de tempo de espera [ms].
Valor de retorno nulo
ModbusSlaveWaitAI: Aguardando as configurações de entrada analógica (aguardando para manter o registro
valores)
Tabela 3-199 Parâmetros detalhados do ModbusSlaveWaitAI
Atributo Explicação
ModbusSlaveWaitAI (Nome_do_registro, Estado_de_espera, Valor_do_registro,
Protótipo
Tempo de espera)
Descrição Estação escrava Modbus TCP aguardando configurações de entrada analógica
·Nome do registro: nome da IA;
·Waiting_state: estado de espera, 1-<, 0->;
Parâmetro
·Valor de registro: Valor de registro;
·Tempo de espera: tempo limite [ms].
Valor de retorno nulo
Código 3-61 estação escrava aguardando configurações de entrada digital/analógica
1. ModbusEscravoEsperaDI(DI2,0,100)
2. --Aguardando configurações de entrada numérica: DI2-nome DI, 0-falso, 100-tempo de espera ms
3. ModbusSlaveWaitAI(AI1,0,12,133))
4. --AI1-Nome do AI, 0->, 12- valor do registrador, tempo limite de 133 ms
ModbusRegRead: Ler instrução de registro
Tabela 3-200 Parâmetros detalhados do ModbusRegRead
Atributo Explicação
Protótipo ModbusRegRead (código_fun, reg_add, reg_num, add, isthread)
Descrição Ler instrução de registro
·fun_code: Código de função, 1-0x01 bobina, 2-0x02 quantidade discreta, 3-0x03 registrador de
retenção, 4-0x04 registrador de entrada;
Parâmetro
·reg_add: Endereço de registro;
·reg_num: Número de registradores;
Machine Translated by Google
145 / 152 Script de programação FRLua
Tabela 3-200 (continuação)
Atributo Explicação
·adicionar: Endereço;
Parâmetro
·isthread: Se deve aplicar threads, 0- Não, 1- Sim.
Valor de retorno nulo
ModbusRegdData: Ler dados do registrador
Tabela 3-201 Parâmetros detalhados de ModbusRegdData
Atributo Explicação
Protótipo ModbusRegGetData (reg_num, isthread)
Descrição Ler dados do registro
·reg_num: Número de registradores;
Parâmetro
·isthread: Se deve aplicar threads, 0- Não, 1- Sim.
Valor de retorno Reg_value: variável de matriz
ModbusRegWrite: Escrever Registro
Tabela 3-202 Parâmetros detalhados do ModbusRegWrite
Atributo Explicação
Protótipo ModbusRegWrite (código_fun, reg_add, reg_num, reg_value, add, isthread)
Descrição Escrever registro
·fun_code: código de função, 5-0x05-bobina única, 6-0x06-registrador único, 15-0x0f
- múltiplas bobinas, 16-0x10- múltiplos registradores;
· reg_add: bobina única, registro único, bobinas múltiplas, registro múltiplo
endereços;
Parâmetro
·reg_num: Número de registradores;
·reg_ralue: matriz de bytes;
·adicionar: Endereço;
·isthread: Se deve aplicar threads, 0- Não, 1- Sim.
Valor de retorno nulo
Exemplo de instrução Modbus RTU do código 3-55
1. endereço = 0x1000
2. va1 = {400, 600, 900, 700}
3. direita = {}
4. ModbusRegWrite(10, endereço, 4, va1, 1, 0)
Machine Translated by Google
146 / 152 Script de programação FRLua
Código 3-55 (continuação)
5. --1-0x10- Múltiplos registradores, addr - Endereço do registrador, 4- Número de registradores, va1- Matriz de bytes, 1-
Endereço, 0- Nenhum thread aplicado
6. EspereMs(10)
7. ModbusRegRead(4, endereço, 4, 1, 0)
8. --1-0x04- Registro de entrada, addr - Endereço do registro, 4- Número de registros, 1- Endereço, 0- Do
não aplicar thread
9. EspereMs(10)
10. reg = ModbusRegGetData(4, 0)
11. --Ler dados do registrador, 4- número de registradores, 0- não aplicar threads
12. EspereMs(10)
3.7.2 Xmlrpc
XMLRPC é um método de chamada de procedimento remoto que usa soquetes para transferir dados
entre programas usando XML. Através deste método, o controlador do robô pode chamar
funções funcionais (com parâmetros) de programas/serviços remotos e obter os
retornou dados estruturais.
XMLrpcClientCall: Chamada Remota de Dados
Tabela 3-203 Parâmetros detalhados de XMLrpcClientCall
Atributo Explicação
Protótipo XmlrpcClientCall (url, função, tipo, func_Para)
Descrição Chamada de dados remota
·url: URL do servidor;
·func: Chama a função;
Parâmetro
·tipo: O tipo do parâmetro de entrada, uma matriz de 1 duplo, uma matriz de 2 strings;
·func_ Para: Chamar parâmetros da função.
Valor de retorno nulo
Exemplo de instrução Xmplppc do código 3-56
1. --Exemplo de matriz dupla:
2. xmlrpccllentcall(" http://192.168.58.20:50000/rpc2 ","exemplo.matriz",1,{1.0,2.0,3.0})
3. -- http://192.168.58.20:50000/rpc2 - URL do servidor, exemplo. array - nome da função de chamada, 1-
tipo, {1.0,2.0,3.0}- Parâmetros da função de chamada
4.
5. --Exemplo de matriz de strings:
Machine Translated by Google
147 / 152 Script de programação FRLua
Código 3-56 (continuação)
6. xmlrpcclientcall(" http://192.168.58.20:50000/rpc2 ","example.array",2,{"olá","mundo"})
7. -- http://192.168.58.20:50000/rpc2 - URL do servidor, exemplo. array - nome da função de chamada, 0-
tipo, {1.0,2.0,3.0}-- Chamar parâmetros de função
3.8 Instrução auxiliar
3.8.1 Roscas Auxiliares
FR Lua fornece funcionalidade de thread auxiliar, onde os usuários podem definir uma thread auxiliar
thread seja executada simultaneamente com a thread principal. A thread auxiliar interage principalmente
com dispositivos externos para troca de dados.
NewAuxthread: Criando threads auxiliares
Tabela 3-204 Parâmetros detalhados de NewAuxThread
Atributo Explicação
Protótipo NewAuxThread (func_name, func_Para)
Descrição Criar thread auxiliar
·func_name: Chamar função;
Parâmetro
·func_ Para: Chamar parâmetros da função.
Valor de retorno nulo
Exemplo de rosca auxiliar Código 3-64
1. --Definição da função de thread auxiliar
2. função auxThread_TCPCom(ip, porta)
3. bandeira local = 0
4. Definir SysNumber (1,0) -- A variável de sistema 1 recebe o valor 0
5. enquanto 1 faço
6. se sinalizador == 0 então
7. Flag=SocketOpen (IP, porta, "socket-0") -- Estabelece uma conexão com o
servidor
8. elseif sinalizador == 1 então
9. SocketSendString("olá mundo","socket_0",1)
10. n. Svar=SocketReadAsciiFloat (1, "socket-0", 0) -- interage com o servidor
para troca de dados
11. se n == 1 então
12. Definir SysNumber (1, resposta) -- Atribuir resposta à variável de sistema 1
Machine Translated by Google
148 / 152 Script de programação FRLua
Código 3-64 (continuação)
13. fim
14. fim
15. fim
16. fim
17. --Criar thread auxiliar
18. NewAuxThread(auxThread_TCPCom, {"127.0.0.1",8010})
19. EspereMs(100)
20. enquanto 1 faz
21. v=Get SysNumber (1) - Obter o valor da variável de sistema 1
22. se v == 100 então
23. PTP(P1,10,0,0)
24. senão se v == 200 então
25. PTP(P2,10,0,0)
26. fim
27. fim
3.8.2 Chamada de Função
FR Lua fornece funções de interface de robô para os clientes escolherem e
solicita os parâmetros necessários para a função, tornando-a conveniente para
clientes para escrever instruções de script
Por exemplo, o GetInverseKinRef e o GetInverseKinHasSolution fornecidos
funções.
GetInverseKinRef: Solução de cinemática inversa - especificando referência de posição
Tabela 3-205 Parâmetros detalhados de GetInverseKinRef
Atributo Explicação
Protótipo GetInverseKinRef (tipo, desc_pos, joint_pos_ref)
Cinemática inversa, resolução de pose de ferramenta, resolução de posição de junta, referência à resolução de
Descrição
posição de junta especificada
·tipo: 0- Pose absoluta (sistema de coordenadas base), 1- Pose relativa (sistema de
coordenadas base), 2- Pose relativa (sistema de coordenadas da ferramenta);
Parâmetro
·desc_pos: {x, y, z, rx, ry, rz} pose da ferramenta, unidade [mm] [°];
·joint_pos_def: {j1, j2, j3, j4, j5, j6}, posição de referência da junta, unidade [°].
Valor de retorno j1, j2, j3, j4, j5, j6: Posição da junta, unidade [°]
Machine Translated by Google
149 / 152 Script de programação FRLua
GetInverseKinHasSolution: Solução de cinemática inversa - Existe uma solução
Tabela 3-206 Parâmetros detalhados de GetInverseKinHasSolution
Atributo Explicação
Protótipo GetInverseKinHasSolution (tipo, desc_pos, joint_pos_ref)
Existe uma solução para resolver posições de juntas usando cinemática inversa e ferramenta
Descrição
pose
·tipo: 0- Pose absoluta (sistema de coordenadas base), 1- Pose relativa (sistema de coordenadas
base), 2- Pose relativa (sistema de coordenadas da ferramenta);
Parâmetro
·desc_pos: {x, y, z, rx, ry, rz} pose da ferramenta, unidade [mm] [°];
·joint_pos_def: {j1, j2, j3, j4, j5, j6], posição de referência da junta, unidade [°].
Valor de retorno Resultado: 'Verdadeiro' - há uma solução, 'Falso' - não há solução
Exemplo de função de chamada de código 3-65
1. J1={95,442,-101,149,-98,699,-68,347,90,580,-47,174}
2.P1={75.414.568.526.338.135,-178.348,-0.930.52.611]
3. ret_1 = GetInverseKinRef(0,P1,J1)
4. --Solução cinemática inversa - especifique a posição de referência, pose 0-absoluta (sistema de coordenadas
base), pose da ferramenta P1, posição de referência da junta J1
5. ret_2 = ObterKinInversoComSolução(0,P1,J1)
6. --Solução cinemática inversa - se há uma solução, pose 0-absoluta (sistema de coordenadas base), pose da
ferramenta P1, posição de referência da junta J1
3.8.3 Tabela de Pontos
PointTableSwitch: troca de pontos
Tabela 3-207 Parâmetros detalhados de PointTableSwitch
Atributo Explicação
Protótipo PointTableSwitch(nome_da_tabela_de_pontos)
Descrição Troca de tabela de pontos
· Point_table_name: O nome da tabela de pontos a ser alternada é pointTable1.db. Quando a
tabela de pontos está vazia, ou seja, "", significa que o programa Lua está sendo atualizado para o
Parâmetro
programa inicial que não aplicou a tabela de pontos, no modo de sistema.
Valor de retorno nulo
Código 3-66 Exemplo de representação de ponto
1. PointTableSwitch("tabela_de_pontos_a.db")