van der graaf Inserito: 19 marzo 2009 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
floppydisco Inserita: 19 marzo 2009 Segnala Share 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). Link al commento Condividi su altri siti More sharing options...
van der graaf Inserita: 19 marzo 2009 Autore Segnala Share Inserita: 19 marzo 2009 Ma allora è proprio vero che ci sono cose strane ?Possibile??VDG Link al commento Condividi su altri siti More sharing options...
ken Inserita: 19 marzo 2009 Segnala Share Inserita: 19 marzo 2009 Come dichiari le variabili? Dipende molto da come sono usate se in, out oppure in-out Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 20 marzo 2009 Segnala Share Inserita: 20 marzo 2009 hai fatto le chiamate agli fc?Sei sicuro di non avere superato l'indirizzamento delle variabili locali? Link al commento Condividi su altri siti More sharing options...
van der graaf Inserita: 20 marzo 2009 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
ken Inserita: 21 marzo 2009 Segnala Share Inserita: 21 marzo 2009 aux e FP come sono dichiarati? Aux penso che debba essere in-out per funzionare Link al commento Condividi su altri siti More sharing options...
batta Inserita: 23 marzo 2009 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 23 marzo 2009 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
destinator Inserita: 24 marzo 2009 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 24 marzo 2009 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 25 marzo 2009 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
destinator Inserita: 25 marzo 2009 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 25 marzo 2009 Segnala Share Inserita: 25 marzo 2009 Proprio così. 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