Ips7 Link English

Download as pdf or txt
Download as pdf or txt
You are on page 1of 41

IP-S7-LINK

RFC 1006
for
PC SIMATIC S7
S7 200 1200 300 400 Siemens Logo
MS-Windows 2000/NT/XP/Vista/7, Linux
C/C++, c#, VB, VB.net,Delphi, Excel, Access, PHP and others

Sllnerstr. 9
D-92637 Weiden
www.traeger.de
[email protected]
Phone +49 961.482300

Page 1 of 41

Version 1.64.78 (30.1.2014)

Requirements:
operating systems

MS-Windows 95 ,98, NT, 2000, XP,Vista, Windows 7

Linux
programming languages

C, C++, Delphi, VisualBasic, C-Sharp, VB.net, Access, Excel, PHP

Hardware

PC with installed TCP/IP-protocol and ethernet card

PLC

Simatic S7 200/300/400 with CP 243, CP343-1, CP-443-1, or


LeanCP, PLC with ProfiNet S7 1200, or S7-LAN

Delivery:
The following files can included:
main folder
Ips7lnk.pdf

german manual

ips7lnk-en.pdf

english manual

Version.htm

release information

folder win32

Files Windows 32 - Bit

IPS7LNK.DLL

Driver DLL

IPS7LNK.LIB

Lib-File to be linked with C++

Folder x64

Files Windows 64 Bit

IPS7LNK.DLL

Driver DLL

IPS7LNK.LIB

Lib-File to be linked with C++

Folder CPP

Files for Visual CPP C++

IPS7LNK.H

Header-File for C / C++

IPS7LNK.DLL

Driver DLL

IPS7LNK.LIB

Lib-File to be linked with C++

IPS7DEMO.DSP

Project file for Visual C++ V 6.00

IPS7DEMO.CPP

sample program C++

IPS7DEMO.EXE

EXE-File der CPP-Demo

Folder Delphi

Files for Delphi

IPS7LNK.PAS

Delphi-Header TPU im Source code

IPS7LNK.DLL

Driver DLL

Page 2 of 41

Folder Delphi

Files for Delphi

IPS7DEMO.exe

EXE-File of Delphi demo

IPS7DEMO.cfg

Delphi Project files

IPS7DEMO.dof
IPS7DEMO.dpr
IPS7DEMO.res
IPS7LNK.dcu
main.dcu
main.dfm
main.pas
OEM.BMP

Page 3 of 41

Folder VisualBasic

Files for Visual Basic

IPS7LNK.DLL

Driver DLL, Note: For Visual Basic and Excel, copy this file
to windows system folder!

IPS7LNK.BAS

Header / Module file for Visual Basic

IPS7DEMO.EXE

EXE-File of VB demo

IPS7DEMO.FRM

Visual Basic project files

IPS7DEMO.FRX
IPS7DEMO.VBP
IPS7DEMO.VBW

Folder Excel

Files for Excel

IPS7LNK.DLL

Driver DLL, Note: For Visual Basic and Excel copy these files
to windows system folder!

IPS7LNK.BAS

Header/Module file for VisualBasic

IPS7DEMO.XLS

Excel-File with macro for demo

Folder PHP

Files for PHP

ips7lnk_php.so

Module of the PHP extension, copy ths file to the extension folder
of your PHP installation

Folder DotNet

Files for. Net

DemoCSharp

Folder demo program C#

DemoVB.net

Folder demo program VB.net

NetFiles

Folder with assemblies for the different frameworks (2.0/3.0/3.5)

ips7lnk.chm

Helo file / manual for .net Assemblies

Installation:
Windows: Copy the DLL to the program folder of your application or to the Windows
system directory.
Linux: link the .o-file to your application:
For .net see the documentation in ips7lnk.chm-file. For .net (C# and VB.net) all functiones are
embedded in a class. There exist assemblies for frameworks 2.0/3.0/3.5. These assemblies are
using the ips7lnk.dll. Take care to copy ips7lnk.dll to your program folder or to the Windows
system folder. Put the corresponding assembly ips7lnknet.dll as reference to your application.
So all functions are available. Copy als this file to your program folder or to the Windows
system folder

Page 4 of 41

PHP:
Copy the extionsion ips7lnk_php.so to the extension folder of your PHP installation
Take care that the extension is loaded. Do in PHP.ini or in your program by loading
dynamically.
for php.ini: extension = ips7lnk_php.so
in your program: ld (ips7lnk_php.so);
How it works:
IP-S7-LINK is a DLL for MS-Windows (95/98/2000/NT/XP/Vista/7)or a library or an extionsion
or .o-file for Linux (C,C++,PHP). With IP-S7-LINK you can connect your PC with industrial
ethernet of Siemens SIMATIC S7 systems from. Easy to use- functions make it very easy to
communicate with the PLC witht C, C++, Delphi, Visual Basic, Excel or PHP. For connection to
the PLC you need onldy the ip address , number of rack and slot of the PLC. So you can read
and write Flags, In, Out, Timer, Counter and data blocks of the PLC.

Page 5 of 41

Description in detail:
Please note: The functions are using the standard socket interface, with the result that the
function returns only after performing the task to the caller. For asynchronous operation, call
these functions easily from a separate thread on which to communicate to the system.
The following functions are available:
Functions for initialization:
Function

Function

Description / Purpose

(PHP)
IPS7Open

ips7_open

to initialize the connection, there is only memory


prepared. The tcp/ip connections is to be started with the
first call to the read or write functions.
The connection is done over the OP-Channel of the
PLC.

IPS7OpenPG

ips7_openpg

Version 1.17
to initialize the connection, there is only memory
prepared. The tcp/ip connections is to be started with the
first call to the read or write functions.
The connection is done over the PG-Channel of the
PLC.

IPS7OpenS7200

ips7_opens7200

Version 1.21
to initialize the connection, there is only memory
prepared. The tcp/ip connections is to be started with the
first call to the read or write functions.
The connection is done to a S7-200 PLC.

Calling parameters:
N

Data type

o.

Data

Name

Function

IPAdr

IP address of PLC format: xxx.xxx.xxx.xxx. e.g.:

type
(PHP)

32-Bit

string

Pointer to

192.169.0.100

C-String
2

32-Bit

long

Rack

Value

Number of racks ,in which the PLC-CPU is plugged in. The


numbering starts at

0. Usually: 0

unsigned
3

32-Bit
Value
unsigned

Page 6 of 41

long

Slot

Number of slot in which CPU is plugged in. Numbering


starts at 1, usually 2.Dont care with S7-200 systems.

Data type

o.

Data

Name

Function

RxTimeout

timeout in milliseconds waiting for TCP/IP packed from the

type
(PHP)

32-Bit

long

Value

PLC 0 means default setting = 500 ms

unsigned
5

32-Bit

long

TxTimeout

Value

timeout in milliseconds transmitting a TCP/IP packed to the


PLC. 0 means default setting= 500 ms

unsigned
6

32-Bit

long

ConTimeout

Timeout in milliseconds waiting for connection to the PLC

Value

0 means default setting: = 5000 ms ( 5sec.)

unsigned

Must be changed if necessary.

Page 7 of 41

Function

Function

Description / Purpose

(PHP)
IPS7OpenEx

ips7_openex

Version 1.23
to initialize the connection, there is only memory prepared.
The tcp/ip connections is to be started with the first call to
the read or write functions.
With parameter AccessMode you can select the
connection channel or the PLC type (S7
200/300/400) or you can make connection over a
S7-Subnet.

calling parameters:
N

Data type

o.

Data

Name

Function

IPAdr

IP address of PLC format: xxx.xxx.xxx.xxx. sample:

type
(PHP)

32-Bit

string

Pointer to

192.169.0.100

C-String
2

32-Bit

long

Rack

Value

Number of racks ,in which the PLC-CPU is plugged in. The


numbering starts at

0. Usually: 0

unsigned
3

32-Bit

long

Slot

Value

Number of slot in which CPU is plugged in. Numbering


starts at 1, usually 2.Dont care with S7-200 systems.

unsigned
4

32-Bit

long

SubNetId

Subnet-ID, if you want to connect over S7-Subnet. In

Value

Step-S7 software the address ist displayed as e.g.: 0035

unsigned

0001
So give 0x00350001 as parameter.
This paramter is only used for AccessMode 10 or 11. For
other AccessModes dont care.

32-Bit

long

DstMPIAdr

Destination MPI address, if you want to connect over S7-

Value

Subnet This paramter is only used for AccessMode 10 or

unsigned

11. For other AccessModes dont care.

Page 8 of 41

Data type

o.

Data

Name

Function

AccessMode

Mode of access

type
(PHP)

32-Bit

long

Value

0 = connect over OP-channel with rack and slot number

unsigned

1 =connect over PG-channel with rack and slot number


2 = connect to S7-200 over inserted TCP/IP-CP of the PLC
3 = connect ti Siemens Logo PLC (V 1.60.78)
10 = connect over OP-channel over subnet connected to the
PLC which ist addressed with rack and slot number, subnetID and DstMPI address.
11 = connect over PG-channel over subnet connected to the
PLC which ist addressed with rack and slot number, subnetID and DstMPI address..

32-Bit

long

RxTimeout

Value

Timeout in milliseconds receiving TCP/IP-packet from the


PLC. 0 means default value: = 500 ms

unsigned
8

32-Bit

long

TxTimeout

Value

Timeout in milliseconds sending TCP/IP-packet to the PLC. 0


means default value: = 500 ms

unsigned
9

32-Bit

long

ConTimeout

Timeout in milliseconds establishing the IP connection to

Value

the PLC.

unsigned

0 means default value: = 5000 ms ( 5sec.)


increase if necessary.

Return value of the open functions:


The return value of the open-functions is a signed 32-bit value with the meaning:
Value Description of error
>= 0 Everything okay

meaning
Return value ist the reference number for this connection.
This calue ist to be use to call the other functions with the
input parameter Ref.

-2 No resource available.
-10 AccessMode invalid (from 1.23)

maximum of the available connections is reached.


the value passed for AccessMode is invalid.
see IPS7OpenEx

Page 9 of 41

Function

Function

Description / Purpose

IPS7Connect ips7_connect

Executes an explicit connection to the PLC.


Since Version 1.35! This function does only connect to PLC
without reading or writing. Usefull if you want to check the
connection befor the first call tor read or write.

Calling parameters:
Nr Data type

Data type Name

Function

(PHP)
1

32-Bit

long

Ref

Reference of connection generated with

Value

IPS7Open/IPS7OpenEx. Used to internally identify the

unsigned

connection.

Return value:
IPS7Connect returns a signed 32-Bit Value. The meaning is:
Value

Description of error
1 connection established

<= 0 connetion was not established. For detail see the return value of the read/write-functions.

Page 10 of 41

Function

Function

Description / Purpose

IPS7GetConnectStatus

ips7_getconnectstatus

check the status of TCP/IP connection to


the PLC.

Calling parameters:
Nr Data type

Data type Name

Function

(PHP)
1

32-Bit

long

Ref

Reference of connection generated with

Value

IPS7Open/IPS7OpenEx. Used to internally identify the

unsigned

connection.

Return value:
IPS7Connect returns signed 32-bit value. The meaning is:
Value

Description
1 connection established.

<= 0 connection disconnected.Call read/write functions again or all call IPS7Connect to connect.

Page 11 of 41

Function

Function

IPS7SetKeepAlive ips7_setkeepalive

Description / Purpose
Since V 1.35!
To set individual TCP/IP KeepAlive times. Use only if xou
want to change the default TCP/IP settings. Call this
function immediately after calling "Open"-function.

Calling parameters:
Nr Data type

Data type Name

Function

(PHP)
1

32-Bit

long

Ref

Value

IPS7Open/IPS7OpenEx. Used to internally identify the

unsigned

connection.

32-Bit

long

AliveTime

If there is no traffic in "AliveTime" (ms) for the TCP/IPconnection so a KeepAlive-packet ist sent to check the
connection. If an error happens the IP-Stack retries the in
"AliveInterval" (ms) the next KeepAlive-packet. This is
repeated several times within"AliveInterval". (Windows 6
times). If not successfully the connection is closed.

long

AliveInterval

Interval in ms the KeepAlive packet to be repeated. The time


gets active if a error happened transmitting or receiving a
KeepAlive-packet.

Value
unsigned

Reference of connection generated with

32-Bit
Value
unsigned

Return value:
IPS7SetKeepAlive returns a signed 32-Bit Value. The meaning is:
Value

Description
0 setting the value was successfully.

< 0 KeepAlive-time couldnt be set.

Page 12 of 41

Function

Function

Description / Purpose

IPS7Close

ips7_close

Used to deinitialize the connection. The TCP/IP connection


is closed, allocated memory is released.

Calling parameters:
Nr Data type

Data type Name

Function

(PHP)
1

32-Bit

long

Ref

Reference of connection generated with

Value

IPS7Open/IPS7OpenEx. Used to internally identify the

unsigned

connection.

Return value:
The Functions returns a signed 32-Bit value. The meaning is:
Value Description of error
0 everything okay
-3 With the reference number

meaning / action
Connection closed, allocated memory released
Call any Open function!

passed, no open function was


called successfully.
-99 reference numbe invalid

------------------------

-30 only PHP

number or type of passed parmeters in valid

-31 only PHP

the internal conversion of data not successfully, e.g. a


string was passed but long was expected.

Page 13 of 41

Functions for reading and writing


Function

Function

Description / Purpose

(PHP)
IPS7RdW

ips7_rdw

reading word by word (16-bit) from PLC (I, O, F, DB )

IPS7RdPlcW

ips7_rdplcw

reading word by word (16-bit) from PLC (I, O, F, DB )


Note the start address is caluclated in PLC-address mode
(from 1.17)
so you can access to odd start addresses in the PLC

IPS7RdB

ips7_rdb

readind byte by byte (8 bit) from PLC (I, O, F, DB )

IPS7WrW

ips7_wrw

writing word by word (16 bit) to PLC (I, O, F, DB, C)

IPS7WrPlcW

ips7_wrplcw

writing word by word (16 bit) to PLC (I, O, F, DB, C)


Note the start address is caluclated in PLC-address mode
(from 1.17)
so you can access to odd start addresses in the PLC

IPS7WrB

ips7_wrb

writing byte by byte (8 bit) to PLC (I, O, F, DB, C)

IPS7RdDW

ips7_rddw

reading dword by dword (32-bit) from PLC (I, O, F, DB, T)

IPS7WrDW

ips7_wrdw

writing dword by dword (32 bit) to PLC (E, A, F, DB, T)

IPS7RdReal

ips7_rdreal

reading floating point values (I, O, F, DB )

IPS7WrReal

ips7_wrreal

writing floating point values (I, O, F, DB )

Before reading/writing word by word to the PLC check if you want to use the
starting address like PLC-programming-syntax or if you want to use the arithmetical
correct starting address. You have to select the right function IPS7RdPlcW/IPS7WrPlcW or
IPS7WrW/IPWrPlcW For details see New in Version 1.17!
Explanation for PHP
In PHP variables are in principle not assigned to a spezific data type. The determination of the
data type processes the extension module.
Basically:: The destiantion variable respectively source variable representing the read/write
bufferr (=parameter no. 6) have to be passed by refernce. You have to use the &
character.
z.B. $Res = ips7_rdplcw ($Ref, ord (M), 0, 0, 2, &$Value);
Value[0] is MW0 (Flag word)
Value[1] is MW2 (Flag word)
In PHP there do not exist 16-bit-values, instead all 16-bit-data from PLC are saved als long in
PHP.
The word-functions will save the result to an array of long. If you read only one single item, so
the result is saved to one single long (If the varable passed isnt yet an array. Reading and
writting of words (16-bit) is basically processed as a signed value. That is the value is
interpreted as a 16-bit integer. If the value should be processed as unsigned 16-bit integer, so
Page 14 of 41

you have to use the optional parameter 7 (bSigned).


The byte functions basically save the result as string. If you want to save the result an array of
longs set bLong = 1.
Calling parameters:
The read/write functions have the same calling parameters:
Nr

Data type

Data type

Name

Function

Ref

Reference of connection generated with

(PHP)
1

32-Bit

long

Value

IPS7Open/IPS7OpenEx. Used to internally identify the

unsigned

connection.

32-Bit

long

Typ

Selecting the memory area of the PLC to be processed(DB,

Value

In, Out,Flags...):

unsigned

D = 68 dec. Datablocks (DB)


E = 69, dec. In (Inputs)
A = 65 dec. Out (Outputs)
M = 77 dec. Flags (in german Merker)
T = 84 dec. Timer (access only as double word, 32 bit)
Timers of the PLC are saved with base of time and value in
BCD format. IP-S7-LINK automatically converts the
format an 32 bit value in units of milliseconds. The
resolution is 10 ms. Writing time values, the drivers will
select the best time base in the PLC. Note: Depending of
the size of the value an the selected time base, there will be
resolution errors. Allowed values from 0 to 9990000 ms
Z = 90 dec. Counter (german Zhler), supported ony
word functions
In the PLC counters are also saved in BCD format. Values
for counter are running frome 0 to 999. The driver converts
automatically to and from decimal fromat.

32-Bit

32-Bit

DBNr

Number of data block, only used with typeD. Otherwise

Value

Value

unsigned

unsigned

32-Bit

32-Bit

Value

Value

With word operations (IPS7RdW/IPS7WrW) = start word.

unsigned

unsigned

With byte/word (IPS7RdPLCW/IPS7WrPLCW) dword/floating

use value 0
Ab

Number of the first byte/word to be read from /written to.

point functions= start byte.


Accessing timer or counter this is the number of the first
element to be processed.
Page 15 of 41

Nr

Data type

Data type

Name

Function

(PHP)
5

32-Bit

32-Bit

Value

Value

unsigned

unsigned

32-Bit

mixed

Pointer

Anz

Count of items (byte, words, double words, floating points,


timer counter), to be read or written.

Buffer

Pointer / address of the destination/source buffer in your pc


program. Calling word functions this is a pointer to 16-bit
values, calling byte functions this is a pointer to 8-bit
values.Calling double word functions this is a pointer to 32bit values. Calliing floating point values this is a pointer to
double values.
Note for PHP:
In PHP pass the refernz of the variable:
calling:
ipss7_rdplcw
ips7_rdw
ips7_rddw
ips7_rdreal
Call e.g.: Result = ips7_rdplcw ($Ref, ord (M), 0, 6,5,
&$W);
Reading more than one single item the is converted in an
arry of longs or doubles. Reading only one single Value the
variable will be converted in long/double if this variable
were no array before.
If this variable is yet an array and reading an one single
item. The result is saved in the first element of the array.
Double words (ips7_rddw) are basically processed as signed
values.

Page 16 of 41

Nr

Data type

Data type

Name

Function

long

bSigned

Note for PHP:

(optional)

with

ipss7_rdplcw

ipss7_rdplcw

ips7_rdw

ips7_rdw

ipss7_wrplcw

(PHP)
7

---------

ipss7_wrplcw
ips7_wrdw

ips7_wrdw
Optionally you can select the value is processed as signed

bLong with or unsigned 16-bit integer. If this parameter is not passed


ips7_rdb

the value will be processed as 16-bit signed integer. Passing


the parameter the rule takes place:
0 = unsigned
1 = signed
To convert a single the varable after calling you can use the
functions ips7_i2w ord ips7_w2i.
For details look at these functions.
ips7_rdb
Ips7_rdb saves the result as string. If you like to save the
values as an array set bLong = 1 so the result saved as an
array of longs.

Page 17 of 41

Functions reading / writing setting/resetting bit


Function

Function (PHP)

Description / Purpose

IPS7RdBit

ips7_rdbit

read one Bin from PLC (I,O,F,DB )

IPS7SetBit

ips7_setbit

write one Bit to PLC (I,O,F,DB)

IPS7ResetBit

ips7_resetbit

reset one Bit to PLC (I,O,F,DB)

Calling parameters:
Bit read/write functions have the same input parameters:
Nr

Data type

Data type Name

Function

(PHP)
1

32-Bit

long

Ref

Reference of connection generated with

Value

IPS7Open/IPS7OpenEx. Used to internally identify the

unsigned

connection.

32-Bit

long

Typ

Selecting the memory area of the PLC to be processed(DB,

Value

In, Out,Flags...):

unsigned

D = 68 dec. Datablocks (DB)


E = 69, dec. In (Inputs)
A = 65 dec. Out (Outputs)
M = 77 dec. Flags (in german Merker)

32-Bit

32-Bit

Value

Value

unsigned

unsigned

32-Bit

32-Bit

Value

Value

unsigned

unsigned

32-Bit

DBNr

Number of data block, only used with typeD. Otherwise


use value 0

Ab

Number of the byte address e.g. M 10.0 pass 10.

long

Bit

Number of bit to read/write 0 .. 7. E.g. M 5.4 pass 4

mixed

Buffer

This parameter is only for IPS7RdBit.

Value
unsigned
6

32-Bit
Adresse

Address/pointer to buffer in your pc program. If Bit is 1


value is otherwise value is 0.
e.g.: read M 6.5
BYTE W;
IPS7RdBit (Ref, M`, 0, 6,5, &W);
Note for PHP:
In PHP pass the reference of the varaibale:
ips7_rdbit (Ref, ord (M), 0, 6,5, & $W);
The variable is automatically converted to long.

Page 18 of 41

Funtion for oOptimized reading of various data areas with one single call (new since
V 1.35)
Function

Function

Description / Purpose

(PHP)
IPS7RdMulti

ips7_rdmulti

Processes a mixed read job. The jobs will be filled in a list /


array of records / structs of type IPS7_RQ_MULTI and passed
to function.
The function sorts and bundles the jobs, and processe those
optimized.
NOTE!
Reading order can be different from the order of the passed
list.

IPS7RdMultiC

ips7_rdmulticalcpack The return value is the number of required communication

alcPacketCnt

etcnt

packages that are neede for all multi-read requests.


If return value ist 1 so all the required variables can be read in
one protocol.
Please note the return value:
> = 0: the number of packets
<0: An error occurred as below

IPS7RdMulti automatically performs a data transfer between PC and S7. The conversion is
comparable to the "Data type-casting" in the language. The bit width must be equal to or
greater than the data types in the PC than that in the PLC. The caller has to provide a
sufficiently large target area. Which means: If for example Two 16-bit value (total 32 bits) are
read and converted to double value (64 bit) in the PC. The size of the buffer in your PC
programm has to be minimum two double values (a total of 128 bits). The conversion looks
like in the example:

Value in PLC

Value in PC

6.0

1.0

The choice of PLC and PC data types is in the request job. Encoded using constants as
described in the following

Page 19 of 41

The structure of the request records / structs for IPS7RdMult


Name

Typ

Description / Purpose

DataArea

32-Bit

Selecting the memory area of the PLC to be processed(DB, In,

unsigned

Out,Flags...):
D = 68 dec. Datablocks (DB)
E = 69, dec. In (Inputs)
A = 65 dec. Out (Outputs)
M = 77 dec. Flags (in german Merker)
T = 84 dec. Timer (access only as double word, 32 bit)
Timers of the PLC are saved with base of time and value in BCD format.
IP-S7-LINK automatically converts the format an 32 bit value in units of
milliseconds. The resolution is 10 ms. Writing time values, the drivers will
select the best time base in the PLC. Note: Depending of the size of the
value an the selected time base, there will be resolution errors. Allowed
values from 0 to 9990000 ms
Z = 90 dec. Counter (german Zhler), supported ony word functions
In the PLC counters are also saved in BCD format. Values for counter are
running frome 0 to 999. The driver converts automatically to and from
decimal fromat.

DataType

32-Bit
unsigned

DBNr
Cnt

Data type in PLC


Name

Value

PLC-Data type / count of bits

IPS7_BIT

one Bit / Boolean

IPS7_BYTE

Byte (8 Bit)

IPS7_WORD

WORD 16 Bit unsigned integer

IPS7_INT

INT 16 Bit signed

IPS7_DWORD

DWORD 32 Bit unsigned integer

IPS7_DINT

long 32 Bit signed integer

IPS7_REAL

S7Real

IPS7_TIMER

Timer in S7 PLC

IPS7_COUNTER

counterr in S7 PLC

32-Bit

Data block number, this is only used for type 'D '. Otherwise there is the

unsigned

value "0"

32-Bit

Number of data elements that are to be read / written

unsigned
Start

32-Bit

Start byte in the PLC.

unsigned
StartBit

Page 20 of 41

32-Bit

The number of the first bit in the PLC, value (0 - 7), is used only for bit

unsigned

access, 0 otherwise

Name

Typ

Description / Purpose

PCDatyType

32-Bit

Data type im PC

unsigned

Result

Name

Value Data type in der PLC

PC_BYTE

Byte (8 Bit)

PC_WORD16

16 Bit unsigned integer

PC_INT16

16 Bit signed integer

PC_WORD32

32 Bit unsigned integer

PC_INT32

32 Bit signed integer

PC_FLOAT

32 Bit float in PC

PC_DOUBLE

64-Bit double in PC

32-Bit

Result after processing the job. The individual value can be found under

unsigned

the description:
Return value for Read/Write functions or Result in record
IPS7RdMulti

UserData_0

32-Bit

Free for the user to saveing additional information like pointers or handles

unsigned
UserData_1
Data

32-Bit

Free for the user to saveing additional information like pointers or

unsigned

handles.

32-Bit

Pointer / address of the data buffer in the PC program.

Pointer
pUserData

32-Bit

Free for the user to saveing additional information like pointers or

Pointer

handles.

Example for IPS7RdMulti in C /C++


// small function initializing of one request
void InitRq (IPS7_RQ_MULTI *pRq, long DataArea, long DataType, long PcDataArea,
long DBNr, long Start, long StartBit, long Cnt, void *pData)
{
pRq->DataArea = DataArea;
pRq->DataType = DataType;
pRq->DBNr = DBNr;
pRq->Cnt = Cnt;
pRq->Start = Start;
pRq->StartBit = StartBit;
pRq->PcDataType = PcDataArea;
pRq->Data = pData;
}
void DemoRdMulti (int Ref)
{
int EBits[64];
BYTE EBytes[64];
WORD MWords[32];
WORD DB10Words [150];
double DB10WordsAsDouble [150];
float DB20RealAsFloat [60];
LONG32 TimerAsInt [10];
int Cnt = 10;
int Res;

Page 21 of 41

IPS7_RQ_MULTI Rq[10] ; // Max. 10 jobs;


memset (Rq, 0, sizeof (Rq));
Cnt = 0;
// read from E 4.0 32 Bit
InitRq (&Rq[Cnt++], 'E', IPS7_BIT, PC_BYTE, 0, 4, 0, 32, EBits);
// read from EB0 20 Bytes and save starting at [20]
InitRq (&Rq[Cnt++], 'E', IPS7_BYTE, PC_BYTE, 0, 0, 0, 20, &EBytes[20]);
//read from MB 20 10 words
InitRq (&Rq[Cnt++], 'M', IPS7_WORD, PC_WORD16, 0, 20, 0, 1, MWords);
//read DB10 starting at byte 0, 150 words
InitRq (&Rq[Cnt++], 'D', IPS7_WORD, PC_WORD16, 10, 0, 0, 150, DB10Words);
//read DB20 starting at byte 0, 150 words, save as doubles to PC
InitRq (&Rq[Cnt++], 'D', IPS7_WORD, PC_DOUBLE, 10, 0, 0, 150, DB10WordsAsDouble);
//read DB20 starting at byte 6, 60 Real-Values, save as float value in PC
InitRq (&Rq[Cnt++], 'D', IPS7_REAL, PC_FLOAT, 10, 6, 0, 60, DB20RealAsFloat);
//read starting at timer 5, 10 timers, save as 32 bit integer
InitRq (&Rq[Cnt++], 'T', IP,S7_TIMER, PC_WORD32, 0, 5, 0, 10, TimerAsInt);
Res = IPS7RdMulti(Ref, Rq, Cnt);
for (int i = 0; i < Cnt; i++)
{
if (Rq[i].Result == 0) // okay
{
//.. process data here
}
else
{
// process errors
}
}
}

Return value for Read/Write functions / result im Record IPS7RdMulti:


The functions returns a signed 32-bit value as result:
Value Description of error
0 Everything okay

reaction / Action
process data

2 Block or data area does not exist, Verify that the desired data area exists in the PLC.
for example access to DB, which
is not available, or too small.
-1 Timeout, PLC not reachable

Start further read/write operations. The driver automatically


repairs the connection. May you hav to increase the timout
values (receive/connect timeout).

-2 The maximum number (256) of


the possible connections is
reached

Page 22 of 41

Close unused connections

Value Description of error


-3 Can occur at Close. With the

reaction / Action
Check your source code whether the varable for the

specified reference has not

reference has not been overwritten. Or it was executed for

performed Open..

this reference already a Close

-5 general error

Check whether network is properly installed in the PC:


TCP / IP enabled? Winsocket installed?

-6 Target CPU not found

Rack or number of slot invalid.


No connection to these slot available. Check configuratiopn
in CP and PLC

-7 socket error

call IPS7GetSockErr and process error value

-8 memory error

requested memory in the PC is not available

-9 overrange

e.g.. timer > 9990000 ms

-10 Desired data type is not allowed

Check that the code for data type is valid

or is not supported.
-11 The specified PC data type do not e.g : This can occur if you want to access counter and the
correspond to thespecified PLC

PC is specified as data type BYTE. Solution: Change the

data area

data type in the PC

-20 The specified memory in the PC

Enlarge data area in PC

is too small (eg array is too


small), can only occur. net or
PHP.
-21 Only. net!

call close.

For this instance of the class


Open was already called.
-31 Only with MultiRead:

adjust PC data area

PC and S7 data type are in


invalid relation e.g. PC = BYTE =
Word PLC

-32 Only with MultiRead:


S7 returns incorrect number of
data for the specified data type
-88 Only with MultiRead:
The task was not yet processed.
-99 inbvalid refernce number
4660 demo time expired

Page 23 of 41

Did you call IPS7Open?


order a license

Additional functions for PHP


long ips7_w2i(mixed Buffer,long Count);

converts unsigned 16-Bit - value to signed 16-Bit value


long ips7_i2w(mixed Buffer, long Count);

converts signed 16-Bit - value to unsigned 16-Bit value


Parameter

Description / Purpose

Buffer

refernce to array of long or the long value to be converted.

Count

count of values

New in Version 1.17 !


Diference S7RdPlcW <-> IPS7RdW and S7WrPlcW <-> S7WrW
The PC and the PLC have different addressing modes. In S7, the memory is byte-oriented. To
address from the perspective of the PLC programmer with the MB0 and MB1 MW 0, but with
the MW1 MB1 and MB2. You see that MW0 and MW1 in MB1 overlap.
Prior to the release before V 1.17, it was only possible to access just start with the word
addresses functions. From V 1.17 the functions S7RdPlcW and S7WrPlcW can access to odd
start addresses. Would you now read MW 1, as the PLC programmer sees the call on you.
IPS7RdPlcW (Ref, M, 0, 1, 1, WordBuffer);
!!! Note at word operation with S7RdW and S7WrW!
Example of flags. This applies also for inputs and outputs data words
The word addressing in the PLC assigned each of the following bytes.
word address

assigned bytes

MW0

MB 0 and MB 1

MW1

MB 1 and MB 2

MW2

MB 2 and MB 3

You see, that there may be when using odd word addresses in double occupancy. Therefore,
the word functions (IPS7RdW and IPS7WrW) only support access to even word addresses.
This means that the start-word-no in the driver is always multiplied by 2. This method allows
for the simple image of the PLC memory to the PC. So a word step in the PC are 16 bits in
the PC and 16 bit in the PLC
Example:
WORD Buf[64];

Page 24 of 41

Result of calling IPS7RdW (Ref, Typ, DBNr, 0, 5, Buf):


PC

PLC

Buf[0]

DW 0

Buf[1]

DW 2

Buf[2]

DW 4

You have to devide the start word number by two to make right access in the PC. This is also
necessary for data blocks!! --> odd word addresses of PLC could not be read/write word by
word.
If you like to access to odd addresses use IPS7RdPlcW / IPS7WrW functions.
program samples:
a) Reading words read DB 10, start at DW0, 10 words:
Calling from C/C++:
unsigned short int WordBuffer[512];
IPS7RdW (Ref, D, 10, 0, 10, WordBuffer);
Calling from Delphi:
WordBuffer array [0..511] of Word;
IPS7RdW (Ref, LongWord (D), 10, 0, 10, @WordBuffer[0]);
Calling from Visual Basic:
Dim WordBuffer (0..511) as Word;
IPS7RdW (Ref, 68, 10, 0, 10, WordBuffer(0))
result after calling:
PC

PLC

WordBuffer[0]

DB10.DBW0

WordBuffer[1]

DB10.DBW2

WordBuffer[2]

DW10.DBW4

b) reading starting at MB 0, 10 bytes


Calling from C/C++:
unsigned char ByteBuffer[512];
IPS7RdB (Ref, M, 0, 0, 10, ByteBuffer);
Calling from Delphi:
ByteBuffer array [0..511] of Byte;
IPS7RdB (Ref, M, 0, 0, 10, @ByteBuffer[0]);
Page 25 of 41

Calling from Visual Basic:


Dim ByteBuffer (0 to 511) as Byte;
IPS7RdB (Ref, 77, 0, 0, 10, ByteBuffer(0));
result after calling:
PC

PLC

ByteBuffer[0]

MB 0

ByteBuffer[1]

MB 1

Function

Function

Description / Purpose

(PHP)
IPS7GetSockErr

ips7_getsockerr

get the last socket error. For Windows check the list in the
appendix. In Linux the numbers ar declarated in the
systemfile errno.h

Calling parameters:
Nr Data type

Data type Name

Function

(PHP)
1

32-Bit Value

long

Ref

unsigned

Reference of connection generated with


IPS7Open/IPS7OpenEx. Used to internally identify the
connection.

Return value:
The return value is a signed 32-bit value:
Value Description of error
0 everything okay
else

last socket error

Meaning / Reaktion
no error
For Windows see the list in the appendix. For Linux see
system file errno.h.

The declarations of the funtcions can be find in the header files:


for C/C++
ips7lnk.h
for Delphi
ips7lnk.pas
for VB
ips7lnk.bas
For .net (C#, VB.net) include the assembly located in the folder NetFiles. Additiopnal help for
.net can bio find in the help file ips7lnk.chm.

Page 26 of 41

Functions for reading of several system informations (>= Version 1.55)


In the PLC there are several system informations available. But most of these are only
available with FW >= 2.2 of zhe PLC. The information tags as follows can be received in a
string.
Function
Function
Description / purpose
(PHP)
IPS7GetPLCName

ips7_getplcname

get name of PLC

IPS7GetModuleName

ips7_getmodulename

get name of the module (e.g.


CPU 315-2 DP/PN)

IPS7GetPlantIdName

ips7_getplantidname

get the plant id name of the PLC

IPS7GetCopyrightEntry

ips7_getcopyrightentry

get the copyright entry of PLC

IPS7GetModuleSNr

ips7_getmodulesnr

get serial number of PLC

IPS7GetModuleTypeName

ips7_getmoduletypename

get module type name of PLC

IPS7GetMMCSNr

ips7_getmmcsnr

get serial number of MMC

IPS7GetLocationDesignation

ips7_getlocationdesignation

get location designation of PLC

IPS7GetOEMId

ips7_getoemid

get OEM-ID of PLC

Calling parameters:
Nr Data type

Data type Name

Function

(PHP)
1

32 bit value

long

Ref

unsigned

Reference of connection generated with


IPS7Open/IPS7OpenEx. Used to internally identify the
connection.

32-Bit Zeiger
auf C-String

string

strInfo

Pointer to the string to reveive th info. Must have a


minimum size of 64 char.

There are the same as return values for the read / write functions!

Page 27 of 41

Function zum Lesen der Systemzeit (>= V 1.55)


Function
Function

Description / purpose

(PHP)
IPS7GetPLCTime

ips7_getplctime

get system time of PLC

Calling parameters:
Nr Data type

Data type Name

Function

(PHP)
1

32 bit value

long

Ref

unsigned

Reference of connection generated with


IPS7Open/IPS7OpenEx. Used to internally identify the
connection.

pointer to 32 bit long

Year

Pointer to a 32 bit value for year (after read e.g. 2012).

Month

Pointer to a 32 bit vaue for month (1-12)

Day

Pointer to a 32 bit vaue for day (1 -31)

Hour

Pointer to a 32 bit vaue for hour (0 23)

Min

Pointer to a 32 bit vaue for minute (0 59)

Sec

Pointer to a 32 bit vaue for seconds (0-59)

Ms

Pointer to a 32 bit vaue for milliseconds ( 0-999)

value
2

pointer to 32 bit long


value

pointer to 32 bit long


value

pointer to 32 bit long


value

pointer to 32 bit long


value

pointer to 32 bit long


value

pointer to 32 bit long


value

There are the same as return values for the read / write functions!

Page 28 of 41

Function zum Setzen der Systemzeit (>= V 1.55)


Function

Function

Description / purpose

(PHP)
IPS7SetPLCTime

ips7_setplctime

set systemtime in PLC

Calling parameters:
Nr Data type

Data type Name

Function

(PHP)
1

32 bit value

long

Ref

Reference of connection generated with


IPS7Open/IPS7OpenEx. Used to internally identify the
connection.

32 bit value

long

Year

32 bit vaue for year (1999 21xx).

32 bit value

long

Month

32 bit vaue for month (1-12)

32 bit value

long

Day

32 bit vaue for day (1 -31)

32 bit value

long

Hour

32 bit vaue for hours (0 23)

32 bit value

long

Min

32 bit vaue for minutes (0 59)

32 bit value

long

Sec

32 bit vaue for seconds (0-59)

32 bit value

long

Ms

32 bit vaue for milliseconds ( 0-999)

There are the same as return values for the read / write functions!

Page 29 of 41

Winsock error list

Return code/value

Description

WSA_INVALID_HANDLE

Specified event object handle is invalid.

6
An application attempts to use an event object, but the specified handle is not
valid. Note that this error is returned by the operating system, so the error
number may change in future releases of Windows.
WSA_NOT_ENOUGH_MEMORY

Insufficient memory available.

8
An application used a Windows Sockets function that directly maps to a
Windows function. The Windows function is indicating a lack of required
memory resources. Note that this error is returned by the operating system,
so the error number may change in future releases of Windows.
WSA_INVALID_PARAMETER

One or more parameters are invalid.

87
An application used a Windows Sockets function which directly maps to a
Windows function. The Windows function is indicating a problem with one or
more parameters. Note that this error is returned by the operating system, so
the error number may change in future releases of Windows.
WSA_OPERATION_ABORTED

Overlapped operation aborted.

995
An overlapped operation was canceled due to the closure of the socket, or the
execution of the SIO_FLUSH command in WSAIoctl. Note that this error is
returned by the operating system, so the error number may change in future
releases of Windows.
WSA_IO_INCOMPLETE

Overlapped I/O event object not in signaled state.

996
The application has tried to determine the status of an overlapped operation
which is not yet completed. Applications that use WSAGetOverlappedResult
(with the fWait flag set to FALSE) in a polling mode to determine when an
overlapped operation has completed, get this error code until the operation is
complete. Note that this error is returned by the operating system, so the
error number may change in future releases of Windows.
WSA_IO_PENDING

Overlapped operations will complete later.

997
The application has initiated an overlapped operation that cannot be
completed immediately. A completion indication will be given later when the
operation has been completed. Note that this error is returned by the
operating system, so the error number may change in future releases of
Windows.

Page 30 of 41

Return code/value

Description

WSAEINTR

Interrupted function call.

10004
A blocking operation was interrupted by a call to WSACancelBlockingCall.
WSAEBADF

File handle is not valid.

10009
The file handle supplied is not valid.
WSAEACCES

Permission denied.

10013
An attempt was made to access a socket in a way forbidden by its access
permissions. An example is using a broadcast address for sendto without
broadcast permission being set using setsockopt(SO_BROADCAST).
Another possible reason for the WSAEACCES error is that when the bind
function is called (on Windows NT 4.0 with SP4 and later), another application,
service, or kernel mode driver is bound to the same address with exclusive
access. Such exclusive access is a new feature of Windows NT 4.0 with SP4 and
later, and is implemented by using the SO_EXCLUSIVEADDRUSE option.
WSAEFAULT

Bad address.

10014
The system detected an invalid pointer address in attempting to use a pointer
argument of a call. This error occurs if an application passes an invalid pointer
value, or if the length of the buffer is too small. For instance, if the length of
an argument, which is a sockaddr structure, is smaller than the
sizeof(sockaddr).
WSAEINVAL

Invalid argument.

10022
Some invalid argument was supplied (for example, specifying an invalid level
to the setsockopt function). In some instances, it also refers to the current
state of the socketfor instance, calling accept on a socket that is not
listening.
WSAEMFILE

Too many open files.

10024
Too many open sockets. Each implementation may have a maximum number
of socket handles available, either globally, per process, or per thread.
WSAEWOULDBLOCK

Resource temporarily unavailable.

10035
This error is returned from operations on nonblocking sockets that cannot be
completed immediately, for example recv when no data is queued to be read
from the socket. It is a nonfatal error, and the operation should be retried
later. It is normal for WSAEWOULDBLOCK to be reported as the result from

Page 31 of 41

Return code/value

Description
calling connect on a nonblocking SOCK_STREAM socket, since some time must
elapse for the connection to be established.

WSAEINPROGRESS

Operation now in progress.

10036
A blocking operation is currently executing. Windows Sockets only allows a
single blocking operationper- task or threadto be outstanding, and if any
other function call is made (whether or not it references that or any other
socket) the function fails with the WSAEINPROGRESS error.
WSAEALREADY

Operation already in progress.

10037
An operation was attempted on a nonblocking socket with an operation
already in progressthat is, calling connect a second time on a nonblocking
socket that is already connecting, or canceling an asynchronous request
(WSAAsyncGetXbyY) that has already been canceled or completed.
WSAENOTSOCK

Socket operation on nonsocket.

10038
An operation was attempted on something that is not a socket. Either the
socket handle parameter did not reference a valid socket, or for select, a
member of an fd_set was not valid.
WSAEDESTADDRREQ

Destination address required.

10039
A required address was omitted from an operation on a socket. For example,
this error is returned if sendto is called with the remote address of
ADDR_ANY.
WSAEMSGSIZE

Message too long.

10040
A message sent on a datagram socket was larger than the internal message
buffer or some other network limit, or the buffer used to receive a datagram
was smaller than the datagram itself.
WSAEPROTOTYPE

Protocol wrong type for socket.

10041
A protocol was specified in the socket function call that does not support the
semantics of the socket type requested. For example, the ARPA Internet UDP
protocol cannot be specified with a socket type of SOCK_STREAM.
WSAENOPROTOOPT

Bad protocol option.

10042
An unknown, invalid or unsupported option or level was specified in a
getsockopt or setsockopt call.
WSAEPROTONOSUPPORT

Page 32 of 41

Protocol not supported.

Return code/value

Description

10043
The requested protocol has not been configured into the system, or no
implementation for it exists. For example, a socket call requests a
SOCK_DGRAM socket, but specifies a stream protocol.
WSAESOCKTNOSUPPORT

Socket type not supported.

10044
The support for the specified socket type does not exist in this address family.
For example, the optional type SOCK_RAW might be selected in a socket call,
and the implementation does not support SOCK_RAW sockets at all.
WSAEOPNOTSUPP

Operation not supported.

10045
The attempted operation is not supported for the type of object referenced.
Usually this occurs when a socket descriptor to a socket that cannot support
this operation is trying to accept a connection on a datagram socket.
WSAEPFNOSUPPORT

Protocol family not supported.

10046
The protocol family has not been configured into the system or no
implementation for it exists. This message has a slightly different meaning
from WSAEAFNOSUPPORT. However, it is interchangeable in most cases, and
all Windows Sockets functions that return one of these messages also specify
WSAEAFNOSUPPORT.
WSAEAFNOSUPPORT

Address family not supported by protocol family.

10047
An address incompatible with the requested protocol was used. All sockets are
created with an associated address family (that is, AF_INET for Internet
Protocols) and a generic protocol type (that is, SOCK_STREAM). This error is
returned if an incorrect protocol is explicitly requested in the socket call, or if
an address of the wrong family is used for a socket, for example, in sendto.
WSAEADDRINUSE

Address already in use.

10048
Typically, only one usage of each socket address (protocol/IP address/port) is
permitted. This error occurs if an application attempts to bind a socket to an
IP address/port that has already been used for an existing socket, or a socket
that was not closed properly, or one that is still in the process of closing. For
server applications that need to bind multiple sockets to the same port
number, consider using setsockopt (SO_REUSEADDR). Client applications
usually need not call bind at allconnect chooses an unused port
automatically. When bind is called with a wildcard address (involving
ADDR_ANY), a WSAEADDRINUSE error could be delayed until the specific
address is committed. This could happen with a call to another function later,

Page 33 of 41

Return code/value

Description
including connect, listen, WSAConnect, or WSAJoinLeaf.

WSAEADDRNOTAVAIL

Cannot assign requested address.

10049
The requested address is not valid in its context. This normally results from an
attempt to bind to an address that is not valid for the local computer. This can
also result from connect, sendto, WSAConnect, WSAJoinLeaf, or WSASendTo
when the remote address or port is not valid for a remote computer (for
example, address or port 0).
WSAENETDOWN

Network is down.

10050
A socket operation encountered a dead network. This could indicate a serious
failure of the network system (that is, the protocol stack that the Windows
Sockets DLL runs over), the network interface, or the local network itself.
WSAENETUNREACH

Network is unreachable.

10051
A socket operation was attempted to an unreachable network. This usually
means the local software knows no route to reach the remote host.
WSAENETRESET

Network dropped connection on reset.

10052
The connection has been broken due to keep-alive activity detecting a failure
while the operation was in progress. It can also be returned by setsockopt if
an attempt is made to set SO_KEEPALIVE on a connection that has already
failed.
WSAECONNABORTED

Software caused connection abort.

10053
An established connection was aborted by the software in your host
computer, possibly due to a data transmission time-out or protocol error.
WSAECONNRESET

Connection reset by peer.

10054
An existing connection was forcibly closed by the remote host. This normally
results if the peer application on the remote host is suddenly stopped, the
host is rebooted, the host or remote network interface is disabled, or the
remote host uses a hard close (see setsockopt for more information on the
SO_LINGER option on the remote socket). This error may also result if a
connection was broken due to keep-alive activity detecting a failure while one
or more operations are in progress. Operations that were in progress fail with
WSAENETRESET. Subsequent operations fail with WSAECONNRESET.
WSAENOBUFS

No buffer space available.

10055
An operation on a socket could not be performed because the system lacked
Page 34 of 41

Return code/value

Description
sufficient buffer space or because a queue was full.

WSAEISCONN

Socket is already connected.

10056
A connect request was made on an already-connected socket. Some
implementations also return this error if sendto is called on a connected
SOCK_DGRAM socket (for SOCK_STREAM sockets, the to parameter in sendto
is ignored) although other implementations treat this as a legal occurrence.
WSAENOTCONN

Socket is not connected.

10057
A request to send or receive data was disallowed because the socket is not
connected and (when sending on a datagram socket using sendto) no address
was supplied. Any other type of operation might also return this errorfor
example, setsockopt setting SO_KEEPALIVE if the connection has been reset.
WSAESHUTDOWN

Cannot send after socket shutdown.

10058
A request to send or receive data was disallowed because the socket had
already been shut down in that direction with a previous shutdown call. By
calling shutdown a partial close of a socket is requested, which is a signal that
sending or receiving, or both have been discontinued.
WSAETOOMANYREFS

Too many references.

10059
Too many references to some kernel object.
WSAETIMEDOUT

Connection timed out.

10060
A connection attempt failed because the connected party did not properly
respond after a period of time, or the established connection failed because
the connected host has failed to respond.
WSAECONNREFUSED

Connection refused.

10061
No connection could be made because the target computer actively refused it.
This usually results from trying to connect to a service that is inactive on the
foreign hostthat is, one with no server application running.
WSAELOOP

Cannot translate name.

10062
Cannot translate a name.
WSAENAMETOOLONG

Name too long.

10063
A name component or a name was too long.
WSAEHOSTDOWN

Page 35 of 41

Host is down.

Return code/value

Description

10064
A socket operation failed because the destination host is down. A socket
operation encountered a dead host. Networking activity on the local host has
not been initiated. These conditions are more likely to be indicated by the
error WSAETIMEDOUT.
WSAEHOSTUNREACH

No route to host.

10065
A socket operation was attempted to an unreachable host. See
WSAENETUNREACH.
WSAENOTEMPTY

Directory not empty.

10066
Cannot remove a directory that is not empty.
WSAEPROCLIM

Too many processes.

10067
A Windows Sockets implementation may have a limit on the number of
applications that can use it simultaneously. WSAStartup may fail with this
error if the limit has been reached.
WSAEUSERS

User quota exceeded.

10068
Ran out of user quota.
WSAEDQUOT

Disk quota exceeded.

10069
Ran out of disk quota.
WSAESTALE

Stale file handle reference.

10070
The file handle reference is no longer available.
WSAEREMOTE

Item is remote.

10071
The item is not available locally.
WSASYSNOTREADY

Network subsystem is unavailable.

10091
This error is returned by WSAStartup if the Windows Sockets implementation
cannot function at this time because the underlying system it uses to provide
network services is currently unavailable. Users should check:

That the appropriate Windows Sockets DLL file is in the current path.

That they are not trying to use more than one Windows Sockets
implementation simultaneously. If there is more than one Winsock DLL on
your system, be sure the first one in the path is appropriate for the network
subsystem currently loaded.

Page 36 of 41

Return code/value

Description

The Windows Sockets implementation documentation to be sure all necessary


components are currently installed and configured correctly.

WSAVERNOTSUPPORTED

Winsock.dll version out of range.

10092
The current Windows Sockets implementation does not support the Windows
Sockets specification version requested by the application. Check that no old
Windows Sockets DLL files are being accessed.
WSANOTINITIALISED

Successful WSAStartup not yet performed.

10093
Either the application has not called WSAStartup or WSAStartup failed. The
application may be accessing a socket that the current active task does not
own (that is, trying to share a socket between tasks), or WSACleanup has
been called too many times.
WSAEDISCON

Graceful shutdown in progress.

10101
Returned by WSARecv and WSARecvFrom to indicate that the remote party
has initiated a graceful shutdown sequence.
WSAENOMORE

No more results.

10102
No more results can be returned by the WSALookupServiceNext function.
WSAECANCELLED

Call has been canceled.

10103
A call to the WSALookupServiceEnd function was made while this call was still
processing. The call has been canceled.
WSAEINVALIDPROCTABLE

Procedure call table is invalid.

10104
The service provider procedure call table is invalid. A service provider returned
a bogus procedure table to Ws2_32.dll. This is usually caused by one or more
of the function pointers being NULL.
WSAEINVALIDPROVIDER

Service provider is invalid.

10105
The requested service provider is invalid. This error is returned by the
WSCGetProviderInfo and WSCGetProviderInfo32 functions if the protocol
entry specified could not be found. This error is also returned if the service
provider returned a version number other than 2.0.
WSAEPROVIDERFAILEDINIT

Service provider failed to initialize.

10106
The requested service provider could not be loaded or initialized. This error is

Page 37 of 41

Return code/value

Description
returned if either a service provider's DLL could not be loaded (LoadLibrary
failed) or the provider's WSPStartup or NSPStartup function failed.

WSASYSCALLFAILURE

System call failure.

10107
A system call that should never fail has failed. This is a generic error code,
returned under various conditions.
Returned when a system call that should never fail does fail. For example, if a
call to WaitForMultipleEvents fails or one of the registry functions fails trying
to manipulate the protocol/namespace catalogs.
Returned when a provider does not return SUCCESS and does not provide an
extended error code. Can indicate a service provider implementation error.
WSASERVICE_NOT_FOUND

Service not found.

10108
No such service is known. The service cannot be found in the specified name
space.
WSATYPE_NOT_FOUND

Class type not found.

10109
The specified class was not found.
WSA_E_NO_MORE

No more results.

10110
No more results can be returned by the WSALookupServiceNext function.
WSA_E_CANCELLED

Call was canceled.

10111
A call to the WSALookupServiceEnd function was made while this call was still
processing. The call has been canceled.
WSAEREFUSED

Database query was refused.

10112
A database query failed because it was actively refused.
WSAHOST_NOT_FOUND

Host not found.

11001
No such host is known. The name is not an official host name or alias, or it
cannot be found in the database(s) being queried. This error may also be
returned for protocol and service queries, and means that the specified name
could not be found in the relevant database.
WSATRY_AGAIN

Nonauthoritative host not found.

11002
This is usually a temporary error during host name resolution and means that
the local server did not receive a response from an authoritative server. A
Page 38 of 41

Return code/value

Description
retry at some time later may be successful.

WSANO_RECOVERY

This is a nonrecoverable error.

11003
This indicates that some sort of nonrecoverable error occurred during a
database lookup. This may be because the database files (for example, BSD-
compatible HOSTS, SERVICES, or PROTOCOLS files) could not be found, or a
DNS request was returned by the server with a severe error.
WSANO_DATA

Valid name, no data record of requested type.

11004
The requested name is valid and was found in the database, but it does not
have the correct associated data being resolved for. The usual example for this
is a host name-to-address translation attempt (using gethostbyname or
WSAAsyncGetHostByName) which uses the DNS (Domain Name Server). An
MX record is returned but no A recordindicating the host itself exists, but is
not directly reachable.
WSA_QOS_RECEIVERS

QOS receivers.

11005
At least one QOS reserve has arrived.
WSA_QOS_SENDERS

QOS senders.

11006
At least one QOS send path has arrived.
WSA_QOS_NO_SENDERS

No QOS senders.

11007
There are no QOS senders.
WSA_QOS_NO_RECEIVERS

QOS no receivers.

11008
There are no QOS receivers.
WSA_QOS_REQUEST_CONFIRMED QOS request confirmed.
11009
The QOS reserve request has been confirmed.
WSA_QOS_ADMISSION_FAILURE

QOS admission error.

11010
A QOS error occurred due to lack of resources.
WSA_QOS_POLICY_FAILURE

QOS policy failure.

11011
The QOS request was rejected because the policy system couldn't allocate the
requested resource within the existing policy.
WSA_QOS_BAD_STYLE
11012
Page 39 of 41

QOS bad style.

Return code/value

Description
An unknown or conflicting QOS style was encountered.

WSA_QOS_BAD_OBJECT

QOS bad object.

11013
A problem was encountered with some part of the filterspec or the provider-
specific buffer in general.
WSA_QOS_TRAFFIC_CTRL_ERROR QOS traffic control error.
11014
An error with the underlying traffic control (TC) API as the generic QOS
request was converted for local enforcement by the TC API. This could be due
to an out of memory error or to an internal QOS provider error.
WSA_QOS_GENERIC_ERROR

QOS generic error.

11015
A general QOS error.
WSA_QOS_ESERVICETYPE

QOS service type error.

11016
An invalid or unrecognized service type was found in the QOS flowspec.
WSA_QOS_EFLOWSPEC

QOS flowspec error.

11017
An invalid or inconsistent flowspec was found in the QOS structure.
WSA_QOS_EPROVSPECBUF

Invalid QOS provider buffer.

11018
An invalid QOS provider-specific buffer.
WSA_QOS_EFILTERSTYLE

Invalid QOS filter style.

11019
An invalid QOS filter style was used.
WSA_QOS_EFILTERTYPE

Invalid QOS filter type.

11020
An invalid QOS filter type was used.
WSA_QOS_EFILTERCOUNT

Incorrect QOS filter count.

11021
An incorrect number of QOS FILTERSPECs were specified in the
FLOWDESCRIPTOR.
WSA_QOS_EOBJLENGTH

Invalid QOS object length.

11022
An object with an invalid ObjectLength field was specified in the QOS provider-
specific buffer.
WSA_QOS_EFLOWCOUNT
11023
Page 40 of 41

Incorrect QOS flow count.

Return code/value

Description
An incorrect number of flow descriptors was specified in the QOS structure.

WSA_QOS_EUNKOWNPSOBJ

Unrecognized QOS object.

11024
An unrecognized object was found in the QOS provider-specific buffer.
WSA_QOS_EPOLICYOBJ

Invalid QOS policy object.

11025
An invalid policy object was found in the QOS provider-specific buffer.
WSA_QOS_EFLOWDESC

Invalid QOS flow descriptor.

11026
An invalid QOS flow descriptor was found in the flow descriptor list.
WSA_QOS_EPSFLOWSPEC

Invalid QOS provider-specific flowspec.

11027
An invalid or inconsistent flowspec was found in the QOS provider-specific
buffer.
WSA_QOS_EPSFILTERSPEC

Invalid QOS provider-specific filterspec.

11028
An invalid FILTERSPEC was found in the QOS provider-specific buffer.
WSA_QOS_ESDMODEOBJ

Invalid QOS shape discard mode object.

11029
An invalid shape discard mode object was found in the QOS provider-specific
buffer.
WSA_QOS_ESHAPERATEOBJ

Invalid QOS shaping rate object.

11030
An invalid shaping rate object was found in the QOS provider-specific buffer.
WSA_QOS_RESERVED_PETYPE

Reserved policy QOS element type.

11031
A reserved policy element was found in the QOS provider-specific buffer.

Page 41 of 41

You might also like