Vai al contenuto
PLC Forum


Sfc 13 - Come gestirlo al meglio


Reverendo bit

Messaggi consigliati

Reverendo bit

Salve ragazzi,

Volevo porre alla vostra attenzione un'aspetto riguardante L'SFC13.

Premesso che ho un sistema con due CPU 315 2DP con ridondanza software, ed un rack I/O in profibus con le IM 153-2 .

Dopo aver letto varie discussioni, ho deciso di usare l'SFC13 per tirare fuori la diagnostica del rack remoto, il richiamo dell'SFC lo eseguo in OB1, ed è il seguente:

CALL "DPNRM_DG"

REQ :=TRUE

LADDR :=W#16#7FD

RET_VAL:=MW32

RECORD :=P#DB82.DBX0.0 BYTE 130

BUSY :=M31.0

La domanda è:

E' piu corretto richiamare L'SFC 13 in OB1, o dovrei richiamarlo in OB82/86?

Nel caso di richiamo in OB1, dovrei inserirlo all'interno del software ridondato oppure no?

Grazie a tutti

Saluti da Reverendo.

Modificato: da Reverendo bit
Link al commento
Condividi su altri siti


Ciao,

Quando un evento di diagnostica arriva al PLC passa per l'OB82 una sola volta.

Se metti il richiamo dell'SFC13 nell'OB82 le variabili in uscita saranno aggiornate per un solo ciclo di scansione.

Non sono espertissimo ma io metterei un flag nell'OB82 come SET e poi userei lo stesso in OB1 o come meglio preferisci per rileggere n volte la diagnostica del dispositivo e solo quando riterrai finito l'evento diagnostico resetterei il flag attivato in OB82.

Mazzoma1 :thumb_yello:

Link al commento
Condividi su altri siti

Reverendo bit

Ciao Mazzoma1,

Allora diciamo che già avevo preso in considerazione una soluzione simile alla tua, ma con una piccola differenza, e cioè:

Quando un evento di diagnostica arriva al PLC passa per l'OB82 una sola volta

Non è propio corretto perché un'evento di errore che richiama L'OB di riferimento due volte, una per l'evento entrante ed una per l'evento uscente.

Avevo pensato di mettere una flag in OB82/86, che viene settato per evento entrante e resettato per evento uscente, e quindi L'SFC13 viene elaborato solo fin quando l'errore non rientra.

Ma cosi facendo non vedo quale sia la differenza tra richiamarlo in OB1 tramite flag settata da OB82/86 o richiamarlo direttamente all'interno degli OB di errore.

La domanda che avevo posto

E' piu corretto richiamare L'SFC 13 in OB1, o dovrei richiamarlo in OB82/86?

Voleva significare se è più corretto richiamarlo sempre o solo quando si scatena l'evento di errore???

Grazie :thumb_yello:

Saluti da Reverendo

Link al commento
Condividi su altri siti

Personalmente non utilizzo l'SFC13 , comunque solitamente io richiamo la diagnostica sia in OB1 sia nel relativo OB di errore.

Poi dipende da cosa gestisci nella diagnostica che funzioni utilizzi ecc.. comunque penso che puoi tranquillamente richiamarla in tutti e due gli OB, male non fa

Link al commento
Condividi su altri siti

Reverendo bit
Poi dipende da cosa gestisci nella diagnostica

Gestisco gli allarmi

Personalmente non utilizzo l'SFC13

io mi sono un po basato sulle discussioni lette nel forum, ma mi piacerebbe capire quali altri possibilità ho per la diagnostica, e capire anche perché è meglio una piuttosto che n'altra soluzione.

Tu cosa usi?

comunque penso che puoi tranquillamente richiamarla in tutti e due gli OB, male non fa

Messaggio ricevuto :thumb_yello:

Saluti Reverendo

Link al commento
Condividi su altri siti

Io scopiazzando varie idee dal forum ho iniziato ad utilizzare l'SFC51.

Con questa funzione però vedo i nodi offline e quelli online e poco altro.. non restituisce informazioni dettagliate riguardo al componente in errore.

Oppure eventualmente utilizzo OB82/86/.. prendendo le informazioni dai dati locali degli OB.

Dipende da cosa ti serve fare, se ti basta sapere se è offline o meno, secondo me vai di SFC51, altrimenti se ti serve una diagnostica più approfondita continua pure con SFC13.

Link al commento
Condividi su altri siti

Ciao Reverendo,

Grazie per la dritta sul doppio richiamo dell'OB82.

Non è propio corretto perché un'evento di errore che richiama L'OB di riferimento due volte, una per l'evento entrante ed una per l'evento uscente.

Come faccio a sapere se l'evento uscente è generato dal nodo che ha generato quello entrante?

Mi spiego meglio: ho sempre analizzato un solo nodo ma nell'ipotesi realistica di avere una rete più o meno complessa dovrei riuscire a capire chi richiama l'OB82 sia in entrata che in uscita.

Grazie

Mazzoma1 :thumb_yello:

Link al commento
Condividi su altri siti

Per capire se l'evento è entrante o uscente utilizza i dati locali dell'OB.

Il byte OB82_EV_CLASS se è uguale a 38hex vuol dire che è un evente uscente, al contrario se è uguale a 39hex è entrante.

Per maggiori info fai F1 sopra l'OB in questione, la guida in linea ti spiega tutto abbastanza bene.

Link al commento
Condividi su altri siti

Reverendo bit

Ciao Mazzoma1

Per capire se l'evento è entrante o uscente utilizza i dati locali dell'OB.

Il byte OB82_EV_CLASS se è uguale a 38hex vuol dire che è un evente uscente, al contrario se è uguale a 39hex è entrante.

Concordo pienamente

Come faccio a sapere se l'evento uscente è generato dal nodo che ha generato quello entrante?

Nei dati locali di OB82/86, ci sono molte informazioni, il byte OB_82_LADDR (vado a memoria) ti restituisce l'indirizzo HW del dispositivo che richiama l'OB di errore.

facendo una AND tra evento ed indirizzo potrai sapere se è entrante o uscente e chi lo genera, naturalmente se hai piu dispositivi da monitorare, devi fare tante AND quante sono le utenze

Per maggiori info fai F1 sopra l'OB in questione, la guida in linea ti spiega tutto abbastanza bene.

I manuali aiutano sempre :thumb_yello:

Saluti

Modificato: da Reverendo bit
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...