Vai al contenuto
PLC Forum


Accesso Ai Dati Di Una Db Di Istanza Fuori Dall'fb E Ar1 , Ar2


aude

Messaggi consigliati

Buona sera , sto utilizzando un FB con relativa DB d'istanza fornito dalla Phoenix per leggere gli ingressi analogici di un modulo da 8 analog input.

In pratica richiamando l'FB i dati letti dal modulo vengono inseriti su variabili della Db d'istanza.

Per leggere i dati dal programma come si può fare?

Se provo a richiamare la variabile come se fosse una DB globale Step 7 non lo permette.

L DB399.DBW40 = Errore

Il manuale della Phoenix non è molto chiaro , riporta un esempio (non inserito in un blocco di codice) dove richiama il dato con AI.Ch[1].Value . Ho supposto che AI fosse il simbolo della DB d'istanza (Ch[1] è un array e Value è un membro di una struttura ) ma niente mi da errore.

L'unico modo che ho trovato è

AUF DB399

L DBW40

Qualcuno sa come si fa ad accedere ai dati di una DB d'istanza all'esterno del suo FB?

Ne approfitto per un altra domando.

Io utilizzo nei puntatori i registri AR1 e AR2 , prima salvo il loro valore , li utilizzo e poi lo ripristino.

Ho letto in qualche discussione nel Forum che Siemens sconsiglia di utilizzare AR2 perchè utilizzato negli FB.

Ho trovato esempi nei manuali Siemens che utilizzano AR1 e AR2 salvandoli e poi ripristinandoli.

Chi mi sa spiegare la questione.

Grazie.

Link al commento
Condividi su altri siti


Salve,

Se provo a richiamare la variabile come se fosse una DB globale Step 7 non lo permette.

L DB399.DBW40 = Errore

Ho supposto che AI fosse il simbolo della DB d'istanza (Ch[1] è un array e Value è un membro di una struttura ) ma niente mi da errore.

Per curiosità ho provato sia con un di DB di istanza avente il simbolico e senza.

Come da codice allegato, il sistema non mi ha dato nessun errore in fatto di sintassi e compilazione del programma.

//Primo modulo IL_AI8
//con DB di istanza indirizzato con simbolico

      CALL  "IL_AI8" , "AI"
       Activate    :=
       Select      :=
       InputAdress :=
       Ready       :=
       Error       :=
       SelectValid :=
       OutputAdress:=
       DiagCode    :=
       AddDiagCode :=
      NOP   0

//Lettura Ch1 Value_PD   

      L     "AI".Ch[1].Value_PD
      T     MW    20


//Secondo modulo IL_AI8
//con DB di istanza senza indirizzamento simbolico

      CALL  "IL_AI8" , DB3
       Activate    :=
       Select      :=
       InputAdress :=
       Ready       :=
       Error       :=
       SelectValid :=
       OutputAdress:=
       DiagCode    :=
       AddDiagCode :=
      NOP   0

//Lettura Ch2 Value_PD   

      L     DB3.DBW   62
      T     MW    22

Qualcuno sa come si fa ad accedere ai dati di una DB d'istanza all'esterno del suo FB?

I modi riportati nei due esempi sono quelli più comunemente usati.

Come avrai potuto notare, nel mio caso ho solo richiamato la FB senza inserire i parametri di IN e OUT, ma non credo che questa possa essere la causa del problema.

Per curiosità, il problema sussiste anche se richiami altre FB non di Phoenix Contact?? Se la risposta è NO, allora proverei a cancellare e riassegnare nuovamente il DB di istanza sempre che tu non abbia già fatto questa prova.

Poi io ho utilizzato la FB scaricata dal sito Phoenix facente parte del tool STEP7 (G4), quindi non so se sia uguale a quella che stai usando........

Modificato: da cagliostro
Link al commento
Condividi su altri siti

per quanto riguarda

Ne approfitto per un altra domando.

Io utilizzo nei puntatori i registri AR1 e AR2 , prima salvo il loro valore , li utilizzo e poi lo ripristino.

Se devi per forza utilizzare in particolare AR2, sicuramente fai la cosa giusta.....

Questo trova conferma anche se trattato brevemente nel manuale di S7, ma anche su quello che considero personalmente un'ottimo testo di riferimento:

"Hans Berger - Automating with STEP7 in STL and SCL"

Non mi dilungo oltre, allegando immagine tratta dal manuale di Berger relativamente all'uso del registro AR2.

immaginekd.png

,

Link al commento
Condividi su altri siti

Buon giorno , e grazie per le risposte.

Ho provato a riassegnare la DB d'istanza , ma il problema rimane.

Il messaggio d'errore è "non sono consentiti accessi a dati di istanza mediante accesso globale a DB".

Ho creato un FB con sua relativa DB di istanza con 4 variabili.

Ho provato ad accedere alle variabili da OB1 , nessun problema. Come da te segnalato.

A questo punto mi viene il dubbio sull'FB71 che mi hanno inviato ieri da Phoenix. Proverò a risentirli....

Qualche idea da dove possa originararsi il problema?

Utilizzo Step 7 V5.4 + SP3

Per quanto riguarda AR1 e AR2 normalmente li utilizzo all'interno di un FC e quindi se capisco bene quanto riportato dal manuale che hai allegato non dovrebbero esserci problemi.

Link al commento
Condividi su altri siti

Qualche idea da dove possa originararsi il problema?

Utilizzo Step 7 V5.4 + SP3

Io uso V5.4 con SP5, ma anche se non ricordo le migliorie o le correzioni apportate con i nuovi SP, escluderei categoricamente che possa essere un problema di service pack mancante/i.

Lo conferma anche il fatto che scrivendo ex novo una FBxx con il suo DBxx, accedi senza problemi ai dati di quest'ultimo (DBxx) da OB1.

Se eventualmente mi vuoi girare il tuo indirizzo mail privatamente sul servizio MP di PLC Forum posso mandarti in allegato la FB71 che io ho usato nel codice inserito nel precedente post.

Come da altre discussioni, non ho la possibilità di allegare un semplice progetto contenente la sola FB71, perchè l' upload di PLC Forum mi limita gli allegati solamente a 553byte circa, per cui.......

Per quanto riguarda AR1 e AR2 normalmente li utilizzo all'interno di un FC e quindi se capisco bene quanto riportato dal manuale che hai allegato non dovrebbero esserci problemi.

Confermo.

Modificato: da cagliostro
Link al commento
Condividi su altri siti

....altro controllo da fare è quello di verificare se è presente il segno di spunta nel campo denominato:

"Segnala come errori accessi a Db di istanza".

Questo campo lo trovi nel menu Strumenti==>Impostazioni==>Generale==>Ulteriori Opzioni, che puoi aprire entrando da un qualsiasi blocco programma.

Per chiarezza allego immagine:

immaginefbc.png

Modificato: da cagliostro
Link al commento
Condividi su altri siti

di solito i dati letti vanno messi da qualche parte , vedo un parametro di nome output address

E' probabile che qui dovrai passare un puntatore nella forma

p#DBx.DBXy.0 byte NumeroDibytes .Questa area di memoria la potrai leggere

ciao

walter

Link al commento
Condividi su altri siti

Grazie Cagliostro , il problema è nella spunta del campo denominato:

"Segnala come errori accessi a Db di istanza".

Tolta la spunta , eliminato il problema , anche se non capisco perchè per la DB d'istanza che io avevo creato per fare un test il problema non si presentava.

Grazie ancora.

Link al commento
Condividi su altri siti

Ho letto in qualche discussione nel Forum che Siemens sconsiglia di utilizzare AR2 perchè utilizzato negli FB

per l'esattezza non si deve usare ALL'INTERNO di un FB, perchè è già usato dallo stesso per il suo db di istanza (o qualcosa del genere)

al di fuori si può usare senza problemi

ciao

Link al commento
Condividi su altri siti

anche se non capisco perchè per la DB d'istanza che io avevo creato per fare un test il problema non si presentava

In effetti quando ti ho postato il suggerimento nel messaggio #6, non ero così convinto che fosse la soluzione certa al problema.

Proprio perchè, l'errore non si manifesta con la lettura dei dati di un DB di istanza in OB1 come da tuo precedente test.

Eventualmente per verifica potresti rimettere la spunta nel campo "Segnala come errori....." e nel test da te esguito con la FBxx creata leggere i dati del DB di istanza riferiti però ad un array.

Non so se nel test hai fatto questo.

per l'esattezza non si deve usare ALL'INTERNO di un FB, perchè è già usato dallo stesso per il suo db di istanza (o qualcosa del genere)

al di fuori si può usare senza problemi

Personalmente ritengo che se per forza di cose devi far uso di AR2 all'interno di FB, il divieto di impiegarlo non sia assoluto, basta prendere le preacauzioni tratte dal documento allegato ed evidenziate in giallo, inserite nel messaggio#3.

Qualcosa viene trattato anche se in modo abbastanza sommario nella documentazione relativa a STEP7.

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