aude Inserito: 17 settembre 2010 Segnala Share Inserito: 17 settembre 2010 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 = ErroreIl 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 DB399L DBW40Qualcuno 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 More sharing options...
cagliostro Inserita: 18 settembre 2010 Segnala Share Inserita: 18 settembre 2010 (modificato) Salve,Se provo a richiamare la variabile come se fosse una DB globale Step 7 non lo permette.L DB399.DBW40 = ErroreHo 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 22Qualcuno 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: 18 settembre 2010 da cagliostro Link al commento Condividi su altri siti More sharing options...
cagliostro Inserita: 18 settembre 2010 Segnala Share Inserita: 18 settembre 2010 per quanto riguardaNe 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., Link al commento Condividi su altri siti More sharing options...
aude Inserita: 18 settembre 2010 Autore Segnala Share Inserita: 18 settembre 2010 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 + SP3Per 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 More sharing options...
cagliostro Inserita: 18 settembre 2010 Segnala Share Inserita: 18 settembre 2010 (modificato) Qualche idea da dove possa originararsi il problema?Utilizzo Step 7 V5.4 + SP3Io 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: 18 settembre 2010 da cagliostro Link al commento Condividi su altri siti More sharing options...
cagliostro Inserita: 18 settembre 2010 Segnala Share Inserita: 18 settembre 2010 (modificato) ....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: Modificato: 18 settembre 2010 da cagliostro Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 18 settembre 2010 Segnala Share Inserita: 18 settembre 2010 di solito i dati letti vanno messi da qualche parte , vedo un parametro di nome output addressE' 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 More sharing options...
aude Inserita: 18 settembre 2010 Autore Segnala Share Inserita: 18 settembre 2010 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 More sharing options...
cisio Inserita: 18 settembre 2010 Segnala Share Inserita: 18 settembre 2010 Ho letto in qualche discussione nel Forum che Siemens sconsiglia di utilizzare AR2 perchè utilizzato negli FBper 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 problemiciao Link al commento Condividi su altri siti More sharing options...
cagliostro Inserita: 18 settembre 2010 Segnala Share Inserita: 18 settembre 2010 anche se non capisco perchè per la DB d'istanza che io avevo creato per fare un test il problema non si presentavaIn 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 problemiPersonalmente 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 More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora