Exemple minimal SOEM EtherCAT pour lire un objet UDINT avec un ID d'esclave connu
L’exemple suivant est basé sur nos posts précédents Exemple SOEM EtherCAT : Lister tous les esclaves et Exemple SOEM EtherCAT : Comment lire un objet UDINT.
soem_read_udint.c
#include "ethercat.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
if (argc <= 1) {
printf("Usage: %s <network interface>\n", argv[0]);
return 1;
}
char *ifname = argv[1];
printf("Starting SOEM EtherCAT slave listing\n");
// Initialiser la bibliothèque SOEM avec l'interface réseau spécifiée
if (ec_init(ifname)) {
printf("EtherCAT master initialized on %s\n", ifname);
// Effectuer un scan du réseau EtherCAT
if (ec_config_init(FALSE) > 0) {
// Passer en mode OP
ec_config_map(&IOmap);
ec_statecheck(0, EC_STATE_SAFE_OP, EC_TIMEOUTSTATE);
ec_slave[0].state = EC_STATE_OPERATIONAL;
ec_writestate(0);
ec_statecheck(0, EC_STATE_OPERATIONAL, EC_TIMEOUTSTATE);
// Lire le RxPDO
while(1) {
ec_receive_processdata(EC_TIMEOUTRET);
// Les données PDO sont maintenant disponibles dans ec_slave[1].inputs[]
// Attendre un court instant
osal_usleep(1000);
}
}
ec_close();
} else {
printf("Failed to initialize EtherCAT master on %s\n", ifname);
}
return 0;
}Consultez les articles similaires par catégorie :
EtherCAT
Si cet article vous a aidé, pensez à m'offrir un café ou à faire un don via PayPal pour soutenir la recherche et la publication de nouveaux articles sur TechOverflow