kopia lustrzana https://github.com/projecthorus/radiosonde_auto_rx
173 wiersze
6.3 KiB
Plaintext
173 wiersze
6.3 KiB
Plaintext
|
|
RS92-SGP
|
|
|
|
Modulation: GFSK
|
|
raw: 4800 bit/s
|
|
SGP: 1 frame/s
|
|
raw-frame: 4800 bit
|
|
|
|
RS92-SGP: manchester -> 2400 bit
|
|
8N1, startbit, 8 bit, stopbit (-> 10bit/byte)
|
|
|
|
Frame: 240 byte, little endian
|
|
error correction: (CRC,) Reed-Solomon
|
|
|
|
|
|
0x00:
|
|
Header (SGP): 2A 2A 2A 2A 2A 10
|
|
dann: 65 10 [FrameNb] [SondeID]
|
|
|
|
|
|
0x06:
|
|
65 10
|
|
0x08:
|
|
FrameNb(2byte), 20 20
|
|
0x0C:
|
|
SondeID(8byte), 00 61 00
|
|
0x17:
|
|
Cal_Nb(1byte)
|
|
Wenn Cal_Nb=00, dann
|
|
?? ?? 12 02 FF FF 01 00
|
|
| freq: 0x0212 = 530 -> (400000 + freq*10) kHz
|
|
Frequenzen:
|
|
D7 00 -> 402.15 MHz (Zadar)
|
|
E0 00 -> 402.24 MHz (Udine)
|
|
E6 00 -> 402.30 MHz (Udine/Muenchen/Meiningen)
|
|
0E 01 -> 402.70 MHz (Idar-Oberstein/Kuemmersbruck)
|
|
22 01 -> 402.90 MHz (Hohenspeissenberg)
|
|
5E 01 -> 403.50 MHz (Uccle)
|
|
7C 01 -> 403.80 MHz (Praha)
|
|
86 01 -> 403.90 MHz (De Bilt)
|
|
90 01 -> 404.00 MHz (Udine)
|
|
9A 01 -> 404.10 MHz (Norderney)
|
|
AE 01 -> 404.30 MHz (Schleswig2)
|
|
C2 01 -> 404.50 MHz (Meppen 6,12 Uhr)
|
|
FE 01 -> 405.10 MHz (Meppen 9 Uhr/Lindenberg)
|
|
12 02 -> 405.30 MHz (Essen)
|
|
3A 02 -> 405.70 MHz (Bergen)
|
|
|
|
|
|
0x46:
|
|
67 3D
|
|
0x48:
|
|
GPS TOW (gps time of week)
|
|
(Receiver: Common Transmission Time vs Common Reception Time)
|
|
|
|
0x4E..0x55: GPS PRN
|
|
12*5 bit = 60 bit, auf 8 byte verteilt:
|
|
little endian
|
|
00000111 1122222x
|
|
33333444 4455555x
|
|
66666777 7788888x
|
|
99999AAA AABBBBBx
|
|
PRN-32, 6.bit:
|
|
Entweder es ist die 3.PRN in dem Block und dann steht es im sonst nicht genutzten 16.bit x,
|
|
oder wenn im 16-bit-Block noch eine weitere PRN folgt,
|
|
dann ist diese entweder PRN-1 oder eine gerade PRN,
|
|
so dass man im letzteren Fall das unterste Bit wieder loescht.
|
|
Das Status-Byte sollte anzeigen, dass es sich davor tatsaechlich um PRN-32 handelt
|
|
und nicht um einen Satelliten, der noch nicht gelockt ist.
|
|
|
|
0x56..0x61: 12 byte GPS STATUS
|
|
|
|
0x62: 12*8 byte GPS DATA
|
|
4 byte pseudochips; 3 byte delta_chips/385; 1 byte
|
|
pseudochip-counter 32bit-fract, Faktor 2^(-10)=1/1024
|
|
df = c/(chips/sec) / 2^10 = 299792.458/1023.0/1024.0 = 0.286183844 // c=299792458m/s, 1023000chips/s
|
|
pseudorange[m] = - df[m/chips] * pseudochips[chips]
|
|
dl = L1/(chips/sec)/4 = 1575.42/1.023/4.0; //385.0 // GPS L1 1575.42MHz=154*10.23MHz, dl=154*10/4
|
|
delta(pseudochips, 1s) = delta_chips/dl
|
|
|
|
delta(pseudochips) = ca 25800 +/- d,
|
|
+ sat kommt naeher
|
|
- sat entfernt sich
|
|
d.h. chip-counter zaehlt, wieviele chips im Intervall schon empfangen wurden;
|
|
wenn sat sich entfernt, weniger chips.
|
|
nach ca 14 min reset
|
|
|
|
Geschwindigkeit kann aus delta_chips/385 errechnet werden:
|
|
a) 1sec-ECEF-Differenz von pseudochips und delta_chips (braucht nur Sat-Positionen);
|
|
b) delta_chips/Doppler als Relativgeschwindigkeiten mit gleicher "Design Matrix" wie fuer
|
|
Positions-Approximation, wobei V-Startwert (0,0,0) (braucht auch Sat-Geschwindigkeiten).
|
|
|
|
Bei GPS-Loesung ist DOP-Wert der Konstellation wichtig fuer die Genauigkeit.
|
|
Bei almanac-Daten 500-1000m Fehler moeglich, rinex-ephemeris deutlich genauer.
|
|
|
|
|
|
0xC8:
|
|
8 byte aux-data (z.B. O3)
|
|
|
|
|
|
Error Correction Code
|
|
CRC16 / Reed-Solomon
|
|
|
|
HEADER 6
|
|
DATA 210
|
|
RS-PARITY 24
|
|
|
|
2a2a2a2a2a10 (header)
|
|
6510 (L=2*0x10=32)
|
|
e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963b ebfb
|
|
690c (L=2*0x0c=24)
|
|
ca2b0fd9670f00670f8c0f11a458111e8810da410d30430d dc84
|
|
673d (L=2*0x3d=122)
|
|
b01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f04 6ed7
|
|
6805 (L=2*0x05=10)
|
|
03030000000000000000 b27d
|
|
ff02 (L=2*0x02=4)
|
|
02000200
|
|
f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1 (Reed-Solomon parity)
|
|
|
|
ecc/ecc-rs_vaisala.c:
|
|
1)
|
|
./ecc-rs_vaisala 2a2a2a2a2a106510e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963bebfb690cca2b0fd9670f00670f8c0f11a458111e8810da410d30430ddc84673db01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f046ed7680503030000000000000000b27dff0202000200f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1
|
|
RS92
|
|
codeword
|
|
errors: 0
|
|
0000000000000000000000000000000000000000000002000202FF7DB2000000000000000003030568D76E048F829501129F69008BA9D60097467305A0046D00B4D4E10393DA26010460BD0589E0B30019CCCA08860B3700422AE1008B99AE000D16B5049F541900DC5725FEA1DE9E0093A38A048C1F0600E9E0D0009987750111E820EF8A91E57FFFFFFFFFCF8FFF3F4F7FAF4FCFFF0F6E535AB03C8B2907AB6721851CB03D6784DC0D43300D41DA10881E1158A4110F8C0F67000F67D90F2BCA0C69FBEB3B964C753FBCD309983EBB42B3073D3D08006100343339333539344B202018E81065A1123673D06DEA60852E1812EC6806EDB969CDA7402ABEF0
|
|
frame:
|
|
2a2a2a2a2a106510e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963bebfb690cca2b0fd9670f00670f8c0f11a458111e8810da410d30430ddc84673db01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f046ed7680503030000000000000000b27dff0202000200f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1
|
|
|
|
2a)
|
|
./rs92gps -r rs92.wav > rs92raw.txt
|
|
cat rs92raw.txt | ./ecc-rs_vaisala > rs92raw_ecc.txt
|
|
./rs92gps --rawin1 -a almanac.txt rs92raw_ecc.txt
|
|
2b)
|
|
cat rs92raw.txt | ./ecc-rs_vaisala | ./rs92gps --rawin1 -a almanac.txt
|
|
2c)
|
|
./rs92gps -r rs92.wav | ./ecc-rs_vaisala | ./rs92gps --rawin1 -a almanac.txt
|
|
|
|
3)
|
|
./rs92ecc -b --ecc -e rinex.txt rs92.wav
|
|
./rs92ecc -b --ecc --crc -e rinex.txt rs92.wav
|
|
Fehler werden nur in raw-output angezeigt:
|
|
./rs92ecc -b --ecc -r rs92.wav
|
|
|
|
|
|
|
|
Bahndaten
|
|
SEM Almanac:
|
|
https://celestrak.com/GPS/almanac/SEM/
|
|
Rinex Ephemeris:
|
|
http://cddis.gsfc.nasa.gov/Data_and_Derived_Products/GNSS/broadcast_ephemeris_data.html
|
|
ftp://cddis.gsfc.nasa.gov/gnss/data/daily/YYYY/DDD/YYn/brdcDDD0.YYn.Z (updated)
|
|
ftp://cddis.gsfc.nasa.gov/gnss/data/daily/YYYY/brdc/brdcDDD0.YYn.Z (final)
|
|
|
|
GPS calendar:
|
|
http://adn.agi.com/GNSSWeb/
|
|
|
|
Geoid:
|
|
http://geographiclib.sourceforge.net/cgi-bin/GeoidEval
|
|
|
|
|
|
weitere Infos:
|
|
http://www.vaisala.com/Vaisala%20Documents/Brochures%20and%20Datasheets/RS92SGP-Datasheet-B210358EN-F-LOW.pdf
|
|
http://www.vaisala.com/Vaisala%20Documents/Vaisala%20News%20Articles/VN164/VN164_State-of-the-Art_Radiosonde_Telemetry.pdf
|
|
http://brmlab.cz/project/weathersonde/
|
|
http://prohu.altervista.org/convert.pdf (PTU, Haeberli 2001)
|
|
|
|
Reed-Solomon-Decoder:
|
|
http://www.ka9q.net/code/fec/
|
|
https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders
|
|
|