-
AutorMensajes
-
11 noviembre 2022 a 19:52 #24448
theremino
Llave maestraAnuncios?
te las arreglaste para leer?Rispondo alle domande che avevo trascurato:
DOMANDE
———————————————————————————————-
Los valores flotantes tal como están ordenados en el archivo? Secuencialmente desde la ranura 1 en?
Entonces si entiendo bien.
Leo los primeros 4 bytes del archivo asignado y tengo la señal en la ranura 1.
leo los segundos 4 byte del archivo asignado y tengo la señal en la ranura 2.
Leo a terceros 4 byte del archivo asignado y tengo la señal en la ranura 3,
Podría escribir una serie de funciones (para compartir) per rendere più pulito e ordinato il lavoro…RISPOSTE
———————————————————————————————–
I valori float sono ordinati nel file sequenzialmente dallo Slot ZERO in poi.
Il file contiene 4096 byte che contengono i valori degli Slot dallo 0 Alabama 999 (más 96 byte per ora non usati)
Lo Slot ZERO è un Float scritto nei Byte da 0 un 3
Lo Slot UNO è un Float scritto nei Byte da 4 un 7
Lo Slot DUE è un Float scritto nei Byte da 8 un 11
e così via fino allo Slot 999La serie di funzioni per rendere più pulito e ordinato il lavoro si trova già negli esempi
che abbiamo pubblicato in VbNet, CSharp, C++, Python, Pascal e VB6
e i link per arrivarci sono nel messaggio precedente.32 mi 64 poco
———————————————————————————————–
Ti ricordo di fare attenzione alla nota sui 32 mi 64 bit del messaggio precedente
nel caso ti fosse sfuggita.22 noviembre 2022 a 19:20 #24587cpiga
PartícipeMuchas gracias. Ho ripreso ora a lavorare sul progetto… I tuoi consigli sono stati utilissimi.
Ho scritto una dll partendo dal codice che mi hai mandato. La dll chiamata da un codice di test scritto in c# funziona. Tutto compilato a 32bit.
Il problema è che matlab ormai esce solo nella versione a 64bit. Sto provando con una vecchia versione a 32bit ma è problematico… Non esiste una versione “custom a 64bit” della HAL? Potrei, partendo dal sorgenete compilare la HAL a 64bit, perchè Matlab a 64bit non mi carica la dll a 32bit….
Ciao
carlo22 noviembre 2022 a 19:46 #24589theremino
Llave maestraPuoi sicuramente prendere i nostri sorgenti dell’HAL e ricompilarli a 64 poco
(utilizzando Visual Studio 2008 come spiegato nel nostro sito)
https://www.theremino.com/downloads/notes-on-software#developmentPerò poi ti perdi tutte le altre comodità del nostro sistema, oscilloscopi, analizzatori di spettro, e tante altre applicazioni molto utili.
Dovresti ricompilarle tutte e sono quasi 200.Potresti invece fare una app a 32bit in CPP che legge dai nostri slot e scrive in un file normale, e quello MathLab può sicuramente leggerlo.
Al file devi dare le proprietà di condivisione lettura e scrittura.
Se non riesci ti aiuterò dato che ho già fatto dei file condivisibili in quel modo.
E dato che si tratta di pochi byte tutto avviene velocemente in memoria cache, anche se il file è un normale file da HardDisk.Poi metti tutto in una cartella e sottocartelle, HAL, Applicazione in C e link a MathLab
E infine avvii e chiudi tutti quanti con un solo click come fossero una unica applicazione con Theremino_StartAll
https://www.theremino.com/downloads/foundations#starter29 noviembre 2022 a 15:37 #24658cpiga
Partícipeentonces, actualizará.
Ho utilizzato l’ultima versione disponibile di Matlab a 32 poco. Ho scritto una dll che legge il mmf e lo restituisce a matlab. Adesso da Matlab riesco a leggere i 3 canali che mi interessano del sismografo con adc 24. Rimane un problema, vorrei arrivare a 0.1 ms di frequenza di campionamento. Attualmente ottengo risultati accettabili con 1 ms di campionamento. Non riesco a capire una cosa. La scheda adc24 legge fino a 19200 sps, ma poi nelle HAL vedo che anche impostando questa frequenza di campionamento (e dividendola per il numero di canali attivi) non riesco a superare gli 800 fps (ripetizione) e conseguentemente non riesco a scendere sotto il millisecondo… Come posso aumentare dalla HAL la velocità di trasferimento dati?29 noviembre 2022 a 16:25 #24660theremino
Llave maestrala velocidad de “intercambio” dati della USB è limitata dal kernel del sistema operativo che ha un tick di 1 mS
Questo è un limite dei kernel di tutti i sistemi operativi, Linux e Mac compresi.Per cui nelle condizioni migliori si potrebbe arrivare a 1000 scambi al secondo ma normalmente oltre a 800 non si arriva
E questi scambi sono anche un po’ sovrastimati dal contatore dell’HAL,
se vai a vedere con l’oscilloscopio i tempi saranno di 1 la 2 mS per cui puoi avere una certa sicurezza solo fino a 500
e una buona stabilità dei tempi solo fino a 100 scambi al secondo.Per mandare più campioni li si dovrebbero mandare in “lote” cioè accumularli nel micro e poi mandarne decine o centinaia ad ogni scambio.
mamá, Lo siento, il nostro sistema non è fatto così.Questo limite era chiaramente specificato sia nella documentazione dei Master, che in quella dell’HAL e anche in quella dell’ADC24.
Per superare questo limite dovresti scrivere molto codice, non so se nel PIC del Master o nello ESP32, quale stai usando ?
Se è lo ESP32 potresti usare una decina di generic-pins per mandare dieci dati all’HAL in ogni scambio.
Ma se è il Master il suo HAL non prevede i pin “generic” e quindi dovresti modificare il programma HAL e dovresti anche modificare il firmware che è nel PIC del Master
(è tutto open source ma il lavoro da fare sarebbe davvero molto)Inoltre l’ADC24 può arrivare a velocità alte solo se lavora a singolo canale ma ha un tempo di cambio canale molto lungo e quindi credo che con tre canali non arriverai a più di 100 200 muestras por segundo (potrei sbagliarmi e in tal caso dovresti fare i conti precisi consultando il datasheet dell’ADC24)
29 noviembre 2022 a 16:36 #24662cpiga
PartícipeHo due sismografi che dovrei utilizzare contemporaneamente. Il primo ha un master,un’adc24 e 3 geofoni e va su usb, il secondo è l’iot e va su wifi, sempre con ADC24… per il momento stavo provando con il primo (USB) ma mi sono accorto di questo limite… il progetto prevedeva di usarli contemporaneamente per alcune applicazioni particolari. Non è che con il wifi supero questo limite della USB? (Potrei provare ma visto che vi sto angosciando ne approfitto)… Muchas gracias…
29 noviembre 2022 a 18:27 #24666theremino
Llave maestraSe li usi contemporaneamente ciascuno scambia come fosse da solo, non si rallentano a vicenda.
Però lo ESP32 su WiFi va anche meno del Master, la 300 un 600 circa a seconda del segnale WiFi e della velocità del PCSe vuoi arrivare a 10 mila campioni al secondo l’unico metodo sarebbe scrivere firmware sullo ESP32 e fare dei blocchi di dati in memoria dello ESP32
Poi dovresti trasferirli in parallelo con i pin “generic” (impostandoli al loro massimo numero che non ricordo , tal vez 16)
Poi dovresti leggerli con il tuo software e rimetterli in fila uno dopo l’altro.mi’ una cosa lunga e difficile ma altre strade (leggere lo ESP32 con la tua applicazione) sarebbe ancora più difficile.
Ci hanno provato anche altri e non sono riusciti.E conta anche che stai passando per slot in memoria che sono asincroni per cui una applicazione scrive (non si sa bene quando)
e se l’altra legge troppo velocemente finisce per leggere due volte lo stesso valoreIl nostro sistema è fatto per lavorare fino a ripetizioni di circa 100 per secondo, che per quasi tutte le applicazioni vanno benissimo.
Per andare oltre non si dovrebbero più usare gli Slot e nemmeno la USB come la usiamo noi (senza driver).29 noviembre 2022 a 19:14 #24668cpiga
PartícipeDe acuerdo. Por supuesto me conformaré con 1ms o 2ms… Posso accontentarmi anche se non è l’ottimo per la mia applicazione. Adesso sto cercando di compilare a 64bit l’HAL per cercare di utilizzare le versioni più recenti di Matlab…. Ma quale versione devo compilare c# o vb? Con c# è presente una dll a 32 poco (customc ontrol) per cui non riesco…
-
AutorMensajes
- Usted debe ser conectado para responder a este tema.