Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Blocchi Parametrizzati - Ho avuto qualche difficoltà


Messaggi consigliati

van der graaf
Inserito:

19 marzo 2009

Mi è capitata una cosa strana per due volte su una cpu 313.

FC parametrizzati per eseguire in 20 diversi contesti con diverse variabili la stessa struttura di programma: un banalissimo flip flop, set reset, merker bistabile o come si vuole chiamarlo funzionante con diverse condizioni di ingresso. Il programma è stato progettato da altri e funziona su diverse macchine.

In due macchine di cui mi sono occupato è invece successo che dei 20 richiami 2 non funzionavano. All'interno del programma richiamato c'erano solo variabili parametrizzate (escludo quindi la presenza di variabili non parametrizzate presenti in tutte le elaborazioni). Copiata la struttura del programma parametrizzato in un altro nuovo blocco di programma, sostituito le variaibili parametrizzate con le variabili dell'intestazione del richiamo, la cosa ha cominciato a funzionare. Ovviamente ho controllato parecchio la presenza di errori di sintassi senza trovarne, ho controllato la corretta origine delle variabili di intestazione, credo di aver fatto quello che normalmente si fa quando si fa un debug. Non sono riuscito a darmi una ragione. Qualcuno ha trovato problemi simili in FC parametrizzati ? Posso aver commesso qualche banale errore da principiante.

Grazie VDG


Inserita:

A me capitava una cosa simile. Non ricordo bene il modello di cpu, forse 313C.

In blocchi FC, passando parametri INT, e dichiarandoli nei richiami in modo esteso ( es DB22.DBW100)a volte non mi aggiornava i valori. Ho dovuto aprire il DB all'interno del FC, e fuori passsare solo l'indirizzo word (es DBW100).

van der graaf
Inserita:

Ma allora è proprio vero che ci sono cose strane ?

Possibile??

VDG

Inserita:

Come dichiari le variabili? Dipende molto da come sono usate se in, out oppure in-out

Inserita:

hai fatto le chiamate agli fc?

Sei sicuro di non avere superato l'indirizzamento delle variabili locali?

van der graaf
Inserita:

Riporto quanto scritto nel programma:

Richiamo

CALL FC108

input:= DB50.DBX4.6

out := M250.0

aux := DB100.DBX4.0

fp := DB100.DBX0.0

enable: M50.1

FC108:

U #input

FP #fp

= L0.0

U L0.0

Un #out

S #aux

U L0.0

U #out

R #aux

U #aux

= #out

UN #enable

U #aux

R #aux

Programma brevissimo: è quasi più lunga l'intestazione del blocco. KEN - STEU se avete voglia di dare un occhiata.....

Grazie Vdg

Inserita:

aux e FP come sono dichiarati? Aux penso che debba essere in-out per funzionare

Inserita:

Anche "out" DEVE essere dichiarata come IN_OUT.

Nel caso fosse dichiarata come OUT, ci sarebbe da chiedersi perché a volte funziona, non perché a volte non funziona.

Inserita:

Per fare un flip-flop però non tirerei in ballo una fc. Basta un fronte di salita ed un or esclusivo.

Esempio:

U   DB50.DBX4.6
FP  DB100.DBX0.0
X   M250.0
=   M250.0

Inserita: (modificato)

Salve Batta, per cortesia mi potresti spiegare perchè bisogna perforza dichiarate "OUT" IN_OUT

Ciao e Grazie

Modificato: da destinator
Inserita:

d'accordo con batta, la variabile IN_OUT funziona in aggiornamento INDIPENDENTEMENTE dalla CPU e dal suo firmware.

mi è capitato che qualche CPU gestisca in maniera poco chiara i parametri dichiarati solamente come OUT.

siccome è capitato tanto tempo fa, mi sono dato come standard la gestione su IN_OUT, quindi ne posso confrontare lo stato all'interno del blocco senza problemi, idem per la gestione esterna al blocco parametrizzato (se serve)

pigroplc

Inserita:
Salve Batta, per cortesia mi potresti spiegare perchè bisogna perforza dichiarate "OUT" IN_OUT

Perché viene interrogato lo stato prima di averlo assegnato.

Inserita:

Grazie per le risposte , per vedere se ho capito bene provo a spiegare la cosa con parole mie.

Visto che il parametro "Out" si appoggia in una variabile locale , di conseguenza il valore che

può avere il parametro fino al momento della sua scrittura all'interno della fc dipende da cosa

è stato scritto dalle funzioni eleborate prima della funzione in questione. Se invece il parametro

"Out" viene dichiarato come "IN_OUT" il valore assunto dal parametro "OUT" sarà corrispondente al valore della

memoria assegnata al parametro(M250.0). Ed infine è corretto dire che lo stesso problema non si presenta se si utilizza

una funzione FB dato che i parametri sono appoggiati al db di istanza?

Saluti e ancora grazie

Inserita:

Proprio così.

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