# Heizungsdaten auslesen



## NeuerSIMATICNutzer (16 Dezember 2010)

Hallo zusammen,

habe hier eine VIPA 314DPSTM und ein Panel PC auf dem FLEX2008 läuft.
Möchte nun Daten aus einer Heizung auslesen und in FLEX darstellen,
Momentan kann ich die Daten über eine serielle Schnittstelle per Terminal Programm auslesen. Gibt es ne Möglichkeit diese Daten in FLEX einzubinden?

Grüße NSN


----------



## PN/DP (17 Dezember 2010)

NeuerSIMATICNutzer schrieb:


> Momentan kann ich die Daten über eine serielle Schnittstelle per Terminal Programm auslesen. Gibt es ne Möglichkeit diese Daten in FLEX einzubinden?


Kommt drauf an, was Du unter "in FLEX einbinden" verstehst.
Nur die Daten anzeigen? Nichts leichter als das:
Die SPS liest die Daten mit einem seriellen CP (gehen CP340/341 an VIPA???) und legt sie auf Datenspeicher-Adressen ab (DB oder Merker).
In WinCCflex einfach Variablen auf diese Datenspeicher-Adressen anlegen und schon können die Daten angezeigt werden.

Harald


----------



## NeuerSIMATICNutzer (17 Dezember 2010)

Eigentlich wollte ich nur ein paar Daten anzeigen lassen. Ist das wirklich so einfach mit einer CP möglich? Die CP´s sollten an der VIPA laufen, die haben aber auch eigene serielle Kommunikationsprozessoren,

Reicht das die einfache CP340?
Die liegt doch irgendwo bei 360€, oder?


----------



## Sockenralf (17 Dezember 2010)

Hallo,

was "spricht" denn eigentlich die Heizung?


MfG


----------



## NeuerSIMATICNutzer (17 Dezember 2010)

Hallo

Alle 500ms kommt diese Zahlenreihe

pm 10 18.3 64 74 16.1 15.7 31.4 140.0 30.0 0.0 59 140 0 40 100.0 100.0 0 0.0 0.0 0.0 0 11.3 0 75 71 140 140 140.0 140.0 0.0 0.0 100.0 0 0.0 0.0 0.0 0 11.3 0 75 71 140 140 140.0 140.0 0.0 0.0 100.0 100

Die Zuordnung der Werte habe ich auch.

Das wäre folgende:
Element  Format  Bezeichnung  Einheit
1  Int  Primärluftgebläse  % 0 bis 100
2  Int  Saugzuggebläse  % 0 bis 100
3  Float  O2 im Rauchgas  % 0 bis 21
4  Int  Kesseltemperatur  °C
5  Int  Rauchgastemperatur  °C
6  Float  Außentemperatur aktuell  °C
7  Float  Außentemperatur gemittelt  °C
8  Int  Vorlauftemperatur Heizkreis 1  °C
9  Int  Vorlauftemperatur Heizkreis 2  °C
10  Int  Vorlauftemperatur Heizkreis 1 Soll  °C
11  Int  Vorlauftemperatur Heizkreis 2 Soll  °C
12  Int  Rücklauf _ Boiler 2 _ Puffertemperatur  °C
13  Int  Boilertemperatur 1  °C
14  Int  Fördermenge  % 0 bis 100
15  Int  Kesselsolltemperatur  °C
16  Float  Unterdruck aktuell  mbav
17  Float  Unterdruck gemittelt  mbav
18  Float  Unterdruck soll  mbav
19  Int  Vorlauftemperatur Heizkreis 3  °C
20  Int  Vorlauftemperatur Heizkreis 4  °C
21  Int  Vorlauftemperatur Heizkreis 3 Soll  °C
22  Int  Vorlauftemperatur Heizkreis 4 Soll  °C
23  Int  Boilertemperatur 2 SM  °C
24  Int  HK1 FR25 *10  °C
25  Int  HK2 FR25 *10  °C
26  Int  HK3 FR25 SM *10  °C
27  Int  HK4 FR25 SM *10  °C
28  Int  Kesselzustand
29  Float  Strom Motor Einschubschnecke  A
30  Float  Strom Motor Aschenaustragung  A
31  Float  Strom Motor Raumaustragung  A
32  Hex  Digitalwerk 1
33  Hex  Digitalwerk 2
34  Hex  Digitalwerk 3
35  Hex  Digitalwerk 4
36  Hex  Digitalwerk 5
37  Hex  Digitalwerk 6
38  Hex  Digitalwerk 7
39  Hex  Digitalwerk 8

Brauche aber nicht alle Werte.
Würde ein paar einzelne haben wollen.


Grüße NSN


----------



## NeuerSIMATICNutzer (20 Dezember 2010)

Kann ich überhaupt so eine Datenmenge mit der CP340 einlesen?

Und welcher technische Unterschied besteht zwischen der CP340 und der CP341? Konnte bisher keinen feststellen?

NSN


----------



## argv_user (20 Dezember 2010)

NeuerSIMATICNutzer schrieb:


> Kann ich überhaupt so eine Datenmenge mit der CP340 einlesen?
> 
> Und welcher technische Unterschied besteht zwischen der CP340 und der CP341? Konnte bisher keinen feststellen?
> 
> NSN



Die Datenmenge ist ja noch im Rahmen, das kann 340 schon bewältigen.
341 kann mehr höhere Protokolle (zb RK512), aber die brauchst Du ja nicht.


----------



## Larry Laffer (20 Dezember 2010)

NeuerSIMATICNutzer schrieb:


> Brauche aber nicht alle Werte.
> Würde ein paar einzelne haben wollen.


 
Hallo,
so wie ich das sehe hast du nur die Chance alle Werte zumindestens erstmal einzulesen. So wie das aussieht handelt es sich bei den Sendedaten um eine ASCII-Zeichenkette. Die Daten kommen also als Zeichen und nicht im angegebenen Format, sie sind nur wie angegeben zu interpretieren - das sollte aber nicht das Problem sein ...
Du mußt jetzt halt "nur" die gewünschten Bestandteile herausschneiden und wandeln - schon kannst du die in der Visu anzeigen 

Gruß
Larry


----------



## NeuerSIMATICNutzer (10 Januar 2011)

Hallo,

wieder ne Weile vergangen. Hab mir jetzt net CP340 besorgt un diese an eine VIPA312C angeschlossen. CP mit der Heizung verbunden und die SF Lampe ging auch gleich aus und die Lämpchen fingen an zu blinken. 
ASCII Protokoll in den Paramater der CP eingestellt und mit dem FB P_RCV parametriert. Leider bekomme ich in meinen DB den ich mit einem String[200] angelegt habe keine Daten, nur die ersten zwei Bytes zeigen ir CA an.
In der CP Diagnose bekomme ich immer Zeichenrahmenfehler.
Woran könnte das liegen??


----------



## HaDi (10 Januar 2011)

Zeichenrahmenfehler heißt, dass entweder die
-Anzahl Datenbits
und/oder die
-Anzahl Stopbits
und/oder
-Parität
deines CPs nicht mit der Gegenseite übereinstimmen.
Kennst du die Einstellungen auf Heizungsseite?

Grüße von HaDi


----------



## NeuerSIMATICNutzer (11 Januar 2011)

Habe keinerlei Daten bezüglich der Heizungsschnittstelle.
Beim Hyperterminal gings aber mit den Standardeinstellungen ohne Probleme.
Diese habe ich auch bei der CP eingestellt. Ich muß doch das Protokoll auf ASCII stellen, oder?


----------



## gravieren (11 Januar 2011)

Hi

Lies diese Parameter  doch mal aus und trage diese im CP ein.

Baudrate, parity . . .



Gruß Karl


----------



## NeuerSIMATICNutzer (11 Januar 2011)

Ich habe doch die Paramter vom Hyperterminal 1:1 in die CP übernommen.
Nur mit der Flussteuerung weiß ich nix anzufangen.


----------



## NeuerSIMATICNutzer (11 Januar 2011)

Jetzt habe ich doch was entdeckt. Vor lauter Wald dieBäume net gesehen. Die Baudrate ist auf 19200 eingestellt und bei der CP kann ich ja bei ASCII Protokoll nur bis 9600 einstellen. Beim Hyperterminal kommen bei 9600 lauter undefinierbare Zeichen. Glaube das wars, die CP wird net können, oder?


----------



## gravieren (11 Januar 2011)

Hi


Gib doch mal deine Siemensnummer des CPs an.

ASCII-Modus max 9600  ?
Normalerweise sollte er mehr können.  Oder ?


----------



## NeuerSIMATICNutzer (11 Januar 2011)

Die Siemens Nummer 6ES7 340-1AH01-0AE0.
ASCII geht bist 9600 
3964 bist 19200.
Vielleicht gibt es ja eine neue FW?


----------



## gravieren (11 Januar 2011)

Hi


Schau doch mal hier, ob du da was findest.

https://support.automation.siemens....tandard&viewreg=WW&objid=24283637&treeLang=de



Grundsätzlich gibt es Firmwarehochrüstungen für den CP.


Gruß Karl


----------



## gravieren (11 Januar 2011)

Hi

Firmwareupdate scheint nur für den 6ES7 340-1.H02-0AE0 zu funktionieren.



Lade dir doch mal eine neuere Projetierungs-Software für den CP hoch.

Du solltest jedoch mindestens Step7 V5.3 haben.


https://support.automation.siemens....tandard&viewreg=WW&objid=24283637&treeLang=de




Gruß Karl


----------



## NeuerSIMATICNutzer (11 Januar 2011)

Habe ich schon gesehen, leider nur für die 1AH02 und so wie saussieht wurde an der Baudrate nichts gändert. Wahrscheinlich soll man die teurere CP341 einsetzen.....


----------



## NeuerSIMATICNutzer (11 Januar 2011)

Diese habe ich bereits installiert. Das blöde ist nur das die Baudrate bei 3964 auf die 19200 geht und bei ASCII nicht


----------



## gravieren (11 Januar 2011)

Hi

Es gibt CPs die bis 115000 Baud gehen.


Deiner scheint nich dazu zu gehören.  Leider.


Ich bin NICHT der CP-Spezialist.


Kannst du die Baudrate deiner Heizung runtersetzen  ?


Gruß Karl


----------



## NeuerSIMATICNutzer (12 Januar 2011)

Die Heizung lässt keine Änderung der Baudrate zu. (lt.Hersteller)
Jetzt überlege ich mir einen Baudraten Konverter zuzulegen der die Baudrate drosselt. Bevor ich mir eine CP341 zulege eine Alternative, oder?

Gruß NSN


----------



## online (12 Januar 2011)

Welcher Typ ist deine Heizung eigentlich, und was für eine Steuerung sitzt da drin?

Ich habe eine von MHG, da sitzt eine Siemens Steuerung drin, wo ich aber nicht weiß, ob die mit einer S7 kommunizieren kann. Hatte mal bei Siemens angefragt, aber leider keine Antwort erhalten. Vielleicht weiß hier jemand etwas dazu?

Füge mal noch ein Bild der Steuerung bei.


----------



## NeuerSIMATICNutzer (13 Januar 2011)

Heizung ist eine Pelletsheizung der Firma Hargassner. Keine Ahnung wer die Steuerung für die baut. Habe mir nun eine CP341 besorgt und werde mal mein Glück versuchen. 

Gruß NSN


----------



## NeuerSIMATICNutzer (17 Januar 2011)

Habe jetzt eine CP341. Bekomme das Teil aber ach nicht zum laufen.
Wenn ich in der Hardware Online reinschaue sieht es so aus als wäre die cp leicht grau hinterlegt. Was bedeutet das?

An den Baugruppen selber sieht an nichts. Keine SF Leuchte oder sonstiges und die Lämpchen blinken auch schön als wäre alles okay.


----------



## gravieren (17 Januar 2011)

Hi


Hast du die Baugruppe mit dem Hardware-Manager integriert  ?

Deine Baugruppenbezeichnung und Nummer stimmen mit der Projektierung überein  ?




Gruß Karl


----------



## NeuerSIMATICNutzer (17 Januar 2011)

Habe alles in der Hardeware integriert und auch dir richtigen Baugruppen verwendet. Irgendetwas scheint auch anzukommen, kann es aber noch nicht entschlüsseln.


----------



## gravieren (17 Januar 2011)

Hi


Baudraten, Start, Stopbits, Datenbits . . .   stimmen aber schon  ?



Gruß Karl


----------



## NeuerSIMATICNutzer (18 Januar 2011)

Ja, das stimmte alles. Habe da nix verändert. 
Muß ich bei der CP341 eigentlich andere FB Bausteine wie bei der CP340 verwenden, Habe was von dem FB P_RCV_RK  in der Hilfe gelesen wobei mich das RK irritiert bei ASCII.


----------



## NeuerSIMATICNutzer (20 Januar 2011)

Habe die CP nun soweit das ich die Daten ín einem DB als String vorliegen habe. Wie bekomme ich daraus nur meine Werte für die VISU. Mit dem FC38 bekomme ich net hin. Ist der String dafür zu lang?


----------



## HaDi (20 Januar 2011)

Und der string hat den Inhalt wie im Post #5 ?
Was soll denn dabei herauskommen, diesen string nach INT zuwandeln?
Musst du überhaupt wandeln?
Wenn du die Werte nur auf der Visu anzeigen willst dann leg doch für die Anzeige der gewünschten Werte je einen string an und kopier die entsprechenden Stellen aus dem Empfangs-DB um.

Grüße von HaDi


----------



## NeuerSIMATICNutzer (20 Januar 2011)

Hallo Hadi,
warum umständlich wenn es auch einfach geht. Natülich kann ich mir
die einzelnen Werte als DW in der VISU anlegen und anzeigen lassen.
Es ist genau der String wie  Post5 ja. Manchmal verschiebt sich nur die ganzen Zahlreihe um eine Stelle.


----------



## HaDi (20 Januar 2011)

NeuerSIMATICNutzer schrieb:


> ... warum umständlich wenn es auch einfach geht.


Tut es das?
Zeig!

Grüße von HaDi


----------



## NeuerSIMATICNutzer (20 Januar 2011)

Was soll ich dir zeigen?
Ein EA Feld in WINCC die mir einen Teils des Strings als Wert anzeigt?
Kann halt in WINCC Flex einen String nur als Zeichenkette im ÈA Feld anzeigen lassen...........


----------



## HaDi (20 Januar 2011)

NeuerSIMATICNutzer schrieb:


> Was soll ich dir zeigen?


Auf meine Anregung


> Wenn du die Werte nur auf der Visu anzeigen willst dann leg doch für die  Anzeige der gewünschten Werte je einen string an und kopier die  entsprechenden Stellen aus dem Empfangs-DB um.


hast du geantwortet


> warum umständlich wenn es auch einfach geht. Natülich kann ich mir
> die einzelnen Werte als DW in der VISU anlegen und anzeigen lassen.


Ich verstehe das so, dass du das von mir Vorgeschlagene umständlich findest und du der Meinung bist, dass es einfacher geht.
Und genau diese einfachere Lösung möchte ich gerne sehen, ich bin nämlich trotz meines fortgeschrittenen Alters noch lernwillig und (in Grenzen) -fähig.

Grüße von HaDi


----------



## NeuerSIMATICNutzer (20 Januar 2011)

Ich glaube wir haben voll an aneinder vorbei geredet. 
Ich meinte  das ich vor lauter Wald die Bäume nicht sehe
und direkt im WINCC Flex eine Variable als String anlegen kann.
Sorry wenn es falsch rüber kam. 
Jetzt muß ich nur noch die Werte einzeln anzeigen können, dann bin ich glücklich 

Gruß NSN


----------



## Zefix (21 Januar 2011)

Dann zerleg halt den langen String im HMI, Bau dir ein Script, leg dir Interne HMI Variablen an und teil den langen String in die kleinen Strings auf.
Mit den kleinen Strings machst deine EA Felder.

Aber wenn, wie du schon schreibst, sich deine Zeichen verschieben können ists in der SPS fast schöner zu lösen.
Ist doch wurscht ob die Paar zeichen jetzt doppelt in der Steuerung sind.


----------



## HaDi (21 Januar 2011)

Schade, dass der empfangene String nicht immer die selbe Länge hat, dann wäre es ja recht einfach.
Du musst also zunächst mal herausfinden, warum die Länge unterschiedlich ist. Ich vermute es liegt daran, dass es Zahlenwerte gibt, die auch mal eine Dezimalstelle mehr oder weniger haben (z.B. alt:9.9, neu:10.0).
Wenn das der Fall ist, dann hast du aber immerhin ein eindeutiges Trennzeichen zwischen den einzelnen Werten, nämlich ein Leerzeichen (20hex bzw. 32dez).
Du könntest also  -das wäre mein Vorschlag- den String von vorne nach Leerzeichen durchsuchen und da du weißt, dass die gewünschten Werte z.B. nach dem 3., 5. und 8. Leerzeichen folgen, diese dann umkopieren.
Für die Anzeige jedes einzelnen Wertes würd ich einen eigenen String anlegen, in die du die gefundenen Werte jeweils reinkopierst.

Grüße von HaDi


----------



## NeuerSIMATICNutzer (24 Januar 2011)

Also ich komme mit dem durchsuchen des Strings absolut nicht klar.
mit dem find baustein habe ich nun versucht nach leerzeichen zu suchen bekomme aber am ret_val keinen wert angezeigt. da steht immer ne 0 drin.
Was komisch vorkommt das beim P_RCV_RK am NDR kein Signal kommt und am LEN auch nichts ansteht. Woran kann das liegen?


----------



## HaDi (25 Januar 2011)

NeuerSIMATICNutzer schrieb:


> Also ich komme mit dem durchsuchen des Strings absolut nicht klar.
> mit dem find baustein habe ich nun versucht nach leerzeichen zu suchen bekomme aber am ret_val keinen wert angezeigt. da steht immer ne 0 drin.


Was ist das für ein find-Baustein?
Über ret_val wird üblicherweise ein Fehler gemeldet, von daher ist ret_val=0 schon mal gut.


NeuerSIMATICNutzer schrieb:


> Was komisch vorkommt das beim P_RCV_RK am NDR kein Signal kommt und am LEN auch nichts ansteht. Woran kann das liegen?


Der ndr steht nur 1 Zyklus an, bei len bin ich mir nicht sicher.
Leg doch den ndr mal auf einen Zähler.

Grüße von HaDi


----------



## NeuerSIMATICNutzer (25 Januar 2011)

Hallo HaDi,

der FIND Baustein ist der FC11 aus der IEC Bibliothek. Laut Hilfe müsste doch am RET_VAL die Position der gefundenen Zeichekette angezeigt werden oder habe ich einen falschen Baustein.

Am NDR kommt defenitiv kein Signal,habe diesen an einem Setzglied verbunden, dieser hat aber immer 0 Signal


----------



## Kai (25 Januar 2011)

Ist Dein STRING mit den Heizungsdaten richtig initialisiert worden?

Sind die Werte für die maximale Länge des STRING und die aktuelle Länge des STRING in den Header des STRING eingetragen worden?



> *Datenformat STRING*
> 
> Byte 0 = DEZ = maximale Länge STRING
> 
> ...


 
Gruß Kai


----------



## NeuerSIMATICNutzer (25 Januar 2011)

Hallo Kai,

wie soll ich den String initialisieren. Die Heizung sendet mir alle 500ms
einen 200 Zeichen langen String. Die Werte kommen auch soweit an, NDR schent wohl doch zu funktoneren, habs dann doch mal mit nem Zähler probiert wie HADI vorgschlagen hat. 

Gruß NSN


----------



## HaDi (26 Januar 2011)

NeuerSIMATICNutzer schrieb:


> der FIND Baustein ist der FC11 aus der IEC Bibliothek. Laut Hilfe müsste doch am RET_VAL die Position der gefundenen Zeichekette angezeigt werden oder habe ich einen falschen Baustein.


Das ist soweit richtig, aber ,so wie ich die Hilfe zum FC11 verstehe, kann er nur das erste Auftreten des Suchstrings finden, ist also für deine Aufgabenstellung nicht wirklich geeignet.
Versuchs doch mal mit einer Schleife, in der du ein Byte nach dem anderen vergleichst und so die Leerzeichen findest.
Wenn du nun einen Wert suchst, der zwischen dem 5. und dem 6. Leerzeichen steht, merkst du dir die Stelle des 5. und des 6. Leerzeichens. Über die Differenz kannst du so herausbekommen, wie viele Stellen dein Wert hat, damit kannst du ihn gleich rechtsbündig in den Zielstring umkopieren, den Zielstring würd ich vorher mit Leerzeichen füllen.

Grüße von HaDi

[edit]
Im genannten Beispiel ist es, denke ich, noch einfacher, das 6. Leerzeichen zu suchen und dann rückwärts bis zum 5. zu kopieren.
[/edit]


----------



## NeuerSIMATICNutzer (29 Januar 2011)

Ich komme absolut nicht mit dem ausschneiden zurecht. Die Bytes auf ein Leerzeichen (DEZ 32)bekomme ich ja noch hin. Aber wie kann ich gezielt den String an der richtigen Position umkopieren. Steh da echt auf de Schlauch

Gruß NSN


----------



## HaDi (30 Januar 2011)

Willst du mal zeigen, was du bisher hast?

Grüße von HaDi


----------



## NeuerSIMATICNutzer (31 Januar 2011)

Ich habe eigentlich nur jedes der 202 Byte auf 32 verglichen und je einen Merker gebildet. Mit diesem wollte ich nun einen Sprung ausführen der mir den jeweiligen benotigten Teil zwischen den Leerzeichen in ein Datenwort kopiert. Nur weiß ich net wie ich weiter kommen soll da sich der String immer mal wieder verschiebt...


----------

