UNPKG

soem-node

Version:

Bindings Node-API pour SOEM (Simple Open EtherCAT Master)

145 lines (144 loc) 6.03 kB
/** * Représentation d'une interface réseau retournée par `SoemMaster.listInterfaces()`. */ export interface NetworkInterface { /** Nom de l'interface (ex: "eth0", "Ethernet 2") */ name: string; /** Description lisible de l'interface, si disponible */ description: string; } /** * Wrapper TypeScript autour du binding natif SOEM (N-API). * * Contrat (résumé): * - Entrées: nom d'interface réseau (string) optionnel dans le constructeur. * - Sorties: méthodes renvoyant des types JS primitifs ou Buffers. * - Modes d'erreur: la plupart des méthodes renvoient un booléen ou un code; le binding natif * peut jeter pour les erreurs fatales (ex: problème d'initialisation). * * Usage typique: * const m = new SoemMaster('eth0'); * if (m.init()) { * const slaves = m.configInit(); * ... * m.close(); * } */ export declare class SoemMaster { private _m; /** * Crée une instance du Master SOEM en se liant à une interface réseau. * @param ifname Le nom de l'interface réseau à utiliser. Défaut: 'eth0' (modifiable pour Windows). */ constructor(ifname?: string); /** * Initialise le master (ouvre l'interface, prépare SOEM). * @returns true si l'initialisation a réussi, false sinon. */ init(): boolean; /** * Lance la découverte et la configuration des esclaves EtherCAT sur le bus. * @returns nombre d'esclaves détectés (0 si aucun). */ configInit(): number; /** * Configure la map des PDOs après `configInit()`. * Ne renvoie rien; l'appel peut lever une erreur côté natif si mal utilisé. */ configMapPDO(): void; /** * Retourne l'état courant du master / bus (valeur numérique dépendant du binding). * Voir la documentation SOEM pour l'interprétation des codes d'état. */ state(): number; /** * Force la lecture de l'état (rafraîchit la représentation interne) et renvoie le code d'état. */ readState(): number; /** * Lit un SDO d'un esclave. * @param slave Index (1-based) de l'esclave sur le bus. * @param index Index de l'objet SDO (ex: 0x1000). * @param sub Sous-index de l'objet SDO (ex: 0). * @param ca optional Complete Access flag (true = Complete Access) * @returns Buffer contenant les octets lus, ou null/undefined si la lecture a échoué. */ sdoRead(slave: number, index: number, sub: number, ca?: boolean): Buffer | null; /** * Écrit un SDO sur un esclave. * @param slave Index (1-based) de l'esclave. * @param index Index de l'objet SDO. * @param sub Sous-index de l'objet SDO. * @param data Buffer contenant les octets à écrire. * @param data Buffer contenant les octets à écrire. * @param ca optional Complete Access flag (true = Complete Access) * @returns true si l'écriture a réussi, false sinon. */ sdoWrite(slave: number, index: number, sub: number, data: Buffer, ca?: boolean): boolean; /** * Envoie les données process (processdata) au réseau EtherCAT pour le cycle courant. * @returns nombre d'octets envoyés ou un code WKC selon l'implémentation. */ sendProcessdata(): number; /** * Reçoit les données process (processdata) depuis le réseau EtherCAT pour le cycle courant. * @returns code WKC (working counter) ou nombre d'octets reçus selon le binding. */ receiveProcessdata(): number; /** * Ferme le master et libère les ressources (sockets/bruts, handles natifs). */ close(): void; /** * Écrit l'état demandé sur un esclave (ou master si slave=0). * @returns workcounter ou code d'erreur. */ writeState(slave: number, state: number): number; /** * Vérifie l'état d'un esclave (blocking). * @param timeout en ms (optionnel) */ stateCheck(slave: number, reqstate: number, timeout?: number): number; /** * Reconfigure un esclave (blocking). Retourne l'état final. */ reconfigSlave(slave: number, timeout?: number): number; /** * Récupère un esclave (blocking). Retourne >0 si successful. */ recoverSlave(slave: number, timeout?: number): number; /** * Active la mailbox cyclique pour un esclave. */ slaveMbxCyclic(slave: number): number; /** * Configure et active Distributed Clocks (DC). */ configDC(): boolean; /** * Retourne un tableau décrivant les esclaves détectés (name, state, outputs, inputs, ...). */ getSlaves(): any[]; initRedundant(if1: string, if2: string): boolean; configMapGroup(group?: number): Buffer | null; sendProcessdataGroup(group?: number): number; receiveProcessdataGroup(group?: number, timeout?: number): number; mbxHandler(group?: number, limit?: number): number; elist2string(): string; SoEread(slave: number, driveNo: number, elementflags: number, idn: number): Buffer | null; SoEwrite(slave: number, driveNo: number, elementflags: number, idn: number, data: Buffer): boolean; readeeprom(slave: number, eeproma: number, timeout?: number): number; writeeeprom(slave: number, eeproma: number, data: number, timeout?: number): number; APRD(ADP: number, ADO: number, length: number, timeout?: number): Buffer | null; APWR(ADP: number, ADO: number, data: Buffer, timeout?: number): number; LRW(LogAdr: number, length: number, buf: Buffer, timeout?: number): number; LRD(LogAdr: number, length: number, timeout?: number): Buffer | null; LWR(LogAdr: number, data: Buffer, timeout?: number): number; dcsync0(slave: number, act: boolean, CyclTime: number, CyclShift: number): boolean; dcsync01(slave: number, act: boolean, CyclTime0: number, CyclTime1: number, CyclShift: number): boolean; /** * Liste les interfaces réseau disponibles pour l'usage EtherCAT. * @returns tableau d'objets `{ name, description }`. */ static listInterfaces(): NetworkInterface[]; }