# DLL von PCI-Messwert-/Regelkarte in WinCC-flexible einbinden



## bastimeister (15 August 2013)

Hallo liebe Forumgemeinde,

Ist es generell möglich eine *DLL *in *WinCC-flexibel* einzubinden?

Folgenden Aufbau haben wir:

Ich habe hier einen PC mit WinCC-flexibel 2008 SP3 RT und eine S7-SPS (IM151-8F PN/DP CPU) .
Im PC soll ein PCI-Messwert-/Regelkarte gesteckt werden.


 Zu dieser Karte gibt es ein Windowssoftware, sowie DLL Funktionen
Zusätzlich dazu gibt es Beispiel-Dateien ("Sample Files") für NI LabVIEW, C und VisualBasic
Diesen sind dazu gedacht um seine eigene Software für das auslesen der Karte schreiben zu können, bzw. eine Schnittstelle zu der Karte herstellen zu können

-> Gut wie das mit LabVIEW geht, das weis ich noch aus meiner Studienzeit, ist ja eine Windowsanwendung, welche genau dafür gemacht is t, für Messwerterfassung mittes PC mit Messwertkarten... Aber ob das auch mit WinCC-flexibel geht und man auch ein paar Daten an die SPS bekommt ist die große Frage.

Nun meine Fragen: 



Hat schon mal jemand (Windows)-DLLs in WinCC-flexibel eingebunden, geht das überhaupt?
Kann man dazu VisualBasic-Beispieldateien verwenden, WinCC-Flexibel kann doch VBS?!
Über WinCC-flexibel sollte man dan Messwerte anzeigen und die Karte bedienen (Konfigurieren) können, eben das was die Window-Anwendung des Herstellers macht, bzw. so wie es mit LabVIEW möglich ist...
Zussätzlich sollte es möglich sein ein paar Daten an die SPS zu übertragen

Geht das? Für eine Antwort wäre ich euch wirklich SEHR Dankbar


----------



## Larry Laffer (15 August 2013)

Hallo,
du kannst (mit etwas Glück weil die Properties passend erstellt sind) ggf. ActiveX-Elemente in Flex einbinden und benutzen. Eine Standard-DLL aber nicht ...

Gruß
Larry


----------



## bastimeister (15 August 2013)

Zu DLL hat mir Siemens geschrieben das man dazu ein "Software Development Kit" (SDK) braucht, folgender Link:
http://support.automation.siemens.com/WW/view/de/15247601

Ich habe aber in in der Beschreibung der Software zu der Karte auch entdeckt, das es dafür *ActiveX*-Elemente gibt. Also Larry vielen Dank nochmal für das Zauberwort *ActiveX* dazu folgender Link von Siemenshttp://support.automation.siemens.com/WW/view/de/37022154

@Larry, hast Du mit *ActiveX*-Elementen einbinden (_positive_) Erfahrungen sammeln können/dürfen? Was bedeutet "mit Etwas Glück" ??

Oder hat jemand anders Erfahrung mit *ActivX* und WinCC-flexibel ???


----------



## Larry Laffer (15 August 2013)

Du kannst grundsätzlich jedes ActiveX in Flex integrieren - sie funktionieren dann nur nicht alle ... 

Ich selber setze ein ActiveX ein, dass mir die Anzeige ein f(x)-Kurve ermöglicht. Das funktioniert prima.
Bei anderen (bei vorrangig) Controls habe ich diesbezüglich keine positiven Erfahrungen machen können (deshalb "mit etwas Glück").
Ich habe aber bislang noch nicht herausfinden können, was die Vorbedingung ist, dass es funktioniert (das von mir verwendete Control verwendet nämlich als Basis nicht das SDK) ...

Also Fazit : Versuch dein Glück ... 

Gruß
Larry


----------



## bastimeister (16 August 2013)

Danke Larry für deine Infos, also kann muss nicht funktionieren, kann ich nur ausprobieren...

Der Gute Mann von Siemens würde die Werte über *OPC* in WinCC flexible einbinden. 
Das scheint ihm der einfachste Weg zu sein. Ich müssten dazu einen *OPC Server* schreiben, der die Daten für WinCC flexible bereitstellt.
Hat mit selbst *OPC Server* programmieren für Datenaustausch mit WinCC flexibel schon jemand Erfahrung?


----------



## Thomas_v2.1 (16 August 2013)

Wenn du dir OPC ans Bein binden willst, wirst du die nächsten 5 Jahre nicht fertig wenn du sowas noch nie gemacht hast.
Ich würde auf ein einfaches Protokoll wie Modbus-TCP setzen. Dann musst du "nur" eine Anwendung schreiben welche die Daten von deiner Messkarte über die dll Schnittstelle einliest, und als Modbus-TCP Server anderen Anwendungen zur Verfügung stellt.

Bei der Variante gibt es meiner Meinung nach mehrere Vorteile.
WinCC flexible unterstützt Modbus TCP direkt als Treiber. D.h. du kannst die Variablen deiner Messkarte genauso wie SPS-Variablen einbinden.
Außerdem ist es möglich, direkt in der S7-SPS das Modbus TCP-Protokoll in Software abzubilden. Damit kannst du direkt von der SPS aus auf die Daten deiner Messwertkarte ohne den Umweg über WinCC flexible zugreifen. Siemens bietet auch eine fertige kostenpflichtige Modbus Bibliothek an, wenn man nicht selber programmieren will.


----------



## JesperMP (16 August 2013)

> Im PC soll ein PCI-Messwert-/Regelkarte gesteckt werden.


Welche ? Ist es geheim ?
Wenn diese Messwert Karte kein OPC unterstützt, überleg ob es nicht am sinnvollsten ist auf eine Karte zu wechseln, der OPC anbietet.


----------



## bastimeister (16 August 2013)

Ist eine *INFICON SQM-242* Schichtdicken-Controler-Karte 
http://products.inficon.com/en-us/n...ail/SQM-242?path=Products/ThinFilmDeposition/

Wird für eine Vakuumbeschichtungsanlage gebraucht und regelt einen Elektronenstrahlgenerator, welcher bspw. eine Silber oder Golschicht aufträgt...

Die Karte hat mir der Kunde gegeben, die ist also schon gekauft, ich soll diese jetzt einbinden. Sie bietet eben DLLs und die zusätzliche Software SQS-242 bietet auch Komunikation über ActiveX, Ethernet und RS232...

@Thomas, das mit ModbusTCP ist auch ne Variante Danke, wust ich nicht, das man das so auch machen kann... Die Karte bietet ja auch die Möglichkeit eben die Daten auf Ethernet zu legen, hatte nur noch nicht die Idee, wie man das in die S7-HW-Config einbindet, also der SPS begreiflich macht, das die Gleiche Schnittstelle sowohl HMI als auch Schnittstelle zur Messwertkarte ist...
-> Auf sowas willst du doch vom Prinzip her auch hinaus, oder?


----------



## Thomas_v2.1 (16 August 2013)

So wie es aussieht kannst du über TCP/IP die Daten von der Karte/Software über ein festgelegtes Protokoll abfragen, das macht die Sache ja noch einfacher.
Dann kannst du dir die Daten von der Software über die SPS direkt abholen, und die Daten über WinCCflexible zur Anzeige bringen.

Bei den PN CPUs benötigst du dazu die offene TCP/IP Kommunikation über die sog. T-Bausteine.
Hier gibt es Beispiele von Siemens wie man so etwas einrichtet und programmiert:
http://support.automation.siemens.com/WW/view/de/25209116

Dann eine TCP Verbindung zur Software deiner Karte aufbauen, und eine Anfrage wie im Handbuch beschrieben zusammenstellen und abschicken. Dann musst du die Antwort auswerten, wahrscheinlich die Strings in Werte konvertieren usw.
Du kannst vorab z.B. mit Telnet mal eine Abfrage starten, um zu prüfen ob du damit Zugriff auf die für dich relevanten Werte erhältst, und wie so ein Antworttelegramm aufgebaut ist. Denn das steht leider nicht im Handbuch.


----------



## Larry Laffer (16 August 2013)

Thomas_v2.1 schrieb:


> Ich würde auf ein einfaches Protokoll wie Modbus-TCP setzen. Dann musst du "nur" eine Anwendung schreiben welche die Daten von deiner Messkarte über die dll Schnittstelle einliest, und als Modbus-TCP Server anderen Anwendungen zur Verfügung stellt.



@Thomas:
Unabhängig davon, wie sich dieser Thread jetzt weiter entwickelt ... kannst du zu dem obigen etwas mehr Background-Info liefern ? Das würde mich schon interessieren ...

Gruß
Larry


----------



## Thomas_v2.1 (16 August 2013)

Larry Laffer schrieb:


> @Thomas:
> Unabhängig davon, wie sich dieser Thread jetzt weiter entwickelt ... kannst du zu dem obigen etwas mehr Background-Info liefern ? Das würde mich schon interessieren ...



Naja, die Software stellt eine Art Vermittlungsstelle dar.
Der eine Endpunkt ist die dll zur Anwendersoftware für die Messkarte, der andere Endpunkt die Netzwerkschnittstelle mit Modbus TCP.
Für die Umsetzung der beiden Seiten definiert man eine Tabelle.
Kommt auf der Modbus-Seite eine Anfrage z.B. um Register 40001 zu lesen, liest die Software aus der dll den Wert für Sensor 1 und liefert den Wert als Antwort zurück

Die Umsetzungstabelle könnte dann lauten:

Modbus Register -> Messkarte Wert
40001 -> Sensor 1 (16 Bit Int)
40002 -> Sensor 2 (16 Bit Int)
usw.

Für Soll- und Einstellwerte definiert man dann genauso eine Tabelle.
40100 -> Rampenzeit 1
40101 -> Rampenzeit 2
usw.

Prinzipiell das gleiche was ich auch bei nettoplcsim mache, nur mit anderen Protokollen.


----------



## Larry Laffer (17 August 2013)

... wie definiert sich denn das ModBus-Protokoll und welchen Port benutzt es ?
Hast du ein Beispiel dafür ?

Gruß
Larry


----------



## LowLevelMahn (18 August 2013)

für Modbus gibt es doch ein paar fertige Implementationen

z.B.
http://libmodbus.org/ C/C++ slave/server - vollstaendig, multiplatform und auch VStudio Solutions dabei (sonst make)
https://code.google.com/p/nmodbus/ C# slave
http://www.simplymodbus.ca/TCP.htm wie funktionierts

offizielles: http://www.modbus.org/ - da gibts auch client/server zu kaufen


----------



## Larry Laffer (18 August 2013)

OK ... das wußte ich nicht ... ich habe mich mit der Thematik aber auch bisher nie auseinandergesetzt ...
Auch jetzt ist es so, dass mich das einfach nur interessiert - man kann ja nie wissen ... 

Gruß
Larry


----------



## bastimeister (19 August 2013)

Thomas_v2.1 schrieb:


> So wie es aussieht kannst du über TCP/IP die Daten von der Karte/Software über ein festgelegtes Protokoll abfragen, das macht die Sache ja noch einfacher.
> Dann kannst du dir die Daten von der Software über die SPS direkt abholen, und die Daten über WinCCflexible zur Anzeige bringen.
> 
> Bei den PN CPUs benötigst du dazu die offene TCP/IP Kommunikation über die sog. T-Bausteine.
> ...



Hallo Thomas,

Vielen Dank, ich hab das noch nie gemacht daher wusste ich nicht wie man das realisieren kann!
Die grundlegende Idee die mir fehlte bzw. der Grundlegende Denkfehler war "Wie bringe ich der SPS bei, das Die Ethernetschnittstelle, des PC sowohl HMI als auch Schnittstelle zur Messwertkarte ist!"

Mit deinem Lösungsvorschlag, kann ich dann die DLLs und ActiveX-Interface vergessen? Ich lese also direkt mit der SPS die Daten von der Messwertkarte *Ohne* die DLLs... Oder brauch ich eben die DLLs dann genauso, wie dene Beschreibung zu ModbusTCP...


----------



## LowLevelMahn (19 August 2013)

auf der Webseite der PCI-Karte gibt es ein PDF SQS-242 Software Operating Manual (English) (2 MB), darin wird beschrieben wie das Ethernet-Protokoll aussieht (und ich glaube die Software horcht auf Port 1001) - du scheinst nicht mit der Karte direkt sondern mit der Software für die Karte zu sprechen (5.3 Ethernet Interface und 5.6 Protokoll)

Ich würde einfach mal mit Hercules (http://www.hw-group.com/products/hercules/index_en.html - nettes RS232 und UDP/TCP-IP Client/Server Testtool) auf den Port konnektieren und schauen ob du deine benötigten Informationen zusammenbekommst - dann "einfach" das TCP/IP Protokoll in der SPS Umsetzen, oder eben Modbus - in allen Varianten wirst du aber nicht ohne Programmierung (C/C++,C#,VB oder in der SPS) auf die Daten kommen

Die Frage ist: Was kannst du davon realisieren - Welche Programmiersprachen,System kannst du davon "sprechen", die ganzen Tips bringen nur was wenn auch klar ist was du davon leisten kannst


----------



## bastimeister (19 August 2013)

Hallo LowLevelMahn,

Genau, das sollte so sein, das man mit der Software SQS-242 (5.3) kommuniziert über Port 1001 (5.6).... Danke das du dir die Mühe gemacht hast die Beschreibung runtergeladen und dort reingeschaut hast...

Danke für den TIP zu dem Tool, nach der Beschreibung sollte man ja gut den Port 1001 "ab-horchen" können...

Rein vom Programmieren her, ware für uns natürlich das beste, alles in der SPS machen zu können VB geht auch noch C/C++/C# wird schon schwieriger, da wir auch keine Entwicklus-SW (VisualStudio etc.) dafür in der Firma haben... 
-> Also es sollte möglichst mit den Möglichkeiten funktionieren, welche Siemens mit STEP7 und WinCC-flexibel-ES bereitstellt...
-> Ich Denke also das der Tip von Thomas der Beste sein dürfte und deiner zum Abhören des Ports ist auch TOP!


----------



## Larry Laffer (19 August 2013)

bastimeister schrieb:


> Rein vom Programmieren her, ware für uns natürlich das beste, alles in der SPS machen zu können ...



Kannst du doch dann ...
Ich würde dann trotzdem erstmal nach dem von LowLevelMahn beschriebenen Weg checken, was du über den Port reinbekommst (und wie das aufgebaut ist).
das reine Connect, Receive etc. kann die SPS auch ...

Gruß
Larry


----------



## LowLevelMahn (19 August 2013)

Erstmal alle benötigten Protokolle zu 100% von Hand durchtesten (also mit Hercules) - das reduziert den Stress auf der SPS-Seite wenn man sich sicher ist das es funktionieren muss(nicht nur sollte)

Immer daran denken:
TCP/IP ist streamorientiert (also so wie RS232) d.h. du bekommst nicht unbedingt alle Daten eines Protokollhappens mit einem einzigen Receive (meistens sind in den Protokollen irgendwelche Längenangaben drinn auf die man warten muss)
das wird bei dir lokal kaum passieren - aber wehe du gehst mal über einen schlechtes Netz an die Karten-Software und wunderst dich warum nicht alle Daten beim 1. Receive schon komplett vorliegen


----------



## Thomas_v2.1 (19 August 2013)

Falls du von der SPS bzw. deinem WinCC flexible Panel auch Sollwerte verstellen möchtest, wirst du früher oder später noch auf ein weiteres Problem stoßen.

Denn so wie es aussieht können Parameter auch von der PC-Software aus verstellt werden. 
Wenn du jetzt kontinuierlich alle Parameter zyklisch von der SPS auf die Software schreibst, werden Einstellungen die lokal von der Software am PC gemacht wurden wieder überschrieben.
Darum musst du in der SPS erkennen ob jemand einen Parameter von der WinCC flexible Visu verstellt hat, und nur dann das Telegramm zum setzen eines Parameters von der SPS an die Software abschicken.

Das ist jetzt nicht sonderlich schwierig, zumindest nicht wenn man das Programm von vornherein so schreibt dass es auch diesen Fall korrekt bearbeitet.


----------



## bastimeister (20 August 2013)

Hallo liebe Forumgemeinde,

Ich möchte mich erst nochmal bei Thomas, LowLevelMahn und Larry für die Guten Tipps bedanken. Ich möchte nochmal zusammenfassen wie ich jetzt vorzugehen gedenke:

Einbau der PCI-Karte in den PC, installieren SQS-242-Software mit freigabe Ethernetkommunikation über Port 1001 
"Abhorchen" der TCP/IP Verbindung mit Hercules-Tool, alle benötigten Protokolle zu 100% von Hand durchtesten 
Bei Sinnvolle Daten, einrichten einer Offenen TCP-Verbindung zur SPS mit SIMATIC-Tool (Open Communication Wizard) 
Einbinden der Daten von der Karte in die SPS mit Connect/Send/Receive T-Bausteinen 
Daten an die Karte nur schreiben (Send) bei Änderung, kontinuierlices/zyklisches Lesen der Daten (Reseive) von der Karte 

Gruß Basti


----------



## bastimeister (20 August 2013)

Der Vollständigkeit halber, will ich euch mal Mitteilen Was Siemens zu ActiveX, SDK für WinCC-flexibel und ActiveX-Controls in WinCCV12 (TIA-Portal) sagt:

*Frage-ActiveX (WinCC flexibel)*:
ActiveX ist doch auch jetzt noch möglich und wenn ich keine eigenen ActiveX erstellen will, sondern welche verwenden will, welche diese SQS 242 bereitstellt, dann brauche ich das SDK von WinCC-flexibel doch  gar nicht?!


SIEMENS schrieb:


> WinCC flexible unterstützt nicht wirklich die allgemeine Nutzung von ActiveX Controls. Hier gibt es diverse Einschränkungen die von verschiedenen Faktoren abhängig sind.


 
*Frage SDK (WinCC flexibel)*:
Und wie jetzt das SDK wird nicht mehr vermarktet? Wieso steht das dann noch so auf der Siemens-Homepage und wieso weist mich dann ihr Kollege von der Fachberatung etc. genau darauf hin?


SIEMENS schrieb:


> Das WinCC flexible SDK wurde nur kundenspezifisch vermarktet. Es ist abgekündigt und kann nicht mehr bestellt werden.


 
*Frage DLLs und ActiveX bei WinCC V12:*
Was ist denn jetzt diesbezüglich im WinCC-V12 (des TIA-Portals) möglich? Lassen sich dort DLLs und ActiveX-Elemente einbinden?


SIEMENS schrieb:


> WinCC V12 unterstützt native nur .net Controls auf PC basierten Systemen natürlich kann man andere Controls wrappen, sodass diese die Interfaces eines .net Controls haben.



Gruß Basti


----------



## JesperMP (20 August 2013)

bastimeister schrieb:


> ActiveX ist doch auch jetzt noch möglich und wenn ich keine eigenen ActiveX erstellen will, sondern welche verwenden will, welche diese SQS 242 bereitstellt, dann brauche ich das SDK von WinCC-flexibel doch  gar nicht?!


Nur sehr wenige ActiveX Componente die nicht speziel für WinCC Flxible entwickelt sind, funktionieren mit WinCC Flexible. Ich kenne nur 2 davon. Du kannst ja probieren, aber halte deine Erwartungen nieder.


----------



## bastimeister (21 August 2013)

Moin liebe Forumgemeinde,

Ich hab mal bei Siemens gefragt, was es da noch so für Tipps gibt die man beachten sollte, wenn man eine offene TCP/IP-Verbindung über den *Open-Communication-Wizard* nutz:

Natürlich kann man das Beispielprogramm von Siemens zum OCW nur bedingt nutzen, zumidest muss man anpassen, da der kommunikationspartner ja keine S7-400 sondern ein PC ist
Es wird empfohlen einen Managed Switch (SCALANCE X200er-Serie) zu benutzen, da man bei diesem über "Port-Mirroring" den Netzwerkverkehr beobachten kann
Zum beobachten der Datenströme empfielt Siemens WireShark Link: http://www.wireshark.org/download.html
Man sollte auf jeden fall das Protokoll kennen
Da ja Send und Receive benutzt wird gibt es ja auch einen Send- und einen Receive-Puffer, wo die Daten auch abgeholt werden müssen, sonst läuft der über und die TCP-Verbindung bricht ab...
Es könnte sein das im Empfangspuffer (Receivepuffer) zu viele Daten auflaufen welche nicht in den Puffer passen, das muss man auch prüfen
Es kommt eben ganz drauf an wie das Protokoll aussieht, den das entscheidet wie kompliziert die ganze programmiererei in STEP7 wird

Gruß Basti


----------



## LowLevelMahn (21 August 2013)

> Es wird empfohlen einen Managed Switch (SCALANCE X200er-Serie) zu benutzen, da man bei diesem über "Port-Mirroring" den Netzwerkverkehr beobachten kann
> Zum beobachten der Datenströme empfielt Siemens WireShark Link: http://www.wireshark.org/download.html



da du auf der einen Seite eh einen PC hast sollte Wireshark auf dem PC reichen - aber auch nur noetig wenn was nicht funktioniert, ansonsten ist Hercules dein Freund der Wahl



> Es kommt eben ganz drauf an wie das Protokoll aussieht, den das entscheidet wie kompliziert die ganze programmiererei in STEP7 wird



Naja das Protokoll sieht ja einfach und sehr "seriell" aus, pur ASCII mit <CR> als Abschluss - also musst du bis zum <CR> lesen und dann verarbeiten - und Strings konvertieren :}
und die bei Ethernet unnötige Checksumme kann man ja durch 00 ersetzen und in der Antwort einfach ignorieren


----------



## bastimeister (17 Oktober 2013)

Hallo liebe Forumgemeinde!

Ich meld mich mal wieder zu diesem Thema! Leider habe ich es erst heute Geschaft die Verbindung zu testen, mit Hercules! Speziell geht die Frage an LowLewelMahn

@LowLevelMahn
Ich habe versucht erstmal mich mit dem RT-PC zu verbinden und schon da scheiterts:
Anhang anzeigen 22017

Der Rechner hat Windows7-32Bit (Wegen dieser SQS242-Karte), auch mein Entwicklungsrechner hat Windows7-32Bit (wegen Siemens, funktioniert ja noch nicht so sehr lange mit 64bit!)
-> also dachte ich mir testest mal mit nem anderen Rechner im Netzwerk mit WindowsXP (192.168.1.94) da funktionierts....
-> Dann hab ich versucht den Port 1001 freizugeben wie in dieser Beschreibung http://www.youtube.com/watch?v=CldM07Ymyn0 ohne Efolg!
-> Dann hab ich die Windows-Firewall ausgeschalten, bringt aber auch nichts 
-> Port80 sollte doch eigentlich gehen oder? Selbst der Funktioniert nicht, siehe Screenshoot
-> Was mache ich falsch, we kann mir Helfen??


----------



## Thomas_v2.1 (17 Oktober 2013)

Dein Screenshot bzw. Anhang lässt sich nicht öffnen.

Was hast du denn auf dem XP Rechner getestet, die Kartensoftware oder Hercules?
Um Probleme mit einer Firewall zu auszuschließen, kannst du Hercules auch auf dem gleichen Rechner auf dem auch die Kartensoftware läuft starten. Dann als Ziel die IP-Adresse der Netzwerkkarte oder localhost 127.0.0.1 eingeben.
Port 1001 ist Voreinstellung bei der Kartensoftware, da bringt es nichts irgendwas auf Port 80 zu probieren.


----------



## bastimeister (18 Oktober 2013)

Hallo Thomas,

Danke erstmal!

Keine Ahnung warum der Screenshoot nicht funktioniert 
	

		
			
		

		
	



	

		
			
		

		
	
 hatte eigentlich so gemacht wie vom Forum vorgegeben... -> Dieser war natürlich von _*Hercules*_...

Also nochmal:

Ich habe versucht mich mit Hercules vom Entwicklungs-PC (Win7-32Bit IP:192.168.1.99) auf den Runtime-PC (Win7-32Bit IP:192.168.1.3) mittels _*Hercules*_ zu verbinden, es geht garnicht, kommt immer die Meldung "TCP connection timeout" oder "TCP connection 10061" (-> Was 10061 bedeutet hab ich auch noch nicht gefunden, da es beim Hercules keinen Hilfe-Button gibt...) 
Also habe ich das Gleiche mal zu einem anderen Rechner im SPS-Netzwerk versuch  (dieser hat allerdings WinXP IP:192.168.1.94) , und da kommt eben die Melchung "Connected to 19.168.1.94" also funktioniert... 
Den_* Hercules*_ hab ich natürlich auch auf dem Runtime-PC installiert, dort als IP 192.168.1.99 (Entwicklungs-PC), 192.168.1.94 (WinXP-PC), 19.168.1.3 (Runtime-PC) sowie 127.0.0.1 (localhost) probiert -> Hier funktiniert auch wieder nur 192.168.1.94 (WinXP-PC)! 
Es bringt mir ja nichts, wenn ich mich nicht mit dem Runtime-PC vom Netzwerk aus verbinden kann (sondern nur lokal auf dem gelichen Rechner), denn genau das soll ja dann die SPS mittels der SIMATIC T-Bausteinen (TCON, TSEND, TRCV, TDISCON) machen...
-> Trotzdem war die Idee estmal gut mit localhost (wie muss man das eingeben)


----------



## Thomas_v2.1 (18 Oktober 2013)

Die Fehlernummer stammt vom Winsock:
http://msdn.microsoft.com/de-de/library/windows/desktop/ms740668(v=vs.85).aspx

Port 80 halte ich für unwahrscheinlich dass das richtig ist. Dieser ist üblicherweise für HTTP, also einen Webserver reserviert. Wenn das auf deinem XP Rechner funktioniert, wird dort wohl ein Webserver aktiv sein.
Was sagt denn die Dokumentation von deiner Kartensoftware, auf welchem Port der Dienst erreichbar ist? Lowlevelmahn schrieb was von 1001, hab in die Dokumentation nicht reingeschaut. Vielleicht kannst du den Port in der Software ja auch noch einstellen, und musst den Dienst auch erst aktivieren.
Du kannst ja mal schauen ob auf Port 1001 überhaupt ein Programm lauscht. Dazu machst du auf dem Rechner auf dem diese Kartensoftware läuft eine Eingabeaufforderung auf, und gibst dort "netstat -ano" ein.
In der Liste die dann ausgegeben wird, schaust du nach ob es in der Spalte "Lokale Adresse" einen Eintrag mit ":1001" am Ende ist. Ist da ein Eintrag vorhanden, warten ein Programm auf diesem Port auf eingehende Verbindungen. Wenn das dort nicht aufgeführt ist, kannst du dich auch nicht auf Port 1001 verbinden, weil dort überhaupt kein Programm ist was auf deine Anfragen antworten kann (dann gibts Fehler 10061 beim Client).


----------



## bastimeister (18 Oktober 2013)

Hallo Thomas,

Ja Port 1001 ist richtig habe ich ja auch probiert (als erstes) als das nicht ging hab ich hat Port 80 eingegeben, denn Irgendeinen Port muss man ja eingeben... 
Mir gings erstmal darum mich überhaupt erstmal mit der Netzwerkarte des RT-PC zu verbinden, das andere kommt dann später (Also mit der Kartensoftware verbinden...)

Das mit "net-stat -ano" teste ich... Danke erstmal für den Tip!

-> Ich habe bei "net-stat -ano" geschaut und folgenden eintrag gefunden:

Proto                 Lokale Adresse            Remoteadresse                  Status               PID
TCP                  192.168.1.3:1001         192.168.1.1:503027           Hergestellt         3388

Nur zur Info 192.168.1.1 ist die SPS (IM151-8 PN/DP CPU), da ich den "OpenCommunicationWizzard" schonmal ausgefürt habe, und das Beispiel von Siemens ins S7-Programm übernommen haben. Wenn ich da jetzt mal "Disconnect" ausfüre sollte ich das doch im "net-stat -ano" sehen... Dann muss es doch möglich sein mich auch vom ES-PC zum RT-PC zu verbinden? Denn Hercules hatte ich vorm installieren der T-Bausteine probiert (gut die Firewall war noch an...)


----------



## LowLevelMahn (18 Oktober 2013)

> Ja Port 1001 ist richtig habe ich ja auch probiert (als erstes) als das nicht ging hab ich hat Port 80 eingegeben, denn Irgendeinen Port muss man ja eingeben...
> Mir gings erstmal darum mich überhaupt erstmal mit der Netzwerkarte des RT-PC zu verbinden, das andere kommt dann später (Also mit der Kartensoftware verbinden...)



nur so als Info - wenn auf dem Rechner nichts läuft das auf Port 80 horcht bekommst du auch keine Verbindung - also ist der Test vielleicht nicht sooo sinnvoll


----------



## bastimeister (18 Oktober 2013)

Hallo liebe Forumgemeinde,

Ich hab jetzt folgendes rausgefunden:
-> Wenn ich in der SPS am T-Baustein "TCON" (Verbindung aufbauen) das Bit "REQ" (Request=Anforderung der Verbindung) auf 1 setze, und dann am RT-PC die Software starte, wird die Verbindung hergestellt 
-------> Bedeutet wenn erst die SPS in Run geht, dann der RT-PC und die Software startet, dann steht die Verbindung
-> Wenn ich jetzt die SPS in Stop->Run schalte, die Sowtware aber weiterhin läuft -> Ist die Verbindung bei "netstat -ano" am RT-PC raus
-------> Wenn ich nun in der SPS am T-Baustein "TCON" (Verbindung aufbauen) das Bit "REQ" (Request=Anforderung der Verbindung) auf 1 setze, dann Bleibt "BUSY" anstehen das bedeutet die Verbindung zum am RT-PC wird NICHT wieder hergestellt -> erst wenn ich die Software erneut neu starte -> Das ist doch auch wieder Mist!

-> Wie kann ich das denn jetzt mit Hercules testen? (Ist mir klar das ich die Verbindung zur SPS erst wieder abbauen muss... erst dann mit Hercules probieren, mach ich jetzt mal...

@Thomas und @LowLevelMahn


> nur so als Info - wenn auf dem Rechner nichts läuft das auf Port 80  horcht bekommst du auch keine Verbindung - also ist der Test vielleicht  nicht sooo sinnvoll


-> Das mit den Ports hab ich jetzt verstanden, wenn ichs mir genau überlege ist das ja eigentlich logisch! 

Bin aktuell jetzt mit Hercules "Connected to 192.168.1.3" über Port 1001
-> "netstat -ano" meldet folgendes:
Proto -------                 Lokale Adresse -------            Remoteadresse -------                  Status -------               PID
TCP --------                  192.168.1.3:1001-----         192.168.1.99:54765 ---           Hergestellt --         3388

-> Also mit Hercules scheint es jetzt zu klappen mit der Verbindung, habe in der Firewall, Port1001 bei eingehenden und ausgehenden Verbindungen als Ausmahme freigegeben!
-> Wenn ich jedoch anschließend "Disconnect" klicke und dann nochmal versuche mich zu verbinden, dann geht das nicht mehr, bricht mit der Meldung "TCP connection timeout" ab...

-> Wie bekomme ich das bei TCON genauso hin, den der wartet ja immer auf Rückmeldung, also das sich die SW genauso erst dann verbindet, also wenn diese gestartet wird....


----------



## bastimeister (18 Oktober 2013)

Man kann ja in WinCC flexibel ein Programm, in abhängigkeit einer Variable starten, oder?
Kann man dieses aber auch wieder beenden? -> Wie geht das?

Zur not könnte ich ja auch den RT-Rechner neu starten, mit Wincc flex und Kartensoftware im Autostart, sobald sich die SPS mit der Karte verbinden will:
Zum Herunterfahren von Windows... benutzt man:
1. Den Befehl "StoppeRuntime" den Modus "Runtime und Betriebsystem"...

ODER

2. Den Befehl "StarteProgram" Programmname "shutdown" mit anschließendem Befehl "StoppeRuntime" Modus "Runtime"

-> gibt es da auch einen Befehl für "Windows Neu starten" ?? "restart" anstatt "shutdown" als Programmname, habe ich probiert, da tut sich garnix...


----------



## Thomas_v2.1 (18 Oktober 2013)

Die Software der Karte kann nur eine Verbindung zur Zeit annehmen.
Vielleicht erkennt die Software der Karte nicht, wenn eine einmal aufgebaute Verbindung nicht aktiv abgebaut wurde, sondern z.B. durch ziehen eines Netzwerkkabels getrennt wurde.
Evtl. gibt es dort aber doch einen Timeout nachdem die Verbindung zurückgesetzt wird. Zumindest würde ich das als erstes mal probieren, bevor ich da irgendwelche Prozesse abschieße.

Wenn du von der SPS aus keine Verbindung bekommst, einen Verbindungsaufbau z.B. alle 5s erneut versuchen. Sollte nach 1 Minute immer noch keine Verbindung hergestellt werden können, Fehlermeldung aufs WinCC und dann kannst du ggf. versuchen den Prozess / Programm der Karte neuzustarten. Kannst das ja in eine Batch-Datei packen, die du dann von der WinCC Runtime aus aufrufst.


----------



## LowLevelMahn (18 Oktober 2013)

und auch mal den Hersteller fragen wie das mit dem TCP/IP ist (warum kann man nach Disconnect nicht mehr Connectieren) ... bevor man einfach 1000 (möglichweise blöde) Lösungen durchprobiert


----------



## bastimeister (18 Oktober 2013)

Gibt es keine Idee für die Fragen:
1. Wie beende ich ein Programm
2. Wie führe ich "Windows neu starten" von der WinCC flexibel Runtime aus?

@Thomas
Habe ich probiert, es ist unmöglich, wenn einmal eine Verbindung zwischen SPS und Software da war, wieder neu zu verbinden (nach Disconnect)
Würde eigentlich gern die Software neu starten... weis nur nicht wie...
-> Hast du schonmal eine Batchdatei ausgeführt? Anders geht das nicht?


----------



## LowLevelMahn (18 Oktober 2013)

@bastimeister

hast du den Hersteller schon angesprochen? Es könnte ja ein Update geben das nicht auf der Homepage verfügbar ist
Wie oft würdest du denn dann die Software abschiessen und neustarten? <-- echt BLÖDE IDEE

in einer Batchdatei mit


start http://ss64.com/nt/start.html
taskkill http://ss64.com/nt/taskkill.html


----------



## bastimeister (18 Oktober 2013)

Vielen Dank! @LowLevelMahn

Hab ich schon gefunden mit den start und taskkill...
für start gibt es aber schon einen Befehl: "StarteProgramm" in Felxibel -> Bei Programmname = C:\Programme\INFICON\SQS-242\SQS242.exe (also kompletter Pfad)

Für Taskkill -> "StarteProgramm" Programmname = taskkill, Programmparameter = /F /IM SQS242.exe /T

Funktioniert soweit... Bisher gibt es kein Update, muss warscheinlich damit klarkommen...


----------



## LowLevelMahn (18 Oktober 2013)

und was sagt der Hersteller zu dem Reconnect Problem?


----------



## bastimeister (18 November 2013)

Hallo Liebe Forumgemeinde!
Zu:


LowLevelMahn schrieb:


> und was sagt der Hersteller zu dem Reconnect Problem?


Da sagt der Amerikanische Hersteller:


> I'm afraid that the software does not support any notification for ethernet disconnection.



Also die Software erkennt das nicht, also muss ich Sie abschießen wieder neu öffenen...

Noch ein kleines Problemchen hab ich mit dem Hercules-Tool, es zeigt mit in der Antwort (_response_) kein *ACK* oder *NAK* an, was aber eigentlich wichtig wäre um zu erkennen, ob die Software meine Anfrage (_query_) richtig verstanden hat und die Antworte (_response_) plausibel ist... Nochdazu kommt, das ich beim Hercules <CR> senden muss, sonst passiert nix...

Hier ein par Beispiele (Vergleich "Hercules" und "SQS-242-Comm Tool"):


----------



## LowLevelMahn (18 November 2013)

> es zeigt mit in der Antwort (response) kein ACK oder NAK an



Hercules verändert die Kommunikation nicht - es wird einfach nur der TCP-Datenverkehr angezeigt

meine Idee dazu: 
1. kann es sein das dieses SQS-242-Commt Tool aus ;; ein ;ACK; macht? - provozier mal ein NAK - wie sieht das aus?
2. niemals beide Tools gleichzeitig laufen lassen - die SQS-Software scheint ja schonmal "does not support any notification for ethernet disconnection" totaler Murks zu sein
3. mit Wireshark mal genau schauen was über die Leitung geht - also deine 3 Test mit beiden Tools wiederholen und den Hexdump vergleichen (und display filter "tcp.port eq 1001")



> Nochdazu kommt, das ich beim Hercules <CR> senden muss



kann sein das dieses SQS-242-Comm Tool das <CR> automatisch sendet - Hercules macht nur was du sagst (so wie deine SPS)

btw: "does not support any notification for ethernet disconnection" ist zu 100% keine passende Antwort auf die Frage warum die Software kein Disconnect/Reconnect erlaubt, und die haben dann auch gesagt das
man die Software neu starten muss? - wie war denn deine Frage???
passiert das auch mit Ihrer  SQS-242-Comm Tool Software? (oder tricksen die vielleicht irgendwie)


----------



## bastimeister (18 November 2013)

Zu:


LowLevelMahn schrieb:


> btw: "does not support any notification for ethernet disconnection" ist zu 100% keine passende Antwort auf die Frage warum die Software kein Disconnect/Reconnect erlaubt, und die haben dann auch gesagt das
> man die Software neu starten muss? - wie war denn deine Frage???
> passiert das auch mit Ihrer  SQS-242-Comm Tool Software? (oder tricksen die vielleicht irgendwie)


Das War meine Frage an INFICON (diese wurde später übersetzt):
_*Es gibt noch ein anderes Problem, mit der SQS242-Software:*
è Es gibt laut Bedienungsanleitung der SQS242-Software die Möglichkeit sich mit dieser Software über die Ethernetschnittstelle via Port1001 mittels TCP/IP zu verbinden
è Diese Verbindung benötigen wir für den Datenaustausch zwischen dem PC (mit SQS242-Software) und SPS (an welche Elektronenstrahlverdampfer, Thermische-Verdampfer, Blenden etc. angeschlossen sind)
è Die SPS kann sich verbinden sobald die Software gestartet wird
è Reist jetzt aus irgendeinem Grund (Kabelbruch, Kabel gezogen etc. ) diese TCP-Verbindung ab und die Software wird nicht beendet, gibt diese keine Verbindung mehr frei und die SPS hat keine Chance sich wieder neu zu verbinden
o   Die einzige Chance, welche man hat, ist dann jedesmal mittels „Taskkill“ den Task/Prozess der SQS-Software zu beenden und neu zu starten…
o   Das ist doch keine saubere Sache, da stimmt doch auch irgentetwas mit der Software nicht, denn diese muss doch erkennen wenn die TCP_Verbindung unterbrochen ist, das sie dann diese irerseits abbaut und wieder freigibt….
_

Ich denke auch das dieses SQS-242-Comm-Tool dieses <CR> selbst generieren muss.
Natürlich funktionieren nicht beide Tools gleichzeitg, es kann sich nur eins auf Port 1001 verbinden. Deshalb siehst du in den Hercules-Screenshoots immer wieder "Connection closed" weil ich diese SQS-242 Software immer wieder neu starten musste um mal mit Hercules, mal mit SQS-242-Comm-Tool anfragen gesendet habe...
-> Einfach als Vergleich, was als Antwort kommt...


Hercules:   Anfrage: *@QR;88;00<CR>*   ->   Antwort: *@QR;;02;2F*
SQS242-Comm:    *@QR;88;00 *          ->   Antwort: *@QR;NAK;PRM;2F*

Das verstehe ich nicht was das soll, woher nimmt dieses SQS-242 das *02*=*PRM* ist??
Aber wie ich mit Hercules dann ein *ACK* (acknowledgement)oder ein *NAK* (no acknowledgement) auswerten soll, wenn ich gar keine Werte als Antwort bekomme (zwischen den Trennzeichen Semikolon ; ) das ist die gute frage

So Sieht übrigens WireShark "Capture filter= tcp" aus beim Hercules und dieser Anfrage (Query):



Und so siht das ganze mit diesem SQS-242-Comm Tool in WireShark Capture filter= tcp" aus:



Wo siehst du da jetzt den Unterschied???


----------



## LowLevelMahn (18 November 2013)

> Das War meine Frage an INFICON (diese wurde später übersetzt)



ich hoffe von einem technisch versierten - bisschen zu viel geschnatter für einen Supporter - besser kurz und knapp: 

i've found a bug with tcp/ip reconnect
steps to reproduce:
1. open SQS-242-Comm-Tool
2. connect over ethernet
3. disconnect
4. connect <- BUG: no reconnect possible without restarting SQS-242-Software itself

oder falls es keinen Connect(nur Send?) gibt

1. open SQS-242-Comm-Tool
2. send "@QR;88;00" over ethernet
3. close SQS-242-Comm-Tool
4. open SQS-242-Comm-Tool
5. send "@QR;88;00" over ethernet <- BUG: no reconnect possible without restarting SQS-242-Software itself




> Wo siehst du da jetzt den Unterschied???




leider sehe ich auf deinen Screenshots die unterschiedlichen Antworten nicht (nur die gleichen Anfragen)
und kopier doch bitte nur die Dumps/Texte aus den Tools raus - ich weiss wie die Tools aussehen 

Mach doch mal einen "cleanen" test (da die Software noch nicht mal einen disconnect versteht würde ich auch nicht hin/her wechseln - wer weiss was die dann so macht)

1. SQS-Software neu starten
2. 3x verschiedene Anfragen nur mit SQS-242 + Wireshark
3. SQS-Software neu starten
4. 3x (die gleichen wie oben) mit Hercules + Wireshark

und dann bitte nur die Daten (Data (xx Bytes)) als Text hier reinstellen


----------



## bastimeister (18 November 2013)

Hallo LowLevelMahn,

Okay die Texte hatte ich je zusätzlich zu den Screenshoots rauskopiert
Also hier mal die Sent Response + Wireshark:
*SQS242-Comm:*
1. Version abfragen:
Sent: @QU;11;0;00
*40:51:55:3b:31:31:3b:30:3b:30:30:0d*
 Response: @QU;ACK;3.2.9;01
*40:51:55:3b:06:3b:33:2e:32:2e:39:3b:30:31:0d*



2. Abfrage Relay registry number 22:
Sent: @QU;22;00
*40:51:52:3b:32:32:3b:30:30:0d*
 Response: @QR;ACK;0000;3E
*40:51:52:3b:06:3b:30:30:30:30:3b:33:45:0d*




3. Update Relay registry number 22:
Sent: @UR;22;0019;00
*40:55:52:3b:32:32:3b:30:30:31:39:3b:30:30:0d*
Response: @UR;ACK;06;3C
*40:55:52:3b:06:3b:30:36:3b:33:43:0d*



4. Start Process:
Sent: @UP;02;1;00
*40:55:50:3b:30:32:3b:30:30:31:39:3b:30:30:0d*
Response: @UP;ACK;03
*40:55:50:3b:06:3b:30:33:0d*



5. Abfrage Relay registry number 88 (gibt es nicht provokation NAK):
Sent: @QR;88;00
*40:55:50:3b:06:3b:30:33:0d*
Response: @QR;NAK;PRM;2F
*40:51:52:3b:15:3b:30:32:3b:32:46:0d*



Die gleichen Anfragen dann mit Hercules im nächsten Beitrag!


----------



## LowLevelMahn (18 November 2013)

Mich interessieren nur die Wireshark Hexdumps - was die Tools Ausgaben ist sehe ich ja da schon (unverfälscht)

!!!bitte keine Wireshark-Screenshots - man kann nichts vergleichen/kopiere usw. ohne Hirnzerstörung - mach dir die Arbeit los!
wir brauchen jeweils nur den letzten Punkt mit Data (12 Bytes), Data(15 Bytes) usw. einfach auf Data klicken und das kopieren, der Rest ist völlig unnötig

Beispiel zu deinem 1. Bild: 
	

		
			
		

		
	



wird zu:
request: 41 51 55 3b.... @Q....
response: 

usw.


----------



## bastimeister (18 November 2013)

*Hercules:*
1. Version abfragen:
Sent: @QU;11;0;00<CR>*
40:51:55:3b:31:31:3b:30:3b:30:30:0d
* Response: @QU;;3.2.9;01
*40:51:55:3b:06:3b:33:2e:32:2e:39:3b:30:31:0d*



2. Abfrage Relay registry number 22:
Sent: @QU;22;00<CR>
*40:51:55:3b:32:32:3b:30:30:0d*
 Response: @QU;;02;28
*40:51:55:3b:15:3b:30:32:3b:32:38:0d*



3. Update Relay registry number 22:
Sent: @UR;22;0019;00<CR>
*40:55:52:3b:32:32:3b:30:30:31:39:3b:30:30:0d*
Response: @UR;;06;3C
*40:55:52:3b:06:3b:30:36:3b:33:43:0d*



4. Start Process:
Sent: @UP;02;1;00<CR>
*40:55:50:3b:30:32:3b:31:3b:30:30:0d*
Response: @UP;;03
*40:55:50:3b:06:3b:30:33:0d*



5. Abfrage Relay registry number 88 (gibt es nicht provokation NAK):
Sent: @QR;88;00<CR>
*40:51:52:3b:38:38:3b:30:30:0d*
Response: @QR;;02;2F
*40:51:52:3b:15:3b:30:32:3b:32:46:0d*


----------



## LowLevelMahn (18 November 2013)

deine AC/NAKs sind nicht druckbare Zeichen (und das COM-Tool setzt die eben in Zeichenketten um) - sieht man doch realtiv gut oder?

40 51 55 3B 31 31 3B 30 3B 30 30 0D          "@QU;11;0;00."
40 51 55 3B 06 3B 33 2E 32 2E 39 3B 30 31 0D "@QU;.;3.2.9;01."

ACK = 0x06

40 51 52 3B 38 38 3B 30 30 0D        "@QR;88;00."
40 51 52 3B 15 3B 30 32 3B 32 46 0D  "@QR;.;02;2F."

NAK = 0x15

btw: ein feiner Hex-Editor ist http://mh-nexus.de/de/hxd/


----------



## LowLevelMahn (18 November 2013)

wenn du noch weitere Screenshots postest kommst du ins Internet-Gefängnis, deine Screenshots sind zu 90% mit sinnlosen Pixel gefüllt

STEHT BTW GENAU SO IN DER DOKU -> Query Acknowledged (ASCII 06)


----------



## bastimeister (18 November 2013)

Hallo LowLevelMahn,

Okay ich konnte nicht wissen was du möchtests, sorry, deshalb hier nochmal die etsprechenden Hexcodes....
Wie Internetknast ? Sorry wusste echt nicht wass du willst...

Hier nochmal Ohne Screenshoots Nur die Hex-Codes *BLAU=SQS242-Comm* und *ROT=Hercules*

1. Version abfragen:
Sent: @QU;11;0;00<CR>                        *40:51:55:3b:31:31:3b:30:3b:30:30:0d*
*40:51:55:3b:31:31:3b:30:3b:30:30:0d
* Response: @QU;;3.2.9;01
*40:51:55:3b:06:3b:33:2e:32:2e:39:3b:30:31:0d*
*40:51:55:3b:06:3b:33:2e:32:2e:39:3b:30:31:0d*

2. Abfrage Relay registry number 22:
Sent: @QU;22;00<CR>  
*40:51:52:3b:32:32:3b:30:30:0d*
*40:51:52:3b:32:32:3b:30:30:0d*
Response: @QR;ACK;0019;36
*40:51:52:3b:06:3b:30:30:31:39:3b:33:36:0d*
Response: @QR;;0000;3E*
40:51:52:3b:06:3b:30:30:30:30:3b:33:45:0d*

3. Update Relay registry number 22:
Sent: @UR;22;0019;00<CR>  
*40:55:52:3b:32:32:3b:30:30:31:39:3b:30:30:0d*
*40:55:52:3b:32:32:3b:30:30:31:39:3b:30:30:0d*
Response: @UR;ACK;06;3C
*40:55:52:3b:06:3b:30:36:3b:33:43:0d*
*40:55:52:3b:06:3b:30:36:3b:33:43:0d*


4. Start Process:
Sent: @UP;02;1;00<CR>  
*40:55:52:3b:32:32:3b:30:30:31:39:3b:30:30:0d*
*40:55:50:3b:30:32:3b:31:3b:30:30:0d*
Response: @UP;ACK;03
*40:55:52:3b:06:3b:30:36:3b:33:43:0d*
*40:55:50:3b:06:3b:30:33:0d*


5. Abfrage Relay registry number 88 (gibt es, nicht provokation NAK):
Sent: @QR;88;00<CR>  
*40:51:52:3b:38:38:3b:30:30:0d*
*40:51:52:3b:38:38:3b:30:30:0d*
Response: @QR;NAK;PRM;2F
*40:51:52:3b:15:3b:30:32:3b:32:46:0d*
Response: @QR;;02;2F*
40:51:52:3b:15:3b:30:32:3b:32:46:0d*

-> Was kannst du da jetzt draus entnehmen? 
Also ich denke nur, dass der Hercules *ACK=06hex* und *NAK=15hex* einfach nicht darstellt, warum kann der das nicht? Steht ja so in der ASCII-Tabelle, so wie du sagtest, genauso wie *CR*=*Dhex* Man kann also alles mit dem Hercules senden (+CR am ende) bekommt nur das ACK/NAK nicht angezeigt... Die Antworten passen ja auch fast...


----------



## LowLevelMahn (18 November 2013)

dir ist aufgefallen das meine letzten beiden Posts deine Fragen in gänze beantworten?

und noch zu meinen sonstigen (IGNORIERTEN Fragen)



> 1. open SQS-242-Comm-Tool
> 2. send "@QU;22;00" over ethernet
> 3. close SQS-242-Comm-Tool
> 4. open SQS-242-Comm-Tool
> 5. send "@QU;22;00" over ethernet <- BUG: no reconnect possible without restarting SQS-242-Software itself



ist das ein Minimal-Szenario um das Reconnet-Problem zu provozieren
wenn ja dann schick das dem Hersteller nochmal, dann sollte die Antwort nicht mehr so falsch(unverstanden) Ausfallen - Notify würde bedeuten das sie dir den Disconnect mitteilen können
aber der Fehler ist schwerwiegend und trivial zu beheben - also muss das an die Entwickler


----------



## bastimeister (18 November 2013)

Zu deine Fragen, welche ich ignoriert haben soll:


> i've found a bug with tcp/ip reconnect
> steps to reproduce:
> 1. open "SQS-242-Software" (on PC with SQM-242-Card)
> 2. Open "SQS-242-Comm" (on Remote-PC)
> ...



Natürlich habe ich das NICHT ignoriert schon versendet, bedenke aber bitte die Zeitverschiebung nach Amerika, die Antworten mir immer zwischen 20 und 21Uhr deutscher Zeit! So das ich am Tag 1x eine Antwort bekomme!!!

Übrigens "SQS-242-Software" und "SQS-242-Comm" sind zwei unterschiedliche "Schuhe" (Programme)!


----------



## LowLevelMahn (18 November 2013)

Meister der Fehlerszenarien-Reduktion

lässt sich der Fehler auch ohne Remote-PC provozieren (dann hätte auch ein noch kleineres Szenario gereicht)
so hört es sich an als würde das nur mit einem Remote-PC passieren, und das macht den Test wieder emotional "Aufwendiger" - aber mal abwarten



> Übrigens "SQS-242-Software" und "SQS-242-Comm" sind zwei unterschiedliche "Schuhe"



war klar


----------



## LowLevelMahn (18 November 2013)

ist hier was durcheinander gekommen? - die Ergebnisse sehen so anders aus

SQS242-Comm


2. Abfrage Relay registry number 22:
Sent: @QU;22;00
40:51:52:3b:32:32:3b:30:30:0d
Response: @QR;ACK;0000;3E
40:51:52:3b:06:3b:30:30:30:30:3b:33:45:0d


Hercules


2. Abfrage Relay registry number 22:
Sent: @QU;22;00<CR>
40:51:55:3b:32:32:3b:30:30:0d
Response: @QU;;02;28
40:51:55:3b:15:3b:30:32:3b:32:38:0d


----------



## bastimeister (18 November 2013)

Kann sein das da was durcheinader gekommen ist, deshalb hatte ich das nochmal zum besseren Vergleichen untereinander geschrieben: BLAU=SQS242-Comm ROT=Hercules

2. Abfrage Relay registry number 22:
Sent: @QU;22;00<CR>  
*40:51:52:3b:32:32:3b:30:30:0d*
*40:51:52:3b:32:32:3b:30:30:0d*
Response: @QR;ACK;0019;36
*40:51:52:3b:06:3b:30:30:31:39:3b:33:36:0d*
Response: @QR;;0000;3E*
40:51:52:3b:06:3b:30:30:30:30:3b:33:45:0d

*Diese Differenz hier wird daran liegen, das ich vorher bei SQS242-Comm warscheinlich dieses* @UR;22;0019;00* gesendet hatte!


----------



## LowLevelMahn (18 November 2013)

auf alle Fragen antworten

alte Frage 1: 





> lässt sich der Fehler auch ohne Remote-PC provozieren?


wenn ja warum steht dann Remote-PC in der Fehlerbeschreibung?

Frage 2: nach dem jetzt klar ist was ACK und NAK ist kannst du es implementieren - oder?


----------



## bastimeister (18 November 2013)

LowLevelMahn schrieb:


> auf alle Fragen antworten
> 
> alte Frage 1:
> wenn ja warum steht dann Remote-PC in der Fehlerbeschreibung?
> ...



Ich verstehe nicht worauf du hinaus willst?! Natürlich greife ich mit einem 2.PC (auf dem keine SQM-242-Karte eingebaut ist) auf die "SQS242-Software" per Ethernet über Port 1001 zu deshalb "Remote-PC". Warum sollte ich das jetzt anders (auf ein und dem selben Rechner) testen? Am ende muss die SPS doch auch "Remote" zugreifen... 
Naja und selbst wenn, dann können die das von INFICON schon selber testen... Mir bringt es nur nicht viel, auf ein und dem selben Rechner...
Warten wir mal ab was die von INFICON erstmal darauf antworten, können sich auch maln bissl Mühe geben...

Zu deiner Frage 2: Ich denke mal schon, muss mir die "Strings" halt zusammenbasteln...


----------



## LowLevelMahn (19 November 2013)

> Ich verstehe nicht worauf du hinaus willst?!



Ich wollte nur wissen ob das Fehlerszenario wirklich kleiner ist - ob du von lokal per Ethernet auf die Software oder Remote zugreifst ist vollkommen egal
da kann nur noch die Firewall ein Problem sein



> Naja und selbst wenn, dann können die das von INFICON schon selber testen...können sich auch maln bissl Mühe geben...



bisher war deren Mühe in dem Bereich ja auch minimal und je trivialer der Test umso größer die Chance das es wirklich zu einem Entwickler kommt und nicht vorher schon im Support zur Seite gelegt wird



> Zu deiner Frage 2: Ich denke mal schon, muss mir die "Strings" halt zusammenbasteln...



na dann viel Spass


----------



## bastimeister (19 November 2013)

Hallo LowLevelMahn,

Der gute Mann vom Support hat mir folgendes geantwortet:


> I have brought the issue you described (Shown in Blue) to the attention of our software group. They are looking into this matter now.



Also ich hab das gleiche auf "Ein und dem selben Rechner" getestet und es ist genau das gleiche Problem...
-> Wird die SQS242-Software nicht geschlossen, ist ein Wiederverbinden (reconnect) unmöglich...
Folgendes vereinfachtes Scenario habe ich Ihm nochmal geschickt:


> Important Information for SQS-Developers:
> i've found a bug with tcp/ip reconnect
> steps to reproduce:
> 1. open "SQS-242-Software" and open "SQS-242-Comm" (on one and the same PC with SQM-242-Card)
> ...



Zu deiner Aussage: 





> na dann viel Spass


 Hab ich mir ja selbst nicht ausgesucht, wollte nur wissen wie das geht. Im grunde genommen ist es genauso ein Sch... wie mit RS232... und die haben wir bei diesem Projekt auch noch:sm23:


----------



## LowLevelMahn (19 November 2013)

> Der gute Mann vom Support hat mir folgendes geantwortet:



so mögen wir das  - nett der Zusatz mit "_This is a fatal error, but trivial to fix - that must be passed on to the developers!"
_


> Hab ich mir ja selbst nicht ausgesucht, wollte nur wissen wie das geht. Im grunde genommen ist es genauso ein Sch... wie mit RS232... und die haben wir bei diesem Projekt auch noch



Wenn man mal alles gemacht hat wird es viel leichter - und immer daran denken TCP und RS232 sind streambasiert d.h. niemals auf davon ausgehen das Pakete vollständig kommen (ist nur Glück) ohne warten auf eine Länge oder Abschlusskennung (in deinem Fall 0x0D) ist das wie ein Glücksspiel

Oder besser: TCP/IP und RS232 sind per sehr nett - nur:



viele Programmierer mit Streamverarbeitung nicht klar kommen (die wollen dann zwangsweise alle Daten beim ersten Receive haben - oder ignorieren das es einfach falsch ist darauf zu bauen das es scheinbar geht)
gibt es viele Hersteller die Hirnschaden-Protokolle definieren (ASCII parsen ist OK aber Protokolle sollten dennoch irgendwie formalisiert sein)
viele Hersteller schlechte RS232/USB-Konverter bauen (warum gibts überhaupt noch Hersteller ausser FTDI?)
viele Programmierer die Dokus nicht lesen oder ohne Testtools ala Hercules/Wireshark etc. an TCP/Serial usw. rumprobieren
die Implementierung eines einfachen TCP/Serial Testservers (also ein Programm das zum Test das zu implementierende Protkoll spricht) für viele schon eine schier unüberwindbare Hürde darstellt


----------



## LowLevelMahn (12 Dezember 2013)

ist denn jetzt alles perfekt und fertig - haben die SQS-Entwickler noch ein Update gemacht?


----------

