Программирование Nanotic NanoLib на C++
Информация о продукте
Технические характеристики
- Название продукта: НаноЛиб
- Программирование Язык: С++
- Версия продукта: 1.3.0
- Версия руководства пользователя: 1.4.2
Библиотека NanoLib предназначена для программирования управляющего программного обеспечения для контроллеров Nanotec. Она предоставляет пользовательский интерфейс, основные функции и библиотеки связи для облегчения разработки управляющих приложений.
Инструкции по применению продукта
- Прежде чем начать:
- Убедитесь, что ваша система соответствует требованиям к оборудованию, указанным в руководстве. Целевая аудитория этого продукта включает разработчиков, желающих создать управляющее программное обеспечение для контроллеров Nanotec.
- Начиная:
- Чтобы начать использовать NanoLib, выполните следующие действия:
- Начните с импорта NanoLib в свой проект.
- При необходимости настройте параметры проекта.
- Создайте свой проект, включив в него функциональные возможности NanoLib.
- Создание проектов:
- Вы можете создавать проекты как для Windows, так и для Linux. Следуйте конкретным инструкциям, приведенным в руководстве для каждой платформы.
- Ссылка на классы/функции:
- Подробное описание классов и функций, доступных в NanoLib для программирования управляющего программного обеспечения, можно найти в руководстве пользователя.
Часто задаваемые вопросы
- В: Какова цель NanoLib?
- A: NanoLib — это библиотека для программирования управляющего программного обеспечения для контроллеров Nanotec, предоставляющая основные функциональные возможности и возможности связи.
- В: Как начать работу с NanoLib?
- A: Начните с импорта NanoLib в свой проект, настройки параметров проекта и сборки проекта для использования функций NanoLib.
«`
Руководство пользователя НаноЛиб
С++
Действительно для версии продукта 1.3.0.
Версия руководства пользователя: 1.4.2
Цель документа и соглашения
Этот документ описывает настройку и использование библиотеки NanoLib и содержит ссылки на все классы и функции для программирования собственного управляющего программного обеспечения для контроллеров Nanotec. Мы используем следующие шрифты:
Подчеркнутый текст обозначает перекрестную ссылку или гиперссылку.
ExampФайл 1: Точные инструкции по NanoLibAccessor см. в разделе «Настройка». БывшийampШаг 2. Установите драйвер Ixxat и подключите адаптер CAN-USB. Курсив означает: Это именованный объект, путь/пункт меню, вкладка/ file имя или (при необходимости) иноязычное выражение.
Exampле 1: Выберите File > Создать > Пустой документ. Откройте вкладку «Инструмент» и выберите «Комментарий». БывшийampФайл 2: Этот документ разделяет пользователей (= Nutzer; usuario; utente; utilisateur; utente и т. д.) на:
– Сторонний пользователь (= Drittnutzer; tercero usuario; terceiro utente; tiers utilisateur; terzo utente и т. д.). – Конечный пользователь (= Endnutzer; окончательный пользователь; окончательный пользователь; окончательный пользователь; окончательный пользователь и т. д.).
Courier отмечает блоки кода или команды программирования. Бывшийampле 1: через Bash вызовите sudo make install, чтобы скопировать общие объекты; затем вызовите ldconfig. БывшийampФайл 2: используйте следующую функцию NanoLibAccessor, чтобы изменить уровень ведения журнала в NanoLib:
// ***** Вариант C++ *****
void setLoggingLevel (уровень LogLevel);
Жирный текст выделяет отдельные слова, имеющие решающее значение. Альтернативно, восклицательные знаки в квадратных скобках подчеркивают критическую (!) важность.
Example 1: Защитите себя, других и свое оборудование. Следуйте нашим общим указаниям по безопасности, которые применимы ко всей продукции Nanotec.
Example 2: Для вашей собственной безопасности также соблюдайте специальные указания по безопасности, применимые к данному конкретному изделию. Глагол to co-click означает щелчок дополнительной клавишей мыши для открытия контекстного меню и т. д.
ExampШаг 1. Нажмите на значок file, выберите «Переименовать» и переименуйте file. БывшийampШаг 2. Чтобы проверить свойства, щелкните значок file и выберите «Свойства».
Версия: документ 1.4.2 / NanoLib 1.3.0.
4
Прежде чем начать
Прежде чем начать использовать NanoLib, подготовьте свой компьютер и узнайте о предполагаемом использовании и ограничениях библиотеки.
2.1 Требования к системе и оборудованию
ВНИМАНИЕ Неисправность из-за 32-битной работы или прекращенной системы! Используйте и постоянно поддерживайте 64-битную систему. Соблюдайте прекращение OEM и ~инструкции.
NanoLib 1.3.0 поддерживает все продукты Nanotec с CANopen, Modbus RTU (также USB на виртуальном COM-порту), Modbus TCP, EtherCat и Profinet. Для более старых NanoLib: см. журнал изменений в выходных данных. Только на ваш риск: использование устаревших систем. Примечание: следуйте действующим инструкциям OEM, чтобы установить задержку как можно ниже, если у вас возникли проблемы при использовании USB-адаптера на базе FTDI.
Требования (обязательно 64-битная система)
Windows 10 или 11 с Visual Studio 2019 версии 16.8 или более поздней версии и Windows SDK 10.0.20348.0 (версия 2104) или более поздней версии
Распространяемые компоненты C++ 2017 или более поздней версии CANopen: Ixxat VCI или базовый драйвер PCAN (необязательно) Модуль EtherCat / Profinet DCP: Npcap или WinPcap Модуль RESTful: Npcap, WinPcap или разрешение администратора на
общаться с загрузчиками Ethernet
Linux с Ubuntu 20.04 LTS до 24 (все x64 и arm64)
Заголовки ядра и пакет libpopt-dev Profinet DCP: возможности CAP_NET_ADMIN и CAP_NET_RAW
связывает CANopen: драйвер Ixxat ECI или адаптер Peak PCAN-USB EtherCat: CAP_NET_ADMIN, CAP_NET_RAW и
Возможности CAP_SYS_NICE RESTful: способность CAP_NET_ADMIN взаимодействовать с Eth-
загрузчики ernet (также рекомендуется: CAP_NET_RAW)
Язык, адаптеры полевой шины, кабели
C++ GCC 7 или выше (Linux)
EtherCAT: кабель Ethernet VCP / USB-концентратор: теперь единый USB USB-накопитель: кабель USB REST: кабель Ethernet CANopen: Ixxat USB-to-CAN V2; Na-
notec ZK-USB-CAN-1, адаптер Peak PCANUSB Нет поддержки Ixxat для Ubuntu на arm64
Modbus RTU: Nanotec ZK-USB-RS485-1 или эквивалентный адаптер; USB-кабель на виртуальном COM-порту (VCP)
Modbus TCP: кабель Ethernet согласно техническому описанию продукта
2.2 Предполагаемое использование и аудитория
NanoLib — это программная библиотека и программный компонент для работы и связи с контроллерами Nanotec в широком спектре промышленных приложений, предназначенный только для программистов с соответствующей квалификацией.
Из-за неспособности оборудования (ПК) и операционной системы работать в режиме реального времени NanoLib не подходит для использования в приложениях, требующих синхронного многоосевого движения или в приложениях, которые в целом чувствительны ко времени.
Ни в коем случае вы не можете интегрировать NanoLib в качестве компонента безопасности в продукт или систему. При доставке конечным пользователям вы должны добавить соответствующие предупреждающие уведомления и инструкции по безопасному использованию и безопасной эксплуатации к каждому продукту с компонентом, произведенным Nanotec. Вы должны передать все предупреждающие уведомления, выпущенные Nanotec, непосредственно конечному пользователю.
2.3 Комплект поставки и гарантия
NanoLib поставляется в виде папки *.zip из нашей загрузки. webсайт для Европы, Ближнего Востока и Африки/Азиатско-Тихоокеанского региона или АМЕРИКИ. Обязательно сохраните и разархивируйте загрузку перед установкой. Пакет NanoLib содержит:
Версия: документ 1.4.2 / NanoLib 1.3.0.
5
2 Перед тем, как начать
Заголовки интерфейса как исходный код (API)
Основные функции как библиотеки в двоичном формате: nano-
Библиотеки, облегчающие коммуникацию: nanolibm_ lib.dll
[yourfieldbus].dll и т. д.Exampпроект: Example.sln (Visual Studio
проект) и бывшийample.cpp (основной file)
Для объема гарантии, пожалуйста, соблюдайте a) наши положения и условия для EMEA / APAC или AMERICA и b) все условия лицензии. Примечание: Nanotec не несет ответственности за неисправное или ненадлежащее качество, обработку, установку, эксплуатацию, использование и обслуживание стороннего оборудования! Для обеспечения должной безопасности всегда следуйте действующим инструкциям OEM.
Версия: документ 1.4.2 / NanoLib 1.3.0.
6
Архитектура NanoLib
Модульная структура программного обеспечения NanoLib позволяет свободно настраивать функции контроллера двигателя/полевой шины вокруг строго заранее созданного ядра. NanoLib содержит следующие модули:
Пользовательский интерфейс (API)
Ядро NanoLib
Классы интерфейса и вспомогательные классы, которые библиотеки
Коммуникационные библиотеки Библиотеки, специфичные для полевой шины, которые
получить доступ к вашему контроллеру, реализовать функциональность API, сделать интерфейс между NanoLib
ОД (объектный словарь)
взаимодействовать с автобусными библиотеками.
ядро и шинное оборудование.
базируется на базовой функции NanoLib.
национальности.
3.1 Пользовательский интерфейс
Пользовательский интерфейс состоит из интерфейса заголовка files можно использовать для доступа к параметрам контроллера. Классы пользовательского интерфейса, описанные в справочнике классов/функций, позволяют:
Подключитесь к оборудованию (адаптеру полевой шины) и устройству контроллера. Получите доступ к OD устройства для чтения/записи параметров контроллера.
3.2 Ядро NanoLib
Ядро NanoLib поставляется с библиотекой импорта nanolib.lib. Она реализует функциональность пользовательского интерфейса и отвечает за:
Загрузка и управление библиотеками связи. Предоставление функциональных возможностей пользовательского интерфейса в NanoLibAccessor. Эта точка входа связи определяет
штрафует набор операций, которые вы можете выполнить в ядре NanoLib и коммуникационных библиотеках.
3.3 Коммуникационные библиотеки
В дополнение к nanotec.services.nanolib.dll (полезно для вашей дополнительной Plug & Drive Studio), NanoLib предлагает следующие коммуникационные библиотеки:
nanolibm_canopen.dll nanolibm_modbus.dll
nanolibm_ethercat.dll nanolibm_restful-api.dll
nanolibm_usbmmsc.dll nanolibm_profinet.dll
Все библиотеки создают уровень аппаратной абстракции между ядром и контроллером. Ядро загружает их при запуске из назначенной папки проекта и использует для установления связи с контроллером по соответствующему протоколу.
Версия: документ 1.4.2 / NanoLib 1.3.0.
7
Начиная
Прочтите, как правильно настроить NanoLib для вашей операционной системы и как подключить оборудование при необходимости.
4.1 Подготовьте вашу систему
Перед установкой драйверов адаптера сначала подготовьте свой ПК вместе с операционной системой. Чтобы подготовить ПК вместе с ОС Windows, установите MS Visual Studio с расширениями C++. Чтобы установить make и gcc с помощью Linux Bash, вызовите sudo apt install build-essentials. Затем включите возможности CAP_NET_ADMIN, CAP_NET_RAW и CAP_SYS_NICE для приложения, использующего NanoLib: 1. Вызовите sudo setcap 'cap_net_admin,cap_net_raw,cap_sys_nice+eip'
имя>. 2. Только после этого установите драйверы адаптера.
4.2 Установка драйвера адаптера Ixxat для Windows
Только после установки драйвера вы можете использовать адаптер USB-to-CAN V2 от Ixxat. Прочитайте руководство по продукту USB-накопителя, чтобы узнать, как активировать виртуальный компорт (VCP). 1. Загрузите и установите драйвер VCI 4 от Ixxat для Windows с сайта www.ixxat.com2. Подключите компактный адаптер USB-to-CAN V2 от Ixxat к ПК через USB. 3. С помощью диспетчера устройств: проверьте, правильно ли установлены/распознаны драйвер и адаптер.
4.3 Установка драйвера адаптера Peak для Windows
Только после установки драйвера вы можете использовать адаптер Peak PCAN-USB. Прочитайте руководство по продукту USB-накопителя, чтобы узнать, можно ли и как активировать виртуальный компорт (VCP). 1. Загрузите и установите установку драйвера устройства Windows (= установочный пакет с драйверами устройств, инструментами и
API) из http://www.peak-system.com2. Подключите адаптер Peak PCAN-USB к ПК через USB. 3. С помощью диспетчера устройств: проверьте, правильно ли установлены/распознаны драйвер и адаптер.
4.4 Установка драйвера адаптера Ixxat для Linux
Только после установки драйвера вы сможете использовать адаптер USB-to-CAN V2 от Ixxat. Примечание: для других поддерживаемых адаптеров требуются ваши разрешения с помощью sudo chmod +777/dev/ttyACM* (* номер устройства). Прочтите руководство по продукту USB-накопителя, чтобы узнать, можно ли и как активировать виртуальный интерфейс (VCP). 1. Установите программное обеспечение, необходимое для драйвера ECI и демонстрационного приложения:
sudo apt-get update apt-get install libusb-1.0-0-dev libusb-0.1-4 libc6 libstdc++6 libgcc1 buildessential
2. Загрузите драйвер ECI-for-Linux с сайта www.ixxat.com. Распакуйте его через:
распаковать eci_driver_linux_amd64.zip
3. Установите драйвер через:
cd /EciLinux_amd/src/KernelModule sudo make install-usb
4. Проверьте успешность установки драйвера, скомпилировав и запустив демонстрационное приложение:
cd /EciLinux_amd/src/EciDemos/ sudo make cd /EciLinux_amd/bin/release/ ./LinuxEciDemo
Версия: документ 1.4.2 / NanoLib 1.3.0.
8
4 Начало работы
4.5 Установка драйвера адаптера Peak для Linux
Только после установки драйвера вы можете использовать адаптер Peak PCAN-USB. Примечание: для других поддерживаемых адаптеров требуются ваши разрешения с помощью sudo chmod +777/dev/ttyACM* (* номер устройства). Прочтите руководство по продукту USB-накопителя, чтобы узнать, можно ли и как активировать виртуальный интерфейс (VCP). 1. Проверьте, есть ли у вашего Linux заголовки ядра: ls /usr/src/linux-headers-`uname -r`. Если нет, установите
их: sudo apt-get install linux-headers-`uname -r` 2. Только сейчас установите пакет libpopt-dev: sudo apt-get install libpopt-dev 3. Загрузите необходимый пакет драйверов (peak-linux-driver-xxx.tar.gz) с www.peak-system.com. 4. Чтобы распаковать его, используйте: tar xzf peak-linux-driver-xxx.tar.gz 5. В распакованной папке: Скомпилируйте и установите драйверы, базовую библиотеку PCAN и т. д.: make all
sudo make install 6. Чтобы проверить работу, подключите адаптер PCAN-USB.
а) Проверьте модуль ядра:
lsmod | grep pcan б) … и общая библиотека:
ls -l /usr/lib/libpcan*
Примечание: если возникают проблемы с USB3, используйте порт USB2.
4.6 Подключите ваше оборудование
Чтобы запустить проект NanoLib, подключите совместимый контроллер Nanotec к ПК с помощью адаптера. 1. Подключите адаптер к контроллеру с помощью подходящего кабеля. 2. Подключите адаптер к ПК в соответствии с техническим описанием адаптера. 3. Включите контроллер с помощью подходящего источника питания. 4. При необходимости измените настройки связи контроллера Nanotec, как указано в руководстве по эксплуатации.
4.7 Загрузка NanoLib
Для первого знакомства с быстрыми и простыми основами вы можете (но не должны) использовать наш пример.ampле проект. 1. В зависимости от вашего региона: Загрузите NanoLib с нашего webсайт для Европы, Ближнего Востока и Африки/Азиатско-Тихоокеанского региона или АМЕРИКИ. 2. Разархивируйте пакет files/folders и выберите один вариант: Для быстрого и простого ознакомления: см. Запуск ex.ample project. Для расширенной настройки в Windows: см. Создание собственного проекта Windows. Для расширенной настройки в Linux: см. Создание собственного проекта Linux.
Версия: документ 1.4.2 / NanoLib 1.3.0.
9
Начало бывшегоampле проект
При правильной загрузке NanoLib бывшийampВ этом проекте показано использование NanoLib с контроллером Nanotec. Примечание. Для каждого шага имеются комментарии в предоставленном примере.ampВ коде файла объясняются используемые функции. ЭксampПроект состоит из: `*_functions_exampле.*' files, которые содержат реализации функций интерфейса NanoLib `*_callback_exampле.*' files, которые содержат реализации для различных обратных вызовов (сканирование, данные и
регистрация) `menu_*.*' file, который содержит логику меню и код Exampле. * file, которая является основной программой, создающей меню и инициализирующей все используемые параметры Sampler_exampле. * file, который содержит бывшийampреализация le для sampler использование. Вы можете найти больше examples, с некоторыми командами движения для различных режимов работы, в Базе знаний на nanotec.com. Все они могут использоваться в Windows или Linux.
В Windows с Visual Studio 1. Откройте Example.sln file2. Откройте бывш.ample.cpp. 3. Скомпилируйте и запустите exampкод.
В Linux через Bash 1. Распакуйте исходный код file, перейдите в папку с распакованным содержимым. Основной file для бывшегоampле есть
example.cpp. 2. В bash вызовите:
а. «sudo make install» для копирования общих объектов и вызова ldconfig. б. «make all» для сборки тестового исполняемого файла. 3. Папка bin содержит исполняемый файл example file. С помощью bash: Перейдите в папку вывода и введите ./example. Если ошибок не произошло, ваши общие объекты теперь установлены должным образом, и ваша библиотека готова к использованию. Если ошибка читает ./example: ошибка при загрузке общих библиотек: libnanolib.so: невозможно открыть общий объект file: Нет такого file или каталог, установка общих объектов не удалась. В этом случае выполните следующие шаги. 4. Создайте новую папку в /usr/local/lib (необходимы права администратора). В bash введите:
sudo mkdir /usr/local/lib/nanotec
5. Скопируйте все общие объекты из zip-архива. fileПапка lib:
установить ./lib/*.so /usr/local/lib/nanotec/
6. Проверьте содержимое целевой папки с помощью:
ls -al /usr/local/lib/nanotec/
Он должен содержать список общих объектов. files из папки lib. 7. Запустите ldconfig в этой папке:
sudo ldconfig /usr/local/lib/nanotec/
Бывшийample реализован как приложение CLI и предоставляет интерфейс меню. Пункты меню основаны на контексте и будут включены или отключены в зависимости от состояния контекста. Они предлагают вам возможность выбирать и выполнять различные функции библиотеки, следуя типичному рабочему процессу для работы с контроллером: 1. Проверить ПК на наличие подключенного оборудования (адаптеров) и составить их список. 2. Установить соединение с адаптером. 3. Сканировать шину на наличие подключенных устройств контроллера. 4. Подключиться к устройству.
Версия: документ 1.4.2 / NanoLib 1.3.0.
10
5 Запуск бывшегоampле проект
5. Протестируйте одну или несколько функций библиотеки: чтение/запись из/в словарь объектов контроллера, обновление прошивки, загрузка и запуск программы NanoJ, запуск двигателя и его настройка, настройка и использование регистрации/регистрации.ampлер.
6. Закройте соединение сначала с устройством, затем с адаптером.
Версия: документ 1.4.2 / NanoLib 1.3.0.
11
Создание собственного проекта Windows
Создайте, скомпилируйте и запустите собственный проект Windows для использования NanoLib.
6.1 Импорт NanoLib
Импортируйте заголовок NanoLib files и библиотеки через MS Visual Studio.
1. Откройте Visual Studio. 2. Через Создать новый проект > Консольное приложение C++ > Далее: выберите тип проекта. 3. Назовите свой проект (здесь: NanolibTest), чтобы создать папку проекта в обозревателе решений. 4. Выберите Готово. 5. Откройте окна file explorer и перейдите в новую созданную папку проекта. 6. Создайте две новые папки, inc и lib. 7. Откройте папку пакета NanoLib. 8. Оттуда: скопируйте заголовок files из папки include в папку вашего проекта inc и все .lib и .dll
files в папку вашего нового проекта lib. 9. Проверьте папку вашего проекта на наличие надлежащей структуры, напримерampль:
папка ect для надлежащей структуры:
. NanolibTest inc accessor_factory.hpp bus_hardware_id.hpp … od_index.hpp result_od_entry.hpp lib nanolibm_canopen.dll nanolib.dll … nanolib.lib NanolibTest.cpp NanolibTest.vcxproj NanolibTest.vcxproj.filters NanolibTest.vcxproj.user NanolibTest.sln
6.2 Настройте свой проект
Используйте Solution Explorer в MS Visual Studio для настройки проектов NanoLib. Примечание: для корректной работы NanoLib выберите конфигурацию выпуска (не отладки!) в настройках проекта Visual C++; затем соберите и свяжите проект с исполняемыми средами VC распространяемых пакетов C++ [2022].
1. В обозревателе решений: перейдите в папку проекта (здесь: NanolibTest). 2. Совместно щелкните папку, чтобы открыть контекстное меню. 3. Выберите «Свойства». 4. Активируйте «Все конфигурации» и «Все платформы». 5. Выберите «C/C++» и перейдите в «Дополнительные каталоги включаемых файлов». 6. Вставьте: $(ProjectDir)Nanolib/includes;%(AdditionalIncludeDirectories) 7. Выберите «Компоновщик» и перейдите в «Дополнительные каталоги библиотек». 8. Вставьте: $(ProjectDir)Nanolib;%(AdditionalLibraryDirectories) 9. Расширьте «Компоновщик» и выберите «Ввод». 10. Перейдите в «Дополнительные зависимости» и вставьте: nanolib.lib;%(AdditionalDependencies) 11. Подтвердите, нажав «ОК».
Версия: документ 1.4.2 / NanoLib 1.3.0.
12
6 Создание собственного проекта Windows
12. Перейдите в Конфигурация > C++ > Язык > Стандарт языка > Стандарт ISO C++17 и установите стандарт языка C++17 (/std:c++17).
6.3 Создайте свой проект
Создайте свой проект NanoLib в MS Visual Studio. 1. Откройте основной *.cpp file (здесь: nanolib_example.cpp) и отредактируйте код, если необходимо. 2. Выберите Сборка > Диспетчер конфигураций. 3. Измените Активные платформы решения на x64. 4. Подтвердите, нажав Закрыть. 5. Выберите Сборка > Сборка решения. 6. Нет ошибок? Проверьте, правильно ли отображается вывод компиляции:
1>—— Начата очистка: Проект: NanolibTest, Конфигурация: Отладка x64 —–========== Очистка: 1 успешно, 0 неудачно, 0 пропущено ==========
Версия: документ 1.4.2 / NanoLib 1.3.0.
13
7 Создание собственного проекта Linux
7 Создание собственного проекта Linux
Создайте, скомпилируйте и запустите свой собственный проект Linux для использования NanoLib. 1. В распакованном установочном пакете NanoLib: Откройте /nanotec_nanolib. 2. Найти все общие объекты в tar.gz file3. Выберите один из вариантов: установите каждую библиотеку либо с помощью Makefile или вручную.
7.1 Установка общих объектов с помощью Makefile
Использовать Сделатьfile с Linux Bash для автоматической установки всех *.so по умолчанию files. 1. Через Bash: Перейдите в папку, содержащую makefile2. Скопируйте общие объекты через:
sudo make install 3. Подтвердите с помощью:
ldconfig
7.2 Установка общих объектов вручную
Используйте Bash для установки всех *.so files NanoLib вручную. 1. Через Bash: создайте новую папку в /usr/local/lib. 2. Требуются права администратора! Введите:
sudo mkdir /usr/local/lib/nanotec 3. Перейдите в папку с распакованным установочным пакетом. 4. Скопируйте все общие объекты из папки lib с помощью:
install ./nanotec_nanolib/lib/*.so /usr/local/lib/nanotec/ 5. Проверьте содержимое целевой папки с помощью:
ls -al /usr/local/lib/nanotec/ 6. Проверьте, все ли общие объекты из папки lib перечислены. 7. Запустите ldconfig в этой папке с помощью:
sudo ldconfig /usr/local/lib/nanotec/
7.3 Создайте свой проект
После установки общих объектов: Создайте новый проект для Linux NanoLib. 1. Через Bash: Создайте новую папку проекта (здесь: NanoLibTest) с помощью:
mkdir NanoLibTest cd NanoLibTest
2. Скопируйте заголовок files в папку include (здесь: inc) через: mkdir inc cp / FILE Я>/nanotec_nanolib/inc/*.hpp inc
3. Создайте основной file (NanoLibTest.cpp) через: #include «accessor_factory.hpp» #include
Версия: документ 1.4.2 / NanoLib 1.3.0.
14
7 Создание собственного проекта Linux
int main(){ nlc::NanoLibAccessor *accessor = getNanoLibAccessor();
nlc::ResultBusHwIds результат = accessor->listAvailableBusHardware();
если(результат. имеетОшибку()) { std::cout << результат. получитьОшибку() << std:: конец; }
else{ std::cout << “Успех” << std::endl; }
удалить аксессор; вернуть 0; }
4. Проверьте структуру папки проекта:
. НаноЛибТест
inc accessor_factory.hpp bus_hardware_id.hpp … od_index.hpp result.hpp NanoLibTest.cpp
7.4 Скомпилируйте и протестируйте свой проект
Подготовьте Linux NanoLib к использованию с помощью Bash.
1. Через Bash: скомпилируйте основной file с помощью:
g++ -Wall -Wextra -pedantic -I./inc -c NanoLibTest.cpp -o NanoLibTest
2. Связать исполняемый файл вместе с помощью:
g++ -Wall -Wextra -pedantic -I./inc -o test NanoLibTest.o L/usr/local/lib/nanotec -lnanolib -ldl
3. Запустите тестовую программу через:
./тест
4. Проверьте, правильно ли ваш Bash сообщает:
успех
Версия: документ 1.4.2 / NanoLib 1.3.0.
15
8 Справочник по классам/функциям
8 Справочник по классам/функциям
Здесь вы найдете список классов пользовательского интерфейса NanoLib и их функций-членов. Типичное описание функции включает краткое введение, определение функции и список параметров/возвращаемых значений:
ExampleFunction () Кратко рассказывает, что делает функция.
виртуальная пустота nlc::NanoLibAccessor::ExampleFunction (Param_a const & param_a, Param_b const & param_B)
Параметры param_a param_b
Возвращает РезультатVoid
Дополнительный комментарий при необходимости. Дополнительный комментарий при необходимости.
8.1 Аксессор NanoLib
Класс интерфейса, используемый как точка входа в NanoLib. Типичный рабочий процесс выглядит так:
1. Начните со сканирования оборудования с помощью NanoLibAccessor.listAvailableBusHardware(). 2. Установите параметры связи с помощью BusHardwareOptions(). 3. Откройте аппаратное соединение с помощью NanoLibAccessor.openBusHardwareWithProtocol(). 4. Сканируем шину на предмет подключенных устройств с помощью NanoLibAccessor.scanDevices(). 5. Добавьте устройство с помощью NanoLibAccessor.addDevice(). 6. Подключитесь к устройству с помощью NanoLibAccessor.connectDevice(). 7. После завершения операции отключите устройство с помощью NanoLibAccessor.disconnectDevice(). 8. Удалите устройство с помощью NanoLibAccessor.removeDevice(). 9. Закройте аппаратное соединение с помощью NanoLibAccessor.closeBusHardware().
NanoLibAccessor имеет следующие открытые функции-члены:
listAvailableBusHardware () Используйте эту функцию для просмотра списка доступного оборудования полевой шины.
виртуальный ResultBusHwIds nlc::NanoLibAccessor::listAvailableBusHardware ()
Возвращает ResultBusHwIds
Предоставляет массив идентификаторов полевой шины.
openBusHardwareWithProtocol () Используйте эту функцию для подключения оборудования шины.
виртуальный ResultVoid nlc::NanoLibAccessor::openBusHardwareWithProtocol (BusHardwareId const & busHwId, BusHardwareOptions const & busHwOpt)
Параметры busHwId busHwOpt
Возвращает РезультатVoid
Указывает полевую шину, которую нужно открыть. Определяет параметры открытия полевой шины. Подтверждает выполнение функции void.
isBusHardwareOpen () Используйте эту функцию, чтобы проверить, открыто ли ваше аппаратное соединение полевой шины.
виртуальный ResultVoid nlc::NanoLibAccessor::openBusHardwareWithProtocol (const BusHardwareId & busHwId, const BusHardwareOptions & busHwOpt)
Версия: документ 1.4.2 / NanoLib 1.3.0.
16
8 Справочник по классам/функциям
Параметры BusHardwareId Возвращает true
ЛОЖЬ
Указывает каждую полевой шину, которую необходимо открыть. Аппаратное обеспечение открыто. Аппаратное обеспечение закрыто.
getProtocolSpecificAccessor () Используйте эту функцию для получения объекта доступа, специфичного для протокола.
виртуальный ResultVoid nlc::NanoLibAccessor::getProtocolSpecificAccessor (BusHardwareId const & busHwId)
Параметры busHwId Возвращает ResultVoid
Указывает полевую шину, для которой требуется получить средство доступа. Подтверждает выполнение функции void.
getProfinetDCP () Используйте эту функцию для возврата ссылки на интерфейс Profinet DCP.
виртуальный ProfinetDCP и getProfinetDCP ()
Возвращает ПрофинетДКП
получаетamplerInterface () Используйте эту функцию, чтобы получить ссылку на sampлер интерфейс.
виртуальный SamplerInterface и getSampлерИнтерфейс ()
Возвращает СamplerИнтерфейс
Относится к с.ampкласс интерфейса ler.
setBusState () Используйте эту функцию для установки состояния, зависящего от протокола шины.
виртуальный ResultVoid nlc::NanoLibAccessor::setBusState (const BusHardwareId и busHwId, const std::string и state)
Параметры состояния busHwId
Возвращает РезультатVoid
Указывает полевую шину, которую нужно открыть. Назначает состояние шины в виде строкового значения. Подтверждает выполнение функции void.
scanDevices () Используйте эту функцию для сканирования устройств в сети.
виртуальный ResultDeviceIds nlc::NanoLibAccessor::scanDevices (const BusHardwareId & busHwId, NlcScanBusCallback* обратный вызов)
Параметры обратного вызова busHwId
Возвращает ResultDeviceIds IOError
Указывает полеевую шину для сканирования. Трассировщик прогресса NlcScanBusCallback. Предоставляет массив идентификаторов устройств. Сообщает, что устройство не найдено.
Версия: документ 1.4.2 / NanoLib 1.3.0.
17
8 Справочник по классам/функциям
добавить устройство ()
Используйте эту функцию, чтобы добавить шинное устройство, описанное deviceId, во внутренний список устройств NanoLib и вернуть для него deviceHandle.
виртуальный ResultDeviceHandle nlc::NanoLibAccessor::addDevice (DeviceId const & deviceId)
Параметры deviceId Возвращает ResultDeviceHandle
Указывает устройство, добавляемое в список. Предоставляет дескриптор устройства.
ConnectDevice () Используйте эту функцию для подключения устройства по DeviceHandle.
виртуальный ResultVoid nlc::NanoLibAccessor::connectDevice (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultVoid
IOError
Указывает, к какому шинному устройству подключается NanoLib. Подтверждает выполнение функции void. Сообщает, что устройство не найдено.
getDeviceName () Используйте эту функцию, чтобы получить имя устройства по DeviceHandle.
виртуальный ResultString nlc::NanoLibAccessor::getDeviceName (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultString
Указывает, для какого шинного устройства NanoLib получает имя. Предоставляет имена устройств в виде строки.
getDeviceProductCode () Используйте эту функцию, чтобы получить код продукта устройства по DeviceHandle.
виртуальный ResultInt nlc::NanoLibAccessor::getDeviceProductCode (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultInt
Указывает, для какого шинного устройства NanoLib получает код продукта. Предоставляет коды продуктов в виде целого числа.
getDeviceVendorId () Используйте эту функцию, чтобы получить идентификатор поставщика устройства по методу deviceHandle.
виртуальный ResultInt nlc::NanoLibAccessor::getDeviceVendorId (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultInt
РесурсНедоступен
Указывает, для какого шинного устройства NanoLib получает идентификатор поставщика. Предоставляет идентификаторы поставщика в виде целого числа. Сообщает, что данные не найдены.
Версия: документ 1.4.2 / NanoLib 1.3.0.
18
8 Справочник по классам/функциям
getDeviceId () Используйте эту функцию, чтобы получить идентификатор конкретного устройства из внутреннего списка NanoLib.
виртуальный ResultDeviceId nlc::NanoLibAccessor::getDeviceId (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultDeviceId
Указывает, для какого устройства шины NanoLib получает идентификатор устройства. Предоставляет идентификатор устройства.
getDeviceIds () Используйте эту функцию, чтобы получить идентификаторы всех устройств из внутреннего списка NanoLib.
виртуальные ResultDeviceIds nlc::NanoLibAccessor::getDeviceIds ()
Возвращает ResultDeviceIds
Предоставляет список идентификаторов устройств.
getDeviceUid () Используйте эту функцию для получения уникального идентификатора устройства (96 бит/12 байт) с помощью deviceHandle.
виртуальный ResultArrayByte nlc::NanoLibAccessor::getDeviceUid (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultArrayByte
РесурсНедоступен
Указывает, для какого шинного устройства NanoLib получает уникальный идентификатор. Предоставляет уникальные идентификаторы в виде массива байтов. Сообщает, что данные не найдены.
getDeviceSerialNumber () Используйте эту функцию, чтобы получить серийный номер устройства с помощью deviceHandle.
виртуальный ResultString NanolibAccessor::getDeviceSerialNumber (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultString
РесурсНедоступен
Указывает, для какого шинного устройства NanoLib получает серийный номер. Предоставляет серийные номера в виде строки. Сообщает, что данные не найдены.
getDeviceHardwareGroup () Используйте эту функцию, чтобы получить группу аппаратного обеспечения устройства шины по DeviceHandle.
виртуальный ResultDeviceId nlc::NanoLibAccessor::getDeviceHardwareGroup (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultInt
Указывает, для какого устройства шины NanoLib получает группу оборудования.
Предоставляет группы оборудования в виде целого числа.
getDeviceHardwareVersion () Используйте эту функцию, чтобы получить аппаратную версию устройства шины с помощью deviceHandle.
виртуальный ResultDeviceId nlc::NanoLibAccessor::getDeviceHardwareVersion (DeviceHandle const deviceHandle)
Версия: документ 1.4.2 / NanoLib 1.3.0.
19
8 Справочник по классам/функциям
Параметры
Возвраты
Ресурс ResultStringНедоступен
Указывает, для какого устройства шины NanoLib получает версию оборудования. Доставляет имена устройств в виде строки. Сообщает, что данные не найдены.
getDeviceFirmwareBuildId () Используйте эту функцию, чтобы получить идентификатор сборки прошивки устройства шины по параметру deviceHandle.
виртуальный ResultDeviceId nlc::NanoLibAccessor::getDeviceFirmwareBuildId (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultString
Указывает, для какого шинного устройства NanoLib получает идентификатор сборки прошивки.
Предоставляет имена устройств в виде строки.
getDeviceBootloaderVersion () Используйте эту функцию, чтобы получить версию загрузчика устройства шины с помощью deviceHandle.
виртуальный ResultInt nlc::NanoLibAccessor::getDeviceBootloaderVersion (DeviceHandle const deviceHandle)
Параметры
Возвраты
РезультатИнт РесурсНедоступен
Указывает, для какого шинного устройства NanoLib получает версию загрузчика. Предоставляет версии загрузчика в виде целого числа. Сообщает, что данные не найдены.
getDeviceBootloaderBuildId () Используйте эту функцию, чтобы получить идентификатор сборки загрузчика устройства шины с помощью deviceHandle.
виртуальный ResultDeviceId nlc::NanoLibAccessor:: (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultString
Указывает, для какого шинного устройства NanoLib получает идентификатор сборки загрузчика.
Предоставляет имена устройств в виде строки.
restartDevice () Используйте эту функцию для перезагрузки устройства с помощью deviceHandle.
виртуальный ResultVoid nlc::NanoLibAccessor::rebootDevice (const DeviceHandle deviceHandle)
Параметры deviceHandle Возвращает ResultVoid
Указывает полевую шину для перезагрузки. Подтверждает выполнение функции void.
getDeviceState () Используйте эту функцию для получения состояния, зависящего от протокола устройства.
виртуальный ResultString nlc::NanoLibAccessor::getDeviceState (DeviceHandle const deviceHandle)
Параметры
Указывает, для какого устройства шины NanoLib получает состояние.
Версия: документ 1.4.2 / NanoLib 1.3.0.
20
8 Справочник по классам/функциям
Возвращает результирующую строку
Предоставляет имена устройств в виде строки.
setDeviceState () Используйте эту функцию для установки состояния, зависящего от протокола устройства.
виртуальный ResultVoid nlc::NanoLibAccessor::setDeviceState (const DeviceHandle deviceHandle, const std::string & state)
Параметры состояния устройстваHandle
Возвращает РезультатVoid
Указывает, для какого шинного устройства NanoLib устанавливает состояние. Назначает состояние шины в виде строкового значения. Подтверждает выполнение функции void.
получитьСостояниеСоединения ()
Используйте эту функцию для получения последнего известного состояния подключения определенного устройства по deviceHandle (= Disconnected, Connected, ConnectedBootloader)
виртуальный ResultConnectionState nlc::NanoLibAccessor::getConnectionState (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultConnectionState
Указывает, для какого шинного устройства NanoLib получает состояние соединения.
Предоставляет состояние подключения (= Отключено, Подключено, ConnectedBootloader).
проверитьСостояниеСоединения ()
Только если последнее известное состояние не было «Отключено»: используйте эту функцию для проверки и, возможно, обновления состояния подключения определенного устройства с помощью deviceHandle и путем тестирования нескольких операций, специфичных для режима.
виртуальный ResultConnectionState nlc::NanoLibAccessor::checkConnectionState (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultConnectionState
Указывает, какое шинное устройство NanoLib проверяет состояние соединения.
Предоставляет состояние соединения (= не отключено).
AssignObjectDictionary () Используйте эту ручную функцию, чтобы самостоятельно назначить словарь объектов (OD) для deviceHandle.
виртуальный ResultObjectDictionary nlc::NanoLibAccessor::assignObjectDictionary (DeviceHandle const deviceHandle, ObjectDictionary const & objectDictionary)
Параметры deviceHandle objectDictionary
Возвращает ResultObjectDictionary
Указывает, какому шинному устройству NanoLib назначает OD. Показывает свойства словаря объектов.
автоAssignObjectDictionary ()
Используйте этот автоматизм, чтобы позволить NanoLib назначить словарь объектов (OD) для deviceHandle. Найдя и загрузив подходящий ОД, NanoLib автоматически назначает его устройству. Примечание. Если совместимый OD уже загружен в библиотеку объектов, NanoLib автоматически использует его без сканирования отправленного каталога.
виртуальный ResultObjectDictionary nlc::NanoLibAccessor::autoAssignObjectDictionary (DeviceHandle const deviceHandle, const std::string & dictionariesLocationPath)
Версия: документ 1.4.2 / NanoLib 1.3.0.
21
8 Справочник по классам/функциям
Параметры
Возвраты
словариLocationPath ResultObjectDictionary
Указывает, для какого устройства шины NanoLib будет автоматически сканировать подходящие OD. Указывает путь к каталогу OD. Показывает свойства словаря объектов.
getAssignedObjectDictionary()
Используйте эту функцию для получения словаря объектов, назначенного устройству с помощью deviceHandle.
виртуальный ResultObjectDictionary nlc::NanoLibAccessor::getAssignedObjectDictionary (DeviceHandle const устройство
Ручка)
Параметры deviceHandle Возвращает ResultObjectDictionary
Указывает, для какого шинного устройства NanoLib получает назначенный OD. Показывает свойства словаря объектов.
getObjectDictionaryLibrary () Эта функция возвращает ссылку на OdLibrary.
виртуальная OdLibrary& nlc::NanoLibAccessor::getObjectDictionaryLibrary ()
Возвращает OdLibrary&
Открывает всю библиотеку OD и ее объектные словари.
setLoggingLevel () Используйте эту функцию для установки необходимой детализации журнала (и file размер). Уровень по умолчанию — Информация.
виртуальная пустота nlc::NanoLibAccessor::setLoggingLevel (уровень LogLevel)
Уровень параметров
Возможна следующая детализация журнала:
0 = Трассировка 1 = Отладка 2 = Информация 3 = Предупреждение 4 = Ошибка 5 = Критическая 6 = Выкл.
Самый низкий уровень (самый большой журнал file); регистрирует все возможные детали, а также запуск/остановку программного обеспечения. Регистрирует отладочную информацию (= промежуточные результаты, отправленный или полученный контент и т. д.) Уровень по умолчанию; регистрирует информационные сообщения. Регистрирует возникшие проблемы, но не останавливающие работу текущего алгоритма. Регистрирует только серьезную проблему, которая остановила работу алгоритма. Самый высокий уровень (наименьший журнал file); отключает вход в систему; никакого дальнейшего журнала вообще. Никакого логирования вообще.
setLoggingCallback()
Используйте эту функцию для установки указателя обратного вызова журналирования и модуля журнала (= библиотеки) для этого обратного вызова (не для самого регистратора).
виртуальный void nlc::NanoLibAccessor::setLoggingCallback (обратный вызов NlcLoggingCallback*, const nlc::LogModule & logModule)
Параметры *callback logModule
Устанавливает указатель обратного вызова. Настраивает обратный вызов (не логгер!) на вашу библиотеку.
0 = NanolibCore 1 = NanolibCANopen 2 = NanolibModbus 3 = NanolibEtherCAT
Активирует обратный вызов только для ядра NanoLib. Активирует обратный вызов только CANopen. Активирует обратный вызов только Modbus. Активирует обратный вызов только EtherCAT.
Версия: документ 1.4.2 / NanoLib 1.3.0.
22
8 Справочник по классам/функциям
4 = NanolibRest 5 = NanolibUSB
Активирует обратный вызов только REST. Активирует обратный вызов только USB.
unsetLoggingCallback () Используйте эту функцию для отмены указателя обратного вызова журнала.
виртуальная пустота nlc::NanoLibAccessor::unsetLoggingCallback ()
readNumber () Используйте эту функцию для чтения числового значения из словаря объектов.
виртуальный ResultInt nlc::NanoLibAccessor::readNumber (const DeviceHandle deviceHandle, const OdIndex odIndex)
Параметры deviceHandle odIndex
Возвращает РезультатИнт
Указывает, с какого устройства шины читает NanoLib. Указывает (суб-)индекс для чтения. Предоставляет неинтерпретируемое числовое значение (могут быть знаковыми, беззнаковыми, битовыми значениями fix16.16).
readNumberArray () Используйте эту функцию для чтения числовых массивов из словаря объектов.
виртуальный ResultArrayInt nlc::NanoLibAccessor::readNumberArray (const DeviceHandle deviceHandle, const uint16_t index)
Параметры индекса deviceHandle
Возвращает РезультатАррайИнт
Указывает, с какого устройства шины читает NanoLib. Индекс объекта массива. Предоставляет целочисленный массив.
readBytes () Используйте эту функцию для чтения произвольных байтов (данных объекта домена) из словаря объектов.
виртуальный ResultArrayByte nlc::NanoLibAccessor::readBytes (const DeviceHandle deviceHandle, const OdIndex odIndex)
Параметры deviceHandle odIndex
Возвращает ResultArrayByte
Указывает, с какого устройства шины читает NanoLib. Указывает (суб-)индекс для чтения. Предоставляет массив байтов.
readString () Используйте эту функцию для чтения строк из каталога объектов.
виртуальный ResultString nlc::NanoLibAccessor::readString (const DeviceHandle deviceHandle, const OdIndex odIndex)
Параметры deviceHandle odIndex
Возвращает результирующую строку
Указывает, с какого устройства шины читает NanoLib. Указывает (суб-)индекс для чтения. Предоставляет имена устройств в виде строки.
Версия: документ 1.4.2 / NanoLib 1.3.0.
23
8 Справочник по классам/функциям
writeNumber () Используйте эту функцию для записи числовых значений в каталог объекта.
virtual ResultVoid nlc::NanoLibAccessor::writeNumber (const DeviceHandle deviceHandle, int64_t value, const OdIndex odIndex, unsigned int bitLength)
Значение параметра deviceHandle odIndex bitLength
Возвращает РезультатVoid
Указывает, на какое шинное устройство записывает NanoLib. Неинтерпретируемое значение (может быть знаковым или беззнаковым, исправление 16.16). Указывает (суб-)индекс для чтения. Длина в битах. Подтверждает выполнение функции void.
writeBytes () Используйте эту функцию для записи произвольных байтов (данных объекта домена) в каталог объекта.
виртуальный ResultVoid nlc::NanoLibAccessor::writeBytes (const DeviceHandle deviceHandle, const std::vector & данные, константа OdIndex odIndex)
Параметры dataHandle data odIndex
Возвращает РезультатVoid
Указывает, на какое шинное устройство записывает NanoLib. Байтовый вектор/массив. Указывает (суб-)индекс для чтения. Подтверждает выполнение функции void.
загрузитьFirmware ()
Используйте эту функцию для обновления прошивки контроллера.
виртуальный ResultVoid nlc::NanoLibAccessor::uploadFirmware (const DeviceHandle deviceHandle, const std::vector & fwData, NlcDataTransferCallback* обратный вызов)
Параметры deviceHandle fwData NlcDataTransferCallback
Возвращает РезультатVoid
Указывает, какое шинное устройство обновляет NanoLib. Массив, содержащий данные прошивки. Трассировщик хода данных. Подтверждает выполнение функции void.
Загрузить прошивку отFile ()
Используйте эту функцию для обновления прошивки контроллера путем загрузки ее file.
виртуальный ResultVoid nlc::NanoLibAccessor::uploadFirmwareFromFile (const DeviceHandle deviceHandle, const std::string & absoluteFileПуть, обратный вызов NlcDataTransferCallback*)
Параметры deviceHandle абсолютныеFileПуть
Возвращает РезультатVoid
Указывает, какое шинное устройство обновляет NanoLib. Путь к file Содержащие данные прошивки (std::string). Трассировщик хода выполнения данных. Подтверждает, что функция void была запущена.
Версия: документ 1.4.2 / NanoLib 1.3.0.
24
8 Справочник по классам/функциям
загрузитьЗагрузчик ()
Используйте эту функцию для обновления загрузчика контроллера.
виртуальный ResultVoid nlc::NanoLibAccessor::uploadBootloader (const DeviceHandle deviceHandle, const std::vector & btData, NlcDataTransferCallback* обратный вызов)
Параметры deviceHandle btData NlcDataTransferCallback
Возвращает РезультатVoid
Указывает, какое шинное устройство обновляет NanoLib. Массив, содержащий данные загрузчика. Трассировщик хода данных. Подтверждает выполнение функции void.
загрузитьBootloaderFromFile ()
Используйте эту функцию для обновления загрузчика контроллера путем загрузки его file.
виртуальный ResultVoid nlc::NanoLibAccessor::uploadBootloaderFromFile (const DeviceHandle deviceHandle, const std::string & bootloaderAbsoluteFileПуть, обратный вызов NlcDataTransferCallback*)
Параметры deviceHandle bootloaderAbsoluteFileПуть
Возвращает РезультатVoid
Указывает, какое шинное устройство обновляет NanoLib. Путь к file Содержащие данные загрузчика (std::string). Трассировщик хода выполнения данных. Подтверждает, что функция void была запущена.
загрузитьЗагрузчикПрошивка ()
Используйте эту функцию для обновления загрузчика и прошивки контроллера.
виртуальный ResultVoid nlc::NanoLibAccessor::uploadBootloaderFirmware (const DeviceHandle deviceHandle, const std::vector & btData, константа std::vector & fwData, NlcDataTransferCallback* обратный вызов)
Параметры deviceHandle btData fwData NlcDataTransferCallback
Возвращает РезультатVoid
Указывает, какое шинное устройство обновляет NanoLib. Массив, содержащий данные загрузчика. Массив, содержащий данные прошивки. Трассировщик хода данных. Подтверждает выполнение функции void.
Загрузить загрузчик, прошивку отFile ()
Используйте эту функцию для обновления загрузчика и прошивки контроллера, загрузив files.
виртуальный ResultVoid nlc::NanoLibAccessor::uploadBootloaderFirmwareFromFile (const DeviceHandle deviceHandle, const std::string & bootloaderAbsoluteFileПуть, константа std::string и абсолютныйFileПуть, обратный вызов NlcDataTransferCallback*)
Параметры deviceHandle bootloaderAbsoluteFileАбсолютный путьFileПуть
Возвращает РезультатVoid
Указывает, какое шинное устройство обновляет NanoLib. Путь к file содержащий данные загрузчика (std::string). Путь к file содержащий данные прошивки (uint8_t). Трассировщик хода данных. Подтверждает выполнение функции void.
Версия: документ 1.4.2 / NanoLib 1.3.0.
25
8 Справочник по классам/функциям
загрузитьNanoJ ()
Используйте эту публичную функцию для загрузки программы NanoJ на ваш контроллер.
виртуальный ResultVoid nlc::NanoLibAccessor::uploadNanoJ (DeviceHandle const deviceHandle, std::vector const & vmmData, обратный вызов NlcDataTransferCallback*)
Параметры deviceHandle vmmData NlcDataTransferCallback
Возвращает РезультатVoid
Указывает, на какое шинное устройство NanoLib загружает данные. Массив, содержащий данные NanoJ. Трассировщик хода данных. Подтверждает выполнение функции void.
загрузитьNanoJFromFile ()
Используйте эту публичную функцию для обновления программы NanoJ на вашем контроллере путем загрузки file.
виртуальный ResultVoid nlc::NanoLibAccessor::uploadNanoJFromFile (const DeviceHandle deviceHandle, const std::string & absoluteFileПуть, обратный вызов NlcDataTransferCallback*)
Параметры deviceHandle абсолютныеFileПуть
Возвращает РезультатVoid
Указывает, на какое шинное устройство NanoLib загружает данные. Путь к file Содержащие данные NanoJ (std::string). Трассировщик хода выполнения данных. Подтверждает, что функция void была запущена.
DisconnectDevice () Используйте эту функцию для отключения устройства с помощью deviceHandle.
виртуальный ResultVoid nlc::NanoLibAccessor::disconnectDevice (DeviceHandle const deviceHandle)
Параметры deviceHandle Возвращает ResultVoid
Указывает, от какого шинного устройства NanoLib отключается. Подтверждает выполнение функции void.
RemoveDevice () Используйте эту функцию, чтобы удалить ваше устройство из внутреннего списка устройств NanoLib.
виртуальный ResultVoid nlc::NanoLibAccessor::removeDevice (const DeviceHandle deviceHandle)
Параметры deviceHandle Возвращает ResultVoid
Указывает, какое шинное устройство NanoLib исключает из списка. Подтверждает выполнение функции void.
closeBusHardware () Используйте эту функцию для отключения от оборудования полевой шины.
виртуальный ResultVoid nlc::NanoLibAccessor::closeBusHardware (BusHardwareId const & busHwId)
Параметры busHwId Возвращает ResultVoid
Указывает полевую шину, от которой необходимо отключиться. Подтверждает выполнение функции void.
Версия: документ 1.4.2 / NanoLib 1.3.0.
26
8 Справочник по классам/функциям
8.2 Идентификатор BusHardwareId
Используйте этот класс, чтобы однозначно идентифицировать оборудование шины или отличить различное оборудование шины друг от друга. Этот класс (без функций установки, которые должны быть неизменяемыми с момента создания) также содержит информацию о:
Аппаратное обеспечение (= имя адаптера, сетевой адаптер и т. д.) Используемый протокол (= Modbus TCP, CANopen и т. д.) Спецификатор аппаратного обеспечения шины (= имя последовательного порта, понятное имя MAC)
адрес и т. д.)
BusHardwareId () [1/3] Конструктор, создающий новый объект идентификатора оборудования шины.
nlc::BusHardwareId::BusHardwareId (std::string const & busHardware_, std::string const & protocol_, std::string const & hardwareSpecifier_, std::string const & name_)
Параметры busHardware_ протокол_ hardwareSpecifier_ extraHardwareSpecifier_ name_
Тип оборудования (= ZK-USB-CAN-1 и т. д.). Протокол связи по шине (= CANopen и т. д.). Спецификатор оборудования (= COM3 и т.д.). Дополнительный спецификатор оборудования (например, информация о местоположении USB). Понятное имя (= Имя адаптера (Порт) и т. д.).
BusHardwareId () [2/3] Конструктор, который создает новый объект идентификатора оборудования шины с возможностью дополнительного спецификатора оборудования.
nlc::BusHardwareId::BusHardwareId (std::string const & busHardware_, std::string const & protocol_, std::string const & hardwareSpecifier_, std::string const & extraHardwareSpecifier_, std::string const & name_)
Параметры busHardware_ протокол_ hardwareSpecifier_ extraHardwareSpecifier_ name_
Тип оборудования (= ZK-USB-CAN-1 и т. д.). Протокол связи по шине (= CANopen и т. д.). Спецификатор оборудования (= COM3 и т.д.). Дополнительный спецификатор оборудования (например, информация о местоположении USB). Понятное имя (= Имя адаптера (Порт) и т. д.).
BusHardwareId () [3/3] Конструктор, копирующий существующий busHardwareId.
nlc::BusHardwareId::BusHardwareId (BusHardwareId const &)
nlc::BusHardwareId::BusHardwareId (BusHardwareId const &)
Параметры busHardwareId
Называет идентификатор оборудования шины, из которого выполняется копирование.
Equals () Сравнивает новый идентификатор оборудования шины с существующими.
bool nlc::BusHardwareId::equals (BusHardwareId const и другие) const
Параметры другие Возвращает true
Другой объект того же класса. Если оба равны по всем значениям.
Версия: документ 1.4.2 / NanoLib 1.3.0.
27
8 Справочник по классам/функциям
ЛОЖЬ
Если значения различаются.
getBusHardware () Считывает строку оборудования шины.
std::string nlc::BusHardwareId::getBusHardware() const
Возвращает строку
getHardwareSpecifier () Считывает строку спецификатора оборудования шины (= имя сети и т. д.).
std::string nlc::BusHardwareId::getHardwareSpecifier () const
Возвращает строку
getExtraHardwareSpecifier () Считывает строку спецификатора дополнительного оборудования шины (= MAC-адрес и т. д.).
std::string nlc::BusHardwareId::getExtraHardwareSpecifier () const
Возвращает строку
getName () Считывает понятное имя оборудования шины.
std::string nlc::BusHardwareId::getName () константа
Возвращает строку
getProtocol () Считывает строку протокола шины.
std::string nlc::BusHardwareId::getProtocol () константа
Возвращает строку
toString () Возвращает идентификатор оборудования шины в виде строки.
std::string nlc::BusHardwareId::toString () константа
Возвращает строку
8.3 Параметры аппаратного обеспечения шины
Найдите в этом классе в списке строк «ключ-значение» все параметры, необходимые для открытия оборудования шины.
Версия: документ 1.4.2 / NanoLib 1.3.0.
28
8 Справочник по классам/функциям
BusHardwareOptions () [1/2] Создает новый объект параметра оборудования шины.
nlc::BusHardwareOptions::BusHardwareOptions () Используйте функцию addOption () для добавления пар ключ-значение.
BusHardwareOptions () [2/2] Создает новый объект опций оборудования шины с уже существующей картой значений ключа.
nlc::BusHardwareOptions::BusHardwareOptions (std::map константа и опции)
Опции параметров
Карта с вариантами работы оборудования шины.
addOption () Создает дополнительные ключи и значения.
void nlc::BusHardwareOptions::addOption (std::string const & key, std::string const & value)
Значение ключа параметра
Exampфайл: BAUD_RATE_OPTIONS_NAME, см. bus_hw_options_ defaults
Exampфайл: BAUD_RATE_1000K, см. bus_hw_options_defaults
Equals () Сравнивает BusHardwareOptions с существующими.
bool nlc::BusHardwareOptions::equals (BusHardwareOptions const и другие) const
Параметры другие Возвращает true
ЛОЖЬ
Еще один объект того же класса. Если другой объект имеет все те же параметры. Если другой объект имеет другие ключи или значения.
getOptions () Считывает все добавленные пары ключ-значение.
стд::карта nlc::BusHardwareOptions::getOptions () константа
Возвращает карту строк
toString () Возвращает все ключи/значения в виде строки.
std::string nlc::BusHardwareId::toString () константа
Возвращает строку
8.4 Параметры BusHwOptions по умолчанию
Этот класс параметров конфигурации по умолчанию имеет следующие общедоступные атрибуты:
Версия: документ 1.4.2 / NanoLib 1.3.0.
29
8 Справочник по классам/функциям
const CanBus const Serial const RESTfulBus const EtherCATBus
canBus = CanBus () Serial = Serial () restfulBus = RESTfulBus() ethercatBus = EtherCATBus()
8.5 Скорость передачи данных в бодах
Структура, содержащая скорость передачи данных по шине CAN в следующих общедоступных атрибутах:
const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string const std::string
BAUD_RATE_1000K = «1000k» BAUD_RATE_800K = «800k» BAUD_RATE_500K = «500k» BAUD_RATE_250K = «250k» BAUD_RATE_125K = «125k» BAUD_RATE_100K = «100k» BAUD_RATE_50K = «50 20k» BAUD_RATE_20K = «10k» BAUD_RATE_10K = «5k» BAUD_RATE_5K = «XNUMXk»
8.6 Канбус
Класс параметров конфигурации по умолчанию со следующими общедоступными атрибутами:
константа std::string константа CanBaudRate константа Ixxat
BAUD_RATE_OPTIONS_NAME = «скорость передачи данных адаптера CAN» baudRate = CanBaudRate () ixxat = Ixxat ()
8.7 Канопеннмтсервис
Для службы NMT эта структура содержит состояния CANopen NMT в виде строковых значений в следующих общедоступных атрибутах:
константа std::string константа std::string константа std::string константа std::string константа std::string
START = «ПУСК» STOP = «СТОП» PRE_OPERATIONAL = «PRE_OPERATIONAL» RESET = «RESET» RESET_COMMUNICATION = «RESET_COMMUNICATION»
8.8 Канопеннмтстате
Эта структура содержит состояния CANopen NMT в виде строковых значений в следующих общедоступных атрибутах:
константа std::string константа std::string константа std::string константа std::string константа std::string
ОСТАНОВЛЕНО = «ОСТАНОВЛЕНО» PRE_OPERATIONAL = «PRE_OPERATIONAL» OPERATIONAL = «РАБОТО» ИНИЦИАЛИЗАЦИЯ = «ИНИЦИАЛИЗАЦИЯ» НЕИЗВЕСТНО = «НЕИЗВЕСТНО»
8.9 Структура EtherCATBus
Эта структура содержит параметры конфигурации связи EtherCAT в следующих общедоступных атрибутах:
Версия: документ 1.4.2 / NanoLib 1.3.0.
30
8 Справочник по классам/функциям
const std::string NETWORK_FIRMWARE_STATE_OP- Состояние сети рассматривается как режим прошивки. Приемлемо
TION_NAME = «Состояние сетевой прошивки»
значения (по умолчанию = 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 — тайм-аут в миллисекундах для получения эксклюзивной блокировки
TION_NAME = «Тайм-аут общей блокировки»
сети (по умолчанию = 500 мс).
const без знака int DEFAULT_EXCLUSIVE_LOCK_TIMEOUT = «500»
const std::string SHARED_LOCK_TIMEOUT_OPTION_ Время ожидания в миллисекундах для получения разделяемой блокировки
ИМЯ = «Тайм-аут общей блокировки»
сети (по умолчанию = 250 мс).
const без знака int DEFAULT_SHARED_LOCK_TIMEOUT = «250»
const std::string READ_TIMEOUT_OPTION_NAME = Тайм-аут в миллисекундах для операции чтения (по умолчанию
«Время ожидания чтения истекло»
= 700 мс).
const без знака int DEFAULT_READ_TIMEOUT = «700»
const std::string WRITE_TIMEOUT_OPTION_NAME = Тайм-аут в миллисекундах для операции записи (по умолчанию
«Тайм-аут записи»
= 200 мс).
const без знака int DEFAULT_WRITE_TIMEOUT = «200»
const std::string READ_WRITE_ATTEMPTS_OPTION_ Максимальное количество попыток чтения или записи (ненулевые значения
ИМЯ = «Попытки чтения/записи»
только; по умолчанию = 5).
const без знака int DEFAULT_READ_WRITE_ATTEMPTS = «5»
const std::string CHANGE_NETWORK_STATE_ATTEMPTS_OPTION_NAME = «Попытки изменения состояния сети»
Максимальное количество попыток изменить состояние сети (только ненулевые значения; по умолчанию = 10).
const без знака int DEFAULT_CHANGE_NETWORK_ STATE_ATTEMPTS = «10»
const std::string PDO_IO_ENABLED_OPTION_NAME Включает или отключает обработку PDO для цифровых входов/выходов.
= «PDO IO включен»
выходные данные («Истина» или «Ложь»; по умолчанию = «Истина»).
константа std::string DEFAULT_PDO_IO_ENABLED = «Истина»
8.10 Структура EtherCATState
Эта структура содержит состояния ведомого устройства/сети EtherCAT в виде строковых значений в следующих общедоступных атрибутах. Примечание. Состояние по умолчанию при включении питания — PRE_OPERATIONAL; NanoLib не может обеспечить надежное «РАБОЧЕЕ» состояние в операционной системе, не работающей в реальном времени:
константа std::string константа std::string константа std::string константа std::string константа std::string константа std::string константа std::string
NONE = «НЕТ» INIT = «INIT» PRE_OPERATIONAL = «PRE_OPERATIONAL» BOOT = «BOOT» SAFE_OPERATIONAL = «SAFE_OPERATIONAL» OPERATIONAL = «РАБОТО»
Версия: документ 1.4.2 / NanoLib 1.3.0.
31
8 Справочник по классам/функциям
8.11 Иксат
Эта структура содержит всю информацию для Ixxat usb-to-can в следующих публичных атрибутах:
константа std::string
ADAPTER_BUS_NUMBER_OPTIONS_NAME = «номер шины адаптера ixxat»
const IxxatAdapterBusNumber адаптерBusNumber = IxxatAdapterBusNumber ()
8.12 Номер шины IxxatAdapterBus
Эта структура содержит номер шины для Ixxat usb-to-can в следующих публичных атрибутах:
константа std::string константа std::string константа std::string константа std::string
BUS_NUMBER_0_DEFAULT = «0» BUS_NUMBER_1 = «1» BUS_NUMBER_2 = «2» BUS_NUMBER_3 = «3»
Пик 8.13
Эта структура содержит всю информацию для Peak usb-to-can в следующих публичных атрибутах:
константа std::string
ADAPTER_BUS_NUMBER_OPTIONS_NAME = «пиковый номер шины адаптера»
const PeakAdapterBusNumber адаптерBusNumber = PeakAdapterBusNumber ()
8.14 Пиковый номер адаптера шины
Эта структура содержит номер шины для Peak usb-to-can в следующих публичных атрибутах:
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_USBBUS4) BUS_NUMBER_5 = std::to_string (PCAN_USBBUS5) BUS_NUMBER_6 = std::to_string (PCAN_USBBUS6) BUS_NUMBER_7 = std::to_string (PCAN_USBBUS7) BUS_NUMBER_8 = std::to_string (PCAN_USBBUS8) BUS_NUMBER_9 = std::to_string (PCAN_USBBUS9) BUS_NUMBER_10 = std::to_string (PCAN_USBBUS10) BUS_NUMBER_11 = std::to_string (PCAN_USBBUS11) BUS_NUMBER_12 = std::to_string (PCAN_USBBUS12) BUS_NUMBER_13 = std::to_string (PCAN_USBBUS13) BUS_NUMBER_14 = std::to_string (PCAN_USBBUS14) BUS_NUMBER_15 = std::to_string (PCAN_USBBUS15) BUS_NUMBER_16 = std::to_string (PCAN_USBBUS16)
8.15 Дескриптор устройства
Этот класс представляет собой дескриптор для управления устройством на шине и имеет следующие открытые функции-члены.
DeviceHandle () DeviceHandle (дескриптор uint32_t)
Версия: документ 1.4.2 / NanoLib 1.3.0.
32
8 Справочник по классам/функциям
Equals () Сравнивает себя с заданным дескриптором устройства.
bool равно (DeviceHandle const other) const (uint32_t handle)
toString () Возвращает строковое представление дескриптора устройства.
std::string toString() константа
get() Возвращает дескриптор устройства.
uint32_t получить () константа
8.16 Идентификатор устройства
Используйте этот класс (не неизменяемый с момента создания) для идентификации и различения устройств на шине:
Идентификатор аппаратного адаптера
Идентификатор устройства
Описание
Значение значений идентификатора/описания устройства зависит от шины. Для бывшегоampНапример, CAN-шина может использовать целочисленный идентификатор.
DeviceId () [1/3] Создает новый объект идентификатора устройства.
nlc::DeviceId::DeviceId (BusHardwareId const & busHardwareId_, беззнаковое целое deviceId_, std::string const & description_)
Параметры busHardwareId_deviceId_description_
Идентификатор автобуса. индекс; в зависимости от шины (= идентификатор узла CANopen и т. д.). Описание (может быть пустым); при условии автобуса.
DeviceId () [2/3] Создает новый объект идентификатора устройства с расширенными параметрами идентификатора.
nlc::DeviceId::DeviceId (BusHardwareId const & busHardwareId, беззнаковое целое deviceId_, std::string const & description_ std::vector константа и extraId_, std::string константа и extraStringId_)
Параметры busHardwareId_deviceId_description_extraId_extraStringId_
Идентификатор шины. Индекс; зависит от шины (= идентификатор узла CANopen и т. д.). Описание (может быть пустым); зависит от шины. Дополнительный идентификатор (может быть пустым); значение зависит от шины. Дополнительный строковый идентификатор (может быть пустым); значение зависит от шины.
DeviceId () [3/3] Создает копию объекта идентификатора устройства.
nlc::DeviceId::DeviceId (DeviceId константа &)
Версия: документ 1.4.2 / NanoLib 1.3.0.
33
8 Справочник по классам/функциям
Параметры устройстваId_
Идентификатор устройства, с которого нужно скопировать.
Equals () Сравнивает новые объекты с существующими.
bool nlc::DeviceId::equals (DeviceId const и другие) const
Возвращает логическое значение
getBusHardwareId () Считывает идентификатор оборудования шины.
BusHardwareId nlc::DeviceId::getBusHardwareId () const
Возвращает BusHardwareId
getDescription () Считывает описание устройства (возможно, неиспользуемое).
std::string nlc::DeviceId::getDescription () константа
Возвращает строку
getDeviceId () Считывает идентификатор устройства (возможно, неиспользуемый).
беззнаковое целое число nlc::DeviceId::getDeviceId () константа
Возвращает беззнаковое целое число
toString () Возвращает объект в виде строки.
std::string nlc::DeviceId::toString () константа
Возвращает строку
getExtraId () Считывает дополнительный идентификатор устройства (может не использоваться).
константа std::vector &getExtraId() константа
Возвращает вектор
Вектор дополнительных идентификаторов (может быть пустым); смысл зависит от автобуса.
getExtraStringId () Считывает дополнительную строку идентификатора устройства (может не использоваться).
std::string getExtraStringId () const
Версия: документ 1.4.2 / NanoLib 1.3.0.
34
8 Справочник по классам/функциям
Возвращает строку
Идентификатор дополнительной строки (может быть пустым); смысл зависит от автобуса.
8.17 Конвертер LogLevel
Этот класс возвращает уровень журнала в виде строки. static std::string toString (nlc::LogLevel logLevel)
8.18 LogModuleConverter
Этот класс возвращает специфичный для библиотеки журнал modulesetLoggingLevel() в виде строки.
статический std::string
toString (nlc::LogModule logModule)
статический std::string toString (nlc::LogModule logModule)
8.19 Словарь объектов
Этот класс представляет словарь объектов контроллера и имеет следующие общедоступные функции-члены: getDeviceHandle ()
виртуальный ResultDeviceHandle getDeviceHandle () const Возвращает ResultDeviceHandle
getObject() virtual ResultObjectSubEntry getObject(OdIndex const odIndex) Возвращает ResultObjectSubEntry
getObjectEntry () виртуальный ResultObjectEntry getObjectEntry (uint16_t индекс)
Возвращает РезультатОбжектИнтри
Информирует о свойствах объекта.
получитьXmlFileИмя () виртуальный ResultString getXmlFileИмя () константа
Возвращает результирующую строку
Возвращает XML file имя в виде строки.
readNumber() виртуальный ResultInt readNumber(OdIndex const odIndex) Возвращает ResultInt
readNumberArray() виртуальный ResultArrayInt readNumberArray (uint16_t константный индекс)
Версия: документ 1.4.2 / NanoLib 1.3.0.
35
8 Справочник по классам/функциям
Возвращает ResultArrayInt readString ()
virtual ResultString readString (OdIndex const odIndex) Возвращает ResultString readBytes () virtual ResultArrayByte readBytes (OdIndex const odIndex) Возвращает ResultArrayByte writeNumber () virtual ResultVoid writeNumber (OdIndex const odIndex, const int64_t value) Возвращает ResultVoid writeBytes () virtual ResultVoid writeBytes (OdIndex const OdIndex, std::vector
const & data) Возвращает ResultVoid Связанные ссылки OdIndex
8.20 Ввод объекта
Этот класс представляет собой запись объекта словаря объектов, имеет следующие статические защищенные атрибуты и открытые функции-члены:
статический nlc::ObjectSubEntry недействительныйОбъект
getName () Считывает имя объекта в виде строки.
виртуальный std::string getName () константа
getPrivate () Проверяет, является ли объект частным.
виртуальный bool getPrivate() константа
getIndex () Считывает адрес индекса объекта.
виртуальный uint16_t getIndex() константа
Версия: документ 1.4.2 / NanoLib 1.3.0.
36
8 Справочник по классам/функциям
getDataType () Считывает тип данных объекта.
виртуальный nlc::ObjectEntryDataType getDataType () константа
getObjectCode() Считывает объектный код:
Null Deftype Defstruct Var Array Record
0x00 0x05 0x06 0x07 0x08 0x09
виртуальный nlc::ObjectCode getObjectCode () константа
getObjectSaveable () Проверяет, можно ли сохранить объект, и его категорию (более подробную информацию см. в руководстве по продукту): APPLICATION, COMMUNICATION, DRIVE, MISC_CONFIG, MODBUS_RTU, NO, TUNING, CUSTOMER, ETHERNET, CANOPEN, VERIFY1020, UNKNOWN_SAVEABLE_TYPE.
виртуальный nlc::ObjectSaveable getObjectSaveable () const
getMaxSubIndex () Считывает количество субиндексов, поддерживаемых этим объектом.
виртуальный uint8_t getMaxSubIndex() константа
getSubEntry () виртуальный nlc::ObjectSubEntry & getSubEntry (uint8_t subIndex)
См. также ObjectSubEntry.
8.21 ОбъектСубэнтри
Этот класс представляет подзапись объекта (субиндекс) словаря объектов и имеет следующие общедоступные функции-члены:
getName () Считывает имя объекта в виде строки.
виртуальный std::string getName () константа
getSubIndex () Считывает адрес субиндекса.
виртуальный uint8_t getSubIndex() константа
Версия: документ 1.4.2 / NanoLib 1.3.0.
37
8 Справочник по классам/функциям
getDataType () Считывает тип данных объекта.
виртуальный nlc::ObjectEntryDataType getDataType () константа
getSdoAccess () Проверяет, доступен ли субиндекс через SDO:
Только для чтения
1
WriteOnly
2
ЧитатьПисать
3
Нет доступа
0
виртуальный nlc::ObjectSdoAccessAttribute getSdoAccess () const
getPdoAccess () Проверяет, доступен ли субиндекс/отображается через PDO:
Tx
1
Rx
2
TxRx
3
Нет
0
виртуальный nlc::ObjectPdoAccessAttribute getPdoAccess () const
getBitLength () Проверяет длину субиндекса.
виртуальный uint32_t getBitLength() константа
getDefaultValueAsNumeric () Считывает значение субиндекса по умолчанию для числовых типов данных.
виртуальный ResultInt getDefaultValueAsNumeric (std::string const & key) const
getDefaultValueAsString () Считывает значение субиндекса по умолчанию для строковых типов данных.
виртуальный ResultString getDefaultValueAsString (std::string const & key) const
getDefaultValues () Считывает значения субиндекса по умолчанию.
виртуальный std::map getDefaultValues() константа
Версия: документ 1.4.2 / NanoLib 1.3.0.
38
8 Справочник по классам/функциям
readNumber () Считывает числовое фактическое значение субиндекса.
виртуальный ResultInt readNumber() константа
readString () Считывает фактическое значение строки субиндекса.
виртуальный ResultString readString () константа
readBytes () Считывает фактическое значение субиндекса в байтах.
виртуальный ResultArrayByte readBytes () const
writeNumber () Записывает числовое значение в субиндекс.
виртуальный ResultVoid writeNumber (константное значение int64_t) константа
writeBytes () Записывает значение в субиндекс в байтах.
виртуальный ResultVoid writeBytes (std::vector константа и данные) константа
8.22 Одининдекс
Используйте этот класс (неизменяемый с момента создания) для переноса и поиска индексов/подиндексов каталога объектов. ОД устройства имеет до 65535 (0xFFFF) строк и 255 (0xFF) столбцов; с промежутками между прерывистыми рядами. Более подробную информацию см. в стандарте CANopen и в руководстве к вашему продукту.
OdIndex () Создает новый объект OdIndex.
nlc::OdIndex::OdIndex (uint16_t индекс, uint8_t подиндекс)
Субиндекс индекса параметров
От 0 до 65535 (0xFFFF) вкл. От 0 до 255 (0xFF) вкл.
getIndex () Считывает индекс (от 0x0000 до 0xFFFF).
uint16_t nlc::OdIndex::getIndex () константа
Возвращает uint16_t
getSubindex () Считывает субиндекс (от 0x00 до 0xFF)
uint8_t nlc::OdIndex::getSubIndex () константа
Версия: документ 1.4.2 / NanoLib 1.3.0.
39
8 Справочник по классам/функциям
Возвращает uint8_t
toString () Возвращает индекс и субиндекс в виде строки. Строка по умолчанию 0xIIII:0xSS выглядит следующим образом:
I = индекс от 0x0000 до 0xFFFF
S = субиндекс от 0x00 до 0xFF
std::string nlc::OdIndex::toString () const
Возвращает 0xIIII:0xSS
Строковое представление по умолчанию
8.23 ОдБиблиотека
Используйте этот программный интерфейс для создания экземпляров класса ObjectDictionary из XML. С помощью AssignObjectDictionary вы можете затем привязать каждый экземпляр к конкретному устройству благодаря уникально созданному идентификатору. Созданные таким образом экземпляры ObjectDictionary сохраняются в объекте OdLibrary, к которому можно получить доступ по индексу. Класс ODLibrary загружает элементы ObjectDictionary из file или массив, хранит их и имеет следующие открытые функции-члены:
getObjectDictionaryCount() виртуальный uint32_t getObjectDictionaryCount() константа
getObjectDictionary () виртуальный ResultObjectDictionary getObjectDictionary (uint32_t odIndex)
Возвращает ResultObjectDictionary
addObjectDictionaryFromFile ()
виртуальный ResultObjectDictionary addObjectDictionaryFromFile (std::string const & absoluteXmlFileПуть)
Возвращает ResultObjectDictionary
addObjectDictionary()
виртуальный ResultObjectDictionary addObjectDictionary (std::vector const & odXmlData, const std::string &xmlFileПуть = std::string ())
Возвращает ResultObjectDictionary
8.24 Помощник OdTypes
В дополнение к следующим открытым функциям-членам этот класс содержит пользовательские типы данных. Примечание: Чтобы проверить пользовательские типы данных, найдите класс перечисления ObjectEntryDataType в od_types.hpp.
uintToObjectCode () Преобразует целые числа без знака в объектный код:
Нулевой тип определения
0x00 0x05
Версия: документ 1.4.2 / NanoLib 1.3.0.
40
8 Справочник по классам/функциям
Defstruct Var Array Record
0x06 0x07 0x08 0x09
статический ObjectCode uintToObjectCode (беззнаковый int objectCode)
isNumericDataType () Сообщает, является ли тип данных числовым или нет.
статический логический isNumericDataType (ObjectEntryDataType dataType)
isDefstructIndex () Сообщает, является ли объект индексом структуры определения или нет.
статический bool isDefstructIndex (uint16_t typeNum)
isDeftypeIndex () Сообщает, является ли объект индексом типа определения или нет.
статический bool isDeftypeIndex (uint16_t typeNum)
isComplexDataType () Сообщает, является ли тип данных сложным или нет.
статический логический isComplexDataType (ObjectEntryDataType dataType)
uintToObjectEntryDataType () Преобразует целые числа без знака в тип данных OD.
sstatic ObjectEntryDataType uintToObjectEntryDataType (uint16_t objectDataType)
objectEntryDataTypeToString () Преобразует тип данных OD в строку.
статический std::string objectEntryDataTypeToString (ObjectEntryDataType odDataType)
stringToObjectEntryDatatype () Преобразует строку в тип данных OD, если это возможно. В противном случае возвращается UNKNOWN_DATATYPE.
статический ObjectEntryDataType stringToObjectEntryDatatype (std::string dataTypeString)
Версия: документ 1.4.2 / NanoLib 1.3.0.
41
8 Справочник по классам/функциям
objectEntryDataTypeBitLength () Информирует о разрядности типа данных записи объекта.
static uint32_t objectEntryDataTypeBitLength (ObjectEntryDataType const & dataType)
8.25 Структура RESTfulBus
Эта структура содержит параметры конфигурации связи для интерфейса RESTful (через Ethernet). Он содержит следующие общедоступные атрибуты:
const std::string const unsigned long const std::string const unsigned long const std::string const unsigned long
CONNECT_TIMEOUT_OPTION_NAME = «Тайм-аут подключения RESTful» DEFAULT_CONNECT_TIMEOUT = 200 REQUEST_TIMEOUT_OPTION_NAME = «Тайм-аут запроса RESTful» DEFAULT_REQUEST_TIMEOUT = 200 RESPONSE_TIMEOUT_OPTION_NAME = «Тайм-аут ответа RESTful» DEFAULT_RESPONSE_TIMEOUT = 750
8.26 ПрофинетДКП
В Linux вызывающему приложению необходимы возможности CAP_NET_ADMIN и CAP_NET_RAW. Чтобы включить: sudo setcap 'cap_net_admin,cap_net_raw+eip' ./executable. В Windows интерфейс ProfinetDCP использует WinPcap (проверено с версией 4.1.3) или Npcap (протестировано с версиями 1.60 и 1.30). Таким образом, он ищет динамически загружаемую библиотеку wpcap.dll в следующем порядке (Примечание: в настоящее время Win10Pcap не поддерживается):
1. Каталог Nanolib.dll 2. Системный каталог Windows SystemRoot%System32 3. Каталог установки Npcap SystemRoot%System32Npcap 4. Путь к среде
Этот класс представляет интерфейс Profinet DCP и имеет следующие общедоступные функции-члены:
getScanTimeout() Информирует о тайм-ауте сканирования устройства (по умолчанию = 2000 мс).
виртуальный uint32_t nlc::ProfinetDCP::getScanTimeout () константа
setScanTimeout () Устанавливает тайм-аут сканирования устройства (по умолчанию = 2000 мс).
виртуальная пустота nlc::setScanTimeout (uint32_t timeoutMsec)
getResponseTimeout () Информирует о тайм-ауте ответа устройства для операций настройки, сброса и мигания (по умолчанию = 1000 мс).
виртуальный uint32_t nlc::ProfinetDCP::getResponseTimeout () константа
setResponseTimeout () Информирует о тайм-ауте ответа устройства для операций настройки, сброса и мигания (по умолчанию = 1000 мс).
виртуальная пустота nlc::ProfinetDCP::setResponseTimeout (uint32_t timeoutMsec)
Версия: документ 1.4.2 / NanoLib 1.3.0.
42
8 Справочник по классам/функциям
isServiceAvailable ()
Используйте эту функцию для проверки доступности службы Profinet DCP.
Допустимость/доступность сетевого адаптера Windows: доступность WinPcap/Npcap Linux: возможности CAP_NET_ADMIN/CAP_NET_RAW
виртуальный ResultVoid nlc::ProfinetDCP::isServiceAvailable (const BusHardwareId и busHardwareId)
Параметры BusHardwareId Возвращает true
ЛОЖЬ
Идентификатор оборудования службы Profinet DCP, которую необходимо проверить. Сервис доступен. Сервис недоступен.
scanProfinetDevices () Используйте эту функцию для сканирования аппаратной шины на наличие устройств Profinet.
виртуальный ResultProfinetDevices сканированиеProfinetDevices (const BusHardwareId & busHardwareId)
Параметры BusHardwareId Возвращает ResultProfinetDevices
Указывает каждую полевой шину, которую необходимо открыть. Аппаратное обеспечение открыто.
setupProfinetDevice () Устанавливает следующие настройки устройства:
Имя устройства
IP-адрес
Маска сети
Шлюз по умолчанию
виртуальный ResultVoid nlc::setupProfinetDevice (const BusHardwareId & busHardwareId, const ProfinetDevice struct & profinetDevice, bool savePermanent)
resetProfinetDevice () Останавливает устройство и сбрасывает его к заводским настройкам.
виртуальный ResultVoid nlc::resetProfinetDevice (const BusHardwareId & busHardwareId, const ProfinetDevice & profinetDevice)
блинкпрофинетдевице () дает команду устройству Profinet начать мигать светодиодом Profinet.
виртуальный ResultVoid nlc::blinkProfinetDevice (const BusHardwareId & busHardwareId, const ProfinetDevice &profinetDevice)
validateProfinetDeviceIp () Используйте эту функцию для проверки IP-адреса устройства.
virtual ResultVoid validateProfinetDeviceIp (const BusHardwareId &busHardwareId, const ProfinetDevice & profinetDevice)
Параметры BusHardwareId ProfinetDevice
Указывает идентификатор оборудования для проверки. Указывает устройство Profinet для проверки.
Версия: документ 1.4.2 / NanoLib 1.3.0.
43
8 Справочник по классам/функциям
Возвращает РезультатVoid
8.27 Структура ProfinetDevice
Данные устройства Profinet имеют следующие общедоступные атрибуты:
std::string std::string std::array< uint8_t, 6 > uint32_t uint32_t uint32_t
Имя устройства Поставщик устройства Mac-адрес IP-адрес Маска сети DefaultGateway
MAC-адрес предоставляется в виде массива в формате macAddress = {xx, xx, xx, xx, xx, xx}; тогда как IP-адрес, сетевая маска и шлюз интерпретируются как шестнадцатеричные числа с прямым порядком байтов, например:
IP-адрес: 192.168.0.2 Маска сети: 255.255.0.0 Шлюз: 192.168.0.1
0xC0A80002 0xFFFF0000 0xC0A80001
8.28 Классы результатов
Используйте «необязательные» возвращаемые значения этих классов, чтобы проверить, был ли вызов функции успешным или нет, а также определить причины сбоя. В случае успеха функция hasError() возвращает false. С помощью getResult() вы можете считать значение результата согласно типу (ResultInt и т. д.). Если вызов завершается неудачно, вы считываете причину с помощью getError().
Защищенные атрибуты
строка NlcErrorCode uint32_t
errorString errorCode exErrorCode
Кроме того, этот класс имеет следующие открытые функции-члены:
hasError () Считывает успех вызова функции.
bool nlc::Result::hasError () константа
Возвраты
правда ложь
Неудачный звонок. Используйте getError(), чтобы прочитать значение. Успешный звонок. Используйте getResult(), чтобы прочитать значение.
getError () Считывает причину сбоя вызова функции.
константа std::string nlc::Result::getError () константа
Возвращает константную строку
Версия: документ 1.4.2 / NanoLib 1.3.0.
44
8 Справочник по классам/функциям
result () Следующие функции помогают определить точные результаты:
Результат (std::string const & errorString_)
Результат (NlcErrorCode const & errCode, std::string const & errorString_)
Результат (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
Результат (результат константа и результат)
getErrorCode () Прочитайте NlcErrorCode.
NlcErrorCode getErrorCode() const
getExErrorCode() uint32_t getExErrorCode() const
8.28.1 РезультатVoid
NanoLib отправляет вам экземпляр этого класса, если функция возвращает void. Класс наследует общедоступные функции и защищенные атрибуты из результирующего класса и имеет следующие общедоступные функции-члены:
ResultVoid () Следующие функции помогают определить точный результат void:
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 & результат)
8.28.2 РезультатИнт
NanoLib отправляет вам экземпляр этого класса, если функция возвращает целое число. Класс наследует общедоступные функции/защищенные атрибуты из результирующего класса и имеет следующие общедоступные функции-члены:
getResult () Возвращает целочисленный результат, если вызов функции прошел успешно.
int64_t getResult() константа
Возвращает int64_t
Версия: документ 1.4.2 / NanoLib 1.3.0.
45
8 Справочник по классам/функциям
ResultInt () Следующие функции помогают определить точный целочисленный результат:
РезультатInt (int64_t result_)
ResultInt (std::string const & errorString_)
ResultInt (NlcErrorCode const & errCode, std::string const & errorString_)
ResultInt (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultInt (результат константа и результат)
8.28.3 Строка результата
NanoLib отправляет вам экземпляр этого класса, если функция возвращает строку. Класс наследует общедоступные функции/защищенные атрибуты из результирующего класса и имеет следующие общедоступные функции-члены:
getResult () Считывает строковый результат, если вызов функции прошел успешно.
константа std::string nlc::ResultString::getResult () константа
Возвращает константную строку
ResultString () Следующие функции помогают определить точный строковый результат:
ResultString (std::string const & message, bool hasError_)
ResultString (NlcErrorCode const & errCode, std::string const & errorString_)
ResultString (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultString (результат const & результат)
8.28.4 ResultArrayByte
NanoLib отправляет вам экземпляр этого класса, если функция возвращает массив байтов. Класс наследует публичные функции / защищенные атрибуты из результирующего класса и имеет следующие публичные функции-члены:
getResult () Считывает вектор байтов, если вызов функции был успешным.
константа std::vector nlc::ResultArrayByte::getResult () константа
Возвращает константный вектор
Версия: документ 1.4.2 / NanoLib 1.3.0.
46
8 Справочник по классам/функциям
ResultArrayByte () Следующие функции помогают определить точный результат массива байтов:
ResultArrayByte (std::vector константа и результат_)
ResultArrayByte (std::string const & errorString_)
ResultArrayByte (NlcErrorCode const & errCode, std::string const & error String_)
ResultArrayByte (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultArrayByte (результат const & результат)
8.28.5 РезультатАррайИнт
NanoLib отправляет вам экземпляр этого класса, если функция возвращает целочисленный массив. Класс наследует публичные функции / защищенные атрибуты из результирующего класса и имеет следующие публичные функции-члены:
getResult () Считывает целочисленный вектор, если вызов функции был успешным.
константа std::vector nlc::ResultArrayInt::getResult () константа
Возвращает константный вектор
ResultArrayInt () Следующие функции помогают определить точный результат целочисленного массива:
ResultArrayInt (std::vector константа и результат_)
ResultArrayInt (std::string const & errorString_)
ResultArrayInt (NlcErrorCode const & errCode, std::string const & error String_)
ResultArrayInt (NlcErrorCode const & errCode, const uint32_t exErrCode, std:: string const & errorString_)
ResultArrayInt (результат const & результат)
8.28.6 ResultBusHwIds
NanoLib отправляет вам экземпляр этого класса, если функция возвращает массив идентификаторов оборудования шины. Класс наследует публичные функции / защищенные атрибуты из результирующего класса и имеет следующие публичные функции-члены:
getResult () Считывает вектор bus-hardware-ID, если вызов функции был успешным.
константа std::vector nlc::ResultBusHwIds::getResult () константа
Параметры константного вектора
Версия: документ 1.4.2 / NanoLib 1.3.0.
47
8 Справочник по классам/функциям
ResultBusHwIds () Следующие функции помогают определить точный результат массива идентификаторов оборудования шины:
ResultBusHwIds (std::vector константа и результат_)
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 & результат)
8.28.7 ИдРезультатаУстройства
NanoLib отправляет вам экземпляр этого класса, если функция возвращает идентификатор устройства. Класс наследует публичные функции / защищенные атрибуты из результирующего класса и имеет следующие публичные функции-члены:
getResult () Считывает вектор идентификатора устройства, если вызов функции прошел успешно.
DeviceId nlc::ResultDeviceId::getResult () const
Возвращает константный вектор
ResultDeviceId () Следующие функции помогают определить точный результат идентификатора устройства:
ResultDeviceId (DeviceId const & result_)
ResultDeviceId (std::string const & errorString_)
ResultDeviceId (NlcErrorCode const & errCode, std::string const & errorString_)
ResultDeviceId (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string errorString_)
ResultDeviceId (результат const & результат)
8.28.8 Идентификаторы результирующих устройств
NanoLib отправляет вам экземпляр этого класса, если функция возвращает массив идентификаторов устройств. Класс наследует публичные функции / защищенные атрибуты из результирующего класса и имеет следующие публичные функции-члены:
getResult () Возвращает вектор идентификатора устройства, если вызов функции был успешным.
DeviceId nlc::ResultDeviceIds::getResult () const
Возвращает константный вектор
Версия: документ 1.4.2 / NanoLib 1.3.0.
48
8 Справочник по классам/функциям
ResultDeviceIds () Следующие функции помогают определить точный результат массива идентификаторов устройств:
ResultDeviceIds (std::vector константа и результат_)
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 & результат)
8.28.9 ResultDeviceHandle
NanoLib отправляет вам экземпляр этого класса, если функция возвращает значение дескриптора устройства. Класс наследует публичные функции / защищенные атрибуты из результирующего класса и имеет следующие публичные функции-члены:
getResult () Считывает дескриптор устройства, если вызов функции прошел успешно.
DeviceHandle nlc::ResultDeviceHandle::getResult () const
Возвращает дескриптор устройства
ResultDeviceHandle () Следующие функции помогают определить точный результат дескриптора устройства:
ResultDeviceHandle (DeviceHandle const & result_)
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 (константа результата и результат)
8.28.10 Словарь РезультатОбъекта
NanoLib отправляет вам экземпляр этого класса, если функция возвращает содержимое словаря объектов. Класс наследует общедоступные функции/защищенные атрибуты из результирующего класса и имеет следующие общедоступные функции-члены:
getResult () Считывает вектор идентификатора устройства, если вызов функции прошел успешно.
константа nlc::ObjectDictionary & nlc::ResultObjectDictionary::getResult () константа
Версия: документ 1.4.2 / NanoLib 1.3.0.
49
8 Справочник по классам/функциям
Возвраты
константный вектор
ResultObjectDictionary () Следующие функции помогают определить точный результат словаря объектов:
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 & результат)
8.28.11 Состояние ResultConnectionState
NanoLib отправляет вам экземпляр этого класса, если функция возвращает информацию о состоянии подключения устройства. Класс наследует общедоступные функции/защищенные атрибуты из результирующего класса и имеет следующие общедоступные функции-члены:
getResult () Считывает дескриптор устройства, если вызов функции прошел успешно.
DeviceConnectionStateInfo nlc::ResultConnectionState::getResult () const
Возвращает DeviceConnectionStateInfo Connected/Disconnected/ConnectedBootloader
ResultConnectionState () Следующие функции помогают определить точный результат состояния соединения:
ResultConnectionState (DeviceConnectionStateInfo const & result_)
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 & результат)
8.28.12 РезультатОбъектEntry
NanoLib отправляет вам экземпляр этого класса, если функция возвращает запись объекта. Класс наследует публичные функции / защищенные атрибуты из результирующего класса и имеет следующие публичные функции-члены:
Версия: документ 1.4.2 / NanoLib 1.3.0.
50
8 Справочник по классам/функциям
getResult () Возвращает вектор идентификатора устройства, если вызов функции был успешным.
nlc::ObjectEntry константа& nlc::ResultObjectEntry::getResult () константа
Возвращает константный ObjectEntry
ResultObjectEntry () Следующие функции помогают определить точный результат ввода объекта:
ResultObjectEntry (nlc::ObjectEntry const & result_)
ResultObjectEntry (std::string const & errorString_)
ResultObjectEntry (NlcErrorCode const & errCode, std::string const & errorString_)
ResultObjectEntry (NlcErrorCode const & errCode, const uint32_t exErrCode, std::string const & errorString_)
ResultObjectEntry (результат const & результат)
8.28.13 РезультатОбжектСубэнтри
NanoLib отправляет вам экземпляр этого класса, если функция возвращает подзапись объекта. Класс наследует публичные функции / защищенные атрибуты из результирующего класса и имеет следующие публичные функции-члены:
getResult () Возвращает вектор идентификатора устройства, если вызов функции был успешным.
nlc::ObjectSubEntry константа & nlc::ResultObjectSubEntry::getResult () константа
Возвращает константу ObjectSubEntry.
ResultObjectSubEntry () Следующие функции помогают определить точный результат подзаписи объекта:
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 (результат константа и результат)
8.28.14 РезультатПрофинетУстройства
NanoLib отправляет вам экземпляр этого класса, если функция возвращает устройство Profinet. Класс наследует общедоступные функции/защищенные атрибуты из результирующего класса и имеет следующие общедоступные функции-члены:
Версия: документ 1.4.2 / NanoLib 1.3.0.
51
8 Справочник по классам/функциям
getResult () Считывает вектор устройства Profinet, если вызов функции прошел успешно.
константа std::vector & getResult() константа
ResultProfinetDevices () Следующие функции помогают точно определить устройства Profinet.
ResultProfinetDevices (const std::vector и profinetDevices)
ResultProfinetDevices (константа Результат & результат)
ResultProfinetDevices (const std::string &errorText, NlcErrorCode errorCode = NlcErrorCode::GeneralError, uint32_t extendedErrorCode = 0)
8.28.15 Результатыampледатааррай
NanoLib отправляет вам экземпляр этого класса, если функция возвращает значениеampмассив данных файла. Класс наследует общедоступные функции/защищенные атрибуты из результирующего класса и имеет следующие общедоступные функции-члены:
getResult () Считывает массив данных, если вызов функции прошел успешно.
константа std::vector <SampleData> & getResult() константа
Полученные результатыampleDataArray () Следующие функции помогают точно определить устройства Profinet.
Полученные результатыampleDataArray (const std::vector <SampleData> & dataArray)
Полученные результатыampleDataArray (const std::string &errorDesc, const NlcErrorCode errorCode = NlcErrorCode::GeneralError, const uint32_t extendedErrorCode = 0)
Полученные результатыampleDataArray (конст РезультатСampleDataArray и другие)
Полученные результатыampleDataArray (константный результат и результат)
8.28.16 РезультатыamplerState
NanoLib отправляет вам экземпляр этого класса, если функция возвращает значениеampler state. Этот класс наследует общедоступные функции/защищенные атрибуты из результирующего класса и имеет следующие общедоступные функции-члены:
getResult () Считывает sampвектор состояния ler, если вызов функции прошел успешно.
SamplerState getResult() константа
Возвращает СamplerState>
Не настроено/Настроено/Готово/Выполняется/Завершено/Сбой/Отменено
Версия: документ 1.4.2 / NanoLib 1.3.0.
52
8 Справочник по классам/функциям
Полученные результатыamplerState () Следующие функции помогают определить точное значение sampлер государство.
Полученные результатыamplerState (константа Sampсостояние lerState)
Полученные результатыamplerState (const std::string & errorDesc, const NlcErrorCode errorCode = NlcErrorCode::GeneralError, const uint32_t
расширенныйкод ошибки = 0)
Полученные результатыamplerState (конст ResultSamplerState и другие)
Полученные результатыamplerState (константный результат и результат)
8.29 НлкErrorCode
Если что-то пойдет не так, классы результатов сообщат об одном из кодов ошибок, перечисленных в этом перечислении.
Код ошибки Успех ОбщаяОшибка ШинаНедоступнаОшибка связиОшибка протокола
ODНе существует ODНедействительный доступ ODТип ODНесоответствие ОперацияПрерванная ОперацияНеподдерживается Недопустимая операция
InvalidArguments AccessDenied ResourceNotFound ResourceUnavailable OutOfMemory TimeOutError
C: Категория D: Описание R: Причина C: Нет. Д: Нет ошибки. Р: Операция завершилась успешно.
С: Не указано. D: Неизвестная ошибка. Р: Неудача, не подходящая ни под какую другую категорию.
С: Автобус. D: Аппаратная шина недоступна. R: Шина отсутствует, отключена или неисправна.
С: Общение. Д: Связь ненадежна. R: Неожиданные данные, неправильный CRC, ошибки кадра или четности и т. д.
С: Протокол. D: Ошибка протокола. R: Ответ после неподдерживаемой опции протокола, отчет устройства о неподдерживаемом протоколе, ошибка в протоколе (например, бит синхронизации сегмента SDO) и т. д. R: Ответ или отчет устройства о неподдерживаемом протоколе (опции) или об ошибках в протоколе (например, SDO). бит синхронизации сегмента) и т. д. R: Неподдерживаемый протокол (опции) или ошибка в протоколе (скажем, бит синхронизации сегмента SDO) и т. д.
C: Словарь объектов. D: Адрес OD не существует. R: Такого адреса нет в словаре объектов.
C: Словарь объектов. D: Доступ к адресу OD недействителен. R: Попытка записи по адресу, доступному только для чтения, или чтению по адресу, доступному только для записи.
C: Словарь объектов. D: Несоответствие типа. R: Значение, не преобразованное в указанный тип, например, при попытке обработать строку как число.
С: Приложение. Д: Процесс прерван. R: Процесс прерывается по запросу приложения. Возвращается только при прерывании операции функцией обратного вызова, скажем, при сканировании шины.
С: Обычное. D: Процесс не поддерживается. R: Нет аппаратной поддержки шины/устройства.
С: Обычное. D: Процесс неверен в текущем контексте или недействителен для текущего аргумента. R: Попытка переподключения к уже подключенным шинам/устройствам. Попытка отключения уже отключенных. Попытка работы загрузчика в режиме прошивки или наоборот.
С: Обычное. Д: Аргумент недействителен. Р: Неправильная логика или синтаксис.
С: Обычное. Д: Доступ запрещен. Р: Отсутствие прав или возможностей для выполнения запрошенной операции.
С: Обычное. D: Указанный элемент не найден. R: Аппаратная шина, протокол, устройство, адрес OD на устройстве или file не найдено.
С: Обычное. D: Указанный элемент не найден. R: занято, отсутствует, отключено или неисправно.
С: Обычное. Д: Недостаточно памяти. Р: Слишком мало памяти для обработки этой команды.
С: Обычное. D: Тайм-аут процесса. Р: Возврат после истечения тайм-аута. Тайм-аут может быть временем ответа устройства, временем получения общего или эксклюзивного доступа к ресурсу или временем переключения шины/устройства в подходящее состояние.
Версия: документ 1.4.2 / NanoLib 1.3.0.
53
8 Справочник по классам/функциям
8.30 Обратный вызов Nlc
Этот родительский класс для обратных вызовов имеет следующую публичную функцию-член: callback()
виртуальный обратный вызов ResultVoid ()
Возвраты
РезультатVoid
8.31 Обратный вызов NlcDataTransfer
Используйте этот класс обратного вызова для передачи данных (обновление прошивки, загрузка NanoJ и т. д.). 1. Для загрузки прошивки: определите «сокласс», расширяющий этот с помощью пользовательского метода обратного вызова
Реализация. 2. Используйте экземпляры «co-class's» в вызовах NanoLibAccessor.uploadFirmware(). Сам основной класс имеет следующую публичную функцию-член:
обратный вызов () виртуальный обратный вызов ResultVoid (информация nlc::DataTransferInfo, данные int32_t)
Возвраты
РезультатVoid
8.32 Обратный вызов NlcScanBus
Используйте этот класс обратного вызова для сканирования шины. 1. Определите «сокласс», расширяющий этот с помощью пользовательской реализации метода обратного вызова. 2. Используйте экземпляры «сокласса» в вызовах NanoLibAccessor.scanDevices(). Сам основной класс имеет следующую публичную функцию-член.
перезвонить ()
виртуальный обратный вызов ResultVoid (информация nlc::BusScanInfo, std::vector const & devicesFound, данные int32_t)
Возвращает РезультатVoid
8.33 Обратный вызов NlcLogging
Используйте этот класс обратного вызова для регистрации обратных вызовов. 1. Определите класс, который расширяет этот класс с помощью собственной реализации метода обратного вызова. 2. Используйте указатель на его экземпляры, чтобы установить обратный вызов с помощью NanoLibAccessor >
setLoggingCallback (…).
виртуальный обратный вызов 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 СamplerИнтерфейс
Используйте этот класс для настройки, запуска и остановкиampler, или получить sampпривели данные и извлеките их какampстатус клиента или последняя ошибка. Класс имеет следующие открытые функции-члены.
Версия: документ 1.4.2 / NanoLib 1.3.0.
54
8 Справочник по классам/функциям
configure () Настраивается какampлер.
виртуальный ResultVoid nlc::SamplerInterface::configure (const DeviceHandle deviceHandle, const SamplerКонфигурация и sampлерКонфигурация)
Параметры [in] deviceHandle [in] сamplerКонфигурация
Возвращает РезультатVoid
Указывает, какое устройство настроитьampлер за. Указывает значения атрибутов конфигурации. Подтверждает выполнение функции void.
getData () Получает sampсветодиодные данные.
виртуальные результатыampleDataArray nlc::SamplerInterface::getData (const DeviceHandle deviceHandle)
Параметры [в] deviceHandle Возвращает ResultSampледатааррай
Указывает, для какого устройства нужно получить данные.
Доставляет сampсветодиодные данные, которые могут быть пустым массивом, если samplerNotify активен при запуске.
getLastError () Получает какampпоследняя ошибка лера.
виртуальный ResultVoid nlc::SamplerInterface::getLastError (const DeviceHandle deviceHandle)
Возвращает РезультатVoid
Подтверждает выполнение функции void.
getState () Получает какampстатус лера.
виртуальные результатыamplerState nlc::SamplerInterface::getState (const DeviceHandle deviceHandle)
Возвращает результатыamplerState
Доставляет сampлер государство.
start () Начинается какampлер.
виртуальный ResultVoid nlc::SamplerInterface::start (const DeviceHandle deviceHandle, SamplerNotify* samplerNotify, int64_t applicationData)
Параметры [in] deviceHandle [in] SamplerNotify [в] applicationData
Возвращает РезультатVoid
Указывает, какое устройство запускаетampлер за.
Указывает, какую дополнительную информацию следует сообщать (может быть nullptr).
Опция: пересылает данные, связанные с приложением (определяемый пользователем 8-битный массив значений / идентификатора устройства / индекса или дату и время, указатель переменной / функции и т. д.) в s.amplerNotify.
Подтверждает выполнение функции void.
Версия: документ 1.4.2 / NanoLib 1.3.0.
55
8 Справочник по классам/функциям
стоп () Останавливается какampлер.
виртуальный ResultVoid nlc::SamplerInterface::stop (const DeviceHandle deviceHandle)
Параметры [в] deviceHandle Возвращает ResultVoid
Указывает, какое устройство остановитьampлер за. Подтверждает выполнение функции void.
8.35 Сampструктура lerConfiguration
Эта структура содержит данные sampпараметры конфигурации лера (статические или нет).
Публичные атрибуты
станд::вектор отслеживаемыеАдреса
До 12 адресов ODampсветодиод.
uint32_t
версия
Версия структуры.
uint32_t
продолжительностьМиллисекунды
Sampпродолжительность задержки в мс, от 1 до 65535
uint16_t
периодмиллисекунды
Sampпериод ожидания в мс.
uint16_t
числоOfSampле
Sampменьшая сумма.
uint16_t
preTriggerNumberOfSampле
Sampпредварительная сумма.
бул
Использование программного обеспеченияРеализация
Используйте программную реализацию.
бул
используяNewFWSamplerImplementation Использовать реализацию встроенного ПО для устройств с
Версия прошивки v24xx или новее.
Sampлермоде
режим
Нормальные, повторяющиеся или непрерывныеampлин.
SamplerTriggerCondition
Условия запуска триггера: TC_FALSE = 0x00 TC_TRUE = 0x01 TC_SET = 0x10 TC_CLEAR = 0x11 TC_RISING_EDGE = 0x12 TC_FALLING_EDGE = 0x13 TC_BIT_TOGGLE = 0x14 TC_GREATER = 0x15 TC_GREATER_OR_EQUAL = 0x16 TC_LESS = 0x17 TC_LESS_OR_EQUAL = 0x18 TC_EQUAL = 0x19 TC_NOT_EQUAL = 0x1A TC_ONE_EDGE = 0x1B TC_MULTI_EDGE = 0x1C, OdIndex, triggerValue
SamplerTrigger
SamplerTrigger
Триггер для запуска какampлер?
Статические общедоступные атрибуты
статический constexpr size_t SAMPLER_CONFIGURATION_VERSION = 0x01000000 static constexpr size_t MAX_TRACKED_ADDRESSES = 12
8.36 СamplerNotify
Используйте этот класс для активации sampуведомления ler, когда вы начинаете какampлер. Класс имеет следующую общедоступную функцию-член.
Версия: документ 1.4.2 / NanoLib 1.3.0.
56
8 Справочник по классам/функциям
уведомить ()
Предоставляет запись уведомления.
виртуальная пустота nlc::SamplerNotify::notify (const ResultVoid & lastError, const SamplerState samplerState, константа std::vector <SampleData> & sampleDatas, int64_t applicationData)
Параметры [in]lastError [in] сamplerState
[в] сampleDatas [in] applicationData
Сообщает о последней ошибке, произошедшей во времяampлинг. Об этом сообщаетampСтатус сервера на момент уведомления: Не настроено/Настроено/Готово/Выполняется/Завершено/Сбой/Отменено. Об этом сообщаетampмассив светодиодных данных. Сообщает данные, специфичные для приложения.
8.37 Сampструктура леДата
Эта структура содержит sampсветодиодные данные.
uin64_t номер итерации
Начинается с 0 и увеличивается только в повторяющемся режиме.
std::vector<SampledValues> Содержит массив значенийampпривели к ценностям.
8.38 Сampструктура светодиодного значения
Эта структура содержит sampпривели к ценностям.
значение in64_t uin64_t CollectTimeMsec
Содержит значение отслеживаемого адреса OD.
Содержит время сбора в миллисекундах относительно секунды.ampле начало.
8.39 Сampструктура lerTrigger
Эта структура содержит настройки триггера sampлер.
SampУсловие lerTriggerCondition
Значение OdIndex uin32_t
Условие срабатывания: TC_FALSE = 0x00 TC_TRUE = 0x01 TC_SET = 0x10 TC_CLEAR = 0x11 TC_RISING_EDGE = 0x12 TC_FALLING_EDGE = 0x13 TC_BIT_TOGGLE = 0x14 TC_GREATER = 0x15 TC_GREATER_OR_EQUAL = 0x16 TC_LESS = 0x17 TC_LESS_OR_EQUAL = 0x18 TC_EQUAL = 0x19 TC_NOT_EQUAL = 0x1A TC_ONE_EDGE = 0x1B TC_MULTI_EDGE = 0x1C
OdIndex (адрес) триггера.
Значение условия или номер бита (начиная с нулевого бита).
8.40 Последовательная структура
Здесь вы найдете параметры последовательной связи и следующие общедоступные атрибуты:
константа std::string константа SerialBaudRate
BAUD_RATE_OPTIONS_NAME = «скорость последовательной передачи данных» baudRate = структура SerialBaudRate
Версия: документ 1.4.2 / NanoLib 1.3.0.
57
8 Справочник по классам/функциям
константа std::string константа SerialParity
PARITY_OPTIONS_NAME = «последовательная четность» четность = структура SerialParity
8.41 Структура SerialBaudRate
Здесь вы найдете скорость передачи данных последовательного порта и следующие общедоступные атрибуты:
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» BAUD_RATE_57600 = «57600» BAUD_RATE_115200 = «115200» BAUD_RATE_128000 = «128000» BAUD_RATE_256000 = «256000»
8.42 Структура SerialParity
Здесь вы найдете параметры последовательной четности и следующие публичные атрибуты:
константа std::string константа std::string константа std::string константа std::string константа std::string
NONE = «нет» ODD = «нечетный» EVEN = «четный» MARK = «отметка» SPACE = «пробел»
Версия: документ 1.4.2 / NanoLib 1.3.0.
58
Лицензии 9
Лицензии 9
Заголовки интерфейса API NanoLib и exampИсходный код le лицензирован Nanotec Electronic GmbH & Co. KG по лицензии Creative Commons Attribution 3.0 Unported License (CC BY). Части библиотеки, предоставляемые в двоичном формате (библиотеки ядра и связи полевой шины), лицензированы по лицензии Creative Commons AttributionNoDerivatives 4.0 International License (CC BY ND).
Творческие права общего пользования
Нижеследующее понятное человеку резюме не заменит саму лицензию(и). Вы можете найти соответствующую лицензию на сайте creativecommons.org и по ссылке ниже. Вы можете:
CC BY 3.0
Поделиться: Смотрите справа. Адаптировать: Ремиксовать, трансформировать и строить на основе
материал для любых целей, даже коммерческих.
CC BY-ND 4.0
Поделиться: Копировать и распространять материал на любом носителе и в любом формате.
Лицензиар не может отозвать вышеуказанные свободы, пока вы соблюдаете следующие условия лицензии:
CC BY 3.0
CC BY-ND 4.0
Attribution: Вы должны указать соответствующее авторство, Attribution: См. слева. Но: Укажите ссылку на это
предоставить ссылку на лицензию и указать, если
другая лицензия.
Изменения были сделаны. Вы можете сделать это в любой
Никаких производных: Если вы делаете ремиксы, трансформируете или строите
разумным образом, но не таким образом, чтобы предполагать,
на материале, вы не можете распространять
означает, что лицензиар одобряет вас или ваше использование.
модифицированный материал.
Никаких дополнительных ограничений: Вы не можете подать заявку Никаких дополнительных ограничений: См. слева. юридические условия или технологические меры, которые юридически
ограничивать других от выполнения любых действий, предусмотренных лицензией
разрешения.
Примечание: Вам не обязательно соблюдать условия лицензии в отношении элементов материала, находящихся в общественном достоянии или в случаях, когда использование вами разрешено применимым исключением или ограничением.
Примечание: Гарантии не предоставляются. Лицензия может не давать вам всех разрешений, необходимых для предполагаемого использования. Напримерample, другие права, такие как право на публичность, право на конфиденциальность или моральные права, могут ограничивать использование вами материала.
Версия: документ 1.4.2 / NanoLib 1.3.0.
59
Выходные данные, контакт, версии
©2024 Nanotec Electronic GmbH & Co.KGKapellenstr.685622 FeldkirchenGermanyTel.+49(0) 89 900 686-0Fax+49(0)89 900 686-50 info@nanotec.dewww.nanotec.com Все права защищены. Возможны ошибки, упущения, технические или контентные изменения без уведомления. Указанные бренды/продукты являются товарными знаками их владельцев и должны рассматриваться как таковые. Оригинальная версия.
Документ 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
+ Добавлено > Изменено # Исправлено > Переработка предоставленного exampлес.
+ NanoLib Modbus: Добавлен механизм блокировки устройств для Modbus VCP. # NanoLib Core: Исправлена проверка состояния соединения. # NanoLib Code: Исправлено удаление ссылки на оборудование шины.
+ NanoLib-CANopen: поддержка адаптера Peak PCAN-USB (IPEH-002021/002022).
> NanoLib Core: Изменен интерфейс обратного вызова журналирования (LogLevel заменен на LogModule). # NanoLib Logger: Исправлено разделение между ядром и модулями. # Modbus TCP: Исправлено обновление прошивки для FW4. # EtherCAT: Исправлена загрузка программы NanoJ для Core5. # EtherCAT: Исправлено обновление прошивки для Core5.
# Modbus RTU: Исправлены проблемы синхронизации при низкой скорости передачи данных во время обновления прошивки. # RESTful: Исправлена загрузка программы NanoJ.
# Модули NanoLib Sampler: Правильное прочтение sampпривели логические значения.
+ Поддержка Java 11 для всех платформ. + Поддержка Python 3.11/3.12 для всех платформ. + Новый интерфейс обратного вызова для ведения журнала (см. examples). + Приемники обратного вызова для NanoLib Logger. > Обновление logger до версии 1.12.0. > Модули NanoLib Sampler: Теперь поддерживается прошивка контроллера Nanotec v24xx. > Модули NanoLib Sampler: Изменение в структуре, используемой для sampконфигурация ler. > Модули NanoLib Sampler: Непрерывный режим является синонимом бесконечного; условие срабатывания проверяется один раз; количество сamples должны быть 0. > Модули NanoLib Sampler: Обычный приоритет для потока, который собирает данные в режиме прошивки. > Модули NanoLib Sampler: Переписан алгоритм для обнаружения перехода между состояниями «Готово» и «Работает». # NanoLib Core: Больше нет нарушения доступа (0xC0000005) при закрытии 2 или более устройств, использующих одно и то же оборудование шины. # NanoLib Core: Больше нет ошибки сегментации при подключении адаптера PEAK под Linux. # Модули NanoLib Sampлер: Правильно sampчтение значений светодиодов в режиме прошивки. # Модули NanoLib Sampler: Правильная конфигурация 502X:04. # Модули NanoLib Sampler: Корректное смешивание буферов с каналами. # NanoLib-Canopen: Увеличенные тайм-ауты CAN для надежности и корректного сканирования на более низких скоростях передачи данных. # NanoLib-Modbus: Алгоритм обнаружения VCP для специальных устройств (USB-DA-IO).
+ Поддержка EtherCAT.
+ Примечание по настройкам проекта VS в разделе «Настройка проекта».
+ getDeviceHardwareGroup(). + getProfinetDCP(isServiceAvailable). + getProfinetDCP(validateProfinetDeviceIp). + autoAssignObjectDictionary(). + getXmlFileИмя (). + const std::string & xmlFileПуть в addObjectDictionary(). + getSamplerInterface().
Продукт 1.3.0 1.2.1 1.2.0 1.1.3
1.1.2 1.1.1 1.1.0
1.0.1 (В349) 1.0.0 (В344) 1.0.0 (В341)
Версия: документ 1.4.2 / NanoLib 1.3.0.
60
10 Выходные данные, контакт, версии
Документ
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
+ Добавлено > Изменено # Исправлено + rebootDevice(). + Код ошибки ResourceUnavailable для getDeviceBootloaderVersion(), ~VendorId(), ~HardwareVersion(), ~SerialNumber и ~Uid. > firmwareUploadFromFile сейчас загрузитьFirmwareFromFile (). > firmwareUpload () сейчас uploadFirmware (). > bootloaderUploadFromFile () сейчас загрузитьЗагрузчикFromFile (). > bootloaderUpload () теперь uploadBootloader (). > bootloaderFirmwareUploadFromFile () для загрузки загрузчика прошивки изFile (). > bootloaderFirmwareUpload () сейчас uploadBootloaderFirmware (). > nanojUploadFromFile () сейчас загрузитеNanoJFromFile (). > nanojUpload () теперь uploadNanoJ (). > objectDictionaryLibrary () теперь getObjectDictionaryLibrary (). > String_String_Map теперь StringStringMap. > NanoLib-Common: более быстрое выполнение listAvailableBusHardware и openBusHardwareWithProtocol с адаптером Ixxat. > NanoLib-CANopen: используются настройки по умолчанию (скорость передачи 1000 кбод, номер шины Ixxat 0), если параметры оборудования шины пусты. > NanoLib-RESTful: разрешение администратора устарело для связи с загрузчиками Ethernet под Windows, если доступен драйвер npcap / winpcap. # NanoLib-CANopen: оборудование шины теперь открывается без сбоев с пустыми параметрами. # NanoLib-Common: openBusHardwareWithProtocol () теперь без утечек памяти.
+ Поддержка Linux ARM64. + Поддержка USB-накопителей / REST / Profinet DCP. + checkConnectionState(). + getDeviceBootloaderVersion(). + ResultProfinetDevices. + NlcErrorCode (заменил NanotecExceptions). + NanoLib Modbus: VCP / USB-концентратор унифицирован с USB. > Сканирование Modbus TCP возвращает результаты. < Задержка связи Modbus TCP остается постоянной.
+ Больше ObjectEntryDataType (сложные и профессиональные)file-specific). + IOError возвращается, если connectDevice() и scanDevices() не находят ничего. + Номинальное время ожидания только 100 мс для CanOpen/Modbus.
+ Поддержка Modbus (плюс USB Hub через VCP). + Глава Создание собственного проекта Linux. + extraHardwareSpecifier к BusHardwareId(). + extraId_ и extraStringId_ к DeviceId().
+ setBusState(). + getDeviceBootloaderBuildId(). + getDeviceFirmwareBuildId(). + getDeviceHardwareVersion(). # Исправления ошибок.
Версия.
Продукт
0.8.0 0.7.1 0.7.0 0.5.1 0.5.1
Версия: документ 1.4.2 / NanoLib 1.3.0.
61
Документы/Ресурсы
![]() |
Программирование Nanotic NanoLib на C++ [pdf] Руководство пользователя NanoLib Программирование на языке C, Программирование на языке C, Программирование |