Wie stellt ein A/D-Wandler die gemessenen Werte dar?

Beiträge
6.649
Reaktionspunkte
1.610
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
leider ist es schon sehr lange her, dass ich mit solchen Komponenten zu tun hatte und eine Antwort auf meine Frage weiß ich leider nicht mehr und auch Datenblätter die ich via Tante Google gefunden habe brachten mich nicht weiter.
In analogen Eingangskarten werkelt ja ein A/D-Wandler mit einer bestimmten Bittiefe. Das Ergebnis wird dann ja meist hochskaliert z.B. auf 15 Bit, so das z.B. bei Beckhoff ein Bereich von -32768 - 32767 an die SPS ausgegeben wird, aber wie sieht das bei einem A/D-Wandler direkt aus? Angenommen dieser hat 12 Bit, gibt er dann entsprechend Zahlen von -2048 - 2047 und bei einer rein positiven Messung 0 - 4095 aus oder wie?
 
Zuletzt bearbeitet:
Moin Oliver,
ich behaupte mal - ohne es wirklich zu wissen - dass der analoge Wert vor der AD-Wandlung quasi "per Poti" so skaliert wird, dass die zur Verfügung stehenden Bits optimal genutzt werden.
Wie viele Bits der jeweilige AD-Wandler hat (ob z.B. 10 oder 13 oder 16) ist schnuppe, wenn diese Bits linksbündig in das ErgebnisWort gestellt werden. Unterschiedlich ist dann nur die Feinheit/Granularität.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Oliver,
ich behaupte mal - ohne es wirklich zu wissen - dass der analoge Wert vor der AD-Wandlung quasi "per Poti" so skaliert wird, dass die zur Verfügung stehenden Bits optimal genutzt werden.
Wie viele Bits der jeweilige AD-Wandler hat (ob z.B. 10 oder 13 oder 16) ist schnuppe, wenn diese Bits linksbündig in das ErgebnisWort gestellt werden. Unterschiedlich ist dann nur die Feinheit/Granularität.
Danke, das ist mir schon klar, dass Beckhoff, Siemens und Co. das umrechnen, mir geht es aber tatsächlich darum, was ein A/D-Wandler selber ausgibt.
 
Danke, das ist mir schon klar, dass Beckhoff, Siemens und Co. das umrechnen, mir geht es aber tatsächlich darum, was ein A/D-Wandler selber ausgibt.
Der AD-Wandler gibt ein Konglomerat von n Bits aus, das eine BinärZahl darstellt.
Ob diese bereits im ZweierKomplement dargestellt ist, mag sein, mag nicht sein, spielt auch keine Rolle. Das rückt dann ggfs die ADU-Karte (das "Drumherum" des ADU) zurecht.
 
Der AD-Wandler gibt ein Konglomerat von n Bits aus, das eine BinärZahl darstellt.
Ob diese bereits im ZweierKomplement dargestellt ist, mag sein, mag nicht sein, spielt auch keine Rolle. Das rückt dann ggfs die ADU-Karte (das "Drumherum" des ADU) zu recht.
Hallo Heinileini,
in meinem Fall ist dieses Detail aber leider wichtig, wäre es mir egal hätte ich mir meine Frage geschenkt. Wie gesagt ich habe schon nach Infos gegoogelt aber nocht nichts passendes gefunden.
 
OK, ich wollte es eigentlich nicht an die große Glocke hängen, aber es lässt sich ja langsam nicht mehr verheimlichen. Ich habe den Auftrag angenommen und schreibe das Buch "SPS für Dummies" und da sollen solche Details, wenn auch nur am Rande, auch Erwähnung finden.
Dann müsstest Du die Datenblätter der entsprechenden Chips studieren.
Das hatte ich schon, bin aber leider nicht schlauer geworden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was fehlt Dir denn jetzt noch, Oliver?
Anscheinend habe ich Deine Frage bzw. das gesuchte Detail noch nicht richtig verstanden.
Die Analogkarten von Beckhoff (und anderen auch) wandeln intern mit z.B. 12 Bit und skalieren das Ganze dann auf 15 Bit hoch. Also bei 10V kommt in der SPS 32767 an. Ich möchte jetzt gerne wissen was der A/D-Wandler bei 12 Bit ausgibt. Bei nur positiv messenden Karten würde ich jetzt mal 4095 oder, falls das 12 Bit nur für ein (nicht genutztes) Vorzeichen verwendet wird, 2047 erwarten. Interessanter wird es bei Karten die negative und positive Spannungen messen können, hier gibt die Karte ja bei -10V 32768 und bei +10V 32767 aus, aber was macht der A/D-Wandler? Steht da dann bei 12 Bit -2048 und 2047 an oder sind die 12 Bit ohne Vorzeichen, dann wären es -4096 und 4095, oder kommt da was ganz anderes raus?
Was mir dabei einfällt, aufgrund des Zweierkompliments geht es bei 15 Bit in negative Richtung ja bis -32768 und in positive Richtung bis 32767. Würde das bedeuten, dass die Schrittweite bei negativen Spannungen 305,174 microV wäre, bei positiver Spannung aber 305,185 microV? Ja, ich weiß, das ist Erbsenzählerei, denn da spuckt einem ja noch die Messungenauigkeit in die Suppe.
 
So, ich habe Tante Google noch etwas gequält und bin etwas weiter. Soweit ich das jetzt richtig verstehe bedeuten die 12 Bit bei einem A/D-Wandler, das er inklusive Vorzeichen 12 Bit hat. Bei einer positiven Spannung gibt er beim Maximum 2047 aus. Bei einer negativen Spannung gibt er beim Maximum, oder besser Minimum dass -2047 aus und nicht -2048. Also zusammengefasst, er gibt Werte von -2047 - 2047 aus und die Kartenhersteller (z.B. Beckhoff) machen daraus dann z.B. -32768 - 32767 und nicht -32767 - 32767, warum auch immer.
Kann das einer bestätigen?
 
Würde das bedeuten, dass die Schrittweite bei negativen Spannungen 305,174 microV wäre, bei positiver Spannung aber 305,185 microV? Ja, ich weiß, das ist Erbsenzählerei, denn da spuckt einem ja noch die Messungenauigkeit in die Suppe.
Ich komme zwar auf -305,176 µV (bei der Aufteilung von -10 V auf den Bereich von 32768 Stufen), aber die 2 nV machen den Kohl nicht fett.
Du tummelst Dich wirklich im Bereich der ErbsenZählerei.
Es gibt keinen Grund im negativen Bereich mit einer anderen Abstufung zu rechnen, als im positiven Bereich.
Wenn die Karte -10 V .. 0 .. 10 V kann bzw. können soll, so wäre es ohnehin utopisch, die Grenzwerte -32768 und 32767 genau auf -10,000000 V und + 10,000000 V zu legen, weil man dann nie weiss, ob z.B. der gemessene Wert genau 10,000000 V beträgt oder mehr (Überlauf, den man aber dann nicht als solchen erkennt).
Die ZahlenBereiche werden z.T. an die Unterläufe/Überläufe "verschwendet" (insbesondere bei den Siemens-Gepflogenheiten).

Also zusammengefasst, er gibt Werte von -2047 - 2047 aus und die Kartenhersteller (z.B. Beckhoff) machen daraus dann z.B. -32768 - 32767 und nicht -32767 - 32767, warum auch immer.
Kann das einer bestätigen?
Kann ich so nicht bestätigen. Der KartenHersteller schiebt einfach den Wert des ADU um die fehlende Anzahl BitPositionen nach links, zumindest wenn der Hersteller mitgedacht hat und ADUs bzw. ADU-Karten mit unterschiedlichen Bitzahlen im Angebot hat.

Was mich an den Angaben der Hersteller stört, ist, wenn von n Bit plus VorzeichenBit die Rede ist. Das hat schon so manchen irritiert ...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich komme zwar auf -305,176 µV (bei der Aufteilung von -10 V auf den Bereich von 32768 Stufen), aber die 2 nV machen den Kohl nicht fett.
OK, Du hast recht, da waren wieder die dicken Finger am Werk.
Kann ich so nicht bestätigen. Der KartenHersteller schiebt einfach den Wert des ADU um die fehlende Anzahl BitPositionen nach links, zumindest wenn der Hersteller mitgedacht hat und ADUs bzw. ADU-Karten mit unterschiedlichen Bitzahlen im Angebot hat.
Da muss ich leider widersprechen, hier mal ein Auszug aus der Anleitung von Beckhoff.
Analokkarte.png
Allerdings weiß ich nicht wie bei 12 Bit die 0x7FFF und 0x8000 Zustandekommen. Aber das bei Beckhoff bei +10V 32767 anliegen kann ich eigener Erfahrung bestätigen, da wird tatsächlich hochskaliert und nicht einfach geschoben.
Was mich an den Angaben der Hersteller stört, ist, wenn von n Bit plus VorzeichenBit die Rede ist. Das hat schon so manchen irritiert ...
Das stimmt
 
Da muss ich leider widersprechen, hier mal ein Auszug aus der Anleitung von Beckhoff.
Das nehme ich ganz gelassen hin und berufe mich darauf, das viele bis alle Wege ins ROM führen. ;)
Allerdings weiß ich nicht wie bei 12 Bit die 0x7FFF und 0x8000 Zustandekommen. Aber das bei Beckhoff bei +10V 32767 anliegen kann ich eigener Erfahrung bestätigen, da wird tatsächlich hochskaliert und nicht einfach geschoben.
Woraus erkennst Du, dass nicht einfach geschoben wird? "Geschoben" kann im einfachsten Fall bedeuten, dass das höchstwertige Bit des 12-Bit-Chips auf das höchstwertige Bit des 16-Bit ErgebnisRegisters verdrahtet ist u.s.w.. Dafür ist nicht unbedingt ein SchiebeRegister oder eine CPU nötig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das nehme ich ganz gelassen hin und berufe mich darauf, das viele bis alle Wege ins ROM führen. ;)

Woraus erkennst Du, dass nicht einfach geschoben wird? "Geschoben" kann im einfachsten Fall bedeuten, dass das höchstwertige Bit des 12-Bit-Chips auf das höchstwertige Bit des 16-Bit ErgebnisRegisters verdrahtet ist u.s.w.. Dafür ist nicht unbedingt ein SchiebeRegister oder eine CPU nötig.
Beim schieben können die untersten Bits nie 1 werden, dass ist bei Beckhoff aber der Fall. Wenn eine 12 Bit Zahl um vier Bits nach links geschoben wird sind die untersten vier Bits immer 0.
 
Beim schieben können die untersten Bits nie 1 werden, dass ist bei Beckhoff aber der Fall. Wenn eine 12 Bit Zahl um vier Bits nach links geschoben wird sind die untersten vier Bits immer 0.
Dafür muss sich aber Beckhoff rechtfertigen, dass sie einfach irgendwelche Einsen dazuzaubern!

Andererseits, in Deinem BeckhoffSchema steht etwas von "Filter". Das kann natürlich ZwischenWerte dazuzaubern.

🤔
Kommt doch auf's Gleiche raus, oder?
Schieben ist wie Skalieren/Multiplizieren mit entsprechendem Faktor.
Im Prinzip ja, hucki,
aber wenn man für seine beim Skalieren verwendeten Zahlen nur eine sparsame Anzahl Bits hat, dann sollte man auf eine derbe Verschlechterung der Genauigkeit gefasst sein.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich könnte mir vorstellen, daß bei Beckhoff ein 12 Bit ADU -10V..+10V in Wahrheit etwa so wandelt:
-10,0V .. 0 .. +9,995V ---> 12 Bit: 16#0800 .. 0 .. 16#07FF ---> Shift zu 16 Bit: 16#8000 .. 0 .. 16#7FF0 (also 4 0-Bits anhängen)
und erst wenn vom ADU auch noch positiver Überlauf signalisiert wird, dann wird das Ergebnis auf 16#7FFF = +32767 gesetzt.

Harald
 
Gibt es bei Beckhoff bei 12 Bit ADU ungerade Werte < +32767?
Hallo Harald,
gerade mal getestet, ja gibt es. Ich denke mal es ist, wie @Heinileini schrieb. Durch die Nachbehandlung kommen die unteren 1en zustande. Warum die bei den negativen Zahlen aber unbedingt bis 32768 gehen wollen ist ein Rätsel.
Wie sieht das übrigens bei Siemens aus? Ist da der Wert geschoben, oder skaliert?
 
Zuletzt bearbeitet:
gerade mal getestet, ja gibt es. Ich denke mal es ist, wie @Heinileini schrieb. Durch die Nachbehandlung kommen die unteren 1en zustande.
Diesen "Zauber" sollte Beckhoff mal genauer erklären. Durch Skalieren mit krummen Werten und dann Wandlung zu Ganzzahl könnte sich die Genauigkeit des Ergebnisses geringfügig verschlechtern.
Oder Du testest mal an einer Beckhof-Analogkarte, genau welche Eingangswerte da (bei einer Signal-Rampe) geliefert werden, welche Sprünge die Werte da machen. PS: könnte es sein, daß die 1-Bits durch Statistik/Mittelwertbildung entstehen?

Warum die bei den negativen Zahlen aber unbedingt bis 32768 gehen wollen ist ein Rätsel.
Kleinster Wert = -32768 wiederum ist eigentlich kein Rätsel, sondern "natürliche" Folge, wenn man möglichst wenig den ADU-Wert manipuliert. -32768 = 16#8000 entspricht "alle Bits 0" verschoben zu Zweierkomplement.

Wie sieht das übrigens bei Siemens aus? Ist da der Wert geschoben, oder skaliert?
Bei Siemens gibt es zwischendurch keine ungeraden Werte, da "springen" die Werte in 16er Schritten (0 - 16 - 32 - 48 - 64 - ...) ---> es werden also 0-Bits angehängt/aufgefüllt. Entweder durch feste Verdrahtung oder durch Schieben.

Harald
 
Zurück
Oben