van der graaf Inserito: 19 marzo 2009 Segnala Inserito: 19 marzo 2009 19 marzo 2009Mi è capitata una cosa strana per due volte su una cpu 313. FC parametrizzati per eseguire in 20 diversi contesti con diverse variabili la stessa struttura di programma: un banalissimo flip flop, set reset, merker bistabile o come si vuole chiamarlo funzionante con diverse condizioni di ingresso. Il programma è stato progettato da altri e funziona su diverse macchine. In due macchine di cui mi sono occupato è invece successo che dei 20 richiami 2 non funzionavano. All'interno del programma richiamato c'erano solo variabili parametrizzate (escludo quindi la presenza di variabili non parametrizzate presenti in tutte le elaborazioni). Copiata la struttura del programma parametrizzato in un altro nuovo blocco di programma, sostituito le variaibili parametrizzate con le variabili dell'intestazione del richiamo, la cosa ha cominciato a funzionare. Ovviamente ho controllato parecchio la presenza di errori di sintassi senza trovarne, ho controllato la corretta origine delle variabili di intestazione, credo di aver fatto quello che normalmente si fa quando si fa un debug. Non sono riuscito a darmi una ragione. Qualcuno ha trovato problemi simili in FC parametrizzati ? Posso aver commesso qualche banale errore da principiante.Grazie VDG
floppydisco Inserita: 19 marzo 2009 Segnala Inserita: 19 marzo 2009 A me capitava una cosa simile. Non ricordo bene il modello di cpu, forse 313C.In blocchi FC, passando parametri INT, e dichiarandoli nei richiami in modo esteso ( es DB22.DBW100)a volte non mi aggiornava i valori. Ho dovuto aprire il DB all'interno del FC, e fuori passsare solo l'indirizzo word (es DBW100).
van der graaf Inserita: 19 marzo 2009 Autore Segnala Inserita: 19 marzo 2009 Ma allora è proprio vero che ci sono cose strane ?Possibile??VDG
ken Inserita: 19 marzo 2009 Segnala Inserita: 19 marzo 2009 Come dichiari le variabili? Dipende molto da come sono usate se in, out oppure in-out
STEU Inserita: 20 marzo 2009 Segnala Inserita: 20 marzo 2009 hai fatto le chiamate agli fc?Sei sicuro di non avere superato l'indirizzamento delle variabili locali?
van der graaf Inserita: 20 marzo 2009 Autore Segnala Inserita: 20 marzo 2009 Riporto quanto scritto nel programma: RichiamoCALL FC108input:= DB50.DBX4.6out := M250.0aux := DB100.DBX4.0fp := DB100.DBX0.0enable: M50.1FC108:U #inputFP #fp= L0.0U L0.0Un #outS #auxU L0.0U #outR #auxU #aux= #outUN #enableU #auxR #aux Programma brevissimo: è quasi più lunga l'intestazione del blocco. KEN - STEU se avete voglia di dare un occhiata.....Grazie Vdg
ken Inserita: 21 marzo 2009 Segnala Inserita: 21 marzo 2009 aux e FP come sono dichiarati? Aux penso che debba essere in-out per funzionare
batta Inserita: 23 marzo 2009 Segnala Inserita: 23 marzo 2009 Anche "out" DEVE essere dichiarata come IN_OUT.Nel caso fosse dichiarata come OUT, ci sarebbe da chiedersi perché a volte funziona, non perché a volte non funziona.
batta Inserita: 23 marzo 2009 Segnala Inserita: 23 marzo 2009 Per fare un flip-flop però non tirerei in ballo una fc. Basta un fronte di salita ed un or esclusivo.Esempio:U DB50.DBX4.6 FP DB100.DBX0.0 X M250.0 = M250.0
destinator Inserita: 24 marzo 2009 Segnala Inserita: 24 marzo 2009 (modificato) Salve Batta, per cortesia mi potresti spiegare perchè bisogna perforza dichiarate "OUT" IN_OUTCiao e Grazie Modificato: 24 marzo 2009 da destinator
pigroplc Inserita: 24 marzo 2009 Segnala Inserita: 24 marzo 2009 d'accordo con batta, la variabile IN_OUT funziona in aggiornamento INDIPENDENTEMENTE dalla CPU e dal suo firmware.mi è capitato che qualche CPU gestisca in maniera poco chiara i parametri dichiarati solamente come OUT.siccome è capitato tanto tempo fa, mi sono dato come standard la gestione su IN_OUT, quindi ne posso confrontare lo stato all'interno del blocco senza problemi, idem per la gestione esterna al blocco parametrizzato (se serve)pigroplc
batta Inserita: 25 marzo 2009 Segnala Inserita: 25 marzo 2009 Salve Batta, per cortesia mi potresti spiegare perchè bisogna perforza dichiarate "OUT" IN_OUTPerché viene interrogato lo stato prima di averlo assegnato.
destinator Inserita: 25 marzo 2009 Segnala Inserita: 25 marzo 2009 Grazie per le risposte , per vedere se ho capito bene provo a spiegare la cosa con parole mie.Visto che il parametro "Out" si appoggia in una variabile locale , di conseguenza il valore chepuò avere il parametro fino al momento della sua scrittura all'interno della fc dipende da cosaè stato scritto dalle funzioni eleborate prima della funzione in questione. Se invece il parametro"Out" viene dichiarato come "IN_OUT" il valore assunto dal parametro "OUT" sarà corrispondente al valore dellamemoria assegnata al parametro(M250.0). Ed infine è corretto dire che lo stesso problema non si presenta se si utilizzauna funzione FB dato che i parametri sono appoggiati al db di istanza?Saluti e ancora grazie
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