Mit TC3 eine Temperatureingangskarte 134-4JB50-0AB0 ET200S von Siemens einlesen

blackhack

Level-1
Beiträge
61
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe ziemlich lange herumgegrübelt, wie ich die Temperatur einer 134-4JB50-0AB0 ET200S 2-Kanal Temperatur Eingangs Karte auswerten kann.
Unter S7 wird der Wert der Karte aufgelöst und kann direkt eingelesen werden, dabei ist der Wert das hundertfache der Temperatur.
Wenn nun aber die Karte über eine EL6731 an Beckhoff angeschlossen wird ist der Wert nicht mehr in dieser Weise vorhanden.

Anbei die Hardware:
TempHW.JPG

Ein Wert von 11.6°C schaut dann so aus:
Temp1.JPG

Der Trick bei der Sache ist, die Temperatur wird in Kaskaden von jeweils maximal ff Hex angezeigt.
Beim Überlauf springt die Temperatur auf 0 und in die nächsthöhere Kaskade.
Bei Unterlauf auf ff der nächstniederen Kaskade.
Dabei sind die linken 8 bit die Temperatur und die rechten 8 bit die Kaskade in der die Temperatur gerade liegt.
Um nun die Temperatur umzurechnen braucht man folgendes Vorgehen:
Die Temperatur mit der Kaskadenzahl mal 255 addieren. Dieser Rohwert kann nun skaliert werden wie bei SIEMENS beschrieben.
Im Klimabereich parametriert ergeben -14500.0 bis 15500.0 dann die Temperatur -145.0°C bis 155.0 °C

Anbei der Code dazu mit Onlinewerten:
Temp2.JPG

Vielleicht konnte ich dem Einen oder Anderem helfen.
Gruß
Bernd
 
Also in deiner Rechnung machst du eigentlich nicht anderes als das High-Byte mit dem Low-Byte zu vertauschen. Das ist normal, weil Siemens Wörter im Big-Endian speichert, während die meisten anderen Steuerungen das Little Endian Format nutzen.

Wenn ich von deinem Rohwert aus der Peripherie die beiden Bytes vertausche, bekomme ich genau dein Ergebnis (-31484 - 1000 0101 0000 0100 wird zu 1157 - 0000 0100 1000 0101)
Ich gehe davon aus, dass das der Wert ist den du brauchst 1157 -> 11,57°C und du nichts weiter skalieren musst.

EDIT:

High und Low Byte kannst du einfach mit dem Rollen-Befehl (ROL bzw ROR ) tauschen, indem du das Word einfach um 8 Bit rollst.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
ich tausche nicht die Bytes sondern ich schiebe die um 8 bit raus damit ich einmal die Kaskade und das andere Mal die Temperatur bekomme.
Das Gleiche könnte ich auch mit ausmaskieren machen.
Wie gesagt der Wert läuft kaskadenweise hoch oder runter und somit passt dann das Ergebnis nicht wenn ich direkt umrechen.
 
Zuletzt bearbeitet:
Wie kommst du denn auf die Berechnung mit den Kaskaden? In der Dokumentation der Klemme steht doch drin, dass sie den Messwert direkt ausgibt. (Seite 24 und 26). Nur die Byte-Reihenfolge muss für Beckhoff gedreht werden.

Kleiner Tip. Im Reiter "Flags" der Online Anzeige des wertes (auf der Hardware Ebene) gibt es das Controllkästchen "Tausche LOBYTE und HIBYTE" aktiviere das mal und schau dir den Wert an. Er sollte dann der Temperatur des Sensors entsprechen.
 
Hallo,

in Deinem Code ist ein Fehler drin. Für TempRohwert2 mußt Du mit 256 multiplizieren, nicht 255. Dann kommst Du dort auf 1157. Wenn Du Dir das mal in Hex ansiehst hast Du x0485. Der Eingangswert -31.484 ist x8504, und das ist wie MasterOhh schon geschrieben hat nur Low und High Byte vertauscht. Das machst Du mit Deiner Rechnung auch, nur etwas komplizierter.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,
ich habe nun mal direkt in der Parametrierung der Klemme High und Low Byte tauschen angewählt. Und welch Wunder der Wert passt zur Temperatur. Schaut so aus als hätte ich da etwas zu kompliziert gedacht :D
Nun schaue ich mir das Ganze mal noch beim Nulldurchgang an wenn wir mal wieder Minusgrade haben.
Wenn das dann auch passt dann gebe ich mich geschlagen :ROFLMAO:

Danke erstmal für eure Kommentare
Gruß
Bernd
 
Zurück
Oben