Introduzione
Da RTE 34.9.5 è possibile comunicare con i controlli Robox in modalità ProfiNET device.
Il controllo Robox può essere configurato, tramite le porte ETH FB-S 4 e 5, come dispositivo di I/O all'interno della rete ProfiNET e appare come una periferica di tipo SLAVE.
Rispetto a Profibus il controllo permette di scambiare fino a 352 Byte nelle due direzioni suddivisi in 11 blocchi in TX e 11 in RX, anzichè 6, da 16 word ciascuno.
La gestione viene attuata come emulazione Profibus DPSlave se canale ProfiNET attivato e PFB.CFG presente nell'alias di cartella SYS_DIR o FB_DIR.
Per maggiori dettagli, vedere documentazione Profibus.
Da RTE34.15.4 è stata aggiunta la possibilità di gestire delle informazioni SINCRONE (IRT).
Nella definizione di blocco è stato aggiunto l'attributo IRT BLOCK_TO_RBX n [IRT] dove:
•n è il numero del blocco
•IRT specifica che il blocco in arrivo contiene dati IRT
e la nuova keyword IRT_TO n [IRT] dove:
•n è l'indice RR dove inserire il reference time TO
NOTA: Nel caso in cui sia attivo warm_rst.8, tutte le comunicazioni ProfiNET sono disabilitate.
Esempio
in PFB.cfg IRT_TO 211 ; definizione dell'indice RR dove memorizzare il Time Output ... BLOCK_TO_ROBOX 1 IRT O-0 R_32 1001 ; posizione del riferimento del master in [unit] O-4 R_32 1002 ; velocità del master in millesimi di unit/sec [unit/1000/sec] ... in RULE LIT rr_Irt_TO_PN RR(211) LIT r_PosMaster_PN R(1001) LIT r_SpeedMaster_PN R(1002) ... REAL irt_to ; tempo di applicazione dei dati irt [uSec] REAL irt_to_prec ; valore precedente di irt_to [uSec] REAL dtMaster ; delta tempo variazione master [sec] REAL velMaster ; velocità del master [unit/sec] REAL deltaPosMaster ; variazione della posizione del master [unit] INT posMaster ; posizione del master arrivato da profinet [unit] INT posMasterPrec ; posizione precedente del master arrivato da profinet [unit] INT adjMaster ; posizione del master aggiustata al tempo di esecuzione delle rule INT adjMasterPrec ; posizione precedente del master aggiustata su rule [unit] REAL deltaAdjMaster ; variazione di posizione del master [unit] REAL totMaster ; totalizzatore del master [unit] INT mstFlag ; flag per specificare come gestire le informazioni del master ; 0 --> 0x01 Riferimento di velocità presente ; 1 --> 0x02 dimensione della posizione master 1 indica 32 bit, 0 indica 16 bit REAL KconvSpeedPN2US = 0.001 ; costante per converite la velocità del master ricevuta via profinet in velocità in unità/sec ... FUNCTION AdjMasterPosition () ; aggiorna i dati in arrivo da Profinet. irt_to = rr_Irt_TO_PN ; tempo output configurato in pfb.cfg [microsecondi] posMaster = r_PosMaster_PN ; spazio master configurato in pfb.cfg [unità master] ... IF (mstFlag.(0)) ; poszione e velocità master sono froniti direttamente da PN velMaster = r_SpeedMaster_PN * KconvSpeedPN2US ; conversione della velocità in [unità master/sec] ELSE ; gestione se viene fornita solo la posizione del master.. IF ((irt_to <> irt_to_prec) AND (irt_to_prec<>0)) dtMaster = (irt_to - irt_to_prec)/1e6 ; tempo tra ultime due letture (da rule) del Time Output PN in secondi irt_to_prec = irt_to ; calcolo dello spazio del master tra ultime due letture (da rule) IF (mstFlag.(1)) deltaPosMaster = DELTA_ENC32(posMaster, posMasterPrec) ; con posizioni di 32 bit ELSE deltaPosMaster = DELTA_ENC16(posMaster, posMasterPrec) ; con posizioni di 16 bit ENDIF ; calcolo della velcita in [unita master/sec] velMaster = (deltaPosMaster) / dtMaster ENDIF ; aggiorna i dati precedenti posMasterPrec = posMaster irt_to_prec = irt_to ENDIF ; calcola la poszione del master aggiustata alla battuta delle rule adjMaster = posMaster + velMaster * (SYNCH_HW_TIME - irt_to)/1e6 IF (mstFlag.(1)) deltaAdjMaster = DELTA_ENC32 (adjMaster , adjMasterPrec) ; con posizioni di 32 bit ELSE deltaAdjMaster = DELTA_ENC16 (adjMaster , adjMasterPrec) ; con posizioni di 16 bit ENDIF ; aggiorna i dati precedenti adjMasterPrec = adjMaster ; calcolo del master che evolve verso l'infinito ed oltre totMaster = totMaster + deltaAdjMaster END_FUN |