Funzione per leggere le informazioni del dispositivo connesso in linea EtherCAT
L'istruzione richiede molto tempo. Deve essere chiamata continuamente fino a che non viene conclusa.
|
i32 ecat_probe (i32 nEth, stru_ecat_probe stru [, string devName=""])
|
|
Numero di canale EtherCAT.
|
|
Struttura di tipo stru_ecat_probe che contiene le informazioni.
|
|
Stringa dove viene salvato il nome del dispositivo. (opzionale, default "")
|
|
Rende:
|
|
1
|
Operazione completata.
|
0
|
Operazione in esecuzione.
|
-1
|
Indice linea EtherCAT illegale.
|
-2
|
Il canale Ethernet non è EtherCAT.
|
-3
|
Argomento illegale.
|
-4
|
Nessun dispositivo nella posizione selezionata.
|
-5
|
Linea EtherCAT non configurata correttamente.
|
-6
|
Cavo EtherCAT disconnesso.
|
-7
|
Errore sw interno. (contattare Robox)
|
|
|
Task.
|
|
RC3E 33.7.1-beta0
|
|
|
Esempio di utilizzo:
$LIT N_MAX_ECAT_DEV 100
stru_ecat_probe ecatDev[1+N_MAX_ECAT_DEV]
string devName[1+N_MAX_ECAT_DEV][64]
int nDev
int esitoEP
string appoName[64]
...
...
FUNCTION void hndEcatProbe(int nEth)
int howMany = 0
nDev = 1
do
ecatDev[ndev].phase = 0
ecatDev[ndev].n_Pos = nDev
esitoEp = 0
while(esitoEp = 0)
esitoEp = ecat_probe(nEth, ecatDev[nDev], apponame)
end_while
if(esitoEp = 1)
howMany = ecatDev[ndev].how_many
devName[nDev] = apponame
nDev = nDev+1
endif
end_do_while((esitoEp =1) and (nDev <= N_MAX_ECAT_DEV))
if(nDev = 1)
nDev = 0
else
if(nDev > howMany)
nDev = howMany
endif
endif
END_FUN
|
|