Newsgroup: it.comp.lang.visual-basic
Titolo: Timer per intervalli molto piccoli

Salve a tutti.
Sto utilizzando visual basic 2010 express edition e vorre realizzare una 
routina che venga eseguita ciclicamente  con un'intervallo di tempo che vari 
da 1 volta al secondo a circa 28.000 volte al secondo (circa una volta ogni 
30 micro secondi). E' una cosa fattibile? avete qualche suggerimento su dove 
trovare un'esempio di classe timer che faccia quanto ho scritto?
Grazie mille
Gianluca


http://cplus.about.com/od/howtodothingsinc/a/timing.htm
ciao
stefano


mhhh ... oppps ... non � il timer che serve a te :-)
ciao
stefano


La prima cosa che mi viene in mente �: sei certo che la tua routine duri 
meno di un ventottomillesimo di secondo? Meno perch� ad ogni esecuzione 
� necessario anche il codice che la rilanci... Scusa l'azzardo, ma la 
risposta -pragmatica, da informatico- � no... Quindi?
Ci sono timer decimillesimali in giro, ma devi considerare che n� uindos 
n� i compilatori MS (tutti) sono realtime: a 28 micro secondi credo che 
tu abbia necessit� di un motore diverso.
-- 
-> GbC|
www.gbcdepot.com
www.chiappori.com
 

trovare un'esempio di classe timer che faccia quanto ho scritto?
Dipende sempre da cosa devi fare, ma se hai necessit� di tempi del genere non
puoi usare un pc, una strada potrebbe essere usare un �C dedicato, ad esempio
una scheda tipo Arduino che ti da la disponibilit� dei timer hw sul suo AVR
--
ciao
  Stefano

 30 micro secondi). E' una cosa fattibile?
IMHO, con un SO come Windows e simili, non si può e non ha senso proprio 
per come è impostata la loro architettura.
-- 
Saluti
VITRIOL

 ha scritto nel messaggio 
news:4e1b060d$1...@news.x-privat.org...

Mi serviva un intervallo di tempo così piccolo perchè, essendo un 
programmatore di PLC, utilizzo PLCSIM (il programma di simulazione della 
siemens) per testare i miei programmi. PLCSIM ha la possibilità di 
interfacciarsi ad un programma VB tramite un'oggetto com. Io adesso ho 
l'esigenza di simulare un encoder incrementale, che, spiego per chi non lo 
sapesse, è un trasduttore di posizione che trasmette 2 onde quadre sfasate 
di 90° con frequenze di circa 30kHz alla massima velocità.
Dovrò per forza di cose trovare un'altra strada per testare questo genere di 
applicazioni.
Grazie a tutti
Gianluca

applicazioni.
Con un PC è impossibile generare onde con la giusta fase per simulare un encoder
incrementale,
O ne prendi uno già fatto, tipo questo:
http://www.ferret.com.au/c/PCA-Plant-Control-and-Automation/Incremental-Encoder-Simulator-n677162
O con qualche conoscenza di elettronica potresti realizzare un circuito come
questo:
http://www.circuitlake.com/encoder-simulator.html
qui trovi la documentazione:
http://www.circuitcellar.com/avr2004/DA3830.html
    >> entry
Poi lo piloti direttamente dalla tua applicazione con la RS232.
--
ciao
  Stefano

 velocità.
Visto che (se non ho capito male) devi generare onde quadre, potresti
generare un semplice flusso audio... e convertirne in hardware l'output.

generare un semplice flusso audio... e convertirne in hardware l'output.
Deve generare due onde quadre sfasate di 90 gradi, e probabilmente anche contare
quanti fronti invia, non credo che con un flusso audio riesci a fare cose del
genere.
--
ciao
  Stefano


Beh, in teoria ogni sorgente audio ha 2 canali (stereo), i fronti in invio
vengono decisi al momento di creazione dello stream; se genero
un'inda di 1 Khz, avro' 500 fronti in salita e 500 in discesa, afaik...

un'inda di 1 Khz, avro' 500 fronti in salita e 500 in discesa, afaik...
E' possibile fare uscire un segnale a 1Khz su ogni canale, forse anche per un
tempo prefissato, ma lui ha chiesto nel thread di avere due segnali a 30 Khz in
quadratura, cioè sfasati di 15µS,
Riuscire a fare questo con la precisione richiesta usando una scheda audio è
arduo, forse riuscendo a interagire con il chip a basso livello è possibile, ma
ci credo solo quando lo vedo  :-)
Altrimenti ad esempio usando un ATTiny 2313 Atmel da 1€ che ha già a bordo
timers e PWM lo si fa con poche istruzioni assembler, e lo si può anche
comandare con la RS232 perchè ha la UART integrata.
Questo però è un discorso da elettronico che richiede un background diverso,
anche se spesso i programmatori di PLC non sono di provenienza informatica ma
elettronica.
--
ciao
  Stefano

"Franz_aRTiglio" <fran...@N0SPAMtin.it> ha scritto nel messaggio 
news:ivh18i$f4f$1...@speranza.aioe.org...

La mia idea di utilizzare un programma VB, era proprio per evitare di 
utilizzare soluzioni hardware. Come già detto per testare i programmi che 
realizzo per PLC siemens utilizzo PLCSIM che è un software, nessuna scheda è 
collegata al PC.
PLCSIM permette di automatizzare alcune funzione tramite un oggetto com, 
altrimenti bisogna variare manualmente lo stato di ingressi ed uscite. Io 
solitamente tramite VB riesco a simulare la pressine di pulsanti, selettori 
feedback di motori e valvole etc etc.
Siccome all'interno del PLC le lettura di segnali di un encoder serve ad 
incrementare o decrementare una variabile intera a 32bit, sto pensando 
adesso di variare il tipo di funzionamento della mio simulatore, al posto di 
generare i 2 segnali digitali dei 2 canali, ad ogni richiamo di un timer 
magari settato sui 20ms incremento o decremento tale variabile di un valore 
proporzionale alla velocità che mi occorre. La simulazione sarà meno 
realistica, ma andrà benissimo per i mie scopi.
Grazie mille
Gianluca

  Stefano
Più che elettronica la provenienza è elettrotecnica. Anzi spesse volte, ed 
quasi il mio caso, si tratta di elettricisti evoluti.
Per quanto riguarda la soluzione hardware, sto pensando di realizzarla lo 
stesso, per fare dei test non solo del programma ma anche dell' hardware in 
cui è inserito il PLC tramite una scheda Arduino.
Grazie ancora di tutto
Gianluca

cui è inserito il PLC tramite una scheda Arduino.
Era la cosa che ti avevo proposto fin dal primo thread, costa poco, si programma
facilmente in C trovi parecchio codice in giro
--
ciao
  Stefano

 incrementale,
Non e' impossibile con un PC.
E' impossibile con un sistema operativo non real-time, come Windows. 
Ovviamente non si ottiene il risultato voluto neanche caricando un 
sistema operativo real-time sopra (o dentro) Windows, in una macchina 
virtuale.
Pero' con un PC si possono ottenere prestazioni real-time in tre modi:
* Scrivendo un driver kernel-mode per Windows e in tale driver 
disabilitando gli interrupt durante le porzioni real-time (che 
dovrebbero essere brevi per non rendere inusabile Windows).
* Installando un kernel real-time sotto Windows. Tale kernel fa 
funzionare due task: il tuo programma ad alta priorita' e Windows a 
bassa priorita'.
* Usando un sistema operativo real-time, senza installare Windows.
In nessuna delle tre soluzioni puoi scrivere il codice real-time in un 
linguaggio Basic o .NET. Devi usare C, C++, o Assembly.
Alternativamente, ricorri a una soluzione hardware, cioe' installi una 
scheda aggiuntiva nel PC o comunichi con un dispositivo esterno.
-- 
Carlo Milanesi
http://carlomilanesi.wordpress.com/

scheda aggiuntiva nel PC o comunichi con un dispositivo esterno.
Arduino imho è la soluzione migliore, ma io in fondo sono un hardwarista.
--
ciao
  Stefano

 Arduino imho è la soluzione migliore, ma io in fondo sono un hardwarista.
...e meno male che lo sei!
Filosoficamente parlando...senza di voi noi non potremmo esistere!
Terra terra si può dire....ad ogni mestiere il suo strumento!
Avere un pc....e poi non un pc embedded ma uno "generalista" come un i3 
i5 o pentium che sia...non deve far credere che si possa far tutto!
Un mio amico ingegnere elettronico doveva automatizzare macchine(nello 
specifico cimatrice spazzolatrice e 2 calandre accoppiate per tessuto 
non tessuto)....l'ha fatto con un pc....certo:
Preso un pc levato lo chassis montato in rack
Sul pc c'era l'interfaccia grafica ed i setting dei parametri con tutte 
le cazzate carine per alzare il prezzo e farlo sembrare 
sofisticatissimo!
....dietro c'erano una quantità di schede dedicate anche 
autoprodotte....il pc serviva solo come interfaccia!
ci sarà sempre bisogno deghi hardwaristi!
-- 
----- Italliaaaaa 3227! -----
Grembiule nero e fiocco azzurro: per un bambino milanista il primo 
giorno di scuola è un trauma.
(Diego Abatantuono)