Vai al contenuto
PLC Forum


Parametrizzare I/o Di Fb Da Una Db


Messaggi consigliati

Inserito:

Buongiorno a tutti. Sono un nuovo iscritto al forum ed utilizzo CPU Siemens 314 (compact e non). Ho spesso il problema di avere ingressi es uscite che cambiano indirizzo a seconda della configurazione HW, ma che eseguono sempre la stessa funzione. Ovvero: E0.0 può diventare ad esempio E8.0, ma l'FB (o FC) in cui è utilizzato è lo stesso. Per non modificare ogni volta il codice, avevo pensato di parametrizzare l'FB, prelevando i parametri da una DB di configurazione che andrò a modificare ogni volta sia necessario. Vorrei quindi poter scrivere, suponiamo in DB100.DBW1, come valore, E0.0 ad esempio e poi come parametro dell'FB utilizzare DB100.DBW10. E' possibile? Lo stesso problema ce l'ho ovviamente anche con le uscite. Se no come potrei fare? Sono costretto ad utilizzare i moduli jolly? Grazie a tutti.


Inserita:

Puoi usare lo strumento Step 7 "ricablaggio" . Ti permette di cambiare gli indirizzi da un progetto all'altro.

Ivan Castellaro
Inserita:

Puoi indicizzare gli I/0 nel fb e poi gli cambi il numero di byte da un progetto all'altro:

es:

L  #NrByteE    //Numero byte ingressi

L  8           

* I                // moltiplico per 8 per avere il puntatore a byte

LAR1            // carico nel registro indirizzi 1

U  E [AR1,P#0.7]// INGRESSO Ex.7    (ES. E8.7)

UN E [AR1,P#1.5] // INGRESSO Ex+1.5 (ES. E9.5)

Inserita:

Anchio farei come ivan ... però devo avertirti che in questo modo addio alla crossreference ! ... ma se il tuo codice è testato !!!! ...

ciao

Inserita:

Tempo fa mi consegnarono nell'azienda dove lavoro una macchina con un plc siemens s7 315 programmato così come ha suggerito Ivan (o poco diverso). Magari evita lavoro a voi che fate 100 macchine tutte uguali però penalizzate la leggibilità del software!! :(

Ivan Castellaro
Inserita: (modificato)

Sicuramente con un sistema del genere devi commentare molto....

Tieni conto che anche la velocita' di elaborazione è piu' bassa con l'indicizzato (ci mette piu' tempo)

Un'altra alternativa che mi viene in mente è quella di copiare byte a byte gli ingressi su dei merker o blocco dati,

es:

AUF DB100
L  EB8
T DBB0
L  EB9
T  DBB1

U DBX0.7   // Ingresso E8.7 
UN DBX1.5 // Ingresso E9.5

Modificato: da Ivan Castellaro
Inserita:

Grazie a tutti per le risposte anche se, effettivamente, ognuna presenta qualche inconveniente (cross reference, tempo di esecuzione, leggibilità, ecc.). Per Federico Milan: dire che il codice è testato è una parolona!!! In genere, almeno per quanto mi riguarda, il codice è testato solo fino a quando mi accorgo del contrario!!! :)

Grazie ancora

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