ken Inserito: 4 ottobre 2003 Segnala Inserito: 4 ottobre 2003 (modificato) Sto creando un blocco PT1 (filtro e tempo di ritardo analogico) per S7 ma non mi funziona bene.Ecco cosa ho scritto: VAR_INPUT IN : REAL; T : TIME; //Time Delay CYCLE : TIME; //Sample Time END_VAR VAR_OUTPUT OUT : REAL; cyctay : REAL; //Non Serve END_VAR VAR_TEMP tay : REAL; aaa : REAL; cyct : DINT; ttt : DINT; END_VAR BEGIN NETWORK TITLE =SCL network //compiled by SCL compiler version: SCL K5.1.4 (C5.1.8.15) SET ; SAVE ; = L 16.1; L #T; T #ttt; DTR ; T #tay; L #CYCLE; T #cyct; DTR ; T #cyctay; L #cyctay; L #tay; /R ; L #IN; TAK ; T LD 18; TAK ; L #OUT; -R ; L LD 18; *R ; L #OUT; +R ; T #OUT; L #tay; T #RET_VAL; SAVE ; BE ; END_FUNCTIONCosa c'è di sbagliato secondo voi? Modificato: 4 ottobre 2003 da ken
wnc Inserita: 4 ottobre 2003 Segnala Inserita: 4 ottobre 2003 Premesso che non ho ben capito cosa intendi fare (qualche commento in più su cosa fanno le variabili non sarebbe male o forse perchè non ho analizzato bene il listato) ho trovato un'incongruenza sulla dichiarazione della variabile OUT:REAL che è di tipo OUTPUT che ad un certo punto la carichi in ACCU1 senza prima averle assegnato un valore. In questi casi non so come si comporta il programma anche se il compilatore non segnale l'errore. Probabilmente devi prima assegnarle un valore o dichiararla diversamente (IN_OUT).Spero di esserti stato utile. CiaoNicola
walterword Inserita: 4 ottobre 2003 Segnala Inserita: 4 ottobre 2003 si anche secondo me il problema e' questo , cioe che scrivi una variabile locale che hai dichiarato come OUTPUT.quando ti capita di usare variabili locali , dichiarate IN o IN-OUT o OUTPUT , o STATICHE (negli FBxx)per creare funzioni o blocchi parametrizzati devi sempre ricordarti che se una variabile al SCRIVI ola LEGGI devi dichiararla come IN-OUT , oppure anche come STATICA se usi in FBxxper esempio un bit di autoritenuta sara' IN-OUT perche' in alcune parti del programma la scrivi ed in altre la leggi , ovviamente modificandola ad ogni ciclo di scansione .se invece usi un FBxx puoi usare le variabili statiche , che rimangono memorizzate e si aggiornano all'interno del blocco dati (dbxx) di istanza generato con l'FB xx in questione.ciao walter
ken Inserita: 5 ottobre 2003 Autore Segnala Inserita: 5 ottobre 2003 (modificato) wnc Inviato il 4 Oct 2003, 01:20 PM Premesso che non ho ben capito cosa intendi fare (qualche commento in più su cosa fanno le variabili non sarebbe male o forse perchè non ho analizzato bene il listato) ho trovato un'incongruenza sulla dichiarazione della variabile OUT:REAL che è di tipo OUTPUT che ad un certo punto la carichi in ACCU1 senza prima averle assegnato un valore. In questi casi non so come si comporta il programma anche se il compilatore non segnale l'errore. Probabilmente devi prima assegnarle un valore o dichiararla diversamente (IN_OUT).Spero di esserti stato utile. CiaoNicolaIl blocco PT1 solitamente lo trovi all'interno di convertitori CC o inverter. Viene utilizzato per ritardare e filtrare un segnale analogico. Supponiamo di avere una rampa all'ingresso, in uscita avrò la stessa rampa ma con un ritardo che gli do io (time delay). Lo provo settimana prossima appena sono in ufficio e ho a disposizione un CPU Modificato: 5 ottobre 2003 da ken
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