Beruflich Dokumente
Kultur Dokumente
Este é um guia sobre como usar o protocolo de sincronização de dados do controlador UR,
por exemplo, ao desenvolver o URCaps / UR + para robôs universais.
NOTA: Todos os arquivos estão disponíveis para download na parte inferior desta página.
O RTDE está disponível no CB3 / CB3.1 do software 3.3, mas recursos específicos podem estar
disponíveis apenas em versões de software mais recentes.
O RTDE sincroniza executáveis externos com o controlador UR, por exemplo, URCaps, sem quebrar nenhuma
propriedade em tempo real. Este documento primeiro descreve o protocolo e, em seguida, fornece uma
implementação de referência do cliente Python.
Introdução
A interface RTDE (Real-Time Data Exchange) fornece uma maneira de sincronizar aplicativos externos com o
controlador UR em uma conexão TCP / IP padrão, sem quebrar nenhuma propriedade em tempo real do
controlador UR. Essa funcionalidade é útil, entre outras coisas, para interagir com os drivers (por exemplo,
Ethernet / IP), manipular a E / S do robô e plotar o status do robô (por exemplo, trajetórias do robô). A interface
RTDE está disponível por padrão quando o controlador UR está em execução.
Na conexão com a interface RTDE, o cliente é responsável por configurar as variáveis a serem sincronizadas.
Qualquer combinação de registros de entrada e saída que o cliente precisa gravar e ler, respectivamente, pode
ser especificada. Para conseguir isso, o cliente envia uma lista de configuração dos campos de entrada e saída
nomeados que devem estar contidos nos pacotes de sincronização de dados reais. A definição de um formato de
pacote de dados de sincronização é referida como receita.
Existe um limite máximo de 2048 bytes para
representar a lista de nomes de campo de entradas / saídas que um cliente gostaria de assinar. Em troca, a
interface RTDE responde com uma lista dos tipos de variáveis ou especifica que uma variável específica não foi
encontrada.Cada receita de entrada que foi configurada com sucesso receberá um ID de receita exclusivo. A lista
de nomes de campos suportados e seus tipos de dados associados podem ser encontrados abaixo. Quando a
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
configuração estiver concluída, a sincronização de dados pode ser iniciada e pausada.
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 1/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
Quando o loop de sincronização é iniciado, a interface RTDE envia ao cliente os dados solicitados na mesma
ordem em que foram solicitados pelo cliente. Além disso, espera-se que o cliente envie entradas atualizadas para
a interface RTDE em uma mudança de valor. A sincronização de dados usa dados serializados.
Todos os pacotes compartilham a mesma estrutura geral com um cabeçalho e uma carga útil, se aplicável. Os
pacotes usados para o procedimento de configuração geram uma mensagem de retorno. Os pacotes de loop de
sincronização não. O cliente e o servidor podem, a qualquer momento, enviar uma mensagem de texto, em que o
nível de aviso especifica a gravidade do problema. O RTDE está disponível no número da porta 30004.
Para começar, recomendamos usar ou modificar o exemplo de cliente fornecido escrito em Python.
Características principais
Sincronização em tempo real: O RTDE geralmente gera mensagens de saída em 125 Hz. No
entanto, o loop em tempo real no controlador tem uma prioridade mais alta que a interface RTDE.
Portanto, se o controlador não tiver recursos computacionais, ele ignorará vários pacotes de saída.
Os pacotes ignorados não serão enviados mais tarde, o controlador sempre enviará os dados mais
recentes. Os pacotes de entrada sempre serão processados no ciclo de controle recebido, de modo
que a carga do controlador irá variar dependendo do número de pacotes recebidos.
Mensagens de entrada: A atualização de variáveis no controlador pode ser dividida em várias
mensagens. Pode-se ter uma mensagem para atualizar tudo ou uma mensagem por variável ou
qualquer divisão entre elas. Não há necessidade de uma taxa de atualização constante; entradas
mantêm seu último valor recebido. Nota: Apenas um cliente RTDE tem permissão para controlar
uma variável específica a qualquer momento.
Ambiente de tempo de execução: um cliente RTDE pode ser executado no PC do UR Control Box
ou em qualquer PC externo. A vantagem de executar o cliente RTDE na Caixa de Controle não é
latência de rede. No entanto, o cliente RTDE e o controlador UR competirão por recursos
computacionais. Por favor, certifique-se de que o cliente RTDE seja executado com a prioridade
padrão do sistema operacional. Processos intensivos em computação, por exemplo, processamento
de imagens, devem ser executados em um PC externo.
Alterações no protocolo: O protocolo RTDE pode ser atualizado a qualquer momento pelo UR. Para
garantir compatibilidade máxima para seu cliente RTDE, os clientes RTDE podem solicitar que a
interface RTDE fale uma versão de protocolo específica. Adições / alterações de protocolo são
explicitamente denotadas, caso contrário, a versão 1 é assumida.
EM
speed_slider_fraction novo valor de controle deslizante de velocidade
DOBRO
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 2/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
tool_digital_output UINT8 Saída digital da ferramenta Bits 0-1: estado de saída, os bits restantes são
reservados para uso futuro
EM
standard_analog_output_0 Saída analógica padrão 0 (relação) [0..1]
DOBRO
EM
standard_analog_output_1 Saída analógica padrão 1 (relação) [0..1]
DOBRO
input_bit_registers0_to_31 UINT32 Este intervalo de registros de entrada booleana é reservado para uso
da interface FieldBus / PLC.
input_bit_registers32_to_63 UINT32 Este intervalo de registros de entrada booleana é reservado para uso
da interface FieldBus / PLC.
* Os valores de saída digital e analógica devem ser enviados junto com a máscara, caso contrário, os valores
serão ignorados.
Saídas do controlador do robô
Tempo decorrido desde que o co
timestamp EM DOBRO
foi iniciado [s]
Modo Robot
Por favor, veja Controle Remoto
robot_mode INT32
IP - 16496 (/how-tos-and-faqs/h
how-tos/remote-control-via-tcpip
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 4/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
Modo de segurança
Por favor, veja o controle remo
safety_mode INT32
IP - 16496 (/how-tos-and-faqs/h
how-tos/remote-control-via-tcpip
Escalonamento de velocidade do
speed_scaling EM DOBRO
de trajetória
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 5/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
Modo de ferramenta
Por favor, veja Controle Remoto
tool_mode UINT32
IP - 16496 (/how-tos-and-faqs/h
how-tos/remote-control-via-tcpip
tool_analog_input_types UINT32
Bits 0-1: tool_analog_input_0
tool_analog_input_1
Temperatura da ferramenta em
ferramenta_temperatura EM DOBRO
Celsius
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 6/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 7/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
Tipos de dados
Nome Tipo Tamanho em bits
Protocolo
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 8/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
EE = Executável externo
CON =
Saída do controlador do robô : CON ->
Entrada EE : CON <- EE
Cabeçalho
tamanho do pacote uint16_t
RTDE_REQUEST_PROTOCOL_VERSION 86 V
RTDE_GET_URCONTROL_VERSION 118 v
RTDE_TEXT_MESSAGE 77 M
RTDE_DATA_PACKAGE 85 você
RTDE_CONTROL_PACKAGE_SETUP_OUTPUTS 79 O
RTDE_CONTROL_PACKAGE_SETUP_INPUTS 73 Eu
RTDE_CONTROL_PACKAGE_START 83 S
RTDE_CONTROL_PACKAGE_PAUSE 80 P
Direção:
Retorno Bilateral : Não disponível
RTDE_REQUEST_PROTOCOL_VERSION
Cabeçalho Veja acima
Retorna
aceitaram uint8_t
Resumo: O controlador aceita ou não, ou seja, 1 (sucesso) ou 0 (falha). Ao ser bem-sucedido, o EE deve falar a
versão do protocolo especificada e o CON responderá nessa versão.
RTDE_GET_URCONTROL_VERSION
Cabeçalho Veja acima
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 9/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
Retorna
principal uint32_t
menor uint32_t
bugfix uint32_t
construir uint32_t
RTDE_TEXT_MESSAGE (protocolo v. 1)
Direção: CON -> EE
mensagem corda
mensagem corda
fonte corda
RTDE_TEXT_MESSAGE (protocolo v. 2)
Cabeçalho Veja acima
mensagem corda
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 10/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
RTDE_DATA_PACKAGE
Cabeçalho Veja acima
ID da receita uint8_t
RTDE_CONTROL_PACKAGE_SETUP_OUTPUTS (protocolo v.
1)
Cabeçalho Veja acima
Resumo: Configure a receita de saídas. No momento, o CON suporta apenas uma receita de saída. O pacote deve
conter todas as variáveis de saída desejadas. Os nomes das variáveis são uma lista de sequências de nomes de
variáveis separadas por vírgula.
Direção: EE -> CON
Retorna
Resumo: Retorna os tipos de variáveis na mesma ordem em que foram fornecidos na solicitação.
Tipos de variáveis: VECTOR6D, VECTOR3D, VECTOR6INT32, VECTOR6UINT32, DUPLO, UINT64, UINT32, INT32,
BOOL, UINT8
Se uma variável não estiver disponível, o tipo de variável será "NOT_FOUND".
No caso de um ou mais valores de retorno "NOT_FOUND", a receita é considerada inválida e o RTDE não exibirá
esses dados.
RTDE_CONTROL_PACKAGE_SETUP_OUTPUTS (protocolo v.
2)
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
Cabeçalho
uso de cookies. Saber mais (/support/) Veja acima
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 11/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
Resumo: Configure a receita de saídas. No momento, o CON suporta apenas uma receita de saída e a frequência
de saída é configurável. A frequência deve estar entre 1 e 125 Hz e a taxa de saída será de acordo com o piso
(125 / frequência). O pacote deve conter todas as variáveis de saída desejadas. Os nomes das variáveis são uma
lista de sequências de nomes de variáveis separadas por vírgula.
Direção: EE -> CON
Retorna
Resumo: Retorna os tipos de variáveis na mesma ordem em que foram fornecidos na solicitação.
Tipos de variáveis: VECTOR6D, VECTOR3D, VECTOR6INT32, VECTOR6UINT32, DUPLO, UINT64, UINT32, INT32,
BOOL, UINT8
Se uma variável não estiver disponível, o tipo de variável será "NOT_FOUND".
No caso de um ou mais valores de retorno "NOT_FOUND", a receita é considerada inválida e o RTDE não exibirá
esses dados.
RTDE_CONTROL_PACKAGE_SETUP_INPUTS
Cabeçalho Veja acima
Resumo: Configure uma receita de entrada CON. O CON suporta 255 diferentes receitas de entrada (0 é
reservado). Os nomes das variáveis são uma lista de sequências de nomes de variáveis separadas por vírgula.
Direção: EE -> CON
Retorna
Resumo: Retorna os tipos de variáveis na mesma ordem em que foram fornecidos na solicitação.
Tipos de variáveis: VECTOR6D, VECTOR3D, VECTOR6INT32, VECTOR6UINT32, DOUBLE, UINT64, UINT32,
INT32, BOOL, UINT8
Se uma variável foi reivindicada por outro EE, então o tipo de variável será "IN_USE".
Se uma variável não estiver disponível, o tipo de variável será "NOT_FOUND".
No caso de um ou mais valores de retorno "IN_USE" ou "NOT_FOUND", a receita é considerada inválida (ID da
receita = 0).
RTDE_CONTROL_PACKAGE_START
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 12/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
Cabeçalho
Veja acima
Resumo: Solicite que o controlador comece a enviar atualizações de saída. Isso falhará se, por exemplo, um
pacote de saída ainda não tiver sido configurado.
Direção: EE -> CON
Retorna
aceitaram uint8_t
RTDE_CONTROL_PACKAGE_PAUSE
Cabeçalho Veja acima
Retorna
aceitaram uint8_t
Exemplos
record.py
Use este script como um executável para gravar dados de saída do robô e salvá-lo em um arquivo csv.
Argumentos opcionais
--host: nome do host ou endereço IP para conexão (padrão: localhost)
--port: número da porta (padrão: 30004)
--samples:
Nós usamos cookiesnúmero específico
para melhorar suadeexperiência.
amostras a Ao
serem gravadas
continuar (casoeste
a visitar contrário, o programa
site, você com o ✖
concordaregistrará
os dados
uso de cookies. até receber
Saber SIGINT / Ctrl + C)
mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 13/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
example_plotting.py
Fornece uma maneira simples de ler e plotar os dados de um arquivo csv gravado com o record.py .
example_control_loop.py
Exemplo de um loop de controle simples. Uma configuração com duas receitas de entrada e uma receita de saída
é lida do arquivo XML e enviada para o servidor RTDE. O loop de controle consiste em uma leitura de bloqueio
seguida por um processamento de dados muito simples antes de enviar novas informações ao robô.
módulo rtde
Esta seção descreve as diferentes classes e suas interfaces públicas do módulo rtde.
Lê o arquivo CSV e mapeia cada coluna em uma entrada no dicionário de namespace do objeto. O cabeçalho
da coluna é a chave do dicionário e o valor é uma matriz de pontos de dados na coluna.
Parâmetros de entrada:
csvfile (file): Qualquer objeto do tipo arquivo que tenha um método . read ()
delimiter (string): Uma string de um caractere usada para separar campos. O padrão é '' .
Retorna um objeto writer que pode receber DataObjects RTDE e convertê-los em uma string delimitada e
gravá-los em um arquivo como o objeto.
Parâmetros de entrada:
csvfile (file): Qualquer objeto semelhante a um arquivo que tenha um método . write ()
nomes (array <string>): lista de nomes de variáveis
types (array <string>): lista de tipos de variáveis
delimiter (string): Uma string de um caractere usada para separar campos. O padrão é '' .
writeheader ()
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 14/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
Escrever cabeçalhos de coluna na linha atual no arquivo com base nos nomes das variáveis. Variáveis
multidimensionais obterão um índice anexado ao nome em cada coluna.
escritor (objeto_de_dados)
Escreva uma nova linha no arquivo com base no DataObject fornecido.
Parâmetros de entrada:
objeto_de_dados (DataObject): Objeto de dados com variáveis de membro que correspondem aos
nomes das variáveis RTDE configuradas
Uma configuração RTDE pode ser carregada de um arquivo XML contendo uma lista de receitas. Cada
receita deve ter uma chave e uma lista de campos com um nome e tipo de variável. Um exemplo de receita
XML:
get_recipe (chave)
Obtém a receita associada à chave especificada, fornecida como uma lista de nomes e uma lista de tipos.
Parâmetros de entrada:
Valores de retorno:
Um objeto de transferência de dados em que os nomes de variáveis RTDE configurados para sincronização
foi adicionado ao dicionário de namespace da classe para acesso conveniente. Isso significa que, por
exemplo, o registro de data e hora pode ser acessado em um DataObject de saída assim:
objName.timestamp . O DataObject é usado para entrada e saída.
recipe_id
O recipe_id é uma variável de membro inteiro na ocorrência de DataObject usada para identificar pacotes de
entrada configurados no servidor RTDE. Não é usado para pacotes de saída.
Parâmetros de entrada:
conectar()
Inicialize a conexão RTDE para o host.
Valor de retorno:
sucesso (booleano)
desconectar()
Feche a conexão RTDE.
está conectado()
Retorna True se a conexão estiver aberta.
Valor de retorno:
get_controller_version ()
Retorna a versão do software do controlador do robô que está executando o servidor RTDE.
Valores de retorno:
major (int)
menor (int)
bugfix (int)
construir (int)
negte_protocol_version (protocolo)
Negocie a versão do protocolo com o servidor. Retorna True se o controlador suportar a versão do protocolo
especificada. Recomendamos que você use isso para garantir total compatibilidade entre seu aplicativo e
futuras versões do controlador do robô.
Parâmetros de entrada:
Return value:
success (boolean)
send_input_setup(variables, types)
Configure an input package that the external application will send to the robot controller. An input package
is a collection of input variables that the external application will provide to the robot controller in a single
update. Variables is a list of variable names and should be a subset of the names supported as input by the
RTDE interface.The list of types is optional, but if any types are provided it should have the same length as
the variables list. The provided types will be matched with the types that the RTDE interface expects and the
function returns None if they are not equal. Multiple input packages can be configured. The returned
InputObject has a reference to the recipe id which is used to identify the specific input format when sending
an update.
Input parameters:
variables (array<string>): Variable names from the list of possible RTDE inputs
types (array<string>): [Optional] Types matching the variables
Return value:
input_data (DataObject): Empty object with member variables matching the names of the
configured RTDE variables
send_output_setup(variables, types)
Configure an output package that the robot controller will send to the external application at the control
Nós usamos cookies
frequency. para is
Variables melhorar sua experiência.
a list of variable names andAo continuar
should a visitar
be a subset of este site, você
the names concorda
supported com oby ✖
as output
uso de the
cookies.
RTDE Saber mais
interface. The(/support/)
list of types is optional, but if any types are provided it should have the same length
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 17/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
as the variables list. The provided types will be matched with the types that the RTDE interface expects and
the function returns False if they are not equal. Only one output package format can be specified and hence
no recipe id is used for output.
Input parameters:
variables (array<string>): Variable names from the list of possible RTDE outputs
types (array<string>): [Optional] Types matching the variables
Return value:
success (boolean)
send_start()
Envia um comando de início para o servidor RTDE para iniciar a sincronização real. A configuração de todas
as entradas e saídas deve ser feita antes de iniciar a sincronização.
Valor de retorno:
sucesso (booleano)
send_pause ()
Envia um comando de pausa para o servidor RTDE para pausar a sincronização. Quando pausado, é possível
alterar as configurações de entrada e saída e iniciar a sincronização novamente.
Valor de retorno:
sucesso (booleano)
enviar (input_data)
Envie o conteúdo de um DataObject como entrada para o servidor RTDE. Retorna True se for bem sucedido.
Parâmetros de entrada:
input_data (DataObject): objeto com variáveis de membro que correspondem aos nomes das
variáveis RTDE configuradas
Valor de retorno:
sucesso (booleano)
receber()
Bloqueio de chamada para receber a próxima saída DataObject do servidor RTDE.
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
Valor de retorno:
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 18/19
08/04/2019 Guia RTDE (Real-Time Data Exchange) - 22229
output_data (DataObject): objeto com variáveis de membro que correspondem aos nomes das
variáveis RTDE configuradas
Nós usamos cookies para melhorar sua experiência. Ao continuar a visitar este site, você concorda com o ✖
uso de cookies. Saber mais (/support/)
https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/real-time-data-exchange-rtde-guide-22229/ 19/19