0% acharam este documento útil (0 voto)
13 visualizações155 páginas

FR Lua Programming Script User Manual-V1.0

Este documento é um manual do usuário para programação em Lua FR, focado em robôs colaborativos FAIRINO. Ele abrange fundamentos da linguagem, incluindo gramática, variáveis, tipos de dados, funções e estruturas de controle, além de instruções específicas para controle de robôs. O manual visa fornecer orientações abrangentes para programar scripts de forma eficiente.

Enviado por

rilton123
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
13 visualizações155 páginas

FR Lua Programming Script User Manual-V1.0

Este documento é um manual do usuário para programação em Lua FR, focado em robôs colaborativos FAIRINO. Ele abrange fundamentos da linguagem, incluindo gramática, variáveis, tipos de dados, funções e estruturas de controle, além de instruções específicas para controle de robôs. O manual visa fornecer orientações abrangentes para programar scripts de forma eficiente.

Enviado por

rilton123
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 155

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")

Você também pode gostar