Vai al contenuto
PLC Forum


Db Globale Ed Interazione Esterna


Nesus

Messaggi consigliati

Salve a tutti!

Ho un nuovo quesito da niubbo da porvi :)

Nel mio programma è presente un DB1 Globale dove sono inserite varie variabili, per esempio:

db1.dbx 1.0 ---> chiudi_I1

db1.dbx 1.1 ---> apri_I1

da quanto ho capito tramite un applicazione esterna al plc riescono a modificare lo stato del campo interno al DB1 " Valore Attuale " per esempio da FALSE metterlo in TRUE e viceversa questo in modo da far pilotare il PLC dall'esterno...

se per esempio scrivo nell' OB1

AUF DB1 // è necessario comunque richiamare il DB1?

U DB1.DBX 1.0

= A 1.0

e mettendo in modalità " Controllo " perchè se modifico il parametro del " Valore Attuale " da FALSE in TRUE dentro il DB1 ( db1.dbx 1.0 ) non vedo cambiare lo stato dentro OB1 in " Controllo " ?

Spero di essermi spiegato con chiarezza :) grazie per l'aiuto.

Link al commento
Condividi su altri siti


AUF DB1 // è necessario comunque richiamare il DB1?

Se scrivi solo:

U DBX1.0

allora devi prima aprire (o essere sicuro che sia aperto) il DB giusto.

Nell'istruzione:

U DB1.DBX1.0

è già compresa anche l'istruzione di apertura del DB.

e mettendo in modalità " Controllo " perchè se modifico il parametro del " Valore Attuale " da FALSE in TRUE dentro il DB1 ( db1.dbx 1.0 ) non vedo cambiare lo stato dentro OB1 in " Controllo " ?

Perché i valori che scrivi nella colonna "Valore Attuale" (visibile solo in in modalità "Dati") vengano presi in carico, si deve anche scaricare il DB nel PLC.

Questo significa che non modifichi solo un dato, ma che sovrascrivi tutte le variabile del DB.

Solo i DB di istanza vengono aperti con un editor che permette anche di modificare singole variabili.

Per modificare valori come nel tuo caso, di solito non si scrive il valore direttamente nel DB, ma in una VAT (Controlla e comanda variabili).

Link al commento
Condividi su altri siti

Nell'istruzione:

U DB1.DBX1.0

è già compresa anche l'istruzione di apertura del DB.

E' Vero! :D non avevo fatto proprio caso che scrivendo db1.dbx viene chiamato automaticamente ehehe

Un'altra curiosità: in termini di velocità del ciclo comporta qualcosa ( tralasciando il fatto che è errato come ragionamento ) se io scrivo

// 1° modo

AUF DB1

U DBX 1.0

U DBX 1.1

U DBX 1.2

=M 1.1

OPPURE ogni singolo

// 2° modo

U DB1.DBX 1.0

U DB1.DBX 1.1

U DB1.DBX 1.2

=M 1.1

cioè vengono elaborate alla stessa maniera o gli comporta un rallentamento nel secondo modo rispetto al primo?

comunque ho fatto un pò di prove e sono riuscito a far funzionare la cosa che dicevo prima, il tutto perchè ho scritto un pezzo di programma ( non corretto ) che resettava in continuazione alcuni bit noti del DB1 quindi con le prove che facevo restavano sempre in FALSE, ora invece, escludendo quel RESET, l' ho testato insieme al collega che si occupa dell'interfacciamento esterno e tramite delle routine di test si collega al DB1 ( globale ) e riesce a modificare il campo "Valore Attuale".

Perché i valori che scrivi nella colonna "Valore Attuale" (visibile solo in in modalità "Dati") vengano presi in carico, si deve anche scaricare il DB nel PLC.

Questo significa che non modifichi solo un dato, ma che sovrascrivi tutte le variabile del DB.

Cosa intendi con "Questo significa che non modifichi solo un dato, ma che sovrascrivi tutte le variabile del DB" ? Perchè nel "Valore attuale" sono suddivisi bit per bit e quindi hai la possibilità di modificarli singolarmente sbaglio?

Per modificare valori come nel tuo caso, di solito non si scrive il valore direttamente nel DB

sisi sono andato direttamente lì per vedere cosa accadeva visto che devo testare i comandi che arrivano da fuori e volevo ripercorrere tutto il tragitto di ogni singolo comando

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