Campbell Scientific IRGASON IRGASON Integrated CO2/H2O Open-Path Gas Analyzer - Page 34

Analog Outputs

Page 34 highlights

IRGASON® Integrated CO2/H2O Open-Path Gas Analyzer and 3D Sonic Anemometer The final data element in each row or output array is the signature. The signature is a four character hexadecimal value that is a function of the sequence and number of bytes in the output array. The recording device (i.e., PC or datalogger) calculates its own signature using each transmitted byte until encountering the transmitted signature. The computed signature and the transmitted signature are compared. If they match, the data were received correctly. This is very similar to a cyclic redundancy check (CRC). In most situations, a PC begins by reading the ASCII data and extracting the last four ASCII characters and casting them as Long data type. The signature is then calculated on the science data sent from the IRGASON, starting with CO2 and ending on the counter. All the characters after the counter are not part of the signature. Once the signature is computed using the following algorithm, it is compared to the transmitted signature. If signatures do not match, the data should be disregarded. Following is an example implementation of Campbell Scientific's signature algorithm in the programming language C. To generate the signature of an output array of bytes, the "seed" needs to be initialized to 0xaaaa and a pointer passed to the first byte of the output array. The number of bytes in the output array should be entered in as the "swath". The returned value is the computed signature. //signature(), signature algorithm. // Standard signature is initialized with a seed of 0xaaaa. // Returns signature. unsigned short signature( unsigned char* buf, int swath, unsigned short seed ) { unsigned char msb, lsb; unsigned char b; int i; msb = seed >> 8; lsb = seed; for( i = 0; i < swath; i++ ) { b = (lsb

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66

IRGASON
®
Integrated CO
2
/H
2
O Open-Path Gas Analyzer and 3D Sonic Anemometer
The final data element in each row or output array is the signature.
The
signature is a four character hexadecimal value that is a function of the
sequence and number of bytes in the output array.
The recording device (i.e.,
PC or datalogger) calculates its own signature using each transmitted byte until
encountering the transmitted signature.
The computed signature and the
transmitted signature are compared.
If they match, the data were received
correctly.
This is very similar to a cyclic redundancy check (CRC).
In most situations, a PC begins by reading the ASCII data and extracting the
last four ASCII characters and casting them as Long data type.
The signature
is then calculated on the science data sent from the IRGASON, starting with
CO
2
and ending on the counter.
All the characters after the counter are not part
of the signature.
Once the signature is computed using the following
algorithm, it is compared to the transmitted signature.
If signatures do not
match, the data should be disregarded.
Following is an example implementation of Campbell Scientific’s signature
algorithm in the programming language C.
To generate the signature of an
output array of bytes, the “seed” needs to be initialized to 0xaaaa and a pointer
passed to the first byte of the output array.
The number of bytes in the output
array should be entered in as the “swath”.
The returned value is the computed
signature.
//signature(), signature algorithm.
// Standard signature is initialized with a seed of 0xaaaa.
// Returns signature.
unsigned short signature( unsigned char* buf, int swath,
unsigned short seed ) {
unsigned char msb, lsb;
unsigned char b;
int i;
msb = seed >> 8;
lsb = seed;
for( i = 0; i < swath; i++ ) {
b = (lsb << 1) + msb + *buf++;
if( lsb & 0x80 ) b++;
msb = lsb;
lsb = b;
}
return (unsigned short)((msb << 8) + lsb);
}
8.3
Analog Outputs
If analog output is enabled, the EC100 will output two analog signals that
correspond to CO
2
density and H
2
O density.
These signals range from 0 to
5000 mV.
TABLE 8-2 gives the multipliers and offsets for the analog outputs.
Note that the analog outputs contain no sonic data.
Be aware that the absence of diagnostic data in analog
output could make troubleshooting difficult if the user is not
aware of potential problems with the instrumentation.
CAUTION
24