S7-SoftSPS:ADDI-DATA-Konfiguration: Unterschied zwischen den Versionen

Aus IBHsoftec Wiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „Der ADDI-DATA-Treiber ermöglicht es, Digital I/O und Analog I/O Karten von ADDI-DATA aus dem SPS-Programm der ''S7-SoftSPS'' heraus anzusprechen. Dies erfolgt…“)
 
 
(6 dazwischenliegende Versionen des gleichen Benutzers werden nicht angezeigt)
Zeile 13: Zeile 13:
  
 
Die durch den Treiber in der ''S7-SoftSPS'' installierten FC-Bausteine greifen auf Funktionen der von ADDI-DATA bereitgestellten ADDIDATA.DLL zu. Diese Funktionen werden transparent von den entsprechenden FC-Bausteinen in das SPS-Programm eingeblendet. Für genauere Informationen lesen sie bitte die entsprechende Dokumentationen von ADDI-DATA. Der in der ADDI-DATA Dokumentation beschriebene Parameter "dw_DriverHandle" muss nicht beachtet werden, da sich der ''S7-SoftSPS''Treiber selbst um das Öffnen und Schließen sowie die Übergabe des "DriverHandle" an die ADDI-DATA Funktionen kümmert.
 
Die durch den Treiber in der ''S7-SoftSPS'' installierten FC-Bausteine greifen auf Funktionen der von ADDI-DATA bereitgestellten ADDIDATA.DLL zu. Diese Funktionen werden transparent von den entsprechenden FC-Bausteinen in das SPS-Programm eingeblendet. Für genauere Informationen lesen sie bitte die entsprechende Dokumentationen von ADDI-DATA. Der in der ADDI-DATA Dokumentation beschriebene Parameter "dw_DriverHandle" muss nicht beachtet werden, da sich der ''S7-SoftSPS''Treiber selbst um das Öffnen und Schließen sowie die Übergabe des "DriverHandle" an die ADDI-DATA Funktionen kümmert.
 +
  
 
'''Read8DigitalInputs:'''
 
'''Read8DigitalInputs:'''
Zeile 20: Zeile 21:
 
Aufruf:
 
Aufruf:
  
 +
<code>
 
{|
 
{|
 
|-
 
|-
 
| CALL || FC 100  
 
| CALL || FC 100  
 
|-
 
|-
| INO || := B#16#0 || //b_Port
+
|style="width:7em"|  INO ||style="width:10em"|  := B#16#0 || //b_Port
 
|-
 
|-
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
Zeile 30: Zeile 32:
 
| OUT1 || := MB 2 || //pb_PortValue
 
| OUT1 || := MB 2 || //pb_PortValue
 
|}
 
|}
 +
</code>
  
 
Der Parameter IN0 entspricht dem ADDI-DATA Parameter b_Port, der Parameter OUT1 entspricht dem ADDI-DATA Parameter pb_PortValue. Um den dw_DriverHandle kümmert sich der Treiber selbst, in RET_VAL steht das Funktionsergebnis. Dieses Schema gilt analog für alle Treiberfunktionen.
 
Der Parameter IN0 entspricht dem ADDI-DATA Parameter b_Port, der Parameter OUT1 entspricht dem ADDI-DATA Parameter pb_PortValue. Um den dw_DriverHandle kümmert sich der Treiber selbst, in RET_VAL steht das Funktionsergebnis. Dieses Schema gilt analog für alle Treiberfunktionen.
 +
  
 
'''Read16DigitalInputs:'''
 
'''Read16DigitalInputs:'''
Zeile 39: Zeile 43:
 
Aufruf:
 
Aufruf:
  
 +
<code>
 
{|
 
{|
 
|-
 
|-
 
| CALL || FC 101  
 
| CALL || FC 101  
 
|-
 
|-
| INO || := B#16#0 || //b_Port
+
|style="width:7em"| INO ||style="width:10em"| := B#16#0 || //b_Port
 
|-
 
|-
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
Zeile 49: Zeile 54:
 
| OUT1 || := MB 2 || //pw_PortValue
 
| OUT1 || := MB 2 || //pw_PortValue
 
|}
 
|}
 +
</code>
  
 
'''Read32DigitalInputs:'''
 
'''Read32DigitalInputs:'''
Zeile 56: Zeile 62:
 
Aufruf:
 
Aufruf:
  
 +
<code>
 
{|
 
{|
 
|-
 
|-
 
| CALL || FC 102  
 
| CALL || FC 102  
 
|-
 
|-
| INO || := B#16#0 || //b_Port
+
|style="width:7em"| INO ||style="width:10em"| := B#16#0 || //b_Port
 
|-
 
|-
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
Zeile 66: Zeile 73:
 
| OUT1 || := MD 2 || //pdw_PortValue
 
| OUT1 || := MD 2 || //pdw_PortValue
 
|}
 
|}
 +
</code>
  
 
'''Set8DigitalOutputs:'''
 
'''Set8DigitalOutputs:'''
Zeile 73: Zeile 81:
 
Aufruf:
 
Aufruf:
  
 +
<code>
 
{|
 
{|
 
|-
 
|-
 
| CALL || FC 103  
 
| CALL || FC 103  
 
|-
 
|-
| INO || := B#16#0 || //b_Port
+
|style="width:7em"| INO ||style="width:10em"| := B#16#0 || //b_Port
 
|-
 
|-
 
| IN1 || := B#16#0 || //b_PortValue
 
| IN1 || := B#16#0 || //b_PortValue
Zeile 83: Zeile 92:
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
|}
 
|}
 +
</code>
  
 
'''Set16DigitalOutputs:'''
 
'''Set16DigitalOutputs:'''
Zeile 90: Zeile 100:
 
Aufruf:
 
Aufruf:
  
 +
<code>
 
{|
 
{|
 
|-
 
|-
 
| CALL || FC 104  
 
| CALL || FC 104  
 
|-
 
|-
| INO || := B#16#0 || //b_Port
+
|style="width:7em"| INO ||style="width:10em"| := B#16#0 || //b_Port
 
|-
 
|-
 
| IN1 || := B#16#0 || //w_PortValue
 
| IN1 || := B#16#0 || //w_PortValue
Zeile 100: Zeile 111:
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
|}
 
|}
 +
</code>
  
 
'''Set32DigitalOutputs:'''
 
'''Set32DigitalOutputs:'''
Zeile 107: Zeile 119:
 
Aufruf:
 
Aufruf:
  
 +
<code>
 
{|
 
{|
 
|-
 
|-
 
| CALL || FC 105  
 
| CALL || FC 105  
 
|-
 
|-
| INO || := B#16#0 || //b_Port
+
|style="width:7em"| INO ||style="width:10em"| := B#16#0 || //b_Port
 
|-
 
|-
 
| IN1 || := DW#16#0 || //dw_PortValue
 
| IN1 || := DW#16#0 || //dw_PortValue
Zeile 117: Zeile 130:
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
|}
 
|}
 +
</code>
  
 
'''InitAnalogInput:'''
 
'''InitAnalogInput:'''
  
Entspricht der Funktion &quot;b_ADDIDATA_InitAnalogInput(DWORD dw_DriverHandle, WORD w_Channel, pstr_InitAnalogInput ps_InitParameters, DWORD dw_StructSize)&quot;. Diese Funktion erwartet eine Datenstruktur zum Initialisieren des Eingangs (siehe Dokumentation zur Karte). Diese wird mit Hilfe eines ANY-Pointers vom Typ &quot;BYTE&quot; an die FC übergeben (ps_InitParameters). Ein separater Parameter für die Länge der Struktur (dw_StructSize) ist nicht erforderlich, dieser wird aus der Länge des ANY-Pointers gebildet.<br />
+
Entspricht der Funktion &quot;b_ADDIDATA_InitAnalogInput(DWORD dw_DriverHandle, WORD w_Channel, pstr_InitAnalogInput ps_InitParameters, DWORD dw_StructSize)&quot;. Diese Funktion erwartet eine Datenstruktur zum Initialisieren des Eingangs (siehe Dokumentation zur Karte). Diese wird mit Hilfe eines ANY-Pointers vom Typ &quot;BYTE&quot; an die FC übergeben (ps_InitParameters). Ein separater Parameter für die Länge der Struktur (dw_StructSize) ist nicht erforderlich, dieser wird aus der Länge des ANY-Pointers gebildet.
 +
 
 
Aufruf:
 
Aufruf:
  
 +
<code>
 
{|
 
{|
 
|-
 
|-
 
| CALL || FC 106  
 
| CALL || FC 106  
 
|-
 
|-
| INO || := W#16#0 || //w_Channel
+
|style="width:7em"| INO ||style="width:10em"| := W#16#0 || //w_Channel
 
|-
 
|-
 
| IN1 || := P#M 8.0 BYTE 10 || //ANY-Pointer auf die Struktur
 
| IN1 || := P#M 8.0 BYTE 10 || //ANY-Pointer auf die Struktur
Zeile 133: Zeile 149:
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
|}
 
|}
 +
</code>
 +
 +
'''ReleaseAnalogInput:'''
 +
 +
Entspricht der Funktion &quot;b_ADDIDATA_ReleaseAnalogInput(DWORD dw_DriverHandle, WORD w_Channel)&quot;.
  
'''ReleaseAnalogInput:'''<br />
 
Entspricht der Funktion &quot;b_ADDIDATA_ReleaseAnalogInput(DWORD dw_DriverHandle, WORD w_Channel)&quot;.<br />
 
 
Aufruf:
 
Aufruf:
  
 +
<code>
 
{|
 
{|
 
|-
 
|-
 
| CALL || FC 107  
 
| CALL || FC 107  
 
|-
 
|-
| INO || := W#16#0 || //w_Channel
+
|style="width:7em"| INO ||style="width:10em"| := W#16#0 || //w_Channel
 
|-
 
|-
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
|}
 
|}
 +
</code>
 +
 +
'''InitAnalogOutput:'''
 +
 +
Entspricht der Funktion &quot;b_ADDIDATA_Init1AnalogOutput(DWORD dw_DriverHandle, WORD w_Channel, BYTE b_VoltageMode, BYTE b_Polarity)&quot;.
  
'''InitAnalogOutput:'''<br />
 
Entspricht der Funktion &quot;b_ADDIDATA_Init1AnalogOutput(DWORD dw_DriverHandle, WORD w_Channel, BYTE b_VoltageMode, BYTE b_Polarity)&quot;.<br />
 
 
Aufruf:
 
Aufruf:
  
 +
<code>
 
{|
 
{|
 
|-
 
|-
 
| CALL || FC 108  
 
| CALL || FC 108  
 
|-
 
|-
| INO || := W#16#0 || //w_Channel
+
|style="width:7em"| INO ||style="width:10em"| := W#16#0 || //w_Channel
 
|-
 
|-
 
| IN1 || := B#16#0 || //b_VoltageMode
 
| IN1 || := B#16#0 || //b_VoltageMode
Zeile 163: Zeile 187:
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
|}
 
|}
 +
</code>
 +
 +
'''ReadAnalogInput:'''
 +
 +
Entspricht der Funktion &quot;b_ADDIDATA_Read1AnalogInput(DWORD dw_DriverHandle, WORD w_Channel, DWORD dw_ConvertingTime, BYTE b_ConvertingTimeUnit, BYTE b_InterruptFlag, PDWORD pdw_ChannelValue)&quot;.Diese Funktion erwartet einen Pointer auf die Rückgabewerte (siehe Dokumentation zur Karte). Diese wird mit Hilfe eines ANY-Pointers vom Typ &quot;DWORD&quot; an die FC übergeben (pdw_ChannelValue). Beachten Sie, dass der ANY-Pointer immer die Länge DWORD 3 (12 Byte) besitzen muss.Der Parameter b_InterruptFlag wird nicht verwendet, da der Treiber ausschließlich im Polling-Mode arbeitet
  
'''ReadAnalogInput:'''<br />
 
Entspricht der Funktion &quot;b_ADDIDATA_Read1AnalogInput(DWORD dw_DriverHandle, WORD w_Channel, DWORD dw_ConvertingTime, BYTE b_ConvertingTimeUnit, BYTE b_InterruptFlag, PDWORD pdw_ChannelValue)&quot;.Diese Funktion erwartet einen Pointer auf die Rückgabewerte (siehe Dokumentation zur Karte). Diese wird mit Hilfe eines ANY-Pointers vom Typ &quot;DWORD&quot; an die FC übergeben (pdw_ChannelValue). Beachten Sie, dass der ANY-Pointer immer die Länge DWORD 3 (12 Byte) besitzen muss.Der Parameter b_InterruptFlag wird nicht verwendet, da der Treiber ausschließlich im Polling-Mode arbeitet<br />
 
 
Aufruf:
 
Aufruf:
  
 +
<code>
 
{|
 
{|
 
|-
 
|-
 
| CALL || FC 109  
 
| CALL || FC 109  
 
|-
 
|-
| INO || := W#16#0 || //w_Channel
+
|style="width:7em"| INO ||style="width:10em"| := W#16#0 || //w_Channel
 
|-
 
|-
 
| IN1 || := DW#16#0 || //dw_ConvertingTime
 
| IN1 || := DW#16#0 || //dw_ConvertingTime
Zeile 182: Zeile 210:
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
|}
 
|}
 +
</code>
 +
 +
'''WriteAnalogOutput:'''
 +
 +
Entspricht der Funktion &quot;b_ADDIDATA_Write1AnalogOutput(DWORD dw_DriverHandle, WORD w_Channel, dw_ValueToWrite)&quot;.
  
'''WriteAnalogOutput:'''<br />
 
Entspricht der Funktion &quot;b_ADDIDATA_Write1AnalogOutput(DWORD dw_DriverHandle, WORD w_Channel, dw_ValueToWrite)&quot;.<br />
 
 
Aufruf:
 
Aufruf:
  
 +
<code>
 
{|
 
{|
 
|-
 
|-
 
| CALL || FC 110  
 
| CALL || FC 110  
 
|-
 
|-
| INO || := W#16#0 || //w_Channel
+
|style="width:7em"| INO ||style="width:10em"| := W#16#0 || //w_Channel
 
|-
 
|-
 
| IN1 || := DW#16#0 || //dw_ValueToWrite
 
| IN1 || := DW#16#0 || //dw_ValueToWrite
Zeile 197: Zeile 229:
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
| RET_VAL || := MW 0 || //RET_VAL Fehlercode
 
|}
 
|}
 +
</code>
  
 
== Rückgabewerte: ==
 
== Rückgabewerte: ==
  
Bei Erfolg wird RET_VAL = 0 zurückgegeben.<br />
+
Bei Erfolg wird RET_VAL = 0 zurückgegeben.
Trat ein Fehler auf, wird soweit möglich, der Fehlercode der ADDIDATA.DLL durchgereicht.<br />
+
 
 +
Trat ein Fehler auf, wird soweit möglich, der Fehlercode der ADDIDATA.DLL durchgereicht.
 +
 
 
Sollte dies nicht möglich sein, werden die folgenden Fehlercodes zurückgegeben:
 
Sollte dies nicht möglich sein, werden die folgenden Fehlercodes zurückgegeben:
  
<table>
 
<tbody>
 
<tr class="odd">
 
<td align="left">Fehlercode</td>
 
<td align="left">Ursache</td>
 
</tr>
 
<tr class="even">
 
<td align="left">0x807F</td>
 
<td align="left">DriverHandle nicht vorhanden</td>
 
</tr>
 
<tr class="odd">
 
<td align="left">0x8042</td>
 
<td align="left">Fehler beim Lesen eines Eingangs</td>
 
</tr>
 
<tr class="even">
 
<td align="left">0x8043</td>
 
<td align="left">Fehler beim Schreiben eines Ausgangs</td>
 
</tr>
 
<tr class="odd">
 
<td align="left">0x8003</td>
 
<td align="left">Falscher Typ des ANY-Pointers</td>
 
</tr>
 
<tr class="even">
 
<td align="left">0x8023</td>
 
<td align="left">ANY-Pointer zeigt auf einen nicht vorhandenen Bereich oder besitzt nicht die richtige Länge</td>
 
</tr>
 
</tbody>
 
</table>
 
  
'''SPS geht in STOP:'''<br />
+
{| class="wikitable"
Geht die ''S7-SoftSPS'' in STOP, so wird im Diagnosepuffer ein entsprechender Fehlercode eingetragen, der mit dem Programmierwerkzeug (''S7 für Windows''<sup>®</sup>, STEP<sup>®</sup>7) ausgelesen werden kann.
+
|-
 +
! Fehlercode !! Ursache
 +
|-
 +
| 0x807F || DriverHandle nicht vorhanden
 +
|-
 +
| 0x8042 || Fehler beim Lesen eines Eingangs
 +
|-
 +
| 0x8043 || Fehler beim Schreiben eines Ausgangs
 +
|-
 +
| 0x8003 || Falscher Typ des ANY-Pointers
 +
|-
 +
| 0x8023 || ANY-Pointer zeigt auf einen nicht vorhandenen Bereich oder besitzt nicht die richtige Länge
 +
|}
  
<table>
+
 
<tbody>
+
'''SPS geht in STOP:'''
<tr class="odd">
+
 
<td align="left">Fehlercode</td>
+
Geht die ''S7-SoftSPS'' in STOP, so wird im Diagnosepuffer ein entsprechender Fehlercode eingetragen, der mit dem Programmierwerkzeug (''S7 für Windows''<sup>®</sup>, STEP<sup>®</sup>7) ausgelesen werden kann.
<td align="left">Ursache</td>
+
 
</tr>
+
 
<tr class="even">
+
{| class="wikitable"
<td align="left">0xA140</td>
+
|-
<td align="left">Bei &quot;i_ADDIDATA_OpenWin32Driver” ist ein Fehler aufgetreten. Die Fehlernummer der ADDIDATA.DLL steht im nächsten Diagnosepuffer-Eintrag</td>
+
! Fehlercode !! Ursache
</tr>
+
|-
</tbody>
+
| 0xA140 || Bei "i_ADDIDATA_OpenWin32Driver” ist ein Fehler aufgetreten. Die Fehlernummer der ADDIDATA.DLL steht im nächsten Diagnosepuffer-Eintrag
</table>
+
|}

Aktuelle Version vom 13. Dezember 2012, 09:41 Uhr

Der ADDI-DATA-Treiber ermöglicht es, Digital I/O und Analog I/O Karten von ADDI-DATA aus dem SPS-Programm der S7-SoftSPS heraus anzusprechen. Dies erfolgt durch Zugriffe auf eine in der ADDIPACK-Software konfigurierte virtuelle Karte über Funktionen (FC-Bausteine), die im SPS-Programm aufgerufen werden müssen. Ein zyklischer Datenaustausch über das Prozessabbild ist aufgrund des Aufbaus der ADDI-DATA-Funktionen nicht sinnvoll und daher als FC-Aufruf realisiert.

Voraussetzungen

  • Die Interfacekarte muss im Rechner eingebaut sein
  • Die entsprechenden Treiber von ADDI-DATA müssen installiert sein
  • Die Software ADDIPACK muss installiert und korrekt lizenziert sein
  • Die Interfacekarte muss im ADDIPACK konfiguriert sein

(sollte es hierbei Probleme geben wenden Sie sich bitte an die ADDI-DATA Dokumentation und/oder an den ADDI-DATA Support)

  • In der S7-SoftSPS muss der "ADDI-DATA PC-Karten" Treiber gewählt sein

Zugriff auf die I/O Karte

Die durch den Treiber in der S7-SoftSPS installierten FC-Bausteine greifen auf Funktionen der von ADDI-DATA bereitgestellten ADDIDATA.DLL zu. Diese Funktionen werden transparent von den entsprechenden FC-Bausteinen in das SPS-Programm eingeblendet. Für genauere Informationen lesen sie bitte die entsprechende Dokumentationen von ADDI-DATA. Der in der ADDI-DATA Dokumentation beschriebene Parameter "dw_DriverHandle" muss nicht beachtet werden, da sich der S7-SoftSPSTreiber selbst um das Öffnen und Schließen sowie die Übergabe des "DriverHandle" an die ADDI-DATA Funktionen kümmert.


Read8DigitalInputs:

Entspricht der Funktion "b_ADDIDATA_Read8DigitalInputs (DWORD dw_DriverHandle, BYTE b_Port, PBYTE pb_PortValue)".

Aufruf:

CALL FC 100
INO  := B#16#0 //b_Port
RET_VAL  := MW 0 //RET_VAL Fehlercode
OUT1  := MB 2 //pb_PortValue

Der Parameter IN0 entspricht dem ADDI-DATA Parameter b_Port, der Parameter OUT1 entspricht dem ADDI-DATA Parameter pb_PortValue. Um den dw_DriverHandle kümmert sich der Treiber selbst, in RET_VAL steht das Funktionsergebnis. Dieses Schema gilt analog für alle Treiberfunktionen.


Read16DigitalInputs:

Entspricht der Funktion "b_ADDIDATA_Read16DigitalInputs(DWORD dw_DriverHandle, BYTE b_Port, PWORD pw_PortValue)".

Aufruf:

CALL FC 101
INO  := B#16#0 //b_Port
RET_VAL  := MW 0 //RET_VAL Fehlercode
OUT1  := MB 2 //pw_PortValue

Read32DigitalInputs:

Entspricht der Funktion "b_ADDIDATA_Read32DigitalInputs(DWORD dw_DriverHandle, BYTE b_Port, PDWORD pdw_PortValue)".

Aufruf:

CALL FC 102
INO  := B#16#0 //b_Port
RET_VAL  := MW 0 //RET_VAL Fehlercode
OUT1  := MD 2 //pdw_PortValue

Set8DigitalOutputs:

Entspricht der Funktion "b_ADDIDATA_Set8DigitalOutputsOn(DWORD dw_DriverHandle, BYTE b_Port, BYTE b_PortValue)".

Aufruf:

CALL FC 103
INO  := B#16#0 //b_Port
IN1  := B#16#0 //b_PortValue
RET_VAL  := MW 0 //RET_VAL Fehlercode

Set16DigitalOutputs:

Entspricht der Funktion "b_ADDIDATA_Set16DigitalOutputsOn(DWORD dw_DriverHandle, BYTE b_Port, WORD w_PortValue)".

Aufruf:

CALL FC 104
INO  := B#16#0 //b_Port
IN1  := B#16#0 //w_PortValue
RET_VAL  := MW 0 //RET_VAL Fehlercode

Set32DigitalOutputs:

Entspricht der Funktion "b_ADDIDATA_Set32DigitalOutputsOn(DWORD dw_DriverHandle, BYTE b_Port, DWORD dw_PortValue)".

Aufruf:

CALL FC 105
INO  := B#16#0 //b_Port
IN1  := DW#16#0 //dw_PortValue
RET_VAL  := MW 0 //RET_VAL Fehlercode

InitAnalogInput:

Entspricht der Funktion "b_ADDIDATA_InitAnalogInput(DWORD dw_DriverHandle, WORD w_Channel, pstr_InitAnalogInput ps_InitParameters, DWORD dw_StructSize)". Diese Funktion erwartet eine Datenstruktur zum Initialisieren des Eingangs (siehe Dokumentation zur Karte). Diese wird mit Hilfe eines ANY-Pointers vom Typ "BYTE" an die FC übergeben (ps_InitParameters). Ein separater Parameter für die Länge der Struktur (dw_StructSize) ist nicht erforderlich, dieser wird aus der Länge des ANY-Pointers gebildet.

Aufruf:

CALL FC 106
INO  := W#16#0 //w_Channel
IN1  := P#M 8.0 BYTE 10 //ANY-Pointer auf die Struktur
RET_VAL  := MW 0 //RET_VAL Fehlercode

ReleaseAnalogInput:

Entspricht der Funktion "b_ADDIDATA_ReleaseAnalogInput(DWORD dw_DriverHandle, WORD w_Channel)".

Aufruf:

CALL FC 107
INO  := W#16#0 //w_Channel
RET_VAL  := MW 0 //RET_VAL Fehlercode

InitAnalogOutput:

Entspricht der Funktion "b_ADDIDATA_Init1AnalogOutput(DWORD dw_DriverHandle, WORD w_Channel, BYTE b_VoltageMode, BYTE b_Polarity)".

Aufruf:

CALL FC 108
INO  := W#16#0 //w_Channel
IN1  := B#16#0 //b_VoltageMode
IN2  := B#16#0 //b_Polarity
RET_VAL  := MW 0 //RET_VAL Fehlercode

ReadAnalogInput:

Entspricht der Funktion "b_ADDIDATA_Read1AnalogInput(DWORD dw_DriverHandle, WORD w_Channel, DWORD dw_ConvertingTime, BYTE b_ConvertingTimeUnit, BYTE b_InterruptFlag, PDWORD pdw_ChannelValue)".Diese Funktion erwartet einen Pointer auf die Rückgabewerte (siehe Dokumentation zur Karte). Diese wird mit Hilfe eines ANY-Pointers vom Typ "DWORD" an die FC übergeben (pdw_ChannelValue). Beachten Sie, dass der ANY-Pointer immer die Länge DWORD 3 (12 Byte) besitzen muss.Der Parameter b_InterruptFlag wird nicht verwendet, da der Treiber ausschließlich im Polling-Mode arbeitet

Aufruf:

CALL FC 109
INO  := W#16#0 //w_Channel
IN1  := DW#16#0 //dw_ConvertingTime
IN2  := B#16#0 //b_ConvertingTimeUnit
IN3  := P#M4.0 DWORD 3 //ANY-Pointer auf Ergebnis
RET_VAL  := MW 0 //RET_VAL Fehlercode

WriteAnalogOutput:

Entspricht der Funktion "b_ADDIDATA_Write1AnalogOutput(DWORD dw_DriverHandle, WORD w_Channel, dw_ValueToWrite)".

Aufruf:

CALL FC 110
INO  := W#16#0 //w_Channel
IN1  := DW#16#0 //dw_ValueToWrite
RET_VAL  := MW 0 //RET_VAL Fehlercode

Rückgabewerte:

Bei Erfolg wird RET_VAL = 0 zurückgegeben.

Trat ein Fehler auf, wird soweit möglich, der Fehlercode der ADDIDATA.DLL durchgereicht.

Sollte dies nicht möglich sein, werden die folgenden Fehlercodes zurückgegeben:


Fehlercode Ursache
0x807F DriverHandle nicht vorhanden
0x8042 Fehler beim Lesen eines Eingangs
0x8043 Fehler beim Schreiben eines Ausgangs
0x8003 Falscher Typ des ANY-Pointers
0x8023 ANY-Pointer zeigt auf einen nicht vorhandenen Bereich oder besitzt nicht die richtige Länge


SPS geht in STOP:

Geht die S7-SoftSPS in STOP, so wird im Diagnosepuffer ein entsprechender Fehlercode eingetragen, der mit dem Programmierwerkzeug (S7 für Windows®, STEP®7) ausgelesen werden kann.


Fehlercode Ursache
0xA140 Bei "i_ADDIDATA_OpenWin32Driver” ist ein Fehler aufgetreten. Die Fehlernummer der ADDIDATA.DLL steht im nächsten Diagnosepuffer-Eintrag