Наведений нижче приклад базується на нашій попередній публікації Приклад SOEM EtherCAT: Вивести список усіх slave-пристроїв.
Він зчитує один об’єкт, 0x2019, субіндекс 0x06, який у посібнику користувача вказано як STRING(32).
soem_read_string.c
char stringBuffer[32];
memset(stringBuffer, 0, sizeof(stringBuffer));
int psize = 32;
int result = ec_SDOread(i, 0x2019, 0x06, FALSE, &psize, &stringBuffer, EC_TIMEOUTRXM);
if (result > 0) {
printf("PDO 0x2019:06 Рядок: %s\n", stringBuffer);
} else {
printf("Помилка читання PDO 0x2019:06\n");
}Повний приклад
Див. Приклад SOEM EtherCAT: Вивести список усіх slave-пристроїв для конфігурації CMake
soem_list_slaves.c
#include "ethercat.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.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("Slave %d: Назва: %s, Розмір виходу: %d біт, Розмір входу: %d біт, Стан: %d\n",
i,
ec_slave[i].name,
ec_slave[i].Obits,
ec_slave[i].Ibits,
ec_slave[i].state);
// Буфер для рядка (32 байти)
char stringBuffer[32];
memset(stringBuffer, 0, sizeof(stringBuffer));
// Читання SDO
int psize = 32;
int result = ec_SDOread(i, 0x2019, 0x06, FALSE, &psize, &stringBuffer, EC_TIMEOUTRXM);
if (result > 0) {
printf("PDO 0x2019:06 Рядок: %s\n", stringBuffer);
} else {
printf("Помилка читання PDO 0x2019:06\n");
}
}
} else {
printf("Slave-пристроїв не знайдено.\n");
}
// Закриття EtherCAT-майстра
ec_close();
} else {
printf("Не вдалося ініціалізувати EtherCAT-майстра на %s\n", ifname);
}
return 0;
}Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow