Streaming udp tra beaglebone e matlab
Inviato: 3 mag 2015, 21:15
Ciao a tutti
Sto cercando di implementare un sistema per acquisire dati dalla beaglebone black a matlab, attualmente ho scritto un programma in c che mi tira su una serie di campioni dal ADC, quando ha finito di riempire il buffer spedisce tutto tramite protocollo udp alla rete e in parallelo parte un altro campionamento. Quesi campioni vengono ricevuti da matlab, per essere stampati stile oscilloscopio oppure elaborati su simulink.
Riesco a campionare bene e a inviare i campioni, questi vengono ricevuti correttamente e stampati, il problema è che il sistema è estremamente lento, ci mette un sacco a stampare la forma d'onda che dovrebbe risultare rimettendo insieme i campioni. Se cambio lo stato dell'ingresso analogico che sto misurando, nel grafico lo vedo cambiare dopo un minuto o più.
Sono sicuro che il campionamento avviene correttamente, perché se invece di spedire in rete i dati li salvo su un file di testo la forma d'onda ottenuta è quella attesa e anche i tempi vengono rispettati. Sono anche sicuro che i datagram che compongo siano corretti perché ho sniffato la rete con wireshark e tutto è come dovrebbe essere.
Ora, credo di sbagliare nella lunghezza dei buffer nello stadio ricevitore o trasmettitore, ma non saprei come sceglierli per ottenere tempi decenti. Oppure il problema è il metodo che uso per stampare in matlab, però sia con le istruzioni da linea di comando che da simulink ottengo lo stesso risultato, tempi biblici nella visualizzazione.
Avete mai avuto a che fare con problemi simili, consigli? Documenti da linkare?
Grazie
P.S. So che mathworks mette a disposizione una serie di blocchi simulink per scrivere e leggere dalla beaglebone, ma non li posso avere per questioni di licenze. Quindi me li devo fare
Sto cercando di implementare un sistema per acquisire dati dalla beaglebone black a matlab, attualmente ho scritto un programma in c che mi tira su una serie di campioni dal ADC, quando ha finito di riempire il buffer spedisce tutto tramite protocollo udp alla rete e in parallelo parte un altro campionamento. Quesi campioni vengono ricevuti da matlab, per essere stampati stile oscilloscopio oppure elaborati su simulink.
Riesco a campionare bene e a inviare i campioni, questi vengono ricevuti correttamente e stampati, il problema è che il sistema è estremamente lento, ci mette un sacco a stampare la forma d'onda che dovrebbe risultare rimettendo insieme i campioni. Se cambio lo stato dell'ingresso analogico che sto misurando, nel grafico lo vedo cambiare dopo un minuto o più.
Sono sicuro che il campionamento avviene correttamente, perché se invece di spedire in rete i dati li salvo su un file di testo la forma d'onda ottenuta è quella attesa e anche i tempi vengono rispettati. Sono anche sicuro che i datagram che compongo siano corretti perché ho sniffato la rete con wireshark e tutto è come dovrebbe essere.
Ora, credo di sbagliare nella lunghezza dei buffer nello stadio ricevitore o trasmettitore, ma non saprei come sceglierli per ottenere tempi decenti. Oppure il problema è il metodo che uso per stampare in matlab, però sia con le istruzioni da linea di comando che da simulink ottengo lo stesso risultato, tempi biblici nella visualizzazione.
Avete mai avuto a che fare con problemi simili, consigli? Documenti da linkare?
Grazie

P.S. So che mathworks mette a disposizione una serie di blocchi simulink per scrivere e leggere dalla beaglebone, ma non li posso avere per questioni di licenze. Quindi me li devo fare