S7ProSim V5.3 inkl. SP1 ActiveX Control

SIMATIC S7ProSim V5.3 inkl. SP1 ActiveX Control Benutzerhandbuch Ausgabe: 01/2005 A5E00425521-01 Copyright und Sicherheitsrichtlinien Dieses Han...
Author: Wolfgang Schmid
0 downloads 8 Views 301KB Size
SIMATIC

S7ProSim V5.3 inkl. SP1 ActiveX Control

Benutzerhandbuch

Ausgabe: 01/2005

A5E00425521-01

Copyright und Sicherheitsrichtlinien Dieses Handbuch enthält Hinweise, die Sie zu Ihrer persönlichen Sicherheit sowie zur Vermeidung von Sachschäden am Produkt und an den angeschlossenen Geräten beachten müssen.Diese Hinweise sind im Handbuch durch ein Warndreieck hervorgehoben und je nach Gefährdungsgrad folgendermaßen dargestellt: Gefahr bedeutet, dass Tod oder schwere Körperverletzung eintreten werden, wenn die entsprechenden Vorsichtsmaßnahmen nicht getroffen werden. Warnung bedeutet, dass Tod oder schwere Körperverletzung eintreten können, wenn die entsprechenden Vorsichtsmaßnahmen nicht getroffen werden. Vorsicht mit Warndreieck bedeutet, dass Körperverletzung eintreten kann, wenn die entsprechenden Vorsichtsmaßnahmen nicht getroffen werden. Vorsicht ohne Warndreieck bedeutet, dass Sachschaden eintreten kann, wenn die entsprechenden Vorsichtsmaßnahmen nicht getroffen werden. Achtung ohne Warndreieck bedeutet, dass ein unerwünschter Zustand eintreten kann, wenn die entsprechenden Vorsichtsmaßnahmen nicht getroffen werden.

Qualifiziertes Personal Inbetriebsetzung und Betrieb des Geräts/Systems dürfen nur zusammen mit diesem Handbuch vorgenommen werden. Nur qualifiziertes Personal darf diese Geräte installieren und bedienen. Qualifiziertes Personal sind Personen, die die Berechtigung haben, Geräte, Systeme und Stromkreise gemäß den Standards der Sicherheitstechnik in Betrieb zu nehmen, zu erden und zu kennzeichnen.

Bestimmungsgemäßer Gebrauch Beachten Sie folgendes: Warnung Dieses Gerät und seine Komponenten dürfen nur für die im Katalog und in der technischen Beschreibung vorgesehenen Einsatzfälle und nur in Verbindung mit von Siemens empfohlenen bzw. zugelassenen Fremdgeräten und -Komponenten verwendet werden. Der einwandfreie und sichere Betrieb des Produkts setzt sachgemäßen Transport, sachgemäße Lagerung, Aufstellung und Montage sowie sorgfältige Bedienung und Instandhaltung voraus.

Warenzeichen ®

®

Siemens und SIMATIC sind eingetragene Warenzeichen der SIEMENS AG. STEP 7™ und S7™ sind Warenzeichen der SIEMENS AG. Microsoft ®, Windows ®, Windows 95 ®, Windows 98 ®, Windows NT ®, Windows ME ® und Windows 2000 ® sind eingetragene Warenzeichen der Microsoft Corporation. ActiveX™ ist ein Warenzeichen der Microsoft Corporation. Copyright Siemens Energy & Automation, Inc. 2005 Alle Rechte vorbehalten. Weitergabe sowie Vervielfältigung dieser Unterlage, Verwertung und Mitteilung ihres Inhalts ist nicht gestattet, soweit nicht ausdrücklich zugestanden. Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte vorbehalten, insbesondere für den Fall der Patenterteilung oder GM-Eintragung.

Haftungsausschluss Wir haben den Inhalt der Druckschrift auf Übereinstimmung mit der beschriebenen Hard- und Software geprüft. Dennoch können Abweichungen nicht ausgeschlossen werden, so dass wir für die vollständige Übereinstimmung keine Gewähr übernehmen. Die Angaben in dieser Druckschrift werden regelmäßig überprüft, und notwendige Korrekturen sind in den nachfolgenden Auflagen enthalten. Für Verbesserungsvorschläge sind wir dankbar.

Siemens Energy & Automation, PCbA One Internet Plaza Johnson City, TN 37602-4991, USA

© Siemens Energy & Automation, Inc. 2005 Technische Daten bleiben vorbehalten.

Vorwort S7ProSim bietet programmatischen Zugriff auf die Schnittstelle zum simulierten Zielsystem in S7PLCSIM. Mit S7ProSim können Sie Software schreiben, mit der Sie Tätigkeiten wie das Umschalten des Schlüsselschalters des simulierten Zielsystems, die zyklusweise Ausführung des Steuerungsprogramms, das Lesen und Schreiben von Steuerungswerten und viele andere Arbeitsschritte ausführen können. Leserkreis Dieses Handbuch wendet sich an Entwickler, Programmierer und Wartungspersonal mit Kenntnissen und Erfahrung in den Bereichen speicherprogrammierbare S7-Steuerungen und Entwicklung von Software in Visual Basic (6.0 oder .NET) bzw. Visual C++ (6.0 oder .NET). Umfang des Handbuchs Dieses Dokument beschreibt die Funktionen und die Bedienung von S7ProSim V5.3 inkl. SP1. Weitere Handbücher Weitere Informationen finden Sie in der Online-Hilfe von STEP 7 und S7-PLCSIM sowie in den folgenden Handbüchern: •

Programmieren mit STEP 7, Handbuch. Dieses Handbuch liefert die grundlegenden Informationen zum Entwerfen und Programmieren von Steuerungsprogrammen. Arbeiten Sie mit diesem Handbuch, wenn Sie mit der Automatisierungssoftware STEP 7 ein Steuerungsprogramm entwerfen.



Systemsoftware für S7-300/400 System- und Standardfunktionen, Referenzhandbuch. In diesem Handbuch finden Sie Beschreibungen von Systemfunktionen, Organisationsbausteinen und Standardfunktionen, mit denen Sie beim Entwickeln eines Steuerungsprogramms arbeiten.



Erste Schritte und Übungen mit STEP 7, Getting Started. In diesem Handbuch wird beschrieben, wie Sie mit der Automatisierungssoftware STEP 7 arbeiten. Das Handbuch verschafft Ihnen einen Überblick über die Vorgehensweise beim Konfigurieren eines Zielsystems und beim Entwickeln von Steuerungsprogrammen.



S7-PLCSIM - Testen Ihres S7-CPU Programms. In diesem Handbuch werden Bedienoberfläche und Funktionsweise von S7-PLCSIM, dem S7-SPS-Simulator, beschrieben.

Diese und andere Handbücher finden Sie, wenn Sie auf dem Computer, auf dem STEP 7 installiert ist, im Windows-Startmenü den Menübefehl Start > Simatic > Dokumentation wählen.

Zusätzliche Unterstützung Falls Sie technische Fragen haben oder Informationen zum Bestellen dieses Produkts bzw. zu Schulungen benötigen, wenden Sie sich bitte an Ihre Siemens-Vertretung. Nord- und Südamerika Telefon: +1 (800) 333-7421 Fax: +1 (423) 262-2200 [email protected]

Europa und Afrika Telefon: +49 (0) 180 5050 222 Fax: +49 (0) 180 5050 223 [email protected]

Asien und Pazifik-Region Telefon: +86 10 64 75 75 75 Fax: +86 10 64 74 74 74 [email protected]

iii

Inhaltsverzeichnis Übersicht über S7ProSim.................................................................................... 1 Einfügen des S7ProSim Controls in eine Applikation in Visual Basic............................ 2 Zugreifen auf Eigenschaften des S7ProSim Controls in Visual Basic ........................... 3 Programmieren einer Schnittstelle zu S7-PLCSIM mit S7ProSim................................. 4

Methoden............................................................................................................... 5 AboutBox ....................................................................................................................... 6 BeginScanNotify ............................................................................................................ 7 Connect ......................................................................................................................... 8 Disconnect ..................................................................................................................... 9 EndScanNotify ............................................................................................................. 10 ExecuteNmsScan ........................................................................................................ 11 ExecuteNScans ........................................................................................................... 12 ExecuteSingleScan...................................................................................................... 13 ReadOutputImage ....................................................................................................... 14 ReadOutputPoint ......................................................................................................... 15 WriteInputImage .......................................................................................................... 16 WriteInputPoint ............................................................................................................ 17

Ereignisse ........................................................................................................... 19 ConnectionError........................................................................................................... 20 PLCSimStateChanged................................................................................................. 21 ScanFinished ............................................................................................................... 22

Eigenschaften..................................................................................................... 23 AutoConnect ................................................................................................................ 24 ControlEngine .............................................................................................................. 25 Enabled........................................................................................................................ 26 ScanMode.................................................................................................................... 27

Typedefinitionen................................................................................................. 29 ImageDataTypeConstants ........................................................................................... 30 PointDataTypeConstants............................................................................................. 31 ScanModeConstants ................................................................................................... 32

Fehlerausgabecodes.......................................................................................... 33 Beispielprojekt mit dem S7ProSim ActiveX Control ...................................... 35 Code des Beispielprojekts ........................................................................................... 36

v

Übersicht über S7ProSim S7ProSim bietet ein ActiveX™ Control für den programmatischen Zugriff auf die Oberfläche der Prozesssimulation in S7-PCLSIM. Sie können S7ProSim in jeder Anwendung einsetzen, die ActiveX Controls für den Anschluss an die S7-PLCSIM Prozesssimulation unterstützt. In diesem Online-Dokument wird beschrieben, wie Sie S7ProSim in eine Anwendung aufnehmen. Außerdem werden Leistungsmerkmale, Oberfläche und Funktionsweise von S7ProSim beschrieben und die Software-Objektdefinitionen von Methoden und Ereignissen erläutert. Das Beispielprojekt zeigt die Verwendung der S7ProSim Methoden und Ereignisse. Das folgende Bild zeigt das Ablaufdiagramm für die verschiedenen Methoden und Ereignisse im Beispielprojekt.

1

Übersicht über S7ProSim

Einfügen des S7ProSim Controls in eine Applikation in Visual Basic Das S7ProSim ActiveX Control kann in verschiedenen Fremdcontainern eingesetzt werden. Gehen Sie folgendermaßen vor, um das S7ProSim Control in ein Arbeitsblatt in Visual Basic einzufügen: 1. Mit dem Menübefehl Projekt -> Komponenten rufen Sie das Dialogfeld "Komponenten" auf. 2. Wählen Sie in der Liste der Controls die Option "Siemens S7ProSim Control". 3. Bestätigen Sie mit “OK”. Daraufhin wird das S7ProSim Control in der Toolbox links vom Arbeitsblatt in Visual Basic angezeigt. 4. Markieren Sie das S7ProSim Control in der Toolbox und fügen Sie es in das Arbeitsblatt ein. Jetzt können Sie in Ihrem Visual Basic Programm auf alle Eigenschaften, Methoden und Ereignisse des S7ProSim Controls zugreifen.

2

Übersicht über S7ProSim

Zugreifen auf Eigenschaften des S7ProSim Controls in Visual Basic Wenn Sie im Arbeitsblatt mit der rechten Maustaste auf das S7ProSim Control klicken und im Kontextmenü den Befehl Eigenschaften wählen, zeigt Visual Basic ein Dialogfeld mit den Eigenschaften an:

Im Eigenschaftsfenster können Sie die folgenden Eigenschaften des S7ProSim ActiveX Controls einstellen: •

Auto Connect: Die Eigenschaft AutoConnect legt fest, ob das Control mit S7-PLCSIM automatisch nach Anlauf verbunden wird oder ob es erst beim Wechsel des Betriebszustands von Design in Run verbunden wird.



Control Engine: Die Eigenschaft Control Engine (schreibgeschützt) definiert die Adresse der Control Engine, mit der das S7ProSim verbunden wird. Die Adresse ist S7-PLCSIM.



Enabled: Die Eigenschaft Enabled legt fest, ob das Control registriert ist oder nicht. (Die Ereignisse ScanFinished und PLCSIMStateChanged sind verfügbar.)



Scan Mode: Die Eigenschaft Scan Mode stellt die Programmbearbeitung in S7-PLCSIM ein. Möglich sind die Ausführungsarten Zyklusweise (Single Scan) und Automatisch (Continuous).

3

Übersicht über S7ProSim

Programmieren einer Schnittstelle zu S7-PLCSIM mit S7ProSim Damit Sie mit S7ProSim die in S7-PLCSIM simulierte Steuerung programmatisch bedienen können, gehen Sie folgendermaßen vor: •

Nehmen Sie das Siemens S7ProSim Control als Projektkomponente in das Projekt auf.



Programmieren Sie Ereignis-Handler für die S7ProSim Ereignisse (optional). In jeden EreignisHandler können Sie beliebigen Code für Ihre Anwendung einfügen. Beispiel: Visual Basic 6.0

Private Sub S7ProSim1_ScanFinished(ByVal ScanInfo As Variant) ... End Sub

Private Sub S7ProSim1_PLCSimStateChanged(ByVal NewState As String) ... End Sub

Private Sub S7ProSim1_ConnectionError(ByVal ControlEngine As String, ByVal error As Long) MsgBox "Verbindungsfehler" End Sub



4

Nehmen Sie in Ihre Anwendung Befehlsschaltflächen, Textfelder und andere Objekte auf, die für den Zugriff auf verschiedene S7ProSim Methoden erforderlich sind. Programmieren Sie den Code für jeden Befehlsschaltflächen-Handler, um S7ProSim Methoden aufzurufen und entsprechende Werte für Textfelder gemäß Ihrer Anwendung einzustellen.

Methoden AboutBox

Zeigt das Dialogfeld AboutBox an.

Connect

Registriert S7ProSim für Rückrufe von der Steuerung. Die Ereignisse ScanFinished und PLCSimStateChanged werden gesendet, wenn diese Ereignisse auftreten. Verbindet S7ProSim mit S7-PLCSIM.

Disconnect

Trennt die Verbindung zwischen S7ProSim und S7-PLCSIM.

EndScanNotify

Hebt die Registrierung von S7ProSim für Rückrufe von der Steuerung auf. Die Ereignisse ScanFinished und PLCSimStateChanged werden nicht gesendet. Zwingt S7-PLCSIM, für eine bestimmte Zeitdauer (Nms) Zyklen auszuführen, wobei nicht auf das Ende des aktuellen Zyklus gewartet wird. Ist die Zyklusbenachrichtigung aktiviert, wird dem Programm mitgeteilt, wenn S7-PLCSIM die Zyklen beendet hat. Zwingt S7-PLCSIM, eine bestimmte Anzahl Zyklen auszuführen, wobei nicht auf das Ende des aktuellen Zyklus gewartet wird. Ist die Zyklusbenachrichtigung aktiviert, wird dem Programm mitgeteilt, wenn S7-PLCSIM die Zyklen beendet hat. Zwingt S7-PLCSIM, einen Zyklus auszuführen, wobei nicht auf das Ende des aktuellen Zyklus gewartet wird. Ist die Zyklusbenachrichtigung aktiviert, wird dem Programm mitgeteilt, wenn S7-PLCSIM den Zyklus beendet hat. Liest Elemente aus dem Peripheriebereich der Ausgänge (Speicherbereich PA) von S7-PLCSIM. Liest ein bestimmtes Bit (Boolean), ein Byte (Byte), ein 2-ByteWort (Integer) oder ein 4-Byte-Wort (Long) aus dem Peripheriebereich der Ausgänge (Speicherbereich PA). Schreibt Elemente mit Beginn am StartIndex der Daten, auf die pData zeigt, in den Peripheriebereich der Eingänge (Speicherbereich PE) von S7-PLCSIM. Schreibt ein bestimmtes Bit (Boolean), ein Byte (Byte), ein 2Byte-Wort (Integer) oder ein 4-Byte-Wort (Long) aus der Variante Data in den Peripheriebereich der Eingänge (Speicherbereich PE).

BeginScanNotify

ExecuteNmsScan

ExecuteNScans

ExecuteSingleScan

ReadOutputImage ReadOutputPoint

WriteInputImage

WriteInputPoint

5

Methoden

AboutBox void AboutBox()

Verwendung in Visual Basic

6

Methoden

BeginScanNotify STDMETHOD(CS7ProSim::BeginScanNotify)()

Beschreibung Registriert S7ProSim für Rückrufe von der Steuerung. Die Ereignisse ScanFinished und PLCSimStateChanged werden gesendet, wenn diese Ereignisse auftreten.

Parameter Keine

Rückgabewert Wert S_OK E_FAIL PS_E_NOTCONNECTED PS_E_POWEROFF

Bedeutung 0x00000000 : Erfolgscode 0x80004005 : Nicht angegebener Fehler 0x80040211 : S7ProSim ist nicht mit S7-PLCSIM verbunden 0x80040212 : S7-PLCSIM ist ausgeschaltet

Verwendung in Visual Basic

7

Methoden

Connect STDMETHOD(CS7ProSim::Connect)()

Beschreibung Verbindet S7ProSim mit S7-PLCSIM.

Parameter Keine

Rückgabewert Wert S_OK E_FAIL PS_E_NOTCONNECTED PS_E_POWEROFF

Bedeutung 0x00000000 : Erfolgscode 0x80004005 : Nicht angegebener Fehler 0x80040211 : S7ProSim ist nicht mit S7-PLCSIM verbunden 0x80040212 : S7-PLCSIM ist ausgeschaltet

Verwendung in Visual Basic

8

Methoden

Disconnect STDMETHOD(CS7ProSim::Disconnect)()

Beschreibung Trennt die Verbindung zwischen S7ProSim und S7-PLCSIM.

Parameter Keine

Rückgabewert Wert S_OK E_FAIL PS_E_POWEROFF

Bedeutung 0x00000000 : Erfolgscode 0x80004005 : Nicht angegebener Fehler 0x80040212 : S7-PLCSIM ist ausgeschaltet

Verwendung in Visual Basic

9

Methoden

EndScanNotify STDMETHOD(CS7ProSim::EndScanNotify)()

Beschreibung Hebt die Registrierung von S7ProSim für Rückrufe von der Steuerung auf. Die Ereignisse ScanFinished und PLCSimStateChanged werden nicht gesendet.

Parameter Keine

Rückgabewert Wert S_OK E_FAIL PS_E_NOTCONNECTED PS_E_POWEROFF PS_E_NOTREGISTERED

Bedeutung 0x00000000 : Erfolgscode 0x80004005 : Nicht angegebener Fehler 0x80040211 : S7ProSim ist nicht mit S7-PLCSIM verbunden 0x80040212 : S7-PLCSIM ist ausgeschaltet 0x80040209 : S7ProSim ist nicht für Rückrufe von S7-PLCSIM registriert

Verwendung in Visual Basic

10

Methoden

ExecuteNmsScan STDMETHOD(CS7ProSim::ExecuteNmsScan)( long MsNumber)

Beschreibung Zwingt S7-PLCSIM, für eine bestimmte Zeitdauer (Nms) Zyklen auszuführen, wobei nicht auf das Ende des aktuellen Zyklus gewartet wird. Ist die Zyklusbenachrichtigung aktiviert, wird dem Programm mitgeteilt, wenn S7-PLCSIM die Zyklen beendet hat. S7-PLCSIM muss sich für diese Methode in der zyklusweisen Programmbearbeitung befinden.

Parameter MsNumber Zeitdauer (in Millisekunden), während der Zyklen ausgeführt werden sollen.

Rückgabewert Wert S_OK E_FAIL

Bedeutung 0x00000000 : Erfolgscode 0x80004005 : Nicht angegebener Fehler 0x8004020A : In S7-PLCSIM ist nicht die zyklusweise PS_E_NOTSINGLESCAN Programmbearbeitung eingestellt PS_E_PLCNOTRUNNING 0x8004020E : S7-PLCSIM läuft nicht PS_E_NOTCONNECTED 0x80040211 : S7ProSim ist nicht mit S7-PLCSIM verbunden

Verwendung in Visual Basic

11

Methoden

ExecuteNScans STDMETHOD(CS7ProSim::ExecuteNScans)( long NScanNumber)

Beschreibung Zwingt S7-PLCSIM, eine bestimmte Anzahl Zyklen auszuführen, wobei nicht auf das Ende des aktuellen Zyklus gewartet wird. Ist die Zyklusbenachrichtigung aktiviert, wird dem Programm mitgeteilt, wenn S7-PLCSIM die Zyklen beendet hat. S7-PLCSIM muss sich für diese Methode in der zyklusweisen Programmbearbeitung befinden.

Parameter NScanNumber Anzahl der Zyklen, die ausgeführt werden soll.

Rückgabewert Wert S_OK E_FAIL

Bedeutung 0x00000000 : Erfolgscode 0x80004005 : Nicht angegebener Fehler 0x8004020A : In S7-PLCSIM ist nicht die zyklusweise PS_E_NOTSINGLESCAN Programmbearbeitung eingestellt PS_E_PLCNOTRUNNING 0x8004020E : S7-PLCSIM läuft nicht PS_E_NOTCONNECTED 0x80040211 : S7ProSim ist nicht mit S7-PLCSIM verbunden

Verwendung in Visual Basic

12

Methoden

ExecuteSingleScan STDMETHOD(CS7ProSim::ExecuteSingleScan)()

Beschreibung Zwingt S7-PLCSIM, einen Zyklus auszuführen, wobei nicht auf das Ende des aktuellen Zyklus gewartet wird. Ist die Zyklusbenachrichtigung aktiviert, wird dem Programm mitgeteilt, wenn S7-PLCSIM den Zyklus beendet hat. S7-PLCSIM muss sich für diese Methode in der zyklusweisen Programmbearbeitung befinden.

Parameter Keine

Rückgabewert Wert S_OK E_FAIL PS_E_PLCNOTRUNNING

Bedeutung 0x00000000 : Erfolgscode 0x80004005 : Nicht angegebener Fehler 0x8004020E : S7-PLCSIM läuft nicht 0x8004020A : In S7-PLCSIM ist nicht die zyklusweise PS_E_NOTSINGLESCAN Programmbearbeitung eingestellt 0x8004020C : S7-PLCSIM konnte den angegebenen PS_E_MODENOTPOSSIBLE Bearbeitungsmodus nicht einstellen

Verwendung in Visual Basic

13

Methoden

ReadOutputImage STDMETHOD(CS7ProSim::ReadOutputImage)( long StartIndex, long ElementsToRead, ImageDataTypeConstants DataType, VARIANT* pData)

Beschreibung Liest Elemente aus dem Peripheriebereich der Ausgänge (Speicherbereich PA) von S7-PLCSIM.

Parameter StartIndex

Stellt die zu lesende Anfangsbyteposition im Peripheriebereich der Ausgänge dar. Gültige Werte für StartIndex richten sich nach der CPU.

Stellt die Anzahl der aus dem Abbild zu lesenden Bytes, Wörter oder ElementsToRead Doppelwörter dar. Gültige Werte für ElementsToRead richten sich nach der CPU.

DataType

Stellt den zu lesenden Datentyp dar. Der DataType muss eine der ImageDataTypeConstants sein.

pData

Pointer auf die Stelle für ausgegebene Elemente. Die gültigen Werte für Daten richten sich nach ElementsToRead. Sie müssen diesen Speicherbereich in Ihrer Anwendung zuordnen und leer machen.

Rückgabewert Wert S_OK E_FAIL PS_E_BADBYTENDX

Bedeutung 0x00000000 : Erfolgscode 0x80004005 : Nicht angegebener Fehler 0x80040201 : Byteindex ist ungültig 0x80040202 : Größe des Daten-Array ist für den angegebenen PS_E_BADBYTECOUNT Anfangs-Byteindex ungültig PS_E_READFAILED 0x80040203 : Leseoperation fehlgeschlagen PS_E_BADTYPE 0x80040206 : Ungültiger Datentyp PS_E_NOTALLREADSWORKED 0x8004020F : Nicht alle Leseoperationen waren erfolgreich PS_E_NOTCONNECTED 0x80040211 : S7ProSim ist nicht mit S7-PLCSIM verbunden PS_E_POWEROFF 0x80040212 : S7-PLCSIM ist ausgeschaltet

Verwendung in Visual Basic

14

Methoden

ReadOutputPoint STDMETHOD(CS7ProSim::ReadOutputPoint)( long ByteIndex, long BitIndex, PointDataTypeConstants DataType, VARIANT* pData)

Beschreibung Liest ein bestimmtes Bit (Boolean), ein Byte (Byte), ein 2-Byte-Wort (Integer) oder ein 4-Byte-Wort (Long) aus dem Peripheriebereich der Ausgänge (Speicherbereich PA).

Parameter ByteIndex

Stellt die zu lesende Anfangsbyteposition im Peripheriebereich dar. Gültige Werte für ByteIndex richten sich nach der CPU.

BitIndex

Stellt die zu lesende Bitposition (in Bytes) im Peripheriebereich dar. Gültig sind die Werte 0 bis 7.

DataType

Eine der PointDataTypeConstants

pData

Pointer auf die zu lesenden Daten. Die gültigen Werte für Data richten sich nach dem Datentyp.

Hinweise Wenn der DataType ein S7_Bit ist, dann müssen ByteIndex und BitIndex beide auf gültige Indizes gesetzt werden. Bei Erfolg gibt die Methode das angegebene Bit in pData aus, und der VariantDatentyp ist Boolean. Wenn der DataType ein S7_Byte, S7_Word oder S7_DoubleWord ist, dann muss ByteIndex auf einen gültigen Index gesetzt werden (BitIndex wird ignoriert). Bei Erfolg meldet die Methode den Wert in pData. Der Variant-Datentyp ist Byte, Integer oder Long, je nach DataType.

Rückgabewert Wert S_OK E_FAIL PS_E_BADBYTENDX

Bedeutung 0x00000000 : Erfolgscode 0x80004005 : Nicht angegebener Fehler 0x80040201 : Byteindex ist ungültig 0x80040202 : Größe des Daten-Array ist für den angegebenen AnfangsPS_E_BADBYTECOUNT Byteindex ungültig PS_E_READFAILED 0x80040203 : Leseoperation fehlgeschlagen PS_E_BADBITNDX 0x80040205 : Bitindex ist ungültig PS_E_BADTYPE 0x80040206 : Ungültiger Datentyp PS_E_NOTCONNECTED 0x80040211 : S7ProSim ist nicht mit S7-PLCSIM verbunden PS_E_POWEROFF 0x80040212 : S7-PLCSIM ist ausgeschaltet

Verwendung in Visual Basic

15

Methoden

WriteInputImage STDMETHOD(CS7ProSim::WriteInputImage)( long StartIndex, const VARIANT* pData)

Beschreibung Schreibt Elemente in den Peripheriebereich der Eingänge (Speicherbereich PE) von S7-PLCSIM, mit Beginn an StartIndex der Daten, auf die pData zeigt.

Parameter StartIndex

Stellt die zu schreibende Anfangsbyteposition im Peripheriebereich der Eingänge dar. Gültige Werte für StartIndex richten sich nach der CPU.

pData

Pointer auf die Daten, die S7-PLCSIM schreiben soll. Die gültigen Werte für die Daten richten sich nach der CPU. Sie müssen diesen Speicherbereich in Ihrer Anwendung zuordnen und leer machen.

Hinweise Die Art der Elemente, die geschrieben werden soll, wird durch die Art der Elemente in Data angegeben. Alle Elemente müssen vom gleichen Datentyp sein. Ein Byte-Array schreibt Bytes, ein Integer-Array schreibt Wörter und ein Long-Array schreibt Doppelwörter. Die geschriebenen Werte sind “roh” und werden von der Methode in keinster Weise ausgewertet bzw. umgewandelt. Die Anzahl der geschriebenen Elemente wird von der Größe des Array festgelegt, auf das Data zeigt.

Rückgabewert Wert S_OK E_FAIL PS_E_BADBYTENDX

Bedeutung 0x00000000 : Erfolgscode 0x80004005 : Nicht angegebener Fehler 0x80040201 : Byteindex ist ungültig 0x80040202 : Größe des Daten-Array ist für den angegebenen PS_E_BADBYTECOUNT Anfangs-Byteindex ungültig PS_E_WRITEFAILED 0x80040204 : Schreiboperation fehlgeschlagen PS_E_BADTYPE 0x80040206 : Ungültiger Datentyp PS_E_NOTALLWRITESWORKED 0x80040210 : Nicht alle Schreiboperationen waren erfolgreich PS_E_NOTCONNECTED 0x80040211 : S7ProSim ist nicht mit S7-PLCSIM verbunden PS_E_POWEROFF 0x80040212 : S7-PLCSIM ist ausgeschaltet

Verwendung in Visual Basic

16

Methoden

WriteInputPoint STDMETHOD(CS7ProSim::WriteInputPoint)( long ByteIndex, long BitIndex, const VARIANT* pData)

Beschreibung Schreibt ein bestimmtes Bit (Boolean), ein Byte (Byte), ein 2-Byte-Wort (Integer) oder ein 4-Byte-Wort (Long) aus der Variante Data in den Peripheriebereich der Eingänge (Speicherbereich PE).

Parameter ByteIndex

Stellt die zu schreibende Anfangsbyteposition im Peripheriebereich der Eingänge dar. Gültige Werte für ByteIndex richten sich nach der CPU.

BitIndex

Stellt die zu schreibende Bitposition (in Bytes) im Peripheriebereich dar. Gültig sind die Werte 0 bis 7.

pData

Pointer auf die zu schreibenden Daten. Die gültigen Werte für Data richten sich nach dem Datentyp.

Hinweise Wenn Boolean als Datentyp angegeben wird, dann müssen ByteIndex und BitIndex beide auf gültige Indizes gesetzt werden. Bei Erfolg schreibt die Methode das angegebene Bit in pData. Wird Byte, Integer oder Long als Datentyp angegeben, dann muss ByteIndex auf einen gültigen Index gesetzt werden (BitIndex wird ignoriert). Bei Erfolg schreibt die Methode die Elemente in pData.

Rückgabewert Wert S_OK E_FAIL PS_E_BADBYTENDX

Bedeutung 0x00000000 : Erfolgscode 0x80004005 : Nicht angegebener Fehler 0x80040201 : Byteindex ist ungültig 0x80040202 : Größe des Daten-Array ist für den angegebenen AnfangsPS_E_BADBYTECOUNT Byteindex ungültig PS_E_WRITEFAILED 0x80040204 : Schreiboperation fehlgeschlagen PS_E_BADBITNDX 0x80040205 : Bitindex ist ungültig PS_E_BADTYPE 0x80040206 : Ungültiger Datentyp PS_E_NOTCONNECTED 0x80040211 : S7ProSim ist nicht mit S7-PLCSIM verbunden PS_E_POWEROFF 0x80040212 : S7-PLCSIM ist ausgeschaltet

Verwendung in Visual Basic

17

Ereignisse ConnectionError

Wird erzeugt, wenn keine Verbindung zur Control Engine.

PLCSimStateChanged

Wird erzeugt, wenn ein neuer Schalterzustand des Zielsystems erkannt wird.

ScanFinished

Wird erzeugt, wenn ein einzelner Zyklus ausgeführt wurde.

19

Ereignisse

ConnectionError HRESULT ConnectionError(BSTR ControlEngine, long Error)

Beschreibung Wird erzeugt, wenn keine Verbindung zur Control Engine.

Verwendung in Visual Basic

20

Ereignisse

PLCSimStateChanged HRESULT PLCSimStateChanged(BSTR NewState)

Beschreibung Wird erzeugt, wenn ein neuer Schalterzustand des Zielsystems erkannt wird.

Verwendung in Visual Basic

21

Ereignisse

ScanFinished HRESULT ScanFinished(VARIANT ScanInfo)

Beschreibung Wird erzeugt, wenn ein einzelner Zyklus ausgeführt wurde.

Verwendung in Visual Basic

22

Eigenschaften AutoConnect

Legt fest, ob das Control mit S7-PLCSIM automatisch nach Anlauf verbunden wird oder ob es erst beim Wechsel des Betriebszustands von Design in Run verbunden wird.

ControlEngine

Definiert den Namen der Control Engine (schreibgeschützt), mit der das S7ProSim Control verbunden wird. Der Name ist "S7-PLCSIM".

Enabled

Schaltet ein/aus, ob das Control für Rückrufe der Ereignisse ScanFinished und PLCSimStateChanged registriert ist.

ScanMode

Setzt/meldet den aktuellen Bearbeitungsmodus der Control Engine.

23

Eigenschaften

AutoConnect boolean AutoConnect

Beschreibung Legt fest, ob das Control mit S7-PLCSIM automatisch nach Anlauf verbunden wird oder ob es erst beim Wechsel des Betriebszustands von Design in Run verbunden wird.

24

Eigenschaften

ControlEngine BSTR ControlEngine

Beschreibung Definiert den Namen der Control Engine (schreibgeschützt), mit der das S7ProSim Control verbunden wird. Der Name ist "S7-PLCSIM".

25

Eigenschaften

Enabled boolean Enabled

Beschreibung Schaltet ein/aus, ob das Control für Rückrufe der Ereignisse ScanFinished und PLCSimStateChanged registriert ist.

26

Eigenschaften

ScanMode ScanModeConstants ScanMode

Beschreibung Setzt/meldet den aktuellen Bearbeitungsmodus der Control Engine als SingleScan oder ContinuousScan.

27

Typedefinitionen ImageDataTypeConstants Konstanten für die Methode ReadOutputImage PointDataTypeConstants Konstanten für die Methode ReadOutputPoint ScanModeConstants

Konstanten für den Bearbeitungsmodus

29

Typedefinitionen

ImageDataTypeConstants enum { S7Byte = 2, S7Word = 3, S7DoubleWord = 4 }

Beschreibung Konstanten für die Methode ReadOutputImage

Elemente S7Byte S7DoubleWord S7Word

30

Typedefinitionen

PointDataTypeConstants enum { S7_Bit = 1, S7_Byte = 2, S7_Word = 3, S7_DoubleWord = 4 }

Beschreibung Konstanten für die Methode ReadOutputPoint

Elemente S7_Bit S7_Byte S7_DoubleWord S7_Word

31

Typedefinitionen

ScanModeConstants enum { SingleScan = 0, ContinuousScan = 1 }

Beschreibung Konstanten für den Bearbeitungsmodus

Elemente ContinuousScan SingleScan

32

Fehlerausgabecodes PS_E_BADBITNDX

0x80040205 : Bitindex ist ungültig

PS_E_BADBYTECOUNT

0x80040202 : Größe des Daten-Array ist für den angegebenen Anfangs-Byteindex ungültig

PS_E_BADBYTENDX

0x80040201 : Byteindex ist ungültig

PS_E_BADTYPE

0x80040206 : Ungültiger Datentyp

PS_E_INVALIDCALLBACK

0x80040207 : Ungültiger Rückruf

PS_E_INVALIDDISPATCH

0x80040208 : Ungültige Verteilung

PS_E_INVALIDINPUT

0x80040213 : Ungültiger Eingang

0x8004020B : Ungültiger Zyklustyp, muss eine der ScanModeConstants sein. 0x8004020C : S7-PLCSIM konnte den angegebenen PS_E_MODENOTPOSSIBLE Bearbeitungsmodus nicht einstellen 0x8004020F : Nicht alle Leseoperationen waren PS_E_NOTALLREADSWORKED erfolgreich 0x80040210 : Nicht alle Schreiboperationen waren PS_E_NOTALLWRITESWORKED erfolgreich 0x80040211 : S7ProSim ist nicht mit S7-PLCSIM PS_E_NOTCONNECTED verbunden 0x8004020D : S7ProSim ist bereits für die PS_E_NOTIFICATION_EXIST Benachrichtigung registriert 0x80040209 : S7ProSim ist nicht für Rückrufe von S7PS_E_NOTREGISTERED PLCSIM registriert 0x8004020A : In S7-PLCSIM ist nicht die zyklusweise PS_E_NOTSINGLESCAN Programmbearbeitung eingestellt PS_E_INVALIDSCANTYPE

PS_E_PLCNOTRUNNING

0x8004020E : S7-PLCSIM läuft nicht

PS_E_POWEROFF

0x80040212 : S7-PLCSIM ist ausgeschaltet

PS_E_READFAILED

0x80040203 : Leseoperation fehlgeschlagen

PS_E_WRITEFAILED

0x80040204 : Schreiboperation fehlgeschlagen

E_FAIL

0x80004005 : Nicht angegebener Fehler

E_INVALID_STATE

0x00008002 : Ungültiger Zustand

S_OK

0x00000000 : Erfolgscode

STG_E_CANTSAVE

0x80030103 : Speichern nicht möglich

33

Beispielprojekt mit dem S7ProSim ActiveX Control In diesem Visual Basic-Beispiel wird die Verwendung aller Eigenschaften, Methoden und Ereignisse des S7ProSim ActiveX Controls dargestellt. Den Code hinter jedem einzelnen BefehlsschaltflächenHandler finden Sie unter Beispielcode: Projekt mit S7ProSim ActiveX Control. Arbeitsblatt des Beispielprojekts

35

Beispielprojekt mit dem S7ProSim ActiveX Control

Code des Beispielprojekts Der folgende Code zeigt die Implementierung des Beispielprojekts: '======================================= 'DEKLARATIONSTEIL DES ARBEITSBLATTS '======================================= 'Variablen m¸ssen deklariert werden Option Explicit 'Voreingestellte Werte der Fehlercodes in S7ProSim '--------------------------------------Private Const S_OK = &H0 Private Const PS_E_FAIL = &H80004005 Private Const PS_E_INVBYTENDX = &H80040201 Private Const PS_E_INVBYTECOUNT = &H80040202 Private Const PS_E_READFAILED = &H80040203 Private Const PS_E_WRITEFAILED = &H80040204 Private Const PS_E_INVBITNDX = &H80040205 Private Const PS_E_INVTYPE = &H80040206 Private Const PS_E_NOTREGISTERED = &H80040209 Private Const PS_E_NOTSINGLESCAN = &H8004020A Private Const PS_E_MODENOTPOSSIBLE = &H8004020C Private Const PS_E_NOTIFICATION_EXIST = &H8004020D Private Const PS_E_PLCSIMNOTRUNNING = &H8004020E Private Const PS_S_ALLREADSNOTPOSSIBLE = &H8004020F Private Const PS_S_ALLWRITESNOTPOSSIBLE = &H80040210 Private Const PS_E_NOTCONNECTED = &H80040211 Private Const PS_E_POWEROFF = &H80040212 'Voreingestellte Fehlertexte '--------------------------------------Private Const MSG_OK = "&H0: Methode war erfolgreich" Private Const MSG_FAIL = "&H80004005: Unbekannter Fehler aufgetreten" Private Const MSG_INVBYTENDX = _ "&H80040201: Wert ByteIndex auflerhalb des Bereichs" Private Const MSG_INVBYTECOUNT = _ "&H80040202: ByteIndex + Grˆfle des Datenfelds auflerhalb des Bereichs oder BytesToRead auflerhalb des Bereichs" Private Const MSG_READFAILED = _ "&H80040203: S7-PLCSIM hat Leseanforderung abgewiesen" Private Const MSG_WRITEFAILED = _ "&H80040204: S7-PLCSIM hat Schreibanforderung abgewiesen" Private Const MSG_INVBITNDX = _ "&H80040205: Wert BitIndex auflerhalb des Bereichs" Private Const MSG_INVTYPE = "&H80040206: Ung¸ltiger Datentyp" Private Const MSG_NOTREGISTERED = _ "&H80040209: Die Applikation ist nicht registriert" Private Const MSG_NOTSINGLESCAN = _ "&H8004020A: Die zyklusweise Programmbearbeitung ist in S7-PLCSIM nicht eingestellt" Private Const MSG_NOTIFICATION_EXIST = _ "&H8004020D: Anwendung ist bereits registriert" Private Const MSG_PLCSIMNOTRUNNING = _ "&H8004020E: S7-PLCSIM ist nicht im Betriebszustand RUN oder RUN-P" Private Const MSG_ALLREADSNOTPOSSIBLE = _ "&H8004020F: Nur die konfigurierten Ausg‰nge konnten erfolgreich gelesen werden" Private Const MSG_ALLWRITESNOTPOSSIBLE = _ "&H80040210: Nur die konfigurierten Ausg‰nge konnten erfolgreich gelesen werden" Private Const MSG_NOTCONNECTED = _ "&H80040211: Das S7ProSim Control ist nicht mit S7-PLCSIM verbunden" Private Const MSG_POWEROFF = _ "&H80040212: S7-PLCSIM ist ausgeschaltet" '======================================= 'CODE F‹R DIE SCHALTFLƒCHEN '=======================================

36

Beispielprojekt mit dem S7ProSim ActiveX Control 'cmdAutoConnectTrueStart '--------------------------------------Private Sub cmdAutoConnectTrueStart_Click() S7ProSim1.AutoConnect = True End Sub 'cmdAutoConnectTrueEnd '--------------------------------------Private Sub cmdAutoConnectTrueEnd_Click() S7ProSim1.AutoConnect = True End Sub 'cmdCalculateValuesOfProcessSimulation '--------------------------------------Private Sub cmdCalculateValuesOfProcessSimulation_Click() '***** Vom Anwender zu bearbeiten ***** '***** In dieser Funktion m¸ssen Sie den Code f¸r ***** '***** die Prozeflsimulation implementieren. Hierzu berechnen Sie ***** '***** mit den Werten der Ausg‰nge von S7-PLCSIM ***** '***** die neuen Werte f¸r die Eing‰nge von ***** '***** S7-PLCSIM. ***** End Sub 'cmdConnect '--------------------------------------Private Sub cmdConnect_Click() Dim errConnect As Long errConnect = S7ProSim1.Connect If errConnect = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim-Beispiel" Else ShowError errConnect End If End Sub 'cmdDisconnect '--------------------------------------Private Sub cmdDisconnect_Click() Dim errDisconnect As Long errDisconnect = S7ProSim1.Disconnect If errDisconnect = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim-Beispiel" Else ShowError errDisconnect End If End Sub 'cmdEnableTrue '--------------------------------------Private Sub cmdEnableTrue_Click() S7ProSim1.Enabled = True End Sub 'cmdEnableFalse '--------------------------------------Private Sub cmdEnableFalse_Click() S7ProSim1.Enabled = False End Sub 'cmdScanModeSingle '--------------------------------------Private Sub cmdScanModeSingle_Click() S7ProSim1.ScanMode = SingleScan End Sub 'cmdScanModeCont '--------------------------------------Private Sub cmdScanModeCont_Click()

37

Beispielprojekt mit dem S7ProSim ActiveX Control S7ProSim1.ScanMode = ContinuousScan End Sub 'cmdExecuteSingleScan '--------------------------------------Private Sub cmdExecuteSingleScan_Click() Dim errExecuteSingleScan As Long errExecuteSingleScan = S7ProSim1.ExecuteSingleScan If errExecuteSingleScan = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim-Beispiel" Else ShowError errExecuteSingleScan End If End Sub 'cmdReadOutputImage '--------------------------------------Private Sub cmdReadOutputImage_Click() 'Long Dim errReadOutputImage As Long Dim lStartIndex As Long Dim lElementsToRead As Long 'ImageDataTypeConstants Dim DataType As ImageDataTypeConstants 'Variant Dim vData As Variant '***** 2 Bytes an Anfangsadresse A8.0 lesen ***** DataType = S7Byte 'Datentyp Byte lesen lStartIndex = 8 'Beginn an Adresse A8.0 lElementsToRead = 2 '2 Elemente (Bytes) lesen errReadOutputImage = S7ProSim1.ReadOuputImage(lStartIndex, _ lElementsToRead, DataType, vData) If errReadOutputImage = S_OK Then MsgBox "Wert von AB 8 ist: " & CByte(vData(0)) & vbCrLf & _ "Wert von AB 9 ist: " & CByte(vData(1)), _ vbInformation, "S7ProSim-Beispiel" Else ShowError errReadOutputImage End If '***** 2 Wˆrter an Anfangsadresse A10.0 lesen ***** DataType = S7Word 'Datentyp Wort lesen lStartIndex = 10 'Beginn an Adresse A10.0 lElementsToRead = 2 '2 Elemente (Wˆrter) lesen errReadOutputImage = S7ProSim1.ReadOuputImage(lStartIndex, _ lElementsToRead, DataType, vData) If errReadOutputImage = S_OK Then MsgBox "Wert von AW10 ist: " & CInt(vData(0)) & vbCrLf & _ "Wert von AW12 ist: " & CInt(vData(1)), _ vbInformation, "S7ProSim-Beispiel" Else ShowError errReadOutputImage End If '***** 2 Doppelwˆrter an Anfangsadresse A14.0 lesen ***** DataType = S7DoubleWord 'Datentyp Doppelwort lesen lStartIndex = 14 'Beginn an Adresse A14.0 lElementsToRead = 2 '2 Elemente (Doppelwˆrter) lesen errReadOutputImage = S7ProSim1.ReadOuputImage(lStartIndex, _ lElementsToRead, DataType, vData) If errReadOutputImage = S_OK Then MsgBox "Wert von AD14 ist: " & CLng(vData(0)) & vbCrLf & _ "Wert von AD18 ist: " & CLng(vData(1)), _ vbInformation, "S7ProSim-Beispiel" Else

38

Beispielprojekt mit dem S7ProSim ActiveX Control ShowError errReadOutputImage End If '***** Nach diesem Abschnitt kˆnnen die Berechnungen f¸r die ***** '***** Prozeflsimulation durchgef¸hrt werden, wenn der R¸ckgabewert ***** '***** S_OK ist. ***** End Sub 'cmdReadOutputPoint '--------------------------------------Private Sub cmdReadOutputPoint_Click() 'Long Dim errReadOutputPoint As Long Dim lByteIndex As Long Dim lBitIndex As Long 'PointDataTypeConstants Dim DataType As PointDataTypeConstants 'Variant Dim vData As Variant '***** Bit an Adresse A0.5 lesen ***** lByteIndex = 0 'Beginn an Adresse 0.0 lBitIndex = 5 'Spezifisches Bit 5 (von Byte 0) lesen DataType = S7_Bit 'Datentyp Bit lesen errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _ lBitIndex, DataType, vData) If errReadOutputPoint = S_OK Then MsgBox "Der aktuelle Wert von A0.5 ist: " & CInt(vData), _ vbInformation, "S7ProSim-Beispiel" Else ShowError errReadOutputPoint End If '***** Byte an Adresse A1.0 lesen ***** lByteIndex = 1 'Beginn an Adresse 1.0 DataType = S7_Byte 'Datentyp Byte lesen errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _ lBitIndex, DataType, vData) If errReadOutputPoint = S_OK Then MsgBox "Der aktuelle Wert von AB1 ist: " & CByte(vData), _ vbInformation, "S7ProSim-Beispiel" Else ShowError errReadOutputPoint End If '***** Wort an Adresse A2.0 lesen ***** lByteIndex = 2 'Beginn an Adresse 2.0 DataType = S7_Word 'Datentyp Wort lesen errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _ lBitIndex, DataType, vData) If errReadOutputPoint = S_OK Then MsgBox "Der aktuelle Wert von AW2 ist: " & CInt(vData), _ vbInformation, "S7ProSim-Beispiel" Else ShowError errReadOutputPoint End If '***** Doppelwort an Adresse A4.0 lesen ***** lByteIndex = 4 'Beginn an Adresse 4.0 DataType = S7_DoubleWord 'Datentyp Doppelwort lesen errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _ lBitIndex, DataType, vData) If errReadOutputPoint = S_OK Then MsgBox "Der aktuelle Wert von AD4 ist: " & CLng(vData), _ vbInformation, "S7ProSim-Beispiel" Else

39

Beispielprojekt mit dem S7ProSim ActiveX Control ShowError errReadOutputPoint End If '***** Nach diesem Abschnitt kˆnnen die Berechnungen f¸r die ***** '***** Prozeflsimulation durchgef¸hrt werden, wenn der R¸ckgabewert ***** '***** S_OK ist. ***** End Sub 'cmdWriteInputImage '--------------------------------------Private Sub cmdWriteInputImage_Click() 'Byte Dim cByteArray(0 To 1) As Byte 'Integer Dim iWordArray(0 To 1) As Integer 'Long Dim errWriteInputImage As Long Dim lDoubleWordArray(0 To 1) As Long Dim lStartIndex As Long 'Variant Dim vData As Variant '***** 2 Bytes schreiben und an Adresse E8.0 beginnen ***** cByteArray(0) = 8 '8 in erstes Element (Byte) schreiben cByteArray(1) = 9 '9 in zweites Element (Byte) schreiben lStartIndex = 8 'Beginn an Adresse E8.0 vData = cByteArray errWriteInputImage = S7ProSim1.WriteInputImage(lStartIndex, _ vData) '***** Nach diesem Abschnitt kˆnnen die Berechnungen f¸r die ***** '***** Prozeflsimulation durchgef¸hrt werden, wenn der R¸ckgabewert ***** '***** S_OK ist. ***** If errWriteInputImage = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim-Beispiel" Else ShowError errWriteInputImage End If '***** 2 Wˆrter schreiben und an Adresse E10.0 beginnen ***** iWordArray(0) = 10 '10 in erstes Element (Wort) schreiben iWordArray(1) = 12 '12 in zweites Element (Wort) schreiben lStartIndex = 10 'Beginn an Adresse E10.0 vData = iWordArray errWriteInputImage = S7ProSim1.WriteInputImage(lStartIndex, _ vData) If errWriteInputImage = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim-Beispiel" Else ShowError errWriteInputImage End If '***** 2 Doppelwˆrter schreiben und an Adresse E14.0 beginnen ***** iDoubleWordArray(0) = 14 '14 in erstes Element (Doppelwort) schreiben iDoubleWordArray(1) = 18 '18 in zweites Elemente (Doppelwort) schreiben lStartIndex = 14 'Beginn an Adresse E14.0 vData = lDoubleWordArray errWriteInputImage = S7ProSim1.WriteInputImage(lStartIndex, _ vData) If errWriteInputImage = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim-Beispiel" Else ShowError errWriteInputImage End If End Sub 'cmdWriteInputPoint '--------------------------------------Private Sub cmdWriteInputPoint_Click()

40

Beispielprojekt mit dem S7ProSim ActiveX Control 'Boolean Dim bBoolIn As Boolean 'Byte Dim cByteIn As Byte 'Integer Dim iWordIn As Integer 'Long Dim errWriteInputPoint As Long Dim lBitIndex As Long Dim lByteIndex As Long Dim lDoubleWordIn As Long 'Variant Dim vData As Variant '***** 1 Bit in Adresse E0.5 schreiben ***** bBoolIn = 1 'Wert 1 schreiben lByteIndex = 0 'Beginn an Adresse 0.0 lBitIndex = 5 'Spezifisches Bit 5 (von Byte 0) schreiben vData = bBoolIn errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _ lBitIndex, vData) '***** Nach diesem Abschnitt kˆnnen die Berechnungen f¸r die ***** '***** Prozeflsimulation durchgef¸hrt werden, wenn der R¸ckgabewert ***** '***** S_OK ist. ***** If errWriteInputPoint = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim-Beispiel" Else ShowError errWriteInputPoint End If '***** 1 Byte in Adresse E1.0 schreiben ***** cByteIn = 1 'Wert 1 schreiben lByteIndex = 1 'Beginn an Adresse 1.0 vData = cByteIn errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _ lBitIndex, vData) If errWriteInputPoint = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim-Beispiel" Else ShowError errWriteInputPoint End If '***** 1 Wort in Adresse E2.0 schreiben ***** iWordIn = 2 'Wert 2 schreiben lByteIndex = 2 'Beginn an Adresse 2.0 vData = iWordIn errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _ lBitIndex, vData) If errWriteInputPoint = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim-Beispiel" Else ShowError errWriteInputPoint End If '***** 1 Doppelwort in Adresse E4.0 schreiben ***** lDoubleWordIn = 4 'Wert 4 schreiben lByteIndex = 4 'Beginn an Adresse 4.0 vData = lDoubleWordIn errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _ lBitIndex, vData) If errWriteInputPoint = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim-Beispiel" Else ShowError errWriteInputPoint End If End Sub

41

Beispielprojekt mit dem S7ProSim ActiveX Control '======================================= 'EREIGNISIMPLEMENTIERUNG F‹R DAS CONTROL '======================================= 'ConnectionError '--------------------------------------Private Sub S7ProSim1_ConnectionError(ByVal ControlEngine As String, _ ByVal Error As Long) Dim errMessage As String errMessage = "Verbindung kann nicht hergestellt werden zu " & ControlEngine & vbCrLf errMessage = errMessage & vbCrLf & _ "Starten " & ControlEngine & vbCrLf errMessage = errMessage & "und ¸ber Methode Connect verbinden" MsgBox errMessage, vbExclamation, "Verbindungsfehler" End Sub 'PLCStateChanged '--------------------------------------Private Sub S7ProSim1_PLCSIMStateChanged(ByVal NewState As String) Dim cMessage As String cMessage = "PLCSIM hat den Betriebszustand gewechselt in " & NewState MsgBox cMessage, vbInformation, "S7ProSim-Beispiel" End Sub 'ScanFinished '--------------------------------------Private Sub S7ProSim1_ScanFinished(ByVal ScanInfo As Variant) Dim cMessage As String Dim vArrayInfo As Variant '***** Vor diesem Teil des Code m¸ssen die Berechnungen ***** '***** f¸r die Prozeflsimulation beendet sein. ***** vArrayInfo = ScanInfo cMessage = "Der letzte Zyklus dauerte " & vArrayInfo(0) & vbCrLf cMessage = cMessage & _ "Mindestzykluszeit " & vArrayInfo(1) & vbCrLf cMessage = cMessage & _ "L‰ngste Ausf¸hrungszeit war " & vArrayInfo(2) & vbCrLf cMessage = cMessage & _ "Mittlere Zykluszeit ist " & vArrayInfo(3) MsgBox cMessage, vbInformation, "S7ProSim-Beispiel" End Sub Private Sub cmdBeginScanNotify_Click() S7ProSim1.BeginScanNotify End Sub Private Sub cmdEndScanNotify_Click() S7ProSim1.EndScanNotify End Sub Private Sub cmdExecuteNmsScan_Click() Dim ReturnValue As Long ReturnValue = S7ProSim1.ExecuteNmsScan(Int(txtScanNumber.Text)) If ReturnValue 0 Then MsgBox "Fehlgeschlagen!", vbOKOnly End If End Sub Private Sub cmdExecuteNScan_Click() Dim ReturnValue As Long ReturnValue = S7ProSim1.ExecuteNScans(Int(txtScanNumber.Text)) If ReturnValue 0 Then MsgBox "Fehlgeschlagen!", vbOKOnly End If End Sub Private Sub Form_Unload(cancel As Integer) Dim errDisconnect As Long errDisconnect = S7ProSim1.Disconnect If errDisconnect = S_OK Then MsgBox MSG_OK, vbInformation, "S7ProSim-Beispiel" Else ShowError errDisconnect

42

Beispielprojekt mit dem S7ProSim ActiveX Control End If End Sub '======================================= 'Private Subs '======================================= 'ShowError '--------------------------------------Private Sub ShowError(ErrorNumber) Select Case ErrorNumber Case PS_E_FAIL MsgBox MSG_FAIL, vbExclamation, "S7ProSim-Beispiel" Case PS_E_INVBYTENDX MsgBox MSG_INVBYTENDX, vbExclamation, "S7ProSim-Beispiel" Case PS_E_INVBYTECOUNT MsgBox MSG_INVBYTECOUNT, vbExclamation, "S7ProSim-Beispiel" Case PS_E_READFAILED MsgBox MSG_READFAILED, vbExclamation, "S7ProSim-Beispiel" Case PS_E_WRITEFAILED MsgBox MSG_WRITEFAILED, vbExclamation, "S7ProSim-Beispiel" Case PS_E_INVBITNDX MsgBox MSG_INVBITNDX, vbExclamation, "S7ProSim-Beispiel" Case PS_E_INVTYPE MsgBox MSG_INVTYPE, vbExclamation, "S7ProSim-Beispiel" Case PS_E_NOTREGISTERED MsgBox MSG_NOTREGISTERED, vbExclamation, "S7ProSim-Beispiel" Case PS_E_NOTSINGLESCAN MsgBox MSG_NOTSINGLESCAN, vbExclamation, "S7ProSim-Beispiel" Case PS_E_NOTIFICATION_EXIST MsgBox MSG_NOTIFICATION_EXIST, vbExclamation, _ "S7ProSim-Beispiel" Case PS_E_PLCSIMNOTRUNNING MsgBox MSG_PLCSIMNOTRUNNING, vbExclamation, _ "S7ProSim-Beispiel" Case PS_S_ALLREADSNOTPOSSIBLE MsgBox MSG_ALLREADSNOTPOSSIBLE, vbExclamation, _ "S7ProSim-Beispiel" Case PS_S_ALLWRITESNOTPOSSIBLE MsgBox MSG_ALLWRITESNOTPOSSIBLE, vbExclamation, _ "S7ProSim-Beispiel" Case PS_E_NOTCONNECTED MsgBox MSG_NOTCONNECTED, vbExclamation, "S7ProSim-Beispiel" Case PS_E_POWEROFF MsgBox MSG_POWEROFF, vbExclamation, "S7ProSim-Beispiel" Case Else MsgBox "Systemfehler aufgetreten: &H" & Hex(ErrorNumber), _ vbExclamation, "S7ProSim-Beispiel" End Select End Sub

43

Stichwortverzeichnis A

ImageDataTypeConstants, 30

AboutBox, 6

PointDataTypeConstants, 31

Aufnehmen von S7ProSim in eine VBApplikation, 2

ScanModeConstants, 32 Ereignis-Handler, 4

AutoConnect, 3, 24

Ereignisse

Aufzählungstypen, 29

ConnectionError, 20

Automatische Programmbearbeitung

PLCSimStateChanged, 21

ScanMode, 27 ScanModeConstants, 32

B Bearbeitungsmodus

ScanFinished, 22 ExecuteNmsScan, 11 ExecuteNScans, 12 ExecuteSingleScan, 13

Einstellung, 27 Holen, 27

F Fehlerausgabecodes, 33

BeginScanNotify, 7 Beispielprojekt, 35

I ImageDataTypeConstants, 30

Code, 36

C Code, Beispielprojekt, 36 Connect, 8 ConnectionError, 20

K Konstanten, 29 ImageDataTypeConstants, 30 PointDataTypeConstants, 31 ScanModeConstants, 32

ControlEngine, 3, 25

D Definierte Konstanten, 29 ImageDataTypeConstants, 30 PointDataTypeConstants, 31 ScanModeConstants, 32 Disconnect, 9

E Eigenschaften, 3 AutoConnect, 24 ControlEngine, 25 Enabled, 26 ScanMode, 27 Einfügen von S7ProSim in VB-Applikation, 2 Einführung, 1 Enabled, 3, 26 EndScanNotify, 10 Enumerated types, 29

L Lesen Ausgang, 15 Ausgangsabbild, 14

M Methoden, 5 AboutBox, 6 BeginScanNotify, 7 Connect, 8 Disconnect, 9 EndScanNotify, 10 ExecuteNmsScan, 11 ExecuteNScans, 12 ExecuteSingleScan, 13 ReadOutputImage, 14 ReadOutputPoint, 15 WriteInputImage, 16 WriteInputPoint, 17

Stichwortverzeichnis-1

Stichwortverzeichnis

N Name der Control Engine, 25

P PLCSimStateChanged, 21 PointDataTypeConstants, 31 Programmbearbeitungsmethoden ExecuteNmsScan, 11 ExecuteNScans, 12 ExecuteSingleScan, 13 Programmieren einer S7ProSim Schnittstelle zu S7-PLCSIM, 4 Projektkomponenten, VB, 2

R ReadOutputImage, 14 ReadOutputPoint, 15 Rückgabewerte, 33

S S7ProSim Aufnehmen in VB-Projekt, 2

Schreiben Eingang, 17 Eingangsabbild, 16 Siemens S7ProSim Control, Aufnehmen in VBProjekt, 2

T Typdefinitionen, 29 ImageDataTypeConstants, 30 PointDataTypeConstants, 31 ScanModeConstants, 32

U Übersicht, 1

V Visual Basic Projekt, Aufnehmen von S7ProSim, 2

W WriteInputImage, 16 WriteInputPoint, 17

Z

Eigenschaften, 3

Zyklusbenachrichtigung, 7, 10, 26

Schnittstelle zu S7-PLCSIM, Programmieren, 4

Zyklusweise Programmbearbeitung

Übersicht, 1

ExecuteNmsScan, 11 ExecuteNScans, 12

ScanFinished, 22

ExecuteSingleScan, 13

ScanMode, 3, 27

ScanMode, 27

ScanModeConstants, 32

ScanModeConstants, 32

Stichwortverzeichnis-2

Fragebogen Ihre Anmerkungen und Vorschläge helfen uns, die Qualität und Benutzbarkeit unserer Dokumentation zu verbessern. Bitte füllen Sie diesen Fragebogen bei der nächsten Gelegenheit aus und senden Sie ihn an Siemens zurück. Geben Sie bitte bei den folgenden Fragen Ihre persönliche Bewertung mit Werten von 1 (sehr gut) bis 5 (schlecht) an. Entspricht der Inhalt Ihren Anforderungen? Sind die benötigten Informationen leicht zu finden? Sind die Texte leicht verständlich? Entspricht der Grad der technischen Einzelheiten Ihren Anforderungen? Wie bewerten Sie die Qualität der Abbildungen und Tabellen?

Weitere Kommentare: _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________ _____________________________________________________

Bitte kreuzen Sie Ihren zutreffenden Industriezweig an: Automobilindustrie Chemische Industrie Elektroindustrie Nahrungsmittel Leittechnik Maschinenbau Petrochemie Pharmazeutische Industrie Kunststoffverarbeitung Papierindustrie Textilindustrie Transportwesen Andere ___________________________

Senden Sie Ihre Antwort an: Siemens Energy & Automation, Inc. ATTN: Technical Communications One Internet Plaza Johnson City TN USA 37604

Bitte machen Sie folgende Angaben: Absender Name: __________________________________________________________ Funktion: ________________________________________________________ Firma: __________________________________________________________ Straße: _________________________________________________________ Ort: ____________________________________________________________ Land: ___________________________________________________________ Telefon:__________________________________________________________