Temperatur einlesen

chipset

Level-1
Beiträge
88
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo leute,
ich hab grade irgendwie nen hänger. ich will eine temperatur einlesen. ist nur ne simulation, da es sich um eine demonstration handelt. ich benutze simatic manager und visu(mhj). ich hab bei mhj ganz normal pew 30-12bit-messbereich pt 100 eingestellt.
im hw von simatic habe ich 6es7331-7kf00-0ab0 baugruppe.
auch auf pt 100 eingestellt. so ich lade ganz normal das pew und im positiven temperatur bereich funktioniert auch alles, aber sobald ich in den negativen bereich gehe, zb -5 grad, krieg ich 64000 digits, als anzeige. kann mir mal bitte jemand helfen steh grade voll aufm schlauch....
danke
 
das höchste bit stellt das vorzeichen dar.
daher ist es wichtig bei den variablentypen
den korrekten typ für die anzeige zu wählen:

sign => mit vorzeichen, also auch negativ

unsign => ohne vorzeichen, nur positiv

bei dir dürfte unsign gewählt sein, dann wird eine
negative zahl (byte, word, doppelwort) als
hohe zahl dargestellt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
sign => mit vorzeichen, also auch negativ

unsign => ohne vorzeichen, nur positiv

hey ganz ehrlich, auch wenns sich voll dumm anhört....sowas hab ich noch nie eingestellt...wo???? normalerweise konfiguriere ich meine hw, dann lese ich meine bit, bytes (temp - pt100)- ein und fertig.

ich hab zum bleistift kühlraumtemperaturen eingelesen :

L PEW 4 (zb)
t # (in den zwischenspeicher)
l # (vom zwischenspeicher)
//ausgleich
+17

*r, - 10, usw......

usw...okay stimmt von den einheiten nicht ganz....aber hä????
 
Das stellst du da ein, wo du die Sache anzeigen willst ...

-5 Grad, sind bei Standardbereich -50, d.h. unsigned dann 65486.

Das ist also nur eine Frage wie das Anzeigemedium die 16Bit interpretiert.

Mfg
Manuel
 
also ok , in fup kann man den minusbereich darstellen und in awl nicht.
wenn ich mir die ladeoption vom dem eingangswort in fup anschaue geht es, in awl
zeigt er dann halt das minus nicht an....bzw. die 65000
ok danke
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
d.h. ich seh die korrekte temparatur erst im op, beim einlesen im simatic wird sie dann immer falsch ang

ezeigt oder?

Genau so.
Da du ein Wort einliest. Wortzugriffe haben keine Vorzeichen.

du kannst es aber in Integer wandeln, Integer haben wiederum Vorzeichen. Das wird dir dann auch im AWL wieder richtig angezeigt.

Allerdings ignoriert die Anzeige in AWL den Datentyp wenn du
Code:
L EW 
T #INT
verwendest.

Wenn du das allerdings in einem SCL FC machst und der Ausgang des FCs als INT deklariert ist stimmt die Anzeige im AWL wieder (In SCL musst du auch wandeln sonst übersetzt er nicht in AWL musst du nicht wandeln der Inhalt stimmt trotzdem) ^^

Code:
VAR_IN_OUT
EING : WORD ;
AUSG_INT : INT ; 
END_VAR

BEGIN
AUSG_INT:= WORD_TO_INT(EING);
END_FUNCTION
Beide Varianten haben keinen Einfluss auf den effektiven Inhalt des Speichers.

Siemens halt ;)
 
Zuletzt bearbeitet:
Ich sehe das nicht als Siemens-Problem sondern eher als ein Problem mangelnden Grundwissens.

Beim Beobachten eines AWL-Programms wird der Inhalt des gesamten Akku1 datentypunabhängig angezeigt. Der Akku hat 32 Bit. Wenn man einen 16-Bit-Wert lädt, dann wird er nur in die unteren 16 Bit des Akku geladen und die oberen 16 Bit werden immer auf 0 gesetzt (in der Step7-Hilfe nachzulesen). Wenn man beim AWL-Beobachten negative 16-Bit-INT-Werte als negativ angezeigt haben will, dann muß man den Wert mit ITD korrekt auf die Größe des Akku erweitern. Negativ werden Werte nur angezeigt, wenn das höchste Akku-Bit 31 auf 1 gesetzt ist. Die Anzeige ist so also völlig korrekt.

Das Ganze ist doch nur ein Darstellungsproblem. Beobachtet man 16-Bit-Werte in einer VAT als Dezimal, dann sieht man auch die negativen Werte so wie erwartest. In FUP ist die Beobachten-Anzeige deshalb richtig, weil die FUP-Operation (anders als in AWL) weiß, mit welchem Datentyp sie arbeitet.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Ganze ist doch nur ein Darstellungsproblem. Beobachtet man 16-Bit-Werte in einer VAT als Dezimal, dann sieht man auch die negativen Werte so wie erwartest. In FUP ist die Beobachten-Anzeige deshalb richtig, weil die FUP-Operation (anders als in AWL) weiß, mit welchem Datentyp sie arbeitet.

Naja trotzdem müsste auch in AWL bekannt sein welcher Datentyp verlangt ist wenn man den inhalt von Akku1 in einen als INT deklarierten Speicherbereich kopiert (schnittstelle oder DB).

Ich meine klar ist nur ein Anzeigeverhalten, ich hätte auch kein Problem wenn man sagen könnte, da wird einfach nur der Akku angezeigt. Aber manchmal wird auch interpretiert, nur nicht immer.
 
Zurück
Oben