Programação Nanótica NanoLib C++

Informações do produto
Especificações
- Nome do produto: NanoLib
- Programação Linguagem: C++
- Versão do produto: 1.3.0
- Versão do manual do usuário: 1.4.2
A biblioteca NanoLib é projetada para programar software de controle para controladores Nanotec. Ela fornece uma interface de usuário, funcionalidades principais e bibliotecas de comunicação para facilitar o desenvolvimento de aplicativos de controle.
Instruções de uso do produto
- Antes de começar:
- Certifique-se de que seu sistema atenda aos requisitos de hardware especificados no manual. O público-alvo deste produto inclui desenvolvedores que buscam criar software de controle para controladores Nanotec.
- Começando:
- Para começar a usar o NanoLib, siga estas etapas:
- Comece importando o NanoLib para seu projeto.
- Configure as configurações do seu projeto conforme necessário.
- Crie seu projeto para incorporar as funcionalidades do NanoLib.
- Criando Projetos:
- Você pode criar projetos para ambientes Windows e Linux. Siga as instruções específicas fornecidas no manual para cada plataforma.
- Referência de classes/funções:
- Consulte o manual do usuário para obter um guia detalhado sobre as classes e funções disponíveis no NanoLib para programação de software de controle.
Perguntas frequentes
- P: Qual é o propósito do NanoLib?
- A: NanoLib é uma biblioteca para programação de software de controle para controladores Nanotec, fornecendo funcionalidades essenciais e capacidades de comunicação.
- P: Como posso começar a usar o NanoLib?
- A: Comece importando o NanoLib para seu projeto, configurando as configurações do projeto e construindo seu projeto para utilizar os recursos do NanoLib.
“`
Manual do usuário NanoLib
C++
Válido com a versão do produto 1.3.0
Versão do manual do usuário: 1.4.2
Objetivo e convenções do documento
Este documento descreve a configuração e o uso da biblioteca NanoLib e contém uma referência a todas as classes e funções para programar seu próprio software de controle para controladores Nanotec. Usamos as seguintes fontes:
O texto sublinhado marca uma referência cruzada ou hiperlink.
Examparquivo 1: Para obter instruções exatas sobre o NanoLibAccessor, consulte Configuração. Examparquivo 2: Instale o driver Ixxat e conecte o adaptador CAN para USB. Texto em itálico significa: Este é um objeto nomeado, um caminho/item de menu, uma guia/ file nome ou (se necessário) uma expressão em língua estrangeira.
Examparquivo 1: Selecione File > Novo > Documento em Branco. Abra a guia Ferramenta e selecione Comentário. Example 2: Este documento divide os usuários (= Nutzer; usuario; utente; utilisateur; utente etc.) de:
– Usuário terceiro (= Drittnutzer; tercero usuario; terceiro utente; tiers utilisateur; terzo utente etc.). – Usuário final (= Endnutzer; usuario final; utente final; utilisateur final; utente finale etc.).
Courier marca blocos de código ou comandos de programação. Examparquivo 1: Via Bash, chame sudo make install para copiar objetos compartilhados; então chame ldconfig. Examparquivo 2: Use a seguinte função NanoLibAccessor para alterar o nível de log no NanoLib:
// ***** Variante C++ *****
void setLoggingLevel (nível LogLevel);
O texto em negrito enfatiza palavras individuais de importância crítica. Alternativamente, os pontos de exclamação entre colchetes enfatizam a importância crítica(!).
Example 1: Proteja você, outras pessoas e seu equipamento. Siga nossas notas gerais de segurança que são geralmente aplicáveis a todos os produtos Nanotec.
Exampitem 2: Para sua própria proteção, siga também as notas de segurança específicas que se aplicam a este produto específico. O verbo co-clicar significa um clique através da tecla secundária do mouse para abrir um menu de contexto, etc.
Examparquivo 1: Co-clique no file, selecione Renomear e renomeie o file. Examparquivo 2: Para verificar as propriedades, clique com o botão direito no file e selecione Propriedades.
Versão: documento 1.4.2 / NanoLib 1.3.0
4
Antes de começar
Antes de começar a usar NanoLib, prepare seu PC e informe-se sobre o uso pretendido e as limitações da biblioteca.
2.1 Requisitos de sistema e hardware

AVISO Mau funcionamento devido à operação de 32 bits ou sistema descontinuado! Use e mantenha consistentemente um sistema de 64 bits. Observe as descontinuações e ~instruções do OEM.
O NanoLib 1.3.0 suporta todos os produtos Nanotec com CANopen, Modbus RTU (também USB na porta virtual com), Modbus TCP, EtherCat e Profinet. Para NanoLibs mais antigos: veja o changelog no imprint. Somente por sua conta e risco: uso de sistema legado. Observação: siga as instruções válidas do OEM para definir a latência o mais baixo possível se você tiver problemas ao usar um adaptador USB baseado em FTDI.
Requisitos (sistema de 64 bits obrigatório)
Windows 10 ou 11 com Visual Studio 2019 versão 16.8 ou posterior e Windows SDK 10.0.20348.0 (versão 2104) ou posterior
C++ redistribuíveis 2017 ou superior CANopen: Driver básico Ixxat VCI ou PCAN (opcional) Módulo EtherCat / Profinet DCP: Npcap ou WinPcap Módulo RESTful: Npcap, WinPcap ou permissão de administrador para
comunicar com bootloaders Ethernet
Linux com Ubuntu 20.04 LTS até 24 (todos x64 e arm64)
Cabeçalhos do kernel e pacote libpopt-dev Profinet DCP: CAP_NET_ADMIN e CAP_NET_RAW
laços CANopen: driver Ixxat ECI ou adaptador Peak PCAN-USB EtherCat: CAP_NET_ADMIN, CAP_NET_RAW e
Habilidades CAP_SYS_NICE RESTful: capacidade CAP_NET_ADMIN de se comunicar com Eth-
bootloaders ernet (também recomendado: CAP_NET_RAW)
Idioma, adaptadores de barramento de campo, cabos
C++ GCC 7 ou superior (Linux)
EtherCAT: cabo Ethernet VCP / hub USB: agora USB uniforme Armazenamento em massa USB: cabo USB REST: cabo Ethernet CANopen: Ixxat USB-para-CAN V2; Na-
notec ZK-USB-CAN-1, adaptador Peak PCANUSB Sem suporte Ixxat para Ubuntu em arm64
Modbus RTU: Nanotec ZK-USB-RS485-1 ou adaptador equivalente; cabo USB na porta com virtual (VCP)
Modbus TCP: Cabo Ethernet conforme ficha técnica do produto
2.2 Uso pretendido e público-alvo
NanoLib é uma biblioteca de programas e componente de software para operação e comunicação com controladores Nanotec em uma ampla gama de aplicações industriais e apenas para programadores devidamente qualificados.
Devido à incapacidade de hardware (PC) e sistema operacional em tempo real, o NanoLib não deve ser usado em aplicações que precisam de movimento multieixo síncrono ou que são geralmente sensíveis ao tempo.
Em nenhuma hipótese você pode integrar o NanoLib como um componente de segurança em um produto ou sistema. Na entrega aos usuários finais, você deve adicionar avisos de advertência correspondentes e instruções para uso e operação seguros a cada produto com um componente fabricado pela Nanotec. Você deve passar todos os avisos de advertência emitidos pela Nanotec diretamente para o usuário final.
2.3 Escopo de entrega e garantia
NanoLib vem como uma pasta *.zip do nosso download website para EMEA/APAC ou AMÉRICA. Armazene e descompacte devidamente o download antes da configuração. O pacote NanoLib contém:
Versão: documento 1.4.2 / NanoLib 1.3.0
5
2 antes de começar
Cabeçalhos de interface como código-fonte (API)
Funções principais como bibliotecas em formato binário: nano-
Bibliotecas que facilitam a comunicação: nanolibm_ lib.dll
[yourfieldbus].dll etc.Exampo projeto: Example.sln (Estúdio Visual
projeto) e example.cpp (principal file)
Para o escopo da garantia, observe a) nossos termos e condições para EMEA / APAC ou AMÉRICA e b) todos os termos de licença. Nota: A Nanotec não é responsável por qualidade, manuseio, instalação, operação, uso e manutenção defeituosos ou indevidos de equipamentos de terceiros! Para a devida segurança, sempre siga as instruções válidas do OEM.
Versão: documento 1.4.2 / NanoLib 1.3.0
6
A arquitetura NanoLib
A estrutura de software modular do NanoLib permite organizar funções de controlador de motor / fieldbus livremente personalizáveis em torno de um núcleo estritamente pré-construído. NanoLib contém os seguintes módulos:
Interface do usuário (API)
Núcleo NanoLib
Interface e classes auxiliares que Bibliotecas que
Bibliotecas de comunicação Bibliotecas específicas do Fieldbus que
acessá-lo para implementar a funcionalidade API do seu controlador para fazer interface entre NanoLib
OD (dicionário de objetos)
interagir com bibliotecas de ônibus.
hardware de núcleo e barramento.
com base na função principal NanoLib
nacionalidades.
3.1 Interface do usuário
A interface do usuário consiste em uma interface de cabeçalho files você pode usar para acessar os parâmetros do controlador. As classes de interface do usuário, conforme descrito na referência de Classes/funções, permitem que você:
Conecte-se ao hardware (adaptador fieldbus) e ao dispositivo controlador. Acesse o OD do dispositivo para ler/escrever os parâmetros do controlador.
3.2 Núcleo NanoLib
O núcleo NanoLib vem com a biblioteca de importação nanolib.lib. Ela implementa a funcionalidade da interface do usuário e é responsável por:
Carregando e gerenciando as bibliotecas de comunicação. Fornecendo as funcionalidades da interface do usuário no NanoLibAccessor. Este ponto de entrada de comunicação de-
refina um conjunto de operações que você pode executar no núcleo NanoLib e nas bibliotecas de comunicação.
3.3 Bibliotecas de comunicação
Além de nanotec.services.nanolib.dll (útil para seu Plug & Drive Studio opcional), NanoLib oferece as seguintes bibliotecas de comunicação:
nanolibm_canopen.dll nanolibm_modbus.dll
nanolibm_ethercat.dll nanolibm_restful-api.dll
nanolibm_usbmmsc.dll nanolibm_profinet.dll
Todas as bibliotecas estabelecem uma camada de abstração de hardware entre o núcleo e o controlador. O núcleo os carrega na inicialização a partir da pasta de projeto designada e os utiliza para estabelecer comunicação com o controlador pelo protocolo correspondente.
Versão: documento 1.4.2 / NanoLib 1.3.0
7
Começando
Leia como configurar o NanoLib para o seu sistema operacional adequadamente e como conectar o hardware conforme necessário.
4.1 Prepare seu sistema
Antes de instalar os drivers do adaptador, prepare seu PC junto com o sistema operacional primeiro. Para preparar o PC junto com seu sistema operacional Windows, instale o MS Visual Studio com extensões C++. Para instalar make e gcc pelo Linux Bash, chame sudo apt install build-essentials. Em seguida, habilite os recursos CAP_NET_ADMIN, CAP_NET_RAW e CAP_SYS_NICE para o aplicativo que usa NanoLib: 1. Chame sudo setcap 'cap_net_admin,cap_net_raw,cap_sys_nice+eip'
nome>. 2. Só então instale os drivers do adaptador.
4.2 Instale o driver do adaptador Ixxat para Windows
Somente após a devida instalação do driver, você pode usar o adaptador USB-para-CAN V2 da Ixxat. Leia o manual do produto das unidades USB para saber se / como ativar a porta virtual (VCP). 1. Baixe e instale o driver VCI 4 da Ixxat para Windows em www.ixxat.com. 2. Conecte o adaptador compacto USB-para-CAN V2 da Ixxat ao PC via USB. 3. Pelo Gerenciador de Dispositivos: Verifique se o driver e o adaptador estão devidamente instalados/reconhecidos.
4.3 Instale o driver do adaptador Peak para Windows
Somente após a devida instalação do driver, você pode usar o adaptador PCAN-USB da Peak. Leia o manual do produto das unidades USB para saber se / como ativar a porta virtual (VCP). 1. Baixe e instale a configuração do driver de dispositivo do Windows (= pacote de instalação com drivers de dispositivo, ferramentas e
APIs) de http://www.peak-system.com. 2. Conecte o adaptador PCAN-USB da Peak ao PC via USB. 3. Pelo Gerenciador de Dispositivos: Verifique se o driver e o adaptador estão devidamente instalados/reconhecidos.
4.4 Instale o driver do adaptador Ixxat para Linux
Somente após a devida instalação do driver, você pode usar o adaptador USB-para-CAN V2 da Ixxat. Nota: Outros adaptadores suportados precisam de suas permissões por sudo chmod +777/dev/ttyACM* (* número do dispositivo). Leia o manual do produto das unidades USB para saber se / como ativar a porta virtual (VCP). 1. Instale o software necessário para o driver ECI e o aplicativo de demonstração:
sudo apt-get update apt-get install libusb-1.0-0-dev libusb-0.1-4 libc6 libstdc++6 libgcc1 buildessential
2. Baixe o driver ECI-for-Linux de www.ixxat.com. Descompacte-o via:
descompacte eci_driver_linux_amd64.zip
3. Instale o driver via:
cd /EciLinux_amd/src/KernelModule sudo make install-usb
4. Verifique se a instalação do driver foi bem-sucedida compilando e iniciando o aplicativo de demonstração:
cd /EciLinux_amd/src/EciDemos/ sudo make cd /EciLinux_amd/bin/release/ ./LinuxEciDemo
Versão: documento 1.4.2 / NanoLib 1.3.0
8
4 Começando
4.5 Instale o driver do adaptador Peak para Linux
Somente após a devida instalação do driver, você pode usar o adaptador PCAN-USB da Peak. Nota: Outros adaptadores suportados precisam de suas permissões por sudo chmod +777/dev/ttyACM* (* número do dispositivo). Leia o manual do produto das unidades USB para saber se / como ativar a porta virtual (VCP). 1. Verifique se o seu Linux tem cabeçalhos de kernel: ls /usr/src/linux-headers-`uname -r`. Se não, instale
eles: sudo apt-get install linux-headers-`uname -r` 2. Só agora, instale o pacote libpopt-dev: sudo apt-get install libpopt-dev 3. Baixe o pacote de driver necessário (peak-linux-driver-xxx.tar.gz) de www.peak-system.com. 4. Para descompactá-lo, use: tar xzf peak-linux-driver-xxx.tar.gz 5. Na pasta descompactada: Compile e instale os drivers, a biblioteca base do PCAN, etc.: make all
sudo make install 6. Para verificar a função, conecte o adaptador PCAN-USB.
a) Verifique o módulo do kernel:
lsmod | grep pcan b) … e a biblioteca compartilhada:
ls -l /usr/lib/libpcan*
Observação: se ocorrerem problemas com USB3, use uma porta USB2.
4.6 Conecte seu hardware
Para poder executar um projeto NanoLib, conecte um controlador Nanotec compatível ao PC usando seu adaptador. 1. Usando um cabo adequado, conecte seu adaptador ao controlador. 2. Conecte o adaptador ao PC de acordo com a folha de dados do adaptador. 3. Ligue o controlador usando uma fonte de alimentação adequada. 4. Se necessário, altere as configurações de comunicação do controlador Nanotec conforme as instruções no manual do produto.
4.7 Carregar NanoLib
Para começar com princípios básicos rápidos e fáceis, você pode (mas não deve) usar nosso exampo projeto. 1. Dependendo da sua região: Baixe o NanoLib em nosso website para EMEA/APAC ou AMÉRICA. 2. Descompacte o pacote files / pastas e selecione uma opção: Para noções básicas rápidas e fáceis: Consulte Iniciando o example project. Para personalização avançada no Windows: Veja Criando seu próprio projeto do Windows. Para personalização avançada no Linux: Veja Criando seu próprio projeto do Linux.
Versão: documento 1.4.2 / NanoLib 1.3.0
9
Iniciando o exampo projeto
Com o NanoLib devidamente carregado, o exampO projeto mostra o uso do NanoLib com um controlador Nanotec. Nota: Para cada etapa, comentários no exemplo fornecidoample código explica as funções usadas. O exampO projeto consiste em: o `*_functions_example.*' files, que contém as implementações para as funções da interface NanoLib `*_callback_example.*' files, que contêm implementações para os vários retornos de chamada (scan, data e
registrando) o `menu_*.*' file, que contém a lógica do menu e o código do Example. * file, que é o programa principal, criando o menu e inicializando todos os parâmetros utilizados no Sampler_example. * file, que contém o exampa implementação para sampuso mais extenso. Você pode encontrar mais examples, com alguns comandos de movimento para vários modos de operação, na Knowledge Base em nanotec.com. Todos são utilizáveis no Windows ou Linux.
No Windows com Visual Studio 1. Abra o Example.sln file. 2. Abra o example.cpp. 3. Compile e execute o exampo código.
No Linux via Bash 1. Descompacte o código-fonte file, navegue até a pasta com o conteúdo descompactado. O principal file para o exampé
example.cpp. 2. No bash, chame:
a. “sudo make install” para copiar os objetos compartilhados e chamar ldconfig. b. “make all” para construir o executável de teste. 3. A pasta bin contém um executável example file. Por bash: Vá para a pasta de saída e digite ./example. Se nenhum erro ocorrer, seus objetos compartilhados agora estão devidamente instalados e sua biblioteca está pronta para uso. Se o erro for ./example: erro ao carregar bibliotecas compartilhadas: libnanolib.so: não é possível abrir o objeto compartilhado file: Não existe tal file ou diretório, a instalação dos objetos compartilhados falhou. Neste caso, siga os próximos passos. 4. Crie uma nova pasta dentro de /usr/local/lib (direitos de administrador necessários). No bash, digite:
sudo mkdir /usr/local/lib/nanotec
5. Copie todos os objetos compartilhados do zip filepasta lib do:
instalar ./lib/*.so /usr/local/lib/nanotec/
6. Verifique o conteúdo da pasta de destino com:
ls -al /usr/local/lib/nanotec/
Deve listar o objeto compartilhado files da pasta lib. 7. Execute ldconfig nesta pasta:
sudo ldconfig /usr/local/lib/nanotec/
O example é implementado como um aplicativo CLI e fornece uma interface de menu. As entradas de menu são baseadas em contexto e serão habilitadas ou desabilitadas, dependendo do estado do contexto. Elas oferecem a você a possibilidade de selecionar e executar várias funções de biblioteca seguindo o fluxo de trabalho típico para lidar com um controlador: 1. Verifique o PC para hardware conectado (adaptadores) e liste-os. 2. Estabeleça conexão com um adaptador. 3. Examine o barramento para dispositivos de controlador conectados. 4. Conecte-se a um dispositivo.
Versão: documento 1.4.2 / NanoLib 1.3.0
10
5 Começando o exampo projeto
5. Teste uma ou mais funções da biblioteca: Ler/escrever de/para o dicionário de objetos do controlador, atualizar o firmware, carregar e executar um programa NanoJ, fazer o motor funcionar e ajustá-lo, configurar e usar o(s) registro(s)ampleitura.
6. Feche a conexão, primeiro com o dispositivo e depois com o adaptador.
Versão: documento 1.4.2 / NanoLib 1.3.0
11
Criando seu próprio projeto do Windows
Crie, compile e execute seu próprio projeto Windows para usar o NanoLib.
6.1 Importar NanoLib
Importe o cabeçalho NanoLib files e bibliotecas via MS Visual Studio.
1. Abra o Visual Studio. 2. Via Create new project > Console App C++ > Next: Selecione um tipo de projeto. 3. Nomeie seu projeto (aqui: NanolibTest) para criar uma pasta de projeto no Solution Explorer. 4. Selecione Finish. 5. Abra as janelas file explorer e navegue até a nova pasta do projeto criada. 6. Crie duas novas pastas, inc e lib. 7. Abra a pasta do pacote NanoLib. 8. De lá: Copie o cabeçalho files da pasta include para a pasta do seu projeto inc e todos os .lib e .dll
files para sua nova pasta de projeto lib. 9. Verifique sua pasta de projeto para a devida estrutura, por exemploampem:
pasta ect para estrutura devida:
. NanolibTest inc accessor_factory.hpp bus_hardware_id.hpp … od_index.hpp result_od_entry.hpp lib nanolibm_canopen.dll nanolib.dll … nanolib.lib NanolibTest.cpp NanolibTest.vcxproj NanolibTest.vcxproj.filters NanolibTest.vcxproj.user NanolibTest.sln
6.2 Configure seu projeto
Use o Solution Explorer no MS Visual Studio para configurar projetos NanoLib. Nota: Para a operação correta do NanoLib, selecione a configuração release (não debug!) nas configurações do projeto Visual C++; então construa e vincule o projeto com os tempos de execução VC dos redistribuíveis C++ [2022].
1. No Solution Explorer: Vá para a pasta do seu projeto (aqui: NanolibTest). 2. Clique na pasta para abrir o menu de contexto. 3. Selecione Propriedades. 4. Ative Todas as configurações e Todas as plataformas. 5. Selecione C/C++ e vá para Diretórios de inclusão adicionais. 6. Insira: $(ProjectDir)Nanolib/includes;%(AdditionalIncludeDirectories) 7. Selecione Linker e vá para Diretórios de biblioteca adicionais. 8. Insira: $(ProjectDir)Nanolib;%(AdditionalLibraryDirectories) 9. Estenda o Linker e selecione Entrada. 10. Vá para Dependências adicionais e insira: nanolib.lib;%(AdditionalDependencies) 11. Confirme via OK.
Versão: documento 1.4.2 / NanoLib 1.3.0
12
6 Criando seu próprio projeto do Windows
12. Vá para Configuração > C++ > Linguagem > Padrão de Linguagem > Padrão ISO C++17 e defina o padrão de linguagem como C++17 (/std:c++17).
6.3 Construa seu projeto
Crie seu projeto NanoLib no MS Visual Studio. 1. Abra o arquivo principal *.cpp file (aqui: nanolib_example.cpp) e edite o código, se necessário. 2. Selecione Build > Configuration Manager. 3. Altere Active solution platforms para x64. 4. Confirme via Close. 5. Selecione Build > Build solution. 6. Nenhum erro? Verifique se a saída da compilação relata corretamente:
1>—— Início limpo: Projeto: NanolibTest, Configuração: Depuração x64 —–========== Limpeza: 1 bem-sucedido, 0 falhou, 0 ignorado ==========
Versão: documento 1.4.2 / NanoLib 1.3.0
13
7 Criando seu próprio projeto Linux
7 Criando seu próprio projeto Linux
Crie, compile e execute seu próprio projeto Linux para usar o NanoLib. 1. No kit de instalação descompactado do NanoLib: Abra /nanotec_nanolib. 2. Encontre todos os objetos compartilhados no tar.gz file. 3. Selecione uma opção: Instalar cada biblioteca com um Makefile ou manualmente.
7.1 Instale os objetos compartilhados com Makefile
Usar Fazerfile com Linux Bash para instalar automaticamente todos os *.so padrão files. 1. Via Bash: Vá para a pasta que contém o makefile. 2. Copie os objetos compartilhados via:
sudo make install 3. Confirme via:
configuração ld
7.2 Instalar os objetos compartilhados manualmente
Use um Bash para instalar todos os *.so files do NanoLib manualmente. 1. Via Bash: Crie uma nova pasta dentro de /usr/local/lib. 2. Direitos de administrador necessários! Digite:
sudo mkdir /usr/local/lib/nanotec 3. Mude para a pasta do pacote de instalação descompactado. 4. Copie todos os objetos compartilhados da pasta lib via:
instalar ./nanotec_nanolib/lib/*.so /usr/local/lib/nanotec/ 5. Verifique o conteúdo da pasta de destino via:
ls -al /usr/local/lib/nanotec/ 6. Verifique se todos os objetos compartilhados da pasta lib estão listados. 7. Execute ldconfig nesta pasta via:
sudo ldconfig /usr/local/lib/nanotec/
7.3 Crie seu projeto
Com seus objetos compartilhados instalados: Crie um novo projeto para seu Linux NanoLib. 1. Via Bash: Crie uma nova pasta de projeto (aqui: NanoLibTest) via:
mkdir NanoLibTest cd NanoLibTest
2. Copie o cabeçalho files para uma pasta include (aqui: inc) via: mkdir inc cp / FILE IS>/nanotec_nanolib/inc/*.hpp inc
3. Crie um principal file (NanoLibTest.cpp) via: #include “accessor_factory.hpp” #include
Versão: documento 1.4.2 / NanoLib 1.3.0
14
7 Criando seu próprio projeto Linux
int main(){ nlc::NanoLibAccessor *acessador = getNanoLibAccessor();
nlc::ResultBusHwIds resultado = accessor->listAvailableBusHardware();
se(resultado.hasError()) { std::cout << resultado.getError() << std::endl; }
else{ std::cout << “Sucesso” << std::endl; }
excluir acessador; retornar 0; }
4. Verifique a pasta do seu projeto para obter a estrutura adequada:

.Teste NanoLib
inc accessor_factory.hpp bus_hardware_id.hpp … od_index.hpp resultado.hpp NanoLibTest.cpp
7.4 Compile e teste seu projeto
Deixe seu Linux NanoLib pronto para uso via Bash.
1. Via Bash: Compile o principal file através de:
g++ -Wall -Wextra -pedantic -I./inc -c NanoLibTest.cpp -o NanoLibTest
2. Vincule o executável via:
g++ -Wall -Wextra -pedantic -I./inc -o teste NanoLibTest.o L/usr/local/lib/nanotec -lnanolib -ldl
3. Execute o programa de teste via:
./teste
4. Verifique se o seu Bash reporta devidamente:
sucesso
Versão: documento 1.4.2 / NanoLib 1.3.0
15
8 Referência de classes/funções
8 Referência de classes/funções
Encontre aqui uma lista de classes de interface de usuário do NanoLib e suas funções de membro. A descrição típica de uma função inclui uma breve introdução, a definição da função e uma lista de parâmetros/retornos:
ExampleFunction() Informa resumidamente o que a função faz.
vazio virtual nlc::NanoLibAccessor::ExampleFunction (Param_a const e param_a, Param_b const e param_B)
Parâmetros param_a param_b
Retorna ResultadoVoid
Comentário adicional, se necessário. Comentário adicional, se necessário.
8.1 NanoLibAcessor
Classe de interface usada como ponto de entrada para o NanoLib. Um fluxo de trabalho típico é assim:
1. Comece verificando o hardware com NanoLibAccessor.listAvailableBusHardware (). 2. Defina as configurações de comunicação com BusHardwareOptions (). 3. Abra a conexão de hardware com NanoLibAccessor.openBusHardwareWithProtocol(). 4. Faça a varredura do barramento em busca de dispositivos conectados com NanoLibAccessor.scanDevices(). 5. Adicione um dispositivo com NanoLibAccessor.addDevice(). 6. Conecte-se ao dispositivo com NanoLibAccessor.connectDevice(). 7. Após finalizar a operação, desconecte o dispositivo com NanoLibAccessor.disconnectDevice(). 8. Remova o dispositivo com NanoLibAccessor.removeDevice(). 9. Feche a conexão de hardware com NanoLibAccessor.closeBusHardware().
NanoLibAccessor tem as seguintes funções de membro público:
listAvailableBusHardware () Utilize esta função para listar o hardware fieldbus disponível.
ResultBusHwIds virtuais nlc::NanoLibAccessor::listAvailableBusHardware ()
Retorna ResultBusHwIds
Fornece uma matriz de ID de fieldbus.
openBusHardwareWithProtocol () Use esta função para conectar hardware de barramento.
Resultado virtualVoid nlc::NanoLibAccessor::openBusHardwareWithProtocol (BusHardwareId const e busHwId, BusHardwareOptions const e busHwOpt)
Parâmetros busHwId busHwOpt
Retorna ResultadoVoid
Especifica o fieldbus a ser aberto. Especifica opções de abertura do fieldbus. Confirma que uma função void foi executada.
isBusHardwareOpen() Utilize esta função para verificar se sua conexão de hardware fieldbus está aberta.
Resultado virtualVoid nlc::NanoLibAccessor::openBusHardwareWithProtocol (const BusHardwareId e busHwId, const BusHardwareOptions e busHwOpt)
Versão: documento 1.4.2 / NanoLib 1.3.0
16
8 Referência de classes/funções
Parâmetros BusHardwareId Retorna verdadeiro
falso
Especifica cada fieldbus a ser aberto. O hardware está aberto. O hardware está fechado.
getProtocolSpecificAccessor() Use esta função para obter o objeto acessador específico do protocolo.
Resultado virtualVoid nlc::NanoLibAccessor::getProtocolSpecificAccessor (BusHardwareId const e busHwId)
Parâmetros busHwId Retorna ResultVoid
Especifica o fieldbus para o qual obter o acessador. Confirma que uma função void foi executada.
getProfinetDCP() Utilize esta função para retornar uma referência à interface Profinet DCP.
ProfinetDCP virtual e getProfinetDCP ()
Retorna ProfinetDCP
pegaSamplerInterface() Use esta função para obter uma referência ao sampler interface.
S virtualamplerInterface e obterSamplerInterface()
Retorna SamplerInterface
Refere-se ao sampler classe de interface.
setBusState() Use esta função para definir o estado específico do protocolo de barramento.
virtual ResultVoid nlc::NanoLibAccessor::setBusState (const BusHardwareId e busHwId, const std::string e estado)
Parâmetros estado busHwId
Retorna ResultadoVoid
Especifica o fieldbus a ser aberto. Atribui um estado específico do barramento como um valor de string. Confirma que uma função void foi executada.
scanDevices() Use esta função para procurar dispositivos na rede.
virtual ResultDeviceIds nlc::NanoLibAccessor::scanDevices (const BusHardwareId e busHwId, NlcScanBusCallback* retorno de chamada)
Parâmetros retorno de chamada busHwId
Retorna ResultDeviceIds IOError
Especifica o fieldbus a ser varrido. Rastreador de progresso NlcScanBusCallback. Fornece uma matriz de ID de dispositivo. Informa que um dispositivo não foi encontrado.
Versão: documento 1.4.2 / NanoLib 1.3.0
17
8 Referência de classes/funções
adicionarDispositivo()
Use esta função para adicionar um dispositivo de barramento descrito por deviceId à lista de dispositivos internos do NanoLib e retornar deviceHandle para ele.
virtual ResultDeviceHandle nlc::NanoLibAccessor::addDevice (DeviceId const e deviceId)
Parâmetros deviceId Retorna ResultDeviceHandle
Especifica o dispositivo a ser adicionado à lista. Fornece uma alça de dispositivo.
connectDevice() Use esta função para conectar um dispositivo por deviceHandle.
Resultado virtualVoid nlc::NanoLibAccessor::connectDevice (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultVoid
Erro IO
Especifica a qual dispositivo de barramento o NanoLib se conecta. Confirma que uma função void foi executada. Informa que um dispositivo não foi encontrado.
getDeviceName() Use esta função para obter o nome de um dispositivo por deviceHandle.
virtual ResultString nlc::NanoLibAccessor::getDeviceName (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultString
Especifica para qual dispositivo de barramento o NanoLib recebe o nome. Fornece nomes de dispositivos como uma string.
getDeviceProductCode() Use esta função para obter o código do produto de um dispositivo por deviceHandle.
virtual ResultInt nlc::NanoLibAccessor::getDeviceProductCode (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultInt
Especifica para qual dispositivo de barramento o NanoLib obtém o código do produto. Fornece códigos de produto como um número inteiro.
getDeviceVendorId() Use esta função para obter o ID do fornecedor do dispositivo por deviceHandle.
virtual ResultInt nlc::NanoLibAccessor::getDeviceVendorId (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultInt
RecursoIndisponível
Especifica para qual dispositivo de barramento o NanoLib obtém o ID do fornecedor. Fornece IDs de fornecedores como um número inteiro. Informa que nenhum dado foi encontrado.
Versão: documento 1.4.2 / NanoLib 1.3.0
18
8 Referência de classes/funções
getDeviceId() Use esta função para obter o ID de um dispositivo específico da lista interna do NanoLib.
virtual ResultDeviceId nlc::NanoLibAccessor::getDeviceId (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultDeviceId
Especifica para qual dispositivo de barramento o NanoLib obtém o ID do dispositivo. Fornece um ID de dispositivo.
getDeviceIds() Use esta função para obter o ID de todos os dispositivos da lista interna do NanoLib.
ResultDeviceIds virtuais nlc::NanoLibAccessor::getDeviceIds ()
Retorna ResultDeviceIds
Fornece uma lista de IDs de dispositivos.
getDeviceUid() Use esta função para obter o ID exclusivo de um dispositivo (96 bits/12 bytes) por deviceHandle.
virtual ResultArrayByte nlc::NanoLibAccessor::getDeviceUid (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultArrayByte
RecursoIndisponível
Especifica para qual dispositivo de barramento o NanoLib obtém o ID exclusivo. Fornece IDs exclusivos como uma matriz de bytes. Informa que nenhum dado foi encontrado.
getDeviceSerialNumber() Use esta função para obter o número de série de um dispositivo por deviceHandle.
virtual ResultString NanolibAccessor::getDeviceSerialNumber (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultString
RecursoIndisponível
Especifica para qual dispositivo de barramento o NanoLib obtém o número de série. Fornece números de série como uma string. Informa que nenhum dado foi encontrado.
getDeviceHardwareGroup() Use esta função para obter o grupo de hardware de um dispositivo de barramento por deviceHandle.
virtual ResultDeviceId nlc::NanoLibAccessor::getDeviceHardwareGroup (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultInt
Especifica para qual dispositivo de barramento o NanoLib obtém o grupo de hardware.
Fornece grupos de hardware como um número inteiro.
getDeviceHardwareVersion () Use esta função para obter a versão de hardware de um dispositivo de barramento por deviceHandle.
virtual ResultDeviceId nlc::NanoLibAccessor::getDeviceHardwareVersion (DeviceHandle const deviceHandle)
Versão: documento 1.4.2 / NanoLib 1.3.0
19
8 Referência de classes/funções
Parâmetros deviceHandle
Devoluções
Recurso ResultStringIndisponível
Especifica para qual dispositivo de barramento o NanoLib obtém a versão de hardware. Fornece nomes de dispositivos como uma string. Informa que nenhum dado foi encontrado.
getDeviceFirmwareBuildId () Use esta função para obter o ID de compilação de firmware de um dispositivo de barramento por deviceHandle.
virtual ResultDeviceId nlc::NanoLibAccessor::getDeviceFirmwareBuildId (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultString
Especifica para qual dispositivo de barramento o NanoLib obtém o ID de compilação do firmware.
Fornece nomes de dispositivos como uma string.
getDeviceBootloaderVersion () Use esta função para obter a versão do bootloader de um dispositivo de barramento por deviceHandle.
virtual ResultInt nlc::NanoLibAccessor::getDeviceBootloaderVersion (DeviceHandle const deviceHandle)
Parâmetros deviceHandle
Devoluções
Recurso ResultIntIndisponível
Especifica para qual dispositivo de barramento o NanoLib obtém a versão do bootloader. Fornece versões do bootloader como um número inteiro. Informa que nenhum dado foi encontrado.
getDeviceBootloaderBuildId () Use esta função para obter o ID de compilação do bootloader de um dispositivo de barramento por deviceHandle.
virtual ResultDeviceId nlc::NanoLibAccessor:: (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultString
Especifica para qual dispositivo de barramento o NanoLib obtém o ID de compilação do bootloader.
Fornece nomes de dispositivos como uma string.
rebootDevice() Use esta função para reinicializar o dispositivo por deviceHandle.
Resultado virtualVoid nlc::NanoLibAccessor::rebootDevice (const DeviceHandle deviceHandle)
Parâmetros deviceHandle Retorna ResultVoid
Especifica o fieldbus a ser reinicializado. Confirma que uma função void foi executada.
getDeviceState() Use esta função para obter o estado específico do protocolo do dispositivo.
virtual ResultString nlc::NanoLibAccessor::getDeviceState (DeviceHandle const deviceHandle)
Parâmetros deviceHandle
Especifica para qual dispositivo de barramento o NanoLib obtém o estado.
Versão: documento 1.4.2 / NanoLib 1.3.0
20
8 Referência de classes/funções
Retorna ResultString
Fornece nomes de dispositivos como uma string.
setDeviceState() Use esta função para definir o estado específico do protocolo do dispositivo.
virtual ResultVoid nlc::NanoLibAccessor::setDeviceState (const DeviceHandle deviceHandle, const std::string & estado)
Parâmetros estado deviceHandle
Retorna ResultadoVoid
Especifica para qual dispositivo de barramento o NanoLib define o estado. Atribui um estado específico do barramento como um valor de string. Confirma que uma função void foi executada.
obterEstadoDeConexão()
Use esta função para obter o último estado de conexão conhecido de um dispositivo específico por deviceHandle (= Disconnected, Connected, ConnectedBootloader)
virtual ResultConnectionState nlc::NanoLibAccessor::getConnectionState (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultConnectionState
Especifica para qual dispositivo de barramento o NanoLib obtém o estado da conexão.
Fornece um estado de conexão (= Disconnected, Connected, ConnectedBootloader).
verificarEstadoDeConexão()
Somente se o último estado conhecido não foi Desconectado: use esta função para verificar e possivelmente atualizar o estado de conexão de um dispositivo específico por deviceHandle e testando diversas operações específicas do modo.
virtual ResultConnectionState nlc::NanoLibAccessor::checkConnectionState (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultConnectionState
Especifica qual dispositivo de barramento o NanoLib verifica o estado da conexão.
Fornece um estado de conexão (= não desconectado).
atribuaObjectDictionary () Use esta função manual para atribuir um dicionário de objetos (OD) a deviceHandle por conta própria.
Dicionário de Objetos de Resultado virtual nlc::NanoLibAccessor::assignObjectDictionary (DeviceHandle const deviceHandle, ObjectDictionary const & objectDictionary)
Parâmetros deviceHandle objectDictionary
Retorna ResultObjectDictionary
Especifica a qual dispositivo de barramento NanoLib atribui o OD. Mostra as propriedades de um dicionário de objetos.
autoAssignObjectDictionary()
Use esse automatismo para permitir que o NanoLib atribua um dicionário de objetos (OD) ao deviceHandle. Ao encontrar e carregar um OD adequado, o NanoLib o atribui automaticamente ao dispositivo. Nota: Se um OD compatível já estiver carregado na biblioteca de objetos, o NanoLib irá usá-lo automaticamente sem verificar o diretório enviado.
virtual ResultObjectDictionary nlc::NanoLibAccessor::autoAssignObjectDictionary (DeviceHandle const deviceHandle, const std::string & dictionaryLocationPath)
Versão: documento 1.4.2 / NanoLib 1.3.0
21
8 Referência de classes/funções
Parâmetros deviceHandle
Devoluções
dicionáriosLocationPath ResultObjectDictionary
Especifica para qual dispositivo de barramento o NanoLib deve procurar automaticamente ODs adequados. Especifica o caminho para o diretório OD. Mostra as propriedades de um dicionário de objetos.
obterDicionárioObjetoAtribuído()
Use esta função para obter o dicionário de objetos atribuído a um dispositivo por deviceHandle.
virtual ResultObjectDictionary nlc::NanoLibAccessor::getAssignedObjectDictionary (DeviceHandle const dispositivo
Lidar)
Parâmetros deviceHandle Retorna ResultObjectDictionary
Especifica para qual dispositivo de barramento NanoLib obtém o OD atribuído. Mostra as propriedades de um dicionário de objetos.
getObjectDictionaryLibrary() Esta função retorna uma referência OdLibrary.
Biblioteca Od virtual& nlc::NanoLibAccessor::getObjectDictionaryLibrary ()
Retorna OdLibrary&
Abre toda a biblioteca OD e seus dicionários de objetos.
setLoggingLevel () Use esta função para definir o detalhamento de log necessário (e log file tamanho). O nível padrão é Informações.
virtual void nlc::NanoLibAccessor::setLoggingLevel (nível LogLevel)
Nível de parâmetros
Os seguintes detalhes de log são possíveis:
0 = Rastreamento 1 = Depuração 2 = Informações 3 = Avisar 4 = Erro 5 = Crítico 6 = Desligado
Nível mais baixo (maior log file); registra qualquer detalhe viável, além de início/parada de software. Registra informações de depuração (= resultados provisórios, conteúdo enviado ou recebido, etc.) Nível padrão; registra mensagens informativas. Registra problemas que ocorreram, mas não interrompe o algoritmo atual. Registra apenas problemas graves que interromperam o algoritmo. Nível mais alto (menor log file); desativa o logon; nenhum outro registro. Nenhum registro.
definirLoggingCallback()
Use esta função para definir um ponteiro de retorno de chamada de registro e um módulo de registro (= biblioteca) para esse retorno de chamada (não para o registrador em si).
virtual void nlc::NanoLibAccessor::setLoggingCallback (NlcLoggingCallback* retorno de chamada, const nlc::LogModule & logModule)
Parâmetros *callback logModule
Define um ponteiro de retorno de chamada. Ajusta o retorno de chamada (não o logger!) para sua biblioteca.
0 = NanolibCore 1 = NanolibCANopen 2 = NanolibModbus 3 = NanolibEtherCAT
Ativa um retorno de chamada somente para o núcleo do NanoLib. Ativa um retorno de chamada somente para CANopen. Ativa um retorno de chamada somente para Modbus. Ativa um retorno de chamada somente para EtherCAT.
Versão: documento 1.4.2 / NanoLib 1.3.0
22
8 Referência de classes/funções
4 = NanolibRest 5 = NanolibUSB
Ativa um callback REST-only. Ativa um callback USB-only.
unsetLoggingCallback () Use esta função para cancelar um ponteiro de retorno de chamada de registro.
vazio virtual nlc::NanoLibAccessor::unsetLoggingCallback ()
readNumber() Use esta função para ler um valor numérico do dicionário de objetos.
virtual ResultInt nlc::NanoLibAccessor::readNumber (const DeviceHandle deviceHandle, const OdIndex odIndex)
Parâmetros deviceHandle odIndex
Retorna ResultadoInt
Especifica de qual dispositivo de barramento o NanoLib lê. Especifica o (sub)índice do qual ler. Fornece um valor numérico não interpretado (podem ser valores de bits assinados, não assinados e fixos de 16.16 bits).
readNumberArray() Use esta função para ler matrizes numéricas do dicionário de objetos.
virtual ResultArrayInt nlc::NanoLibAccessor::readNumberArray (const DeviceHandle deviceHandle, const uint16_t índice)
Parâmetros deviceHandle index
Retorna ResultadoArrayInt
Especifica de qual dispositivo de barramento o NanoLib lê. Índice de objeto de matriz. Fornece uma matriz inteira.
readBytes() Use esta função para ler bytes arbitrários (dados de objetos de domínio) do dicionário de objetos.
virtual ResultArrayByte nlc::NanoLibAccessor::readBytes (const DeviceHandle deviceHandle, const OdIndex odIndex)
Parâmetros deviceHandle odIndex
Retorna ResultadoArrayByte
Especifica de qual dispositivo de barramento o NanoLib lê. Especifica o (sub)índice do qual ler. Fornece uma matriz de bytes.
readString() Use esta função para ler strings do diretório de objetos.
virtual ResultString nlc::NanoLibAccessor::readString (const DeviceHandle deviceHandle, const OdIndex odIndex)
Parâmetros deviceHandle odIndex
Retorna ResultString
Especifica de qual dispositivo de barramento o NanoLib lê. Especifica o (sub)índice do qual ler. Fornece nomes de dispositivos como uma string.
Versão: documento 1.4.2 / NanoLib 1.3.0
23
8 Referência de classes/funções
writeNumber() Use esta função para escrever valores numéricos no diretório de objetos.
virtual ResultVoid nlc::NanoLibAccessor::writeNumber (const DeviceHandle deviceHandle, int64_t valor, const OdIndex odIndex, unsigned int bitLength)
Parâmetros deviceHandle valor odIndex bitLength
Retorna ResultadoVoid
Especifica em qual dispositivo de barramento o NanoLib grava. O valor não interpretado (pode ser assinado, não assinado, correção 16.16). Especifica o (sub)índice do qual ler. Comprimento em bits. Confirma que uma função void foi executada.
writeBytes() Use esta função para gravar bytes arbitrários (dados do objeto de domínio) no diretório do objeto.
Resultado virtualVoid nlc::NanoLibAccessor::writeBytes (const DeviceHandle deviceHandle, const std::vector & dados, const OdIndex (odIndex)
Parâmetros deviceHandle dados odIndex
Retorna ResultadoVoid
Especifica em qual dispositivo de barramento o NanoLib grava. Vetor/matriz de bytes. Especifica o (sub)índice do qual ler. Confirma que uma função void foi executada.
carregarFirmware ()
Use esta função para atualizar o firmware do seu controlador.
Resultado virtualVoid nlc::NanoLibAccessor::uploadFirmware (const DeviceHandle deviceHandle, const std::vector & fwData, NlcDataTransferCallback* retorno de chamada)
Parâmetros deviceHandle fwData NlcDataTransferCallback
Retorna ResultadoVoid
Especifica qual dispositivo de barramento o NanoLib atualiza. Matriz contendo dados de firmware. Um rastreador de progresso de dados. Confirma que uma função void foi executada.
carregarFirmwareDeFile ()
Use esta função para atualizar o firmware do seu controlador carregando seu file.
Resultado virtualVoid nlc::NanoLibAccessor::uploadFirmwareFromFile (const DeviceHandle deviceHandle, const std::string & absolutoFileCaminho, retorno de chamada NlcDataTransferCallback*)
Parâmetros deviceHandle absolutoFileCaminho NlcDataTransferCallback
Retorna ResultadoVoid
Especifica qual dispositivo de barramento o NanoLib atualiza. Caminho para file contendo dados de firmware (std::string). Um rastreador de progresso de dados. Confirma que uma função void foi executada.
Versão: documento 1.4.2 / NanoLib 1.3.0
24
8 Referência de classes/funções
carregarBootloader ()
Use esta função para atualizar o bootloader do seu controlador.
Resultado virtualVoid nlc::NanoLibAccessor::uploadBootloader (const DeviceHandle deviceHandle, const std::vector & btData, NlcDataTransferCallback* retorno de chamada)
Parâmetros deviceHandle btData NlcDataTransferCallback
Retorna ResultadoVoid
Especifica qual dispositivo de barramento o NanoLib atualiza. Array contendo dados do bootloader. Um rastreador de progresso de dados. Confirma que uma função void foi executada.
carregarBootloaderFromFile ()
Use esta função para atualizar o bootloader do seu controlador carregando seu file.
Resultado virtualVoid nlc::NanoLibAccessor::uploadBootloaderFromFile (const DeviceHandle deviceHandle, const std::string & bootloaderAbsoluteFileCaminho, retorno de chamada NlcDataTransferCallback*)
Parâmetros deviceHandle bootloaderAbsoluteFileCaminho NlcDataTransferCallback
Retorna ResultadoVoid
Especifica qual dispositivo de barramento o NanoLib atualiza. Caminho para file contendo dados do bootloader (std::string). Um rastreador de progresso de dados. Confirma que uma função void foi executada.
carregarBootloaderFirmware ()
Use esta função para atualizar o bootloader e o firmware do seu controlador.
Resultado virtualVoid nlc::NanoLibAccessor::uploadBootloaderFirmware (const DeviceHandle deviceHandle, const std::vector & btData, const std::vetor & fwData, NlcDataTransferCallback* retorno de chamada)
Parâmetros deviceHandle btData fwData NlcDataTransferCallback
Retorna ResultadoVoid
Especifica qual dispositivo de barramento o NanoLib atualiza. Array contendo dados do bootloader. Matriz contendo dados de firmware. Um rastreador de progresso de dados. Confirma que uma função void foi executada.
carregarBootloaderFirmwareFromFile ()
Use esta função para atualizar o bootloader e firmware do seu controlador fazendo upload do files.
Resultado virtualVoid nlc::NanoLibAccessor::uploadBootloaderFirmwareFromFile (const DeviceHandle deviceHandle, const std::string & bootloaderAbsoluteFileCaminho, const std::string e absolutoFileCaminho, retorno de chamada NlcDataTransferCallback*)
Parâmetros deviceHandle bootloaderAbsoluteFileCaminho absolutoFileCaminho NlcDataTransferCallback
Retorna ResultadoVoid
Especifica qual dispositivo de barramento o NanoLib atualiza. Caminho para file contendo dados do bootloader (std::string). Caminho para file contendo dados de firmware (uint8_t). Um rastreador de progresso de dados. Confirma que uma função void foi executada.
Versão: documento 1.4.2 / NanoLib 1.3.0
25
8 Referência de classes/funções
carregarNanoJ ()
Use esta função pública para carregar o programa NanoJ no seu controlador.
Resultado virtualVoid nlc::NanoLibAccessor::uploadNanoJ (DeviceHandle const deviceHandle, std::vector const & vmmData, NlcDataTransferCallback* retorno de chamada)
Parâmetros deviceHandle vmmData NlcDataTransferCallback
Retorna ResultadoVoid
Especifica para qual dispositivo de barramento o NanoLib faz upload. Matriz contendo dados NanoJ. Um rastreador de progresso de dados. Confirma que uma função void foi executada.
carregarNanoJFromFile ()
Use esta função pública para carregar o programa NanoJ no seu controlador, carregando o file.
Resultado virtualVoid nlc::NanoLibAccessor::uploadNanoJFromFile (const DeviceHandle deviceHandle, const std::string & absolutoFileCaminho, retorno de chamada NlcDataTransferCallback*)
Parâmetros deviceHandle absolutoFileCaminho NlcDataTransferCallback
Retorna ResultadoVoid
Especifica para qual dispositivo de barramento o NanoLib faz upload. Caminho para file contendo dados NanoJ (std::string). Um rastreador de progresso de dados. Confirma que uma função void foi executada.
desconectaDevice() Use esta função para desconectar seu dispositivo por deviceHandle.
Resultado virtualVoid nlc::NanoLibAccessor::disconnectDevice (DeviceHandle const deviceHandle)
Parâmetros deviceHandle Retorna ResultVoid
Especifica de qual dispositivo de barramento o NanoLib se desconecta. Confirma que uma função void foi executada.
removeDevice() Use esta função para remover seu dispositivo da lista interna de dispositivos do NanoLib.
Resultado virtualVoid nlc::NanoLibAccessor::removeDevice (const DeviceHandle deviceHandle)
Parâmetros deviceHandle Retorna ResultVoid
Especifica qual dispositivo de barramento o NanoLib remove da lista. Confirma que uma função void foi executada.
closeBusHardware() Utilize esta função para desconectar do seu hardware fieldbus.
Resultado virtualVoid nlc::NanoLibAccessor::closeBusHardware (BusHardwareId const e busHwId)
Parâmetros busHwId Retorna ResultVoid
Especifica o fieldbus do qual se desconectar. Confirma que uma função void foi executada.
Versão: documento 1.4.2 / NanoLib 1.3.0
26
8 Referência de classes/funções
8.2 ID de hardware do barramento
Use esta classe para identificar um hardware de barramento individualmente ou para distinguir diferentes hardwares de barramento. Esta classe (sem funções setter para serem imutáveis desde a criação) também contém informações sobre:
Hardware (= nome do adaptador, adaptador de rede etc.) Protocolo a ser usado (= Modbus TCP, CANopen etc.) Especificador de hardware do barramento (= nome da porta serial, nome amigável MAC
endereço etc.)
BusHardwareId () [1/3] Construtor que cria um novo objeto de ID de hardware de barramento.
nlc::BusHardwareId::BusHardwareId (std::string const & busHardware_, std::string const & protocol_, std::string const & hardwareSpecifier_, std::string const & name_)
Parâmetros busHardware_ protocol_ hardwareSpecifier_ extraHardwareSpecifier_ name_
Tipo de hardware (= ZK-USB-CAN-1 etc.). Protocolo de comunicação de barramento (= CANopen etc.). O especificador de um hardware (= COM3 etc.). O especificador extra do hardware (por exemplo, informações de localização USB). Um nome amigável (= AdapterName (Porta) etc.).
BusHardwareId () [2/3] Construtor que cria um novo objeto de ID de hardware de barramento, com a opção de um especificador de hardware extra.
nlc::BusHardwareId::BusHardwareId (std::string const & busHardware_, std::string const & protocol_, std::string const & hardwareSpecifier_, std::string const & extraHardwareSpecifier_, std::string const & name_)
Parâmetros busHardware_ protocol_ hardwareSpecifier_ extraHardwareSpecifier_ name_
Tipo de hardware (= ZK-USB-CAN-1 etc.). Protocolo de comunicação de barramento (= CANopen etc.). O especificador de um hardware (= COM3 etc.). O especificador extra do hardware (por exemplo, informações de localização USB). Um nome amigável (= AdapterName (Porta) etc.).
BusHardwareId () [3/3] Construtor que copia um busHardwareId existente.
nlc::BusHardwareId::BusHardwareId (BusHardwareId const &)
nlc::BusHardwareId::BusHardwareId (BusHardwareId const &)
Parâmetros busHardwareId
Nomeia o ID de hardware do barramento do qual copiar.
equals() Compara um novo ID de hardware de barramento com os existentes.
bool nlc::BusHardwareId::equals (BusHardwareId const & outro) const
Parâmetros outros Retorna verdadeiro
Outro objeto da mesma classe. Se ambos forem iguais em todos os valores.
Versão: documento 1.4.2 / NanoLib 1.3.0
27
8 Referência de classes/funções
falso
Se os valores forem diferentes.
getBusHardware () Lê a string do hardware do barramento.
std::string nlc::BusHardwareId::getBusHardware () const
Retorna string
getHardwareSpecifier () Lê a string do especificador de hardware do barramento (= nome da rede etc.).
std::string nlc::BusHardwareId::getHardwareSpecifier () const
Retorna string
getExtraHardwareSpecifier () Lê a string do especificador de hardware extra do barramento (= endereço MAC etc.).
std::string nlc::BusHardwareId::getExtraHardwareSpecifier() const
Retorna string
getName () Lê o nome amigável do hardware do barramento.
std::string nlc::BusHardwareId::getName () const
Retorna string
getProtocol () Lê a string do protocolo de barramento.
std::string nlc::BusHardwareId::getProtocol () const
Retorna string
toString () Retorna o ID do hardware do barramento como uma string.
std::string nlc::BusHardwareId::toString () const
Retorna string
8.3 Opções de hardware de barramento
Encontre nesta classe, em uma lista de strings chave-valor, todas as opções necessárias para abrir um hardware de barramento.
Versão: documento 1.4.2 / NanoLib 1.3.0
28
8 Referência de classes/funções
BusHardwareOptions () [1/2] Constrói um novo objeto de opção de hardware de barramento.
nlc::BusHardwareOptions::BusHardwareOptions () Use a função addOption () para adicionar pares chave-valor.
BusHardwareOptions () [2/2] Constrói um novo objeto de opções de hardware de barramento com o mapa de valores-chave já instalado.
nlc::OpçõesDeHardwareDeBus::OpçõesDeHardwareDeBus (std::mapa const & opções)
Opções de parâmetros
Um mapa com opções de operação do hardware do barramento.
addOption() Cria chaves e valores adicionais.
void nlc::BusHardwareOptions::addOption (std::string const & chave, std::string const & valor)
Valor-chave dos parâmetros
Example: BAUD_RATE_OPTIONS_NAME, veja bus_hw_options_ defaults
Examparquivo: BAUD_RATE_1000K, consulte bus_hw_options_defaults
equals() Compara o BusHardwareOptions com os existentes.
bool nlc::BusHardwareOptions::equals (BusHardwareOptions const & outro) const
Parâmetros outros Retorna verdadeiro
falso
Outro objeto da mesma classe. Se o outro objeto tiver exatamente as mesmas opções. Se o outro objeto tiver chaves ou valores diferentes.
getOptions() Lê todos os pares de valores-chave adicionados.
std::mapa nlc::BusHardwareOptions::getOptions () const
Retorna mapa de strings
toString() Retorna todas as chaves/valores como uma string.
std::string nlc::BusHardwareId::toString () const
Retorna string
8.4 BusHwOptionsPadrão
Esta classe de opções de configuração padrão possui os seguintes atributos públicos:
Versão: documento 1.4.2 / NanoLib 1.3.0
29
8 Referência de classes/funções
const CanBus const Serial const RESTfulBus const EtherCATBus
canBus = CanBus () serial = Serial () restfulBus = RESTfulBus() ethercatBus = EtherCATBus()
8.5 Taxa CanBaud
Estrutura que contém taxas de transmissão do barramento CAN nos seguintes atributos públicos:
const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string
BAUD_RATE_1000K = “1000k” BAUD_RATE_800K = “800k” BAUD_RATE_500K = “500k” BAUD_RATE_250K = “250k” BAUD_RATE_125K = “125k” BAUD_RATE_100K = “100k” BAUD_RATE_50K = “50k BAUD_R” ATE_20K = “20k” BAUD_RATE_10K = “10k” BAUD_RATE_5K = “5k”
8.6 CanBus
Classe de opções de configuração padrão com os seguintes atributos públicos:
const std::string const TaxaDeBauds const Ixxat
BAUD_RATE_OPTIONS_NAME = “taxa de transmissão do adaptador pode” baudRate = CanBaudRate () ixxat = Ixxat ()
8.7 CanOpenNmtService
Para o serviço NMT, esta estrutura contém os estados CANopen NMT como valores de string nos seguintes atributos públicos:
const std::string const std::string const std::string const std::string const std::string
START = “START” STOP = “STOP” PRE_OPERATIONAL = “PRE_OPERATIONAL” RESET = “RESET” RESET_COMMUNICATION = “RESET_COMMUNICATION”
8.8 CanOpenNmtState
Esta estrutura contém os estados CANopen NMT como valores de string nos seguintes atributos públicos:
const std::string const std::string const std::string const std::string const std::string
STOPPED = “STOPPED” PRE_OPERATIONAL = “PRE_OPERATIONAL” OPERATIONAL = “OPERATIONAL” INICIALIZAÇÃO = “INITIALIZATION” UNKNOWN = “UNKNOWN”
8.9 Estrutura EtherCATBus
Esta estrutura contém as opções de configuração da comunicação EtherCAT nos seguintes atributos públicos:
Versão: documento 1.4.2 / NanoLib 1.3.0
30
8 Referência de classes/funções
const std::string NETWORK_FIRMWARE_STATE_OP- Estado da rede tratado como modo de firmware. Aceitável
TION_NAME = “Estado do Firmware da Rede”
valores (padrão = PRE_OPERACIONAL):
EtherCATState::PRE_OPERATIONAL EtherCATState::SAFE_OPERATIONAL EtherCATState::OPERATIONAL
const std::string ESTADO_FIRMWARE_DE_REDE_PADRÃO = “PRÉ_OPERACIONAL”
const std::string EXCLUSIVE_LOCK_TIMEOUT_OP - Tempo limite em milissegundos para adquirir bloqueio exclusivo em
TION_NAME = “Tempo limite de bloqueio compartilhado”
a rede (padrão = 500 ms).
const não assinado int DEFAULT_EXCLUSIVE_LOCK_TIMEOUT = “500”
const std::string SHARED_LOCK_TIMEOUT_OPTION_ Tempo limite em milissegundos para adquirir bloqueio compartilhado em
NOME = “Tempo limite de bloqueio compartilhado”
a rede (padrão = 250 ms).
const não assinado int DEFAULT_SHARED_LOCK_TIMEOUT = “250”
const std::string READ_TIMEOUT_OPTION_NAME = Tempo limite em milissegundos para uma operação de leitura (padrão
“Tempo limite de leitura”
= 700 ms).
const não assinado int DEFAULT_READ_TIMEOUT = “700”
const std::string WRITE_TIMEOUT_OPTION_NAME = Tempo limite em milissegundos para uma operação de gravação (padrão
“Tempo limite de gravação”
= 200 ms).
const não assinado int DEFAULT_WRITE_TIMEOUT = “200”
const std::string READ_WRITE_ATTEMPTS_OPTION_ Máximo de tentativas de leitura ou escrita (valores diferentes de zero
NOME = “Tentativas de leitura/escrita”
apenas; padrão = 5).
const não assinado int DEFAULT_READ_WRITE_ATTEMPTS = “5”
const std::string CHANGE_NETWORK_STATE_ATTEMPTS_OPTION_NAME = “Tentativas de alteração do estado da rede”
Número máximo de tentativas de alteração do estado da rede (somente valores diferentes de zero; padrão = 10).
const não assinado int DEFAULT_CHANGE_NETWORK_ STATE_ATTEMPTS = “10”
const std::string PDO_IO_ENABLED_OPTION_NAME Habilita ou desabilita o processamento PDO para entrada digital /
= “PDO IO habilitado”
saídas (“Verdadeiro” ou “Falso” apenas; padrão = “Verdadeiro”).
const std::string DEFAULT_PDO_IO_ENABLED = “Verdadeiro”
8.10 Estrutura EtherCATState
Esta estrutura contém os estados do escravo/rede EtherCAT como valores de string nos seguintes atributos públicos. Nota: O estado padrão ao ligar é PRE_OPERATIONAL; NanoLib não pode fornecer nenhum estado “OPERACIONAL” confiável em um sistema operacional que não seja em tempo real:
const std::string const std::string const std::string const std::string const std::string const std::string
NENHUMA = “NENHUMA” INIT = “INIT” PRE_OPERATIONAL = “PRE_OPERATIONAL” BOOT = “BOOT” SAFE_OPERATIONAL = “SAFE_OPERATIONAL” OPERATIONAL = “OPERATIONAL”
Versão: documento 1.4.2 / NanoLib 1.3.0
31
8 Referência de classes/funções
8.11 Ixxat
Esta estrutura contém todas as informações do Ixxat usb-to-can nos seguintes atributos públicos:
const std::string
ADAPTER_BUS_NUMBER_OPTIONS_NAME = “número do barramento do adaptador ixxat”
const IxxatAdapterBusNumber adaptadorBusNumber = IxxatAdapterBusNumber ()
8.12 IxxatAdapterBusNumber
Esta estrutura contém o número do barramento para o Ixxat usb-to-can nos seguintes atributos públicos:
const std::string const std::string const std::string const std::string
NÚMERO_BUS_0_PADRÃO = “0” NÚMERO_BUS_1 = “1” NÚMERO_BUS_2 = “2” NÚMERO_BUS_3 = “3”
8.13 Picos
Esta estrutura contém todas as informações do Peak usb-to-can nos seguintes atributos públicos:
const std::string
ADAPTER_BUS_NUMBER_OPTIONS_NAME = “número de pico do barramento do adaptador”
const PeakAdapterBusNumber adapterBusNumber = PeakAdapterBusNumber ()
8.14 Número do barramento do adaptador de pico
Esta estrutura contém o número do barramento para o Peak usb-to-can nos seguintes atributos públicos:
const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string
NÚMERO_BUS_1_PADRÃO = std::para_string (PCAN_USBBUS1) NÚMERO_BUS_2 = std::para_string (PCAN_USBBUS2) NÚMERO_BUS_3 = std::para_string (PCAN_USBBUS3) NÚMERO_BUS_4 = std::para_string (PCAN_USBBUS4) NÚMERO_BUS_5 = std::para_string (PCAN_USBBUS5) NÚMERO_BUS_6 = std::para_string (PCAN_USBBUS6) NÚMERO_BUS_7 = std::para_string (PCAN_USBBUS7) NÚMERO_BUS_8 = std::para_string (PCAN_USBBUS8) NÚMERO_BUS_9 = std::para_string (PCAN_USBBUS9) NÚMERO_BUS_10 = std::para_string (PCAN_USBBUS10) NÚMERO_BUS_11 = std::para_string (PCAN_USBBUS11) NÚMERO_BUS_12 = std::para_string (PCAN_USBBUS12) NÚMERO_BUS_13 = std::para_string (PCAN_USBBUS13) NÚMERO_BUS_14 = std::para_string (PCAN_USBBUS14) NÚMERO_BUS_15 = std::para_string (PCAN_USBBUS15) NÚMERO_BUS_16 = std::para_string (PCAN_USBBUS16)
8.15 DeviceHandle
Esta classe representa um identificador para controlar um dispositivo em um barramento e possui as seguintes funções de membro público.
DeviceHandle () DeviceHandle (identificador uint32_t)
Versão: documento 1.4.2 / NanoLib 1.3.0
32
8 Referência de classes/funções
equals () Compara-se a um determinado identificador de dispositivo.
bool é igual a (DeviceHandle const outro) const (uint32_t handle)
toString() Retorna uma representação em string do identificador do dispositivo.
std::string toString () const
get() Retorna o identificador do dispositivo.
uint32_t obter () const
8.16 ID do dispositivo
Use esta classe (não imutável desde a criação) para identificar e distinguir dispositivos em um barramento:
Identificador do adaptador de hardware
Identificador do dispositivo
Descrição
O significado dos valores de ID/descrição do dispositivo depende do barramento. Para examparquivo, um barramento CAN pode usar o ID inteiro.
DeviceId() [1/3] Constrói um novo objeto de ID de dispositivo.
nlc::DeviceId::DeviceId (BusHardwareId const & busHardwareId_, unsigned int deviceId_, std::string const & description_)
Parâmetros busHardwareId_ deviceId_ description_
Identificador do ônibus. Um índice; sujeito ao barramento (= ID do nó CANopen etc.). Uma descrição (pode estar vazia); sujeito a ônibus.
DeviceId () [2/3] Constrói um novo objeto de ID de dispositivo com opções de ID estendidas.
nlc::DeviceId::DeviceId (BusHardwareId const & busHardwareId, unsigned int deviceId_, std::string const & description_ std::vector const e extraId_, std::string const e extraStringId_)
Parâmetros busHardwareId_ deviceId_ description_ extraId_ extraStringId_
Identificador do barramento. Um índice; sujeito ao barramento (= ID do nó CANopen etc.). Uma descrição (pode estar vazia); sujeito ao barramento. Um ID adicional (pode estar vazio); significado depende do barramento. ID de string adicional (pode estar vazio); significado depende do barramento.
DeviceId() [3/3] Constrói uma cópia de um objeto de ID de dispositivo.
nlc::DeviceId::DeviceId (const DeviceId &)
Versão: documento 1.4.2 / NanoLib 1.3.0
33
8 Referência de classes/funções
Parâmetros deviceId_
ID do dispositivo do qual copiar.
equals () Compara objetos novos com objetos existentes.
bool nlc::DeviceId::equals (DeviceId const & outro) const
Retorna booleano
getBusHardwareId() Lê o ID do hardware do barramento.
BusHardwareId nlc::DeviceId::getBusHardwareId () const
Retorna BusHardwareId
getDescription() Lê a descrição do dispositivo (talvez não utilizado).
std::string nlc::DeviceId::getDescription () const
Retorna string
getDeviceId() Lê o ID do dispositivo (talvez não utilizado).
int não assinado nlc::DeviceId::getDeviceId () const
Retorna unsigned int
toString() Retorna o objeto como uma string.
std::string nlc::DeviceId::toString () const
Retorna string
getExtraId() Lê o ID extra do dispositivo (pode não ser utilizado).
const std::vetor &getExtraId () constante
Retorna vetor
Um vetor de IDs extras adicionais (pode estar vazio); o significado depende do ônibus.
getExtraStringId() Lê o ID da string extra do dispositivo (pode não ser utilizado).
std::string getExtraStringId() const
Versão: documento 1.4.2 / NanoLib 1.3.0
34
8 Referência de classes/funções
Retorna string
O ID da string adicional (pode estar vazio); o significado depende do ônibus.
8.17 Conversor LogLevel
Esta classe retorna seu nível de log como uma string. static std::string toString (nlc::LogLevel logLevel)
8.18 Conversor de Módulo de Log
Esta classe retorna o módulo de log específico da biblioteca, modulesetLoggingLevel(), como uma string.
std::string estático
toString (nlc::LogModule logModule)
estático std::string toString (nlc::LogModule logModule)
8.19 ObjectDicionário
Esta classe representa um dicionário de objetos de um controlador e possui as seguintes funções de membro público: getDeviceHandle ()
virtual ResultDeviceHandle getDeviceHandle () const Retorna ResultDeviceHandle
getObject () virtual ResultObjectSubEntry getObject (OdIndex const odIndex) Retorna ResultObjectSubEntry
getObjectEntry () virtual ResultObjectEntry getObjectEntry (índice uint16_t)
Retorna ResultObjectEntry
Informa sobre as propriedades de um objeto.
getXmlFileNome () virtual ResultString getXmlFileNome () const
Retorna ResultString
Retorna o XML file nome como uma string.
readNumber () virtual ResultInt readNumber (OdIndex const odIndex) Retorna ResultInt
readNumberArray () virtual ResultArrayInt readNumberArray (uint16_t const índice)
Versão: documento 1.4.2 / NanoLib 1.3.0
35
8 Referência de classes/funções
Retorna ResultArrayInt readString()
virtual ResultString readString (OdIndex const odIndex) Retorna ResultString readBytes () virtual ResultArrayByte readBytes (OdIndex const odIndex) Retorna ResultArrayByte writeNumber () virtual ResultVoid writeNumber (OdIndex const odIndex, const int64_t value) Retorna ResultVoid writeBytes () virtual ResultVoid writeBytes (OdIndex const OdIndex, std::vector
const & data) Retorna ResultVoid Links relacionados OdIndex
8.20 Entrada de Objeto
Esta classe representa uma entrada de objeto do dicionário de objetos, tem o seguinte atributo protegido estático e funções de membro públicas:
nlc estático::ObjectSubEntry invalidObject
getName() Lê o nome do objeto como uma string.
std virtual::string getName () const
getPrivate() Verifica se o objeto é privado.
bool virtual getPrivate () const
getIndex() Lê o endereço do índice do objeto.
const getIndex () virtual uint16_t
Versão: documento 1.4.2 / NanoLib 1.3.0
36
8 Referência de classes/funções
getDataType() Lê o tipo de dados do objeto.
virtual nlc::ObjectEntryDataType getDataType () const
getObjectCode() Lê o código do objeto:
Registro de matriz nulo Deftype Defstruct Var
0x00 0x05 0x06 0x07 0x08 0x09
virtual nlc::ObjectCode getObjectCode () const
getObjectSaveable() Verifica se o objeto pode ser salvo e sua categoria (ver manual do produto para mais detalhes): APLICAÇÃO, COMUNICAÇÃO, DRIVE, MISC_CONFIG, MODBUS_RTU, NO, TUNING, CUSTOMER, ETHERNET, CANOPEN, VERIFY1020, UNKNOWN_SAVEABLE_TYPE
virtual nlc::ObjectSaveable getObjectSaveable () const
getMaxSubIndex() Lê o número de subíndices suportados por este objeto.
const virtual uint8_t getMaxSubIndex ()
getSubEntry () virtual nlc::ObjectSubEntry e getSubEntry (uint8_t subÍndice)
Consulte também ObjectSubEntry.
8.21 ObjectSubEntry
Esta classe representa uma subentrada de objeto (subíndice) do dicionário de objetos e possui as seguintes funções de membro público:
getName() Lê o nome do objeto como uma string.
std virtual::string getName () const
getSubIndex() Lê o endereço do subíndice.
const uint8_t getSubIndex () virtual
Versão: documento 1.4.2 / NanoLib 1.3.0
37
8 Referência de classes/funções
getDataType() Lê o tipo de dados do objeto.
virtual nlc::ObjectEntryDataType getDataType () const
getSdoAccess() Verifica se o subíndice está acessível via SDO:
Somente leitura
1
Somente gravação
2
LerEscrever
3
Sem acesso
0
virtual nlc::ObjectSdoAccessAttribute getSdoAccess () const
getPdoAccess() Verifica se o subíndice é acessível/mapeável via PDO:
Tx
1
Rx
2
TxRx
3
Não
0
virtual nlc::ObjectPdoAccessAttribute getPdoAccess () const
getBitLength() Verifica o comprimento do subíndice.
const uint32_t getBitLength () virtual
getDefaultValueAsNumeric() Lê o valor padrão do subíndice para tipos de dados numéricos.
virtual ResultInt getDefaultValueAsNumeric (std::string const & chave) const
getDefaultValueAsString () Lê o valor padrão do subíndice para tipos de dados string.
virtual ResultString getDefaultValueAsString (std::string const & chave) const
getDefaultValues () Lê os valores padrão do subíndice.
std::mapa virtual obterValoresPadrão () const
Versão: documento 1.4.2 / NanoLib 1.3.0
38
8 Referência de classes/funções
readNumber() Lê o valor numérico real do subíndice.
virtual ResultInt readNumber () const
readString() Lê o valor real da string do subíndice.
string de resultado virtual readString () const
readBytes() Lê o valor real do subíndice em bytes.
virtual ResultArrayByte readBytes () const
writeNumber() Grava um valor numérico no subíndice.
virtual ResultVoid writeNumber (const int64_t valor) const
writeBytes() Grava um valor no subíndice em bytes.
Resultado virtualVoid writeBytes (std::vector const & dados) const
8.22 Índice Od
Use esta classe (imutável desde a criação) para agrupar e localizar índices/subíndices de diretório de objetos. O OD de um dispositivo tem até 65535 (0xFFFF) linhas e 255 (0xFF) colunas; com lacunas entre as linhas descontínuas. Consulte o padrão CANopen e o manual do produto para obter mais detalhes.
OdIndex() Constrói um novo objeto OdIndex.
nlc::OdIndex::OdIndex (índice uint16_t, subíndice uint8_t)
Subíndice do índice de parâmetros
De 0 a 65535 (0xFFFF) incl. De 0 a 255 (0xFF) incl.
getIndex() Lê o índice (de 0x0000 a 0xFFFF).
uint16_t nlc::OdIndex::getIndex () const
Retorna uint16_t
getSubindex() Lê o subíndice (de 0x00 a 0xFF)
uint8_t nlc::OdIndex::getSubIndex () const
Versão: documento 1.4.2 / NanoLib 1.3.0
39
8 Referência de classes/funções
Retorna uint8_t
toString() Retorna o índice e o subíndice como uma string. A string padrão 0xIIII:0xSS é a seguinte:
I = índice de 0x0000 a 0xFFFF
S = subíndice de 0x00 a 0xFF
std::string nlc::OdIndex::toString() const
Retorna 0xIIII:0xSS
Representação de string padrão
8.23 Biblioteca Od
Use esta interface de programação para criar instâncias da classe ObjectDictionary a partir de XML. Ao atribuirObjectDictionary, você pode vincular cada instância a um dispositivo específico devido a um identificador criado exclusivamente. As instâncias de ObjectDictionary assim criadas são armazenadas no objeto OdLibrary para serem acessadas pelo índice. A classe ODLibrary carrega itens ObjectDictionary de file ou array, os armazena e possui as seguintes funções de membro público:
getObjectDictionaryCount () virtual uint32_t getObjectDictionaryCount () const
getObjectDictionary () virtual ResultObjectDictionary getObjectDictionary (uint32_t odIndex)
Retorna ResultObjectDictionary
addObjectDictionaryFromFile ()
dicionário de objetos de resultado virtual addObjectDictionaryFromFile (std::string const & absoluteXmlFileCaminho)
Retorna ResultObjectDictionary
addObjectDictionary ()
Dicionário de Objetos de Resultados virtual addObjectDictionary (std::vector const & odXmlData, const std::string &xmlFileCaminho = std::string())
Retorna ResultObjectDictionary
8.24 OdTypesHelper
Além das seguintes funções de membro públicas, esta classe contém tipos de dados personalizados. Nota: Para verificar seus tipos de dados personalizados, procure a classe enum ObjectEntryDataType em od_types.hpp.
uintToObjectCode() Converte inteiros não assinados em código objeto:
Tipo de definição nulo
0x00 0x05
Versão: documento 1.4.2 / NanoLib 1.3.0
40
8 Referência de classes/funções
Defstruct Var Registro de matriz
0x06 0x07 0x08 0x09
ObjectCode estático uintToObjectCode (unsigned int objectCode)
isNumericDataType() Informa se um tipo de dado é numérico ou não.
bool estático isNumericDataType (ObjectEntryDataType tipo de dados)
isDefstructIndex() Informa se um objeto é um índice de estrutura de definição ou não.
bool estático isDefstructIndex (uint16_t typeNum)
isDeftypeIndex() Informa se um objeto é um índice do tipo definição ou não.
bool estático isDeftypeIndex (uint16_t typeNum)
isComplexDataType() Informa se um tipo de dado é complexo ou não.
bool estático isComplexDataType (ObjectEntryDataType tipo de dados)
uintToObjectEntryDataType() Converte inteiros não assinados em tipo de dados OD.
Tipo de dados de entrada de objeto estático uintToObjectEntryDataType (uint16_t objectDataType)
objectEntryDataTypeToString() Converte o tipo de dados OD em string.
estático std::string objectEntryDataTypeToString (ObjectEntryDataType odDataType)
stringToObjectEntryDatatype() Converte string em tipo de dados OD, se possível. Caso contrário, retornará UNKNOWN_DATATYPE.
Tipo de Dados de Entrada de Objeto estático stringToObjectEntryDatatype (std::string dataTypeString)
Versão: documento 1.4.2 / NanoLib 1.3.0
41
8 Referência de classes/funções
objectEntryDataTypeBitLength() Informa o comprimento em bits de um tipo de dados de entrada de objeto.
estático uint32_t objectEntryDataTypeBitLength (ObjectEntryDataType const & dataType)
8.25 Estrutura RESTfulBus
Esta estrutura contém as opções de configuração de comunicação para a interface RESTful (over Ethernet). Ele contém os seguintes atributos públicos:
const std::string const não assinado longo const std::string const não assinado longo const std::string const não assinado longo
CONNECT_TIMEOUT_OPTION_NAME = “Tempo limite de conexão RESTful” DEFAULT_CONNECT_TIMEOUT = 200 REQUEST_TIMEOUT_OPTION_NAME = “Tempo limite de solicitação RESTful” DEFAULT_REQUEST_TIMEOUT = 200 RESPONSE_TIMEOUT_OPTION_NAME = “Tempo limite de resposta RESTful” DEFAULT_RESPONSE_TIMEOUT = 750
8.26 ProfinetDCP
No Linux, o aplicativo de chamada precisa dos recursos CAP_NET_ADMIN e CAP_NET_RAW. Para ativar: sudo setcap 'cap_net_admin,cap_net_raw+eip' ./executable. No Windows, a interface ProfinetDCP utiliza WinPcap (testado com versão 4.1.3) ou Npcap (testado com versões 1.60 e 1.30). Assim, ele pesquisa a biblioteca wpcap.dll carregada dinamicamente na seguinte ordem (Nota: nenhum suporte Win10Pcap atual):
1. Diretório Nanolib.dll 2. Diretório de sistema Windows SystemRoot%System32 3. Diretório de instalação Npcap SystemRoot%System32Npcap 4. Caminho do ambiente
Esta classe representa uma interface Profinet DCP e possui as seguintes funções de membro público:
getScanTimeout() Informa sobre o tempo limite de varredura do dispositivo (padrão = 2000 ms).
uint32_t virtual nlc::ProfinetDCP::getScanTimeout () constante
setScanTimeout() Define um tempo limite de varredura do dispositivo (padrão = 2000 ms).
vazio virtual nlc::setScanTimeout (uint32_t timeoutMsec)
getResponseTimeout() Informa sobre o tempo limite de resposta do dispositivo para operações de setup, reset e piscar (padrão = 1000 ms).
uint32_t virtual nlc::ProfinetDCP::getResponseTimeout () constante
setResponseTimeout() Informa sobre o tempo limite de resposta do dispositivo para operações de setup, reset e piscar (padrão = 1000 ms).
vazio virtual nlc::ProfinetDCP::setResponseTimeout (uint32_t timeoutMsec)
Versão: documento 1.4.2 / NanoLib 1.3.0
42
8 Referência de classes/funções
isServiceAvailable()
Use esta função para verificar a disponibilidade do serviço Profinet DCP.
Validade/disponibilidade do adaptador de rede Windows: disponibilidade do WinPcap / Npcap Linux: recursos do CAP_NET_ADMIN / CAP_NET_RAW
virtual ResultVoid nlc::ProfinetDCP::isServiceAvailable (const BusHardwareId & busHardwareId)
Parâmetros BusHardwareId Retorna verdadeiro
falso
ID de hardware do serviço Profinet DCP a ser verificado. O serviço está disponível. Serviço está indisponível.
scanProfinetDevices () Use esta função para verificar o barramento de hardware em busca da presença de dispositivos Profinet.
Resultado virtualProfinetDevices scanProfinetDevices (const BusHardwareId e busHardwareId)
Parâmetros BusHardwareId Retorna ResultProfinetDevices
Especifica cada fieldbus a ser aberto. O hardware está aberto.
setupProfinetDevice() Estabelece as seguintes configurações do dispositivo:
Nome do dispositivo
Endereço IP
Máscara de rede
Gateway padrão
virtual ResultVoid nlc::setupProfinetDevice (const BusHardwareId e busHardwareId, const ProfinetDevice struct e profinetDevice, bool savePermanent)
resetProfinetDevice() Interrompe o dispositivo e o redefine para os padrões de fábrica.
Resultado virtualVoid nlc::resetProfinetDevice (const BusHardwareId e busHardwareId, const ProfinetDevice e profinetDevice)
blinkProfinetDevice() Comanda o dispositivo Profinet para começar a piscar seu LED Profinet.
Resultado virtualVoid nlc::blinkProfinetDevice (const BusHardwareId e busHardwareId, const ProfinetDevice e profinetDevice)
validarProfinetDeviceIp() Use esta função para verificar o endereço IP do dispositivo.
virtual ResultVoid validateProfinetDeviceIp (const BusHardwareId &busHardwareId, const ProfinetDevice & profinetDevice)
Parâmetros BusHardwareId ProfinetDevice
Especifica o ID de hardware a ser verificado. Especifica o dispositivo Profinet a ser validado.
Versão: documento 1.4.2 / NanoLib 1.3.0
43
8 Referência de classes/funções
Retorna ResultadoVoid
8.27 Estrutura ProfinetDevice
Os dados do dispositivo Profinet possuem os seguintes atributos públicos:
std::string std::string std::array< uint8_t, 6 > uint32_t uint32_t uint32_t
deviceName deviceVendor macAddress ipAddress netMask defaultGateway
O endereço MAC é fornecido como array no formato macAddress = {xx, xx, xx, xx, xx, xx}; enquanto o endereço IP, a máscara de rede e o gateway são todos interpretados como números hexadecimais big endian, como:
Endereço IP: 192.168.0.2 Máscara de rede: 255.255.0.0 Gateway: 192.168.0.1
0xC0A80002 0xFFFF0000 0xC0A80001
8.28 Classes de resultados
Use os valores de retorno “opcionais” dessas classes para verificar se uma chamada de função teve sucesso ou não, e também localizar os motivos da falha. Em caso de sucesso, a função hasError() retorna falso. Por getResult (), você pode ler o valor do resultado conforme o tipo (ResultInt etc.). Se uma chamada falhar, você lê o motivo com getError().
Atributos protegidos
string NlcErrorCode uint32_t
errorString errorCode exErrorCode
Além disso, esta classe possui as seguintes funções de membro público:
hasError() Lê o sucesso de uma chamada de função.
bool nlc::Result::hasError () const
Devoluções
verdadeiro falso
Falha na chamada. Use getError() para ler o valor. Chamada bem-sucedida. Use getResult () para ler o valor.
getError() Lê o motivo se uma chamada de função falhar.
const std::string nlc::Result::getError () const
Retorna string const
Versão: documento 1.4.2 / NanoLib 1.3.0
44
8 Referência de classes/funções
result() As seguintes funções auxiliam na definição dos resultados exatos:
Resultado (std::string const & errorString_)
Resultado (NlcErrorCode const & errCode, std::string const & errorString_)
Resultado (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
Resultado (Resultado const & resultado)
getErrorCode() Leia o NlcErrorCode.
NlcErrorCode getErrorCode () const
obterExErrorCode () uint32_t obterExErrorCode () const
8.28.1 Resultado Vazio
NanoLib envia a você uma instância desta classe se a função retornar void. A classe herda as funções públicas e os atributos protegidos da classe de resultado e possui as seguintes funções de membro público:
ResultVoid() As seguintes funções auxiliam na definição do resultado exato do void:
ResultadoVoid (std::string const &errorString_)
ResultVoid (NlcErrorCode const & errCode, std::string const & errorString_)
ResultVoid (NlcErrorCode const & errCode, const uint32_t exErrCode, std:: string const & errorString_)
ResultVoid (Resultado const & resultado)
8.28.2 ResultadoInt
NanoLib envia uma instância desta classe se a função retornar um número inteiro. A classe herda as funções públicas/atributos protegidos da classe de resultado e possui as seguintes funções de membro público:
getResult() Retorna o resultado inteiro se uma chamada de função teve sucesso.
int64_t obterResultado () const
Retorna int64_t
Versão: documento 1.4.2 / NanoLib 1.3.0
45
8 Referência de classes/funções
ResultInt() As seguintes funções auxiliam na definição do resultado inteiro exato:
ResultInt (int64_t resultado_)
ResultadoInt (std::string const & errorString_)
ResultInt (NlcErrorCode const & errCode, std::string const & errorString_)
ResultInt (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultInt (Resultado const & resultado)
8.28.3 Cadeia de Resultados
NanoLib envia uma instância desta classe se a função retornar uma string. A classe herda as funções públicas/atributos protegidos da classe de resultado e possui as seguintes funções de membro público:
getResult () Lê o resultado da string se uma chamada de função tiver sucesso.
const std::string nlc::ResultString::getResult() const
Retorna string const
ResultString() As seguintes funções auxiliam na definição do resultado exato da string:
ResultString (std::string const & mensagem, bool hasError_)
ResultString (NlcErrorCode const & errCode, std::string const & errorString_)
ResultString (NlcErrorCode const & errCode, const uint32_t exErrCode, std:: string const & errorString_)
ResultString (Resultado const & resultado)
8.28.4 ResultadoArrayByte
O NanoLib envia uma instância desta classe se a função retornar um array de bytes. A classe herda as funções públicas / atributos protegidos da classe result e tem as seguintes funções de membro públicas:
getResult() Lê o vetor de bytes se uma chamada de função foi bem-sucedida.
const std::vetor nlc::ResultArrayByte::getResult() const
Retorna vetor const
Versão: documento 1.4.2 / NanoLib 1.3.0
46
8 Referência de classes/funções
ResultArrayByte() As seguintes funções auxiliam na definição do resultado exato da matriz de bytes:
ResultArrayByte (std::vetor const & resultado_)
ResultArrayByte (std::string const & errorString_)
ResultArrayByte (NlcErrorCode const & errCode, std::string const & erro String_)
ResultArrayByte (NlcErrorCode const & errCode, const uint32_t exErrCode, std:: string const & errorString_)
ResultArrayByte (Resultado const & resultado)
8.28.5 ResultadoArrayInt
O NanoLib envia uma instância desta classe se a função retornar um array de inteiros. A classe herda as funções públicas / atributos protegidos da classe result e tem as seguintes funções de membro públicas:
getResult() Lê o vetor inteiro se uma chamada de função foi bem-sucedida.
const std::vetor nlc::ResultArrayInt::getResult() const
Retorna vetor const
ResultArrayInt() As seguintes funções auxiliam na definição do resultado exato da matriz de inteiros:
ResultArrayInt (std::vetor const & resultado_)
ResultArrayInt (std::string const & errorString_)
ResultArrayInt (NlcErrorCode const & errCode, std::string const & erro String_)
ResultArrayInt (NlcErrorCode const & errCode, const uint32_t exErrCode, std:: string const & errorString_)
ResultArrayInt (Resultado const & resultado)
8.28.6 ResultBusHwIds
O NanoLib envia uma instância desta classe se a função retornar um array de ID de hardware de barramento. A classe herda as funções públicas / atributos protegidos da classe de resultado e tem as seguintes funções de membro públicas:
getResult() Lê o vetor bus-hardware-ID se uma chamada de função foi bem-sucedida.
const std::vetor nlc::ResultBusHwIds::getResult() const
Parâmetros const vetor
Versão: documento 1.4.2 / NanoLib 1.3.0
47
8 Referência de classes/funções
ResultBusHwIds() As seguintes funções auxiliam na definição do resultado exato do array de ID de barramento-hardware:
ResultBusHwIds (std::vetor const & resultado_)
ResultBusHwIds (std::string const & errorString_)
ResultBusHwIds (NlcErrorCode const e errCode, std::string const e errorString_)
ResultBusHwIds (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultBusHwIds (Resultado const & resultado)
8.28.7 ResultDeviceId
O NanoLib envia uma instância desta classe se a função retornar um ID de dispositivo. A classe herda as funções públicas / atributos protegidos da classe resultante e tem as seguintes funções de membro públicas:
getResult () Lê o vetor de ID do dispositivo se uma chamada de função for bem-sucedida.
DeviceId nlc::ResultDeviceId::getResult() const
Retorna vetor const
ResultDeviceId() As seguintes funções auxiliam na definição do resultado exato do ID do dispositivo:
ResultDeviceId (const do DeviceId e resultado_)
ResultDeviceId (std::string const & errorString_)
ResultDeviceId (NlcErrorCode const e errCode, std::string const e errorString_)
ResultDeviceId (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string errorString_)
ResultDeviceId (constante do resultado e resultado)
8.28.8 ResultDeviceIds
O NanoLib envia uma instância desta classe se a função retornar um array de ID de dispositivo. A classe herda as funções públicas / atributos protegidos da classe de resultado e tem as seguintes funções de membro públicas:
getResult() Retorna o vetor de ID do dispositivo se uma chamada de função foi bem-sucedida.
DeviceId nlc::ResultDeviceIds::getResult() const
Retorna vetor const
Versão: documento 1.4.2 / NanoLib 1.3.0
48
8 Referência de classes/funções
ResultDeviceIds () As seguintes funções ajudam a definir o resultado exato da matriz de ID do dispositivo:
ResultDeviceIds (std::vetor const & resultado_)
ResultDeviceIds (std::string const & errorString_)
ResultDeviceIds (NlcErrorCode const e errCode, std::string const e errorString_)
ResultDeviceIds (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultDeviceIds (constante de resultado e resultado)
8.28.9 ResultDeviceHandle
O NanoLib envia uma instância desta classe se a função retornar o valor de um identificador de dispositivo. A classe herda as funções públicas / atributos protegidos da classe result e tem as seguintes funções de membro públicas:
getResult () Lê o identificador do dispositivo se uma chamada de função foi bem-sucedida.
DeviceHandle nlc::ResultDeviceHandle::getResult () const
Retorna DeviceHandle
ResultDeviceHandle() As seguintes funções auxiliam na definição do resultado exato do identificador do dispositivo:
ResultDeviceHandle (constante do DeviceHandle e resultado_)
ResultDeviceHandle (std::string const & errorString_)
ResultDeviceHandle (NlcErrorCode const e errCode, std::string const e errorString_)
ResultDeviceHandle (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultDeviceHandle (Resultado const & resultado)
8.28.10 ResultObjectDicionário
NanoLib envia uma instância desta classe se a função retornar o conteúdo de um dicionário de objetos. A classe herda as funções públicas/atributos protegidos da classe de resultado e possui as seguintes funções de membro público:
getResult () Lê o vetor de ID do dispositivo se uma chamada de função for bem-sucedida.
const nlc::DicionárioDeObjetos & nlc::DicionárioDeObjetosDeResultado::getResult() const
Versão: documento 1.4.2 / NanoLib 1.3.0
49
8 Referência de classes/funções
Devoluções
vetor constante
ResultObjectDictionary() As seguintes funções auxiliam na definição do resultado exato do dicionário de objetos:
Dicionário de Objetos de Resultados (nlc::ObjectDictionary const & result_)
Dicionário de ObjetosResultados (std::string const & errorString_)
ResultObjectDictionary (NlcErrorCode const & errCode, std::string const & errorString_)
ResultObjectDictionary (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultObjectDictionary (Result const & resultado)
8.28.11 ResultadoConnectionState
NanoLib envia a você uma instância desta classe se a função retornar uma informação de estado de conexão do dispositivo. A classe herda as funções públicas/atributos protegidos da classe de resultado e possui as seguintes funções de membro público:
getResult () Lê o identificador do dispositivo se uma chamada de função foi bem-sucedida.
DeviceConnectionStateInfo nlc::ResultConnectionState::getResult () const
Retorna DeviceConnectionStateInfo Conectado / Desconectado / ConnectedBootloader
ResultConnectionState() As seguintes funções auxiliam na definição do resultado exato do estado da conexão:
ResultConnectionState (DeviceConnectionStateInfo const & resultado_)
Estado de conexão de resultado (std::string const & errorString_)
ResultConnectionState (NlcErrorCode const e errCode, std::string const e errorString_)
ResultConnectionState (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultConnectionState (Resultado const & resultado)
8.28.12 ResultObjectEntry
O NanoLib envia uma instância desta classe se a função retornar uma entrada de objeto. A classe herda as funções públicas / atributos protegidos da classe de resultado e tem as seguintes funções de membro públicas:
Versão: documento 1.4.2 / NanoLib 1.3.0
50
8 Referência de classes/funções
getResult() Retorna o vetor de ID do dispositivo se uma chamada de função foi bem-sucedida.
nlc::ObjectEntry const& nlc::ResultObjectEntry::getResult() const
Retorna ObjectEntry const
ResultObjectEntry() As seguintes funções auxiliam na definição do resultado exato da entrada do objeto:
ResultObjectEntry (nlc::ObjectEntry const & resultado_)
ResultObjectEntry (std::string const & errorString_)
ResultObjectEntry (NlcErrorCode const e errCode, std::string const e errorString_)
ResultObjectEntry (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultObjectEntry (Result const & resultado)
8.28.13 ResultObjectSubEntry
O NanoLib envia uma instância desta classe se a função retornar uma subentrada de objeto. A classe herda as funções públicas / atributos protegidos da classe de resultado e tem as seguintes funções de membro públicas:
getResult() Retorna o vetor de ID do dispositivo se uma chamada de função foi bem-sucedida.
nlc::ObjectSubEntry const & nlc::ResultObjectSubEntry::getResult() const
Retorna ObjectSubEntry const
ResultObjectSubEntry() As seguintes funções auxiliam na definição do resultado exato da subentrada do objeto:
ResultObjectSubEntry (nlc::ObjectEntry const & resultado_)
ResultObjectSubEntry (std::string const & errorString_)
ResultObjectSubEntry (NlcErrorCode const e errCode, std::string const e errorString_)
ResultObjectSubEntry (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultObjectSubEntry (Resultado const & resultado)
8.28.14 ResultProfinetDevices
NanoLib envia uma instância desta classe se a função retornar um dispositivo Profinet. A classe herda as funções públicas/atributos protegidos da classe de resultado e possui as seguintes funções de membro público:
Versão: documento 1.4.2 / NanoLib 1.3.0
51
8 Referência de classes/funções
getResult () Lê o vetor do dispositivo Profinet se uma chamada de função foi bem-sucedida.
const std::vetor & obterResultado () const
ResultProfinetDevices () As funções a seguir auxiliam na definição dos dispositivos Profinet exatos.
ResultProfinetDevices (const std::vector & dispositivos profinet)
ResultProfinetDevices (const Resultado & resultado)
ResultProfinetDevices (const std::string &errorText, NlcErrorCode código de erro = NlcErrorCode::GeneralError, uint32_t extendedErrorCode = 0)
8.28.15 ResultadosampleDataArray
NanoLib envia uma instância desta classe se a função retornar comoampa matriz de dados. A classe herda as funções públicas/atributos protegidos da classe de resultado e possui as seguintes funções de membro público:
getResult () Lê a matriz de dados se uma chamada de função tiver sucesso.
const std::vetor <SampleData> & getResult() const
ResultadosampleDataArray () As funções a seguir auxiliam na definição dos dispositivos Profinet exatos.
ResultadosampleDataArray (const std::vetor <SampleData> & dataArray)
ResultadosampleDataArray (const std::string &errorDesc, const NlcErrorCode código de erro = NlcErrorCode::GeneralError, const uint32_t extendedErrorCode = 0)
ResultadosampleDataArray (const ResultadosampleDataArray e outros)
ResultadosampleDataArray (const Resultado & resultado)
8.28.16 ResultadosamplerState
NanoLib envia uma instância desta classe se a função retornar comoampler state.Esta classe herda as funções públicas/atributos protegidos da classe de resultado e possui as seguintes funções de membro público:
getResult() Lê o sampler vetor de estado se uma chamada de função teve sucesso.
SamplerState getResult() const
Retorna SamplerEstado>
Não configurado/Configurado/Pronto/Em execução/Concluído/Com falha/Cancelado
Versão: documento 1.4.2 / NanoLib 1.3.0
52
8 Referência de classes/funções
ResultadosamplerState () As funções a seguir auxiliam na definição exata do sampestado mais alto.
ResultadosamplerState (const Sampestado lerState)
ResultadosamplerState (const std::string & errorDesc, const NlcErrorCode errorCode = NlcErrorCode::GeneralError, const uint32_t
CódigoDeErroExtendido = 0)
ResultadosamplerState (const ResultadosamplerState e outros)
ResultadosamplerState (const Resultado & resultado)
8.29 NlcErrorCode
Se algo der errado, as classes de resultados reportarão um dos códigos de erro listados nesta enumeração.
Código de erro Sucesso GeneralError BusUnavailable CommunicationError ProtocolError
ODDoesNotExist ODInvalidAccess ODTypeMismatch OperaçãoAbortada OperaçãoNãoSuportada OperaçãoInválida
InvalidArguments AccessDenied ResourceNotFound ResourceUnavailable OutOfMemory TimeOutError
C: Categoria D: Descrição R: Motivo C: Nenhum. D: Nenhum erro. R: A operação foi concluída com sucesso.
C: Não especificado. D: Erro não especificado. R: Falha que não se enquadra em nenhuma outra categoria.
C: Ônibus. D: Barramento de hardware não disponível. R: Barramento inexistente, cortado ou com defeito.
C: Comunicação. D: Comunicação não confiável. R: Dados inesperados, CRC errado, erros de frame ou paridade, etc.
C: Protocolo. D: Erro de protocolo. R: Resposta após opção de protocolo não suportada, relatório do dispositivo sobre protocolo não suportado, erro no protocolo (por exemplo, bit de sincronização do segmento SDO), etc. R: Uma resposta ou relatório do dispositivo para protocolo não suportado (opções) ou erros no protocolo (por exemplo, SDO bit de sincronização de segmento), etc. R: Protocolo não suportado (opções) ou erro no protocolo (por exemplo, bit de sincronização de segmento SDO), etc.
C: Dicionário de objetos. D: Endereço OD inexistente. R: Nenhum endereço desse tipo no dicionário de objetos.
C: Dicionário de objetos. D: Acesso ao endereço OD inválido. R: Tentativa de escrever um endereço somente leitura ou ler de um endereço somente gravação.
C: Dicionário de objetos. D: Incompatibilidade de tipo. R: Valor não convertido para o tipo especificado, digamos, na tentativa de tratar uma string como um número.
C: Aplicação. D: Processo abortado. R: Processo cortado por solicitação de aplicação. Retorna apenas na interrupção da operação pela função de retorno de chamada, digamos, da varredura do barramento.
C: Comum. D: Processo não suportado. R: Sem suporte de barramento/dispositivo de hardware.
C: Comum. D: Processo incorreto no contexto atual ou inválido com o argumento atual. R: Uma tentativa de reconexão a barramentos/dispositivos já conectados. Uma tentativa de desconexão para os já desconectados. Uma tentativa de operação do bootloader no modo firmware ou vice-versa.
C: Comum. D: Argumento inválido. R: Lógica ou sintaxe errada.
C: Comum. D: Acesso negado. R: Falta de direitos ou capacidades para realizar a operação solicitada.
C: Comum. D: Item especificado não encontrado. R: Barramento de hardware, protocolo, dispositivo, endereço OD no dispositivo ou file não foi encontrado.
C: Comum. D: Item especificado não encontrado. R: ocupado, inexistente, cortado ou com defeito.
C: Comum. D: Memória insuficiente. R: Pouca memória para processar este comando.
C: Comum. D: O processo expirou. R: Retornar após o tempo limite expirar. O tempo limite pode ser um tempo de resposta do dispositivo, um tempo para obter acesso a recursos compartilhados ou exclusivos ou um tempo para mudar o barramento/dispositivo para um estado adequado.
Versão: documento 1.4.2 / NanoLib 1.3.0
53
8 Referência de classes/funções
8.30 NlcCallback
Esta classe pai para retornos de chamada tem a seguinte função de membro pública: callback ()
retorno de chamada virtual ResultVoid ()
Devoluções
Resultado Vazio
8.31 NlcDataTransferCallback
Use esta classe de retorno de chamada para transferências de dados (atualização de firmware, upload de NanoJ etc.). 1. Para um upload de firmware: Defina uma “co-classe” estendendo esta com um método de retorno de chamada personalizado
implementação. 2. Use as instâncias da “co-classe” em chamadas NanoLibAccessor.uploadFirmware (). A classe principal em si tem a seguinte função de membro pública:
retorno de chamada () retorno de chamada virtual ResultVoid (nlc::DataTransferInfo info, int32_t data)
Devoluções
Resultado Vazio
8.32 NlcScanBusCallback
Use esta classe de retorno de chamada para varredura de barramento. 1. Defina uma “co-classe” estendendo esta com uma implementação de método de retorno de chamada personalizado. 2. Use as instâncias da “co-classe” em chamadas NanoLibAccessor.scanDevices(). A classe principal em si tem a seguinte função de membro pública.
ligar de volta ()
retorno de chamada virtual ResultVoid (nlc::BusScanInfo info, std::vector const & devicesFound, dados int32_t)
Retorna ResultadoVoid
8.33 NlcLoggingCallback
Use esta classe de retorno de chamada para registrar retornos de chamada. 1. Defina uma classe que estenda esta classe com uma implementação de método de retorno de chamada personalizado 2. Use um ponteiro para suas instâncias para definir um retorno de chamada por NanoLibAccessor >
setLoggingCallback (…).
retorno de chamada virtual void (const std::string & payload_str, const std::string & formatted_str, const std::string & logger_name, const unsigned int log_level, const std::uint64_t time_since_epoch, const size_t thread_id)
8.34 SamplerInterface
Use esta classe para configurar, iniciar e parar o sampler, ou para obter samplevou dados e buscou comoampstatus de ler ou último erro. A classe tem as seguintes funções de membro público.
Versão: documento 1.4.2 / NanoLib 1.3.0
54
8 Referência de classes/funções
configure() Configura comoampleitura.
Resultado virtualVoid nlc::SamplerInterface::configure (const DeviceHandle deviceHandle, const SamplerConfiguração e samplerConfiguração)
Parâmetros [in] deviceHandle [in] samplerConfiguração
Retorna ResultadoVoid
Especifica qual dispositivo configurar o sampler para. Especifica os valores dos atributos de configuração. Confirma que uma função void foi executada.
getData() Obtém o sampdados de led.
Resultados virtuaisampleDataArray nlc::SamplerInterface::getData (const DeviceHandle deviceHandle)
Parâmetros [in] deviceHandle Retorna ResultSampleDataArray
Especifica para qual dispositivo obter os dados.
Entrega oampdados led, que podem ser uma matriz vazia se samplerNotify está ativo na inicialização.
getLastError() Obtém comoampúltimo erro de ler.
Resultado virtualVoid nlc::SamplerInterface::getLastError (const DeviceHandle deviceHandle)
Retorna ResultadoVoid
Confirma que uma função void foi executada.
getState() Obtém comoampstatus de ler.
Resultados virtuaisamplerState nlc::SamplerInterface::getState (const DeviceHandle deviceHandle)
Retorna ResultadosamplerState
Entrega oampestado mais alto.
start () Começa comoampleitura.
Resultado virtualVoid nlc::SamplerInterface::start (const DeviceHandle deviceHandle, SamplerNotify* samplerNotify, int64_t applicationData)
Parâmetros [in] deviceHandle [in] SamplerNotify [no] applicationData
Retorna ResultadoVoid
Especifica qual dispositivo iniciar o sampler para.
Especifica quais informações opcionais serão relatadas (pode ser nullptr).
Opção: Encaminha dados relacionados ao aplicativo (uma matriz de valor/ID do dispositivo/índice de 8 bits definida pelo usuário ou uma data e hora, um ponteiro de variável/função, etc.) para samplerNotify.
Confirma que uma função void foi executada.
Versão: documento 1.4.2 / NanoLib 1.3.0
55
8 Referência de classes/funções
stop () Pára comoampleitura.
Resultado virtualVoid nlc::SamplerInterface::stop (const DeviceHandle deviceHandle)
Parâmetros [in] deviceHandle Retorna ResultVoid
Especifica qual dispositivo interromper o sampler para. Confirma que uma função void foi executada.
8.35 SampEstrutura lerConfiguration
Esta estrutura contém os dadosampopções de configuração do ler (estáticas ou não).
Atributos públicos
std::vetor endereços rastreados
Até 12 endereços OD para serem sampliderado.
uint32_t
versão
A versão de uma estrutura.
uint32_t
duraçãoMilisegundos
Sampduração em ms, de 1 a 65535
uint16_t
períodoMilissegundos
Sampperíodo de duração em ms.
uint16_t
númeroDeSampos
Sampmenor quantidade.
uint16_t
préTriggerNumberOfSampos
Sampo valor pré-acionamento.
bool
usandoImplementação de Software
Use implementação de software.
bool
usandoNewFWSamplerImplementation Use implementação de FW para dispositivos com
Versão FW v24xx ou mais recente.
SamplerMode
modo
Normal, repetitivo ou contínuoampling.
SamplerTriggerCondition triggerCondition
Condições de disparo de início: TC_FALSE = 0x00 TC_TRUE = 0x01 TC_SET = 0x10 TC_CLEAR = 0x11 TC_RISING_EDGE = 0x12 TC_FALLING_EDGE = 0x13 TC_BIT_TOGGLE = 0x14 TC_GREATER = 0x15 TC_GREATER_OR_EQUAL = 0x16 TC_LESS = 0x17 TC_LESS_OR_EQUAL = 0x18 TC_EQUAL = 0x19 TC_NOT_EQUAL = 0x1A TC_ONE_EDGE = 0x1B TC_MULTI_EDGE = 0x1C, OdIndex, triggerValue
SamplerTrigger
SamplerTrigger
Um gatilho para começar comoampler?
Atributos públicos estáticos
constexpr estático size_t SAMPLER_CONFIGURATION_VERSION = 0x01000000 tamanho constexpr estático_t MAX_TRACKED_ADDRESSES = 12
8.36 SamplerNotify
Use esta classe para ativar sampler notificações quando você inicia comoampler. A classe tem a seguinte função de membro pública.
Versão: documento 1.4.2 / NanoLib 1.3.0
56
8 Referência de classes/funções
notificar ()
Entrega uma entrada de notificação.
vazio virtual nlc::SamplerNotify::notificar (const ResultVoid & lastError, const SamplerEstado samplerState, const std::vetor <SampleData> & sampleDatas, int64_t dados do aplicativo)
Parâmetros [in] lastError [in] samplerState
[em] sampleDatas [em] dados da aplicação
Relata o último erro ocorrido enquanto sampling. Relata o sampstatus do leitor no momento da notificação: Não configurado / Configurado / Pronto / Em execução / Concluído / Com falha / Cancelado. Relata o sampmatriz led-data. Relata dados específicos do aplicativo.
8.37 SampEstrutura leData
Esta estrutura contém o sampdados de led.
uin64_t iteraçãoNúmero
Começa em 0 e só aumenta no modo repetitivo.
std::vetor<SampledValues> Contém a matriz de sampvalores liderados.
8.38 SampEstrutura ledValue
Esta estrutura contém o sampvalores liderados.
in64_t valor uin64_t CollectTimeMsec
Contém o valor de um endereço OD rastreado.
Contém o tempo de coleta em milissegundos, em relação ao sampo começo.
8.39 SamplerTrigger estrutura
Esta estrutura contém as configurações de gatilho do sampleitura.
SamplerTriggerCondition condição
Valor OdIndex uin32_t
A condição de disparo: TC_FALSE = 0x00 TC_TRUE = 0x01 TC_SET = 0x10 TC_CLEAR = 0x11 TC_RISING_EDGE = 0x12 TC_FALLING_EDGE = 0x13 TC_BIT_TOGGLE = 0x14 TC_GREATER = 0x15 TC_GREATER_OR_EQUAL = 0x16 TC_LESS = 0x17 TC_LESS_OR_EQUAL = 0x18 TC_EQUAL = 0x19 TC_NOT_EQUAL = 0x1A TC_ONE_EDGE = 0x1B TC_MULTI_EDGE = 0x1C
OdIndex (endereço) do gatilho.
Valor de condição ou número de bit (começando no bit zero).
8.40 Estrutura serial
Encontre aqui suas opções de comunicação serial e os seguintes atributos públicos:
const std::string const TaxaDeBaudSerial
BAUD_RATE_OPTIONS_NAME = “taxa de transmissão serial” baudRate = estrutura SerialBaudRate
Versão: documento 1.4.2 / NanoLib 1.3.0
57
8 Referência de classes/funções
const std::string const Paridade serial
PARITY_OPTIONS_NAME = “paridade serial” paridade = estrutura SerialParity
Estrutura 8.41 SerialBaudRate
Encontre aqui sua taxa de transmissão de comunicação serial e os seguintes atributos públicos:
const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string
TAXA_BAUD_7200 = “7200” TAXA_BAUD_9600 = “9600” TAXA_BAUD_14400 = “14400” TAXA_BAUD_19200 = “19200” TAXA_BAUD_38400 = “38400” TAXA_BAUD_56000 = “56000” TAXA_BAUD_57600 = “57600” TAXA_BAUD_115200 = “115200” TAXA_BAUD_128000 = “128000” TAXA_BAUD_256000 = “256000”
8.42 Estrutura SerialParity
Encontre aqui suas opções de paridade serial e os seguintes atributos públicos:
const std::string const std::string const std::string const std::string const std::string
NENHUM = “nenhum” ÍMPAR = “ímpar” PAR = “par” MARCA = “marca” ESPAÇO = “espaço”
Versão: documento 1.4.2 / NanoLib 1.3.0
58
Licenças 9
Licenças 9
Cabeçalhos e ex da interface da API NanoLibampo código fonte é licenciado pela Nanotec Electronic GmbH & Co. KG sob a Creative Commons Attribution 3.0 Unported License (CC BY). Partes da biblioteca fornecidas em formato binário (bibliotecas de comunicação core e fieldbus) são licenciadas sob a Creative Commons AttributionNoDerivatives 4.0 International License (CC BY ND).
Licença Creative Commons
O seguinte resumo legível por humanos não substituirá a(s) licença(s) em si. Você pode encontrar a respectiva licença em creativecommons.org e linkada abaixo. Você está livre para:
CC BY 3.0
Compartilhar: Veja à direita. Adaptar: Remixar, transformar e construir sobre o
material para qualquer finalidade, mesmo comercial.
CC BY-ND 4.0
Compartilhar: Copie e redistribua o material em qualquer meio ou formato.
O licenciante não pode revogar as liberdades acima, desde que você obedeça aos seguintes termos da licença:
CC BY 3.0
CC BY-ND 4.0
Atribuição: Você deve dar o crédito apropriado, Atribuição: Veja à esquerda. Mas: Forneça um link para isso
forneça um link para a licença e indique se
outra licença.
foram feitas alterações. Você pode fazê-lo em qualquer
Sem derivados: Se você remixar, transformar ou construir
maneira razoável, mas não de forma alguma que sugira
sobre o material, você não pode distribuir o
gesticula que o licenciante endossa você ou seu uso.
material modificado.
Nenhuma restrição adicional: Você não pode aplicar Nenhuma restrição adicional: Veja à esquerda. termos legais ou medidas tecnológicas que legalmente
restringir outros de fazer qualquer coisa que a licença
autorizações.
Observação: você não precisa cumprir a licença para elementos do material que sejam de domínio público ou cujo uso seja permitido por uma exceção ou limitação aplicável.
Nota: Nenhuma garantia é dada. A licença pode não lhe dar todas as permissões necessárias para o uso pretendido. Por ex.ampoutros direitos, como publicidade, privacidade ou direitos morais, podem limitar a forma como você usa o material.
Versão: documento 1.4.2 / NanoLib 1.3.0
59
Impressão, contato, versões
©2024 Nanotec Electronic GmbH & Co.KGKapellenstr.685622 FeldkirchenAlemanhaTel.+49(0) 89 900 686-0Fax+49(0)89 900 686-50 info@nanotec.dewww.nanotec.com Todos os direitos reservados. Erros, omissões, alterações técnicas ou de conteúdo são possíveis sem aviso prévio. As marcas/produtos citados são marcas registradas de seus proprietários e devem ser tratados como tal. Versão original.
Documento 1.4.2 2024.12 1.4.1 2024.10 1.4.0 2024.09 1.3.3 2024.07
1.3.2 2024.05 1.3.1 2024.04 1.3.0 2024.02
1.2.2 2022.09 1.2.1 2022.08 1.2.0 2022.08
+ Adicionado > Alterado # Corrigido > Retrabalho do ex fornecidoamples.
+ NanoLib Modbus: Mecanismo de bloqueio de dispositivo adicionado para Modbus VCP. # NanoLib Core: Verificação de estado de conexão corrigida. # NanoLib Code: Remoção de referência de hardware de barramento corrigida.
+ NanoLib-CANopen: Suporte para adaptador Peak PCAN-USB (IPEH-002021/002022).
> NanoLib Core: Interface de retorno de chamada de registro alterada (LogLevel substituído por LogModule). # NanoLib Logger: A separação entre núcleo e módulos foi corrigida. # Modbus TCP: Atualização de firmware corrigida para FW4. # EtherCAT: Upload de programa NanoJ corrigido para Core5. # EtherCAT: Atualização de firmware corrigida para Core5.
# Modbus RTU: Problemas de temporização corrigidos com baixas taxas de transmissão durante a atualização do firmware. # RESTful: Upload do programa NanoJ corrigido.
# Módulos NanoLib Sampler: Leitura correta de sampvalores booleanos led.
+ Suporte Java 11 para todas as plataformas. + Suporte Python 3.11/3.12 para todas as plataformas. + Nova interface de retorno de chamada de registro (veja o exemploamples). + Callback sinks para NanoLib Logger. > Atualizar logger para a versão 1.12.0. > Módulos NanoLib Sampler: Suporte agora para firmware do controlador Nanotec v24xx. > Módulos NanoLib Sampler: Mudança na estrutura usada para sampler configuração. > Módulos NanoLib Sampler: O modo contínuo é sinônimo de infinito; a condição de disparo é verificada uma vez; o número de samples deve ser 0. > Módulos NanoLib Sampler: Prioridade normal para o thread que coleta dados no modo firmware. > Módulos NanoLib Sampler: Algoritmo reescrito para detectar a transição entre os estados Pronto e Em Execução. # NanoLib Core: Não há mais Violação de Acesso (0xC0000005) ao fechar 2 ou mais dispositivos usando o mesmo hardware de barramento. # NanoLib Core: Não há mais Falha de Segmentação ao anexar um adaptador PEAK no Linux. # Módulos NanoLib Sampler: Correto sampleitura de led-values no modo firmware. # Módulos NanoLib Sampler: Configuração correta de 502X:04. # Módulos NanoLib Sampler: Mistura correta de buffers com canais. # NanoLib-Canopen: Tempos limite de CAN aumentados para robustez e varredura correta em taxas de transmissão mais baixas. # NanoLib-Modbus: Algoritmo de detecção de VCP para dispositivos especiais (USB-DA-IO).
+ Suporte EtherCAT.
+ Observação sobre as configurações do projeto VS em Configure seu projeto.
+ obterDeviceHardwareGroup (). + obterProfinetDCP (isServiceAvailable). + obterProfinetDCP (validarProfinetDeviceIp). + autoAssignObjectDictionary (). + obterXmlFileNome (). + const std::string & xmlFileCaminho em addObjectDictionary (). + getSamplerInterface ().
Produto 1.3.0 1.2.1 1.2.0 1.1.3
1.1.2 1.1.1 1.1.0
1.0.1 (B349) 1.0.0 (B344) 1.0.0 (B341)
Versão: documento 1.4.2 / NanoLib 1.3.0
60
10 Impressão, contato, versões
Documento
1.1.2 2022.03 1.1.1 2021.11 1.1.0 2021.06 1.0.1 2021.06 1.0.0 2021.05
+ Adicionado > Alterado # Corrigido + rebootDevice(). + Código de erro ResourceUnavailable para getDeviceBootloaderVersion(), ~VendorId(), ~HardwareVersion(), ~SerialNumber e ~Uid. > firmwareUploadFromFile agora carregueFirmwareFromFile (). > firmwareUpload () agora uploadFirmware (). > bootloaderUploadFromFile () agora carregueBootloaderFromFile (). > bootloaderUpload () agora uploadBootloader (). > bootloaderFirmwareUploadFromFile () para carregarBootloaderFirmwareFromFile (). > bootloaderFirmwareUpload () agora carregueBootloaderFirmware (). > nanojUploadFromFile () agora carregue NanoJFromFile (). > nanojUpload () agora uploadNanoJ (). > objectDictionaryLibrary () agora getObjectDictionaryLibrary (). > String_String_Map agora StringStringMap. > NanoLib-Common: execução mais rápida de listAvailableBusHardware e openBusHardwareWithProtocol com adaptador Ixxat. > NanoLib-CANopen: configurações padrão usadas (taxa de transmissão de 1000k, número de barramento Ixxat 0) se as opções de hardware de barramento estiverem vazias. > NanoLib-RESTful: permissão de administrador obsoleta para comunicação com bootloaders Ethernet no Windows se o driver npcap / winpcap estiver disponível. # NanoLib-CANopen: o hardware de barramento agora abre sem falhas com opções vazias. # NanoLib-Common: openBusHardwareWithProtocol () sem vazamento de memória agora.
+ Suporte Linux ARM64. + Suporte USB em massa / REST / Profinet DCP. + checkConnectionState (). + getDeviceBootloaderVersion (). + ResultProfinetDevices. + NlcErrorCode (substituiu NanotecExceptions). + NanoLib Modbus: VCP / hub USB unificado para USB. > A varredura Modbus TCP retorna resultados. < A latência de comunicação Modbus TCP permanece constante.
+ Mais ObjectEntryDataType (complexo e profissionalfile-específico). + IOError retorna se connectDevice() e scanDevices() não encontrarem nenhum. + Tempo limite nominal de apenas 100 ms para CanOpen/Modbus.
+ Suporte Modbus (mais Hub USB via VCP). + Capítulo Criando seu próprio projeto Linux. + extraHardwareSpecifier para BusHardwareId (). + extraId_ e extraStringId_ para DeviceId ().
+ setBusState (). + getDeviceBootloaderBuildId (). + getDeviceFirmwareBuildId (). + getDeviceHardwareVersion (). # Correções de bugs.
Edição.
Produto
0.8.0 0.7.1 0.7.0 0.5.1 0.5.1
Versão: documento 1.4.2 / NanoLib 1.3.0
61
Documentos / Recursos
![]() |
Programação Nanótica NanoLib C++ [pdf] Manual do Usuário NanoLib Programação C, Programação C, Programação |

