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




Plc S7 315 2dp


Messaggi consigliati

Inserito:

Salve ragazzi. Guardate questo semplice blocco:

CALL FC 7

pb :=M15.0

onof:=DB20.DBX0.0

all'interno dell'fc7 ho scritto semplicemente: U#pb

S#onof

cioè porto ad 1 pb e setto onof che rimane settato anche se poi porto a zero pb. Questo mi funziona solo se al posto di db20.dbx0.0 ci metto solo dbx0.0 aprendo il db20 prima di effettuare la call, perchè se ci lascio db20.dbx0.0 appena porto a zero #pb va a zero anche db20.dbx0.0. Cosa mi sfugge?

Grazie


Inserita:

...hai dichiarato le variabili In/Out ???

Ciao

Piergiovanni

Inserita:

....guarda...

nel dubbio ho provato(proprio con una 315-2DP) e... a me funziona senza problemi!

ciao

Piergiovanni

Inserita:

Grazie per la risposta. Non so che dirti a me quel bit va sempre a zero appena faccio cadere #pb.

Ho risolto facendo:

auf db20

call fc 7

pb=m10.0

onof=dbx0.0

così funziona anche a me ma se ci metto db20.dbx0.0 mi da il problema che ti dicevo.

Bohhh

Inserita:

La variabile "pb" deve essere dichiarata come "in".

La variabile "onoff" deve essere dichiarata come "in_out".

Le variabili locali utilizzate all'interno delle FC devono sempre essere inizializzate altrimenti assumono valori casuali.

Le variabili dichiarata "in" o "in_out" vengono inizializzate con il valore dei parametri all'ingresso della FC: se il programma nell'FC modifica le variabili "in_out" all'uscita troverai il valore modificato altrimenti il valore con cui si è entrati.

Se la variabile "onoff" viene dichiarata solamante "out" per quanto risulta il codice della FC da te scritto il risultato è impredicibile. Mi spiego in questo caso:

all'ingresso dell'FC

"pb" = 1 ---> dal codice della FC sicuramente "onoff"=1 quindi anche db20.dbx0.0

ora all'ingresso dell'FC

"pb" = 0 --> la variable locale "onoff" assume un valore casuale che dipende dallo stack logico delle variabili locali e non viene ad assumere il valore logico di db20.dbx0.0 dell'ingresso che ripeto avviene solamente se viene dichiarata "onoff" come variabile "in_out".

Se hai fatto ciò e non funziona allora la tua CPU (sempre che non ci sia altro codice che scriva sopra a db20.dbx0.0) potrebbe essere stata contagiata da qualche ectoplasma... :ph34r:

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