FORUM: chiacchiere
Suggerimenti, opinioni, segnalazione siti e discussioni a tema libero. (evitate post sul sistema dei livelli, per eventuali richieste e suggerimenti usate l'apposita scheda contatti)
schottky: La cosa da fare sarebbe quella di entrare nel "club" di Mathworks scrivendo le funzioni di supporto secondo la logica del "Mathworks Hardware Support" https://it.mathworks.com/hardware-support/home.html?s_tid=sr… cosa che ritengo sia molto semplice per gli sviluppatori che hanno scritto tutti quei pacchetti di software per Theremino.
Mi spiace non è così facile. Io conosco profondamente solo l'InOut per PC e le applicazioni in DotNet. Sono andato a vedere la pagina che hai indicato ma non ci ho capito niente. Sembrerebbe che loro prevedono sempre di collegarsi a dell'hardware. Da noi invece si dovrebbe collegarsi agli Slot, che non sono hardware ma un pezzo di memoria del PC chiamato "MemoryMappedFile".
Ho mandato una mail a Roberto (il secondo mezzo programmatore) e vedremo se lui riesce a tirarne fuori qualcosa ma non ci sperate troppo...
Bisognerà trovare qualcuno che conosce bene MathLab e a quel punto daremo tutto il nostro appoggio.
Ricongiungere il mondo digitale con il mondo reale e concreto.
theremino
postato il: 07.06.2017, alle ore 11:45
MB54: Una domanda.
Alcuni anni fa avevo apprezzato il sistema Phidget per la possibilità di controllarlo direttamente da Excel, avendo driver di non quale tipo. In pratica si impostava la maschera con Excel, si inserivano tutti i calcoli necessari, i comandi di salvataggio, di confronto graafico con i dati storici ecc e poi si utilizzavano chiamate alle funzioni del driver ( penso dll, ma non me nen intendo molto).
Il tutto in maniera decisamente semplice, usando solo VBA di Excel.
Quando realizzai l' accrocchio non avevo mai visto da vicino una MCU (un PIC nel caso del Phidget), sapevo che esistevano ma nulla di più. Non sapevo ovviemente programmarle e neppure esattamente cosa potessero fare.
Da totale inesperto, con una semplice conoscenza base di VBA, avevo messo insieme rapidamemte un sistema di monitoraggio della salute delle batterie di una ventina di gruppi di continuità : il sistemino semplicemente avviava (anche in sequenza) una scarica del gruppo di continuità su una resistenza da 100W (a 230v) e monitorava la variazione di tensione. Lo scopo era vedere nel tempo, esempio ogni 6 mesi, la variazione del tempo di protezione dei 20 UPS su un carico reale (standardizzato su 100W) e -per confronto con i dati precedenti- capire quanto ci si poteva fidare dell' UPS o se fosse il caso di cambiare le batterie.
Non è un applicazione complessa, potrebbe essere fatta in molti modi, ma il fatto di scriverla dentro Excel ha semplificato le cose.
La domanda è: esiste con il sw di Theremino la possibilità di accedere alle sue funzioni dall' interno di Excel usando VBA?
Ieri è venuto Roberto in laboratorio (non lo si vedeva da tempo) e abbiamo passato tutto il giorno ad analizzare queste possibilità . Per MathLab anche lui ha gettato la spugna e purtroppo anche Snap! si è rivelato impossibile da usare (funziona solo dentro a una pagina web)...
Ma per questa proposta di MB54 ci sono buone speranze. E' sicuramente possibile implementare la comunicazione con VBA.
Non so quando ne avremo il tempo ma prima o poi noi o qualcun'altro...
Nel frattempo continuiamo a farci conoscere, aiutateci, contattate altri programmatori... e magari presto si farà avanti questo qualcuno che troverà facile implementare le parti che ci vengono difficili.
Ricongiungere il mondo digitale con il mondo reale e concreto.
MB54
postato il: 07.06.2017, alle ore 12:01
theremino: ...
Ma per questa proposta di MB54 ci sono buone speranze. E' sicuramente possibile implementare la comunicazione con VBA.
Non so quando ne avremo il tempo ma prima o poi noi o qualcun'altro...
Buona cosa, anzi ottima. Un driver ( o come si chiama) per Excel consentirebbe di usare il grosso delle funzionalità e la grafica di Excel, inoltre VBA è relativamente semplice e male che vada fai prima una macro (ove possibile) e poi la completi.
Qundo sarà ... sarà .. se sarà .
Mauro
theremino
postato il: 07.06.2017, alle ore 22:59
Oggi abbiamo passato tutto il giorno in Open Office a scrivere macro. Siamo riusciti ad aprire il Memory Mapped File che contiene gli Slot, ma non riusciamo ancora a scriverci dentro.
Uno dei prossimi giorni proseguiremo.
Ricongiungere il mondo digitale con il mondo reale e concreto.
MB54
postato il: 10.06.2017, alle ore 16:16
Houston, ho un problema. Anzi 2 e 1/2.
Ho cercato di fare una cosa semplicissima: usare le uscita PWM con wavegenerator ed acquisire con ADC16.Non ci sono riuscito.
Frequenza di lavoro di wavegen :0.1 HZ, ma non cambia a 10Hz.
PROBLEMA 1. Senza ancora pensare all' ADC, provando le uscita con un tester (con e senza condensatore):
-Le uscita PWM8 e PWM16 generano una tensione che posso variare
-La Fast è immobile; anche variando manualmente l' impostazione della tensione, quella in uscita non cambia.
Con Fast varia correttamente la frequenza impostandola dalla casella di inserimento,fino a oltre 5MHz, ma variando l' impostazione 'value' sia con slider di SlotWiever che da HAL... la tensione in uscita resta immobile a qualsiasi frequenza. Per variare la tensione di uscita devo agire sul duty cycle manualmente.
Con Fast il visualizzatore di HAL mi fa vedere la forma d' onda impostata, ( sw to sw) ma sul pin di uscita nisba: la tensione rimane costante.
PROBLEMA 2-parte1. Provando ad usare l' ADC connesso con cavetto al pin del FAST PWM e l' oscilloscopio sw, qualche cosa non quadra. Ovviamente inviando all' ADC l' uscita FAST mi aspetterei di vedere una retta orizzontale per frequenze del pwm > qualche cento hz.Invece si vede un clipping, sostanzialmente poco variabile con la forma d' onda generata. E questo ci potrebbe anche stare, essendo l' uscita del pin bloccata.
PROBLEMA 2- parte 2. Come sopra, ma connettendo l' uscita del pwm 16 all' adc.L' adc vede in ingresso solo una sequenza di 0 e 1000.
L' accoppiata ADC8 e PWM16 (senza reponse speed) ha un qualche senso, ma modesto.
Sicuramente sbaglio qualche cosa, ma cosa? Ho modificato infinite volte le configurazioni, con variazioni dei risultati visivi , ma senza particolari significati.
Consigli?
MB54
postato il: 10.06.2017, alle ore 16:17
Sorry, l' ordine delle immagine è venuto casuale....
schottky
postato il: 10.06.2017, alle ore 19:41
theremino:
Mi spiace non è così facile. Io conosco profondamente solo l'InOut per PC e le applicazioni in DotNet. Sono andato a vedere la pagina che hai indicato ma non ci ho capito niente. Sembrerebbe che loro prevedono sempre di collegarsi a dell'hardware. Da noi invece si dovrebbe collegarsi agli Slot, che non sono hardware ma un pezzo di memoria del PC chiamato "MemoryMappedFile".
Ciao, scusami se non ti ho risposto prima ma mi era scappato l'intervento, circa il collegamento all'hardware non so, ma penso che dipenda da quale componente si sta usando, è chiaro che se ho a che fare con DAQ della National Instruments, dovrò sapermela cavare con la programmazione dell'interfaccia PCI-Express, ma per esempio il software per arduino, si interfaccia tramite USB credo in modo perfettamente analogo al vostro sistema. Io poi non ne so nulla perchè di quegli ambienti di programmazione non mi sono mai occupato. Conoscere Matlab, almeno per come lo uso io è semplicissimo perchè ha una sintassi elementare, il kernel contenente le routine matematiche è monolitico e ovviamente non occorre nè è possibile conoscerlo. La parte delle interfacce invece, da quello che so, è tutta sviluppata in C# e Dot.NEt/MONO a seconda del sistema operativo, cose di cui io non so una parola, ma che credo a voi congeniali. Comunque pazienza, mi dispiace perchè quella sarebbe secondo me la collocazione ideale del vostro sistema.
Il vantaggio di essere intelligente e' che si puo' sempre fare l'imbecille, mentre il contrario e' del tutto impossibile. -- W. Allen
theremino
postato il: 10.06.2017, alle ore 20:22
schottky: ...il software per arduino, si interfaccia tramite USB credo in modo perfettamente analogo al vostro sistema....
Arduino collegato alla USB fornisce una seriale virtuale e mandare byte su una seriale è facilissimo. Inoltre Arduino non è "configurabile", ma lo si riprogramma per ogni nuovo compito, quindi non ha un protocollo di configurazione.
Il nostro modulo Master invece si collega in modo nativo alla USB e comunica con un protocollo complesso. Solo la nostra applicazione HAL è in grado di gestirlo. Ci sono una cinquantina di pagine di codice solo per il protocollo e gli scambi USB. Poi c'è la gestione degli oltre venti tipi di InOut, E infine anche la interfaccia utente per permettere di configurare i PIN di In-Out del Master come desiderato dall'utente. Scrivere una applicazione di queste dimensioni in MathLab è impensabile. Se anche MathLab fosse in grado di sopportarla io ci metterei anni a scriverla. Così come ho messo anni a scriverla in DotNet. Se qualcuno pensa di poterci riuscire si accomodi.
Per cui le applicazioni che vogliono comunicare con il sistema theremino non comunicano attraverso la USB ma in modo semplicissimo attraverso gli "Slot".
Gli Slot sono un pezzo di memoria condivisa con la tecnica di "Interprocess Communication" basata sui "Memory Mapped Files". In questo modo si scambiano dati standardizzati, facilmente e in pochi microsecondi, e si ottiene una modularità che Arduino neanche se la sogna.
Ho studiato un po' gli esempi e non credo che sia facile utilizzare i Memory Mapped Files da dentro MathLab, non abbiamo trovato esempi e credo proprio che non hanno previsto questa possibilità . Abbiamo perso delle ore anche su Google ma nessuno ne parla.
Sicuramente altri potrebbero scrivere quello che manca, ma per noi è troppo difficile. Per cui seguiamo un'altra strada, ci impegniamo a far bene la nostra parte e a farci conoscere. Così altri si accorgeranno che il nostro sistema funziona bene e scriveranno quel che serve per collegarsi.
Ricongiungere il mondo digitale con il mondo reale e concreto.
theremino
postato il: 10.06.2017, alle ore 20:39
MB54: Houston, ho un problema. Anzi 2 e 1/2.
Un po' difficile spiegarlo qui. Sarebbe meglio per telefono o per Skype o con Team Viewer.
Per ora ti do un indizio che ti aiuterà a superare il primo problema: Non hai abilitato la casella "Ciclo da slot" del Pwm_Fast.
Per il resto delle domande devi considerare che il PWM non da in uscita una tensione ma solo un onda quadra.
Ricongiungere il mondo digitale con il mondo reale e concreto.
schottky
postato il: 11.06.2017, alle ore 09:05
Ciao Livio, grazie della risposta. Magari mi impegno io a vedere se riesco a cavare qualcosa ma non credo, perchè è un tipo di programmazione che non ho mai praticato e che non comprendo, mi sono sempre e solo occupato di algoritmi numerici, essenzialmente per soluzione sui equazioni e di algorimi di visione e di intelligenza artificiale, senza mai approdare agli aspetti "sistemici" se non, come ti avevo detto in un'altra occasione, su sistemi a bassissimo livello (MCU o FPGA) ma per interposta persona cioè spiegando al programmatore cosa doveva fare.
Circa i memory mapped files, di cui io non conoscevo per niente l'esistenza, però in Matlab vi è tutta una serie di strumenti per crearli ed usarli, per esempio la funzione
memmapfile https://it.mathworks.com/help/matlab/ref/memmapfile.html E tutta una documentazione, che ho intenzione di leggere dopo che ho letto la vostra documentazione, comunque il punto di partenza penso sia questo:
https://it.mathworks.com/help/matlab/import_export/overview-… Dove spiega prima che cosa sono e poi come si usano.
Mi pare strano che nelle vostre ricerche internet non sia apparso nulla intatti basta cercare su google ed esce un sacco di roba.
Sarà forse solo perche tu insisti a scrivere matlab con una H che in realtà non c'è?
Il vantaggio di essere intelligente e' che si puo' sempre fare l'imbecille, mentre il contrario e' del tutto impossibile. -- W. Allen
Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito