Наведений нижче приклад SOEM виводить список усіх slave.
Він призначений для використання з SOEM (Simple Open EtherCAT Master) як підмодулем git.
Додайте підмодуль так:
add_soem_submodule.sh
git submodule init
git submodule add https://github.com/OpenEtherCATsociety/SOEMПотім створіть файл list_slaves.cpp у корені вашого проєкту з таким вмістом:
list_slaves.cpp
#include "ethercat.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc <= 1) {
printf("Використання: %s <мережевий інтерфейс>\n", argv[0]);
return 1;
}
char *ifname = argv[1];
printf("Запуск переліку slave SOEM EtherCAT\n");
// Ініціалізація бібліотеки SOEM із вказаним мережевим інтерфейсом
if (ec_init(ifname)) {
printf("EtherCAT-майстер ініціалізовано на %s\n", ifname);
// Виконання сканування мережі EtherCAT
if (ec_config_init(FALSE) > 0) {
printf("Знайдено та налаштовано %d slave.\n", ec_slavecount);
// Перебір slave і виведення їхньої інформації
for (int i = 1; i <= ec_slavecount; i++) {
printf("Ведмедінь %d: Назва: %s, Розмір виходу: %d біт, Розмір входу: %d біт, Стан: %d\n",
i,
ec_slave[i].name,
ec_slave[i].Obits,
ec_slave[i].Ibits,
ec_slave[i].state);
}
} else {
printf("Ведмеденів не знайдено.\n");
}
// Закриття EtherCAT-майстра
ec_close();
} else {
printf("Не вдалося ініціалізувати EtherCAT-майстра на %s\n", ifname);
}
return 0;
}CMakelists.txt:
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(soem_list_slaves)
# Встановити стандарт C++
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(SOURCES "list_slaves.cpp")
file(GLOB_RECURSE SOEM_SOURCES
# Сторонні
"${CMAKE_CURRENT_SOURCE_DIR}/SOEM/soem/*.c"
"${CMAKE_CURRENT_SOURCE_DIR}/SOEM/osal/linux/*.c"
"${CMAKE_CURRENT_SOURCE_DIR}/SOEM/oshw/linux/*.c"
)
# Додати виконуваний файл
add_executable(${PROJECT_NAME}
${SOURCES}
${SOEM_SOURCES}
)
target_include_directories(${PROJECT_NAME}
PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/SOEM/soem"
"${CMAKE_CURRENT_SOURCE_DIR}/SOEM/oshw"
"${CMAKE_CURRENT_SOURCE_DIR}/SOEM/oshw/linux"
"${CMAKE_CURRENT_SOURCE_DIR}/SOEM/osal/"
"${CMAKE_CURRENT_SOURCE_DIR}/SOEM/osal/linux"
)Скомпілюйте так:
build_soem.sh
cmake .
makeЗапустіть програму, передавши мережевий інтерфейс як аргумент:
run_soem_list_slaves.sh
sudo ./soem_list_slaves eno1Приклад виводу:
soem_list_slaves_output.txt
Starting SOEM EtherCAT slave listing
EtherCAT master initialized on eno1
1 slaves found and configured.
Slave 1: Name: My EtherCAT slave, Output size: 0 bits, Input size: 0 bits, State: 1
Дивіться схожі статті за категоріями:
EtherCAT Networking
Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow