ITTO20100828A1 - Metodo per trasmettere valori numerici da una unita' di rilevazione ad una unita' di controllo - Google Patents
Metodo per trasmettere valori numerici da una unita' di rilevazione ad una unita' di controllo Download PDFInfo
- Publication number
- ITTO20100828A1 ITTO20100828A1 IT000828A ITTO20100828A ITTO20100828A1 IT TO20100828 A1 ITTO20100828 A1 IT TO20100828A1 IT 000828 A IT000828 A IT 000828A IT TO20100828 A ITTO20100828 A IT TO20100828A IT TO20100828 A1 ITTO20100828 A1 IT TO20100828A1
- Authority
- IT
- Italy
- Prior art keywords
- bits
- succession
- code
- time
- nmin
- Prior art date
Links
- 238000001514 detection method Methods 0.000 title claims description 56
- 238000000034 method Methods 0.000 title claims description 32
- 230000005540 biological transmission Effects 0.000 claims description 25
- 238000005070 sampling Methods 0.000 claims description 9
- 230000003247 decreasing effect Effects 0.000 claims description 4
- 230000000737 periodic effect Effects 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 description 102
- 230000000875 corresponding effect Effects 0.000 description 69
- 238000013480 data collection Methods 0.000 description 27
- 230000001360 synchronised effect Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 11
- 238000011084 recovery Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 101150002629 TAS1 gene Proteins 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 239000004020 conductor Substances 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q9/00—Arrangements in telecontrol or telemetry systems for selectively calling a substation from a main station, in which substation desired apparatus is selected for applying a control signal thereto or for obtaining measured values therefrom
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2209/00—Arrangements in telecontrol or telemetry systems
- H04Q2209/80—Arrangements in the sub-station, i.e. sensing device
- H04Q2209/82—Arrangements in the sub-station, i.e. sensing device where the sensing device takes the initiative of sending data
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Prostheses (AREA)
- Control Of Eletrric Generators (AREA)
- Crystals, And After-Treatments Of Crystals (AREA)
Description
DESCRIZIONE
“METODO PER TRASMETTERE VALORI NUMERICI DA UNA UNITA' DI RILEVAZIONE AD UNA UNITA' DI CONTROLLOâ€
La presente invenzione à ̈ relativa ad un metodo per trasmettere valori numerici da una unità di rilevazione ad una unità di controllo.
Come à ̈ noto, sono oggi particolarmente diffusi sistemi di rilevazione che comprendono, ciascuno, una pluralità di unità di rilevazione ed almeno una unità di controllo, tipicamente disposta a distanza rispetto alle unità di rilevazione. Ciascuna unità di rilevazione comprende una rispettiva unità di elaborazione e uno o più sensori, i quali sono collegati all’unità di elaborazione e rilevano l’andamento nel tempo di rispettive grandezze, cui nel seguito ci si riferisce come ai parametri. Gli andamenti rilevati sono quindi comunicati dalle unità di rilevazione all’unità di controllo, la quale sovrintende alle operazioni svolte dalle unità di rilevazione e può intraprendere specifiche azioni sulla base degli andamenti rilevati.
In dettaglio, considerando per semplicità di descrizione un sistema di rilevazione formato da una singola unità di rilevazione comprendente un singolo sensore, la rispettiva unità di elaborazione acquisisce e memorizza valori numerici relativi al parametro monitorato dal sensore. Assumendo che il singolo sensore fornisca un segnale (non necessariamente analogico) indicativo dei valori numerici assunti nel tempo dal parametro, tali valori numerici possono essere acquisiti in modo periodico (sincrono), ad esempio campionando il segnale fornito dal sensore oppure interrogando il sensore, come accade frequentemente nel caso di sensori di tipo digitale. I valori numerici possono altresì essere acquisiti in modo asincrono; in tal caso, tipicamente à ̈ il sensore stesso che notifica all’unità di elaborazione variazioni del parametro, non appena rilevate.
Indipendentemente da come vengono acquisiti i valori numerici, l’unità di rilevazione trasmette all’unità di controllo i valori numerici da essa acquisiti, in maniera tale da renderli disponibili all’unità di controllo stessa. La trasmissione dei valori numerici acquisiti può risultare onerosa; infatti, i valori numerici sono acquisiti dall’unità di elaborazione in un formato che à ̈ proprio del sensore stesso. Ad esempio, nel caso in cui il sensore sia di tipo digitale e fornisca valori numerici espressi in un certo formato, inteso come numero di bit e tipo di codifica (ad esempio, codifica a virgola mobile, “floating point coding†), l’unità di elaborazione acquisisce valori numerici nel certo formato. Pertanto, a seconda della precisione del sensore, può essere necessario trasmettere, per ciascun valore numerico, un elevato numero di bit, con conseguente incremento del traffico scambiato all’interno del sistema di rilevazione.
Nel caso di un sistema semplificato comprendente una sola unità di rilevazione, la trasmissione, per ciascun valore numerico, di un elevato numero di bit comporta una perdita di efficienza. Inoltre, al crescere del numero di unità di rilevazione, una simile trasmissione di valori numerici può risultare problematica, in particolare nel caso di sistemi di rilevazione in cui le unità di rilevazione comunicano con l’unità di controllo mediante canali di comunicazione a basso bit rate, cioà ̈ con velocità di trasmissione (“bit rate†) inferiore a 256Kbit/s.
In particolare, la trasmissione di valori numerici può risultare problematica nel caso in cui l’unità di controllo e le unità di rilevazione comunichino tra loro mediante impiego di canali commutati, cioà ̈ nel caso in cui le comunicazioni tra l’unità di controllo e ciascuna unità di rilevazione avvengano previa instaurazione dinamica di un rispettivo canale di comunicazione di tipo punto-punto. Infatti, in tal caso si verifica che, a causa del basso bit rate, la trasmissione di un generico valore numerico da parte di una generica unità di rilevazione richiede un rispettivo tempo di collegamento, durante il quale la generica unità di rilevazione deve rimanere collegata all’unità di controllo mediante un rispettivo canale commutato. Durante il tempo di collegamento, di durata non trascurabile, l’unità di controllo non può collegarsi ad alcuna altra unità di rilevazione, con conseguente ritardo nella trasmissione di valori numerici acquisiti da altre unità di rilevazione, o addirittura perdita di tali valori numerici.
Nei contesti sopradescritti à ̈ dunque sentita l’esigenza di limitare il traffico trasmesso dalle unità di rilevazione all’unità di controllo per trasmettere i valori numerici acquisiti dalle rispettive unità di elaborazione.
Scopo della presente invenzione à ̈ quello di fornire un metodo di trasmissione di valori numerici che risolva almeno in parte gli inconvenienti dell’arte nota.
Secondo la presente invenzione vengono forniti un metodo di trasmissione di valori numerici, una unità di rilevazione ed una rete di sensorie come definiti, rispettivamente, nelle rivendicazioni 1, 13 e 14.
Per una migliore comprensione dell’invenzione, ne vengono ora descritte forme di realizzazione, a puro titolo di esempio non limitativo e con riferimento ai disegni allegati, nei quali:
- la figura 1 mostra in forma schematica un sistema di rilevazione;
- le figure 2, 3, 5, 6, 8, 9, 11 e 14 mostrano diagrammi di flusso di operazioni secondo il presente metodo
- le figure 4, 7, 10 e 12 mostrano schematicamente strutture dati secondo la presente invenzione; e
- la figura 13 mostra in formato esadecimale una stringa binaria di dati.
La figura 1 mostra un sistema di rilevazione 1, il quale comprende un’unità di controllo 2, un supporto di comunicazione 4 ed una pluralità di unità di rilevazione 6, non necessariamente uguali tra loro e collegate all’unità di controllo 2 mediante il supporto di comunicazione 4. In particolare, in figura 1 sono mostrate, a titolo puramente esemplificativo, tre unità di rilevazione 6. Inoltre, sempre a titolo esemplificativo, una sola tra le tre unità di rilevazione illustrate à ̈ mostrata in maggior dettaglio.
L’unità di rilevazione 6 e l’unità di controllo 2 sono sincronizzate rispetto ad un medesimo tempo di sistema. Inoltre, ciascuna unità di rilevazione 6 comprende un rispettivo dispositivo elettronico periferico 8 ed una pluralità di apparati sensori 10, collegati al dispositivo elettronico periferico 8; a titolo esemplificativo, in figura 1 sono mostrati tre apparati sensori 10. Sebbene non mostrato, ciascuna unità di rilevazione 6 può avere un differente numero di apparati sensori 10.
A sua volta, ciascun dispositivo elettronico periferico 8 comprende una unità di elaborazione 12, una memoria volatile 14, una memoria non volatile 16 e un modulo di ricetrasmissione 18. La memoria volatile 14, la memoria non volatile 16 ed il modulo di ricetrasmissione 18, come pure gli apparati sensori 10, sono collegati all’unità di elaborazione 12.
Operativamente, l’unità di controllo 2 à ̈ in grado di collegarsi selettivamente a ciascuna unità di rilevazione 6, instaurando un rispettivo canale di comunicazione sul supporto di comunicazione 4. Ad esempio, il supporto di comunicazione 4 può non essere altro che lo spazio libero presente tra l’unità di controllo 2 e le unità di rilevazione 6, oppure può essere formato da collegamenti di materiale conduttore; in quest’ultimo caso, il supporto di comunicazione 4 à ̈ di tipo cablato (“wired†). Inoltre, in un dato istante di tempo, l’unità di controllo 2 à ̈ in grado di comunicare con una sola unità di rilevazione 6, la quale, in modo di per sé noto, può comunicare con l’unità di controllo 2 attraverso il proprio modulo di ricetrasmissione 18.
Operativamente, ciascun apparato sensore 10 monitora un corrispondente parametro e fornisce all’unità di elaborazione 12 cui à ̈ collegato un rispettivo segnale, analogico o digitale, indicativo del corrispondente parametro monitorato. In maggior dettaglio, considerato un generico apparato sensore 10 tra gli apparati sensori 10 di una generica unità di rilevazione 6, esso coopera con l’unità di elaborazione 12 dell’unità di rilevazione 6 cui appartiene in modo che tale unità di elaborazione 12 acquisisca in modo sincrono e/o asincrono valori numerici relativi al parametro monitorato dall’apparato sensore considerato 10. In modo di per sé noto, l’acquisizione di un valore numerico X può avvenire, ad esempio:
i) in modo sincrono, mediante interrogazione periodica, con un periodo di campionamento T (descritto in seguito), dell’apparato sensore considerato 10 da parte dell’unità di elaborazione 12 collegata all’apparato sensore considerato 10, e conseguente comunicazione del valore numerico X da parte dell’apparato sensore considerato 10; e/o
ii) in modo asincrono, mediante comunicazione del valore numerico X da parte dell’apparato sensore considerato 10, in seguito ad una rilevazione di una variazione del corrispondente parametro da parte dello stesso apparato sensore considerato 10.
In pratica, nel caso in cui il valore numerico X sia acquisito secondo ii), l’acquisizione avviene in modo non correlato rispetto ad alcuna interrogazione periodica dell’apparato sensore considerato 10 da parte dell’unità di elaborazione 12 ad esso collegata.
Nel seguito si assume che le acquisizioni asincrone abbiano una discretizzazione temporale al più pari a Δt, cioà ̈ che la minima distanza temporale tra due acquisizioni asincrone sia pari a Δt.
In maggior dettaglio, l’apparato sensore considerato 10 coopera con l’unità di elaborazione 12 cui à ̈ collegato in maniera tale per cui l’unità di elaborazione 12 acquisisce il valore numerico X in un formato di codifica che à ̈ proprio dell’apparato sensore considerato 10 (ad esempio, formato in virgola mobile su un certo numero di bit), o comunque di un accoppiamento elettronico (ad esempio, mediante canale analogico e convertitore analogico-digitale) presente tra l’unità di elaborazione 12 e l’apparato sensore considerato 10, indipendentemente dal fatto che l’acquisizione avvenga nel modo sincrono i) oppure nel modo asincrono ii). Nel seguito ci si riferisce a tale formato di codifica come al formato originale.
Una volta acquisito, il valore numerico X viene associato dalla summenzionata unità di elaborazione 12 ad un corrispondente istante di acquisizione, nonché, come descritto in seguito, ad una corrispondente modalità di acquisizione, alternativamente sincrona o asincrona, a seconda di come il valore numerico X à ̈ stato acquisito.
Ciò premesso, per semplicità , e senza alcuna perdita di generalità , nel seguito si descrive il presente metodo con riferimento a una situazione semplificata in cui il sistema di rilevazione 1 comprende una singola unità di rilevazione 6, alla quale ci si riferisce come all’unità di rilevazione 6. Inoltre, si assume che l’unità di rilevazione 6 comprenda un solo apparato sensore, al quale ci si riferisce come all’apparato sensore 10. Con tali ipotesi semplificative, i valori numerici si riferiscono ad un solo parametro. La seguente descrizione può in ogni caso essere generalizzata ad un sistema di rilevazione che comprende un qualsivoglia numero di unità di rilevazione, ciascuna delle quali comprende a sua volta un numero qualsiasi di apparati sensori.
Nel seguito si assume inoltre che il parametro, oltre ad essere esprimibile numericamente, abbia una dinamica compresa tra un rispettivo valore minimo Vmin ed un rispettivo valore massimo Vmax, ed abbia una discretizzazione Step. Il valore minimo Vmin, il valore massimo Vmax e la discretizzazione Step sono caratteristici dell’apparato sensore 10 e sono noti sia all’unità di elaborazione 12 che all’unità di controllo 2. In particolare, la discretizzazione Step del parametro dipende dalla precisione dell’apparato sensore 10 e coincide con la minima variazione del parametro rilevabile dall’apparato sensore 10, e quindi con la minima differenza non nulla possibile tra due valori numerici acquisiti mediante l’apparato sensore 10.
Operativamente, l’unità di elaborazione 12 à ̈ inoltre in grado di eseguire, su ciascun valore numerico acquisito, un numero N (con N≥2) di algoritmi di codifica, di tipo di per sé noto, i quali forniscono N corrispondenti numeri interi codificati, ciascuno dei quali à ̈ formato da un multiplo intero di byte.
Ad esempio, nel caso N=2, l’unità di elaborazione 12 à ̈ in grado di eseguire un primo ed un secondo algoritmo di codifica, i quali forniscono, a partire da un medesimo valore numerico acquisito, un primo ed un secondo numero intero codificato, i quali sono formati, rispettivamente, da un primo ed un secondo numero di byte. Come chiarito in seguito mediante esempi, il primo ed il secondo numero di byte possono dipendere, oltre che dal primo e dal secondo algoritmo di codifica, dalla natura del parametro, intendendo con natura del parametro la dinamica del parametro e/o la discretizzazione Step del parametro stesso.
Come mostrato in maggior dettaglio in figura 2, indicando con Vpar un generico valore numerico del parametro, gli algoritmi di codifica prevedono di trasformare (blocco 200) il valore numerico Vpar in un numero intero NUM-INT, positivo o negativo, e quindi di codificare (blocco 210) il numero intero NUM-INT su un rispettivo numero locale di byte, ottenendo un corrispondente numero intero codificato NUM-BIT.
Nel codificare il numero intero NUM-INT, à ̈ possibile che uno o più algoritmi di codifica generino una cosiddetta eccezione. In assenza di eccezioni (descritte in seguito), tutti gli algoritmi di codifica prevedono di codificare il numero intero NUM-INT su un medesimo numero teorico di byte, in maniera tale per cui il numero locale di byte coincide con il numero teorico di byte. Alternativamente, in presenza di eccezioni, à ̈ possibile che il numero locale di byte sia diverso dal numero teorico di byte, come descritto in seguito mediante esempi.
In aggiunta, Ã ̈ possibile discernere tra cosiddetti algoritmi di codifica di classe a) e algoritmi di codifica di classe b), sulla base del fatto che gli esiti delle rispettive fasi di trasformare il valore numerico Vpar in un numero intero NUM-INT, e quindi gli stessi numeri interi NUM-INT da essi forniti, a) non possano che essere positivi, oppure b) possano essere sia positivi che negativi.
In maggior dettaglio, nel caso degli algoritmi di codifica di classe a), il numero intero NUM-INT viene codificato secondo una codifica A, la quale à ̈ una codifica binaria standard di numeri interi positivi (in base alla quale, ad esempio, su otto bit si possono codificare duecentocinquantasei differenti numeri interi positivi), modificata in maniera tale per cui à ̈ vietato l’impiego, ai fini della codifica, di stringhe di bit i cui bit del gruppo di quattro bit (“nibble†) più significativo siano tutti pari a “1†.
Invece, nel caso degli algoritmi di codifica di classe b), il numero intero NUM-INT viene codificato secondo una codifica B, la quale avviene secondo le seguenti regole:
- il bit più significativo del byte più significativo del numero intero codificato NUM-BIT à ̈ posto pari a “0†se il numero intero NUM-INT à ̈ positivo o nullo, e pari a “1†se il numero intero NUM-INT à ̈ negativo;
- i tre bit meno significativi del gruppo di quattro bit (“nibble†) più significativo del numero intero codificato NUM-BIT non possono essere tutti pari a “1†, per motivi che saranno chiariti in seguito.
In pratica, assumendo che il numero teorico di byte sia pari a uno, gli algoritmi di codifica di classe a) possono codificare, cioà ̈ discriminare, fino a duecentoquaranta differenti numeri interi, che corrispondono a duecentoquaranta differenti valori numerici, mentre gli algoritmi di codifica di classe b) possono codificare fino a centododici differenti numeri interi positivi ed altrettanti numeri interi negativi, per un totale di duecentoventitre differenti valori numerici. Inoltre, prevenendo la generazione di numeri interi codificati con nibble più significativo pari a “1111†, restano a disposizione sedici diversi valori di escape, codificati su un byte ed esprimibili in notazione esadecimale come “0xFw†con 0≤w≤F. I valori di escape sono noti all’unità di controllo 2.
Nel seguito si descrivono alcuni esempi di possibili algoritmi di codifica, a titolo esemplificativo e non limitativo. Inoltre, nel seguito, per brevità , ci si riferisce ai numeri interi codificati NUM-BIT forniti dagli algoritmi di codifica come ai codici.
In dettaglio, un primo algoritmo di codifica, cui nel seguito ci si riferisce come all’algoritmo del valore minimo, prevede, dato il valore numerico Vpar, di porre il corrispondente numero intero NUM-INT pari a (Vpar-Vmin)/Step, cioà ̈ pari al numero di passi di discretizzazione da sommare al valore minimo Vmin per ottenere il valore numerico Vpar. Tale numero intero NUMINT può essere positivo o nullo, dunque il corrispondente codice NUM-BIT viene ottenuto codificando il numero intero NUM-INT sul numero teorico di byte, secondo la summenzionata codifica A.
In ricezione, l’unità di controllo 2 può determinare nuovamente il valore numerico Vpar. A tal fine, l’unità di controllo 2 decodifica il codice NUM-BIT, ottenendo il numero intero NUM-INT, e successivamente calcola Vpar=Vmin+Num*Step. L’algoritmo del valore minimo non prevede la possibilità di generare eccezioni.
Un secondo algoritmo di codifica, cui nel seguito ci si riferisce come all’algoritmo differenziale, prevede di determinare il numero intero NUM-INT relativo al valore numerico Vpar in funzione del valore numerico acquisito immediatamente prima del valore numerico Vpar, indicato nel seguito come Vpar_prec. In dettaglio, l’algoritmo differenziale prevede, dato il valore numerico Vpar, di porre il corrispondente numero intero NUM-INT pari a (Vpar-Vpar_prec)/Step. Tale numero intero NUM-INT può essere sia negativo che positivo, e pertanto il codice NUM-BIT corrispondente al valore numerico Vpar à ̈ ottenuto codificando il numero intero NUM-INT sul numero teorico di byte (salvo eccezioni), secondo la summenzionata codifica B.
L’algoritmo differenziale prevede la possibilità di generare eccezioni. In particolare, qualora il valore numerico Vpar_prec non esista, ad esempio perché il valore numerico Vpar à ̈ il primo valore numerico che viene acquisito dall’unità di elaborazione 12, si genera un’eccezione; in tal caso, il valore numerico Vpar viene codificato utilizzando un algoritmo alternativo, noto a priori all’unità di elaborazione 12 ed all’unità di controllo 2, quale ad esempio l’algoritmo del valore minimo precedentemente descritto. In particolare, in caso di eccezione, il codice NUM-BIT viene posto pari ad una sequenza binaria esprimibile in notazione esadecimale come “0xFBwwxxFF†, non necessariamente formata dal numero teorico di byte. In dettaglio, “FB†à ̈ uno dei summenzionati valori di escape; “ww†identifica l’algoritmo alternativo; “xx†à ̈ il codice NUM_BIT come ottenibile applicando l’algoritmo alternativo al numero intero NUM-INT relativo al valore numerico Vpar (nella fattispecie, si à ̈ ipotizzato che il numero teorico di byte sia pari a uno); e “FF†à ̈ un ulteriore valore di escape.
In ricezione, l’unità di controllo 2 può determinare nuovamente il valore numerico Vpar. A tal fine, l’unità di controllo 2 decodifica il codice NUM-BIT, ottenendo il numero intero NUM-INT, e successivamente calcola Vpar=Vpar_prec+Num*Step.
Un terzo algoritmo di codifica, cui nel seguito ci si riferisce come all’algoritmo del valore nominale, prevede di determinare il numero intero NUM-INT relativo al valore numerico Vpar in funzione di un valore di riferimento Vrif, il quale può essere compreso tra il valore minimo Vmin ed il valore massimo Vmax, e può essere pari al valore numerico statisticamente più probabile per il parametro. Inoltre, il valore di riferimento Vrif à ̈ noto all’unità di controllo 2.
In dettaglio, l’algoritmo del valore nominale prevede, dato il valore numerico Vpar, di porre il corrispondente numero intero NUM-INT pari a (Vpar-Vrif)/Step, cioà ̈ pari al numero di passi di discretizzazione da sommare o sottrarre al valore di riferimento Vrif per ottenere il valore numerico Vpar. Tale numero intero NUM-INT può essere positivo o negativo, dunque il corrispondente codice NUM-BIT si ottiene codificando il numero intero NUM-BIT sul numero teorico di byte, secondo la summenzionata codifica B. L’algoritmo del valore nominale non prevede la possibilità di generare eccezioni.
In ricezione, l’unità di controllo 2 può determinare nuovamente il valore numerico Vpar. A tal fine, l’unità di controllo 2 decodifica il codice NUM-BIT, ottenendo il numero intero NUM-INT, e successivamente calcola Vpar=Vrif+Num*Step.
Tutto ciò premesso, al fine di consentire la trasmissione dei valori numerici acquisiti dall’unità di elaborazione 12 all’unità di controllo 2, vengono eseguite le operazioni mostrate in figura 3.
In dettaglio, inizialmente l’unità di elaborazione 12 imposta (blocco 300) il summenzionato numero teorico di byte. In particolare, il numero teorico di byte può essere determinato in funzione di un numero D di possibili valori numerici che il parametro può assumere, tale numero D essendo pari a (Vmax-Vmin)/Step. In pratica, il numero teorico di byte à ̈ almeno pari al minimo numero di byte sufficiente per codificare il numero D in base alla summenzionata codifica A.
Successivamente, l’unità di controllo 2 invia (blocco 310) all’unità di rilevazione 6, ad esempio in modo periodico, un messaggio di richiesta di collezione dati, relativo al parametro monitorato dall’apparato sensore 10.
In generale, cioà ̈ con riferimento al caso in cui vi siano più unità di rilevazione, più apparati sensori e più di un parametro, il messaggio di richiesta di collezione dati contiene:
- un identificativo di unità di rilevazione (facoltativo, nel caso di singola unità di rilevazione), che identifica una corrispondente unità di rilevazione;
- un identificativo di apparato (facoltativo, nel caso di singolo apparato sensore), che identifica un corrispondente apparato sensore;
- un identificativo di parametro (facoltativo, nel caso di singolo parametro), che identifica un corrispondente parametro;
- un identificativo di sessione, che identifica lo stesso messaggio di richiesta di collezione dati, o meglio una corrispondente sessione di collezione dati, iniziata dallo stesso messaggio di richiesta di collezione dati;
- un periodo di osservazione, definito da una data/ora di inizio, alla quale ci si riferisce in seguito come a START, ed una data/ora di fine; e
- un periodo di campionamento T.
Nuovamente con riferimento alla situazione semplificata, al ricevimento del messaggio di richiesta di collezione dati, l’unità di elaborazione 12 crea (blocco 320) nella memoria non volatile 16 un corrispondente file di recupero, ad esempio del tipo cosiddetto “linguaggio di marcatura estensibile†(“Extensible Markup Language†, XML), nel quale memorizza il messaggio di richiesta di collezione dati.
Successivamente, l’unità di elaborazione 12 determina un numero standard di byte di tempo (blocco 330), il quale à ̈ almeno pari al numero di byte necessario per codificare (ad esempio, sulla summenzionata codifica A) un numero intero positivo pari al rapporto tra il periodo di campionamento T e la discretizzazione temporale Δt. Ad esempio, nel caso in cui T=1 minuto e Δt=1 secondo, il summenzionato numero intero positivo à ̈ pari a sessanta, dunque il numero standard di byte di tempo à ̈ pari a uno.
Inoltre, l’unità di elaborazione 12 determina (blocco 340) periodicamente se occorre iniziare una raccolta dati. A tal proposito, si noti che le operazioni di cui al blocco 340 sono mostrate, per motivi di semplicità , come successive rispetto alle operazioni di cui ai blocchi 300-330, sebbene esse siano eseguite dall’unità di elaborazione 12 in modo indipendente rispetto alle operazioni di cui ai blocchi 300-330.
In dettaglio, per determinare l’eventuale inizio di una raccolta dati, l’unità di elaborazione 12 controlla periodicamente se all’interno della memoria non volatile 16 sono memorizzati messaggi di richiesta di collezione dati. Nel caso in cui sia memorizzato almeno un messaggio di richiesta di collezione dati, l’unità di elaborazione 12, che dispone di un rispettivo tempo di sistema, confronta il proprio tempo di sistema con le date/ore di inizio contenute nei messaggi di richiesta di collezione dati memorizzati, iniziando una corrispondente raccolta dati per ciascuno dei messaggi di richiesta di collezione dati memorizzati la cui rispettiva data/ora di inizio à ̈ pari alla somma della data/ora di inizio e di un tempo di guardia arbitrario. In pratica, l’unità di elaborazione 12 può gestire molteplici raccolte dati, anche in modo concorrente, cioà ̈ temporalmente sovrapposte in tutto o in parte. Come descritto in seguito, in generale ciascuna raccolta dati à ̈ relativa ad un corrispondente parametro e comporta la gestione, da parte dell’unità di elaborazione 12, di rispettive strutture dati (tabelle). Inoltre, in caso di raccolte dati concorrenti, le strutture dati di ciascuna singola raccolta dati sono indipendenti dalle strutture dati delle altre raccolte dati. La seguente descrizione fa riferimento, per semplicità , al caso di singola raccolta dati.
Nel caso in cui l’unità di elaborazione 12 determini che occorre iniziare una raccolta dati, essa crea (blocco 350) all’interno della memoria volatile 14 una tabella primaria 20 (figura 4), inizialmente vuota. La tabella primaria 20 à ̈ formata da un numero N+4 di colonne, come descritto in seguito, e rimane memorizzata nella memoria volatile 14 per tutta la durata della raccolta dati.
Successivamente, dopo aver atteso fino a START, l’unità di elaborazione 12 acquisisce (blocco 360) valori numerici ed aggiorna (blocco 370) la tabella primaria 20 ad ogni acquisizione di un nuovo valore numerico. In particolare, l’unità di elaborazione 12 acquisisce valori numerici sia in modo sincrono con periodo pari al periodo di campionamento T, sia (eventualmente) in modo asincrono. Come mostrato in dettaglio in figura 5, per aggiornare la tabella primaria 20 in seguito all’acquisizione, in un istante t0, di un valore numerico Y, l’unità di elaborazione 12 determina (blocco 400) se il valore numerico Y à ̈ stato acquisito in modo sincrono o asincrono, e successivamente applica (blocco 410) gli N algoritmi di codifica al valore numerico Y, ottenendo N corrispondenti codici NUM-BIT.
Successivamente, l’unità di elaborazione 12 inserisce (blocco 420) nella tabella primaria 20 una nuova riga, la quale corrisponde al valore numerico Y.
Nel caso in cui il valore numerico Y sia stato acquisito in modo sincrono, gli N+4 elementi della riga inserita contengono, rispettivamente:
- un identificativo di intervallo temporale, di tipo progressivo ed al quale ci si riferisce in seguito come all’identificativo di slot;
- un valore temporale pari a t0;
- un’indicazione di tipo, alternativamente indicativa di una acquisizione sincrona, qualora il valore numerico Y sia stato acquisito in modo sincrono, oppure di una acquisizione asincrona, qualora il valore numerico Y sia stato acquisito in modo asincrono;
- un valore di parametro, pari al valore numerico Y e codificato secondo il formato originale; e
- gli N codici NUM-BIT relativi al valore numerico Y, ottenuti mediante l’applicazione degli N algoritmi di codifica.
Invece, nel caso in cui il valore numerico Y sia stato acquisito in modo asincrono, gli N+4 elementi della riga inserita sono uguali a quelli descritti relativamente al caso di acquisizione sincrona, a meno dell’identificativo di slot, il quale risulta assente.
Come mostrato a titolo esemplificativo in figura 4, la quale à ̈ relativa al caso N=2 ed all’ipotesi di inizio delle acquisizioni sincrone in un istante di tempo START pari alle 15:20:00, la tabella primaria 20 risulta dunque formata da:
- una colonna di elementi (nell’esempio mostrato in figura 4, la prima colonna) alternativamente vuoti, in caso di righe relative ad acquisizioni asincrone, oppure, in caso di righe relative ad acquisizioni sincrone, contenenti identificativi di slot, questi ultimi essendo ad esempio forniti da un contatore implementato dall’unità di elaborazione 12 ed incrementato di una unità ad ogni acquisizione sincrona;
- una colonna di elementi (nell’esempio mostrato in figura 4, la seconda colonna) che contengono valori temporali, ad esempio nella forma di corrispondenti orari (ore:minuti:secondi);
- una colonna di elementi (nell’esempio mostrato in figura 4, la terza colonna) che contengono indicazioni di tipo, ad esempio formate alternativamente dal carattere “C†, in caso di acquisizione sincrona, e dal carattere “R†, in caso di acquisizione asincrona;
- una colonna di elementi (nell’esempio mostrato in figura 4, la quarta colonna) contenenti i valori di parametro, codificati nel formato originale; e
- N colonne (nell’esempio mostrato in figura 4, la quinta e la sesta colonna) contenenti, ciascuna, i codici NUM-BIT che sono ottenuti mediante applicazione di corrispondenti algoritmi di codifica.
Si noti che, in figura 4, i valori di parametro della quarta colonna sono mostrati, per agevolare la comprensione, in formato ASCII, invece che nel formato originale. Inoltre, in figura 4, come pure in figure successive, i codici NUM-BIT forniti dagli N algoritmi di codifica sono mostrati in notazione esadecimale; tra parentesi sono riportati i corrispondenti numeri interi NUM-INT, come generati dai corrispondenti algoritmi di codifica. Il numero teorico di byte à ̈ pari a uno.
In pratica, si osserva che, indicando con s1 ed s2 due identificativi di slot contenuti in due differenti righe della tabella primaria 20 e tali per cui s2-s1=1, la differenza tra i due valori temporali contenuti in queste due differenti righe à ̈ pari al periodo di campionamento T. Inoltre, tra le due righe della tabella primaria 20 corrispondenti a s2 e s1 ci può essere un numero (eventualmente nullo) di righe relative ad acquisizioni asincrone, le quali si sono verificate tra gli istanti di tempo START+(s1-1)*T e START+(s2-1)*T.
Un particolare valore di escape, ad esempio formato dalla sequenza binaria esprimibile in notazione esadecimale come “0xFC†, può essere inoltre memorizzato nelle colonne dalla tabella primaria 20 che corrispondono agli N algoritmi di codifica nel caso in cui, per un qualsiasi motivo, l’unità di elaborazione 12 non riesca, ad un istante di tempo pari a START+s*T (con s=1,2,…), ad acquisire in modo sincrono un corrispondente valore numerico.
Oltre ad aggiornare (blocco 370, figura 3) la tabella primaria 20, l’unità di elaborazione 12 aggiorna (blocco 380) il file di recupero, inserendovi, per ciascun valore numerico, il corrispondente identificativo di slot (se presente), il corrispondente valore temporale, la corrispondente indicazione di tipo ed il corrispondente valore di parametro. In tal modo, nel caso in cui si verifichi un’interruzione del processo di acquisizione, ad esempio dovuto ad una perdita di alimentazione da parte dell’unità di rilevazione 6, l’unità di elaborazione 12 à ̈ in grado, nel momento in cui l’alimentazione viene ripristinata, di ricreare, sulla base del contenuto del file di recupero, la tabella primaria 20, come disponibile prima dell’interruzione del processo di acquisizione. L’unità di elaborazione 12 può quindi ricominciare ad acquisire valori numerici mediante cooperazione con l’apparato sensore 10, nonché riprendere la trasmissione dei valori numerici all’unità di controllo 2.
In maggior dettaglio, nel caso in cui il processo di acquisizione dei valori numerici da parte dell’unità di elaborazione 12 venga interrotto per un certo intervallo di tempo di interruzione, alla ripresa del processo di acquisizione l’unità di elaborazione 12 ricrea la tabella primaria 20 ed aggiunge, relativamente agli istanti di tempo pari a START+pT (con p=1, 2, …) che cadono all’interno dell’intervallo di tempo di interruzione, corrispondenti righe. Tali corrispondenti righe contengono, oltre ai rispettivi identificativi di slot (pari a p), indicazioni di tipo che identificano l’acquisizione sincrona e, nelle colonne relative agli N algoritmi di codifica, la sequenza binaria esprimibile in notazione esadecimale come “0xFC†.
Il file di recupero può inoltre essere trasmesso dall’unità di elaborazione 12 all’unità di controllo 2, su richiesta della stessa unità di controllo 2. La trasmissione può avvenire, ad esempio, mediante instaurazione di una cosiddetta sessione di protocollo di trasferimento di file (“File Transfer Protocol†, FTP). L’unità di controllo 2 può quindi impiegare il file di recupero per verificare la correttezza di valori numerici comunicati in precedenza dall’unità di rilevazione 6.
A prescindere dalla gestione del file di recupero, l’unità di elaborazione 12 trasmette (blocco 390, figura 3) all’unità di controllo 2 i valori numerici acquisiti, memorizzati nella tabella primaria 20. A tal fine, l’unità di controllo 2 e l’unità di elaborazione 12 eseguono le operazioni mostrate in figura 6.
In particolare, per sollecitare la trasmissione, da parte dell’unità di rilevazione 6, dei valori numerici acquisiti, l’unità di controllo 2 invia (blocco 500), ad esempio in modo periodico con periodo di controllo Tctr, un messaggio di interrogazione all’unità di rilevazione 6 stessa.
Il messaggio di interrogazione contiene:
- il medesimo identificativo di sessione contenuto nel messaggio di richiesta di collezione dati, per identificare la sessione di collezione dati iniziata dallo stesso messaggio di richiesta di collezione dati; e
- un identificativo di ultimo slot temporale s_inf, utilizzato come descritto in seguito.
Ad esempio, il primo messaggio di interrogazione inviato dall’unità di controllo 2 contiene un identificativo di ultimo slot temporale s_inf pari a zero.
L’unità di elaborazione 12 riceve (blocco 510) il messaggio di interrogazione, e successivamente seleziona (blocco 520) un insieme di righe della tabella primaria 20. In particolare, l’unità di elaborazione 12 seleziona le righe della tabella primaria 20 comprese tra la riga avente identificativo di slot pari a s_inf+1 (inclusa) e l’ultima riga avente come indicazione di tipo il carattere “C†(esclusa). In pratica, riferendosi alle informazioni di slot k per indicare le informazioni contenute nelle righe della tabella primaria 20 comprese tra la riga avente identificativo di slot k (inclusa) e la riga avente identificativo di slot k+1 (esclusa), cioà ̈ tutte le informazioni comprese tra la k-esima acquisizione sincrona (inclusa) e la k+1-esima acquisizione sincrona (esclusa), la selezione coinvolge tutte le informazioni di slot successive allo slot inferiore s_inf tranne le informazioni di slot massimo. In pratica, tali informazioni di slot massimo sono le informazioni relative alle righe della tabella primaria 20 aventi valori temporali pari o successivi al valore temporale incluso nella riga contenente un identificativo di slot s_max, il quale à ̈ il massimo identificativo di slot tra tutti gli identificativi di slot contenuti nella tabella primaria 20. Infatti, il processo di acquisizione di tali informazioni di slot massimo può non essere ancora terminato.
Successivamente, l’unità di elaborazione 12 genera (blocco 530) una tabella secondaria 22, sulla base dell’insieme di righe della tabella primaria 20 precedentemente selezionato. In figura 7 à ̈ mostrato un esempio di tabella secondaria 22, relativo all’esempio di tabella primaria 20 mostrato in figura 4 e al caso in cui il numero standard di byte di tempo à ̈ pari a due.
La tabella secondaria 22 à ̈ formata da N+2 colonne. In dettaglio, la tabella secondaria 22 contiene una colonna di elementi (nell’esempio mostrato in figura 7, la prima colonna) alternativamente vuoti oppure contenenti identificativi di slot, una colonna di offset temporali (nell’esempio mostrato in figura 7, la seconda colonna, descritta in seguito) ed N colonne (nell’esempio mostrato in figura 7, la terza e la quarta colonna) che corrispondono, ciascuna, ad un rispettivo algoritmo di codifica. In pratica, la colonna di offset temporali definisce una successione di offset temporali, mentre le N colonne relative agli algoritmi di codifica definiscono, ciascuna, una rispettiva successione di codici.
Al fine di generare la tabella secondaria 22, l’unità di elaborazione 12 esegue le operazioni mostrate in figura 8.
In dettaglio, per ogni riga selezionata durante le operazioni di cui al blocco 520, l’unità di elaborazione 12 verifica (blocco 600) se la riga selezionata corrisponde ad un’acquisizione di tipo sincrono o asincrono, sulla base della corrispondente indicazione di tipo.
Se la riga selezionata corrisponde ad un’acquisizione sincrona (uscita SI del blocco 600), l’unità di elaborazione 12 inserisce (blocco 610) nella tabella secondaria 22 una nuova riga, la quale contiene un identificativo di slot uguale all’identificativo di slot della riga selezionata, un offset temporale nullo e codificato sul numero standard di byte di tempo, e N valori di escape, corrispondenti ad esempio alla sequenza binaria esprimibile in notazione esadecimale come “0xF6†.
Successivamente, l’unità di elaborazione 12 verifica (blocco 620) se esiste nella tabella primaria 20 una riga precedente la riga selezionata, e se gli elementi di tale riga precedente relativi agli N algoritmi di codifica sono uguali ai corrispondenti elementi della riga selezionata. In tal caso (uscita SI del blocco 620), cioà ̈ nel caso in cui esista tale riga precedente e sia uguale, per quanto concerne gli elementi relativi agli algoritmi di codifica, alla riga selezionata, l’unità di elaborazione itera le operazioni di cui al blocco 600, su una nuova riga selezionata della tabella primaria 20. Viceversa (uscita NO del blocco 620), cioà ̈ nel caso in cui tale riga precedente non esista o non sia uguale alla riga selezionata, l’unità di elaborazione inserisce (blocco 630) nella tabella secondaria 22 una riga addizionale priva di identificativo di slot, contenente un offset temporale nullo e codificato sul numero standard di byte di tempo, ed in cui ciascun elemento relativo ad un certo algoritmo di codifica contiene il codice NUM-BIT che à ̈ memorizzato nell’elemento della riga selezionata che corrisponde al certo algoritmo di codifica. Successivamente, l’unità di elaborazione 12 itera le operazioni di cui al blocco 600, su una nuova riga selezionata della tabella primaria 20.
Viceversa, se la riga selezionata corrisponde ad un’acquisizione asincrona (uscita NO del blocco 600), l’unità di elaborazione 12 determina (blocco 640) una differenza temporale DIFF. In particolare, indicando con TAS1 il valore temporale presente nella riga selezionata e con TS1 il valore temporale presente in una corrispondente riga di inizio slot, cioà ̈ nella riga della tabella primaria 20 che corrisponde ad un’acquisizione sincrona ed il cui valore temporale TS1 à ̈ tale per cui TS1<TAS1 e TAS1-TS1<T, si ha DIFF=TAS1-TS.
Successivamente, l’unità di elaborazione 12 codifica (blocco 650) la differenza temporale DIFF sul numero standard di byte di tempo, ottenendo un corrispondente offset temporale. In pratica, il numero standard di byte di tempo determinato mediante le operazioni di cui al blocco 330 à ̈ tale per cui à ̈ effettivamente possibile codificare senza perdita di informazione qualsiasi differenza tra i valori temporali relativi della riga selezionata e la corrispondente riga di inizio slot.
In seguito, l’unità di elaborazione 12 inserisce (blocco 660) nella tabella secondaria 22 una nuova riga priva di identificativo di slot, contenente l’offset temporale precedentemente ottenuto, ed in cui ciascun elemento relativo ad un certo algoritmo di codifica contiene il codice NUM-BIT che à ̈ memorizzato nell’elemento della riga selezionata che corrisponde al certo algoritmo di codifica.
Successivamente, l’unità di elaborazione itera le operazioni di cui al blocco 600, su una nuova riga selezionata della tabella primaria 20.
Si noti che à ̈ possibile considerare l’offset temporale nullo inserito durante le operazioni di cui al blocco 610 come ottenuto codificando una differenza temporale DIFF nulla. Si noti altresì che per comodità di lettura dell’esempio di tabella secondaria 22 mostrato in figura 7, nelle colonne relative agli N algoritmi di codifica sono riportati tra parentesi i corrispondenti numeri interi NUM-INT, tranne nei casi in cui i codici NUM-BIT sono pari a “0xF6†. Inoltre, nella colonna contenente gli offset temporali, sono riportati non solo gli offset temporali, mostrati in formato esadecimale; infatti, nel caso di offset temporali non nulli, sono riportate anche le corrispondenti differenze temporali DIFF, poste tra parentesi.
Una volta terminate le operazioni di cui al blocco 530, l’unità di elaborazione 12 determina (blocco 540, figura 6), per ciascuna colonna tra le N colonne della tabella secondaria 22 che corrispondono agli N algoritmi di codifica e la colonna contenente gli offset temporali, un corrispondente numero effettivo di byte Lott.
In maggior dettaglio, riferendosi genericamente alle colonne della tabella secondaria 22 che corrispondono agli N algoritmi di codifica ed alla colonna di offset temporali come alle colonne da ottimizzare, e considerata una colonna tra le N+1 colonne da ottimizzare, l’unità di elaborazione 12 esegue le operazioni mostrate in figura 9, le quali si riferiscono, a titolo esemplificativo, al caso in cui la colonna considerata à ̈ una delle N colonne che corrispondono agli N algoritmi di codifica. La descrizione seguente può comunque essere generalizzata al caso in cui la colonna considerata à ̈ la colonna degli offset temporali.
In dettaglio, l’unità di elaborazione 12 inizializza (blocco 700) a zero una pluralità di contatori regolari, indicizzati mediante un indice j, e di un contatore di eccezione. Inoltre, l’unità di elaborazione 12 seleziona singolarmente (blocco 710) ciascun codice NUM-BIT presente nella colonna considerata, e quindi determina (blocco 720) un corrispondente numero minimo di byte Nmin, tale numero minimo di byte Nmin essendo il minimo numero di byte sufficiente per codificare il numero intero NUM-INT che corrisponde al codice NUM-BIT selezionato.
In particolare, nel caso in cui il numero intero NUM-INT che corrisponde al codice NUM-BIT selezionato abbia generato un’eccezione da parte dell’algoritmo di codifica che corrisponde alla colonna considerata, il numero minimo di byte Nmin à ̈ uguale al numero di byte che formano lo stesso codice NUM-BIT selezionato, cioà ̈ à ̈ uguale al corrispondente numero locale di byte. Altrimenti, nel caso in cui tale numero intero NUM-INT non abbia generato un’eccezione, il numero minimo di byte Nmin à ̈ il minimo numero di byte sufficiente per codificare tale numero intero NUM-INT, alternativamente secondo la codifica A oppure B, a seconda che l’algoritmo di codifica corrispondente alla colonna considerata sia, rispettivamente, di classe a) oppure b). Nel caso in cui il codice NUM-BIT selezionato sia pari a “0xF6†, il numero minimo di byte à ̈ pari a uno.
In pratica, nel caso in cui il codice NUM-BIT selezionato non corrisponda ad un’eccezione, à ̈ possibile che il corrispondente numero minimo di byte Nmin sia inferiore al rispettivo numero locale di byte, e quindi anche al numero teorico di byte.
Successivamente, l’unità di elaborazione 12 verifica (blocco 725) se il codice NUM-BIT selezionato à ̈ un’eccezione, nel qual caso incrementa (blocco 726) il contatore di eccezione di un numero pari al numero di byte dell’eccezione. Viceversa, se il codice NUM-BIT selezionato non à ̈ un’eccezione, l’unità di elaborazione incrementa (blocco 730) di una unità il contatore regolare indicizzato dall’indice j pari al numero minimo di byte Nmin determinato (j=Nmin).
Dopo aver selezionato tutti i codici NUM-BIT presenti nella colonna considerata, l’unità di elaborazione 12 dispone di una pluralità di contatori regolari, e del contatore di eccezione. All’interno di un generico j-esimo contatore regolare, il numero in esso contenuto à ̈ pari a M(j) (eventualmente, può darsi M(j)=0), ed à ̈ pari al numero di occorrenze di codici NUM-BIT che non corrispondono ad eccezioni ed i cui numeri minimi di byte Nmin sono pari a j.
Successivamente, indicando con jmax il massimo indice j cui corrisponde un rispettivo M(j) non nullo, l’unità di elaborazione 12 determina (blocco 740) un numero jmax di lunghezze S(z), indicizzate da un indice z. In dettaglio, l’unità di elaborazione 12 calcola, per z=1, …, jmax:
j max
S(z)=åfactor(i )×M<(>i<)>+ ECC
i= 1
dove ECC à ̈ il contatore di eccezione, e in cui factor (i)=z se i≤z≤i+2, altrimenti factor (i)=i+2.
In pratica, le operazioni di cui al blocco 740 equivalgono, per ciascuna lunghezza S(z) relativa ad un numero ipotetico HYPO=z tra i numeri minimi di byte Nmin determinati in precedenza, a selezionare ciascun codice NUM-BIT della colonna considerata che non corrisponde ad un’eccezione, e verificare se:
CASO 1) HYPO<Nmin oppure HYPO>Nmin+2;
CASO 2) Nmin≤HYPO≤Nmin+2.
Successivamente, nel CASO 1) si somma Nmin+2, mentre nel CASO 2) si somma HYPO. Inoltre, per ciascuna eccezione, si somma il numero di byte del codice che ha generato l’eccezione stessa.
Successivamente, l’unità di elaborazione 12 seleziona (blocco 750) la lunghezza minima Smin(zmin) tra le lunghezze S(z), e dunque seleziona anche l’indice zmin cui corrisponde la stessa lunghezza minima Smin(zmin). In pratica, zmin rappresenta il summenzionato numero effettivo di byte Lott, specifico della colonna considerata, e dunque dell’algoritmo di codifica considerato.
Come precedentemente accennato, le operazioni di cui ai blocchi 700-750 sono eseguite anche sulla colonna della tabella secondaria 22 relativa agli offset temporali, al fine di ottenere un corrispondente numero effettivo di byte Lott. Si noti che, in tal caso, dato un offset temporale, il corrispondente numero minimo di byte Nmin à ̈ il minimo numero di byte sufficiente per codificare la corrispondente differenza temporale DIFF, oppure il valore nullo (in caso di offset temporale nullo), secondo la summenzionata codifica A.
Al termine delle operazioni di cui ai blocchi 700-750, l’unità di elaborazione 12 dispone di N+1 numeri effettivi di byte Lott, nonché di N+1 lunghezze minime Smin(zmin), di cui N sono relative agli N algoritmi di codifica.
Nuovamente con riferimento alla figura 6, dopo aver eseguito le operazioni di cui al blocco 540, l’unità di elaborazione 12 seleziona (blocco 550) un algoritmo ottimo. In particolare, l’algoritmo ottimo à ̈ l’algoritmo di codifica cui corrisponde la minore tra le N lunghezze minime Smin(zmin) relative agli N algoritmi di codifica.
Successivamente, l’unità di elaborazione 12 genera (blocco 560) una tabella terziaria 24, un cui esempio à ̈ mostrato in figura 10. In particolare, nell’esempio mostrato in figura 10, i numeri effettivi di byte Lottrelativi agli offset temporali ed al primo ed al secondo algoritmo di codifica sono pari a uno.
In dettaglio, la tabella terziaria 24 à ̈ formata da N+2 colonne ed à ̈ analoga alla tabella secondaria 22, perciò contiene una colonna di elementi alternativamente vuoti oppure contenenti identificativi di slot, una colonna di offset temporali ed N colonne che corrispondono gli N algoritmi di codifica. In pratica, la colonna di offset temporali definisce una successione compressa di offset temporali, mentre le N colonne relative agli algoritmi di codifica definiscono, ciascuna, una rispettiva successione compressa di codici.
Al fine di generare la tabella terziaria 24, l’unità di elaborazione 12 esegue le operazioni mostrate in figura 11.
In dettaglio, l’unità di elaborazione 12 seleziona (blocco 800) singolarmente ciascuna riga della tabella secondaria 22, e verifica (blocco 810) se la riga selezionata appartiene ad un gruppo di righe formato da almeno quattro righe della tabella secondaria 22 disposte adiacenti e contenenti, nei rispettivi elementi delle N colonne che corrispondono agli N algoritmi di codifica, il valore di escape corrispondente alla sequenza binaria esprimibile in notazione esadecimale come “0xF6†(trattasi dunque di righe relative ad acquisizioni sincrone).
Nel caso in cui la riga selezionata della tabella secondaria 22 non appartenga ad un gruppo di righe (uscita NO del blocco 810), l’unità di elaborazione 12 inserisce una nuova riga nella tabella terziaria 24.
In dettaglio, nel caso in cui la riga selezionata della tabella secondaria 22 contenga un rispettivo identificativo di slot, l’unità di elaborazione 12 inserisce (blocco 820) in tale nuova riga della tabella terziaria 24 l’identificativo di slot della riga selezionata della tabella secondaria 22.
Inoltre, l’unità di elaborazione 12 seleziona (blocco 830) singolarmente l’offset temporale e i codici NUM-BIT della riga selezionata della tabella secondaria 22.
Successivamente, l’unità di elaborazione 12 verifica (blocco 840) se l’offset temporale/codice NUM-BIT selezionato à ̈ un codice NUM-BIT che corrisponde ad un’eccezione, e dunque à ̈ del tipo “0xFBwwxxFF†, oppure al valore di escape “0xF6†, nel qual caso (uscita SI del blocco 840) l’unità di elaborazione 12 inserisce (blocco 850) il codice NUM-BIT selezionato nel corrispondente elemento della nuova riga della tabella terziaria 24. Successivamente, l’unità di elaborazione 12 verifica (blocco 860) se vi sono altri elementi (offset temporale o codici NUM-BIT) della riga selezionata della tabella secondaria 22 da selezionare, nel qual caso (uscita SI del blocco 860) itera le operazioni di cui al blocco 830, altrimenti (uscita NO del blocco 860) itera le operazioni di cui al blocco 800 su una successiva riga della tabella secondaria 22, fino ad esaurimento della tabella secondaria 22.
Viceversa, cioà ̈ nel caso in cui l’unità di elaborazione 12 abbia selezionato un offset temporale o un codice NUM-BIT che non corrisponde ad un’eccezione né al valore di escape “0xF6†(uscita NO del blocco 840), essa verifica (blocco 870) se il numero minimo di byte Nmin relativo all’offset temporale/codice NUM-BIT selezionato à ̈ tale per cui Nmin≤Lott≤Nmin+2, dove Lottà ̈ il corrispondente numero effettivo di byte determinato in precedenza. In pratica, tale corrispondente numero effettivo di byte Lottà ̈ il numero effettivo di byte Lottrelativo alla colonna cui appartiene l’offset temporale/codice NUM-BIT selezionato.
Nel caso in cui Nmin>Lottoppure Nmin<Lott-2 (uscita NO del blocco 870), l’unità di elaborazione 12 inserisce (blocco 880) nella nuova riga della tabella terziaria 24, in particolare nell’elemento della nuova riga della tabella terziaria 24 che corrisponde all’offset temporale/codice NUM-BIT selezionato, una sequenza binaria esprimibile in notazione esadecimale come “0xF9mmyyyy†. In dettaglio, “F9†à ̈ un valore di escape che indica l’inizio di una sorta di deroga rispetto al corrispondente numero effettivo di byte Lott; “mm†indica (ad esempio, secondo la codifica A) il numero minimo di byte Nmin relativo all’offset temporale/codice NUM-BIT selezionato; e “yyyy†à ̈ l’offset temporale/codice NUM-BIT selezionato, espresso sul numero minimo di byte Nmin (in questo caso “mm†=“0x02†, perché la sequenza esemplificativa “yyyy†occupa due byte).
Si noti che con la dicitura “offset temporale/codice NUM-BIT selezionato, espresso sul numero minimo di byte Nmin†si intende una sequenza binaria ottenuta codificando la differenza temporale/numero intero che corrisponde all’offset temporale/codice NUM-BIT selezionato sul rispettivo numero minimo di byte Nmin, secondo la codifica A o la codifica B, a seconda del fatto che si tratti appunto di un offset temporale o di un codice NUM-BIT e, in quest’ultimo caso, a seconda della classe dell’algoritmo corrispondente. In pratica, indicando con TEO il numero standard di byte di tempo / numero teorico di byte, se TEO>Nmin, la summenzionata sequenza binaria “yyyy†à ̈ pari all’offset temporale/codice NUM-BIT selezionato, privato di un numero TEO-Nmin di byte nulli, questi ultimi essendo privi di informazione.
Successivamente, l’unità di elaborazione 12 itera le operazioni di cui al blocco 860.
Viceversa, nel caso in cui Nmin≤Lott≤Nmin+2 (uscita SI del blocco 870), l’unità di elaborazione 12 inserisce (blocco 890) nella nuova riga della tabella terziaria 24 (in particolare nell’elemento della nuova riga della tabella terziaria 24 che corrisponde all’offset temporale/codice NUM-BIT selezionato) l’offset temporale/codice NUM-BIT selezionato, espresso sul summenzionato corrispondente numero effettivo di byte Lott. In altre parole, l’unità di elaborazione 12 inserisce la sequenza binaria ottenuta codificando la differenza temporale/numero intero che corrispondono all’offset temporale/codice NUM-BIT selezionato sul corrispondente numero effettivo di byte Lott, secondo la codifica A o la codifica B, a seconda del fatto che si tratti appunto di un offset temporale o di un codice NUM-BIT e, in quest’ultimo caso, a seconda della classe dell’algoritmo corrispondente.
Successivamente, l’unità di elaborazione 12 itera le operazioni di cui al blocco 860.
Alternativamente, nel caso in cui la riga selezionata appartenga ad un gruppo di righe (uscita SI del blocco 810), l’unità di elaborazione 12 inserisce una nuova riga nella tabella terziaria 24.
In particolare, l’unità di elaborazione 12 inserisce (blocco 900) in tale nuova riga della tabella terziaria 24 il medesimo identificativo di slot presente nella riga selezionata. Inoltre l’unità di elaborazione 12 inserisce (blocco 910), nell’elemento della nuova riga appartenente alla colonna degli offset temporali, un offset temporale nullo (espresso secondo la codifica A, sul numero effettivo di byte Lottrelativi agli offset temporali), nonché, in ciascun elemento delle N colonne che corrispondono agli N algoritmi di codifica, la sequenza binaria esprimibile in notazione esadecimale come “0xFAnnF6†, in cui “FA†à ̈ un valore di escape che indica l’inizio del gruppo di righe, e “nn†indica il numero di righe (e quindi, di slot) presenti nel gruppo di righe.
Successivamente, l’unità di elaborazione 12 itera le operazioni di cui al blocco 860 sulla prima riga della tabella secondaria 22 successiva al summenzionato gruppo di righe, fino ad esaurimento della tabella secondaria 22.
In pratica, la presenza di un gruppo di righe all’interno della tabella secondaria 22 indica che, durante i corrispondenti slot, il parametro non à ̈ variato, pertanto le operazioni di cui ai blocchi 800-910 consentono di ottenere una riduzione del traffico impiegato per trasmettere questa informazione. In altre parole, nn*T à ̈ pari alla durata dell’intervallo temporale in cui il parametro rimane costante. La soglia relativa alla presenza di quattro righe à ̈ specifica per il caso particolare in cui il numero teorico di byte à ̈ pari a uno ed à ̈ dovuta al fatto che, con le codifiche descritte, le operazioni di cui ai blocchi 800-910 consentono di ridurre il traffico solo se ciascun gruppo di righe à ̈ formato da almeno quattro righe, dal momento che la sequenza binaria “0xFAnnF6†comporta un incremento di traffico (“overhead†) di due byte rispetto al numero teorico di byte. Modifiche rispetto alle codifiche descritte possono comunque essere apportate, con conseguenti variazioni della soglia.
Nuovamente con riferimento alle operazioni mostrate in figura 6, l’unità di elaborazione 12 crea (blocco 570), se assente, oppure aggiorna, se presente, una tabella di risultati 26, la quale à ̈ formata da N+1 colonne, N delle quali relative agli N algoritmi di codifica. Un esempio di tabella di risultati 26 à ̈ mostrato in figura 12.
In dettaglio, l’unità di elaborazione 12 inserisce una riga nella tabella di risultati 26, la quale contiene, come primo elemento, l’identificativo di sessione contenuto nel messaggio di richiesta di collezione dati. Inoltre, ciascun elemento tra i rimanenti N elementi della riga inserita corrisponde ad un rispettivo algoritmo di codifica e contiene un numero pari al numero di byte complessivamente contenuti nella colonna della tabella terziaria 24 che corrisponde a tale rispettivo algoritmo.
Successivamente, l’unità di elaborazione 12 invia (blocco 580) un messaggio di risposta all’unità di controllo 2.
Il messaggio di risposta contiene:
- l’identificativo di sessione contenuto nel messaggio di richiesta di collezione dati e nel messaggio di interrogazione;
- un codice che identifica l’algoritmo ottimo;
- un identificativo di slot iniziale, pari a s_inf+1; - un identificativo di slot pari a s_max-1;
- il numero effettivo di byte Lottrelativo all’algoritmo ottimo;
- il numero effettivo di byte Lottrelativo agli offset temporali; e
- una stringa ottimizzata di dati.
In dettaglio, la stringa ottimizzata di dati à ̈ formata dall’unità di elaborazione 12 sulla base dei byte presenti nelle colonne della tabella terziaria 24 relative agli offset temporali ed all’algoritmo ottimo.
In maggior dettaglio, l’unità di elaborazione 12 scandisce in sequenza le righe della tabella terziaria 24, a partire dalla prima riga fino all’ultima. Un esempio di stringa ottimizzata di dati, relativa alla tabella terziaria 24 mostrata in figura 10 à ̈ riportato in figura 13.
Nel caso in cui la riga scandita contenga, nella colonna relativa all’algoritmo ottimo, il valore di escape “0xF6†oppure una sequenza binaria esprimibile in notazione esadecimale come “0xFAnnF6†, l’unità di elaborazione aggiunge alla stringa ottimizzata di dati (inizialmente, vuota) il valore di escape “0xF6†oppure la sequenza binaria esprimibile in notazione esadecimale come “0xFAnnF6†, rispettivamente.
Invece, nel caso in cui la riga scandita non contenga, nella colonna relativa all’algoritmo ottimo, il valore di escape “0xF6†, né una sequenza binaria esprimibile in notazione esadecimale come “0xFAnnF6†, l’unità di elaborazione 12 aggiunge alla stringa ottimizzata di dati prima l’offset temporale della riga scandita, e poi la sequenza binaria contenuta nell’elemento della riga scandita relativo all’algoritmo ottimo.
Successivamente, l’unità di elaborazione 12 scandisce una successiva riga della tabella terziaria 24, fino ad esaurimento della tabella terziaria.
Infine, l’unità di elaborazione 12 rimuove (blocco 590) dalla memoria volatile 14 la tabella secondaria 22 e la tabella terziaria 24. La tabella primaria 20 rimane, invece, inalterata.
Le operazioni descritte consentono dunque di trasmettere i valori numerici acquisiti dall’unità di rilevazione 6, impiegando un numero limitato di byte.
Alla ricezione del messaggio di risposta, l’unità di controllo 2 à ̈ in grado di ricostruire l’andamento nel tempo del parametro, applicando a ritroso l’algoritmo ottimo, in modo da ottenere, a partire dai codici, i corrispondenti numeri interi, e quindi i corrispondenti valori numerici.
In particolare, l’unità di controllo 2 à ̈ in grado di discriminare correttamente tra offset temporali e codici NUM-BIT, sulla base dei valori di escape, del numero effettivo di byte Lottrelativo all’algoritmo ottimo e del numero effettivo di byte Lottrelativo agli offset temporali.
In maggior dettaglio, la stringa ottimizzata di dati inizia con una sequenza binaria “0xF6†. L’unità di controllo 2, come mostrato in figura 14, rileva (blocco 1000) tale sequenza binaria “0xF6†e calcola (blocco 1010) un istante di slot pari a START+count*T, in cui “count†à ̈ un contatore inizialmente nullo. Successivamente, l’unità di controllo 2 decodifica ed analizza (blocco 1020) il successivo byte della stringa ottimizzata di dati.
Qualora il successivo byte, cui nel seguito ci si riferisce come al primo byte di tempo, sia il valore di escape “0xF9†(uscita SI del blocco 1020), significa che si à ̈ in presenza di un offset temporale codificato come “0xF9mmyyyy†, cioà ̈ di una deroga, dunque l’unità di controllo 2 decodifica (blocco 1030) il byte successivo al primo byte di tempo (“0xmm†), al quale ci si riferisce come al secondo byte di tempo, e quindi seleziona (blocco 1040) un numero di byte successivi al secondo byte di tempo (“0xyyyy†), tale numero essendo indicato dallo stesso secondo byte di tempo. L’unità di controllo 2 decodifica (blocco 1050) tale numero di byte successivi al secondo byte di tempo, ottenendo una differenza temporale, qui indicata con Δ. Successivamente, l’unità di controllo 2 determina (blocco 1060) un istante di tempo pari a START+count*T+Δ.
Viceversa, se il primo byte di tempo à ̈ diverso da “0xF9†(uscita NO del blocco 1020), l’unità di controllo 2 decodifica (blocco 1055) un gruppo di byte includente il primo byte di tempo e un numero di byte (successivi al primo byte di tempo) pari al numero effettivo di byte Lottrelativo agli offset temporali, diminuito di uno. In tal modo, l’unità di controllo 2 ottiene una corrispondente differenza temporale Δ. Successivamente, l’unità di controllo 2 esegue le operazioni di cui al blocco 1060.
Dopo aver eseguito le operazioni di cui al blocco 1060, l’unità di controllo 2 decodifica ed analizza (blocco 1070) il byte successivo al numero di byte successivi “0xyyyy†, cui nel seguito ci si riferisce come al primo byte di dato, e verifica se il primo byte di dato à ̈ alternativamente pari a “0xF9†, oppure a “0xFA†, oppure a “0xFB†, oppure à ̈ diverso sia da “0xF9†, sia da “0xFA†, sia da “0xFB†.
Se il primo byte di dato à ̈ pari a “0xF9†(uscita 0xF9 del blocco 1070), significa che si à ̈ in presenza di un codice codificato come “0xF9mmyyyy†, cioà ̈ di una deroga, dunque l’unità di controllo 2 decodifica (blocco 1080) il byte successivo al primo byte di dato, cui nel seguito ci si riferisce come al secondo byte di dato, e seleziona (blocco 1090) un numero di byte successivi al secondo byte di dato, tale numero essendo indicato dallo stesso secondo byte di dato. L’unità di controllo 2 decodifica (blocco 1100) tale numero di byte successivi al secondo byte di dato, sulla base dell’algoritmo ottimo, ottenendo il corrispondente numero intero e, quindi, il corrispondente valore numerico.
Se il primo byte di dato à ̈ pari a “0xFB†(uscita 0xFB del blocco 1070), significa che si à ̈ in presenza di un’eccezione, dunque l’unità di controllo 2 decodifica (blocco 1110) il byte successivo al primo byte di dato, al fine di determinare (blocco 1120) l’algoritmo alternativo, e quindi decodifica (blocco 1130) mediante l’algoritmo alternativo i byte compresi tra il secondo byte di dato (escluso) ed il primo byte pari a “0xFF†(escluso).
Se il primo byte di dato à ̈ pari a “0xFA†(uscita 0xFA del blocco 1070), significa che il parametro à ̈ rimasto costante per un certo intervallo di tempo. Pertanto, l’unità di controllo 2 decodifica (blocco 1150) il secondo byte di dato e determina (blocco 1160) un numero slot in cui il parametro non à ̈ cambiato. Inoltre, l’unità di controllo rimuove (blocco 1170) dalla stringa ottimizzata di dati il byte “0xF6†successivo al secondo byte di dato, incrementa “count†di un numero pari al numero di slot in cui il parametro non à ̈ cambiato, e quindi itera le operazioni di cui al blocco 1020.
Se il primo byte di dato à ̈ diverso sia da “0xF9†, sia da “0xFA†, sia da “0xFB†(uscita ≠del blocco 1070), l’unità di controllo 2 decodifica (blocco 1180) un gruppo di byte formato dal primo byte di dato e da un numero di byte (successivi al primo byte di dato) pari al numero effettivo di byte Lottrelativo all’algoritmo ottimo, diminuito di uno. In tal modo, l’unità di controllo 2 ottiene un corrispondente valore numerico.
Al termine delle operazioni di cui ai blocchi 1100, 1130 e 1180, l’unità di controllo 2 associa (blocco 1190) il valore numerico ottenuto all’istante di tempo START+count*T+Δ.
Successivamente, l’unità di controllo seleziona e decodifica (blocco 1200) un ulteriore byte e verifica (blocco 1210) se tale ulteriore byte à ̈ pari a “0xF6†.
Se l’ulteriore byte à ̈ pari a “0xF6†(uscita SI del blocco 1210), l’unità di controllo 2 incrementa (blocco 1220) di una unità il contatore “count†, quindi itera le operazioni di cui al blocco 1010 e successivi. Viceversa, se l’ulteriore byte à ̈ diverso da “0xF6†(uscita NO del blocco 1210), l’unità di controllo 2 itera le operazioni di cui al blocco 1020.
I vantaggi che il presente metodo consente di ottenere emergono chiaramente dalla descrizione precedente. In particolare, la trasmissione di valori numerici risulta ottimizzata sulla base degli algoritmi di codifica disponibili e degli stessi valori numerici, come acquisiti durante un certo intervallo temporale. Ulteriori riduzioni del numero di byte effettivamente trasmessi sono inoltre ottenute sulla base della scansione temporale con cui vengono acquisiti i valori numerici, nonché di eventuali periodi di mancata acquisizione.
Il metodo descritto si presta dunque ad applicazioni in cui à ̈ di particolare importanza ridurre il più possibile il numero di byte trasmessi, quali ad esempio applicazioni di controllo satellitare, oppure applicazioni in ambito di telecontrollo mediante onde convogliate, cioà ̈ applicazioni in cui i dati sono trasmessi lungo linee di alimentazione elettrica. In tali casi, il sistema di rilevazione 1 funge da sistema di telelettura (“remote reading†), in cui il supporto di comunicazione 4 à ̈ alternativamente formato dallo spazio libero, oppure da linee di alimentazione elettrica.
Inoltre, sebbene descritto con particolare riferimento al caso in cui à ̈ presente un singolo parametro, il presente metodo può essere applicato al caso in cui devono essere monitorati parametri differenti, con dinamiche e discretizzazioni differenti, e quindi con differenti numeri teorici di byte.
Risulta infine evidente che al presente metodo possono essere apportate modifiche e varianti, senza per questo uscire dall’ambito della presente invenzione, definito dalle rivendicazioni allegate.
Ad esempio, le informazioni contenute nella tabella primaria, secondaria e terziaria possono essere organizzate in modo differente da quanto descritto. Inoltre, à ̈ possibile memorizzare nelle tabelle citate informazioni differenti da quanto descritto; ad esempio, à ̈ possibile inserire identificativi di slot anche all’interno delle righe della tabella primaria 20 relative ad acquisizioni asincrone.
Inoltre, Ã ̈ possibile applicare algoritmi di codifica ulteriori e/o differenti rispetto a quanto descritto.
E’ altresì possibile eseguire una o più delle operazioni mostrate nelle figure 2, 3, 5, 6, 8, 9, 11 e 14 con un ordine differente da quanto descritto. E’ inoltre possibile che una o più delle operazioni mostrate nelle figure 2, 3, 5, 6, 8, 9, 11 e 14 siano assenti. In aggiunta, à ̈ possibile che, durante l’esecuzione degli algoritmi di codifica, ciascun numero intero NUM-INT, così come ciascuna differenza temporale DIFF, sia codificato in modo dinamico direttamente su un corrispondente numero minimo Nmin di byte. In tal caso, le operazioni di cui al blocco 890 prevedono di inserire nella nuova riga della tabella terziaria 24 esattamente l’offset temporale/codice NUM-BIT selezionato; inoltre, relativamente alle operazioni di cui al blocco 880, la stringa “yyyy†coincide con l’offset temporale/codice NUM-BIT selezionato.
Ancora, Ã ̈ possibile applicare il presente metodo anche nel caso in cui le operazioni di codifica avvengano non su byte, ma su gruppi di bit di lunghezza qualsiasi.
Infine, il presente metodo può essere applicato anche a valori di tipo non numerico (ad esempio, di tipo alfabetico, oppure valori relativi ad immagini o filmati, cioà ̈ a pixel), previa opportuna trasformazione, in modo di per sé noto, in corrispondenti valori numerici.
Claims (14)
- RIVENDICAZIONI 1. Metodo di trasmissione di valori numerici da una unità di rilevazione (6) ad una unità di controllo (2), l’unità di rilevazione essendo configurata per acquisire valori numerici in rispettivi istanti di acquisizione, in modo sincrono e/o asincrono, e sulla base di un segnale indicativo di una grandezza da monitorare; detto metodo comprendendo, per ciascun valore considerato tra i valori numerici acquisiti, e da parte di detta unità di rilevazione, le fasi di: - applicare (410) a detto valore considerato almeno un primo ed un secondo algoritmo di codifica, in modo da ottenere, rispettivamente, un primo ed un secondo codice (NUM-BIT), detti primo e secondo codice essendo in formato binario; - memorizzare (420) il primo codice, il secondo codice e l’istante di acquisizione corrispondente al valore considerato; il metodo comprendendo inoltre, da parte di detta unità di rilevazione, le fasi di: - generare (530) una prima ed una seconda successione di codici, associate rispettivamente al primo ed al secondo algoritmo di codifica e comprendenti, rispettivamente, i primi ed i secondi codici memorizzati; - selezionare (550) un algoritmo ottimo tra detti almeno un primo ed un secondo algoritmo di codifica, sulla base della prima e della seconda successione di codici; - generare (560) una successione compressa di dati sulla base, alternativamente, della prima o della seconda successione di codici, a seconda dell’algoritmo ottimo selezionato; e - trasmettere (390) all’unità di controllo la successione compressa di dati.
- 2. Metodo di trasmissione secondo la rivendicazione 1, comprendente inoltre eseguire, da parte dell’unità di rilevazione (6), le fasi di: - determinare una pluralità di istanti di campionamento periodici; - determinare (640) una pluralità di differenze temporali (DIFF) sulla base degli istanti di acquisizione memorizzati e di corrispondenti istanti di campionamento; - determinare (650) una pluralità di intervalli temporali in formato binario, sulla base delle differenze temporali; - generare (560) una successione compressa di intervalli temporali, sulla base degli intervalli temporali determinati; e in cui detta fase di trasmettere (390) all’unità di controllo (2) la successione compressa di dati comprende le fasi di generare una stringa binaria sulla base della successione compressa di dati e della successione compressa di intervalli temporali, e trasmettere la stringa binaria.
- 3. Metodo di trasmissione secondo la rivendicazione 2, in cui la fase di selezionare un algoritmo ottimo (550) comprende, per ciascuna successione considerata tra la prima e la seconda successione di codici, le fasi di: - per ciascun codice (NUM-BIT) della successione considerata, determinare (720) un corrispondente numero minimo di bit (Nmin) sufficiente per codificare il corrispondente valore numerico acquisito secondo l’algoritmo di codifica che corrisponde alla successione considerata; - selezionare singolarmente ciascun numero minimo di bit (z) tra i numeri minimi di bit determinati; - per ciascun numero minimo di bit selezionato singolarmente (HYPO), determinare (740) una corrispondente lunghezza di dato (S(z)) relativa alla successione considerata, detta fase di determinare una corrispondente lunghezza di dato comprendendo sommare, per ciascun codice considerato tra i codici della successione considerata: a) il numero minimo di bit selezionato singolarmente (HYPO), se detto numero minimo di bit selezionato singolarmente (HYPO) à ̈ compreso tra il numero minimo di bit relativo al codice considerato (Nmin) e la somma (Nmin+2) del numero minimo di bit relativo al codice considerato con un numero addizionale; altrimenti b) il numero minimo di bit relativo al codice considerato più il numero addizionale (Nmin+2), se il numero minimo di bit relativo al codice considerato (Nmin) à ̈ maggiore di detto numero minimo di bit selezionato singolarmente (HYPO) oppure à ̈ inferiore a detto numero minimo di bit selezionato singolarmente diminuito del numero addizionale (HYPO-2); e - determinare (750) una corrispondente lunghezza minima di dato (Smin(zmin)), detta lunghezza minima di dato essendo la minore tra le lunghezze di dato determinate; detta fase di selezionare (550) un algoritmo ottimo comprendendo inoltre selezionare l’algoritmo associato alla successione di codici avente la minore tra le lunghezze minime di dato determinate per la prima e la seconda successione di codici.
- 4. Metodo di trasmissione secondo la rivendicazione 3, in cui la fase di applicare (410) a detto valore considerato almeno un primo ed un secondo algoritmo di codifica comprende generare (200) un primo ed un secondo numero intero (NUM-INT) e codificare (210) detti primo e secondo numero intero rispettivamente mediante una prima ed una seconda codifica binaria (codifica A; codifica B).
- 5. Metodo di trasmissione secondo la rivendicazione 4, in cui detta fase di determinare (720), per ciascun codice (NUM-BIT) della successione considerata, un corrispondente numero minimo di bit (Nmin) comprende determinare il numero minimo di bit sufficiente per codificare alternativamente il primo oppure il secondo numero intero relativi al valore numerico acquisito che corrisponde a detto codice, rispettivamente mediante la prima oppure la seconda codifica binaria (codifica A; codifica B), a seconda del fatto che la successione considerata sia alternativamente la prima oppure la seconda successione di codici.
- 6. Metodo di trasmissione secondo la rivendicazione 4 o 5, comprendente la fase di determinare (400,600) per ciascun valore numerico acquisito, da parte di detta unità di rilevazione (6), se il valore numerico acquisito à ̈ stato acquisito in modo sincrono o asincrono; e in cui la fase di determinare (640,650) una pluralità di intervalli temporali comprende generare (530) una prima successione di intervalli temporali, detta fase di generare una prima successione di intervalli temporali comprendendo, per ciascun valore numerico acquisito: - qualora il valore numerico acquisito sia stato acquisito in modo sincrono, inserire (610) nella prima successione di intervalli temporali una prima sequenza binaria di tempo (“0x0000†) relativa ad una differenza temporale nulla; altrimenti - qualora il valore numerico acquisito sia stato acquisito in modo asincrono, calcolare (640) una differenza tra il corrispondente istante di acquisizione e l’istante di campionamento più recente rispetto a detto corrispondente istante di acquisizione, codificare (650) detta differenza in formato binario e inserire (660) nella prima successione di intervalli temporali la differenza codificata; e in cui la fase di generare (530) una prima ed una seconda successione di codici comprende, per ciascun valore numerico acquisito: - qualora il valore numerico acquisito sia stato acquisito in modo sincrono, inserire (610) nella prima e nella seconda successione di codici un codice pari ad una prima sequenza binaria di controllo (“0xF6†); altrimenti - qualora il valore numerico acquisito sia stato acquisito in modo asincrono, inserire (660) nella prima e nella seconda successione di codici, rispettivamente, il corrispondente primo codice ed il corrispondente secondo codice.
- 7. Metodo di trasmissione secondo la rivendicazione 6, in cui la fase di generare (530) una prima ed una seconda successione di codici comprende, per ciascun valore numerico acquisito, le fasi di: - se il valore numerico acquisito à ̈ stato acquisito in modo sincrono, verificare (620) se esiste un valore numerico anteriore, acquisito immediatamente prima del valore numerico acquisito e uguale al valore numerico acquisito, e - qualora detto valore numerico anteriore non esista oppure sia differente da detto valore numerico acquisito, inserire (630) nella prima e nella seconda successione di codici, rispettivamente, il primo ed il secondo codice corrispondenti al valore numerico acquisito.
- 8. Metodo di trasmissione secondo la rivendicazione 6 o 7, in cui la fase di generare (560) una successione compressa di dati comprende: - determinare (700-750) un numero effettivo di bit di codice (Lott), detto numero effettivo di bit di codice essendo pari al numero minimo di bit selezionato singolarmente cui corrisponde la lunghezza minima di dato (Smin(zmin)) relativa alla successione di codici associata all’algoritmo ottimo; - selezionare, alternativamente, la prima o la seconda successione di codici, a seconda dell’algoritmo ottimo selezionato; - selezionare (800) ciascun codice della successione di codici selezionata e: - qualora detto codice selezionato sia pari alla prima sequenza binaria di controllo (“0xF6†), inserire (850) la prima sequenza binaria di controllo nella successione compressa di dati; - qualora detto codice selezionato sia differente dalla prima sequenza binaria di controllo, verificare (870) se il numero effettivo di bit di codice (Lott) à ̈ compreso tra il numero minimo di bit (Nmin) che corrisponde al codice selezionato e la somma (Nmin+2) di detto corrispondente numero minimo di bit con il numero addizionale, e: - se il numero effettivo di bit di codice (Lott) à ̈ compreso tra detto corrispondente numero minimo di bit (Nmin) e la somma (Nmin+2) di detto corrispondente numero minimo di bit con il numero addizionale, determinare una prima versione del codice selezionato, codificando il numero intero che corrisponde al codice selezionato secondo l’algoritmo ottimo e su detto numero effettivo di bit di codice, ed inserire (890) nella successione compressa di dati detta prima versione; altrimenti - se il numero effettivo di bit di codice (Lott) à ̈ minore di detto corrispondente numero minimo di bit (Nmin) oppure à ̈ maggiore della somma (Nmin+2) di detto corrispondente numero minimo di bit (Nmin) e del numero addizionale, determinare una seconda versione del codice selezionato, codificando il numero intero che corrisponde al codice selezionato secondo l’algoritmo ottimo e su detto corrispondente numero minimo di bit (Nmin), e successivamente inserire (880) nella successione compressa di dati una seconda sequenza binaria di controllo (“0xF9†), una sequenza binaria indicativa di detto corrispondente numero minimo di bit (“0xmm†) e detta seconda versione.
- 9. Metodo di trasmissione secondo la rivendicazione 8, comprendente inoltre le fasi di: - per ciascun intervallo temporale della prima successione di intervalli temporali, determinare (720) un corrispondente numero inferiore di bit, detto numero inferiore di bit essendo il minimo numero di bit sufficiente per codificare la corrispondente differenza temporale; - selezionare singolarmente ciascun numero inferiore di bit tra i numeri inferiori di bit determinati; - per ciascun numero inferiore di bit selezionato singolarmente (HYPO), determinare (740) una corrispondente lunghezza di tempo (S(z)) relativa alla prima successione di intervalli temporali, detta fase di determinare una corrispondente lunghezza di tempo comprendendo sommare, per ciascun intervallo temporale considerato tra gli intervalli temporali della prima successione di intervalli temporali: a) il numero inferiore di bit selezionato singolarmente (HYPO), se detto numero inferiore di bit selezionato singolarmente (HYPO) à ̈ compreso tra il numero inferiore di bit relativo all’intervallo temporale considerato (Nmin) e la somma (Nmin+2) del numero inferiore di bit relativo all’intervallo temporale considerato con il numero addizionale; altrimenti b) il numero inferiore di bit relativo all’intervallo temporale considerato più il numero addizionale (Nmin+2), se il numero inferiore di bit relativo all’intervallo temporale considerato (Nmin) à ̈ maggiore di detto numero inferiore di bit selezionato singolarmente (HYPO) oppure à ̈ inferiore a detto numero inferiore di bit selezionato singolarmente diminuito del numero addizionale (HYPO-2); e - determinare (750) un numero effettivo di bit di tempo (Lott), pari al numero inferiore di bit selezionato singolarmente cui corrisponde la minore tra le lunghezze di tempo determinate.
- 10. Metodo di trasmissione secondo la rivendicazione 9, in cui la fase di generare (560) una successione compressa di intervalli temporali comprende le fasi di: - selezionare (800) ciascun intervallo temporale della prima successione di intervalli temporali e: - se il numero effettivo di bit di tempo (Lott) à ̈ compreso tra il numero minimo di bit (Nmin) che corrisponde all’intervallo temporale selezionato e la somma (Nmin+2) di detto corrispondente numero inferiore di bit con il numero addizionale, determinare una prima variante dell’intervallo temporale selezionato, codificando la differenza temporale che corrisponde all’intervallo temporale selezionato su detto numero effettivo di bit di tempo, ed inserire (890) nella successione compressa di intervalli temporali detta prima variante; altrimenti - se il numero effettivo di bit di tempo (Lott) à ̈ minore di detto corrispondente numero inferiore di bit (Nmin) oppure à ̈ maggiore della somma (Nmin+2) di detto corrispondente numero inferiore di bit (Nmin) con il numero addizionale, determinare una seconda variante dell’intervallo temporale selezionato, codificando la differenza temporale che corrisponde all’intervallo temporale selezionato su detto corrispondente numero inferiore di bit (Nmin), e successivamente inserire (880) nella successione compressa di intervalli temporali la seconda sequenza binaria di controllo (“0xF9†), una sequenza binaria indicativa di detto corrispondente numero inferiore di bit (“0xmm†) e detta seconda variante.
- 11. Metodo secondo la rivendicazione 10, in cui detta fase di generare (560) una successione compressa di intervalli temporali e detta fase di generare (560) una successione compressa di dati comprendono: - verificare (810) se, all’interno della successione di codici associata all’algoritmo ottimo, sono presenti gruppi di codici formati da un numero di codici consecutivi e pari alla prima sequenza binaria di controllo (“0xF6†), detto numero di codici consecutivi essendo almeno pari a un numero di soglia; - per ogni gruppo di codici, inserire (910) nella successione compressa di dati una terza sequenza binaria di controllo (“0xFA†) e una sequenza binaria indicativa del numero di codici presenti nel gruppo di codici.
- 12. Metodo di trasmissione secondo la rivendicazione 11, comprendente inoltre la fase di: - discriminare, da parte dell’unità di controllo (2), tra primi gruppi di bit della stringa binaria relativi a codici e secondi gruppi di bit della stringa binaria relativi a intervalli temporali, sulla base della prima, della seconda e della terza sequenza binaria di controllo (“0xF6†, “0xF9†, “0xFA†), del numero effettivo di bit di codice e del numero effettivo di bit di tempo.
- 13. Unità di rilevazione configurata per eseguire il metodo di trasmissione secondo una qualsiasi delle rivendicazioni da 1 a 11.
- 14. Rete di sensori comprendente un’unità di controllo (2) ed un’unità di rilevazione (6) secondo la rivendicazione 13 quando dipendente dalla rivendicazione 11, l’unità di controllo essendo configurata per discriminare tra primi gruppi di bit della stringa binaria relativi a codici e secondi gruppi di bit della stringa binaria relativi a intervalli temporali, sulla base della prima, della seconda e della terza sequenza binaria di controllo (“0xF6†, “0xF9†, “0xFA†), del numero effettivo di bit di codice e del numero effettivo di bit di tempo.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ITTO2010A000828A IT1402222B1 (it) | 2010-10-12 | 2010-10-12 | Metodo per trasmettere valori numerici da una unita' di rilevazione ad una unita' di controllo. |
ES11184236.5T ES2646888T3 (es) | 2010-10-12 | 2011-10-06 | Método para transmitir valores numéricos de una unidad de detección a una unidad de control |
EP11184236.5A EP2442585B1 (en) | 2010-10-12 | 2011-10-06 | Method for transmitting numeric values from a detection unit to a control unit |
US13/270,481 US20120106620A1 (en) | 2010-10-12 | 2011-10-11 | Method for transmitting numeric values from a detection unit to a control unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ITTO2010A000828A IT1402222B1 (it) | 2010-10-12 | 2010-10-12 | Metodo per trasmettere valori numerici da una unita' di rilevazione ad una unita' di controllo. |
Publications (2)
Publication Number | Publication Date |
---|---|
ITTO20100828A1 true ITTO20100828A1 (it) | 2012-04-13 |
IT1402222B1 IT1402222B1 (it) | 2013-08-28 |
Family
ID=43738370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ITTO2010A000828A IT1402222B1 (it) | 2010-10-12 | 2010-10-12 | Metodo per trasmettere valori numerici da una unita' di rilevazione ad una unita' di controllo. |
Country Status (4)
Country | Link |
---|---|
US (1) | US20120106620A1 (it) |
EP (1) | EP2442585B1 (it) |
ES (1) | ES2646888T3 (it) |
IT (1) | IT1402222B1 (it) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9185513B1 (en) * | 2011-12-02 | 2015-11-10 | Google Inc. | Method and system for compilation with profiling feedback from client |
JP6787231B2 (ja) * | 2017-04-04 | 2020-11-18 | 富士通株式会社 | データ処理プログラム、データ処理方法およびデータ処理装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5347540A (en) * | 1992-07-08 | 1994-09-13 | Tektronix, Inc. | Dynamic storage allocation in a logic analyzer |
US6487695B1 (en) * | 1998-08-01 | 2002-11-26 | Dr. Johannes Heidenhain Gmbh | Method for providing fail-safe secure data transmission between a numerical control system and a spatially separate unit |
US20100023304A1 (en) * | 2008-07-23 | 2010-01-28 | Robert Bosch Gmbh | Arrangement for evaluating the measured values of a measured-value converter |
-
2010
- 2010-10-12 IT ITTO2010A000828A patent/IT1402222B1/it active
-
2011
- 2011-10-06 ES ES11184236.5T patent/ES2646888T3/es active Active
- 2011-10-06 EP EP11184236.5A patent/EP2442585B1/en active Active
- 2011-10-11 US US13/270,481 patent/US20120106620A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5347540A (en) * | 1992-07-08 | 1994-09-13 | Tektronix, Inc. | Dynamic storage allocation in a logic analyzer |
US6487695B1 (en) * | 1998-08-01 | 2002-11-26 | Dr. Johannes Heidenhain Gmbh | Method for providing fail-safe secure data transmission between a numerical control system and a spatially separate unit |
US20100023304A1 (en) * | 2008-07-23 | 2010-01-28 | Robert Bosch Gmbh | Arrangement for evaluating the measured values of a measured-value converter |
Also Published As
Publication number | Publication date |
---|---|
ES2646888T3 (es) | 2017-12-18 |
EP2442585A3 (en) | 2014-03-19 |
EP2442585A2 (en) | 2012-04-18 |
EP2442585B1 (en) | 2017-09-27 |
US20120106620A1 (en) | 2012-05-03 |
IT1402222B1 (it) | 2013-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100353690C (zh) | 使用普通网络分组发送多个8b/10b位流的多路传输系统 | |
CN101267210B (zh) | 数据编译码和收发方法及装置 | |
CN106301678B (zh) | 一种数据处理的方法、通信设备及通信系统 | |
DK2009824T3 (en) | PROCEDURE FOR COMMUNICATING DATA IN COMMUNICATION SYSTEMS | |
CN110224775B (zh) | 一种时间信息确定的方法、装置及设备 | |
CN111092686A (zh) | 一种数据传输方法、装置、终端设备和存储介质 | |
CN110719143A (zh) | 用于数据传输的方法、发送机和接收机 | |
CN100382482C (zh) | 传输数据帧的方法和装置 | |
CN101702639B (zh) | 循环冗余校验的校验值计算方法及装置 | |
KR20180015744A (ko) | 코드 블록 데이터 스트림 송신 및 수신 방법, 장치, 및 시스템 | |
WO2016000371A1 (zh) | 多通道同步方法、同步装置及系统和计算机存储介质 | |
CN101789845A (zh) | 应用sfec的光传送网中总线位宽变换实现方法及电路 | |
ITTO20100828A1 (it) | Metodo per trasmettere valori numerici da una unita' di rilevazione ad una unita' di controllo | |
CN113347096B (zh) | 第三方支付数据的传输处理方法 | |
CN103716115A (zh) | 时分复用的fec编码方法及装置 | |
KR101232782B1 (ko) | 네트워크에서 복수의 타이밍 마스터들을 검출하기 위한 시스템 및 방법 | |
CN114499788A (zh) | Cbr信号传输方法、系统及设备 | |
CN101990135A (zh) | 一种基于最大带宽约束的路径查询方法和装置 | |
CN108563604B (zh) | Pcs协议复用芯片和方法 | |
CN114564676B (zh) | 一种提高区块链网络数据传输效率的方法 | |
CN105141395A (zh) | 一种宽带接入网系统中帧净荷提取方法 | |
EP2045937B1 (en) | System and method for real time synchronization through a communication system | |
CN100426776C (zh) | 在通道保护环上对工作业务进行编号的方法 | |
CN101488820A (zh) | 数据发送方法、数据接收方法及相关设备 | |
EP2416535B1 (en) | Demultiplexing or multiplexing method for transmitting/receiving digital data on transmission channels with an assigned capacity |