Vai al contenuto
PLC Forum


Problema Function Block (Fb)


miza

Messaggi consigliati

Salve a tutti,

premetto che sono abbastanza neofita sulla programmazione per S7, in passato ho usato molto spesso software come codesys per PLC Wago oppure classico ladder per PLC di marche più economiche.

Da qualche giorno sto affrontando la programmazione di alcuni S7-1200 tramite TIA Portal, mi sono però subito trovato di fronte ad un problema apparentemente banale ma che non capisco come risolvere e da cosa può essere causato.

Ho creato un blocco di programma di tipo FB.

Ho scelto di crearlo non ottimizzato ma standard (mi piacciono gli standard).

Tale blocco è un semplice gestore di relè passo passo a fronte di più tipi di comando in ingresso.

Sta di fatto che ho fatto la FB, ho creato una istanza e l'ho provata scaricandola su un plc di prova, tutto bene, tutti gli ingressi provocano una risposta in uscita.

Il problema però si è verificato quando ho creato più istanze (esattamente 13 ma il problema si verifica già con 2).

Tutte singolarmente funzionano ma il problema nasce quando attivo una variabile (variabile di tipo globale definita in un db) che tutte le istanze hanno come ingresso.

Quel che accade è che solo la prima istanza esegue tale comando, tutte le altre no.

E' un po' come se le altre istanze ignorassero l'ingresso.

A questo punto mi chiedo, cosa sto sbagliando?

Vado a prevedere che stia tralasciando qualcosa.

Per curiosità ho provato con un'altra FB, molto molto semplice.. ma anche con questa solito problema, se metto la stessa variabile in ingresso a tutte le istanze che creo (anche solo due) solo la prima viene eseguita.

Premetto che la versione di TIA portal che sto usando è la V11 con Sp1.

Ringrazio chiunque sia in grado di aiutarmi, anche perchè attualmente sono molto spiazzato da questo comportamento.

Buon proseguimento di giornata.

Link al commento
Condividi su altri siti


Ma ad ogni richiamo della FB associ un diverso DB di istanza oppure usi sempre lo stesso? Se usi sempre lo stesso DB di istanza, è ovvio che ti capiti quello che descrivi.

Link al commento
Condividi su altri siti

Buongiorno Batta,

ad ogni istanza ho un DB differente, non uso sempre lo stesso. Ho quindi 13 DB di istanza, la FB è chiamata "Cmd_Rpp_v1" ed i db sono:

"Cmd_Rpp_V1_DB_01"

"Cmd_Rpp_V1_DB_02"

"Cmd_Rpp_V1_DB_03"

"Cmd_Rpp_V1_DB_04"

..

..

"Cmd_Rpp_V1_DB_13"

Aggiungo che le istanze le ho richiamate tutte nello stesso blocco organizzativo, una istanza per ogni segmento (quindi 13 segmenti).

Inoltre oggi ho fatto un'altra prova (con esito negativo), prima dei 13 segmenti che richiamano le 13 istanze ho fatto un segmento dove tramite il comando che sarebbe comune a tutte le istanze comando 13 bobine con 13 variabili locali, collegate ogniuna ad una istanza, così che:

il comando in comune sia presente solo 1 volta

questo gestisce 13 variabili diverse locali

ogniuna di queste è associata ad una sola istanza

Il problema però si ripresenta.. quando attivo la variabile che deve comandare tutti i blocchi, le 13 variabili temporanee comutano il loro stato da 0 ad 1 come è logico che facciano, ad occhio nel codice vedo che tutte le variabili in ingresso alle istanze sono attive... ma commuta solo la prima istanza e le altre no.

Ovviamente comandando singolarmente le variabili temporanee, tutte le istanze commutano correttamente.

Ah, non ho detto che il richiamo delle istanze l'ho scritto in KOP mentre il codice della FB in SCL (a me molto più comodo da usare).

Qualche idea?

Sto perdendo le speranze..

Link al commento
Condividi su altri siti

Non è che, anzichè dichiarare la variabile come input l'hai dichiarata in/out?


Nell'FB usi soltanto variabili locali (e quindi dichiarate nelle interfaccie del blocco) o anche variabili globali?


Cosaintendi per 'variabili temporaee'?

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...