# Lon zu Profibus über Gateway Hermos/Brooks...Trane auslesen



## Leidi (20 Mai 2009)

Hallo zusammen, 

ich habe eine S7-315 2DP mit über ein Gateway von Brooks Automation mit einer Kältemaschine von Trane gekoppelt. Möchte das LON-Protokoll von Trane über die SPS auslesen. Habe einen Funktionsbaustein von Hermos...

Ich schaffe es nicht Informationen über das Gateway auszulesen...
Hat jemand Erfahrung mit der Auslesung von Trane-Kältemaschinen mittels der ober beschriebenen Hard-/software? 

Gruß
Leidi


----------



## uncle_tom (20 Mai 2009)

Servus,

wo liegt den genau das Problem ?

Ist denn die LON-Seite richtig konfiguriert ?
- Subnet/Node Adressen im Gateway und bei Trane richtig eingestellt

Kannst du die Trane Kältemaschien z.B. via LON-Tools (LON-Maker, Node-Util, etc.) ansprechen ?

Wie sieht denn die Trane LON-Schnittstelle aus ?
- SNVT Übersicht

Du kannst das Gateway auch unabhängig vom Funktionsbaustein rein über Befehls-/Steuerwort z.B. via Variablentabelle ansprechen bzw. einen Auftrag absetzen.

Der Baustein von Hermos ist ne Hilfe um mehrere Aufträge über das Gateway abzuarbeiten via Auftragsliste - wenn du z.B. nur einen Auftrag benötigst, dann kannst du das auch ohne Baustein realisieren.

Gib mal bitte ein bißchen mehr Info, wo´s wirklich klemmt.

Ich kenne das Gateway und auch den Baustein.

Mfg
uncle_tom


----------



## Leidi (21 Mai 2009)

Hallo und herzlichen Dank für die Antwort.

Ich habe den ComDpLon-Baustein von Hermos auf meine Bedürfnisse umgeschrieben. Die Peripherieadresse in der HWKonfig und die Aufträge im DB des Hermos-Bausteins angepasst. Meine LON-Einstellungen sind 
	

	
	
		
		

		
			












Die SNVTs von Trane sind als Beispiel:
	

	
	
		
		

		
		
	


	

















Der Index soll der NVNr entsprechen. Die NVNr sowie die SNVTs habe ich im Auftrag im HEX-Format hinterlegt. 
Den Auftrag im DB habe bspw. so angelegt: 







Der Status des Gateways ist zumeist W#16#0000 und wenn die Zeit abgelaufen ist, erscheint ganz kurz W#16#F005. Dieser Status entspricht laut Hermos - Beschreibung einem TimeOut Fehler. 

Softwaremäßig habe so ziemlich alles ausprobiert. Vielleicht muss ich irgendwas auf der hardwareseite beachten.
Wenn du, uncle_tom einen tipp für mich hättest, dann immer her damit ;-) 

Herzlichen Dank schon einmal im Voraus
Leidi


----------



## Leidi (22 Mai 2009)

Moin, 



> Der Baustein von Hermos ist ne Hilfe um mehrere Aufträge über das Gateway abzuarbeiten via Auftragsliste - wenn du z.B. nur einen Auftrag benötigst, dann kannst du das auch ohne Baustein realisieren.



vielleicht hilft erst einmal die Abarbeitung über einen Auftrag. Wie stelle ich das denn an??? Hast du ein Beispiel für mich???
Ansonsten wäre natürlich die Realisierung der Hermos-Auftragsliste die Ideallösung!!! 

Lieben Gruß


----------



## uncle_tom (22 Mai 2009)

Wenn du den Kommunikations-FB aus deinem Programm rausnimmst, dann kannst du über den Ein-/Ausgangs Datenbereich (InData/OutData) mit dem Gateway plaudern.

Am besten legst du dir mal eine Variablentabelle an, in der du die einzelnen Bytes des Ausgangsdatenbereichs anlegst. Im Handbuch des Gateways steht die Belegung der einzelnen Bytes drin - auswendig weiss ich das jetzt nicht. Im Prinzip sind es die Informationen, die du auch bei den einzelnen Aufträgen in der Auftragsliste definiert hast. (Schreiben/Lesen, NV-Nr, Subnet, Node, etc.) Bei einer erkannten Flanke der Auftragsart (0=kein Auftrag, 1=Lesen, 2=schreiben) wird der Auftrag vom Gateway abgearbeitet. Im Eingangsdatenbereich (DataIn) liefert das Gateway dann die zum Auftrag passende Antwort (Nutzdaten) oder eine entsprechende Fehlerinformation (laut Gatewaybeschreibung).

Hast du ein relativ neues Gateway ?

Die Firmware wurde vor kurzem mal überarbeitet. Mit der neuen Firmware sind  jetzt NV-Nr. bis 4096 möglich. Dazu wurde im Auftrag die Adressierung der NV-Nr von einem Byte auf ein Wort abgeändert. Dein Auftrags-DB ist noch für die alte Version (BYTE) ausgelegt. Dann hast du vermutlich auch den alten FB. Wenn du jetzt ein Gateway mit neuer Firmware betreibst, dann wird das wahrscheinlich nicht funktionieren.


----------



## Leidi (22 Mai 2009)

Brr... Wenn ich im HWKonfig die PEW/PAW des Gateways beobachte, dann sehe ich nur NULLen. Demnach kann ich einen Hardware-"Fehler" nicht ausschließen, oder?

Also das Gateway ist aus diesem Jahr. Was würde es denn bedeuten den alten FB an das neue Gateway anzupassen? Hast du evtl. den neuen FB bzw. ein Bsp.?


----------



## uncle_tom (22 Mai 2009)

Funktioniert denn eigentlich die Kommunikation mit dem Gateway über die beiden Bausteine SFC14,15 (DPRD_DAT, DPWR_DAT) ?

Was sagt denn der Status dieser beiden Bausteine ?

Evtl. liegt nämlich hier dein Problem.

Hast du die Peripherieadressen richtig an den beiden Bausteinen eingetragen (HEX-Format) ?

Wenn es funktioniert, dann versuch doch bitte mal wie ich oben schon beschrieben habe - manuell einen Auftrag abzusetzen.

Dazu den Aufruf des ComDpLon-FB auskommentieren. SFC14 und 15 natürlich weiterhin aufrufen. Dann kannst du über den Ein- und Ausgangsdatenbereich (DB) mit dem Gateway reden. Hierzu mal bitte die Beschreibung zum Gateway lesen !

Wenn du den Baustein mit dem Gateway bekommen hast, dann sollten die Versionen schon zusammen passen. Aber wie bereits erwähnt - vergiss erst mal den Baustein und versuch manuell einen Auftrag abzusetzen. Wenn das nicht funktioniert, dann funktioniert´s mit dem Baustein erst recht nicht.


----------



## Leidi (22 Mai 2009)

Hallo, 

ich kenne mich mit den beiden Bausteinen SFC14/15 nicht sonderlich aus. In der Hilfe steht aber:


> Sie können konsistente Daten ggf. auch über das Prozeßabbild der Eingänge einlesen.


Und das hat definitiv nicht funktioniert. Wie gesagt: in der HWKonfig über Beobachten direkt auf die projektierten Ein-/Ausgänge zugegriffen...alles NULL

Kann es evtl. an der GSD-Datei liegen. Ich hatte mit dem Gateway eine Datei auf ner 3,5 Zoll Diskette bekommen. 
Dateiname: 





> GW2004F3.GSD


Gibt es evtl. einen aktuelleren Stand?


Oder muss ich irgendeine Reihenfolge auf der LON-Seite beachten. Bspw. Erst Regler EIN, dann Gateway EIN?!?

Mensch, das ist ja die Suche nach der Nadel im Heuhaufen...

Gruß
Leidi​


----------



## uncle_tom (22 Mai 2009)

Sag mal hast du dir eigentlich die mitgelieferte Dokumentation durchgelesen bzw. das Beispielprogramm angeschaut ?

Du hast doch sicherlich mittels der GSD-Datei das Gateway eingebunden und als Ein-/Ausgangsdaten 36 Byte definiert. Wenn du jetzt konsistent auf diese Daten zugreifen willst, dann mußt du die Systemfunktionen SFC15/14 verwenden, da du mehr als 4 Byte Nutzdaten hast, das ist nunmal so.

Ausserdem musst du ja irgendwie die Ein-/Ausgangsdaten des Gateways mit dem Datenbausteinbereich abgleichen der vom Kommunikations-FB verwendet wird.


Die GSD-Datei passt schon !

Also nochmal:

- pruefen ob SFC14/15 richtig parametriert sind (ggf. mal die Onlinehilfe von Step 7 bemühen.)

-ComDPLon-FB nicht ! aufrufen

-mittels Ein-/Ausgangsdatenbereich (Datenbausteinbereich, den du bei den Funktionen SFC15,14 angegeben hast) mit dem Gateway per Variablentabelle reden und manuell einen Auftrag absetzen.


Evtl. mal einen Spannungsreset am Gateway durchführen. Hatte schon mal das Problem, das sich nach einem Download der S7-Hardwarekonfig das Gateway irgendwie aufgehangen hatte.


----------



## Leidi (23 Mai 2009)

Schönen guten Morgen, 

so, jetzt klappt es. Ich hatte bis gestern den Ein-/Ausgangsdaten mit 36 Byte eingebunden, weil ich das in irgendeinem Bsp. so gesehen habe. Jetzt habe ich mir nocheinmal das 38 Seiten Handbuch "LONtoProfibus_DP_Gateway" genauer angeschaut. Da heißt es: 


> Das Gateway ist standardmäßig auf die Slaveadresse 3 und Länge der Ausgangs- und Eingangsbytes 32 Byte eingestellt.


Und prompt kann ich die Temperaturveränderung der am Regler angeschlossenen NTCs im DB beobachten. 
Das Ganze funktioniert mit dem Baustein. 

*Kannst du mir sagen, wie ich die beiden Bytes konvertieren muss, damit ich den gemessenen Temperaturwert sehe?* Ich erhalte zwei einzelne Bytes für die Temperaturmssung. Weiß aber nicht, wie ich die zusammenstellen muss...

Von Trane habe ich ja diese Liste erhalten:





Unter http://types.lonmark.org/index.html erhalte ich bspw. zum Index 105 die Angabe, dass das SNVT 2 Byte lang ist (Trane sagt 1 Byte laut Liste). *Hast du da irgendwelche Erfahrungen???*

Und wenn ich schon einmal dabei bin...hier die nächste Frage:
Wenn ich ALLE Informationen aus dem LON-Regler in die SPS einlesen möchte, dann sind das in Summe 50 Byte (darunter fallen bspw. laut Trane 5 Byte Nutzdaten für Betriebsstunden an) . Wie komme ich denn dann mit den 32 Byte Ein-/Ausgangsdatenbereich aus, den ich in der HW-Konfig konfiguriert habe, oder der auch anscheinend laut Handbuch im Gateway hinterlegt ist.* Gibt es eine Möglichkeit diesen Bereich zu vergrößern?*


Lieben Gruß und Danke nochmal
Leidi


----------



## uncle_tom (23 Mai 2009)

Also das Gateway sollte auch mit den 36 Byte E/A Bereich funktionieren. Aber für die meisten SNVT´s reichen auch die 32 Byte Daten aus.

In der ersten Version des ComDPLon-FB´s konnten generell nur 4 Byte-Nutzdaten pro Auftrag ausgewertet werden. Wenn man sich die SNVT-Masterlist mal anschaut, dann reicht das auch für einen Großteil der SNVT-Typen aus, da nur wenige Exoten mehr Nutzdaten als 4-Byte haben.

Die von dir genannten 50 Byte beziehen sich doch nicht auf einen Auftrag bzw. eine LON-Variable 

Laut SNVT-Masterlist gibt es glaub ich maximal 31 Byte Nutzdaten. Wenn du z.B. 5 Aufträge mit je 10-Byte Nutzdaten hast, dann hast du in der Summe 50 Byte. Mit deinen 32-Byte kannst du pro Auftrag ca. 25 Byte Nutzdaten übertragen, da ja 6 oder 7 Byte (weiss das jetzt nicht auswendig) im Ein- und Ausgangsbereich für die Auftragsdefinition reserviert sind.

Du solltest also kein Problem haben alle gewünschten Daten von Trane abzufragen.

Der SNVT-Typ 105 (SNVT_temp_p) ist laut SNVT-Masterlist mit 2 Byte Nutzdaten definiert. Weiterhin ist als Datentyp "signed long" definiert (-27317 bis 32767).  Als Auflösung 0.01

Normalerweise kannst du den Wert direkt in Step 7 abfragen indem du die beiden Bytes als Wort adressierst. Wenn deine 2-Byte Bsp. im DB1000 ab Adresse 5 liegen, dann kannst du mittels L DB1000.DBW5 den Temperaturwert abfragen. Wenn z.B. 2255 in diesem Wort steht, dann sollte dies bei der Auflösung von 0.01 22,55 °C entsprechen.

Wenn Trane hier nur 1 Byte angibt, dann verwenden sie vielleicht eine andere Auflösung, dann ist es aber kein SNVT_temp_p mehr.

Was steht denn in den beiden Bytes drin ?


----------



## Leidi (23 Mai 2009)

Hallo,

vielen Dank zunächst für deine Antwort.

Ich dachte zuerst, dass der Auftrags-DB komplett in einem Schritt abgearbeitet. Damit wäre ich bei deinem Bsp. 5 x 10 Byte Nutzdaten über die 32 Byte. 
Also habe ich es jetzt richtig verstanden, dass die Aufträge sequenziell abgearbeitet werden?!? Nach obigen Beispiel werden die 10 Byte Aufträge in 5 Zyklen eingelsen?

Hast recht mit der Darstellung. Habs so gemacht, wie du vorgeschlagen hast...die beiden Bytes als Word addressiert. Und schon klappt es. 
Weißt du wie die Umwandlung bei der Betriebsdauer funktioniert? Evtl. ein Byte für Tag, ein Byte für Stunde und so weiter?

Danke nochmals
Leidi


----------



## uncle_tom (23 Mai 2009)

Natürlich werden die Aufträge der Reihe nach abgearbeitet. Mann kann ja immer nur 1 Auftrag an das Gateway übergeben.

Bzgl. Betriebsdauer:

Du musst nichts umwandeln, du musst es nur richtig interpretieren !

Was ist es denn für ein SNVT-Typ ? 

Wenn du das weisst, dann schau halt mal in der SNVT-Masterlist nach wie dieser SNVT aufgebaut ist.

Wenn es anhand vom SNVT-Typ nicht abzusehen ist,
dann musst du das mit Trane abklären, bzw. mal bei Trane in der Beschreibung nachschauen wie sie das deklariert haben.

Vielleicht kommt man auch selber drauf, wenn man sich die einzelnen Bytes Online anschaut und bei Trane nachfragt bzw. nachschaut (z.B. Vorort-Display), welcher Wert (Betriebsstunden) denn aktuell ist.

Immer getreu dem Motto: Dumm darf man sein, mann muss sich nur zu helfen wissen


----------



## Leidi (25 Mai 2009)

Moin Moin, 

anscheinend werden die Betriebsstunden im SNVT_count_f (Index 51) - Format übergeben. In der Trane-Beschreibung steht als Kommentar 


> H_hour_comp1*1000+L_hour_comp1


Kannst du damit etwas anfangen?

Gruß


----------



## uncle_tom (25 Mai 2009)

Bekommst du die Betriebstunden in einer LON-Variable oder jeweils in 2 Variablen?
So wie die Formel aussieht, bekommst du 2 Zählwerte (1000er Zähler und 1er Zähler). Der 1000er Zähler wird vermutlich von Trane immer dann um 1 hochgezählt, wenn der 1er Zähler bei 1000 steht.

Du müsstest dann halt die Betriebsstunden laut der Formel mittels der beiden Werte berechnen.

SNVT_Count_f ist als Floating bzw. als Gleitkommazahl definiert (4 BYTE).

Demzufolge solltest du auf die beiden Einzelwerte (H_ und L_) ganz normal zugreifen können. 

Die Berechnung der Betriebstunden könnte dann evtl. so aussehen:

L DB1000.DBD4     ---> LON-Daten H_Wert
L 1000.0              ---> Faktor 1000
*R                      ---> Gleitpunktmultiplikation
L DB1000.DBD8     ---> LON-Daten L_Wert
+R                     --->  Gleitpunktaddition
T #TempReal       ---> Ergebniss in temporärer REAL-Variable


Nicht übel nehmen - aber mir scheint, du bist mit der ganzen Sache etwas überfordert 

Mfg
uncle_tom


----------



## Leidi (26 Mai 2009)

Moin Moin, 

vielen Dank für deine Antwort. Werde ich später mal ausprobieren.



> Nicht übel nehmen - aber mir scheint, du bist mit der ganzen Sache etwas überfordert


Das verstehst du falsch... ich lege nur besonders viel Wert auf andere Meinungen 

Lieben Gruß


----------

