Sie sind auf Seite 1von 9

SAPI-S7 .

NET Schnittstelle fr Siemens SIMATIC NET Anleitung

Version 1.0

SoftwareOption GmbH Waldstrasse 30 52080 Aachen Deutschland

Tel. +49 (0)2405 4716730 Fax +49 (0)2405 4716729 InfoMail@SoftwareOption.de www.SoftwareOption.de

Allgemeinen Geschftsbedingungen (AGB) Bitte beachten Sie: Die unlizensierten Versionen der SIMATIC NET Schnittstellen fr .NET werden Ihnen nur zum Zweck der zeitweisen Evaluierung in einer Testumgebung berlassen. Sie drfen nicht in einer Produktivumgebung eingesetzt werden. Mit ihrer Benutzung erkennen Sie unsere Allgemeinen Geschftsbedingungen (AGB) an, die Sie mit Ihrer Lieferung der Schnittstellendateien als PDF-Dokument (SoftwareOption-AGB-GTC.pdf) erhalten haben. Fr den produktiven Betrieb bestellen Sie bitte eine Lizenz mit dem ebenfalls in Ihrer Lieferung enthaltenen Bestellschein.

SAPI-S7 .NET Die SIMATIC NET Programmierschnittstelle fr Microsoft .NET


Inhaltsverzeichnis 1 2 3 4 5 6 Einleitung .............................................................................................................................. 2 Voraussetzung fr die Anwendung ........................................................................................ 2 Einschrnkungen der Demo-Version ..................................................................................... 3 Implementierte SAPI-S7 .NET Funktionen / Aktueller Stand .................................................. 3 Lieferumfang / Installation der SAPI-S7 .NET Programmierschnittstelle ................................ 3 bersicht ber die Programmierschnittstelle ......................................................................... 4 6.1 Methoden der Klasse S7Core ........................................................................................ 4 6.2 Methoden der Klasse S7Vfd .......................................................................................... 4 6.3 Methoden und Events der Klasse S7Connection ........................................................... 5 6.4 Methoden der Klasse S7Log.......................................................................................... 7

SAPI-S7 .NET Anleitung, Seite 1

Einleitung

Das SAPI-S7 Protokoll bietet Zugriff (z.B. Variablen lesen, schreiben, usw.) auf Siemens S7 Systemkomponenten (z.B. SPS Serien S7-300, S7-400, usw.). Fr PC-Anwenderprogramme liefert die Siemens AG das Programmierinterface SAPI-S7 fr die Programmiersprache C/C++. Das SAPI-S7 .NET Interface von SoftwareOption stellt .NET Anwendern ein objektorientiertes Programmierinterface fr das SAPI-S7 Protokoll zur Verfgung. Vorteile: 1. Performance: Im Vergleich zu OPC zeichnet sich die Schnittstelle durch deutlich weniger Overhead aus. 2. Untersttzung fr native .NET Datentypen: Die Schnittstelle wandelt automatisch die .NET Datentypen (byte, short, float, usw.) in die ntigen S7-Typen in Netzdarstellung (und umgekehrt) um. 3. Untersttzung fr das .NET Eventmodell: Alle Ereignisse / Nachrichten der Schnittstelle werden als .NET Event gekapselt. 4. Beispielprogramm: Das beiliegende Beispielprogramm liefert eine bersichtliche Vorlage fr die effektive Umsetzung Ihres Automatisierungsvorhabens.

Voraussetzung fr die Anwendung Betriebssystem Windows XP oder hher Microsoft Visual Studio 2008 oder hher Microsoft .NET Framework 3.5 oder hher Ein installiertes Produkt Siemens SIMATIC NET PC-Software ab Version 7 Die Dokumentation der SAPI-S7 Schnittstelle (fr die Programmiersprache C) von der Siemens AG

Diese Dokumentation geht davon aus, dass Sie mit Siemens Automatisierungssoftware im Allgemeinen vertraut sind. D.h. Sie wissen, wie man eine PC-Station / eine SPS usw. mit Step 7 parametriert und projektiert. Weiterhin ist die Kenntnis der Siemens-Dokumentation SAPI-S7 Schnittstelle (fr die Programmiersprache C) fr die erfolgreiche Nutzung unserer .NET Schnittstelle ntig. Telefonsupport: Kufer der .NET Schnittstelle erhalten bis zu einer Stunde kostenlosen Telefonsupport. Tel. +49 (0)2405 47 16 730 (Carsten Buchloh)

SAPI-S7 .NET Anleitung, Seite 2

Einschrnkungen der Demo-Version

Die Demo-Version unterscheidet sich von der registrierten Version nur durch Popup-Fenster, die in regelmigen Abstnden auf die unregistrierte Version hinweisen. Bei Bestellung erhalten Sie eine Lizenz-Datei, die Sie in das gleiche Verzeichnis wie Ihr Programm kopieren. 4 Implementierte SAPI-S7 .NET Funktionen / Aktueller Stand

Im aktuellen Stand sind nicht alle Funktionen der SAPI-S7 Schnittstelle implementiert. Die folgenden Funktionsgruppen werden von SoftwareOption zu einem spteren Zeitpunkt implementiert: Blockorientierte Dienste (s7_bsend_req, s7_get_bsend_cnf, s7_brcv_init, s7_get_brcv_ind, s7_brcv_stop) Meldedienste (s7_msg_initiate_req, s7_get_msg_initiate_cnf, s7_msg_abort_req, s7_get_msg_abort_cnf, s7_get_scan_ind, s7_get_alarm_ind) VFD-Dienste (s7_vfd_state_req, s7_get_vfd_state_cnf) Diagnosedienste fr hochverfgbare Verbindungen (s7_diag_init, s7_get_diag_ind, s7_diag_stop)

Sprechen Sie uns bitte gerne an, wenn Sie hiervon Implementierungen fr Ihr Projekt brauchen. 5 Lieferumfang / Installation der SAPI-S7 .NET Programmierschnittstelle

Lieferumfang der SAPI-S7 .NET Schnittstelle / Installation: 1. Die Assembly S7dotNetLibrary.dll. Diese Datei enthlt die Umsetzung der SAPI-S7 .NET Schnittstelle. Kopieren Sie die Datei in einen Ordner Ihrer Wahl. 2. Das Verzeichnis S7dotNetSample mit einem C# Beispielprojekt, in dem Sie eine Vorlage fr alle implementierten Funktionen der Schnittstelle finden. Kopieren Sie das Projekt in einen Ordner Ihrer Wahl. 3. Fgen Sie zum Projekt S7dotNetSample eine Referenz zur Assembly S7dotNetLibrary.dll hinzu: - ffnen Sie die Solution S7dotNetSample.sln - Rechte Maustaste auf das Projekt S7dotNetSample -> Referenz hinzufgen - Navigieren Sie zur Assembly S7dotNetLibrary.dll und whlen diese aus

SAPI-S7 .NET Anleitung, Seite 3

bersicht ber die Programmierschnittstelle

Im Folgenden werden die Methoden und Events der implementierten Klassen der Programmierschnittstelle aufgelistet. Auf eine Beschreibung im Einzelnen wird hier bewusst verzichtet. Es wird stattdessen auf die jeweils quivalente Funktionsbeschreibung der Siemens SAPI-S7 Dokumentation sowie auf das ausfhrliche und dokumentierte Beispielprogramm verwiesen. Die Programmierschnittstelle enthlt die folgenden Klassen: 6.1 S7Core (enthlt alle Konstanten und Strukturen quivalent zur Include-Datei %ProgramFiles%\SIEMENS\SIMATIC.NET\sapi_s7\include\sapi_s7.h) S7Vfd (die Instanz enthlt eine Liste von Instanzen des Typs S7Connection des entsprechenden VFDs) S7Connection (stellt eine Verbindung dar) S7Log (Klasse fr Logging-Funktionen) Methoden der Klasse S7Core quivalente Siemens C-Funktionen s7_get_device_list s7_get_vfd_list

.NET Methoden S7Core


Konstruktor: S7Core(S7Log s7log) List<string> GetDeviceList() List<string> GetVfdList(string deviceName)

6.2

Methoden der Klasse S7Vfd quivalente Siemens C-Funktionen


s7_init s7_shut s7_set_window_handle_msg s7_mini_db_get s7_mini_db_set -

.NET Methoden S7Vfd


Konstruktor: S7Vfd(string deviceName,string vfdName, S7Log s7log) int Init() int Shut() int SetWindowHandleMsg(uint hWnd, uint messageID) S7Connection GetConnection(string connectionName) S7Connection GetConnection(ushort cref) string MiniDbGet(ushort type) int MiniDbSet(ushort type, string value) void MessageReceived()

SAPI-S7 .NET Anleitung, Seite 4

6.3

Methoden und Events der Klasse S7Connection quivalente Siemens C-Funktionen

.NET Methoden S7Connection Konstruktor


Kein public Konstruktor. Die Instanz S7Vfd erzeugt automatisch eine Liste von Instanzen vom Typ S7Connection

Verbindungsmanagement:
int int int int InitiateRequest() InitiateResponse(ushort accept) AwaitInitiateRequest() Abort() s7_initiate_req s7_initiate_resp s7_await_initiate_req s7_abort

Variablendienste:
int ReadRequest(string symbolicName, ushort orderId) int GetReadConfirmation<T>(ushort var_length, ref T myVariable) int MultipleReadRequest(string[] symbolicNames, ushort orderId) int GetMultipleReadConfirmation<T>(ref ushort[] result_array, ushort[] var_length_array, ref T myMultiVariableStruct) where T : struct int WriteRequest<T>(string symbolicName, ushort var_length, ref T var_value, ushort orderId) int WriteLongRequest<T>(string symbolicName, ushort var_length, ref T var_value, ushort orderId) int MultipleWriteRequest<T>(string[] symbolicNames, ushort[] var_length_array, ref T myMultiVariableStruct, ushort orderId) s7_read_req s7_get_read_cnf s7_multiple_read_req s7_get_multiple_read_cnf

s7_write_req s7_write_long_req s7_multiple_write_req

Zyklische Variablendienste:
int CycleReadInitRequest(string[] symbolicNames, ushort cycl_time, ushort orderId) int CycleReadDeleteRequest(ushort orderId) int CycleReadStartRequest(ushort orderId) int CycleReadStopRequest(ushort orderId) int GetCycleReadIndication<T>(ref ushort[] result_array, ushort[] var_length_array, ref T myMultiVariableStruct) where T : struct s7_cycl_read_init_req s7_cycl_read_delete_req s7_cycl_read_start_req s7_cycl_read_stop_req s7_get_cycl_read_ind

Andere:
string GetStateString()

SAPI-S7 .NET Anleitung, Seite 5

Events S7Connection
STATE_CHANGE_Event S7_INITIATE_CNF_Event Eventparameter: int iRet = s7_get_initiate_cnf(..) S7_AWAIT_INITIATE_CNF_Event Eventparameter: int iRet = s7_get_await_initiate_cnf(..) S7_INITIATE_IND_Event Eventparameter: int iRet = s7_get_initiate_ind(..) S7_ABORT_IND Eventparameter: int iRet = s7_get_abort_ind(..) S7_READ_CNF_Event Eventparameter: ushort orderId S7_MULTIPLE_READ_CNF_Event Eventparameter: ushort orderId S7_WRITE_CNF_Event Eventparameter: int iRet = s7_get_write_cnf(..) ushort orderId S7_MULTIPLE_WRITE_CNF_Event Eventparameter: int iRet = s7_get_multiple_write_cnf(..) ushort orderId ushort[] result_array S7_CYCL_READ_INIT_CNF_Event Eventparameter: int iRet = s7_get_cycl_read_init_cnf(..) ushort orderId S7_CYCL_READ_DELETE_CNF_Event Eventparameter: int iRet = s7_get_cycl_read_delete_cnf(..) ushort orderId S7_CYCL_READ_START_CNF_Event Eventparameter: int iRet = s7_get_cycl_read_start_cnf(..) ushort orderId S7_CYCL_READ_STOP_CNF_Event Eventparameter: int iRet = s7_get_cycl_read_stop_cnf(..) ushort orderId S7_CYCL_READ_ABORT_IND_Event Eventparameter: int iRet = s7_get_cycl_read_abort_ind(..) ushort orderId S7_CYCL_READ_IND_Event Eventparameter: ushort orderId

quivalentes Siemens Ereignisse


S7_INITIATE_CNF

S7_AWAIT_INITIATE_CNF

S7_INITIATE_IND

S7_ABORT_IND

S7_READ_CNF

S7_MULTIPLE_READ_CNF

S7_WRITE_CNF

S7_MULTIPLE_WRITE_CNF

S7_CYCL_READ_INIT_CNF

S7_CYCL_READ_DELETE_CNF

S7_CYCL_READ_START_CNF

S7_CYCL_READ_STOP_CNF

S7_CYCL_READ_ABORT_IND

S7_CYCL_READ_IND_Event

SAPI-S7 .NET Anleitung, Seite 6

6.4

Methoden der Klasse S7Log quivalente Siemens C-Funktionen

.NET Methoden S7Log Konstruktor


public S7Log(uint logTarget, uint logLevel)

Methoden
public void Log(string logString) s7_trace und/oder Debug.Write

SAPI-S7 .NET Anleitung, Seite 7