Step 7 Zweierkomplement umwandeln

S7Anfänger

Level-2
Beiträge
291
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich bin leider noch immer bei meiner Inbetriebnahme und dabei ist mir bei den Analogeingängen etwas aufgefallen.
Ich nutze eine ET200s die mit einem I/O Koppler von Phoenix Contact, die per ProfiNet verbunden sind.
Der Analogeingang befindet sich an dem I/O Koppler und wird mit PEW 300 in der SPS dargestellt.
Derzeit ist es so, das mit bei einem wert von ca 4 mA ein Dezimalwert von ca 1461 in der SPS angezeigt wird. Bei ca. 20mA sind es ca 7000.
Laut dem Handbuch des Analogeingangs sollte ich bei 4mA einen Dezimalwert von 0 und bei 20mA einen Dezimalwert von 16000 haben.
Jetzt Steht in dem Handbuch auch, das das Eingangsdatenwort als Zweierkomplement dargestellt wird.
Wie Bekomme ich jetzt dieses Zweierkomplement in einen Normalen Wert, den ich dann auch mit dem SCALE Baustein weiter verarbeiten kann?

Die 2 entsprechenden Seiten der Anleitung habe ich mal als PDF angehängt.


Beste Grüße
Hagen
 

Anhänge

Gleich der erste Satz in der Phoenix-Beschreibung "Die Daten werden in den Bits 14 bis 0 dargestellt. Ein zusätzliches Bit (Bit 15) steht als Vorzeichen-Bit zur Verfügung." ist falsch bzw. zumindest total irreführend.
Am höchstwertigen Bit einer (nicht Vorzeichen-losen) Zahl kann man zwar erkennen, ob die Zahl positiv (0) oder negativ (1) ist, aber der naheliegende UmkehrSchluss, dass man nur das "VorzeichenBit" "umknippsen" muss, um die Zahl mit demselben Betrag, aber dem umgekehrten Vorzeichen zu erhalten, ist absolut falsch. Leider wird dieser Umstand normalerweise totgeschwiegen.

Die Beispiele offenbaren, dass das Vorzeichen "umgedreht" werden muss, indem man das ZweierKomplement der Zahl bildet.
Das, was mit ZweierKomplement gemeint ist, ist die ganz normale Darstellung INT (16 Bit) bzw. DINT (32 Bit) !!!

Gruss, Heinileini

PS:
Auch der zweite Satz des Dokuments "In diesem Format werden die Daten auf den Messbereich normiert und so dargestellt, dass sie ohne Umrechnung den entsprechenden Wert anzeigen. Ein Bit hat in diesem Format die Wertigkeit von 1 mV bzw. 1 μA." ist mit äusserster Vorsicht zu geniessen.
Die Darstellung in "Messbereich 4 mA bis 20 mA" zeigt nämlich, dass dies nicht immer zutrifft. Wie soll der ZahlenWert 16000 den 20 mA entsprechen, wenn 1 Einheit (1 Bit) 1 µA entspricht?
Da wurde doch wohl in der Beschreibung der "Messbereich 4 mA bis 20 mA" nachgestrickt, ohne den daraus resultierenden ÄnderungsBedarf im bereits existierenden Teil der Beschreibung zu berücksichtigen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Ok. Leider bin ich noch immer nicht schlauer. Sind meine Anzeigewerte denn jetzt so richtig, oder muss ich noch irgendwo etwas umdrehen? Und wenn drehen, dann wo und wie?
Bin irgendwie total verwirrt nach dem ganzen lesen und probieren.
Ach so. Die ganze Anlage ist in FUP Programmiert.

Beste Grüße
Hagen
 
"Umdrehen" musst Du nichts. Skalieren höchst wahrscheinlich aber dennoch. Die Gepflogenheiten bei Siemens und Phoenix, wie gross der gültige Bereich ist und wie Überlauf bzw. Unterlauf signalisiert wird, scheinen unterschiedlich zu sein.
Ist der AnalogEingang bereits auf 4...20 mA "spezialisiert" oder "konfiguriert"? Musst Du evtl. noch einen 500 Ohm Widerstand hinzufügen und mit dem AE die Spannung an diesem Widerstand messen?
Sorry, mit den Details bin ich ein wenig überfordert.
Ob FUP, KOP, SCL oder AWL, das hat keinen Einfluss. Das sind nur unterschiedliche Darstellungen oder ProgrammierSprachen.

Gruss, Heinileini

PS:
Ist die „Normierte Darstellung“ das einzige Format, das angeboten wird, oder kannst Du sie unter mehreren auswählen und hast Du sie tatsächlich ausgewählt?
Ist Dein Sensor vom Typ "4...20 mA", so dass er beim Messwert 0 nicht 0 mA, sondern 4 mA Strom an den AE liefert?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Derzeit ist es so, das mit bei einem wert von ca 4 mA ein Dezimalwert von ca 1461 in der SPS angezeigt wird. Bei ca. 20mA sind es ca 7000.
Ca 1461 ist ja immerhin "ca" ein Fünftel von ca 7000!
Das spricht eher dagegen, dass die beiden Bytes noch getauscht werden müssten.
 
Zweierkomplement-Darstellung ist nur relevant für Werte 16#8000...16#FFFF (bzw. Werte außerhalb des Bereichs 0 ... 32767 (16#0000 ... 16#7FFF).
Dein Phoenix-Analogeingang 4-20mA liefert überhaupt keine Werte im Zweierkomplement, sondern nur positive Werte 0...17339 (und die Fehler-Kennungen 16#8001 (-32767 dez) und 16#8002 (-32766 dez))
Doch selbst wenn der Analogeingang auch negative Werte im Zweierkomplement liefern würde - Zweierkomplement-Darstellung ist die "normale" INT-Darstellung, da muß nichts umgewandelt werden.

Wenn der Analogeingang wirklich bei 4-20 mA die Werte 0...16000 liefert, dann kannst Du den SCALE-Baustein eigentlich nicht verwenden (höchstens mit "krummem" HI_LIMIT), weil SCALE davon ausgeht, daß die Eingangswerte des Nennbereichs 0...100% im Bereich 0...27648 liegen. Außerdem kennt SCALE nicht die Fehler-Codes 16#8001 und 16#8002, die müssten vorher abgeprüft werden. Eine selbstgestrickte Skalierung (sprich: einfache-Dreisatz-Formel) ist aber schnell programmiert.

Fehler-Code Phoenix 16#8001 entspricht Siemens 16#8000 : Unterlauf/Drahtbruch
Fehler-Code Phoenix 16#8002 entspricht Siemens 16#7FFF : Überlauf

Wie wird denn überhaupt der Messbereich bei dem Analogeingang eingestellt? Vermutlich in HW-Konfig projektiert? Mir scheint der Messbereich ist gar nicht auf 4-20mA eingestellt, zumindest liefert er nicht die laut Phoenix-Handbuch angegebenen Werte - liefert der Analogeingang bei Anschluß an ET200S vielleicht Siemens-konforme Werte?

Deine "ET200S" - ist das eine IM151-8 PN/DP CPU (6ES7151-8AB01...)?
Wie heißt Dein I/O-Koppler genau? Wie heißt das Analogeingangsmodul/Klemme?
Hast Du mal Bilder von der HW-Konfig?

Harald
 
Also der Analogeingang wird in der Hardwarkonfig eingestellt und steht auch auf 4-20 mA.
Datenformate kann ich insgesamt 4 unterschiedliche einstellen.
Aber ich denke mal, das mein Problem darin liegt, das ich den Wert als WORD und nicht als INT einlesen.
Das kann ich aber auch leider erst morgen testen.
Werde euch dann über das Ergebnis informieren.

Schönen Feierabend
Hagen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@S7Anfänger: Am besten zu zeigst uns...
  • Screenshots deiner HW-Kofig inkl. dem Einstellfenster der Analogkarte
  • Screenshots deines Codes (oder Beobachtungstabelle) wie du den Wert ausliest (im Onlinezustand damit wir die Werte sehen)
Dann wäre es viel leichter eine Aussage zu treffen.
Die Formateinstellung muss auf "Normierte Darstellung" gestellt sein, also nicht "IB IL, IB ST, IB RT".
 
Ob Du den PEW300 als WORD oder als INT verwendest hat keinen Einfluß auf den Wert. Höchstens daß beim Programm beobachten der Wert einer WORD-Variable (bevorzugt?) hexadezimal angezeigt wird und der Wert einer INT-Variable dezimal.

Derzeit ist es so, das mit bei einem wert von ca 4 mA ein Dezimalwert von ca 1461 in der SPS angezeigt wird. Bei ca. 20mA sind es ca 7000.
Wo hast Du diese Werte gesehen? Bist Du sicher, daß die Anzeige dezimal war? Falls das hexadezimale Werte sind, dann würden die Werte grob zu einem 0-20mA-Eingang (oder 0-10V) mit S7-Auflösung 0..27648 passen.

Die HW Konfig im Projekt stimmt mit der HW Konfig online in der CPU überein?

Harald
 
Wo auch noch gerne Fehler gemacht werden: Anschluß von 0/4-20mA-Sensoren als "aktiv" (Siemens: 4DMU) oder "passiv" (Siemens: 2DMU). Welchen Sensor/Messumformer hast Du wie an der Klemme angeschlossen?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sooo. Weiter geht's.
Der Sensor ist eine Passive Messachse (2 Draht ). Diese ist an +24VDC Angeschlossen, der Ausgang geht auf Klemme 1.2 des Phoenix AI und die Klemme 1.3 des Phoenix AI geht dann wieder auf 0VDC. Ganz üblicher Anschluss also.
Im Anhang habe ich mal Bilder von einem Eingangssignal von 4 mA und 20 mA. zusätzlich mal die Komplette Anleitung des Phoenix AI.
So langsam stehe ich auf dem Schlauch und weis nicht weiter. Parallel zu der Forschung werde ich die AI Karte mal austauschen.

Beste Grüße
Hagen
 

Anhänge

  • PEW2000 bei 20mA.PNG
    PEW2000 bei 20mA.PNG
    5,2 KB · Aufrufe: 16
  • Phoenix Aufbau und AI Konfig.jpg
    Phoenix Aufbau und AI Konfig.jpg
    80,8 KB · Aufrufe: 18
  • PEW2000 bei 4mA.PNG
    PEW2000 bei 4mA.PNG
    5,3 KB · Aufrufe: 15
  • Phoenix AI 2861302.pdf
    Phoenix AI 2861302.pdf
    372 KB · Aufrufe: 5
Kurzer Zwischenbericht:

Nach Verwendung einer Neuen AI Karte habe ich jetzt folgende Werte 4mA = 6000 DEZ und 20mA = 30000 DEZ.
Diese Werte schließen auf das Datenformat "IB IL" mit Eingang 0-20mA.
Werde jetzt versuchen die Karte zu Konfigurieren und die Ausgebaute (Anscheinend defekt) werde ich gegen eine neue ersetzen.
 
Abschließende Meldung:
Habe jetzt die von Phoenix angegebenen Dezimalwerte. Anscheinend war die AI Karte defekt. Manchmal sind es nur die kleinen Dinge.

Vielen Dank an ALLE.

Beste Grüße
Hagen
 
Zurück
Oben