Home Assistant S71200

rhaeu

Level-2
Beiträge
48
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich möchte meine Heizungssteuerung S7-1214 in mein Home Assistant einbinden.
Das funktioniert soweit auch.
Ich habe habe jedoch Probleme mit den Messwerten.
Messwerte als Int haben das Problem das man nur 1 Kommastelle parametrieren kann.
Messwerte als Real bringen totale Hausnummern.

Hat hier schon jemand Erfahrungen sammeln können ?
 
Hallo zusammen,
zum 1. : ja ich benötige 2 Kommastellen, weil ich Messwerte immer 3-stellig anzeigen möchte.
ich habe bei Real ja 4 Byte, den Befehl TAD muss ich mir mal anschauen.

zum 2. : ich habe die SPS über ha-s7plc angebunden.

Vielen Dank mal für die Infos
 
Es gibt den Swap Befehl, oder man kann es
mit dem Slice zugriff machen.

Da du aber extra ein HA Integration für die S7 verwendet, wundert mich etwas das da Sps seidig ein byte swap nötig sein sollte.
In der Doku der Integration wird dazu auch nichts erwähnt, beim schnellen drüber schauen.

Gibt es vielleicht einen Adressierungsfehler bei den Offsets ?
Ist die Sps Variabel auch ein Real?
 
Hallo Van,
ich denke ich habe es gefunden, man muss bei den Real Werten eine Mix und Max Grenze angeben, dann werden diese korrekt
angezeigt. Danke für Deine Hinweise
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was jedoch noch offen ist wie man bei ha-s7plc das mit 2 Kommastellen bei Int-Werten ändern kann. Denn ich denke
das hier auch SNAP7 verwendet wurde. Kann man dies im Quellcode in ha-s7plc anpassen ?
 
ha-s7plc verwendet jedenfalls pyS7, um mit der S7 zu kommunizieren.
Interessanter Ansatz, denn pyS7 ist ausschließlich Python und hat keine externen Abhängigkeiten wie z.B. snap7.

Messwerte als Real bringen totale Hausnummern.

Da Siemens für Real 16 Bit Float verwendet, ist der Fehler ziemlich groß.
Code:
>>> struct.unpack("!e", struct.pack("!e", 1.337))

(1.3369140625,)
>>> struct.unpack("!f", struct.pack("!f", 1.337))
(1.3370000123977661,)

Verwende doch einfach 32 Bit Float => LReal.
ggf. kann man die Werte in HA runden.
 
Ich kenne mich in dem Thema hier nicht wirklich aus, aber:

Siemens verwendet keine 16 Bit Real.

Real sind 4Byte = 32 Bit
LReal sind 8Byte = 64 Bit
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen dank für die vielen Antworten.
wenn man z.B. bei einer Temperatur den Min Wert auf 0 und den Max Wert auf 100 setzt stimmt der Wert mit dem Wert der SPS
überein.

Habt Ihr auch eine Lösung wie man einen Integer wert mit 0.01 Multiplizieren kann, diese Auswahl ist nicht möglich
nur Max 0.1
 
Vielen dank für die vielen Antworten.
wenn man z.B. bei einer Temperatur den Min Wert auf 0 und den Max Wert auf 100 setzt stimmt der Wert mit dem Wert der SPS
überein.

Habt Ihr auch eine Lösung wie man einen Integer wert mit 0.01 Multiplizieren kann, diese Auswahl ist nicht möglich
nur Max 0.1
Vorne weg: Ich kenn die S7-Integration nicht.
Um was zu skalieren, gibt es bei Home Assistant normal mehrere Möglichkeiten.
Eine recht mächtige Möglichkeit ist der Template-Sensor. Den findest du unter Helfer.
Eine andere Möglichkeit ist Value-Template bei deinem S7-Sensor zu verwenden.
Du kannst natürlich auch eine Automation anlegen.

Bei Home Assistant ist Google Gemini eine wurklich gute Unterstützung. Da ist die KI wirklich erstaunlich gut.
Ich wundere mich da oft, wie gut die Vorschläge sind.
 
Habt Ihr auch eine Lösung wie man einen Integer wert mit 0.01 Multiplizieren kann, diese Auswahl ist nicht möglich
nur Max 0.1
Erst das ganze mit 100 multiplizieren also ohne kommastellen arbeiten und dann am ende wieder teilen durch 100.
Aber pass auf! Falle!
Wandle um nach DINT so das deine Berechnung eventuell nicht in Überlauf geht.
Und dann zurück in INT
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank ihr Beide für die Infos,
muss mich mal mit den Template Sensoren etwas intensiver beschäftigen ich bin neu im Bereich HA. Kenne mich
da noch nicht sonderlich gut aus. Aber der Hinweis ist schon mal sehr gut.

Mit dem multiplizieren und teilen mache ich, aber das teilen geht in HA bei der S7 nur bei der Variablen mit einer multiplkation
und die geht nur bis max 0.1 ausser man kann das in HA auch noch ändern.
 
Vielen Dank ihr Beide für die Infos,
muss mich mal mit den Template Sensoren etwas intensiver beschäftigen ich bin neu im Bereich HA. Kenne mich
da noch nicht sonderlich gut aus. Aber der Hinweis ist schon mal sehr gut.

Mit dem multiplizieren und teilen mache ich, aber das teilen geht in HA bei der S7 nur bei der Variablen mit einer multiplkation
und die geht nur bis max 0.1 ausser man kann das in HA auch noch ändern.
Man muss schon sagen, dass Home Assistant in manchen Bereichen etwas "seltsam" ist.
Die Template-Funktionen sind extrem mächtig. Erstellt werden sie Jinja2.
Auf der einen Seite extrem mächtig, aber auch nicht gerade einsteigerfreundlich.
 
Laut Doku gibt es zwei Möglichkeiten Zahlen anzuzeigen.

Number Entity: https://github.com/xtimmy86x/ha-s7plc/blob/main/docs/examples.md#adding-a-number-entity
Der Rohwert wird normalisiert und dann auf Min/Max skaliert. Die Schrittweite legt fest, wie fein die Zahl aufgelöst wird. Bei 0.5 kann dann z.B. der Wert 1, 1.0 und 1.5 sein, aber nicht 1.1.

Sensor: https://github.com/xtimmy86x/ha-s7plc/blob/main/docs/examples.md#adding-a-sensor
Der Wert liegt bereits skaliert als Real vor. REAL Precision gibt die Stellen hinter dem Komma an.

Ich würde die Rohwerte in der SPS normalisieren und auf eine Einheit skalieren. Das hat auch den Vorteil, dass HA von Min/Max nichts wissen muss.
 
Zurück
Oben