Vai al contenuto

Errore CAN Rx message lost con FB gestione CANOpen

Home Forum Programmazione IEC 61131 (LogicLab) Errore CAN Rx message lost con FB gestione CANOpen

Stai visualizzando 5 post - dal 1 a 5 (di 5 totali)
  • Autore
    Post
  • #81225
    Anonimo
    Inattivo

    Stò usando il FB CANOpenMaster (non la v1 ma la precedente) per cui ho appena acquistato l’attivazione.

    La comunicazione funziona sempre (scrivo delle variabili su controller di motori stepper per azionarli) con successo; tuttavia sempre a 15 min dall’accensione rilevo ad ogni coumincazione il seguente errore:

    02/04/2025, 20:19:14.190 [SFR050][10000] CAN Rx message lost

    Non mi interessa molto perchè la Tx funziona sempre però volevo capire se fosse legato all’utilizzo di un codice nuovo di attivazione su di una funzione vecchia.

    O se in generale le viene in mente qualcosa…

    #81228
    Sergio Bertana
    Amministratore del forum

    L’errore a cui fai riferimento indica che il controller CAN su ricezione di un messaggio ha trovato il suo buffer di ricezione pieno quindi ha perso il messaggio.

    Il fatto che ti capiti dopo 15 minuti dall’accensione si collega al tempo di funzionamento in demo del FB che è di 15 minuti. Infatti dopo questo tempo il FB non estrae più i dati dal buffer d i ricezione CAN.

    Ho modificato il FB CANOpenMaster_v1 in modo che anche dopo il tempo di funzionamento demo estragga comunque i dati dal buffer di ricezione CAN in modo da evitare l’errore. La versione modificata del FB sarà distribuita con il nuovo package di librerie che per il momento è disponibile nella versione beta Pck055a05_.

    Mi lascia perplesso che dici ” la Tx funziona sempre” questo mi fà pensare che tu abbia correttamente licenziato il FB quindi non dovrebbe essere lo scenario che ho descritto. Ha provato a vedere con la console di spionaggio che informazioni ti ritorna il FB ?

    Per aeesere sicuro che il codice di licenza sia corretto, devi verificare il ritorno della funzione SysPCodeVerify se torna TRUE il codice di licenza è corretto.

    #81269
    Anonimo
    Inattivo

    La funzione SysPCodeVerify ritorna TRUE quindi il codice di licenza è corretto, poi ho notato che in realtà non sono 15 min, ad esempio mi è capitato dal min 12 in poi…

    Ora provo ad utilizzare la versione v1 e vedo se con quella va bene.

    L’unica cosa è il PHBeatTime, si può lasciare a 0 e quindi non utilizzarlo?

    Con la versione che stò utilizzando (non la v1) non c’è questo parametro e quindi non vorrei usarlo.

    #81274
    Sergio Bertana
    Amministratore del forum

    Il parametro PHBeatTime serve a gestire il meccanismo di Consumer heartbeat. Impostando un tempo nel parametro PHBeatTime (Producer Heartbeat Time, in millisecondi), il nodo viene configurato per controllare la ricezione del messaggio dal nodo master (Registro 1016h Consumer Heartbeat Time). Se ogni tempo impostato +50mS non viene ricevuto il messaggio il nodo slave và in errore, il comportamento in caso di errore può essere configurato.

    Questo meccanismo permette di settare ad una condizione di sicurezza predefinita il dispositivo di nodo slave nel caso non venga ricevuto dal nodo master il messaggio di heartbeat, condizione che potrebbe verificarsi se si interrompe la connessione CAN tra il master ed il dispositivo di nodo.

    Ora visto che non la stai utilizzando puoi sicuramente lasciarlo settato a 0. Ma attenzione se non utilizzi l’heartbeat nel caso di sconnessione del nodo dal master le eventuali uscite digitali sul modulo rimarranno attive.

    #81277
    Anonimo
    Inattivo

    Ho modificato il programma utilizzando la versione CANOpenMaster_v1 dall’ultimo package di librerie distribuito Pck055a040 e la gestione del CANopen è PERFETTA.

Stai visualizzando 5 post - dal 1 a 5 (di 5 totali)
  • Devi essere connesso per rispondere a questo topic.