Syntax
Syntax
2010
c't-Lab liefert kein Echo, bei einem Terminal-Programm deshalb ggf. lokales Echo einstellen. Nur ein Befehl pro Zeile. Befehle werden erst nach dem Empfang von CR oder CR/LF verarbeitet.
Schnittstellen-Parameter: 38400 Bd, 8n1. Backspace (#8) löscht letztes Zeichen aus dem Befehlszeilenpuffer, andere Control-Zeichen werden ignoriert.
Ab Firmware-Versionen X.6 besteht die Option, dem Befehl/der Abfrage eine XOR8-Prüfsumme anzuhängen, in der Form $<HEXbyte> mit der XOR-Summe über den gesamten Befehlsstring
also z.B. 0:VAL 20=1.234!$45
Das fordert das jeweilige Modul auf, die Prüfsumme gegen die errechnete zu checken und im Fehlerfall mit dem Fehlercode 7 abzubrechen.
Lässt man bei Ausgabe-Befehlen das "!" weg, erfolgt keine Ausgabe des "#0:255=0 [OK]" Prompts (vermindert Datenmenge bei kritischen Anwendungen)
allgemein
Cmd Argument SubCh Wertebereich Beispiel-Befehle Beispiel-Antwort Erläuterung
IDN -- 254 IDN?, *:IDN? #0:255=1.39 [ADA-IO by c't] Identifizierung, '*' als Moduladresse gilt für alle Slave-Channels
VAL 0..255 0..255 div. 0:VAL 20=5.0!, VAL 10?, 0:10?, 20=5.0! #0:20=5.0000, #0:2=0.0 Allg. Form, Messwert-Spannung in Volt, VAL kann auch weggelassen werden
STR** -- 255 *:STR?, 255? #0:255=0 [OK] Status-Request, Bit 7 (+128)=Busy, 6 (+64)=UserSRQ, 5 (+32)=OverLoad, 4 (+16)=!!!
Bit 3..0=Fehler- oder Button-Nr. (bei UserSRQ)
Buttons: 1=Down/Strom, 2=Up/Spannung, 3=Enter/Feineinstellung (Inkrementalgeber-Druckkontakt)
ERC -- 251 Integer ERC? #0:251=0 Fehler-Zähler auslesen oder setzen, Zähler wird bei jedem Empfangs-Übertragungsfehler um 1 erhöht
SBD -- 252 Byte 252=51!, 252? #0:252=51 Serielle Baudraten-Einstellung, UBRR-Wert des ATmega32 mit U2X-Bit=1, siehe Seite 165 Datenblatt
ATmega32 und Status_Latenzen-Arbeitsblatt, erst nach Reset gültig
WEN -- 250 0..1 WEN=1!, 1:250=1! #0:255=16 [OK] EEPROM-Write-Enable-Bit, vor dem Beschreiben von Werten mit Schreibsperre auf 1 setzen, wird
danach wieder automatisch auf 0 gesetzt
** nur Lesen
SCL* 2 202 Float SCL 2=1.000!, 202=2! #1:255=0 [OK] Verstärkung Ausgangsstufe, Default 2, für 50-Ohm-Ausgang "1" eintragen wenn Abschlusswiderstand
vorhanden
SCL* 3 203 Float SCL 3=40!, 203=40! #1:255=0 [OK] Abschwächung passiver Abschwächer, 40 = 1/40stel
SCL* 10..13 210..213 Float SCL 10=0.9976!, 210=0.9976! #1:255=0 [OK] Skalierungen für True-RMS-Konverter, 10=Bereich 100mV, 11=Bereich 1V, 12=Bereich 10V,
13=Bereich 100V
OPT* 0 150 Float OPT 0=440!, 1:150=440!, 1:150? #1:255=0 [OK], #1:150=1000 Init-Frequenz (default 1000Hz)
OPT* 1 151 Integer OPT 1=1000!, 1:151=775! Init-Pegel (default 775 mV)
OPT* 2 152 Integer OPT 3=3300! Init-Logikpegel (default 5000 mV)
OPT* 3 153 Float Init-dB (nicht verwendet, obsolet durch OPT 1)
OPT* 4 154 Byte OPT 4=3! Init-Wave (default Sinus, 1)
OPT* 5 155 Byte OPT 5=440! Init-Burst (default 0ms=aus)
OPT* 20 170 Float OPT 20=2.5! Init-Offset in V (default 0V)
CMs Laborgerät (nicht in c't):
PWR -- 5 PWR=2! Outputmode, 0=normal, 1=symmetrisch, 2=PowerAmp an, 3=PowerAmp+Symmetrisch; nur für CMs
Laborgerät
DSP -- (6) DSP #1:255=OK Laborgerät: Frequenz/Pegel auf Anzeige aktualisieren
* nichtflüchtige EEPROM-Werte mit Schreibsperre
** nur Lesen
DCG 2.9 (Erweiterungen von mcb in rot)
Cmd Argument SubCh Beispiele (hier für Adresse 4) Beispiel-Antwort Erläuterung
VAL 0..15 0..15 Float 4:VAL 0=10.0!, 0? #1:255=0 [OK], #1:2=0.1 Allg. Form für SubCh
TMP** 0 233 Float TMP?, 233? #1:233=46 Temperatur des Kühlkörpers in °C
DCV -- 0 Float 4:DCV=10.0!, 0? #1:255=0 [OK], #1:2=0.0 Spannung U SOLL in Volt
DCA -- 1 Float DCA=100!, 1=20! Strom I SOLL in A
DCA 1 2 Float DCA 1=100!, 2=20! Strom I SOLL in mA
DCA 2 3 Float DCA 2=100!, 3=20! Strom I SOLL in µA
MAH -- 7 Float MAH?, 7?, MAH=0! Messwert kumulierter Strom in Ah (wird durch MAH=0! , MWH=0! auf 0 gesetzt)
MWH -- 8 Float MWH?, 8? MWH=0! Messwert kumulierte Leistung in Wh (wird durch MAH=0! , MWH=0! auf 0 gesetzt)
MSV** -- 10 Float MSV?, 2? Messwert U IST in Volt
MSA** -- 11 Float MSA?, 4:3? Messwert I IST in A
MSA** 1 12 Float MSA 1?, 4:12? Messwert I IST in mA
MSA** 2 13 Float MSA 2?, 4:13? Messwert I IST in µA
MSA** 4 15 Float MSA 4?, 4:15? Messwert ungeregelte Eingangsspannung U in Volt
MSW** -- 18 Float MSW?, 18? tatsächlich abgegebene Leistung in Watt
PCV -- 20 Float 4:PCV=100!, 20? #1:255=0 [OK], #1:20=100 Prozentwert für Ausgangsspannung, 0=Aus, 100=mit DCV eing. Wert
PCA -- 21 Float PCA=100!, 21=33.333! Prozentwert für Ausgangsstrom, 0=Aus, 100=mit DCA eing. Wert
RON -- 27 Integer RON=10!, 27=4! Ripple (Brumm) On-Zeit in ms, nur gerade Werte, Uaus=DCV
ROF -- 28 Integer ROF=6! Ripple (Brumm) Off-Zeit in ms, nur gerade Werte, Uaus=DCV* (100-RIP)/100
RIP -- 29 Integer RIP=25!, 29=25! Ripple (Brumm) in Prozent von der Sollspannung
DSP 0 80 Byte DSP=4!, 0:80=0!, 80? #1:255=0 [OK], #1:80=3 Angezeigtes Menü auf PM8-Panel 0..5, 0=U, 1=I, 2=Ripple%, 3=T on, 4=T off, 5=TrackCh
DSP* 9 89 Byte DSP 9=4!, 0:89=2! #1:255=0 [OK] Inkrementalgeber Impulse pro Rastpunkt (12er/24er haben meist 4, 30er/32er haben meist 2)
OFS* 0, 1 100, 101 Integer OFS 0=5!, 101=4!, 101? Offset Spannungs-DAC (Sollwert), 0=Low-Bereich, 1=High-Bereich
OFS* 2..5 102..105 Integer OFS 2=5!, 102=4! Offset Strom-DAC (Sollwert), 2=2mA, 3=20mA, 4=200mA, 5=2A-Bereich
OFS* 10, 11 110, 115 Integer OFS 10=0! Offset Spannungs-ADC (Istwert), 10=Low-Bereich, 11=High-Bereich
OFS* 12..15 112..115 Integer OFS 12=0! Offset Strom-ADC (Istwert), 12=2mA, 13=20mA, 14=200mA, 15=2A-Bereich
SCL* 0, 1 200, 201 Float SCL 0=1.006!, 200=1.006! Skalierung Spannungs-DAC (Sollwert), 0=Low-Bereich, 1=High-Bereich
SCL* 2..5 202..205 Float SCL 2=0.976!, 202=0.976! Skalierung Strom-DAC (Sollwert), 2=2mA, 3=20mA, 4=200mA, 5=2A-Bereich
SCL* 10, 11 210, 215 Float SCL 0=1.006!, 200=1.006! Skalierung Spannungs-ADC (Istwert), 10=Low-Bereich, 11=High-Bereich
SCL* 12..15 212..215 Float SCL 2=0.976!, 202=0.976! Skalierung Strom-ADC (Istwert), 12=2mA, 13=20mA, 14=200mA, 15=2A-Bereich
ALL** 0 99 ALL?, 4:99? (Liste mit Messwerten) ALL 0 enthält VAL 10, 11 und 15 Default-Werte
RAW** 0..1 50..51 Integer RAW 0? #1:50=31548 Rohdaten direkt vom 16-Bit-A/D-Wandler (so vorhanden) ohne Skalierung und Offset 12 Bit 16 Bit
RAW** 3..5 52..54 Integer RAW 3? #1:53=675 Rohdaten direkt vom internen A/D-Wandler (3 Kanäle Istspannung, Iststrom, Eingangsspannung), 12 Bit
ohne Skalierung und Offset 16 Bit
RAW** 20..21 70..71 Integer RAW 21? #1:71=32767 Rohdaten, die D/A-Wandler nach Skalierung und Offset erhält 12 Bit 16 Bit
OPT* 0 150 Float OPT 0=3.3! #1:255=0 [OK] Default-Ausgangsspannung 5.0 5.0
OPT* 1 151 Float OPT 1=0.1! Default-Ausgangsstrom 0.02 0.02
OPT* 2 152 Float InitGainPre, Gain OpAmp U6 nach ADC 5.0 3.0
OPT* 3 153 Float InitGainOut, Gain Sense-Differenzverstärker, (R21/R20) mit R23=R20 und R22=R21 3.0 3.0
OPT* 4 154 Float InitGainI, Stromeinstellungs-Spannungsteiler R33/(R33+R34) 0.5 0.25
OPT* 5 155 Float Uref LT1019 =2,5000V oder LTC1257 = 2.048V; 2.048 2.500
OPT* 6 156 Float Umax maximale Ausgangsspannung für CheckLimits 20 20
OPT* 7 157 Float R sense 1. Bereich nom. 2mA, 470 Ohm 470 470
OPT* 8 158 Float R sense 2. Bereich nom. 20mA, 47 Ohm 47 47
OPT* 9 159 Float R sense 3. Bereich nom. 200mA, 4.7 Ohm 4.7 4.7
OPT* 10 160 Float OPT 10=0.452! R sense 4. Bereich nom. 2A, 0.47 Ohm 0.47 0.47
OPT* 11 161 Float Imax A 1. Bereich 0.002 0.002
OPT* 12 162 Float Imax A 2. Bereich 0.020 0.020
OPT* 13 163 Float Imax A 3. Bereich 0.200 0.200
OPT* 14 164 Float OPT 14=1! Imax A 4. Bereich, für CheckLimits 1000 2000
OPT* 15 165 Float ADCUlofac, Skalierung Uist durch Spannungsteiler an Q1, R12/(R12+R24) 1 2
OPT* 16 166 Float ADCUhifac, Skalierung Uist durch Spannungsteiler an Q1 R12/(R24+R12||R16) 5 6
OPT* 17 167 Float InitOptions, Bit 0=1: LTC1655 statt 1257, Bit 1=1: LTC1864 vorhanden, Bit 2=1:DCP vorhanden 0 7
OPT* 18 168 Float SwitchU, DAC-Umschaltpunkt Low/High-Bereich in Volt (Uoutmax ADC = 2.048V*InitGainOut) 6 12.1
OPT* 19 169 Float untere Relais-Umschaltspannung (wieder auf 15V AC) 21 12.1
OPT* 20 170 Float obere Relais-Umschaltspannung (wieder auf 30V AC) 22 12.5
OPT* 21 171 Float OPT 21=60! Lüfter-Einschalt-Temperatur 50 50
OPT* 22 172 Float OPT 22=10! Einschaltwert RON Ripple On-Time in ms, nur gerade Werte 4 4
OPT* 23 173 Float OPT 23=10! Einschaltwert ROF Ripple Off-Time in ms, nur gerade Werte 6 6
OPT* 24 174 Float OPT 24=25! Einschaltwert RIP Ripple Prozent (Brumm), 0..100 0 0
* nichtflüchtige EEPROM-Werte mit Schreibsperre
** nur Lesen
ACV 1.05
Cmd Argument SubCh Beispiele (hier für Adresse 5) Beispiel-Antwort Erläuterung
VAL 8 8 Byte VAL 8=2!, 5:8=2! SPDIF Sampling-Format 0=Consumer 48kHz, 1=Consumer 96kHz, 2=Consumer 192kHz,
3=Professional 48kHz, (4=Professional 96kHz, 5=Professional 192kHz)
SMP -- 8 Byte SMP=0!, 5:8=3! SPDIF Sampling-Format 0=Consumer 48kHz, 1=Consumer 96kHz, 2=Consumer 192kHz,
3=Professional 48kHz, (4=Professional 96kHz, 5=Professional 192kHz)
RNG -- 19 0..8 RNG=1!, 5:19=1! #5:255=OK, #5:19=2 Messbereichsumschaltung, RNG 0=-20dB ... RNG 8=+50dB
DSP* 9 89 Byte DSP 9=4!, 5:89=2! #5:255=0 [OK] Inkrementalgeber Impulse pro Rastpunkt (12er/24er haben meist 4, 30er/32er haben meist 2)
INL** 0..1 10..11 Float INL?, INL 0?, 11? #5:10=775 Level von True-RMS-Messgleichrichter in mVeff, VAL 10=Links, VAL 11=Rechts, skaliert mit
Gain/Range
DSP* 0 80 Byte DSP=0!, 0:80=2! #5:255=0 [OK] Panel-LCD angezeigte Menü-Auswahl, 0=AuxCmdsel, 1=RateSel, 2=GainSel, 3=LevelBarDispl,
4=mVDispl
DSP* 9 89 Byte DSP 9=4!, 5:89=2! #5:255=0 [OK] Inkrementalgeber Impulse pro Rastpunkt (12er/24er haben meist 4, 30er/32er haben meist 2)
OPT* 0..1 150..151 0..8 OPT 1=1! #5:255=0 [OK] OPT 0 bzw. VAL150=Default RNG, 1 bzw. 151=Default SPDIF-Rate
SCL* 0..7 200 Integer SCL 0=2098!, 5:201=633! #5:255=0 [OK] Skalierungen für Pegel-Anzeige, Integer-Multiplikator, ca. 2100 bei geraden, 663 bei ungeraden Gains
RAW** 0, 1 50, 51 Integer RAW 0? #5:50=978 AD-Raw-Wert, RAW 0 bzw. VAL 50=links, RAW 1 bzw. VAL 51=rechts
ALL 0 99 ALL?, 5:99? (Liste mit Messwerten) Beide Input-Level von True-RMS-Messgleichrichter in mVeff, 10=Links, 11=Rechts
* nichtflüchtige EEPROM-Werte mit Schreibsperre
** nur Lesen
DIV 3.04
Cmd Argument SubCh Beispiele (hier für Adresse 3) Beispiel-Antwort Erläuterung
VAL 0 0 3:VAL 0?, 0? #3:0=1.564, #3:0=-99999 ADC24, Auslesen des gewandelten, skalierten Wertes, je nach Bereich DC oder AC TrueRMS.
Overload: -99999
VAL 1 1 VAL 1?, 1? #3:1=1.564 Intergrierter Messwert
VAL 2 2 VAL 2?, 2? #3:2=1.564 Langsam integrierter Messwert
VAL 10 10 VAL 10?, 10? #3:10=1.560 ADC10, schnellerer Interner 10-Bit-Wandler, je nach Bereich AC TrueRMS oder DC
VAL 11 11 VAL 11?, 11? #3:11=1.560 ADC10, schnellerer Interner 10-Bit-Wandler, je nach Bereich AC Peak oder DC
RNG -- 19 0..15 RNG=1! #3:255=OK, #3:19=2 Messbereichsumschaltung DC250mV..DC250V (0..3), AC250mV..AC250V (4..7), DC25mA..DC10A
(8..11), AC25mA..AC10A (12..15)
RAW** 0, 10..12 50, 60..62 RAW 0?, 3:50? #3:50=61245 DA-Wandler Rohdaten, 50=ADC24, 60=ADC10 AC TrueRMS, 61=ADC10 AC Peak, 62=DC
DSP* 8 88 Byte DSP 8=0!, 0:88=2! #3:255=0 [OK] LCD-Anzeige Messwert-Integrationsmodus 0=Aus/1=schnell/2=langsam
DSP* 9 89 Byte DSP 9=4!, 0:89=2! #3:255=0 [OK] Inkrementalgeber Impulse pro Rastpunkt (12er/24er haben meist 4, 30er/32er haben meist 2)
OFS* 0..15 100..104 OFS 0=9277, 100=9277, 100? #3:255=OK, #3:100=12345 Offsets für 16 Ranges DC250mV..AC10A von Wandler ADC24
OFS* 20.35 120..135 OFS 20=-7, 120=-7 #3:255=OK Offsets für 16 Ranges DC250mV..AC10A von Wandler ADC10 (Atmega-Intern)
OPT* 0 150 0..15 Default-Range TO BE IMPLEMENTED
SCL* 0..15 200..215 SCL 0=1.00032!, 200=1.00032!, 200? Skalierungen für 16 Ranges DC250mV..AC10A von Wandler ADC24
SCL* 20..35 220..235 SCL 20=1.00032!, 220=1.00032!, 220? Skalierungen für 16 Ranges DC250mV..AC10A von Wandler ADC10 (Atmega-Intern)
TRM* 0 240 Byte TRM 0=7!, TRM? #3:255=0 [OK], #3:240=7 Trigger-Maske, Bit 0=SubCh 0, Bit 1=SubCh10, Bit2=SubCh11
TRT* -- 247 0, 20..31767 TRT=0, 0:247=2000 #3:255=0 [OK] Autom. Trigger-Timing in ms, 0=Aus, Werte ab 20 ms möglich
TRL* 0 248 0..1 TRL=1!, TRL?, 248=0!, 248? #3:255=0 [OK], #3:248=1 Trigger-Edge PB2, neg. = 0, pos. = 1, Impuls an diesem Pin liefert Messwerte wie in Trigger-Maske
definiert. Erfordert Reset
TRG -- 249 -- TRG!, TRG?, 249? #3:255=0 [OK] (Liste mit Werten) manuelle Trigger-Auslösung, liefert Messwerte wie in Trigger-Maske definiert
ALL 0 95..99 ALL?, 99? (Liste mit Messwerten) TO BE IMPLEMENTED
* nichtflüchtige EEPROM-Werte mit Schreibsperre
** nur Lesen
EDL 1.78 (Erweiterungen von mcb in rot)
Cmd Argument SubCh Beispiele (hier für Adresse 6) Beispiel-Antwort Erläuterung
VAL 0..255 0..255 Float 6:VAL 0=10.0!, 0?, 6:1=0! #6:255=0 [OK], #6:2=10.1 Allg. Form für SubCh
TMP** 0 233 Float 6:TMP?, 233? #6:233=46 Kühlkörper-Temperatur in °C, bei externer Leistungsstufe: abhängig vom gewählten A-Bereich
ENA -- 0 Boolean 6:ENA=1!, 0? #6:255=0 [OK], #1:2=0.0
DCA -- 1 Float DCA=100!, 1=20! Strom I SOLL in A
DCA 1 2 Float DCA 1=100!, 2=20! Strom I SOLL in mA
DCP -- 3 Float DCP=12! Leistung P SOLL in Watt
DCV -- 4 Float DCV=10.5! Untere Abschaltspannung U in Volt
DCR -- 5 Float DCR 1=123!, 5=123! Sollwiderstand im R-Betrieb
MAH -- 7 Float MAH?, 7?, MAH=0! Messwert kumulierter Strom in Ah (wird durch MAH=0! , MWH=0! auf 0 gesetzt)
MWH -- 8 Float MWH?, 8? MWH=0! Messwert kumulierte Leistung in Wh (wird durch MAH=0! , MWH=0! auf 0 gesetzt)
-- -- 9 Byte 6:9=4!, 9? Bereichs-Direktwahl 0 (kleinster Bereich) bis 3 (größter Bereich), 4 = Auto-Select je nach eingestelltem
DCA (default)
MSV** 0 10 Float MSV?, 6:10? Messwert U IST in V während On-Zeit
MSA** 2 16 Float MSA?, 6:11? Messwert I IST in A während On-Zeit
MSA** 1 12 Float MSA 1?, 6:12? Messwert I IST in mA während On-Zeit
MSV** 5 15 Float MSV 5?, 6:15? Messwert U IST in Volt während Off-Zeit
MSA** 5 16 Float MSA 5?, 6:16? Messwert I IST in A während Off-Zeit
MSA** 6 17 Float MSA 6?, 6:17? Messwert I IST in mA während Off-Zeit
RNG -- 19 Byte RNG=1!, 19? Eingangsspannungs-Messbereich und Modus, 0=OutputOff, 1=IconstHiVolt, 2=IconstLoVolt,
3=RmodeHiVolt, 4=RmodeLoVolt, 5=PmodeHiVolt, 6=PmodeLoVolt
MSW** -- 18 Float MSW?, 18? tatsächlich aufgenommene Leistung in Watt
PCA -- 21 Float PCA=100!, 21=33.333! Prozentwert für Ausgangsstrom, 0=Aus, 100=mit DCA eing. Wert
RON -- 27 Integer RON=10!, 27=4! Ripple On-Zeit in ms, Iaus=DCA
ROF -- 28 Integer ROF=6! Ripple Off-Zeit in ms, Iaus=DCA* (RIP)/100
RIP -- 29 Integer RIP=25!, 29=50! Strom während Off-Zeit in Prozent von DCA-Wert (einschl. PCA)
DSP 0 80 Byte DSP=4!, 6:80=0!, 80? #6:255=0 [OK], #6:80=3 Angezeigtes Menü auf PM8-Panel 0..5, 0 oder 1=I/U, 2=Mode, 3=T on, 4=T off, 5=I off%, 6=TrackCh
DSP* 9 89 Byte DSP 9=4!, 6:89=2! #6:255=0 [OK] Inkrementalgeber Impulse pro Rastpunkt (12er/24er haben meist 4, 30er/32er haben meist 2)
OFS* 2..5 102..105 Integer OFS 2=5!, 102=4! Offset Strom-DAC (Sollwert), 2=2mA, 3=20mA, 4=200mA, 5=2A-Bereich
OFS* 10, 11 110, 115 Integer OFS 10=0! Offset Spannungs-ADC (Istwert), 10=Low-Bereich, 11=High-Bereich
OFS* 12..15 112..115 Integer OFS 12=0! Offset Strom-ADC (Istwert), 12=2mA, 13=20mA, 14=200mA, 15=2A-Bereich
SCL* 2..5 202..205 Float SCL 2=0.976!, 202=0.976! Skalierung Strom-DAC (Sollwert), 2=2mA, 3=20mA, 4=200mA, 5=2A-Bereich
SCL* 10, 11 210, 215 Float SCL 0=1.006!, 200=1.006! Skalierung Spannungs-ADC (Istwert), 10=Low-Bereich, 11=High-Bereich
SCL* 12..15 212..215 Float SCL 2=0.976!, 202=0.976! Skalierung Strom-ADC (Istwert), 12=2mA, 13=20mA, 14=200mA, 15=2A-Bereich
ALL** 0 99 ALL?, 6:99? (Liste mit Messwerten) einschließlich Off-Werte
RAW** 0..1 50..51 Integer RAW 0? #6:50=31548 Rohdaten direkt vom 16-Bit-A/D-Wandler ohne Skalierung und Offset
RAW** 3..4 52..53 Integer RAW 3? #6:53=675 Rohdaten direkt vom internen A/D-Wandler (2 Kanäle Istspannung, Iststrom integriert) Default-Werte
RAW** 20..21 70..71 Integer RAW 21? #6:71=32767 Rohdaten, die D/A-Wandler nach Skalierung und Offset erhält, in 70 für On-Zeit, in 71 für Off-Zeit 12 Bit
TRM* 0 240 Byte TRM 0=1!, TRM=1,TRM? #6:255=0 [OK], #6:240=2 Trigger-Maske, Bit 0=1 -> Freigabe Trigger Input PL6, Bit 1=1 -> Periodische Ausgabe On- und Off-
Werte 00000001
OPT* 1 151 Float OPT 1=0.1! #6:255=0 [OK] Default-Ausgangsstrom 0.02
OPT* 2 152 Float InitLowDividerU, U-Gain U12 einschl. Istspannungs-Vorteiler wenn PreAmp ein (PC5/Q1=high) 2.5
OPT* 3 153 Float InitHiDividerU, Istspannungs-Vorteilfaktor (R53+R58)/R52+1 10
OPT* 4 154 Float InitGainI, Gain Sense-OpAmp U13 0.5
OPT* 5 155 Float Uref LT1019 =2,5000V 2.5
OPT* 6 156 Float maximal aufzunehmende Leistung (U*I oder U*U/R), darüber Abschaltung und Fault-Meldung 25
OPT* 7 157 Float R sense 1. Bereich nom. 2mA, 100 Ohm oder 10mA, 20 Ohm 100
OPT* 8 158 Float R sense 2. Bereich nom. 20mA, 10 Ohm oder 100mA, 2 Ohm 10
OPT* 9 159 Float R sense 3. Bereich nom. 200mA, 1 Ohm oder 1A, 0.22 Ohm 1
OPT* 10 160 Float OPT 10=0.2197! R sense 4. Bereich nom. 2A, 0.1 Ohm oder 10A, 0.02 Ohm 0.1
OPT* 11 161 Float Imax A 1. Bereich 0.002
OPT* 12 162 Float Imax A 2. Bereich 0.020
OPT* 13 163 Float Imax A 3. Bereich 0.200
OPT* 14 164 Float OPT 14=5.0! Imax A 4. Bereich, für CheckLimits 2
OPT* 15 165 Float UmaxHi maximale Klemmenspannung im HiVolt-Bereich 25
OPT* 16 166 Float UmaxLo maximale Klemmenspannung im LoVolt-Bereich 6.1
OPT* 17 167 Float Bit 0, 1 = DACtype, 0=MAX543/LTC8043, 1=AD5452, 3=DAC8811, Bit 2=LM75 vorhanden, Bit 3 = 4
LM75 extern I2C-Adr. $48
OPT* 18 168 Float Init Ipercent, Einschaltwert für Off-Strom in Prozent vom Sollstrom 0
OPT* 19 169 Float Init PWonTime 10
OPT* 20 170 Float Init PWoffTime 0
OPT* 21 171 Float OPT 21=60! Lüfter-Einschalt-Temperatur 50
FPGA 2.1
Cmd Argument SubCh Beispiele (hier für Adresse 7) Beispiel-Antwort Erläuterung
VAL 0..79 0..79 LongInt 7:VAL 0=512!, 0? #7:255=0 [OK], #7:2=0.1 Allg. Form für SubCh, 80 Schreib-/Lese-Register im FPGA über SPI, die ersten 4 werden ständig
aktualisiert für PM8
DSP 0 80 Byte DSP=4!, 7:80=0!, 80? #7:255=0 [OK], #7:80=3 Angezeigtes Menü auf PM8-Panel TBD
HEX 88 Byte HEX=1, 88=0! Hex-Mode bei OptoBus-Zahlenausgeben, zusätzlich in der Form [$12345678]
DSP* 9 89 Byte DSP 9=4!, 0:89=2! #7:255=0 [OK] Inkrementalgeber Impulse pro Rastpunkt (12er/24er haben meist 4, 30er/32er haben meist 2)
OPT* 0 150 Byte OPT 0=1!, OPT=1 #7:255=0 [OK] Default-BIN/BIT-Dateinummer (FPGA-Konfigurationsdatei), Default=0
OPT* 1 151 Byte OPT 1=-1! Default-INI-Dateinummer (Script-Datei)
OPT* 3 153 Byte OPT 3=128! Default-Auto-Increment-Register/SubCh AIR für MEM-und DAT-Files (siehe dort)
OPT* 4 154 Byte OPT 4=0! MCH-Default (siehe LabScript)
OPT* 5 155 Byte OPT 5=10! SCH-Default (siehe LabScript)
OPT* 7 157 Byte OPT 7=255! Nachkomma-Anzahl in der Antwort, Default 255=Auto
OPT* 9 159 Integer OPT 9=500! GET-/PUT-Timeout, Default 500 ms
OPT* 10..13 160..163 LongInt OPT 10=32768! Init-Werte für 4 angezeigte Param-Register 0..3
CLK 90..99 90..99 RTC-Register und Befehle (Echtzeituhr), Stunden/Minuten/Sekunden/Tag/Monat/Jahr
CFG - 240 Byte CFG=3!, CFG? #7:255=0 [OK] Auswahl und Laden der Datei Nummer <byte> von SD-Karte. Bei BIN- und BIT-Files wird die Datei
gelesen und ins FPGA programmiert, INI-Dateien werden als Script ausgeführt. Achtung: OptoBus ist
bei Konfigurationsdaten etwa 2 Sekunden blockiert!
LST**, - 241 - LST?, DIR?, 241? #7:241=0 [<FileName1>], #7:241=1 Directory-Liste mit Dateinummern und zugehörigen Dateinamen
DIR** [<FileName2>] usw.
FNM** 242 - FNM?, 7:242? FileNum, Anzahl der Dateien auf der SD-Karte
FPGA 1.0 behandelt Scripts (von SD-Karte gelesene INI-Dateien) im Prinzip so, als hätte es diese
Befehle/Abfragen über den OptoBus erhalten.
Datei-Befehle neu ab Version 2.1
Alphanumerische Befehlsargumente für Dateinamen zulässig, die nicht mit Ziffern beginnen dürfen.
CFG 240 CFG=9, CFG=[Link] File Load, BIT/BIN-Konfigurationen, aber auch INI-, DAT-, MEM- und BMP-Dateien (werden je nach
Suffix anders behandelt)
CFG=[Link] BIN- und BIT-Dateien werden als Konfiguration ins FPGA geladen, INI-Dateien werden als LabScript
ausgeführt, MEM- und DAT-Dateien auf eine SPI-AutoIncrement-Adresse ausgegeben (z.B. für
BlockRAM-Inhalte, DAT immer binär, byteweise!), BMP-Dateien als Background ins QVGA-Video-
RAM geladen, sofern ein solches im FPGA implementiert ist.
CFG=[Link] MEM-Dateien sind BlockRAM-Inhalte für den PicoBlaze-Core. Diese müssen dem von KCPSM3-
Assembler ausgegebenen Format entsprechen (Textdatei mit einem Hex-Wert pro Zeile, max. 1024
Werte).
AIR 248 AIR=<n>, 248?, AIR=128 #7:248=128 Auto-Increment-Registernummer (für FPGA-SPI) für MEM- und DAT-Files (z.B. BlockRAM-Inhalte),
Default: Register/SubCh 128 bzw. Inhalt OPT 3. Dieses Register ist das Daten-Empfangregister,nach
jedem Zugriff muss sich ein Adresszähler im FPGA erhöhen. Ein Reset des Zählers erfolgt vor und
nach jeder Datei-Übertragung durch automatischen Zugriff auf SPI-Register <n>+1 (Default: 129).
Dieser Zugriff kann daher auch zum Reset des (PicoBlaze-)Cores dienen.
TSF 880 TSF="<filename>" Text Save (append) to File, TSF="<filename>" <CR>, <bieliebiger Text> , Ende mit ETX ($03), für
CPU-Cores
XMR 890 XMR? XModem-Receive AutoInc-Block vom Rechner an mit AIR bestimmtes SPI-Register, vorher müssen
AIS, AIW und ggf AIR entsprechend gesetzt sein. Nur XMODEM 128/Checksum unterstützt, nicht
CRC oder 1K. Funktioniert nur, wenn FPGA-Modul das einzige in der OptoBus-Kette ist; andere
Module leiten Binärdateien nicht durch!
TSR 900 TSR <SPI-Register>="<string>", TSR Type String an SPI, für CPU-Cores mit eigener Intelligenz (z.B. ct-BASIC)
3="RUN 50000"
TSS 970 TSS ="<string>" <string> Type String an serielle Schnittstelle, für Anwendung innerhalb von INI-Scripten und Debug-Zwecke
COM 0 990 COM 0=1 Einstellen des CoreRxSubCh-SPI-Register, F_INT-IRQ holt Zeichen aus diesem Register ab und
interpretiert Zeichenkette als c't-Lab-Befeh
COM 1 991 COM 1=2 Einstellen des CoreTxSubCh-SPI-Register, für Zeichenausgabe an CPU-Cores mit eigener Intelligenz
(z.B. ct-BASIC). Anfragen/Befehle, die über F_INT/CoreRxSubCh hereinkommen, werden hier
beantwortet.
COM 2 992 COM 2=0 Default-Kommunikationskanal für INI-Files, 0=OptoBus (default), 1=intern COM an FPGA
AIR 280 AIR=<n>, 280?, AIR=128, 280=128 #7:280=128 Auto-Increment-Registernummer (FPGA-SPI-SubCh) für MEM- und DAT-Files (z.B. BlockRAM-
Inhalte) und BLD/BSV-Befehle, Default: Register/SubCh 128 bzw. Inhalt OPT 3. Dieses Register ist
das Daten-Empfangregister, nach jedem Zugriff muss sich ein Adresszähler im FPGA erhöhen. Ein
Reset des Zählers erfolgt vor und nach jeder Datei-Übertragung durch automatischen Zugriff auf SPI-
Register <n>+1 (Default: 129). Dieser Zugriff kann daher auch zum Reset des (PicoBlaze-)Cores
dienen. Achtung: Neue SubCh-Belegung
Die dem AIR-Wert folgenden 3 SPI-Register sind für AutoIncrement-Übertragungen reserviert und
werden bei Blockübertragungen (mit BSV/BLD) automatisch beschrieben. Wenn AIR=128 (default), gil
folgende Belegung:
129 = CoreSelect-Register, selektiert bestimmten Core, falls mehrere im FPGA vorhanden
130 = Startadresse in 32-Bit-Breite, Beschreiben dieses Registers muss im FPGA Schreibzugriff auf
RAM-Inhalt freischalten
131 = Startadresse in 32-Bit-Breite, Beschreiben dieses Registers muss im FPGA den Lesezugriff auf
RAM-Inhalt freischalten
AIS 281 AIS=0 Auto-Increment-Select, bestimmten Core auswählen für DAT, MEM, HEX-Files, wird auf AIR-Wert
plus 1 ausgegeben (default 129).