S7-SoftSPS:ADDI-DATA-Konfiguration: Unterschied zwischen den Versionen
Joscha (Diskussion | Beiträge) |
Joscha (Diskussion | Beiträge) |
||
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 19: | Zeile 20: | ||
Aufruf: | Aufruf: | ||
+ | |||
{| | {| | ||
Zeile 30: | Zeile 32: | ||
| OUT1 || := MB 2 || //pb_PortValue | | 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. | 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 38: | Zeile 42: | ||
Aufruf: | Aufruf: | ||
+ | |||
{| | {| | ||
Zeile 49: | Zeile 54: | ||
| OUT1 || := MB 2 || //pw_PortValue | | OUT1 || := MB 2 || //pw_PortValue | ||
|} | |} | ||
+ | |||
'''Read32DigitalInputs:''' | '''Read32DigitalInputs:''' | ||
Zeile 55: | Zeile 61: | ||
Aufruf: | Aufruf: | ||
+ | |||
{| | {| | ||
Zeile 66: | Zeile 73: | ||
| OUT1 || := MD 2 || //pdw_PortValue | | OUT1 || := MD 2 || //pdw_PortValue | ||
|} | |} | ||
+ | |||
'''Set8DigitalOutputs:''' | '''Set8DigitalOutputs:''' | ||
Zeile 72: | Zeile 80: | ||
Aufruf: | Aufruf: | ||
+ | |||
{| | {| | ||
Zeile 83: | Zeile 92: | ||
| RET_VAL || := MW 0 || //RET_VAL Fehlercode | | RET_VAL || := MW 0 || //RET_VAL Fehlercode | ||
|} | |} | ||
+ | |||
'''Set16DigitalOutputs:''' | '''Set16DigitalOutputs:''' | ||
Zeile 89: | Zeile 99: | ||
Aufruf: | Aufruf: | ||
+ | |||
{| | {| | ||
Zeile 100: | Zeile 111: | ||
| RET_VAL || := MW 0 || //RET_VAL Fehlercode | | RET_VAL || := MW 0 || //RET_VAL Fehlercode | ||
|} | |} | ||
+ | |||
'''Set32DigitalOutputs:''' | '''Set32DigitalOutputs:''' | ||
Zeile 106: | Zeile 118: | ||
Aufruf: | Aufruf: | ||
+ | |||
{| | {| | ||
Zeile 117: | Zeile 130: | ||
| RET_VAL || := MW 0 || //RET_VAL Fehlercode | | RET_VAL || := MW 0 || //RET_VAL Fehlercode | ||
|} | |} | ||
+ | |||
'''InitAnalogInput:''' | '''InitAnalogInput:''' | ||
Zeile 123: | Zeile 137: | ||
Aufruf: | Aufruf: | ||
+ | |||
{| | {| | ||
Zeile 134: | Zeile 149: | ||
| RET_VAL || := MW 0 || //RET_VAL Fehlercode | | RET_VAL || := MW 0 || //RET_VAL Fehlercode | ||
|} | |} | ||
+ | |||
'''ReleaseAnalogInput:''' | '''ReleaseAnalogInput:''' | ||
Zeile 140: | Zeile 156: | ||
Aufruf: | Aufruf: | ||
+ | |||
{| | {| | ||
Zeile 149: | Zeile 166: | ||
| RET_VAL || := MW 0 || //RET_VAL Fehlercode | | RET_VAL || := MW 0 || //RET_VAL Fehlercode | ||
|} | |} | ||
+ | |||
'''InitAnalogOutput:''' | '''InitAnalogOutput:''' | ||
Zeile 155: | Zeile 173: | ||
Aufruf: | Aufruf: | ||
+ | |||
{| | {| | ||
Zeile 168: | Zeile 187: | ||
| RET_VAL || := MW 0 || //RET_VAL Fehlercode | | RET_VAL || := MW 0 || //RET_VAL Fehlercode | ||
|} | |} | ||
+ | |||
'''ReadAnalogInput:''' | '''ReadAnalogInput:''' | ||
Zeile 174: | Zeile 194: | ||
Aufruf: | Aufruf: | ||
+ | |||
{| | {| | ||
Zeile 189: | Zeile 210: | ||
| RET_VAL || := MW 0 || //RET_VAL Fehlercode | | RET_VAL || := MW 0 || //RET_VAL Fehlercode | ||
|} | |} | ||
+ | |||
'''WriteAnalogOutput:''' | '''WriteAnalogOutput:''' | ||
Zeile 195: | Zeile 217: | ||
Aufruf: | Aufruf: | ||
+ | |||
{| | {| | ||
Zeile 206: | Zeile 229: | ||
| RET_VAL || := MW 0 || //RET_VAL Fehlercode | | RET_VAL || := MW 0 || //RET_VAL Fehlercode | ||
|} | |} | ||
+ | |||
== Rückgabewerte: == | == Rückgabewerte: == | ||
Zeile 214: | Zeile 238: | ||
Sollte dies nicht möglich sein, werden die folgenden Fehlercodes zurückgegeben: | Sollte dies nicht möglich sein, werden die folgenden Fehlercodes zurückgegeben: | ||
+ | |||
{| class="wikitable" | {| class="wikitable" | ||
Zeile 229: | Zeile 254: | ||
| 0x8023 || ANY-Pointer zeigt auf einen nicht vorhandenen Bereich oder besitzt nicht die richtige Länge | | 0x8023 || ANY-Pointer zeigt auf einen nicht vorhandenen Bereich oder besitzt nicht die richtige Länge | ||
|} | |} | ||
+ | |||
'''SPS geht in STOP:''' | '''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''<sup>®</sup>, STEP<sup>®</sup>7) ausgelesen werden kann. | 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. | ||
+ | |||
{| class="wikitable" | {| class="wikitable" |
Version vom 28. November 2012, 11:25 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 |