Se sei già registrato           oppure    

Orario: 10/05/2024 17:28:09  

 

Energia Alternativa ed Energia Fai Da Te > PPTEA

VISUALIZZA L'ALBUM

Pagine: (5)   [1]   2   3   4   5    (Ultimo Msg)


PPTEA -> PC, Scambio Dati, grafici , momorizzazione su HD, etc..
FinePagina

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 15/1/2012,07:44

Questo argomento è stato affrontato più di qualche volta in alcuni progettini realizzati con il PPTEA: temperatura su PC, Voltmetro per PC,Oscilloscopio, etc...
Il PPTEA può sfruttare la porta usb e colloquiare con il PC...a questo punto basta realizzare un SW che si interfacci con la porta USB (vista come seriale) e il gioco è fatto. Ma come fare per scambiare i dati?
Il PPTEA ha 3 istruzioni (USBOUT, USBOUTB, USBINP) per comunicare con il PC...invia i dati e li riceve.
In questo caso vedremo solo l'invio dei dati...cioè il PPTEA utilizza i suoi convertitori Analogico digitali e li invia al pc...ma in che modo?
C'è una lunga teoria per la trasmissione dei segnali...la salterò a piè pari...farò un esempio pratico cercado di descriverlo.

Ognuno può utilizzare un qualsiasi modo...ma per essere sicuri di inviare dati ed essere capiti occorre definire un protocollo.E' una parolona...ma di fatto è un metodo, condiviso , per scambiare informazioni.Utilizziamo un metodo senza feedback...cioè inviamo dei dati...se vengono capiti bene...altrimenti non fa nulla. faccine/tongue.gif

I dati sono 'BYTE oriented'...cioè le informazioni che scambiamo sono dei byte (0-256)...cioè le parole che scambiamo sono valori a 8 bit ( 8 bit=1 BYTE). Quando scambiamo delle informazioni dobbiamo sapere quante informazioni dobbiamo inviare...e dobbiamo far capire quando iniziano e quando finiscono.COme fare?

Quando iniziamo inviamo un valore di start (ex :33) quando abbiamo finito i dati inviamo un dato di stop (ex:66)
Quindi se boddiamo inviare i 4 dati 5,35,56,99...ne invieremo qualcuno in più per far capire a chi li riceve come interpretarli. Quindi possiamo inviare i dati:
|33| 5|35|56|99|66|
Quindi per inviare i 4 dati ne abbiamo messo uno in testa (33 start) ed uno alla fine (66 stop).Chi riceva (il sw presengte sul PC) vede arrivare i dati con lo start e stop ...e può calcolarsi il numero dei dati trasferiti ed anche loro valore...ma deve fare dei calcoli. Per semplificare l'operazione di chi riceve i dati, chi l'invia può inserire (nella testata...cioè nella parte iniziale) anche quanti dati deve inviare.
Cioè
|33| 4| 5| 35|56|99|66|
A questo punto i dati inviati sono 4+3 (start, nbyte, stop).
Può capitare che i dati arrivino in modo errato...disturbi di rete...etc...e per essere sicuri che chi li riceve sappia se li ha ricevuti in modo corretto. Come si fa?
Si utilizza un byte di controllo...viene chiamato checksum (CKS)...cioè un controllo di somma...cioè tuti i dati vengono sommati e questo dato viene accodato ai dati inviati.
Facciamo un esmepio:
|33|4|5|35|56|99|CSK|66|
CSK è la somma di 5+35+56+99=195...quindi i messaggio completo sarà:

|33|4|5|35|56|99|195|66|

In questo modo abbiamo definito un protocollo e il messaggio che viene scambiato viene chiamato PACCHETTO...definito in questo modo:
|START|NUN_DATI|DATO1|DATO2|...| CHECKSUM|STOP|

Chi riceve il pacchetto quando vede arriare il 33 (START) sa che sta iniziano il pacchetto, subito dopo vede arriare la lunghezza dei dati..letti i dati (5,35,56,99) si vede arrivare la checksum (195) e subito dopo DEVE arrivare lo stop (66).Se Start e Stop sono corretti si passa a fare i conti della checksum...se è giusta il pacchetto è esatto ( o ci sono alte probabilità che sia giusto).

Vediamo l'esempio del sensore di temperatura del PPTEA...che utilizza un protocollo leggermente diverso....invia la checksum dopo lo stop :

CODICE
91 PSTART=22
92 PSTOP=33
93 TEMP=CADS2
94 USBOUT=PSTART
95 USBOUT=TEMP 'Invio la temperatura
96 USBOUT= PSTOP
97 USBOUT= PSTART+PSTOP+TEMP ' CHECKSUM
110 WAITS 1 ' Attendo un secondo tra una lettura
120 goto 93

Viene utilizzato 22 come start, 33 come stop e i dati inviati sono
|START|TEMP|STOP|CHECKSUM|

Chiaro?Dubbi?
Il prossimo passo sarà realizzare un sw sul pc che visualizzi un grafico ... faccine/smile.gif
Bolle




Modificato da NonSoloBolleDiAcqua - 15/1/2012, 12:42


---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

PinoTux

Avatar
GigaWatt


Gruppo:AMMINISTRATORE
Messaggi:3509

Stato:



Inviato il: 15/1/2012,12:11

Ho avuto qualche dubbio quando nell'esempio sei partito con 5 dati e poi nell'esempio del CKS parlavi di quattro:

CITAZIONE
Cioè
|33| 4| 5| 35|25|56|99|66|
A questo punto i dati inviati sono 4+3 (start, nbyte, stop).

Riprendendo più sotto il tutto quadrava:
CITAZIONE
Facciamo un esmepio:
|33|4|5|35|56|99|CSK|66|
CSK è la somma di 5+35+56+99=195...quindi i messaggio completo sarà:

|33|4|5|35|56|99|195|66|

Nell'esempio di sopra c'era il 25 che avanzava?
Sempre che abbia capito bene...o forse sono andato di fretta e non ho capito qualcosa? Sai com'è....l'età.... faccine/sick.gif

P.S.
Forse è prematuro parlarne, ma la velocità di comunicazione, o bit-rate come viene definito?
E' forse una particolarità dell' USB quello di non essere "rigido"? Scusa le domande, ma ero legato al fatto dell'RS232 dove bisognava definire tutto... faccine/smile.gif



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"
http://iv3gfn.altervista.org/
http://pptea.altervista.org/

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 15/1/2012,12:41

CITAZIONE (PinoTux @ 15/1/2012, 12:11)
Nell'esempio di sopra c'era il 25 che avanzava?
Sempre che abbia capito bene...o forse sono andato di fretta e non ho capito qualcosa? Sai com'è....l'età.... faccine/sick.gif

Hai capito bene...è la mia età che avanza....ehhehe...ho corretto l'esempio! faccine/rolleyes.gif


CITAZIONE (PinoTux @ 15/1/2012, 12:11)
Forse è prematuro parlarne, ma la velocità di comunicazione, o bit-rate come viene definito?
E' forse una particolarità dell' USB quello di non essere "rigido"? Scusa le domande, ma ero legato al fatto dell'RS232 dove bisognava definire tutto... faccine/smile.gif

La velocità di trasmissione è un parametro fondamentale...diciamolo subito...queste sono le caratteristiche con cui inviare/ricevere i dati se si utilizza il PPTEA:
19200, 8 bit,NOPARITY, 1 BIT DI STOP
Ciao e grazie
Bolle



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 23/1/2012,15:07

Vediamo come questo eseguibile in allegato permetta la visualizzazione di 3 temperature. Il codice da caricare è questo:

CODICE
10  '------CODICE EABASIC GRAFICO-------
95  'CADS=3
100 PSTART=22
120 PSTOP=33
130 T1=CADS1
133 T2=CADS2
136 T3=CADS3
140 USBOUT=PSTART
150 USBOUT=T1    'Invio il valore del convertitore 1
152 USBOUT=T2    'Invio il valore del convertitore 2
155 USBOUT=T3    'Invio il valore del convertitore 3
160 USBOUT= PSTOP
170 USBOUT= PSTART+PSTOP+T1+T2+T3 ' CHECKSUM
180 WAITS 1 ' Attendo un secondo tra una lettura
190 goto 130
200 '-----------------------------------

L'eseguibile visualizza 5 ore ( espresse in minuti) di registrazione, è possibile salvare il grafico sul PC.
Bolle
ForumEA/us/img857/9163/graficotemperature.jpg



Scarica allegato

GraficoTemperature_1.rar

( Numero download: 151 )



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

titone78

Avatar
MegaWatt


Gruppo:Utente
Messaggi:502

Stato:



Inviato il: 23/1/2012,18:23

ciao bolle,grande,vedo che comunque gli hai gia fatto la predisposizione sia per il 4 e 5 cads.

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 23/1/2012,20:15

E si ... sta nascendo il sw che fa al caso tuo....ma lo posto nell'altra discussione...questo è generico ...il tuo sarà mirato alla tua applicazione.
Ciao
Bole



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

titone78

Avatar
MegaWatt


Gruppo:Utente
Messaggi:502

Stato:



Inviato il: 23/1/2012,20:19

ma per curiosita,dato che non me intendo in che linguaggio scrivi questi programmi?

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 24/1/2012,05:09

In qualsiasi linguaggio...quello è fatto in vb6...dovrebbe essere facile per tutti. Per la tua applicazione posterò anche i sorgenti...se sei in grado di modificarlo.Se non sei capace ... ti seguirò passo passo....facendo le varianti che chiederai! Va bene? faccine/biggrin.gif
Bolle



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

PinoTux

Avatar
GigaWatt


Gruppo:AMMINISTRATORE
Messaggi:3509

Stato:



Inviato il: 24/1/2012,13:17

Funziona! faccine/clap.gif



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"
http://iv3gfn.altervista.org/
http://pptea.altervista.org/

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 25/1/2012,15:26

Allego la versione che monitorizza tutti i 5 sensori di temperatura del PPTEA.

ForumEA//img4/9163/graficotemperature.jpg




Questo è un esempio di codice eabasic del PPTEA.

CODICE
90  '------CODICE EABASIC GRAFICO-------
95  CADS=5
100 PSTART=22
120 PSTOP=33
130 T1=CADS1
133 T2=CADS2
136 T3=CADS3
137 T4=CADS4
138 T5=CADS5
140 USBOUT=PSTART
150 USBOUT=T1    'Invio il valore del convertitore 1
152 USBOUT=T2    'Invio il valore del convertitore 2
155 USBOUT=T3    'Invio il valore del convertitore 3
156 USBOUT=T4    'Invio il valore del convertitore 4
157 USBOUT=T5    'Invio il valore del convertitore 5
160 USBOUT&
#61; PSTOP
170 USBOUT= PSTART+PSTOP+T1+T2+T3+T4+T5 ' CHECKSUM
180 WAITS 1 ' Attendo un secondo tra una lettura
190 goto 130
200 '-----------------------------------

In questa versione c'è il flag del log per salvare i dati che arrivano.
Vengono salvati in continuazione sul file "Dati-gg-mm-aaaa.txt" ( gg= giorno, mm=mese, aaaa= anno) consultabile anche con i dati in arrivo.
I campi sono separati dal separatore | e sono importabili su excell.
I campi sono sette:

1.Secondi arrivo dati ( i secondi partono dall'avvio del programma)
2.3.4.5.6. Temperature da T1 a T5.
7.Orario arrivo dati
Bolle
PS:Ho la sensazione che questo era quello che aveva chiesto Titone... faccine/biggrin.gif





Scarica allegato

GraficoTemperature_2.rar

( Numero download: 151 )



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

titone78

Avatar
MegaWatt


Gruppo:Utente
Messaggi:502

Stato:



Inviato il: 25/1/2012,19:27

Ciao bolle,ci hai preso in pieno faccine/rolleyes.gif
ieri sera mi ero divertito a scrivere un programmino che mi leggeva 5 temperature sul display,e mi trasmetteva 3 temperature via usb sul tuo programmino,stasera lo modifico per i 5 cads "tempo e mal di testa permettendo" e poi lo posto cosi mi puoi dare consigli per cosa modificare.

 

PinoTux

Avatar
GigaWatt


Gruppo:AMMINISTRATORE
Messaggi:3509

Stato:



Inviato il: 25/1/2012,21:28

Bene titone, ho giocato anch'io solo che uso tre temperature e due letture di tensione....
Ora aspettiasmo che Bolle faccia il grafico per monitorare pure le batterie, magari in un unico programma dove scegli la configurazione degli ingressi.
Proposta, visto che tratti i dati "grezzi" e poi il programma li elabora, si potrebbe fare un pgm grafico tipo KISS dove i dati me li elaboro nel pgm .eab e poi li do in pasto al "grafico"? Dico questo perché se mi serve monitorare una tensione di 5kV..... faccine/biggrin.gif



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"
http://iv3gfn.altervista.org/
http://pptea.altervista.org/

 

titone78

Avatar
MegaWatt


Gruppo:Utente
Messaggi:502

Stato:



Inviato il: 25/1/2012,21:38

ciao a tutti,vi posto il programmino che ho scritto,in cui vedo sul display la temperatura di cinque sensori,ed a ogni lettura mi manda il rispettivo valore nel programmino creato da Bolle,il programma e abbastanza lungo e sicuramente ci sono molte parti da modificare,ma almeno sono gia riuscito a fare una buona parte.


10 ' sensore pptea 5 temp
15 ' presentazione
45 cads=5
50 lcdclear
55 lcdpos=&h11
60 lcdwrite="Sensori Stufa"
65 lcdpos=&h21
70 lcdwrite="Wood Gas PPTEA"
75 waits 2
100 ' variabili e impostazioni
102 clr a,b,c,d,e
103 pstart=22
104 pstop=33
105 a=1
106 b=1
107 c=1
108 d=1
109 e=1
200 ' Temperatura entrata scambiatore lcd+usb
205 lcdclear
210 lcdpos=&h11
215 lcdwrite="IN Scambiatore"
220 lcdpos=&h21
225 lcdwrite="Temp= "
252 gosub :usb
255 t=t1
260 gosub :temperatura
265 lcdpos=&h27
270 lcdwrite= strtemp
275 a++
280 waitms 250
285 if a <15 then 252
300 ' temperatura uscita scambiatore lcd+usb
305 lcdclear
310 lcdpos=&h11
315 lcdwrite="OUT Scambiatore"
320 lcdpos=&h21
325 lcdwrite="Temp= "
335 gosub :usb
355 t=t2
360 gosub :temperatura
365 lcdpos=&h27
370 lcdwrite= strtemp
375 b++
380 waitms 250
385 if b <15 then 335
400 ' temperatura accumulo display
405 lcdclear
410 lcdpos=&h11
420 lcdwrite="Accumulo"
425 lcdpos=&h21
430 lcdwrite="Temp= "
433 gosub :usb
435 t=t3
440 gosub :temperatura
445 lcdpos=&h27
450 lcdwrite= strtemp
455 c++
460 waitms 250
465 if c <15 then 433
500 ' temperatura uscita acqua fancoil display
505 lcdclear
510 lcdpos=&h11
515 lcdwrite="OUT FanCoil"
520 lcdpos=&h21
525 lcdwrite="Temp= "
526 gosub :usb
530 t=t4
535 gosub :temperatura
540 lcdpos=&h27
545 lcdwrite= strtemp
550 d++
555 waitms 250
560 if d <15 then 526
600 ' temperatura ambiente display+usb
605 lcdclear
610 lcdpos=&h11
615 lcdwrite="Temp Ambiente"
620 lcdpos=&h21
625 lcdwrite="Temp= "
635 gosub :usb
655 t=t5
660 gosub :temperatura
665 lcdpos=&h27
670 lcdwrite= strtemp
675 e++
680 waitms 250
685 if e <15 then 635
890 goto 102
920 :usb
921 t1=cads1
922 t2=cads2
923 t3=cads3
924 t4=cads4
925 t5=cads5
928 usbout=pstart
929 usbout=t1
930 usbout=t2
935 usbout=t3
936 usbout=t4
937 usbout=t5
940 usbout=pstop
945 usbout=pstart+t1+t2+t3+t4+t5+pstop ' checksum
950 return
1000 :temperatura
1005 temp=t*5.0/1023
1010 temp*=100
1015 strtemp=left(temp&"",4)
1020 return

ciao a tutti

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 25/1/2012,21:44

Ciao Titone,
ma sei riuscito a vedere il grafico? Se vuoi do una ritoccatina al tuo programma...senza stravolgerlo molto...ma solo se vuoi!
Ciao
Bolle



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

titone78

Avatar
MegaWatt


Gruppo:Utente
Messaggi:502

Stato:



Inviato il: 25/1/2012,21:50

bolle una ritocatta la voglio molto volentieri,almeno capisco dove poter risparmiare spazio e migliorare il software,certo che il grafico lo vedo,tutte e 5 le temperature e funziona molto bene faccine/wink.gif
adesso mi manca da mettere insieme una schedina e almeno posso monitorare gia qualcosa,questo e il primo passo per una vera centralina

 
 InizioPagina
 

Pagine: (5)   [1]   2   3   4   5    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum