IBHNet:Hochsprachenzugriffe: Unterschied zwischen den Versionen

Aus IBHsoftec Wiki
Wechseln zu: Navigation, Suche
Zeile 168: Zeile 168:
 
|align="center"| X  
 
|align="center"| X  
 
|align="center"| -
 
|align="center"| -
 +
|-
 +
|Auslesen des maximalen Jitters der SoftSPS<br />'''HRESULT PLC_JitterMax([out, retval] long *pVal)'''<br />pVal: gibt den maximalen Jitter zurück.<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
 +
|align="center"| -
 +
|align="center"| -
 +
|align="center"| X
 +
|align="center"| -
 +
|-
 +
|Auslesen des aktuellen Jitters der SoftSPS<br />'''HRESULT PLC_JitterAct([out, retval] long *pVal)'''<br />pVal: gibt den aktuellen Jitter zurück.<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
 +
|align="center"| -
 +
|align="center"| -
 +
|align="center"| X
 +
|align="center"| -
 +
|-
 +
|Startet die SoftSPS<br />'''HRESULT PLC_Load([in] long newVal)'''<br />Parameter: newVal. 0 = Als Prozess, 1 = Als Dienst, 2 = Als AutoStart Dienst, 3 = Als DemandStart Dienst.<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
 +
|align="center"| -
 +
|align="center"| -
 +
|align="center"| X
 +
|align="center"| -
 +
|-
 +
|Pfad der Konfiguationsdatei PLC43.ini der SoftSPS<br />'''HRESULT PLC_InitPath([out, retval] BSTR *pVal)'''<br />pVal: gibt den Pfad zurück.<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
 +
|align="center"| -
 +
|align="center"| -
 +
|align="center"| X
 +
|align="center"| -
 +
|-
 +
|Auslesen der Gesamtgröße des Speichers der SoftSPS in Byte<br />'''HRESULT PLC_MemTotal([out, retval] long *pVal)'''<br />pVal: gibt die Speichergröße zurück.<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
 +
|align="center"| -
 +
|align="center"| -
 +
|align="center"| X
 +
|align="center"| -
 +
|-
 +
|Auslesen der Größe des freien Speichers der SoftSPS in Byte<br />'''HRESULT PLC_MemFree([out, retval] long *pVal)'''<br />pVal: gibt die Größe des freien Speichers zurück.<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
 +
|align="center"| -
 +
|align="center"| -
 +
|align="center"| X
 +
|align="center"| -
 +
|-
 +
|Auslesen konfigurierter Stationen über Index<br />'''HRESULT Station(long Nr, [out, retval] BSTR* pVal)'''<br />Nr: Stationsindex<br />pVal: Wenn kein Stationsmame zurückgegeben wird, wurde die Station nicht gefunden.<br />Rückgabewert: S_OK bei Erfolg, S_FALSE wenn die Station nicht vorhanden ist.
 +
|align="center"| -
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| -
 +
|-
 +
|<!-- x-->
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| '''Eigenschaften fü;r den Variablenzugriff'''
 +
 +
Es ist zu beachten, das jede der nachfolgend gelisteten Funktionen ein kompletten Lese- bzw. Schreibzugriff zur Steuerung durchführt. Man sollte daher versuchen, die zu lesenden bzw. zu schreibenden Bereiche in der SPS zusammenzufassen, damit diese als kompletter Block gelesen bzw. geschrieben werden können. Lesen bzw. Schreiben kompletter Blöcke über ReadVals / WriteVals dauert nur unwesentlich länger, als das Lesen bzw. Schreiben einer einzelnen Variablen.
 +
| S5
 +
| S7 <br/> 300/400
 +
| SoftSPS <br/> und <br/> S7-CX
 +
| S7 <br/> 200
 +
|-
 +
|Liest ein Merkerdoppelwort<br />'''HRESULT MD(long nr, [out, retval] long *pVal)'''<br />nr: Nummer des Merkerdoppelworts<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.<br /><br />Schreibt ein Merkerdoppelwort<br />'''HRESULT MD(long nr, [in] long newVal)'''<br />nr: Nummer des Merkerdoppelworts<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Merkerwort<br />'''HRESULT MW(long nr, [out, retval] long *pVal)'''<br />nr: Nummer des Merkerworts<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.<br /><br />Schreibt ein Merkerwort<br />'''HRESULT MW(long nr, [in] long newVal)'''<br />nr: Nummer des MerkerWorts<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Merkerbyte<br />'''HRESULT MB(long nr, [out, retval] long *pVal)'''<br />nr: Nummer des Merkerbytes<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.<br /><br />Schreibt ein Merkerbyte<br />'''HRESULT MB(long nr, [in] long newVal)'''<br />nr: Nummer des Merkerbytes<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Merkerbit<br />'''HRESULT M(long nr,long bit, [out, retval] BOOL *pVal)'''<br />nr: Adresse des Merkerbytes<br />bit: Bitnummer im Merkerbyte<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.<br /><br />Schreibt ein Merkerbit<br />'''HRESULT M(long nr,long bit, [in] BOOL newVal)'''<br />nr: Adresse des Merkerbytes<br />bit: Bitnummer im Merkerbyte<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Eingangsdoppelwort<br />'''HRESULT ED(long nr, [out, retval] long *pVal)'''<br />nr: Nummer des Eingangsdoppelworts<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.<br /><br />Schreibt ein Eingangsdoppelwort<br />'''HRESULT ED(long nr, [in] long newVal)'''<br />nr: Nummer des Eingangsdoppelworts<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Eingangswort<br />'''HRESULT EW(long nr, [out, retval] long *pVal)'''<br />nr: Nummer des Eingangsworts<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.<br /><br />Schreibt ein Eingangsdoppelwort<br />'''HRESULT EW(long nr, [in] long newVal)'''<br />nr: Nummer des Eingangsworts<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Eingangsbyte<br />'''HRESULT EB(long nr, [out, retval] long *pVal)'''<br />nr: Nummer des Eingangsbytes<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.<br /><br />Schreibt ein Eingangsbyte<br />'''HRESULT EB(long nr, [in] long newVal)'''<br />nr: Nummer des Eingangsbytes<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Eingangsbit<br />'''HRESULT E(long nr,long bit, [out, retval] BOOL *pVal)'''<br />nr: Adresse des Eingangsbytes<br />bit: Bitnummer im Eingangsbyte<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.<br /><br />Schreibt ein Eingangsbit<br />'''HRESULT E(long nr,long bit, [in] BOOL newVal)'''<br />nr: Adresse des Eingangsbytes<br />bit: Bitnummer im Eingangsbyte<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Ausgangsdoppelwort<br />'''HRESULT AD(long nr, [out, retval] long *pVal)'''<br />nr: Nummer des Ausgangsdoppelworts<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.<br /><br />Schreibt ein Ausgangsdoppelwort<br />'''HRESULT AD(long nr, [in] long newVal)'''<br />nr: Nummer des Ausgangsdoppelworts<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Ausgangswort<br />'''HRESULT AW(long nr, [out, retval] long *pVal)'''<br />nr: Nummer des Ausgangsworts<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.<br /><br />Schreibt ein Ausgangswort<br />'''HRESULT AW(long nr, [in] long newVal)'''<br />nr: Nummer des AusgangsWorts<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Ausgangsbyte<br />'''HRESULT AB(long nr, [out, retval] long *pVal)'''<br />nr: Nummer des Ausgangsbytes<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.<br /><br />Schreibt ein Ausgangsbyte<br />'''HRESULT AB(long nr, [in] long newVal)'''<br />nr: Nummer des Ausgangsbytes<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Ausgangsbit<br />'''HRESULT A(long nr,long bit, [out, retval] BOOL *pVal)'''<br />nr: Adresse des Ausgangsbytes<br />bit: Bitnummer im Ausgangsbytes<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist. <br /><br />Schreibt ein Ausgangsbit<br />'''HRESULT A(long nr,long bit, [in] BOOL newVal)'''<br />nr: Adresse des Ausgangsbytes<br />bit: Bitnummer im Ausgangsbyte<br />newVal: Zu schreibender Wert<br /> Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Datendoppelwort<br />'''HRESULT DD(long DBNr,long nr, [out, retval] long *pVal)'''<br />DBNr: Nummer des Datenbausteins<br />nr: Byte-Offset im Datenbaustein<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.<br /><br />Schreibt ein Datendoppelwort<br />'''HRESULT DD(long DBNr,long nr, [in] long newVal)'''<br />DBNr: Nummer des Datenbausteins<br />nr: Byte-Offset im Datenbaustein<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Datenwort<br />'''HRESULT DW(long DBNr,long nr, [out, retval] long *pVal)'''<br />DBNr: Nummer des Datenbausteins<br />nr: Byte-Offset im Datenbaustein<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.<br /><br />Schreibt ein Datenwort<br />'''HRESULT DW(long DBNr,long nr, [in] long newVal)'''<br />DBNr: Nummer des Datenbausteins<br />nr: Byte-Offset im Datenbaustein<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Datenbyte<br />'''HRESULT DB(long DBNr,long nr, [out, retval] long *pVal)'''<br />DBNr: Nummer des Datenbausteins<br />nr: Byte-Offset im Datenbaustein<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.<br /><br />Schreibt ein Datenbyte<br />'''HRESULT DB(long DBNr,long nr, [in] long newVal)'''<br />DBNr: Nummer des Datenbausteins<br />nr: Byte-Offset im Datenbaustein<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|Liest ein Datenbit<br />'''HRESULT D(long DBNr,long nr,long bit, [out, retval] BOOL *pVal)'''<br />DBNr: Nummer des Datenbausteins<br />nr: Byte-Offset im Datenbaustein<br />bit: Bitnummer im Datenbyte<br />pVal: Gelesener Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist. <br /><br />Schreibt ein Datenbit<br />'''HRESULT D(long DBNr,long nr,long bit, [in] BOOL newVal)'''<br />DBNr: Nummer des Datenbausteins<br />nr: Byte-Offset im Datenbaustein<br />bit: Bitnummer im Datenbyte<br />newVal: Zu schreibender Wert<br />Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|align="center"| X
 +
|-
 +
|<!-- x-->
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  

Version vom 18. Juni 2012, 08:42 Uhr

Im Lieferumfang des IBHNet-Netzwerktreibers befindet sich ein Objekt, mit dem man einen Hochsprachenzugriff auf die Variablen von Steuerungen erhält.

Der Name der Schnittstelle lautet "IBHnet". Unter Visual Basic beispielsweise erscheint dies als IBHNet 1.0 Type Library unter dem Menüpunkt "Projekt-Verweise". Wenn über das IBHNet-Objekt Variablen aus der Steuerung gelesen oder geschrieben werden sollen, sollte nach Möglichkeit in der Station immer das Protokoll RFC1006 gewählt werden. Es ist nur in Einzelfällen bei älteren Baugruppen erforderlich, ein anderes Protokoll zu verwenden. Für den Zugriff auf Variablen der SPS steht folgende Schnittstelle zur Verfügung:

    Funktion der Schnittstelle IIIBHnet S5 S7
    300/400
    SoftSPS
    und
    S7-CX
    S7
    200
    Erste konfigurierte Station suchen
    HRESULT FirstStation(BSTR* pVal)
    pVal: Erster gefundener Stationsname
    Rückgabewert: S_OK bei Erfolg, S_FALSE wenn keine Station vorhanden ist.
    X X X X
    Weitere konfigurierte Stationen suchen
    HRESULT NextStation(BSTR* pVal)
    pVal: Stationsname
    Rückgabewert: S_OK bei Erfolg, S_FALSE wenn keine weitere Station vorhanden ist.
    Wenn kein Stationsmame mehr zurückgegeben wird, ist die letzte Station gefunden.
    X X X X
    Verbindung zur SPS aufbauen
    HRESULT Connect([in, string] BSTR Station,[in] long MPIAdr)
    Station: Stationsname
    MPIAdr: MPI Adresse
    Rückgabewert: S_OK bei Erfolg, E_FAIL oder die Sequenznummer, bei der der Fehler auftrat.
    Die Funktion Connect_DP aus dem Interface IIIBHNet3 sollte zum Verbindungsaufbau vorgezogen werden da diese bei Misserfolg in Programmiersprachen wie VisualBasic oder C# immer eine Exeption auslöst.
    X X X X
    Verbindung zur SPS trennen
    HRESULT Disconnect()
    Parameter: Keine
    Rückgabewert: Immer S_OK.
    X X X X
    Lesen von einzelnen Werten aus der SPS
    HRESULT ReadVal(long typ, long nr, long DBNr, long size, long *val)
    typ: (E)ingang = 69d, (A)usgang = 65d, (M)erker = 77d, (D)atenbaustein = 68d
    nr: Startadresse bei EAM, bei D die Startadresse im DB
    DBNr: Datenbausteinnumer bei typ=D (68d), bei EAM 0
    size: 0..7 = Die Bitnummer im gelesenen Byte, 8 = Byte, 16 = Wort, 32 = Doppelwort
    val: Der gelesene Wert.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.
    X X X X
    Blockweise Lesen von Werten aus der SPS
    HRESULT ReadVals(long typ, long nr, long DBNr, long size, SAFEARRAY(unsigned char) vals)
    typ: (E)ingang = 69d, (A)usgang = 65d, (M)erker = 77d, (D)atenbaustein = 68d
    nr: Startadresse bei EAM, bei D die Startadresse im DB
    DBNr: Datenbausteinnumer bei typ=D (68d), bei EAM 0
    size: Anzahl der zu lesenden Bytes
    vals: Das Byte Feld mit den Daten
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.

    ReadVals gibt Daten in einem SAFEARRAY vom Datentyp Byte zurück. DotNetReadVals gibt Daten in einer VARIANT Variable, die wiederum ein SAFEARRAY vom Datentyp Byte enthält zurück. In den .Net Sprachen ist der Übergabeparameter ein Objekt. Sollen Datenbereiche gelesen werden die größer sind als die auf der CPU tatsächlich vorhandenen Bereiche, so meldet die CPU dem Treiber dass der Datenbereich nicht existent ist. Die Funktion gibt in diesem Fall E_INVALIDARG zurück. Die Verbindung zur Steuerung bleibt dabei bestehen, es besteht kein Grund die Verbindung zur Steuerung zu trennen.
    X X X X
    Schreiben von einzelnen Werten in die SPS
    HRESULT WriteVal(long typ, long nr, long DBNr, long size, long val)
    typ: (E)ingang = 69d, (A)usgang = 65d, (M)erker = 77d, (D)atenbaustein = 68d
    nr: Startadresse bei EAM, bei D die Startadresse im DB
    DBNr: Datenbausteinnumer bei typ=D (68d), bei EAM 0
    size: 0..7 = Die Bitnummer im zu schreibenden Byte, 8 = Byte, 16 = Wort, 32 = Doppelwort
    val: Der zu schreibende Wert.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.
    X X X X
    Blockweise Schreiben von Werten in die SPS
    HRESULT WriteVals(long typ, long nr, long DBNr, long size,SAFEARRAY(unsigned char) vals)
    typ: (E)ingang = 69d, (A)usgang = 65d, (M)erker = 77d, (D)atenbaustein = 68d
    nr: Startadresse bei EAM, bei D die Startadresse im DB
    DBNr: Datenbausteinnumer bei typ=D (68d), bei EAM 0
    size: Anzahl der zu lesenden Bytes
    vals: Das Byte Feld mit den Daten
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.

    WriteVals übergibt Daten in einem SAFEARRAY vom Datentyp Byte. DotNetReadVals übergibt Daten in einer VARIANT Variable, die wiederum ein SAFEARRAY vom Datentyp Byte enthält. In den .Net Sprachen ist der Übergabeparameter ein Objekt. Sollen Datenbereiche geschrieben werden die größer sind als die auf der CPU tatsächlich vorhandenen Bereiche, so meldet die CPU dem Treiber dass der Datenbereich nicht existent ist. Die Funktion gibt in diesem Fall E_INVALIDARG zurück. Die Verbindung zur Steuerung bleibt dabei bestehen, es besteht kein Grund die Verbindung zur Steuerung zu trennen.
    X X X X
    Erzeugt das .bin File der SoftSPS welches das SPS-Programm enthält.
    HRESULT PLC_Store()
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird urückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Lädt das .bin File der SoftSPS welches das SPS-Programm enthält
    HRESULT PLC_Restore()
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Eigenschaften der Schnittstelle IIIBHnet S5 S7
    300/400
    SoftSPS
    und
    S7-CX
    S7
    200
    Betriebszustand der CPU lesen
    HRESULT PLC_Run([out, retval] BOOL *pVal)
    pVal: TRUE = Run, FALSE = Stop.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    X X X X
    Auslesen des Ausgabestands der SoftSPS
    HRESULT PLC_Version([out, retval] long *pVal)
    pVal: gibt den Ausgabestand zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Auslesen der Zyklen der SoftSPS
    HRESULT PLC_Cycles([out, retval] long *pVal))
    pVal: gibt die aktuelle Zyklenzahl zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Schaltet die SPS in Zustand STOP
    HRESULT PLC_Stop([in] BOOL newVal)
    Der Parameter newVal ist reserviert und muss immer FALSE sein.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    X X X -
    Neustart der SPS
    HRESULT PLC_Run_OB100([in] BOOL newVal)
    Der Parameter newVal ist reserviert und muss immer TRUE sein.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.

    Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.

    X X X -
    Wiederanlauf der SPS
    HRESULT PLC_Run_OB101([in] BOOL newVal)
    Der Parameter newVal ist reserviert und muss immer TRUE sein.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    X X X -
    Beendet die SoftSPS
    HRESULT PLC_Terminate([in] BOOL newVal)
    Der Parameter newVal ist reserviert und muss immer FALSE sein.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Auslesen der Serinnummer der SoftSPS
    HRESULT PLC_SerialNr([out, retval] BSTR *pVal)
    pVal: gibt die Seriennummer zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Auslesen des Benutzernamens der SoftSPS
    HRESULT PLC_Name([out, retval] BSTR *pVal)
    pVal: gibt den Benutzernamen zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Auslesen des Firmennamens der SoftSPS
    HRESULT PLC_Firma([out, retval] BSTR *pVal)
    pVal: gibt den Firmennamen zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Bestellnummer der CPU lesen
    HRESULT PLC_Mlfb([out, retval] BSTR *pVal)
    pVal: gibt den Firmennamen zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    X X X -
    Auslesen der aktuellen Durchlaufzeit der SoftSPS
    HRESULT PLC_CycleAct([out, retval] long *pVal)
    pVal: gibt die aktuelle Durchlaufzeit zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Auslesen der minimalen Durchlaufzeit der SoftSPS
    HRESULT PLC_CycleMin([out, retval] long *pVal)
    pVal: gibt die minimale Durchlaufzeit zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Auslesen der maximalen Durchlaufzeit der SoftSPS
    HRESULT PLC_CycleMax([out, retval] long *pVal)
    pVal: gibt die maximale Durchlaufzeit zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Auslesen des maximalen Jitters der SoftSPS
    HRESULT PLC_JitterMax([out, retval] long *pVal)
    pVal: gibt den maximalen Jitter zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Auslesen des aktuellen Jitters der SoftSPS
    HRESULT PLC_JitterAct([out, retval] long *pVal)
    pVal: gibt den aktuellen Jitter zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Startet die SoftSPS
    HRESULT PLC_Load([in] long newVal)
    Parameter: newVal. 0 = Als Prozess, 1 = Als Dienst, 2 = Als AutoStart Dienst, 3 = Als DemandStart Dienst.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Pfad der Konfiguationsdatei PLC43.ini der SoftSPS
    HRESULT PLC_InitPath([out, retval] BSTR *pVal)
    pVal: gibt den Pfad zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Auslesen der Gesamtgröße des Speichers der SoftSPS in Byte
    HRESULT PLC_MemTotal([out, retval] long *pVal)
    pVal: gibt die Speichergröße zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Auslesen der Größe des freien Speichers der SoftSPS in Byte
    HRESULT PLC_MemFree([out, retval] long *pVal)
    pVal: gibt die Größe des freien Speichers zurück.
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler. E_NOTIMPL wird zurückgegeben, wenn die angeschlossene SPS die Funktion nicht untertützt.
    - - X -
    Auslesen konfigurierter Stationen über Index
    HRESULT Station(long Nr, [out, retval] BSTR* pVal)
    Nr: Stationsindex
    pVal: Wenn kein Stationsmame zurückgegeben wird, wurde die Station nicht gefunden.
    Rückgabewert: S_OK bei Erfolg, S_FALSE wenn die Station nicht vorhanden ist.
    - X X -
    Eigenschaften fü;r den Variablenzugriff

    Es ist zu beachten, das jede der nachfolgend gelisteten Funktionen ein kompletten Lese- bzw. Schreibzugriff zur Steuerung durchführt. Man sollte daher versuchen, die zu lesenden bzw. zu schreibenden Bereiche in der SPS zusammenzufassen, damit diese als kompletter Block gelesen bzw. geschrieben werden können. Lesen bzw. Schreiben kompletter Blöcke über ReadVals / WriteVals dauert nur unwesentlich länger, als das Lesen bzw. Schreiben einer einzelnen Variablen.

    S5 S7
    300/400
    SoftSPS
    und
    S7-CX
    S7
    200
    Liest ein Merkerdoppelwort
    HRESULT MD(long nr, [out, retval] long *pVal)
    nr: Nummer des Merkerdoppelworts
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Merkerdoppelwort
    HRESULT MD(long nr, [in] long newVal)
    nr: Nummer des Merkerdoppelworts
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Merkerwort
    HRESULT MW(long nr, [out, retval] long *pVal)
    nr: Nummer des Merkerworts
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Merkerwort
    HRESULT MW(long nr, [in] long newVal)
    nr: Nummer des MerkerWorts
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Merkerbyte
    HRESULT MB(long nr, [out, retval] long *pVal)
    nr: Nummer des Merkerbytes
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Merkerbyte
    HRESULT MB(long nr, [in] long newVal)
    nr: Nummer des Merkerbytes
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Merkerbit
    HRESULT M(long nr,long bit, [out, retval] BOOL *pVal)
    nr: Adresse des Merkerbytes
    bit: Bitnummer im Merkerbyte
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Merkerbit
    HRESULT M(long nr,long bit, [in] BOOL newVal)
    nr: Adresse des Merkerbytes
    bit: Bitnummer im Merkerbyte
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Eingangsdoppelwort
    HRESULT ED(long nr, [out, retval] long *pVal)
    nr: Nummer des Eingangsdoppelworts
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Eingangsdoppelwort
    HRESULT ED(long nr, [in] long newVal)
    nr: Nummer des Eingangsdoppelworts
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Eingangswort
    HRESULT EW(long nr, [out, retval] long *pVal)
    nr: Nummer des Eingangsworts
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Eingangsdoppelwort
    HRESULT EW(long nr, [in] long newVal)
    nr: Nummer des Eingangsworts
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Eingangsbyte
    HRESULT EB(long nr, [out, retval] long *pVal)
    nr: Nummer des Eingangsbytes
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Eingangsbyte
    HRESULT EB(long nr, [in] long newVal)
    nr: Nummer des Eingangsbytes
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Eingangsbit
    HRESULT E(long nr,long bit, [out, retval] BOOL *pVal)
    nr: Adresse des Eingangsbytes
    bit: Bitnummer im Eingangsbyte
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Eingangsbit
    HRESULT E(long nr,long bit, [in] BOOL newVal)
    nr: Adresse des Eingangsbytes
    bit: Bitnummer im Eingangsbyte
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Ausgangsdoppelwort
    HRESULT AD(long nr, [out, retval] long *pVal)
    nr: Nummer des Ausgangsdoppelworts
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Ausgangsdoppelwort
    HRESULT AD(long nr, [in] long newVal)
    nr: Nummer des Ausgangsdoppelworts
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Ausgangswort
    HRESULT AW(long nr, [out, retval] long *pVal)
    nr: Nummer des Ausgangsworts
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Ausgangswort
    HRESULT AW(long nr, [in] long newVal)
    nr: Nummer des AusgangsWorts
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Ausgangsbyte
    HRESULT AB(long nr, [out, retval] long *pVal)
    nr: Nummer des Ausgangsbytes
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Ausgangsbyte
    HRESULT AB(long nr, [in] long newVal)
    nr: Nummer des Ausgangsbytes
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Ausgangsbit
    HRESULT A(long nr,long bit, [out, retval] BOOL *pVal)
    nr: Adresse des Ausgangsbytes
    bit: Bitnummer im Ausgangsbytes
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.

    Schreibt ein Ausgangsbit
    HRESULT A(long nr,long bit, [in] BOOL newVal)
    nr: Adresse des Ausgangsbytes
    bit: Bitnummer im Ausgangsbyte
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich zu klein ist.
    X X X X
    Liest ein Datendoppelwort
    HRESULT DD(long DBNr,long nr, [out, retval] long *pVal)
    DBNr: Nummer des Datenbausteins
    nr: Byte-Offset im Datenbaustein
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.

    Schreibt ein Datendoppelwort
    HRESULT DD(long DBNr,long nr, [in] long newVal)
    DBNr: Nummer des Datenbausteins
    nr: Byte-Offset im Datenbaustein
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.
    X X X X
    Liest ein Datenwort
    HRESULT DW(long DBNr,long nr, [out, retval] long *pVal)
    DBNr: Nummer des Datenbausteins
    nr: Byte-Offset im Datenbaustein
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.

    Schreibt ein Datenwort
    HRESULT DW(long DBNr,long nr, [in] long newVal)
    DBNr: Nummer des Datenbausteins
    nr: Byte-Offset im Datenbaustein
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.
    X X X X
    Liest ein Datenbyte
    HRESULT DB(long DBNr,long nr, [out, retval] long *pVal)
    DBNr: Nummer des Datenbausteins
    nr: Byte-Offset im Datenbaustein
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.

    Schreibt ein Datenbyte
    HRESULT DB(long DBNr,long nr, [in] long newVal)
    DBNr: Nummer des Datenbausteins
    nr: Byte-Offset im Datenbaustein
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.
    X X X X
    Liest ein Datenbit
    HRESULT D(long DBNr,long nr,long bit, [out, retval] BOOL *pVal)
    DBNr: Nummer des Datenbausteins
    nr: Byte-Offset im Datenbaustein
    bit: Bitnummer im Datenbyte
    pVal: Gelesener Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.

    Schreibt ein Datenbit
    HRESULT D(long DBNr,long nr,long bit, [in] BOOL newVal)
    DBNr: Nummer des Datenbausteins
    nr: Byte-Offset im Datenbaustein
    bit: Bitnummer im Datenbyte
    newVal: Zu schreibender Wert
    Rückgabewert: S_OK bei Erfolg, E_FAIL bei Fehler, E_ABORT wenn die SPS den Zugriff verweigert oder E_INVALIDARG wenn der Datenbereich nicht existiert oder zu klein ist.
    X X X X