Programación en C++ Nanotic NanoLib
Información do produto
Especificacións
- Nome do produto: NanoLib
- Programación Linguaxe: C++
- Versión do produto: 1.3.0
- Versión manual de usuario: 1.4.2
A biblioteca NanoLib está deseñada para programar software de control para controladores Nanotec. Ofrece unha interface de usuario, funcionalidades principais e bibliotecas de comunicación para facilitar o desenvolvemento de aplicacións de control.
Instrucións de uso do produto
- Antes de comezar:
- Asegúrese de que o seu sistema cumpra os requisitos de hardware especificados no manual. O público destinado a este produto inclúe desenvolvedores que buscan crear software de control para controladores Nanotec.
- Comezando:
- Para comezar a usar NanoLib, siga estes pasos:
- Comeza importando NanoLib ao teu proxecto.
- Configura a configuración do teu proxecto segundo sexa necesario.
- Crea o teu proxecto para incorporar as funcionalidades de NanoLib.
- Creación de proxectos:
- Podes crear proxectos para ambientes Windows e Linux. Siga as instrucións específicas proporcionadas no manual para cada plataforma.
- Referencia de clases/funcións:
- Consulte o manual do usuario para obter unha guía detallada sobre as clases e funcións dispoñibles en NanoLib para programar o software de control.
Preguntas frecuentes
- P: Cal é o propósito de NanoLib?
- A: NanoLib é unha biblioteca para programar software de control para controladores Nanotec, que ofrece funcionalidades esenciais e capacidades de comunicación.
- P: Como podo comezar con NanoLib?
- A: Comeza importando NanoLib ao teu proxecto, configurando a configuración do proxecto e construíndo o teu proxecto para utilizar as funcións de NanoLib.
"'
Manual de usuario NanoLib
C++
Válido coa versión do produto 1.3.0
Versión do manual de usuario: 1.4.2
Obxectivo e convencións do documento
Este documento describe a configuración e o uso da biblioteca NanoLib e contén unha referencia a todas as clases e funcións para programar o seu propio software de control para controladores Nanotec. Usamos os seguintes tipos de letra:
O texto subliñado marca unha referencia cruzada ou hipervínculo.
Example 1: Para obter instrucións exactas sobre o NanoLibAccessor, consulte Configuración. Example 2: Instale o controlador Ixxat e conecte o adaptador CAN a USB. O texto en cursiva significa: Este é un obxecto con nome, unha ruta de menú / elemento, unha pestana / file nome ou (se é necesario) unha expresión en lingua estranxeira.
Example 1: Seleccione File > Novo > Documento en branco. Abre a pestana Ferramenta e selecciona Comentario. Example 2: Este documento divide os usuarios (= Nutzer; usuario; utente; utilisateur; utente etc.) de:
– Usuario de terceiros (= Drittnutzer; terceiro usuario; terceiro utente; tiers utilisateur; terzo utente etc.). – Usuario final (= Endnutzer; usuario final; utente final; utilisateur final; utente final etc.).
O Courier marca bloques de código ou comandos de programación. Example 1: A través de Bash, chame sudo make install para copiar obxectos compartidos; a continuación, chame a ldconfig. Example 2: Use a seguinte función NanoLibAccessor para cambiar o nivel de rexistro en NanoLib:
// ***** Variante de C++ *****
void setLoggingLevel (nivel de LogLevel);
O texto en negrita enfatiza palabras individuais de importancia crítica. Alternativamente, os signos de admiración entre corchetes enfatizan a importancia crítica (!).
Example 1: Protexa a si mesmo, aos demais e ao seu equipo. Siga as nosas notas xerais de seguridade que son aplicables xeralmente a todos os produtos Nanotec.
Example 2: Para a súa propia protección, siga tamén as notas de seguridade específicas que se aplican a este produto específico. O verbo co-click significa un clic mediante a tecla secundaria do rato para abrir un menú contextual, etc.
Example 1: fai clic co botón file, seleccione Renomear e renomear file. Example 2: Para comprobar as propiedades, fai co-clic no botón file e seleccione Propiedades.
Versión: doc 1.4.2 / NanoLib 1.3.0
4
Antes de comezar
Antes de comezar a usar NanoLib, prepare o seu PC e infórmese sobre o uso previsto e as limitacións da biblioteca.
2.1 Requisitos do sistema e hardware
AVISO Mal funcionamento debido á operación de 32 bits ou sistema descontinuado! Use e manteña constantemente un sistema de 64 bits. Observe as interrupcións do OEM e as ~instrucións.
NanoLib 1.3.0 admite todos os produtos Nanotec con CANopen, Modbus RTU (tamén USB no porto de comunicación virtual), Modbus TCP, EtherCat e Profinet. Para NanoLibs máis antigas: Vexa o rexistro de cambios na pegada. Só baixo o seu risco: uso do sistema legado. Nota: Siga as instrucións OEM válidas para establecer a latencia o máis baixa posible se ten problemas ao utilizar un adaptador USB baseado en FTDI.
Requisitos (sistema de 64 bits obrigatorio)
Windows 10 ou 11 con Visual Studio 2019 versión 16.8 ou posterior e Windows SDK 10.0.20348.0 (versión 2104) ou posterior
Redistribuíbles C++ 2017 ou superior CANopen: controlador básico Ixxat VCI ou PCAN (opcional) Módulo EtherCat / Profinet DCP: Npcap ou WinPcap Módulo RESTful: Npcap, WinPcap ou permiso de administrador para
comunicarse con cargadores de arranque Ethernet
Linux con Ubuntu 20.04 LTS a 24 (todos x64 e arm64)
Cabeceiras do núcleo e paquete libpopt-dev Profinet DCP: capacidade CAP_NET_ADMIN e CAP_NET_RAW
lazos CANopen: controlador Ixxat ECI o adaptador Peak PCAN-USB EtherCat: CAP_NET_ADMIN, CAP_NET_RAW e
CAP_SYS_NICE habilidades RESTful: CAP_NET_ADMIN capacidade de comunicarse con Eth-
cargadores de arranque ernet (tamén recomendado: CAP_NET_RAW)
Idioma, adaptadores de bus de campo, cables
C++ GCC 7 ou superior (Linux)
EtherCAT: cable Ethernet VCP / concentrador USB: agora uniforme USB Almacenamento masivo USB: cable USB REST: cable Ethernet CANopen: Ixxat USB-to-CAN V2; Na-
notec ZK-USB-CAN-1, adaptador Peak PCANUSB Sen soporte Ixxat para Ubuntu en arm64
Modbus RTU: Nanotec ZK-USB-RS485-1 ou adaptador equivalente; Cable USB no porto de comunicación virtual (VCP)
Modbus TCP: cable Ethernet segundo a folla de datos do produto
2.2 Uso previsto e público
NanoLib é unha biblioteca de programas e un compoñente de software para o funcionamento e a comunicación con controladores Nanotec nunha ampla gama de aplicacións industriais e só para programadores debidamente cualificados.
Debido ao hardware (PC) e ao sistema operativo incapaces de tempo real, NanoLib non se pode usar en aplicacións que necesiten movementos múltiples de eixes sincrónicos ou que en xeral son sensibles ao tempo.
En ningún caso pode integrar NanoLib como compoñente de seguridade nun produto ou sistema. Na entrega aos usuarios finais, debes engadir os avisos de advertencia e instrucións correspondentes para un uso seguro e unha operación segura a cada produto cun compoñente fabricado por Nanotec. Debes enviar todos os avisos de advertencia emitidos por Nanotec directamente ao usuario final.
2.3 Ámbito de entrega e garantía
NanoLib vén como un cartafol *.zip da nosa descarga websitio para EMEA/APAC o AMÉRICA. Almacene e descomprima debidamente a descarga antes da configuración. O paquete NanoLib contén:
Versión: doc 1.4.2 / NanoLib 1.3.0
5
2 Antes de comezar
Cabeceiras da interface como código fonte (API)
Funcións básicas como bibliotecas en formato binario: nano-
Bibliotecas que facilitan a comunicación: nanolibm_ lib.dll
[yourfieldbus].dll etc.Exampo proxecto: example.sln (Visual Studio
proxecto) e example.cpp (principal file)
Para o alcance da garantía, observe a) os nosos termos e condicións para EMEA/APAC ou AMÉRICA e b) todos os termos da licenza. Nota: Nanotec non se fai responsable da calidade, manipulación, instalación, operación, uso e mantemento defectuosos ou indebidos de equipos de terceiros. Para a debida seguridade, siga sempre as instrucións OEM válidas.
Versión: doc 1.4.2 / NanoLib 1.3.0
6
A arquitectura NanoLib
A estrutura de software modular de NanoLib permítelle organizar funcións de controlador de motor/bus de campo libremente personalizables ao redor dun núcleo estritamente preconstruído. NanoLib contén os seguintes módulos:
Interface de usuario (API)
Núcleo NanoLib
Interface e clases auxiliares que Bibliotecas que
Bibliotecas de comunicación Bibliotecas específicas de bus de campo que
acceder á aplicación do seu controlador a funcionalidade da API facer a interface entre NanoLib
OD (dicionario de obxectos)
interactuar coas bibliotecas de autobuses.
núcleo e hardware de bus.
baseado na función central NanoLib
nacionalidades.
3.1 Interface de usuario
A interface de usuario consiste nunha interface de cabeceira files pode usar para acceder aos parámetros do controlador. As clases da interface de usuario descritas na referencia de clases/funcións permítenche:
Conéctese tanto ao hardware (adaptador de bus de campo) como ao dispositivo controlador. Acceda ao OD do dispositivo, para ler/escribir os parámetros do controlador.
3.2 Núcleo NanoLib
O núcleo NanoLib inclúe a biblioteca de importación nanolib.lib. Implementa a funcionalidade da interface de usuario e é responsable de:
Carga e xestión das bibliotecas de comunicación. Proporcionar as funcionalidades da interface de usuario no NanoLibAccessor. Este punto de entrada de comunicación de-
multa un conxunto de operacións que pode executar no núcleo NanoLib e nas bibliotecas de comunicación.
3.3 Bibliotecas de comunicación
Ademais de nanotec.services.nanolib.dll (útil para o seu Plug & Drive Studio opcional), NanoLib ofrece as seguintes bibliotecas de comunicación:
nanolibm_canopen.dll nanolibm_modbus.dll
nanolibm_ethercat.dll nanolibm_restful-api.dll
nanolibm_usbmmsc.dll nanolibm_profinet.dll
Todas as bibliotecas sitúan unha capa de abstracción de hardware entre o núcleo e o controlador. O núcleo cárgaos ao inicio desde o cartafol do proxecto designado e utilízaos para establecer comunicación co controlador mediante o protocolo correspondente.
Versión: doc 1.4.2 / NanoLib 1.3.0
7
Comezando
Lea como configurar NanoLib para o seu sistema operativo debidamente e como conectar o hardware segundo sexa necesario.
4.1 Prepare o seu sistema
Antes de instalar os controladores do adaptador, prepare primeiro o seu PC ao longo do sistema operativo. Para preparar o PC ao longo do seu sistema operativo Windows, instale MS Visual Studio con extensións C++. Para instalar make e gcc de Linux Bash, chame a sudo apt install build-essentials. A continuación, active as capacidades CAP_NET_ADMIN, CAP_NET_RAW e CAP_SYS_NICE para a aplicación que usa NanoLib: 1. Chame a sudo setcap 'cap_net_admin,cap_net_raw,cap_sys_nice+eip'
nome>. 2. Só entón, instale os controladores do adaptador.
4.2 Instale o controlador do adaptador Ixxat para Windows
Só despois da debida instalación do controlador, pode usar o adaptador USB a CAN V2 de Ixxat. Lea o manual do produto das unidades USB para saber se / como activar o puerto virtual (VCP). 1. Descargue e instale o controlador VCI 4 de Ixxat para Windows desde www.ixxat.com. 2. Conecte o adaptador compacto USB-to-CAN V2 de Ixxat ao PC mediante USB. 3. Por Xestor de dispositivos: Comprobe se tanto o controlador como o adaptador están debidamente instalados/recoñecidos.
4.3 Instale o controlador do adaptador Peak para Windows
Só despois da debida instalación do controlador, pode usar o adaptador PCAN-USB de Peak. Lea o manual do produto das unidades USB para saber se / como activar o puerto virtual (VCP). 1. Descargue e instale a configuración do controlador de dispositivo de Windows (= paquete de instalación con controladores de dispositivo, ferramentas e
API) de http://www.peak-system.com. 2. Conecte o adaptador PCAN-USB de Peak ao PC mediante USB. 3. Por Xestor de dispositivos: Comprobe se tanto o controlador como o adaptador están debidamente instalados/recoñecidos.
4.4 Instale o controlador do adaptador Ixxat para Linux
Só despois da debida instalación do controlador, pode usar o adaptador USB a CAN V2 de Ixxat. Nota: Outros adaptadores compatibles necesitan os teus permisos por sudo chmod +777/dev/ttyACM* (* número de dispositivo). Lea o manual do produto das unidades USB para saber se / como activar o puerto virtual (VCP). 1. Instale o software necesario para o controlador ECI e a aplicación de demostración:
sudo apt-get update apt-get install libusb-1.0-0-dev libusb-0.1-4 libc6 libstdc++6 libgcc1 buildessential
2. Descargue o controlador ECI-for-Linux de www.ixxat.com. Descomprimilo a través de:
descomprimir eci_driver_linux_amd64.zip
3. Instale o controlador mediante:
cd /EciLinux_amd/src/KernelModule sudo make install-usb
4. Comprobe a instalación correcta do controlador compilando e iniciando a aplicación de demostración:
cd /EciLinux_amd/src/EciDemos/ sudo make cd /EciLinux_amd/bin/release/ ./LinuxEciDemo
Versión: doc 1.4.2 / NanoLib 1.3.0
8
4 Primeiros pasos
4.5 Instale o controlador do adaptador Peak para Linux
Só despois da debida instalación do controlador, pode usar o adaptador PCAN-USB de Peak. Nota: Outros adaptadores compatibles necesitan os teus permisos por sudo chmod +777/dev/ttyACM* (* número de dispositivo). Lea o manual do produto das unidades USB para saber se / como activar o puerto virtual (VCP). 1. Comproba se o teu Linux ten cabeceiras do núcleo: ls /usr/src/linux-headers-`uname -r`. Se non, instala
eles: sudo apt-get install linux-headers-`uname -r` 2. Só agora, instale o paquete libpopt-dev: sudo apt-get install libpopt-dev 3. Descargue o paquete de controladores necesario (peak-linux-driver- xxx.tar.gz) de www.peak-system.com. 4. Para descomprimilo, use: tar xzf peak-linux-driver-xxx.tar.gz 5. No cartafol desempaquetado: Compile e instale os controladores, a biblioteca base PCAN, etc.:
sudo make install 6. Para comprobar a función, conecte o adaptador PCAN-USB.
a) Comprobe o módulo do núcleo:
lsmod | grep pcan b) ... e a biblioteca compartida:
ls -l /usr/lib/libpcan*
Nota: Se ocorren problemas con USB3, use un porto USB2.
4.6 Conecta o teu hardware
Para poder executar un proxecto NanoLib, conecte un controlador Nanotec compatible ao PC usando o seu adaptador. 1. Mediante un cable axeitado, conecte o seu adaptador ao controlador. 2. Conecte o adaptador ao PC segundo a folla de datos do adaptador. 3. Encienda o controlador utilizando unha fonte de alimentación adecuada. 4. Se é necesario, cambie a configuración de comunicación do controlador Nanotec segundo se indica no manual do produto.
4.7 Cargar NanoLib
Para comezar con conceptos básicos rápidos e sinxelos, podes (pero non debes) usar o noso exampo proxecto. 1. Dependendo da túa rexión: Descarga NanoLib do noso websitio para EMEA/APAC o AMÉRICA. 2. Descomprimir o paquete files / e seleccione unha opción: Para obter información básica rápida e sinxela: consulte Iniciar o exampo proxecto. Para unha personalización avanzada en Windows: consulte Creación do seu propio proxecto Windows. Para unha personalización avanzada en Linux: consulte Creación do seu propio proxecto Linux.
Versión: doc 1.4.2 / NanoLib 1.3.0
9
Comezando o exampo proxecto
Con NanoLib debidamente cargado, o exampo proxecto móstrache a través do uso de NanoLib cun controlador Nanotec. Nota: Para cada paso, comentarios no exampo código explica as funcións empregadas. O exampo proxecto do ficheiro consta de: o `*_functions_example.*' files, que conteñen as implementacións para as funcións da interface NanoLib o `*_callback_example.*' files, que conteñen implementacións para as distintas devolucións de chamada (escaneo, datos e
rexistro) o `menú_*.*' file, que contén a lóxica do menú e codifica o Example.* file, que é o programa principal, creando o menú e inicializando todos os parámetros utilizados o Sampler_example.* file, que contén o example implementación para sampler uso. Podes atopar máis examples, con algúns comandos de movemento para varios modos de funcionamento, na base de coñecemento de nanotec.com. Todos son utilizables en Windows ou Linux.
En Windows con Visual Studio 1. Abra o Example.sln file. 2. Abre o example.cpp. 3. Compila e executa o exampcódigo le.
En Linux a través de Bash 1. Descomprimir a fonte file, navegue ata o cartafol con contido descomprimido. O principal file para o example é
example.cpp. 2. No bash, chama a:
a. "sudo make install" para copiar os obxectos compartidos e chamar a ldconfig. b. "facer todo" para construír o executable de proba. 3. O cartafol bin contén un executable example file. Por bash: vai ao cartafol de saída e escribe ./example. Se non se produce ningún erro, agora os teus obxectos compartidos están debidamente instalados e a túa biblioteca está lista para o seu uso. Se o erro é ./example: erro ao cargar bibliotecas compartidas: libnanolib.so: non se pode abrir o obxecto compartido file: Non tal file ou directorio, a instalación dos obxectos compartidos fallou. Neste caso, siga os seguintes pasos. 4. Cree un novo cartafol dentro de /usr/local/lib (necesítanse dereitos de administrador). No bash, escriba:
sudo mkdir /usr/local/lib/nanotec
5. Copia todos os obxectos compartidos do zip filecartafol lib de:
instalar ./lib/*.so /usr/local/lib/nanotec/
6. Comprobe o contido do cartafol de destino con:
ls -al /usr/local/lib/nanotec/
Debería listar o obxecto compartido files do cartafol lib. 7. Execute ldconfig neste cartafol:
sudo ldconfig /usr/local/lib/nanotec/
O example implícase como unha aplicación CLI e proporciona unha interface de menú. As entradas do menú están baseadas no contexto e activaranse ou desactivaranse, dependendo do estado do contexto. Ofrécenlle a posibilidade de seleccionar e executar varias funcións da biblioteca seguindo o fluxo de traballo típico para manexar un controlador: 1. Comprobe no PC se hai hardware conectado (adaptadores) e enumeralos. 2. Establece a conexión cun adaptador. 3. Analiza o bus en busca de dispositivos controladores conectados. 4. Conéctate a un dispositivo.
Versión: doc 1.4.2 / NanoLib 1.3.0
10
5 Comezando o exampo proxecto
5. Proba unha ou máis das funcións da biblioteca: ler/escribir desde/para o dicionario de obxectos do controlador, actualizar o firmware, cargar e executar un programa NanoJ, facer funcionar o motor e axustalo, configurar e utilizar os rexistros.ampler.
6. Pecha a conexión, primeiro ao dispositivo e despois ao adaptador.
Versión: doc 1.4.2 / NanoLib 1.3.0
11
Creando o seu propio proxecto Windows
Crea, compila e executa o teu propio proxecto de Windows para usar NanoLib.
6.1 Importar NanoLib
Importa a cabeceira de NanoLib files e bibliotecas a través de MS Visual Studio.
1. Abre Visual Studio. 2. A través de Crear novo proxecto > Aplicación da consola C++ > Seguinte: Seleccione un tipo de proxecto. 3. Nomee o seu proxecto (aquí: NanolibTest) para crear un cartafol do proxecto no Explorador de solucións. 4. Seleccione Finalizar. 5. Abre as fiestras file explorador e navegue ata o novo cartafol do proxecto creado. 6. Crea dous cartafoles novos, inc e lib. 7. Abre o cartafol do paquete NanoLib. 8. A partir de aí: Copia a cabeceira files do cartafol de inclusión no cartafol do proxecto inc e todos os .lib e .dll
files ao novo cartafol do proxecto lib. 9. Comprobe o cartafol do seu proxecto para ver a estrutura adecuada, por exemploampLe:
cartafol ect para a estrutura debida:
. 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.filters NanolibTest.
6.2 Configura o teu proxecto
Use o Explorador de solucións en MS Visual Studio para configurar proxectos NanoLib. Nota: Para o funcionamento correcto de NanoLib, seleccione a configuración de lanzamento (non depurar!) na configuración do proxecto Visual C++; a continuación, constrúe e ligue o proxecto con tempos de execución VC de redistribuíbles C++ [2022].
1. No Explorador de solucións: Vaia ao cartafol do proxecto (aquí: NanolibTest). 2. Fai clic no cartafol para abrir o menú contextual. 3. Seleccione Propiedades. 4. Active Todas as configuracións e Todas as plataformas. 5. Seleccione C/C++ e vaia a Directorios de inclusión adicionais. 6. Insira: $(ProjectDir)Nanolib/includes;%(AdditionalIncludeDirectories) 7. Seleccione Enlace e vaia a Directorios adicionais da biblioteca. 8. Insira: $(ProjectDir)Nanolib;%(AdditionalLibraryDirectories) 9. Estenda o Linker e seleccione Input. 10.Vaia a Dependencias adicionais e insira: nanolib.lib;%(Dependencias adicionais) 11.Confirme a través de Aceptar.
Versión: doc 1.4.2 / NanoLib 1.3.0
12
6 Creando o seu propio proxecto Windows
12. Vaia a Configuración > C++ > Idioma > Estándar de linguaxe > Estándar ISO C++17 e configure o estándar de linguaxe en C++17 (/std:c++17).
6.3 Constrúe o teu proxecto
Crea o teu proxecto NanoLib en MS Visual Studio. 1. Abre o *.cpp principal file (aquí: nanolib_example.cpp) e edita o código, se é necesario. 2. Seleccione Construír > Xestor de configuración. 3. Cambia as plataformas de solucións activas a x64. 4. Confirme mediante Pechar. 5. Seleccione Construír > Construír solución. 6. Sen erro? Comprobe se a saída da compilación informa debidamente:
1>—— Limpeza iniciada: Proxecto: NanolibTest, Configuración: Depuración x64 —–========== Limpeza: 1 con éxito, 0 fallo, 0 omitido ==========
Versión: doc 1.4.2 / NanoLib 1.3.0
13
7 Creando o seu propio proxecto Linux
7 Creando o seu propio proxecto Linux
Crea, compila e executa o teu propio proxecto Linux para usar NanoLib. 1. No kit de instalación de NanoLib descomprimido: Abre /nanotec_nanolib. 2. Busca todos os obxectos compartidos no tar.gz file. 3. Seleccione unha opción: Instale cada biblioteca cun Makefile ou a man.
7.1 Instala os obxectos compartidos con Makefile
Usa Makefile con Linux Bash para instalar automaticamente todos os *.so predeterminados files. 1. Vía Bash: vai ao cartafol que contén a marcafile. 2. Copia os obxectos compartidos mediante:
sudo make install 3. Confirme mediante:
ldconfig
7.2 Instalar os obxectos compartidos a man
Use un Bash para instalar todos os *.so files de NanoLib manualmente. 1. Vía Bash: cree un novo cartafol dentro de /usr/local/lib. 2. Necesítanse dereitos de administrador! Tipo:
sudo mkdir /usr/local/lib/nanotec 3. Cambie ao cartafol do paquete de instalación descomprimido. 4. Copie todos os obxectos compartidos do cartafol lib a través de:
instale ./nanotec_nanolib/lib/*.so /usr/local/lib/nanotec/ 5. Comprobe o contido do cartafol de destino mediante:
ls -al /usr/local/lib/nanotec/ 6. Comprobe se están listados todos os obxectos compartidos do cartafol lib. 7. Execute ldconfig neste cartafol a través de:
sudo ldconfig /usr/local/lib/nanotec/
7.3 Crea o teu proxecto
Cos teus obxectos compartidos instalados: crea un novo proxecto para o teu Linux NanoLib. 1. A través de Bash: crea un novo cartafol do proxecto (aquí: NanoLibTest) a través de:
mkdir NanoLibTest cd NanoLibTest
2. Copia a cabeceira files a un cartafol de inclusión (aquí: inc) a través de: mkdir inc cp / FILE IS>/nanotec_nanolib/inc/*.hpp inc
3. Crea un principal file (NanoLibTest.cpp) vía: #include “accessor_factory.hpp” #include
Versión: doc 1.4.2 / NanoLib 1.3.0
14
7 Creando o seu propio proxecto Linux
int main(){ nlc::NanoLibAccessor *accessor = getNanoLibAccessor();
nlc::ResultBusHwIds resultado = accesor->listAvailableBusHardware();
if(result.hasError()) { std::cout << result.getError() << std::endl; }
else{ std::cout << "Éxito" << std::endl; }
eliminar accesorio; devolver 0; }
4. Comproba a estrutura do cartafol do teu proxecto:
. NanoLibTest
inc accessor_factory.hpp bus_hardware_id.hpp … od_index.hpp result.hpp NanoLibTest.cpp
7.4 Compila e proba o teu proxecto
Prepara o teu Linux NanoLib para usar a través de Bash.
1. Vía Bash: compila o principal file vía:
g++ -Wall -Wextra -pedante -I./inc -c NanoLibTest.cpp -o NanoLibTest
2. Enlace o executable a través de:
g++ -Wall -Wextra -pedant -I./inc -o test NanoLibTest.o L/usr/local/lib/nanotec -lnanolib -ldl
3. Executa o programa de proba a través de:
./proba
4. Comproba se o teu Bash informa debidamente:
éxito
Versión: doc 1.4.2 / NanoLib 1.3.0
15
8 Referencia de clases/funcións
8 Referencia de clases/funcións
Atopa aquí unha lista das clases de interface de usuario de NanoLib e as súas funcións membros. A descrición típica dunha función inclúe unha breve introdución, a definición da función e unha lista de parámetros/devolucións:
ExampleFunction () Indícanoche brevemente o que fai a función.
virtual void nlc::NanoLibAccessor::ExampleFunction (Param_a const & param_a, Param_b const e param_B)
Parámetros param_a param_b
Devolve ResultVoid
Comentario adicional se é necesario. Comentario adicional se é necesario.
8.1 NanoLibAccessor
Clase de interface usada como punto de entrada ao NanoLib. Un fluxo de traballo típico é así:
1. Comeza buscando hardware con NanoLibAccessor.listAvailableBusHardware (). 2. Estableza a configuración de comunicación con BusHardwareOptions (). 3. Abra a conexión de hardware con NanoLibAccessor.openBusHardwareWithProtocol (). 4. Analiza o bus en busca de dispositivos conectados con NanoLibAccessor.scanDevices (). 5. Engade un dispositivo con NanoLibAccessor.addDevice (). 6. Conéctate ao dispositivo con NanoLibAccessor.connectDevice (). 7. Despois de rematar a operación, desconecte o dispositivo con NanoLibAccessor.disconnectDevice (). 8. Elimina o dispositivo con NanoLibAccessor.removeDevice (). 9. Pecha a conexión de hardware con NanoLibAccessor.closeBusHardware ().
NanoLibAccessor ten as seguintes funcións públicas de membros:
listAvailableBusHardware () Use esta función para listar o hardware de bus de campo dispoñible.
virtual ResultBusHwIds nlc::NanoLibAccessor::listAvailableBusHardware ()
Devolve ResultBusHwIds
Ofrece unha matriz de ID de bus de campo.
openBusHardwareWithProtocol () Use esta función para conectar o hardware de bus.
virtual ResultVoid nlc::NanoLibAccessor::openBusHardwareWithProtocol (BusHardwareId const & busHwId, BusHardwareOptions const & busHwOpt)
Parámetros busHwId busHwOpt
Devolve ResultVoid
Especifica o bus de campo a abrir. Especifica as opcións de apertura do bus de campo. Confirma que se executou unha función void.
isBusHardwareOpen () Use esta función para comprobar se a súa conexión de hardware de bus de campo está aberta.
virtual ResultVoid nlc::NanoLibAccessor::openBusHardwareWithProtocol (const BusHardwareId e busHwId, const BusHardwareOptions e busHwOpt)
Versión: doc 1.4.2 / NanoLib 1.3.0
16
8 Referencia de clases/funcións
Parámetros BusHardwareId Devolve verdadeiro
falso
Especifica cada bus de campo a abrir. O hardware está aberto. O hardware está pechado.
getProtocolSpecificAccessor () Use esta función para obter o obxecto de acceso específico do protocolo.
virtual ResultVoid nlc::NanoLibAccessor::getProtocolSpecificAccessor (BusHardwareId const & busHwId)
Parámetros busHwId Devolve ResultVoid
Especifica o bus de campo para o que obter o accesorio. Confirma que se executou unha función void.
getProfinetDCP () Use esta función para devolver unha referencia á interface de Profinet DCP.
ProfinetDCP virtual e getProfinetDCP ()
Devolve ProfinetDCP
obtén SamplerInterface () Use esta función para obter unha referencia ao sampler interface.
virtual SamplerInterface e getSamplerInterface ()
Devolve SamplerInterface
Refírese ao sampclase de interface ler.
setBusState () Use esta función para establecer o estado específico do protocolo de bus.
virtual ResultVoid nlc::NanoLibAccessor::setBusState (const BusHardwareId & busHwId, const std::string & state)
Parámetros busHwId state
Devolve ResultVoid
Especifica o bus de campo a abrir. Asigna un estado específico de bus como valor de cadea. Confirma que se executou unha función void.
scanDevices () Use esta función para buscar dispositivos na rede.
Virtual ResultDeviceIds nlc::NanoLibAccessor::scanDevices (const BusHardwareId & busHwId, NlcScanBusCallback* callback)
Parámetros busHwId callback
Devolve ResultDeviceIds IOError
Especifica o bus de campo para escanear. Trazador de progreso de NlcScanBusCallback. Ofrece unha matriz de ID de dispositivo. Informa de que non se atopa un dispositivo.
Versión: doc 1.4.2 / NanoLib 1.3.0
17
8 Referencia de clases/funcións
engadir dispositivo ()
Use esta función para engadir un dispositivo de bus descrito por deviceId á lista de dispositivos internos de NanoLib e devolver deviceHandle para el.
Virtual ResultDeviceHandle nlc::NanoLibAccessor::addDevice (DeviceId const e deviceId)
Parámetros deviceId Devolve ResultDeviceHandle
Especifica o dispositivo para engadir á lista. Ofrece un controlador de dispositivo.
connectDevice () Use esta función para conectar un dispositivo mediante deviceHandle.
virtual ResultVoid nlc::NanoLibAccessor::connectDevice (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultVoid
IOErro
Especifica a que dispositivo de bus se conecta NanoLib. Confirma que se executou unha función void. Informa de que non se atopa un dispositivo.
getDeviceName () Use esta función para obter o nome dun dispositivo mediante deviceHandle.
Virtual ResultString nlc::NanoLibAccessor::getDeviceName (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultString
Especifica que dispositivo de bus recibe o nome de NanoLib. Ofrece nomes de dispositivos como unha cadea.
getDeviceProductCode () Use esta función para obter o código de produto dun dispositivo mediante deviceHandle.
virtual ResultInt nlc::NanoLibAccessor::getDeviceProductCode (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultInt
Especifica para que dispositivo de bus recibe o código do produto NanoLib. Ofrece códigos de produto como un número enteiro.
getDeviceVendorId () Use esta función para obter o ID do vendedor do dispositivo mediante deviceHandle.
virtual ResultInt nlc::NanoLibAccessor::getDeviceVendorId (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultInt
Recurso non dispoñible
Especifica para que dispositivo de bus recibe NanoLib o ID de provedor. Ofrece ID de provedor como un número enteiro. Informa que non se atopan datos.
Versión: doc 1.4.2 / NanoLib 1.3.0
18
8 Referencia de clases/funcións
getDeviceId () Use esta función para obter o ID dun dispositivo específico da lista interna de NanoLib.
virtual ResultDeviceId nlc::NanoLibAccessor::getDeviceId (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultDeviceId
Especifica para que dispositivo de bus recibe o ID do dispositivo NanoLib. Ofrece un ID de dispositivo.
getDeviceIds () Use esta función para obter o ID de todos os dispositivos da lista interna de NanoLib.
Virtual ResultDeviceIds nlc::NanoLibAccessor::getDeviceIds ()
Devolve ResultDeviceIds
Ofrece unha lista de ID do dispositivo.
getDeviceUid () Use esta función para obter o ID único dun dispositivo (96 bits / 12 bytes) mediante deviceHandle.
virtual ResultArrayByte nlc::NanoLibAccessor::getDeviceUid (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultArrayByte
Recurso non dispoñible
Especifica para que dispositivo de bus NanoLib obtén o ID único. Ofrece ID únicos como matriz de bytes. Informa que non se atopan datos.
getDeviceSerialNumber () Use esta función para obter o número de serie dun dispositivo mediante deviceHandle.
Virtual ResultString NanolibAccessor::getDeviceSerialNumber (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultString
Recurso non dispoñible
Especifica para que dispositivo de bus recibe o número de serie NanoLib. Ofrece números de serie como unha cadea. Informa que non se atopan datos.
getDeviceHardwareGroup () Use esta función para obter o grupo de hardware dun dispositivo de bus por deviceHandle.
virtual ResultDeviceId nlc::NanoLibAccessor::getDeviceHardwareGroup (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultInt
Especifica para que dispositivo de bus recibe o grupo de hardware NanoLib.
Ofrece grupos de hardware como un número enteiro.
getDeviceHardwareVersion () Use esta función para obter a versión de hardware dun dispositivo de bus mediante deviceHandle.
Virtual ResultDeviceId nlc::NanoLibAccessor::getDeviceHardwareVersion (DeviceHandle const deviceHandle)
Versión: doc 1.4.2 / NanoLib 1.3.0
19
8 Referencia de clases/funcións
Parámetros deviceHandle
Devolucións
ResultString ResourceUnavailable
Especifica para que dispositivo de bus recibe a versión de hardware NanoLib. Ofrece nomes de dispositivos como unha cadea. Informa que non se atopan datos.
getDeviceFirmwareBuildId () Use esta función para obter o ID de compilación de firmware dun dispositivo de bus mediante deviceHandle.
virtual ResultDeviceId nlc::NanoLibAccessor::getDeviceFirmwareBuildId (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultString
Especifica para que dispositivo de bus recibe NanoLib o ID de compilación de firmware.
Ofrece nomes de dispositivos como unha cadea.
getDeviceBootloaderVersion () Use esta función para obter a versión do cargador de arranque dun dispositivo de bus mediante deviceHandle.
virtual ResultInt nlc::NanoLibAccessor::getDeviceBootloaderVersion (DeviceHandle const deviceHandle)
Parámetros deviceHandle
Devolucións
ResultInt ResourceUnavailable
Especifica para que dispositivo de bus recibe NanoLib a versión do cargador de arranque. Ofrece versións do cargador de arranque como un número enteiro. Informa que non se atopan datos.
getDeviceBootloaderBuildId () Use esta función para obter o ID de compilación do cargador de arranque dun dispositivo de bus mediante deviceHandle.
Virtual ResultDeviceId nlc::NanoLibAccessor:: (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultString
Especifica para que dispositivo de bus recibe NanoLib o ID de compilación do cargador de arranque.
Ofrece nomes de dispositivos como unha cadea.
rebootDevice () Use esta función para reiniciar o dispositivo mediante deviceHandle.
virtual ResultVoid nlc::NanoLibAccessor::rebootDevice (const DeviceHandle deviceHandle)
Parámetros deviceHandle Devolve ResultVoid
Especifica o bus de campo para reiniciar. Confirma que se executou unha función void.
getDeviceState () Use esta función para obter o estado específico do protocolo do dispositivo.
Virtual ResultString nlc::NanoLibAccessor::getDeviceState (DeviceHandle const deviceHandle)
Parámetros deviceHandle
Especifica para que dispositivo de bus recibe o estado NanoLib.
Versión: doc 1.4.2 / NanoLib 1.3.0
20
8 Referencia de clases/funcións
Devolve ResultString
Ofrece nomes de dispositivos como unha cadea.
setDeviceState () Use esta función para establecer o estado específico do protocolo do dispositivo.
virtual ResultVoid nlc::NanoLibAccessor::setDeviceState (const DeviceHandle deviceHandle, const std::string & state)
Parámetros deviceHandle state
Devolve ResultVoid
Especifica para que dispositivo de bus establece o estado NanoLib. Asigna un estado específico de bus como valor de cadea. Confirma que se executou unha función void.
getConnectionState ()
Use esta función para obter o último estado de conexión coñecido dun dispositivo específico mediante deviceHandle (= Desconectado, Conectado, Cargador de arranque conectado)
virtual ResultConnectionState nlc::NanoLibAccessor::getConnectionState (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultConnectionState
Especifica para que dispositivo de bus recibe o estado de conexión NanoLib.
Ofrece un estado de conexión (= Desconectado, Conectado, Cargador de arranque conectado).
checkConnectionState ()
Só se o último estado coñecido non foi Desconectado: use esta función para comprobar e posiblemente actualizar o estado de conexión dun dispositivo específico mediante deviceHandle e probando varias operacións específicas do modo.
virtual ResultConnectionState nlc::NanoLibAccessor::checkConnectionState (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultConnectionState
Especifica o dispositivo de bus para o que NanoLib verifica o estado da conexión.
Ofrece un estado de conexión (= non desconectado).
assignObjectDictionary () Use esta función manual para asignar un dicionario de obxectos (OD) a deviceHandle pola súa conta.
virtual ResultObjectDictionary nlc::NanoLibAccessor::assignObjectDictionary (DeviceHandle const deviceHandle, ObjectDictionary const e objectDictionary)
Parámetros deviceHandle objectDictionary
Devolve ResultObjectDictionary
Especifica a que dispositivo de bus NanoLib asigna o OD. Mostra as propiedades dun dicionario de obxectos.
autoAssignObjectDictionary ()
Use este automatismo para que NanoLib asigne un dicionario de obxectos (OD) a deviceHandle. Ao atopar e cargar un OD axeitado, NanoLib asígnao automaticamente ao dispositivo. Nota: Se xa se carga un OD compatible na biblioteca de obxectos, NanoLib utilizaráo automaticamente sen escanear o directorio enviado.
Virtual ResultObjectDictionary nlc::NanoLibAccessor::autoAssignObjectDictionary (DeviceHandle const deviceHandle, const std::string & dictionariesLocationPath)
Versión: doc 1.4.2 / NanoLib 1.3.0
21
8 Referencia de clases/funcións
Parámetros deviceHandle
Devolucións
dicionariosLocationPath ResultObjectDictionary
Especifica para que dispositivo de bus NanoLib buscará automaticamente os OD axeitados. Especifica o camiño ao directorio OD. Mostra as propiedades dun dicionario de obxectos.
getAssignedObjectDictionary ()
Use esta función para obter o dicionario de obxectos asignado a un dispositivo mediante deviceHandle.
virtual ResultObjectDictionary nlc::NanoLibAccessor::getAssignedObjectDictionary (dispositivo const DeviceHandle
asa)
Parámetros deviceHandle Devolve ResultObjectDictionary
Especifica para que dispositivo de bus NanoLib recibe o OD asignado. Mostra as propiedades dun dicionario de obxectos.
getObjectDictionaryLibrary () Esta función devolve unha referencia a OdLibrary.
virtual OdLibrary& nlc::NanoLibAccessor::getObjectDictionaryLibrary ()
Devolve OdLibrary&
Abre toda a biblioteca OD e os seus dicionarios de obxectos.
setLoggingLevel () Use esta función para definir os detalles de rexistro necesarios (e rexistro file tamaño). O nivel predeterminado é Información.
virtual void nlc::NanoLibAccessor::setLoggingLevel (nivel de LogLevel)
Nivel de parámetros
Son posibles os seguintes detalles do rexistro:
0 = Rastrexo 1 = Depuración 2 = Información 3 = Aviso 4 = Erro 5 = Crítico 6 = Desactivado
Nivel máis baixo (registro máis grande file); rexistra calquera detalle factible, ademais de iniciar/parar o software. Rexistros información de depuración (= resultados intermedios, contido enviado ou recibido, etc.) Nivel predeterminado; rexistra mensaxes informativas. Rexistra problemas que ocorreron pero que non deterán o algoritmo actual. Rexistros só problemas graves que detiveron o algoritmo. Nivel máis alto (registro máis pequeno file); desactiva a sesión; non hai máis rexistro. Sen rexistro en absoluto.
setLoggingCallback ()
Use esta función para configurar un punteiro de devolución de chamada de rexistro e un módulo de rexistro (= biblioteca) para esa devolución de chamada (non para o propio rexistrador).
virtual void nlc::NanoLibAccessor::setLoggingCallback (NlcLoggingCallback* callback, const nlc::LogModule & logModule)
Parámetros *callback logModule
Establece un punteiro de devolución de chamada. Sintoniza a devolución de chamada (non o rexistro!) á túa biblioteca.
0 = NanolibCore 1 = NanolibCANopen 2 = NanolibModbus 3 = NanolibEtherCAT
Activa unha devolución de chamada só para o núcleo de NanoLib. Activa unha devolución de chamada só para CANopen. Activa unha devolución de chamada só para Modbus. Activa unha devolución de chamada só para EtherCAT.
Versión: doc 1.4.2 / NanoLib 1.3.0
22
8 Referencia de clases/funcións
4 = NanolibRest 5 = NanolibUSB
Activa unha devolución de chamada só REST. Activa unha devolución de chamada só por USB.
unsetLoggingCallback () Use esta función para cancelar un punteiro de devolución de chamada de rexistro.
virtual void nlc::NanoLibAccessor::unsetLoggingCallback ()
readNumber () Use esta función para ler un valor numérico do dicionario de obxectos.
virtual ResultInt nlc::NanoLibAccessor::readNumber (const DeviceHandle deviceHandle, const OdIndex odIndex)
Parámetros deviceHandle odIndex
Devolve ResultInt
Especifica desde que dispositivo de bus le NanoLib. Especifica o índice (sub-) do que se debe ler. Ofrece un valor numérico non interpretado (pódese asinar, sen asinar, corrixir valores de 16.16 bits).
readNumberArray () Use esta función para ler matrices numéricas do dicionario de obxectos.
virtual ResultArrayInt nlc::NanoLibAccessor::readNumberArray (const DeviceHandle deviceHandle, índice constante uint16_t)
Parámetros índice deviceHandle
Devolve ResultArrayInt
Especifica desde que dispositivo de bus le NanoLib. Índice de obxectos de matriz. Ofrece unha matriz de enteiros.
readBytes () Use esta función para ler bytes arbitrarios (datos do obxecto do dominio) do dicionario de obxectos.
virtual ResultArrayByte nlc::NanoLibAccessor::readBytes (const DeviceHandle deviceHandle, const OdIndex odIndex)
Parámetros deviceHandle odIndex
Devolve ResultArrayByte
Especifica desde que dispositivo de bus le NanoLib. Especifica o índice (sub-) do que se debe ler. Ofrece unha matriz de bytes.
readString () Use esta función para ler cadeas do directorio de obxectos.
Virtual ResultString nlc::NanoLibAccessor::readString (const DeviceHandle deviceHandle, const OdIndex odIndex)
Parámetros deviceHandle odIndex
Devolve ResultString
Especifica desde que dispositivo de bus le NanoLib. Especifica o índice (sub-) do que se debe ler. Ofrece nomes de dispositivos como unha cadea.
Versión: doc 1.4.2 / NanoLib 1.3.0
23
8 Referencia de clases/funcións
writeNumber () Use esta función para escribir valores numéricos no directorio de obxectos.
virtual ResultVoid nlc::NanoLibAccessor::writeNumber (const DeviceHandle deviceHandle, valor int64_t, const OdIndex odIndex, unsigned int bitLength)
Parámetros deviceHandle valor odIndex bitLength
Devolve ResultVoid
Especifica en que dispositivo de bus escribe NanoLib. O valor non interpretado (pódese asinar, sen asinar, corrixir 16.16). Especifica o índice (sub-) do que se debe ler. Lonxitude en bits. Confirma que se executou unha función void.
writeBytes () Use esta función para escribir bytes arbitrarios (datos de obxectos de dominio) no directorio de obxectos.
virtual ResultVoid nlc::NanoLibAccessor::writeBytes (const DeviceHandle deviceHandle, const std::vector & datos, const OdIndex odIndex)
Parámetros deviceHandle data odIndex
Devolve ResultVoid
Especifica en que dispositivo de bus escribe NanoLib. Vector de bytes / matriz. Especifica o índice (sub-) do que se debe ler. Confirma que se executou unha función void.
cargar firmware ()
Use esta función para actualizar o firmware do seu controlador.
virtual ResultVoid nlc::NanoLibAccessor::uploadFirmware (const DeviceHandle deviceHandle, const std::vector & fwData, devolución de chamada NlcDataTransferCallback*)
Parámetros deviceHandle fwData NlcDataTransferCallback
Devolve ResultVoid
Especifica que dispositivo de bus actualiza NanoLib. Matriz que contén datos de firmware. Un rastreador de progreso de datos. Confirma que se executou unha función void.
uploadFirmwareFromFile ()
Use esta función para actualizar o firmware do seu controlador cargando o seu file.
virtual ResultVoid nlc::NanoLibAccessor::uploadFirmwareFromFile (const DeviceHandle deviceHandle, const std::string e absolutoFileRuta, devolución de chamada NlcDataTransferCallback*)
Parámetros deviceHandle absolutoFileRuta NlcDataTransferCallback
Devolve ResultVoid
Especifica que dispositivo de bus actualiza NanoLib. Camiño para file que contén datos de firmware (std::string). Un rastreador de progreso de datos. Confirma que se executou unha función void.
Versión: doc 1.4.2 / NanoLib 1.3.0
24
8 Referencia de clases/funcións
cargar o cargador de arranque ()
Use esta función para actualizar o cargador de arranque do seu controlador.
virtual ResultVoid nlc::NanoLibAccessor::uploadBootloader (const DeviceHandle deviceHandle, const std::vector & btData, devolución de chamada NlcDataTransferCallback*)
Parámetros deviceHandle btData NlcDataTransferCallback
Devolve ResultVoid
Especifica que dispositivo de bus actualiza NanoLib. Matriz que contén datos do cargador de arranque. Un rastreador de progreso de datos. Confirma que se executou unha función void.
cargarBootloaderFromFile ()
Use esta función para actualizar o cargador de arranque do seu controlador cargando o seu file.
virtual ResultVoid nlc::NanoLibAccessor::uploadBootloaderFromFile (const DeviceHandle deviceHandle, const std::string e bootloaderAbsoluteFileRuta, devolución de chamada NlcDataTransferCallback*)
Parámetros deviceHandle bootloaderAbsoluteFileRuta NlcDataTransferCallback
Devolve ResultVoid
Especifica que dispositivo de bus actualiza NanoLib. Camiño para file que contén datos do cargador de arranque (std::string). Un rastreador de progreso de datos. Confirma que se executou unha función void.
cargarBootloaderFirmware ()
Use esta función para actualizar o cargador de arranque e o firmware do seu controlador.
virtual ResultVoid nlc::NanoLibAccessor::uploadBootloaderFirmware (const DeviceHandle deviceHandle, const std::vector & btData, const std::vector & fwData, devolución de chamada NlcDataTransferCallback*)
Parámetros deviceHandle btData fwData NlcDataTransferCallback
Devolve ResultVoid
Especifica que dispositivo de bus actualiza NanoLib. Matriz que contén datos do cargador de arranque. Matriz que contén datos de firmware. Un rastreador de progreso de datos. Confirma que se executou unha función void.
cargarBootloaderFirmwareFromFile ()
Use esta función para actualizar o cargador de arranque e o firmware do seu controlador cargando o files.
virtual ResultVoid nlc::NanoLibAccessor::uploadBootloaderFirmwareFromFile (const DeviceHandle deviceHandle, const std::string e bootloaderAbsoluteFileRuta, const std::string e absolutoFileRuta, devolución de chamada NlcDataTransferCallback*)
Parámetros deviceHandle bootloaderAbsoluteFileCamiño absolutoFileRuta NlcDataTransferCallback
Devolve ResultVoid
Especifica que dispositivo de bus actualiza NanoLib. Camiño para file que contén datos do cargador de arranque (std::string). Camiño para file que contén datos de firmware (uint8_t). Un rastreador de progreso de datos. Confirma que se executou unha función void.
Versión: doc 1.4.2 / NanoLib 1.3.0
25
8 Referencia de clases/funcións
cargarNanoJ ()
Use esta función pública para cargar o programa NanoJ ao seu controlador.
virtual ResultVoid nlc::NanoLibAccessor::uploadNanoJ (DeviceHandle const deviceHandle, std::vector const & vmmData, NlcDataTransferCallback* callback)
Parámetros deviceHandle vmmData NlcDataTransferCallback
Devolve ResultVoid
Especifica a que dispositivo de bus carga NanoLib. Matriz que contén datos NanoJ. Un rastreador de progreso de datos. Confirma que se executou unha función void.
cargarNanoJFromFile ()
Use esta función pública para cargar o programa NanoJ ao seu controlador cargando o file.
virtual ResultVoid nlc::NanoLibAccessor::uploadNanoJFromFile (const DeviceHandle deviceHandle, const std::string e absolutoFileRuta, devolución de chamada NlcDataTransferCallback*)
Parámetros deviceHandle absolutoFileRuta NlcDataTransferCallback
Devolve ResultVoid
Especifica a que dispositivo de bus carga NanoLib. Camiño para file que contén datos NanoJ (std::string). Un rastreador de progreso de datos. Confirma que se executou unha función void.
disconnectDevice () Use esta función para desconectar o dispositivo mediante deviceHandle.
virtual ResultVoid nlc::NanoLibAccessor::disconnectDevice (DeviceHandle const deviceHandle)
Parámetros deviceHandle Devolve ResultVoid
Especifica de qué dispositivo de bus se desconecta NanoLib. Confirma que se executou unha función void.
removeDevice () Use esta función para eliminar o seu dispositivo da lista de dispositivos internos de NanoLib.
virtual ResultVoid nlc::NanoLibAccessor::removeDevice (const DeviceHandle deviceHandle)
Parámetros deviceHandle Devolve ResultVoid
Especifica que dispositivo de bus elimina da lista de NanoLib. Confirma que se executou unha función void.
closeBusHardware () Use esta función para desconectarse do seu hardware de bus de campo.
virtual ResultVoid nlc::NanoLibAccessor::closeBusHardware (BusHardwareId const & busHwId)
Parámetros busHwId Devolve ResultVoid
Especifica o bus de campo do que se desconecta. Confirma que se executou unha función void.
Versión: doc 1.4.2 / NanoLib 1.3.0
26
8 Referencia de clases/funcións
8.2 BusHardwareId
Use esta clase para identificar un hardware de bus un a un ou para distinguir diferentes hardware de bus entre si. Esta clase (sen funcións de configuración que sexan inmutables desde a creación) tamén contén información sobre:
Hardware (= nome do adaptador, adaptador de rede, etc.) Protocolo a usar (= Modbus TCP, CANopen, etc.) Especificador de hardware de bus (= nome do porto serie, nome amigable MAC
enderezo, etc.)
BusHardwareId () [1/3] Construtor que crea un novo obxecto de ID de hardware de bus.
nlc::BusHardwareId::BusHardwareId (std::string const & busHardware_, std::string const & protocol_, std::string const & hardwareSpecifier_, std::string const & name_)
bus de parámetrosHardware_ protocol_ hardwareSpecifier_ extraHardwareSpecifier_ name_
Tipo de hardware (= ZK-USB-CAN-1 etc.). Protocolo de comunicación de bus (= CANopen, etc.). O especificador dun hardware (= COM3 etc.). O especificador adicional do hardware (por exemplo, información de localización USB). Un nome amigable (= AdapterName (Port) etc. ).
BusHardwareId () [2/3] Construtor que crea un novo obxecto de ID de hardware de bus, coa opción dun especificador de hardware adicional.
nlc::BusHardwareId::BusHardwareId (std::string const & busHardware_, std::string const & protocol_, std::string const & hardwareSpecifier_, std::string const & extraHardwareSpecifier_, std::string const & name_)
bus de parámetrosHardware_ protocol_ hardwareSpecifier_ extraHardwareSpecifier_ name_
Tipo de hardware (= ZK-USB-CAN-1 etc.). Protocolo de comunicación de bus (= CANopen, etc.). O especificador dun hardware (= COM3 etc.). O especificador adicional do hardware (por exemplo, información de localización USB). Un nome amigable (= AdapterName (Port) etc. ).
BusHardwareId () [3/3] Construtor que copia un busHardwareId existente.
nlc::BusHardwareId::BusHardwareId (Const & BusHardwareId)
nlc::BusHardwareId::BusHardwareId (Const & BusHardwareId)
Parámetros busHardwareId
Nomea o ID de hardware do bus desde o que copiar.
equals () Compara un novo ID de hardware de bus cos existentes.
bool nlc::BusHardwareId::equals (BusHardwareId const e outro) const
Parámetros outros Devolve verdadeiro
Outro obxecto da mesma clase. Se ambos son iguais en todos os valores.
Versión: doc 1.4.2 / NanoLib 1.3.0
27
8 Referencia de clases/funcións
falso
Se os valores difiren.
getBusHardware () Le a cadea de hardware do bus.
std::string nlc::BusHardwareId::getBusHardware () const
Devolve cadea
getHardwareSpecifier () Le a cadea especificadora do hardware do bus (= nome da rede, etc.).
std::string nlc::BusHardwareId::getHardwareSpecifier () const
Devolve cadea
getExtraHardwareSpecifier () Le a cadea especificadora do hardware extra do bus (= enderezo MAC, etc.).
std::string nlc::BusHardwareId::getExtraHardwareSpecifier () const
Devolve cadea
getName () Le o nome descriptivo do hardware do bus.
std::string nlc::BusHardwareId::getName () const
Devolve cadea
getProtocol () Le a cadea do protocolo do bus.
std::string nlc::BusHardwareId::getProtocol () const
Devolve cadea
toString () Devolve o ID de hardware do bus como unha cadea.
std::string nlc::BusHardwareId::toString () const
Devolve cadea
8.3 Opcións de hardware de bus
Busca nesta clase, nunha lista de cadeas de valores-clave, todas as opcións necesarias para abrir un hardware de bus.
Versión: doc 1.4.2 / NanoLib 1.3.0
28
8 Referencia de clases/funcións
BusHardwareOptions () [1/2] Constrúe un novo obxecto de opción de hardware de bus.
nlc::BusHardwareOptions::BusHardwareOptions () Use a función addOption () para engadir pares clave-valor.
BusHardwareOptions () [2/2] Constrúe un novo obxecto de opcións de hardware de bus co mapa clave-valor xa instalado.
nlc::BusHardwareOptions::BusHardwareOptions (std::mapa const e opcións)
Opcións de parámetros
Un mapa con opcións para que o hardware do bus funcione.
addOption () Crea claves e valores adicionais.
void nlc::BusHardwareOptions::addOption (std::string const & key, std::string const & value)
Valor clave de parámetros
Example: BAUD_RATE_OPTIONS_NAME, consulta os valores predeterminados de bus_hw_options_
Example: BAUD_RATE_1000K, consulte bus_hw_options_defaults
equals () Compara as BusHardwareOptions coas existentes.
bool nlc::BusHardwareOptions::equals (BusHardwareOptions const e outro) const
Parámetros outros Devolve verdadeiro
falso
Outro obxecto da mesma clase. Se o outro obxecto ten todas as mesmas opcións. Se o outro obxecto ten claves ou valores diferentes.
getOptions () Le todos os pares clave-valor engadidos.
std::mapa nlc::BusHardwareOptions::getOptions () const
Devolve o mapa de cadeas
toString () Devolve todas as claves/valores como unha cadea.
std::string nlc::BusHardwareId::toString () const
Devolve cadea
8.4 BusHwOptionsDefault
Esta clase de opcións de configuración predeterminada ten os seguintes atributos públicos:
Versión: doc 1.4.2 / NanoLib 1.3.0
29
8 Referencia de clases/funcións
const CanBus const Serial const RESTfulBus const EtherCATBus
canBus = CanBus () serial = Serial () restfulBus = RESTfulBus () ethercatBus = EtherCATBus ()
8.5 CanBaudRate
Estrutura que contén velocidades de transmisión do bus 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 "BAUD_RATE_100K"_50 "50K"_20 ATE_20K = “10k” BAUD_RATE_10K = “5k” BAUD_RATE_5K = “XNUMXk”
8.6 CanBus
Clase de opcións de configuración predeterminada cos seguintes atributos públicos:
const std::string const CanBaudRate const Ixxat
BAUD_RATE_OPTIONS_NAME = "velocidade en baudios do adaptador" baudRate = CanBaudRate () ixxat = Ixxat ()
8.7 CanOpenNmtService
Para o servizo NMT, esta estrutura contén os estados NMT de CANopen como valores de cadea 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én os estados CANopen NMT como valores de cadea nos seguintes atributos públicos:
const std::string const std::string const std::string const std::string const std::string
PARADO = "PARADO" PRE_OPERATIONAL = "PRE_OPERATIONAL" OPERATIONAL = "OPERACIONAL" INICIALIZACIÓN = "INICIALIZACIÓN" DESCOÑECIDO = "DESCOÑECIDO"
8.9 Estrutura EtherCATBus
Esta estrutura contén as opcións de configuración de comunicación EtherCAT nos seguintes atributos públicos:
Versión: doc 1.4.2 / NanoLib 1.3.0
30
8 Referencia de clases/funcións
const std::string NETWORK_FIRMWARE_STATE_OP- Estado da rede tratado como modo de firmware. Aceptable
TION_NAME = "Estado do firmware da rede"
valores (predeterminado = PRE_OPERATIONAL):
EtherCATState::PRE_OPERATIONAL EtherCATState::SAFE_OPERATIONAL EtherCATState::OPERATIONAL
const std::string DEFAULT_NETWORK_FIRMWARE_ STATE = "PRE_OPERATIONAL"
const std::string EXCLUSIVE_LOCK_TIMEOUT_OP- Tempo de espera en milisegundos para adquirir o bloqueo exclusivo
TION_NAME = "Tempo de espera de bloqueo compartido"
a rede (por defecto = 500 ms).
const unsigned int DEFAULT_EXCLUSIVE_LOCK_ TIMEOUT = “500”
const std::string SHARED_LOCK_TIMEOUT_OPTION_ Tempo de espera en milisegundos para adquirir o bloqueo compartido
NAME = "Tempo de espera de bloqueo compartido"
a rede (por defecto = 250 ms).
const unsigned int DEFAULT_SHARED_LOCK_TIMEOUT = “250”
const std::string READ_TIMEOUT_OPTION_NAME = Tempo de espera en milisegundos para unha operación de lectura (predeterminado
"Tempo de espera de lectura"
= 700 ms).
const unsigned int DEFAULT_READ_TIMEOUT = “700”
const std::string WRITE_TIMEOUT_OPTION_NAME = Tempo de espera en milisegundos para unha operación de escritura (predeterminado
"Tempo de espera de escritura"
= 200 ms).
const unsigned int DEFAULT_WRITE_TIMEOUT = “200”
const std::string READ_WRITE_ATTEMPTS_OPTION_ Número máximo de intentos de lectura ou escritura (valores distintos de cero
NOME = "Intentos de lectura/escritura"
só; predeterminado = 5).
const unsigned int DEFAULT_READ_WRITE_ATTEMPTS = “5”
const std::string CHANGE_NETWORK_STATE_ATTEMPTS_OPTION_NAME = "Intentos de cambiar o estado da rede"
Número máximo de intentos de alterar o estado da rede (só valores distintos de cero; predeterminado = 10).
const unsigned int DEFAULT_CHANGE_NETWORK_ STATE_ATTEMPTS = “10”
const std::string PDO_IO_ENABLED_OPTION_NAME Activa ou desactiva o procesamento de PDO para entradas dixitais /
= "PDO IO activado"
saídas ("Verdadero" ou "Falso" só; predeterminado = "Verdadero").
const std::string DEFAULT_PDO_IO_ENABLED = "Verdadero"
8.10 Estrutura EtherCATState
Esta estrutura contén os estados escravos/rede EtherCAT como valores de cadea nos seguintes atributos públicos. Nota: o estado predeterminado ao acender é PRE_OPERATIONAL; NanoLib non pode proporcionar ningún estado "OPERATIVO" fiable nun sistema operativo non en tempo real:
const std::string const std::string const std::string const std::string const std::string const std::string
NONE = “NONE” INIT = “INIT” PRE_OPERATIONAL = “PRE_OPERATIONAL” BOOT = “ARRANQUE” SAFE_OPERATIONAL = “SAFE_OPERATIONAL” OPERATIONAL = “OPERACIONAL”
Versión: doc 1.4.2 / NanoLib 1.3.0
31
8 Referencia de clases/funcións
8.11 Ixxat
Esta estrutura contén toda a información para o usb-to-can de Ixxat nos seguintes atributos públicos:
const std::string
ADAPTER_BUS_NUMBER_OPTIONS_NAME = "Número de bus do adaptador ixxat"
const IxxatAdapterBusNumber adapterBusNumber = IxxatAdapterBusNumber ()
8.12 IxxatAdapterBusNumber
Esta estrutura contén o número de bus para o usb-to-can Ixxat nos seguintes atributos públicos:
const std::string const std::string const std::string const std::string
BUS_NUMBER_0_DEFAULT = “0” BUS_NUMBER_1 = “1” BUS_NUMBER_2 = “2” BUS_NUMBER_3 = “3”
Pico de 8.13
Esta estrutura contén toda a información para o Peak usb-to-can nos seguintes atributos públicos:
const std::string
ADAPTER_BUS_NUMBER_OPTIONS_NAME = "número de bus do adaptador máximo"
const PeakAdapterBusNumber adapterBusNumber = PeakAdapterBusNumber ()
8.14 PeakAdapterBusNumber
Esta estrutura contén o número de bus 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 const std::string
BUS_NUMBER_1_DEFAULT = std::to_string (PCAN_USBBUS1) BUS_NUMBER_2 = std::to_string (PCAN_USBBUS2) BUS_NUMBER_3 = std::to_string (PCAN_USBBUS3) BUS_NUMBER_4 = std::to_string (PCAN_USBBUS:to4) = std::to_string (PCAN_USBBUS5) BUS_NUMBER_5 = std::to_string (PCAN_USBBUS6) BUS_NUMBER_6 = std::to_string (PCAN_USBBUS7) BUS_NUMBER_7 = std::to_string (PCAN_USBBUS8) BUS_NUMBER_8 = std::to_NUMBER_USBUS9:9std::to_string (PCAN_USBBUS10:10_string) (PCAN_USBBUS11) BUS_NUMBER_11 = std::to_string (PCAN_USBBUS12) BUS_NUMBER_12 = std::to_string (PCAN_USBBUS13) BUS_NUMBER_13 = std::to_string (PCAN_USBBUS14) BUS_NUMBER_14 = std::BUSBBUS15 = std::_USBBUS15 std::to_string (PCAN_USBBUS16) BUS_NUMBER_16 = std::to_string (PCAN_USBBUSXNUMX)
8.15 Manexo do dispositivo
Esta clase representa un controlador para controlar un dispositivo nun bus e ten as seguintes funcións públicas de membros.
DeviceHandle () DeviceHandle (controlador uint32_t)
Versión: doc 1.4.2 / NanoLib 1.3.0
32
8 Referencia de clases/funcións
equals () Compárase a si mesmo cun identificador de dispositivo determinado.
bool é igual (DeviceHandle const other) const (uint32_t handle)
toString () Devolve unha representación en cadea do identificador do dispositivo.
std::string toString () const
get () Devolve o identificador do dispositivo.
uint32_t get () const
8.16 DeviceId
Use esta clase (non inmutable desde a creación) para identificar e distinguir dispositivos nun bus:
Identificador do adaptador de hardware
Identificador do dispositivo
Descrición
O significado dos valores de ID/descrición do dispositivo depende do bus. Por example, un bus CAN pode usar o ID enteiro.
DeviceId () [1/3] Constrúe un novo obxecto de ID de dispositivo.
nlc::DeviceId::DeviceId (BusHardwareId const & busHardwareId_, unsigned int deviceId_, std::string const & description_)
Parámetros busHardwareId_ deviceId_ description_
Identificador do autobús. Un índice; suxeito ao bus (= ID de nodo CANopen, etc.). Unha descrición (pode estar baleira); suxeito ao autobús.
DeviceId () [2/3] Constrúe un novo obxecto de ID de dispositivo con opcións de ID ampliadas.
nlc::DeviceId::DeviceId (BusHardwareId const & busHardwareId, unsigned int deviceId_, std::string const & description_ std::vector const & extraId_, std::string const & extraStringId_)
Parámetros busHardwareId_ deviceId_ description_ extraId_ extraStringId_
Identificador do autobús. Un índice; suxeito ao bus (= ID de nodo CANopen, etc.). Unha descrición (pode estar baleira); suxeito ao autobús. Unha identificación adicional (pode estar baleira); significado depende do autobús. ID de cadea adicional (pode estar baleiro); significado depende do autobús.
DeviceId () [3/3] Constrúe unha copia dun obxecto de ID de dispositivo.
nlc::DeviceId::DeviceId (const & DeviceId)
Versión: doc 1.4.2 / NanoLib 1.3.0
33
8 Referencia de clases/funcións
Parámetros deviceId_
ID do dispositivo para copiar.
equals () Compara os obxectos novos cos existentes.
bool nlc::DeviceId::equals (DeviceId const e outro) const
Devolve booleano
getBusHardwareId () Le o ID de hardware do bus.
BusHardwareId nlc::DeviceId::getBusHardwareId () const
Devolve BusHardwareId
getDescription () Le a descrición do dispositivo (quizais non se use).
std::string nlc::DeviceId::getDescription () const
Devolve cadea
getDeviceId () Le o ID do dispositivo (quizais non se use).
unsigned int nlc::DeviceId::getDeviceId () const
Devolve int sen signo
toString () Devolve o obxecto como unha cadea.
std::string nlc::DeviceId::toString () const
Devolve cadea
getExtraId () Le a ID adicional do dispositivo (pode estar sen usar).
const std::vector &getExtraId () const
Devolve o vector
Un vector dos ID adicionais adicionais (pode estar baleiro); significado depende do autobús.
getExtraStringId () Le o ID de cadea adicional do dispositivo (pode estar sen usar).
std::string getExtraStringId () const
Versión: doc 1.4.2 / NanoLib 1.3.0
34
8 Referencia de clases/funcións
Devolve cadea
O ID de cadea adicional (pode estar baleiro); significado depende do autobús.
8.17 LogLevelConverter
Esta clase devolve o teu nivel de rexistro como unha cadea. static std::string toString (nlc::LogLevel logLevel)
8.18 LogModuleConverter
Esta clase devolve o seu rexistro específico da biblioteca modulesetLoggingLevel () como unha cadea.
static std::string
toString (nlc::LogModule logModule)
static std::string toString (nlc::LogModule logModule)
8.19 Dicionario de obxectos
Esta clase representa un dicionario de obxectos dun controlador e ten as seguintes funcións públicas de membro: getDeviceHandle ()
virtual ResultDeviceHandle getDeviceHandle () const Devolve ResultDeviceHandle
getObject () virtual ResultObjectSubEntry getObject (OdIndex const odIndex) Devolve ResultObjectSubEntry
getObjectEntry () virtual ResultObjectEntry getObjectEntry (índice uint16_t)
Devolve ResultObjectEntry
Informa sobre as propiedades dun obxecto.
getXmlFileNome () Virtual ResultString getXmlFileNome () const
Devolve ResultString
Devolve o XML file nome como unha cadea.
readNumber () virtual ResultInt readNumber (OdIndex const odIndex) Devolve ResultInt
readNumberArray () virtual ResultArrayInt readNumberArray (índice constante uint16_t)
Versión: doc 1.4.2 / NanoLib 1.3.0
35
8 Referencia de clases/funcións
Devolve ResultArrayInt readString ()
virtual ResultString readString (OdIndex const odIndex) Devolve ResultString readBytes () virtual ResultArrayByte readBytes (OdIndex const odIndex) Devolve ResultArrayByte writeNumber () virtual ResultVoid writeNumber (OdIndex const odIndex valor de escritura) int64 Return odIndex_Byte, valor de escritura () virtual ResultVoid writeBytes (OdIndex const OdIndex, std::vector
const & data) Devolve ResultVoid Ligazóns relacionadas OdIndex
8.20 Entrada de obxectos
Esta clase representa unha entrada de obxecto do dicionario de obxectos, ten o seguinte atributo protexido estático e funcións membros públicos:
static nlc::ObjectSubEntry invalidObject
getName () Le o nome do obxecto como unha cadea.
virtual std::string getName () const
getPrivate () Comproba se o obxecto é privado.
virtual bool getPrivate () const
getIndex () Le o enderezo do índice de obxectos.
virtual uint16_t getIndex () const
Versión: doc 1.4.2 / NanoLib 1.3.0
36
8 Referencia de clases/funcións
getDataType () Le o tipo de datos do obxecto.
virtual nlc::ObjectEntryDataType getDataType () const
getObjectCode () Le o código obxecto:
Null Deftype Defstruct Var Array Record
0x00 0x05 0x06 0x07 0x08 0x09
virtual nlc::ObjectCode getObjectCode () const
getObjectSaveable () Comproba se o obxecto se pode gardar e a súa categoría (consulta o manual do produto para máis detalles): APPLICATION, COMMUNICATION, DRIVE, MISC_CONFIG, MODBUS_RTU, NO, TUNING, CUSTOMER, ETHERNET, CANOPEN, VERIFY1020, UNKNOWN_SAVEABLE_TYPE
virtual nlc::ObjectSaveable getObjectSaveable () const
getMaxSubIndex () Le o número de subíndices admitidos por este obxecto.
virtual uint8_t getMaxSubIndex () const
getSubEntry () virtual nlc::ObjectSubEntry e getSubEntry (uint8_t subIndex)
Consulte tamén ObjectSubEntry.
8.21 SubEntrada Obxecto
Esta clase representa unha subentrada de obxecto (subíndice) do dicionario de obxectos e ten as seguintes funcións públicas de membros:
getName () Le o nome do obxecto como unha cadea.
virtual std::string getName () const
getSubIndex () Le o enderezo do subíndice.
virtual uint8_t getSubIndex () const
Versión: doc 1.4.2 / NanoLib 1.3.0
37
8 Referencia de clases/funcións
getDataType () Le o tipo de datos do obxecto.
virtual nlc::ObjectEntryDataType getDataType () const
getSdoAccess () Comproba se o subíndice é accesible a través de SDO:
Só lectura
1
Escribir só
2
LerEscribir
3
Sen acceso
0
virtual nlc::ObjectSdoAccessAttribute getSdoAccess () const
getPdoAccess () Comproba se o subíndice é accesible/mapeable mediante PDO:
Tx
1
Rx
2
TxRx
3
Non
0
virtual nlc::ObjectPdoAccessAttribute getPdoAccess () const
getBitLength () Comproba a lonxitude do subíndice.
virtual uint32_t getBitLength () const
getDefaultValueAsNumeric () Le o valor predeterminado do subíndice para os tipos de datos numéricos.
virtual ResultInt getDefaultValueAsNumeric (std::string const & key) const
getDefaultValueAsString () Le o valor predeterminado do subíndice para os tipos de datos de cadea.
Virtual ResultString getDefaultValueAsString (std::string const & key) const
getDefaultValues () Le os valores predeterminados do subíndice.
virtual std::map getDefaultValues () const
Versión: doc 1.4.2 / NanoLib 1.3.0
38
8 Referencia de clases/funcións
readNumber () Le o valor real numérico do subíndice.
virtual ResultInt readNumber () const
readString () Le o valor real da cadea do subíndice.
Virtual ResultString readString () const
readBytes () Le o valor real do subíndice en bytes.
virtual ResultArrayByte readBytes () const
writeNumber () Escribe un valor numérico no subíndice.
virtual ResultVoid writeNumber (valor const int64_t) const
writeBytes () Escribe un valor no subíndice en bytes.
virtual ResultVoid writeBytes (std::vector const & data) const
8.22 OdIndex
Use esta clase (inmutable desde a creación) para envolver e localizar índices/subíndices de directorios de obxectos. O DO dun dispositivo ten ata 65535 (0xFFFF) filas e 255 (0xFF) columnas; con ocos entre as filas descontinuas. Consulte o estándar CANopen e o manual do seu produto para obter máis detalles.
OdIndex () Constrúe un novo obxecto OdIndex.
nlc::OdIndex::OdIndex (índice uint16_t, subíndice uint8_t)
Subíndice de parámetros
De 0 a 65535 (0xFFFF) incl. De 0 a 255 (0xFF) incl.
getIndex () Le o índice (de 0x0000 a 0xFFFF).
uint16_t nlc::OdIndex::getIndex () const
Devolve uint16_t
getSubindex () Le o subíndice (de 0x00 a 0xFF)
uint8_t nlc::OdIndex::getSubIndex () const
Versión: doc 1.4.2 / NanoLib 1.3.0
39
8 Referencia de clases/funcións
Devolve uint8_t
toString () Devolve o índice e o subíndice como unha cadea. A cadea predeterminada 0xIIII:0xSS di o seguinte:
I = índice de 0x0000 a 0xFFFF
S = subíndice de 0x00 a 0xFF
std::string nlc::OdIndex::toString () const
Devolve 0xIIII:0xSS
Representación de cadea predeterminada
8.23 OdLibrary
Use esta interface de programación para crear instancias da clase ObjectDictionary a partir de XML. Mediante assignObjectDictionary, pode vincular cada instancia a un dispositivo específico debido a un identificador creado de forma única. As instancias do ObjectDictionary así creadas gárdanse no obxecto OdLibrary ao que se pode acceder por índice. A clase ODLibrary carga elementos ObjectDictionary desde file ou matriz, gárdaos e ten as seguintes funcións públicas de membros:
getObjectDictionaryCount () virtual uint32_t getObjectDictionaryCount () const
getObjectDictionary () virtual ResultObjectDictionary getObjectDictionary (uint32_t odIndex)
Devolve ResultObjectDictionary
addObjectDictionaryFromFile ()
virtual ResultObjectDictionary addObjectDictionaryFromFile (std::string const & absoluteXmlFileCamiño)
Devolve ResultObjectDictionary
addObjectDictionary ()
Virtual ResultObjectDictionary addObjectDictionary (std::vector const & odXmlData, const std::string &xmlFileRuta = std::string ())
Devolve ResultObjectDictionary
8.24 OdTypesHelper
Ademais das seguintes funcións públicas de membros, esta clase contén tipos de datos personalizados. Nota: Para comprobar os seus tipos de datos personalizados, busque a clase de enumeración ObjectEntryDataType en od_types.hpp.
uintToObjectCode () Converte os enteiros sen signo en código obxecto:
Deftype nulo
0x00 0x05
Versión: doc 1.4.2 / NanoLib 1.3.0
40
8 Referencia de clases/funcións
Destruír o rexistro de matriz Var
0x06 0x07 0x08 0x09
ObjectCode estático uintToObjectCode (unsigned int objectCode)
isNumericDataType () Informa se un tipo de datos é numérico ou non.
bool estático isNumericDataType (ObjectEntryDataType dataType)
isDefstructIndex () Informa se un obxecto é un índice de estrutura de definición ou non.
bool estático isDefstructIndex (uint16_t typeNum)
isDeftypeIndex () Informa se un obxecto é un índice de tipo de definición ou non.
bool estático isDeftypeIndex (uint16_t typeNum)
isComplexDataType () Informa se un tipo de datos é complexo ou non.
bool estático isComplexDataType (ObjectEntryDataType dataType)
uintToObjectEntryDataType () Converte os enteiros sen asinar en tipo de datos OD.
sstatic ObjectEntryDataType uintToObjectEntryDataType (uint16_t objectDataType)
objectEntryDataTypeToString () Converte o tipo de datos OD en cadea.
static std::string objectEntryDataTypeToString (ObjectEntryDataType odDataType)
stringToObjectEntryDatatype () Converte a cadea en tipo de datos OD, se é posible. En caso contrario, devolve UNKNOWN_DATATYPE.
ObjectEntryDataType estático stringToObjectEntryDatatype (std::string dataTypeString)
Versión: doc 1.4.2 / NanoLib 1.3.0
41
8 Referencia de clases/funcións
objectEntryDataTypeBitLength () Informa sobre a lonxitude de bits dun tipo de datos de entrada de obxecto.
static uint32_t objectEntryDataTypeBitLength (ObjectEntryDataType const & dataType)
8.25 Estrutura RESTfulBus
Esta estrutura contén as opcións de configuración de comunicación para a interface RESTful (a través de Ethernet). Contén os seguintes atributos públicos:
const std::string const unsigned long const std::string const unsigned long const std::string const unsigned long
CONNECT_TIMEOUT_OPTION_NAME = "Tempo de espera de conexión RESTful" DEFAULT_CONNECT_TIMEOUT = 200 REQUEST_TIMEOUT_OPTION_NAME = "Tempo de espera de solicitude RESTful" DEFAULT_REQUEST_TIMEOUT = 200 RESPONSE_TIMEOUT_OPTION_NAME = "Tempo de espera de resposta RESTful" DEFAULT_750OUT_XNUMX RESPONSE
8.26 ProfinetDCP
En Linux, a aplicación de chamada necesita capacidades CAP_NET_ADMIN e CAP_NET_RAW. Para activar: sudo setcap 'cap_net_admin,cap_net_raw+eip' ./executable. En Windows, a interface ProfinetDCP usa WinPcap (probado coa versión 4.1.3) ou Npcap (probado coas versións 1.60 e 1.30). Así, busca na biblioteca wpcap.dll cargada dinámicamente na seguinte orde (Nota: non hai soporte actual para Win10Pcap):
1. Directorio Nanolib.dll 2. Directorio do sistema de Windows SystemRoot%System32 3. Directorio de instalación de Npcap SystemRoot%System32Npcap 4. Ruta do entorno
Esta clase representa unha interface Profinet DCP e ten as seguintes funcións públicas de membros:
getScanTimeout () Informa sobre o tempo de espera da exploración do dispositivo (predeterminado = 2000 ms).
virtual uint32_t nlc::ProfinetDCP::getScanTimeout () const
setScanTimeout () Establece un tempo de espera de exploración do dispositivo (predeterminado = 2000 ms).
virtual void nlc::setScanTimeout (uint32_t timeoutMsec)
getResponseTimeout () Informa sobre un tempo de espera de resposta do dispositivo para as operacións de configuración, restablecemento e parpadeo (predeterminado = 1000 ms).
virtual uint32_t nlc::ProfinetDCP::getResponseTimeout () const
setResponseTimeout () Informa sobre un tempo de espera de resposta do dispositivo para as operacións de configuración, restablecemento e parpadeo (predeterminado = 1000 ms).
virtual void nlc::ProfinetDCP::setResponseTimeout (uint32_t timeoutMsec)
Versión: doc 1.4.2 / NanoLib 1.3.0
42
8 Referencia de clases/funcións
isServiceAvailable ()
Use esta función para comprobar a dispoñibilidade do servizo Profinet DCP.
Validez / dispoñibilidade do adaptador de rede Windows: dispoñibilidade de WinPcap / Npcap Linux: capacidades CAP_NET_ADMIN / CAP_NET_RAW
virtual ResultVoid nlc::ProfinetDCP::isServiceAvailable (const BusHardwareId e busHardwareId)
Parámetros BusHardwareId Devolve verdadeiro
falso
ID de hardware do servizo Profinet DCP para comprobar. O servizo está dispoñible. O servizo non está dispoñible.
scanProfinetDevices () Use esta función para buscar no bus de hardware a presenza de dispositivos Profinet.
Virtual ResultProfinetDevices escaneoProfinetDevices (const BusHardwareId e busHardwareId)
Parámetros BusHardwareId Devolve ResultProfinetDevices
Especifica cada bus de campo a abrir. O hardware está aberto.
setupProfinetDevice () Establece a seguinte configuración do dispositivo:
Nome do dispositivo
enderezo IP
Máscara de rede
Pasarela predeterminada
virtual ResultVoid nlc::setupProfinetDevice (const BusHardwareId & busHardwareId, const ProfinetDevice struct & profinetDevice, bool savePermanent)
resetProfinetDevice () Detén o dispositivo e restableceo aos valores predeterminados de fábrica.
virtual ResultVoid nlc::resetProfinetDevice (const BusHardwareId e busHardwareId, const ProfinetDevice e profinetDevice)
blinkProfinetDevice () Ordena ao dispositivo Profinet que comece a parpadear o seu LED Profinet.
virtual ResultVoid nlc::blinkProfinetDevice (const BusHardwareId & busHardwareId, const ProfinetDevice &profinetDevice)
validateProfinetDeviceIp () Use esta función para comprobar o enderezo IP do dispositivo.
Virtual ResultVoid validateProfinetDeviceIp (const BusHardwareId &busHardwareId, const ProfinetDevice e profinetDevice)
Parámetros BusHardwareId ProfinetDevice
Especifica o ID de hardware para comprobar. Especifica o dispositivo Profinet a validar.
Versión: doc 1.4.2 / NanoLib 1.3.0
43
8 Referencia de clases/funcións
Devolve ResultVoid
8.27 Estrutura ProfinetDevice
Os datos do dispositivo Profinet teñen 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 pasarela predeterminada
O enderezo MAC ofrécese como matriz en formato macAddress = {xx, xx, xx, xx, xx, xx}; mentres que o enderezo IP, a máscara de rede e a pasarela interprétanse como números hexadecimales de big endian, como:
Enderezo IP: 192.168.0.2 Máscara de rede: 255.255.0.0 Pasarela: 192.168.0.1
0xC0A80002 0xFFFF0000 0xC0A80001
8.28 Clases de resultados
Use os valores de retorno "opcionais" destas clases para comprobar se unha chamada de función tivo éxito ou non, e tamén localice os motivos do fallo. En caso de éxito, a función hasError () devolve false. Por getResult (), pode ler o valor do resultado segundo o tipo (ResultInt, etc.). Se unha chamada falla, le o motivo mediante getError ().
Atributos protexidos
cadea NlcErrorCode uint32_t
errorString errorCode exErrorCode
Ademais, esta clase ten as seguintes funcións públicas de membros:
hasError () Le o éxito dunha chamada de función.
bool nlc::Result::hasError () const
Devolucións
verdadeiro falso
Chamada fallida. Use getError () para ler o valor. Chamada exitosa. Use getResult () para ler o valor.
getError () Le o motivo se falla unha chamada de función.
const std::string nlc::Result::getError () const
Devolve unha cadea constante
Versión: doc 1.4.2 / NanoLib 1.3.0
44
8 Referencia de clases/funcións
resultado () As seguintes funcións axudan a definir os resultados exactos:
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 e resultado)
getErrorCode () Le o NlcErrorCode.
NlcErrorCode getErrorCode () const
getExErrorCode () uint32_t getExErrorCode () const
8.28.1 ResultVoid
NanoLib envíache unha instancia desta clase se a función devolve void. A clase herda as funcións públicas e os atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
ResultVoid () As seguintes funcións axudan a definir o resultado exacto do baleiro:
ResultVoid (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 (Const e resultado do resultado)
8.28.2 ResultadoInt
NanoLib envíache unha instancia desta clase se a función devolve un número enteiro. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Devolve o resultado enteiro se unha chamada de función tivo éxito.
int64_t getResult () const
Devolve int64_t
Versión: doc 1.4.2 / NanoLib 1.3.0
45
8 Referencia de clases/funcións
ResultInt () As seguintes funcións axudan a definir o resultado enteiro exacto:
ResultInt (int64_t result_)
ResultInt (std::string const & errorString_)
ResultInt (NlcErrorCode const & errCode, std::string const e errorString_)
ResultInt (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultInt (Const e resultado do resultado)
8.28.3 Cadea de resultados
NanoLib envíache unha instancia desta clase se a función devolve unha cadea. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Le o resultado da cadea se unha chamada de función tivo éxito.
const std::string nlc::ResultString::getResult () const
Devolve unha cadea constante
ResultString () As seguintes funcións axudan a definir o resultado exacto da cadea:
ResultString (std::string const & message, bool hasError_)
ResultString (NlcErrorCode const & errCode, std::string const e errorString_)
ResultString (NlcErrorCode const & errCode, const uint32_t exErrCode, std:: string const & errorString_)
ResultString (Const e resultado do resultado)
8.28.4 ResultArrayByte
NanoLib envíache unha instancia desta clase se a función devolve unha matriz de bytes. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Le o vector de bytes se unha chamada de función tivo éxito.
const std::vector nlc::ResultArrayByte::getResult () const
Devolve o vector constante
Versión: doc 1.4.2 / NanoLib 1.3.0
46
8 Referencia de clases/funcións
ResultArrayByte () As seguintes funcións axudan a definir o resultado exacto da matriz de bytes:
ResultArrayByte (std::vector const & result_)
ResultArrayByte (std::string const & errorString_)
ResultArrayByte (NlcErrorCode const & errCode, std::string const e erro String_)
ResultArrayByte (NlcErrorCode const & errCode, const uint32_t exErrCode, std:: string const & errorString_)
ResultArrayByte (Const e resultado do resultado)
8.28.5 ResultArrayInt
NanoLib envíache unha instancia desta clase se a función devolve unha matriz de enteiros. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Le o vector enteiro se unha chamada de función tivo éxito.
const std::vector nlc::ResultArrayInt::getResult () const
Devolve o vector constante
ResultArrayInt () As seguintes funcións axudan a definir o resultado exacto da matriz de enteiros:
ResultArrayInt (std::vector const & result_)
ResultArrayInt (std::string const & errorString_)
ResultArrayInt (NlcErrorCode const & errCode, std::string const e erro String_)
ResultArrayInt (NlcErrorCode const & errCode, const uint32_t exErrCode, std:: string const & errorString_)
ResultArrayInt (Const e resultado do resultado)
8.28.6 ResultBusHwIds
NanoLib envíache unha instancia desta clase se a función devolve unha matriz de ID de hardware de bus. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Le o vector de ID de hardware do bus se unha chamada de función tivo éxito.
const std::vector nlc::ResultBusHwIds::getResult () const
Parámetros const vector
Versión: doc 1.4.2 / NanoLib 1.3.0
47
8 Referencia de clases/funcións
ResultBusHwIds () As seguintes funcións axudan a definir o resultado exacto da matriz de ID de hardware de bus:
ResultBusHwIds (std::vector const & result_)
ResultBusHwIds (std::string const & errorString_)
ResultBusHwIds (NlcErrorCode const & errCode, std::string const & errorString_)
ResultBusHwIds (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultBusHwIds (Const e resultado do resultado)
8.28.7 ResultDeviceId
NanoLib envíache unha instancia desta clase se a función devolve un ID de dispositivo. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Le o vector de ID do dispositivo se unha chamada de función tivo éxito.
DeviceId nlc::ResultDeviceId::getResult () const
Devolve o vector constante
ResultDeviceId () As seguintes funcións axudan a definir o resultado exacto da ID do dispositivo:
ResultDeviceId (const e resultado de DeviceId)
ResultDeviceId (std::string const & errorString_)
ResultDeviceId (NlcErrorCode const & errCode, std::string const e errorString_)
ResultDeviceId (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string errorString_)
ResultDeviceId (Const e resultado do resultado)
8.28.8 ResultDeviceIds
NanoLib envíache unha instancia desta clase se a función devolve unha matriz de ID de dispositivo. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Devolve o vector de ID do dispositivo se unha chamada de función tivo éxito.
DeviceId nlc::ResultDeviceIds::getResult () const
Devolve o vector constante
Versión: doc 1.4.2 / NanoLib 1.3.0
48
8 Referencia de clases/funcións
ResultDeviceIds () As seguintes funcións axudan a definir o resultado exacto da matriz de ID do dispositivo:
ResultDeviceIds (std::vector const & result_)
ResultDeviceIds (std::string const & errorString_)
ResultDeviceIds (NlcErrorCode const & errCode, std::string const & errorString_)
ResultDeviceIds (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultDeviceIds (const e resultado do resultado)
8.28.9 ResultDeviceHandle
NanoLib envíache unha instancia desta clase se a función devolve o valor dun identificador de dispositivo. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Le o identificador do dispositivo se unha chamada de función tivo éxito.
DeviceHandle nlc::ResultDeviceHandle::getResult () const
Devolve DeviceHandle
ResultDeviceHandle () As seguintes funcións axudan a definir o resultado exacto do manexo do dispositivo:
ResultDeviceHandle (const e resultado de DeviceHandle_)
ResultDeviceHandle (std::string const & errorString_)
ResultDeviceHandle (NlcErrorCode const & errCode, std::string const & errorString_)
ResultDeviceHandle (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultDeviceHandle (Const e resultado do resultado)
8.28.10 ResultadoObxectoDicionario
NanoLib envíache unha instancia desta clase se a función devolve o contido dun dicionario de obxectos. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Le o vector de ID do dispositivo se unha chamada de función tivo éxito.
const nlc::ObjectDictionary & nlc::ResultObjectDictionary::getResult () const
Versión: doc 1.4.2 / NanoLib 1.3.0
49
8 Referencia de clases/funcións
Devolucións
vector const
ResultObjectDictionary () As seguintes funcións axudan a definir o resultado exacto do dicionario de obxectos:
ResultObjectDictionary (nlc::ObjectDictionary const & result_)
ResultObjectDictionary (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 (Const e resultado do resultado)
8.28.11 ResultConnectionState
NanoLib envíache unha instancia desta clase se a función devolve unha información de estado de conexión do dispositivo. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Le o identificador do dispositivo se unha chamada de función tivo éxito.
DeviceConnectionStateInfo nlc::ResultConnectionState::getResult () const
Devolve DeviceConnectionStateInfo Conectado / Desconectado / ConnectedBootloader
ResultConnectionState () As seguintes funcións axudan a definir o resultado exacto do estado de conexión:
ResultConnectionState (const e resultado de DeviceConnectionStateInfo)
ResultConnectionState (std::string const & errorString_)
ResultConnectionState (NlcErrorCode const & errCode, std::string const & errorString_)
ResultConnectionState (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultConnectionState (Const e resultado do resultado)
8.28.12 ResultObjectEntry
NanoLib envíache unha instancia desta clase se a función devolve unha entrada de obxecto. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
Versión: doc 1.4.2 / NanoLib 1.3.0
50
8 Referencia de clases/funcións
getResult () Devolve o vector de ID do dispositivo se unha chamada de función tivo éxito.
nlc::ObjectEntry const& nlc::ResultObjectEntry::getResult () const
Devolve const ObjectEntry
ResultObjectEntry () As seguintes funcións axudan a definir o resultado exacto da entrada de obxecto:
ResultObjectEntry (nlc::ObjectEntry const & result_)
ResultObjectEntry (std::string const & errorString_)
ResultObjectEntry (NlcErrorCode const & errCode, std::string const e errorString_)
ResultObjectEntry (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultObjectEntry (Const e resultado do resultado)
8.28.13 ResultObjectSubEntry
NanoLib envíache unha instancia desta clase se a función devolve unha subentrada de obxecto. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Devolve o vector de ID do dispositivo se unha chamada de función tivo éxito.
nlc::ObjectSubEntry const & nlc::ResultObjectSubEntry::getResult () const
Devolve const ObjectSubEntry
ResultObjectSubEntry () As seguintes funcións axudan a definir o resultado exacto da subentrada do obxecto:
ResultObjectSubEntry (nlc::ObjectEntry const & result_)
ResultObjectSubEntry (std::string const & errorString_)
ResultObjectSubEntry (NlcErrorCode const & errCode, std::string const & errorString_)
ResultObjectSubEntry (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultObjectSubEntry (Const e resultado do resultado)
8.28.14 ResultProfinetDevices
NanoLib envíache unha instancia desta clase se a función devolve un dispositivo Profinet. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
Versión: doc 1.4.2 / NanoLib 1.3.0
51
8 Referencia de clases/funcións
getResult () Le o vector do dispositivo Profinet se unha chamada de función tivo éxito.
const std::vector & getResult () const
ResultProfinetDevices () As seguintes funcións axudan a definir os dispositivos Profinet exactos.
ResultProfinetDevices (const std::vector & ProfinetDevices)
ResultProfinetDevices (const Resultado e resultado)
ResultProfinetDevices (const std::string &errorText, NlcErrorCode errorCode = NlcErrorCode::GeneralError, uint32_t extendedErrorCode = 0)
8.28.15 ResultadosampleDataArray
NanoLib envíache unha instancia desta clase se a función devolve comoampmatriz de datos le. A clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Le a matriz de datos se unha chamada de función tivo éxito.
const std::vector <SampleData> & getResult () const
Resultados SampleDataArray () As seguintes funcións axudan a definir os dispositivos Profinet exactos.
Resultados SampleDataArray (const std::vector <SampleData> & dataArray)
Resultados SampleDataArray (const std::string &errorDesc, const NlcErrorCode errorCode = NlcErrorCode::GeneralError, const uint32_t extendedErrorCode = 0)
Resultados SampleDataArray (const ResultSampleDataArray e outros)
Resultados SampleDataArray (const Resultado e resultado)
8.28.16 ResultadosamplerEstado
NanoLib envíache unha instancia desta clase se a función devolve comoampler state.Esta clase herda as funcións públicas/atributos protexidos da clase de resultado e ten as seguintes funcións públicas de membros:
getResult () Le o sampler vector de estado se unha chamada de función tivo éxito.
SamplerState getResult () const
Devolve SamplerState>
Sen configurar / Configurado / Listo / En execución / Completado / Fallo / Cancelado
Versión: doc 1.4.2 / NanoLib 1.3.0
52
8 Referencia de clases/funcións
Resultados SamplerState () As seguintes funcións axudan a definir o s exactoampler estado.
Resultados SamplerState (const Sampestado lerState)
Resultados SamplerState (const std::string & errorDesc, const NlcErrorCode errorCode = NlcErrorCode::GeneralError, const uint32_t
extendedErrorCode = 0)
Resultados SamplerState (const ResultSamplerState e outros)
Resultados SamplerState (const Resultado e resultado)
8.29 NlcErrorCode
Se algo sae mal, as clases de resultados informan dun dos códigos de erro enumerados nesta enumeración.
Código de erro Éxito Error xeral BusUnavailable CommunicationError ProtocolError
ODDoesNotExist ODInvalidAccess ODTypeMismatch Operation Aborted OperationNotSupported InvalidOperation
InvalidArguments Access Denied ResourceNotFound ResourceUnavailable OutOfMemory TimeOutError
C: Categoría D: Descrición R: Motivo C: Ningún. D: Sen erro. R: A operación completouse con éxito.
C: Sen especificar. D: Erro non especificado. R: Fallo que non cabe en ningunha outra categoría.
C: Autobús. D: o bus de hardware non está dispoñible. R: Bus inexistente, corte ou defecto.
C: Comunicación. D: Comunicación pouco fiable. R: Datos inesperados, CRC incorrecto, erros de marco ou de paridade, etc.
C: Protocolo. D: Erro de protocolo. R: Resposta despois dunha opción de protocolo non compatible, informe do dispositivo sobre protocolo non compatible, erro no protocolo (por exemplo, bit de sincronización do segmento SDO), etc. R: Unha resposta ou informe do dispositivo sobre un protocolo non admitido (opcións) ou sobre erros no protocolo (por exemplo, SDO). bit de sincronización de segmento), etc. R: protocolo non compatible (opcións) ou erro no protocolo (por exemplo, bit de sincronización de segmento SDO), etc.
C: dicionario de obxectos. D: Dirección OD inexistente. R: Non hai tal enderezo no dicionario de obxectos.
C: dicionario de obxectos. D: acceso ao enderezo OD non válido. R: Intente escribir un enderezo de só lectura ou ler desde un enderezo de só escritura.
C: dicionario de obxectos. D: Discordancia de tipos. R: valor non convertido ao tipo especificado, por exemplo, nun intento de tratar unha cadea como un número.
C: Aplicación. D: Proceso abortado. R: Corte de proceso por solicitude de solicitude. Devolve só a interrupción da operación pola función de devolución de chamada, por exemplo, a partir da exploración de bus.
C: Común. D: proceso non compatible. R: Non hai soporte de bus/dispositivo de hardware.
C: Común. D: proceso incorrecto no contexto actual ou non válido co argumento actual. R: Un intento de reconexión a buses/dispositivos xa conectados. Un intento de desconexión aos xa desconectados. Un intento de operación do cargador de arranque no modo de firmware ou viceversa.
C: Común. D: Argumento non válido. R: Lóxica ou sintaxe incorrecta.
C: Común. D: O acceso é denegado. R: Falta de dereitos ou capacidades para realizar a operación solicitada.
C: Común. D: Non se atopou o elemento especificado. R: bus de hardware, protocolo, dispositivo, enderezo OD no dispositivo ou file non se atopou.
C: Común. D: Non se atopou o elemento especificado. R: ocupado, inexistente, cortado ou defecto.
C: Común. D: Memoria insuficiente. R: Demasiada pouca memoria para procesar este comando.
C: Común. D: Proceso esgotado. R: Volve despois de que expire o tempo de espera. O tempo de espera pode ser un tempo de resposta do dispositivo, un tempo para obter acceso a recursos compartidos ou exclusivos ou un tempo para cambiar o bus/dispositivo a un estado adecuado.
Versión: doc 1.4.2 / NanoLib 1.3.0
53
8 Referencia de clases/funcións
8.30 NlcCallback
Esta clase pai para as devolucións de chamada ten a seguinte función de membro público: devolución de chamada ()
devolución de chamada virtual ResultVoid ()
Devolucións
ResultVoid
8.31 NlcDataTransferCallback
Use esta clase de devolución de chamada para transferencias de datos (actualización de firmware, carga de NanoJ, etc.). 1. Para unha carga de firmware: define unha "co-clase" que estende esta cun método de devolución de chamada personalizado
implementación. 2. Use as instancias de "co-clase" nas chamadas NanoLibAccessor.uploadFirmware (). A propia clase principal ten a seguinte función pública de membro:
devolución de chamada () devolución de chamada virtual ResultVoid (información nlc::DataTransferInfo, datos int32_t)
Devolucións
ResultVoid
8.32 NlcScanBusCallback
Usa esta clase de devolución de chamada para buscar o bus. 1. Define unha "co-clase" que estende esta cunha implementación de método de devolución de chamada personalizada. 2. Use as instancias de "co-clase" nas chamadas NanoLibAccessor.scanDevices (). A propia clase principal ten a seguinte función pública de membro.
devolución de chamada ()
devolución de chamada virtual ResultVoid (información nlc::BusScanInfo, std::vector const & devicesFound, datos int32_t)
Devolve ResultVoid
8.33 NlcLoggingCallback
Use esta clase de devolución de chamada para rexistrar as devolucións de chamada. 1. Defina unha clase que estenda esta clase cunha implementación de método de devolución de chamada personalizada 2. Use un punteiro ás súas instancias para establecer unha devolución de chamada mediante NanoLibAccessor >
setLoggingCallback (…).
devolución 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 clase para configurar, iniciar e deter o sampler, ou para conseguir sampled datos e buscar comoampestado do ler ou último erro. A clase ten as seguintes funcións públicas de membros.
Versión: doc 1.4.2 / NanoLib 1.3.0
54
8 Referencia de clases/funcións
configure () Configura comoampler.
Virtual ResultVoid nlc::SamplerInterface::configure (const DeviceHandle deviceHandle, const SamplerConfiguración e samplerConfiguración)
Parámetros [en] deviceHandle [en] samplerConfiguración
Devolve ResultVoid
Especifica que dispositivo configurar o sampler para. Especifica os valores dos atributos de configuración. Confirma que se executou unha función void.
getData () Obtén o sampdatos led.
resultados virtuaisampleDataArray nlc::SamplerInterface::getData (const DeviceHandle deviceHandle)
Parámetros [en] deviceHandle Devolve resultadosampleDataArray
Especifica para que dispositivo obter os datos.
Entrega o sampdatos led, que pode ser unha matriz baleira se samplerNotify está activo ao iniciar.
getLastError () Obtén comoampúltimo erro de ler.
Virtual ResultVoid nlc::SamplerInterface::getLastError (const DeviceHandle deviceHandle)
Devolve ResultVoid
Confirma que se executou unha función void.
getState () Obtén comoampestado de ler.
resultados virtuaisamplerState nlc::SamplerInterface::getState (const DeviceHandle deviceHandle)
Devolve resultadosSamplerEstado
Entrega o sampler estado.
comezar () Comeza comoampler.
Virtual ResultVoid nlc::SamplerInterface::start (const DeviceHandle deviceHandle, SamplerNotificar* samplerNotify, int64_t applicationData)
Parámetros [en] deviceHandle [en] SamplerNotificar [en] applicationData
Devolve ResultVoid
Especifica que dispositivo iniciar o sampler para.
Especifica que información opcional informar (pode ser nullptr).
Opción: reenvía datos relacionados coa aplicación (unha matriz de 8 bits de valor/ID de dispositivo/índice definida polo usuario ou unha data-hora, un punteiro dunha variable/función, etc.) a samplerNotificar.
Confirma que se executou unha función void.
Versión: doc 1.4.2 / NanoLib 1.3.0
55
8 Referencia de clases/funcións
stop () Detén comoampler.
Virtual ResultVoid nlc::SamplerInterface::stop (const DeviceHandle deviceHandle)
Parámetros [en] deviceHandle Devolve ResultVoid
Especifica que dispositivo deter o sampler para. Confirma que se executou unha función void.
8.35 SamplerConfiguration struct
Esta estrutura contén os datos sampopcións de configuración de ler (estáticas ou non).
Atributos públicos
std::vector enderezos rastreados
Ata 12 enderezos OD para ser sampLED.
uint32_t
versión
Versión dunha estrutura.
uint32_t
duraciónMilisegundos
Sampduración ling en ms, de 1 a 65535
uint16_t
períodoMilisegundos
Sampperíodo ling en ms.
uint16_t
número de Samples
Samples cantidade.
uint16_t
preTriggerNumberOfSamples
Sampcantidade de pre-activación.
bool
usando Implementación de software
Utilizar implementación de software.
bool
usando NewFWSamplerImplementation Use a implementación de FW para dispositivos con a
Versión FW v24xx ou posterior.
SamplerMode
modo
s normal, repetitivo ou continuoampling.
SamplerTriggerCondition triggerCondition
Condicións de activación de inicio: 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_ _GREATER_0 15x0 TC_LESS = 16x0 TC_LESS_OR_EQUAL = 17x0 TC_EQUAL = 18x0 TC_NOT_EQUAL = 19x0A TC_ONE_EDGE = 1x0B TC_MULTI_EDGE = 1x0C, OdIndex, triggerValu
SamplerTrigger
SamplerTrigger
Un disparador para comezar comoampler?
Atributos públicos estáticos
constexpr estático size_t SAMPLER_CONFIGURATION_VERSION = 0x01000000 constexpr estático size_t MAX_TRACKED_ADDRESSES = 12
8.36 SamplerNotificar
Use esta clase para activar sampler notificacións cando comeces comoampler. A clase ten a seguinte función pública de membro.
Versión: doc 1.4.2 / NanoLib 1.3.0
56
8 Referencia de clases/funcións
notificar ()
Entrega unha entrada de notificación.
virtual void nlc::SamplerNotify::notify (const ResultVoid & lastError, const SamplerEstado samplerState, const std::vector <SampleData> & sampleDatas, int64_t applicationData)
Parámetros [en] lastError [en] samplerEstado
[en] sampleDatas [en] applicationData
Informa do último erro ocorreu mentres sampling. Informa o sampEstado do ler no momento da notificación: Desconfigurado / Configurado / Listo / En execución / Completado / Fallo / Cancelado. Informa o sampmatriz de datos led. Informa datos específicos da aplicación.
8.37 Sampestrutura leData
Esta estrutura contén o sampdatos led.
uin64_t iterationNumber
Comeza en 0 e só aumenta no modo repetitivo.
std::vector<SampledValues> Contén a matriz de sampvalores led.
8.38 Sampestrutura ledValue
Esta estrutura contén o sampvalores led.
valor in64_t uin64_t CollectTimeMsec
Contén o valor dun enderezo OD rastrexado.
Contén o tempo de recollida en milisegundos, relativo ao sampo comezo.
8.39 SamplerTrigger struct
Esta estrutura contén a configuración do disparador do sampler.
SampCondición lerTriggerCondition
OdIndex uin32_t valor
Condición de activación: 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__GREATER__0x15 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 (enderezo) do disparador.
Valor de condición ou número de bit (a partir do bit cero).
8.40 Estrutura en serie
Busca aquí as túas opcións de comunicación en serie e os seguintes atributos públicos:
const std::string const SerialBaudRate
BAUD_RATE_OPTIONS_NAME = “velocidade en baudios en serie” baudRate = estrutura SerialBaudRate
Versión: doc 1.4.2 / NanoLib 1.3.0
57
8 Referencia de clases/funcións
const std::string const SerialParity
PARITY_OPTIONS_NAME = "paridade en serie" paridade = estrutura SerialParity
8.41 Estrutura SerialBaudRate
Atopa aquí a túa taxa de transmisión de comunicación en serie 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
BAUD_RATE_7200 = “7200” BAUD_RATE_9600 = “9600” BAUD_RATE_14400 = “14400” BAUD_RATE_19200 = “19200” BAUD_RATE_38400 = “38400” BAUD_RATE_56000 = “_56000_57600” 57600” BAUD_RATE_115200 = “115200” BAUD_RATE_128000 = “128000” BAUD_RATE_256000 = “256000”
8.42 Estrutura SerialParity
Busca aquí as túas opcións de paridade en serie e os seguintes atributos públicos:
const std::string const std::string const std::string const std::string const std::string
NONE = "ningunha" ODD = "impar" PAR = "par" MARK = "marcar" ESPAZO = "espazo"
Versión: doc 1.4.2 / NanoLib 1.3.0
58
9 Licenzas
9 Licenzas
Cabeceiras da interface da API NanoLib e exampO código fonte ten unha licenza de Nanotec Electronic GmbH & Co. KG baixo a licenza Creative Commons Attribution 3.0 Unported License (CC BY). As partes da biblioteca proporcionadas en formato binario (bibliotecas de comunicación básica e de bus de campo) están baixo a licenza Creative Commons AttributionNoDerivatives 4.0 International License (CC BY ND).
Creative Commons
O seguinte resumo lexible por humanos non substituirá a(s) licenza(s) en si. Podes atopar a licenza respectiva en creativecommons.org e na ligazón a continuación. Vostede é libre de:
CC BY 3.0
Compartir: mira ben. Adaptar: Remestura, transforma e crea a partir de
material para calquera propósito, incluso comercial.
CC BY-ND 4.0
Compartir: copiar e redistribuír o material en calquera medio ou formato.
O licenciador non pode revogar as anteriores liberdades sempre que cumpra os seguintes termos de licenza:
CC BY 3.0
CC BY-ND 4.0
Atribución: debes dar o crédito apropiado, Atribución: ver á esquerda. Pero: proporciona unha ligazón a isto
proporcionar unha ligazón á licenza e indicar se
outra licenza.
fixéronse cambios. Podes facelo en calquera
Sen derivados: se remesturas, transformas ou creas
de forma razoable, pero non de ningún xeito que suxira
sobre o material, non pode distribuír o
indica que o licenciante avala vostede ou o seu uso.
material modificado.
Sen restricións adicionais: pode non aplicar. Sen restricións adicionais: ver á esquerda. termos legais ou medidas tecnolóxicas que legalmente
restrinxir a outros de facer nada coa licenza
permisos.
Nota: Non tes que cumprir coa licenza para elementos do material de dominio público ou cando o teu uso estea permitido por unha excepción ou limitación aplicable.
Nota: Non se ofrecen garantías. É posible que a licenza non lle outorgue todos os permisos necesarios para o uso previsto. Por exampPor outra banda, outros dereitos como a publicidade, a privacidade ou os dereitos morais poden limitar o uso do material.
Versión: doc 1.4.2 / NanoLib 1.3.0
59
Pegada, contacto, versións
©2024 Nanotec Electronic GmbH & Co.KGKapellenstr.685622 FeldkirchenAlemañaTel.+49(0) 89 900 686-0Fax+49(0)89 900 686-50 info@nanotec.dewww.nanotec.com Todos os dereitos reservados. Erro, omisión, modificación técnica ou de contido posible sen previo aviso. As marcas/produtos citados son marcas comerciais dos seus propietarios e deben ser tratados como tales. Versión orixinal.
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
+ Engadido > Modificado # Fixado > Retraballo do examples.
+ NanoLib Modbus: Engadido mecanismo de bloqueo do dispositivo para Modbus VCP. # NanoLib Core: comprobación do estado da conexión corrixida. # Código NanoLib: eliminación de referencia de hardware de bus corrixida.
+ NanoLib-CANopen: Soporte para o adaptador Peak PCAN-USB (IPEH-002021/002022).
> NanoLib Core: cambiou a interface de devolución de chamadas de rexistro (LogLevel substituído por LogModule). # NanoLib Logger: corrixiuse a separación entre núcleo e módulos. # Modbus TCP: actualización de firmware corrixida para FW4. # EtherCAT: subida do programa NanoJ corrixida para Core5. # EtherCAT: actualización de firmware corrixida para Core5.
# Modbus RTU: solucionáronse problemas de tempo con baixas velocidades de transmisión durante a actualización do firmware. # RESTful: arranxouse a carga do programa NanoJ.
# Módulos NanoLib Sampler: Lectura correcta do sampvalores booleanos led.
+ Compatibilidade con Java 11 para todas as plataformas. + Compatibilidade con Python 3.11/3.12 para todas as plataformas. + Nova interface de devolución de chamada de rexistro (ver examples). + Receptores de devolución de chamadas para NanoLib Logger. > Actualizar o rexistro á versión 1.12.0. > Módulos NanoLib Sampler: Soporte agora para o firmware do controlador Nanotec v24xx. > Módulos NanoLib Sampler: Cambio na estrutura utilizada para o sampler configuración. > Módulos NanoLib Sampler: O modo continuo é sinónimo de infinito; a condición de activación compróbase unha vez; o número de sampos ficheiros deben ser 0. > Módulos NanoLib Sampler: prioridade normal para o fío que recolle datos no modo de firmware. > Módulos NanoLib Sampler: algoritmo reescrito para detectar a transición entre o estado Listo e en execución. # NanoLib Core: non hai máis violación de acceso (0xC0000005) ao pechar 2 ou máis dispositivos usando o mesmo hardware de bus. # NanoLib Core: non hai máis fallos de segmentación ao conectar un adaptador PEAK en Linux. # Módulos NanoLib Sampler: correcto samplectura de valores led en modo firmware. # Módulos NanoLib Sampler: Configuración correcta de 502X:04. # Módulos NanoLib Sampler: mestura correcta de buffers con canles. # NanoLib-Canopen: aumentou os tempos de espera de CAN para a robustez e a dixitalización correcta a velocidades de transmisión máis baixas. # NanoLib-Modbus: algoritmo de detección VCP para dispositivos especiais (USB-DA-IO).
+ Soporte EtherCAT.
+ Nota sobre a configuración do proxecto VS en Configurar o seu proxecto.
+ getDeviceHardwareGroup (). + getProfinetDCP (isServiceAvailable). + getProfinetDCP (validateProfinetDeviceIp). + autoAssignObjectDictionary (). + getXmlFileNome (). + const std::string & xmlFileRuta en addObjectDictionary (). + obténSamplerInterface ().
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)
Versión: doc 1.4.2 / NanoLib 1.3.0
60
10 Pegada, contacto, versións
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
+ Engadido > Modificado # Fixado + reiniciar o dispositivo (). + Código de erro ResourceUnavailable para getDeviceBootloaderVersion (), ~VendorId (), ~HardwareVersion (), ~SerialNumber e ~Uid. > firmwareUploadFromFile agora cargarFirmwareFromFile (). > firmwareUpload () agora uploadFirmware (). > bootloaderUploadFromFile () agora cargarBootloaderFromFile (). > bootloaderUpload () agora uploadBootloader (). > bootloaderFirmwareUploadFromFile () para cargarBootloaderFirmwareFromFile (). > bootloaderFirmwareUpload () agora uploadBootloaderFirmware (). > nanojUploadFromFile () agora carga NanoJFromFile (). > nanojCargar () agora cargarNanoJ (). > objectDictionaryLibrary () agora getObjectDictionaryLibrary (). > String_String_Map agora StringStringMap. > NanoLib-Common: execución máis rápida de listAvailableBusHardware e openBusHardwareWithProtocol con adaptador Ixxat. > NanoLib-CANopen: a configuración predeterminada utilizada (velocidade de 1000k, número de bus Ixxat 0) se as opcións de hardware do bus están baleiras. > NanoLib-RESTful: permiso de administrador obsoleto para a comunicación con cargadores de arranque Ethernet en Windows se o controlador npcap/winpcap está dispoñible. # NanoLib-CANopen: o hardware do bus agora ábrese sen accidentes con opcións baleiras. # NanoLib-Common: openBusHardwareWithProtocol () sen fuga de memoria agora.
+ Soporte para Linux ARM64. + Soporte de almacenamento masivo USB / REST / Profinet DCP. + checkConnectionState (). + getDeviceBootloaderVersion (). + ResultProfinetDevices. + NlcErrorCode (substituíu NanotecExceptions). + NanoLib Modbus: concentrador VCP / USB unificado para USB. > A exploración Modbus TCP devolve resultados. < A latencia de comunicación Modbus TCP permanece constante.
+ Máis ObjectEntryDataType (complexo e profesionalfile-específico). + IOError devolve se connectDevice () e scanDevices () non atopan ningún. + Só 100 ms de tempo de espera nominal para CanOpen/Modbus.
+ Soporte Modbus (máis USB Hub a través de VCP). + Capítulo Creando o teu propio proxecto Linux. + extraHardwareSpecifier a BusHardwareId (). + extraId_ e extraStringId_ a DeviceId ().
+ setBusState (). + getDeviceBootloaderBuildId (). + getDeviceFirmwareBuildId (). + getDeviceHardwareVersion (). # Correccións de erros.
Edición.
Produto
0.8.0 0.7.1 0.7.0 0.5.1 0.5.1
Versión: doc 1.4.2 / NanoLib 1.3.0
61
Documentos/Recursos
![]() |
Programación en C++ Nanotic NanoLib [pdfManual do usuario NanoLib Programación C, Programación C, Programación |