Vai al contenuto
PLC Forum


CPU in STOP


pedropony

Messaggi consigliati

Buongiorno ho un problema con una macchina appena installata, a seguito di un evento safe (fungo di emergenza, protezioni aperte, ecc.) a volte la CPU va in STOP.

 

image.png.86258d405634f3ef0e767462bdedd32a.png

 

image.png.d34db014333e2b3a93252966c774a296.png

 

FB50011 che "sembra" essere l'origine del problema non è utilizzato nel programma, non riesco ad eliminarlo perché non si può..

Grazie

 

Link al commento
Condividi su altri siti


La causa sembrerebbe essere la corruzione dei dati nel blocco programma "Safety".

Se ci sono dati corrotti è ovvio che la CPU vada in Stop.

Link al commento
Condividi su altri siti

Se non l'hai già fatto ti suggerirei un ricompilazione completa del progetto con successivo download.

In alternativa potresti anche provare a cancellare l'F-runtime group e ricrearlo nel Safety Administrator e poi compili e ricarichi tutto.

 

 

 

Link al commento
Condividi su altri siti

@beppeconti ho provato a ricompilare hardware e software completo ma non ho risolto

@Mattia Spoldi si mi sono accorto che alzo delle uscite "normali" nel programma safe, cosa che in altri progetti non faccio. Se questa potrebbe essere l'origine del problema provo a spostarle

 

Grazie a tutti

Link al commento
Condividi su altri siti

spiego brevissimamente come viene elaborato il programma safety, nel caso non lo sapessi.

 

Il programma safety viene compilato 2 volte, una volta in un modo che chiameremo(male)  "diritto", mentre la seconda volta viene compilato in una maniera "doppiamente negata", perdona i termini poco tecnici, ma al momento mi sfuggono i nomi.

poi, al momento dell'esecuzione vengono eseguite entrambi i risultati delle 2 compilazioni, ovviamente devono dare in uscita lo stesso risultato, se per un qualsiasi motivo, che può essere memoria corrotta, hacker che ti si attaccano al processore del plc, il plc ti dice che ci sono dei dati corrotti e si pianta in stop

Un altro motivo, molto più banalmente, usi dati non safety nel programma safety, questi dati per nmila motivi tra un esecuzione e l'altra potrebbero variare e il safety trova una corruzione dei dati con il risultato sopra.

 

La miglior soluzione, secondo me, è usare i 2 blocchi di pre e post processing, dichiari 2 fc o fb, e dentro il pre-processing prendi tutti i vari dati non safe da leggere e li appoggi su dei dati ad uso esclusivo safe, nel post-processing, fai l'opposto, prendi tutti i dati elaborati dal safe che non vano su uscite o memorie safe e li scrivi sulle tue uscite non safe 

 

ti allego un esempio fatto male,

 

l 2 merker sono i tuoi ingressi e uscite non safe, il db è quello ad uso esclusivo del safety, 

dentro il safety scrivi il tuo programma usando il db e ti dimentichi delle memorie originali, in questo modo non dovresti avere corruzione dei dati

image.thumb.png.b012241894f53309720d35bdfe48d5b8.png

 

Spero si capisca qualcosa di quello che ho scritto

 

 

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...