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

bastimeister

Level-1
Beiträge
156
Reaktionspunkte
16
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Forumgemeinde,

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

Folgenden Aufbau haben wir:
  1. Ich habe hier einen PC mit WinCC-flexibel 2008 SP3 RT und eine S7-SPS (IM151-8F PN/DP CPU) .
  2. 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:


  1. Hat schon mal jemand (Windows)-DLLs in WinCC-flexibel eingebunden, geht das überhaupt?
  2. Kann man dazu VisualBasic-Beispieldateien verwenden, WinCC-Flexibel kann doch VBS?!
  3. Ü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...
  4. 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
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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 ???
 
Zuletzt bearbeitet:
Du kannst grundsätzlich jedes ActiveX in Flex integrieren - sie funktionieren dann nur nicht alle ... :rolleyes:

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 ... :cool:

Gruß
Larry
 
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?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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:
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.
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
Dann kannst du dir die Daten von der Software über die SPS direkt abholen, und die Daten über WinCCflexible zur Anzeige bringen.

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...
 
Zuletzt bearbeitet:
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
 
Zuletzt bearbeitet:
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!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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
 
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.
 
Zurück
Oben