gluca2 Inserito: 16 ottobre 2009 Segnala Inserito: 16 ottobre 2009 Salve a tuttiSto cercando di realizzare un FB parametrizzato che mi gestisca la comunicazione con i pannelli operatore (inversione byte + significativo con byte - significativo, acquisizione allarme, etc. etc)Per fare questo ho come parametri d'ingresso circa 14 DINT che utilizzo per indicare numero di DB, word di partenza e quantità di word delle aree dati che devo elaborare. Otre a questi, ho come ingressi 3 bool, 3 s5time e 3 timer. Come uscite ho 3 bool.Mi accade una cosa che non riesco a spiegarmi: caricando il programma in PLCSIM la cpu va in stop. La diagnostica dice “errore di lunghezza di campo in lettura” e mi rimanda all’interno del FB dove l’istruzione che trovo è appunta la lettura di una variabile d’ingresso (esempio L #AlarmPLC_DB_NO). La cosa per me strana è che con alcune variabili, le prime dell’elenco nell’interfaccia l’errore lo dà solo la seconda volta che richiamo la variabile, mentre con quelle più in fondo nell’elenco l’errore viene dato già al primo richiamo.Se appoggio le variabili d’ingresso a una temp all’inizio del FB, e poi nel corso del programma utilizzo queste ultime nessun problema, ma mi sembra una soluzione un po’ raffazzonata e non mi aiuta a capire cosa genera realmente il problema. Oltre al fatto che l’errore me lo dà anche quando utilizzo i 3 timer, che non credo sia possibile appoggiarle a delle temp.Sono sicuro che sono io che non sto tenendo conto di qualcosa, qualcuno mi potrebbe aiutare a capire cosa?
Federico Milan Inserita: 2 dicembre 2009 Segnala Inserita: 2 dicembre 2009 Premesso che non ho mai usato con impegno la simulazione, anzi non l'ho mai trovata utile per questini hardware ... Premesso anche che bisognerebbe vedere il software perchè dalla tua descrizione non si capisce molto il problema, ... mi verrebbe in mente di cintrollare la configurazione hardware, ossia lettura o scrittura di periferia non definita, per i timer, utilizzzo di timer non definiti es > 128, ...ciao
Gianmario Pedrani Inserita: 3 dicembre 2009 Segnala Inserita: 3 dicembre 2009 Dovresti anche specidicare che tipo di versione di step7 stai usando e che tipo di versione di plcsim stai utilizzando, tieni presente che a me è capitato che creando una fb parametrizzata, con i puntatori nel plcsim unzionava, mentre nella cpu no, poi ho scoperto che il software del plcsim, mi salvava il valore del puntaotre quando usciva dalla funzione, mentre nella cpu questo non accadeva.. questo mi è accaduto con una versione di plcsim un pò dadata..
gluca2 Inserita: 4 dicembre 2009 Autore Segnala Inserita: 4 dicembre 2009 (modificato) Allora la versione di step7 che uso è la V5.4 + SP4 mentre PLCSIM è alla versione V5.3 + SP1.La simulazione sono costretto ad usarlo perchè, approfittando del tempo disponibile causa crisi, sto approfittando per mettere a punto qualche FB da usare come standard. Da quello che ho potuto verificare fin'ora non credo che sia un problema di hardware.Esempio: Se utilizzo un parametro d'ingresso all'interno del mio codice la prima volta che lo utilizzo non mi dà problemi, mentre se lo utilizzo 2 o più volte, ovviamente sempre in lettura, mi manda la cpu in stop con l' “errore di lunghezza di campo in lettura” che riportavo nel mio post precedente. Sembra quasi che , se una variabile di ingresso viene usato più di due volte step 7 faccia fatica a riconoscerla la seconda volta.Ho risolto appoggiando tutte le variabili d'ingresso come temp all'interno delle FB e non utilizzando timer all'interno del blocco. Mi rimaneva la curiosità di questo comportamento, e non appena ne avrò la possibilità farò qualche altra prova.Grazie comunque per l'attenzione dimostrata.CiaoGianluca Modificato: 4 dicembre 2009 da gluca2
mubeta Inserita: 12 marzo 2010 Segnala Inserita: 12 marzo 2010 Sarebbe più proficuo che postassi il codice che non funziona, perchè non ci sono limiti da parte degli FB/FC se non quelli relativi alle risorse della CPU usata ed alla configurazione hardware.Preferisco pensare che l'errore sia nel codice che hai scritto, ma non c'è risposta possibile senza poterlo leggere.Viceversa, se non vuoi postare il codice per riservatezza, sarebbe più indicato un Forum frequentato da indovini.
gaserma Inserita: 12 marzo 2010 Segnala Inserita: 12 marzo 2010 Anch'io non ho l'abitudine di usare PlcSim , comunque tutte le volte che sono incappato in un “errore di lunghezza di campo in lettura” con il tipo di dati corretto e con la Cpu reale, il problema era relativo all'aggiornamento della DB di istanza, non so se anche nel PlcSim possa essere un discorso valido, ma se fossi in te, dopo aver controllato il tipo di dati in ingresso e uscita dalla FB, cancellerei la chiamata del DB da parte del FB in modo da forzare la richiesta di assegnazione, dopo aver salvato l'OB1, caricherei il tutto nel simulatore.
gluca2 Inserita: 13 marzo 2010 Autore Segnala Inserita: 13 marzo 2010 Visto che il post è stato riesumato posto qui la soluzione ottenuta tramite l'assistenza Siemens.Io utilizzavo un FB con il proprio Db di istanza. All'interno di questo utilizzavo i due registri puntatori AR1 e AR2, oltre L'errore era proprio questo: all'interno di un FB non si può usare il registro AR2, che visto con il senno di poi è anche ovvio. Ogni volta che leggevo/scrivevo una variabile del Db di istanza o una variabile di un altro DB tramite AR2 scombussalavo i registri dei puntatori.CiaoGianluca
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