mostrino Inserito: 18 giugno 2007 Segnala Inserito: 18 giugno 2007 Ciao a tutti, premetto che non sono molto esperto nella programmazione del plc per cui scusate se queste domande possono essere banali.Vi spiego il mio problema:Quando si attiva un ingresso (ad esempio I0.0) devo memorizzare un valore in una variabile (ad esempio VD100)se si attiva una seconda volta lo stesso ingresso vorrei memorizzare il dato nella VD successiva (per cui VD104) e cosi via per molte volte.In pratica ogni volta che mi si attiva l'ingresso vorrei memorizzare i dati in VD successive.Poi questi dati memorizzati nelle VD li devo utilizzare uno alla volta (vorrei impostare il valore finale di un contatore) ogni volta che termina il contatore imposto il suo valore finale come valore della VD successiva.come posso fare?
GALMA Inserita: 18 giugno 2007 Segnala Inserita: 18 giugno 2007 è chiaro cosa vorresti fare, ma dovresti spiegare a cosa serve. Forse un plc non è adatto a fare questo. Non è adatto a immagazzinare dati.Spiega un attimo di più se vuoi essere aiutato.
mostrino Inserita: 18 giugno 2007 Autore Segnala Inserita: 18 giugno 2007 Grazie per la risposta, In pratica i dati (fino ad un massimo di 72) mi arrivano attraverso la porta seriale (in freeport), questi dati mi servono per impostare il valore degli impulsi di una uscita a impulsi del plc.Questi impulsi comandano un motore brushless.Faccio un esempio:Attraverso la porta seriale mi arrivano i valori 10, 20 e 30.Il 1° valore (10) lo imposto come numero di impusi per l'uscita a impulsi, poi attivo l'uscita a impulsi e aspetto che il motore si sposti, al termine dello spostamento vorrei impostare il 2° valore come numero di impulsi e poi muovo nuovamente il motore e cosi via.In questo modo otterrei uno spostamento del motore a passi predeterminati.Spero di essere stato più chiaro
Simone70 Inserita: 18 giugno 2007 Segnala Inserita: 18 giugno 2007 Puoi fare un buffer circolare con due puntatori, uno di scrittura che si incrementa con l'ingresso, ed uno di lettura che incrementi con il movimento eseguito. Quando il 2.puntatore è minore (o uguale a seconda del programma) del 1.puntatore effettui il movimento. Con 2 indicizzazioni il gioco è fatto, basta curare bene la gestione dei puntatori e fare attenzione a quando il puntatore 1 ritorna al valore iniziale mentre il 2 ancora non ha completat il giro del buffer. In questo caso avrai il valore del puntatore 2 maggiore di quello del puntatore 1; devi gestire questa condizione.A parole sembra complicato ma vedrai che buttando giù il codice tutto sembra più semplice.
mostrino Inserita: 18 giugno 2007 Autore Segnala Inserita: 18 giugno 2007 A Simone70:Il problema è che non ho molta dimestichezza con i puntatori, non è possible scrivermi un piccolo esempio?
susy_gel Inserita: 18 giugno 2007 Segnala Inserita: 18 giugno 2007 non so col 200, ma sul 300 scriverei una FC del tipo:L MD 10 \\ puntatore che incrementa di uno ad ogni valore da memorizzare 0,1,2,3,4,5.........L L#16*DT MD 20 \\ ad uso temporaneoAUF DB 1 \\ lo uso per metterci i valori da memorizzare e lo dimensiono nel progetto grande per quanto mi serveL MW 30 \\ questo è il valore da memorizzare T DBW[MD20]BEAspero ti possa essere utileciao
GALMA Inserita: 18 giugno 2007 Segnala Inserita: 18 giugno 2007 Un'idea senza puntatori. Li odio anch'io.Te la butto li, anche se quella a puntatori è più corretta ed elegante.Crei un oggetto, riutilizzabile tipo FB.Una word di ingresso, una word di uscita per il PWM.Un array interno di X posti per immagazzinare.Un bel contatore che tiene il riferimento a dove sei arrivato a riempire.Usi il valore del contatore come indirizzo indiretto alla word nell'array.Ogni volta che inserisci un dato lo aumenti.Unico svantaggio di ineficcienza, traslare i valori dell'array in alto quando li consumi.Ecco perchè con i puntatori è più efficiente.
Jonnywolf Inserita: 18 giugno 2007 Segnala Inserita: 18 giugno 2007 Cerca nella guida in linea di microwin (Sommario e Indice) AC0 e poi seleziona Indirizzamento diretto e indiretto li spiega l'indierizzamento indiretto con i puntatori.
mostrino Inserita: 21 giugno 2007 Autore Segnala Inserita: 21 giugno 2007 Scusate il ritardo della risposta, ma ero fuori ufficio,grazie per i consigli ora proverò a metterli in praticaciao
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