S7-SoftPLC:Data Interface

From IBHsoftec Wiki English
Jump to: navigation, search

Data interface to S7-SoftPLC

S7-SoftPLC can be accessed directly by various high level languages (e.g. Visual Basic®, Visual C/C++® or Borland C++Builder®). The DLL required for this (PLC32.DLL) is installed with S7-SoftPLC. The PLC32.DLL is a 32 Bit application.

Below the available functions for a data exchange are described.

Data transmitting functions

Read a single value

Reads a value from S7-SoftPLC.

unsigned long int DLLexport ReadVal (unsigned long int type,
unsigned long int no,
unsigned long int DBNo,
unsigned long int size,
unsigned long int far * val);,


Parameter Description Comment
type 'I' = input
'Q' = output
'M' = flag
'C' = counter value
'T' = timer value
'D' = data word or double data word
'B' = data bit, word, double word on
byte address
'P' = P_Parameter



16-bit-access only
16-bit-access only
depending on size
depending on size
compatible to S7 only
S7 from version 3 only
no adress Byte address of read in operand
DBNo Number of data block 1 – 16383
size Number of bits
0..7= bit no 0 7
8 = 1 byte
16 = 1 word
32 = 1 double word


'I','Q','M' only
val Read value Pointer to a valid variable in the user applications address space
return 0 on Error Error messages

Length of parameter list (Visual-C): 20 bytes.


Write a single value

Writes a value in S7-SoftPLC.

unsigned long int DLLexport WriteVal (unsigned long int type,
unsigned long int no,
unsigned long int DBNo,
unsigned long int size,
unsigned long int far * val);,


Parameter Description comment
type 'I' = input
'Q' = output
'M' = flag
'C' = counter value
'T' = timer value
'D' = data word or double data word
'B' = data bit, byte, wort, doppelwort on
byte address
'P' = P_Parameter



16-bit-access only
16-bit-access only
depending on size
depending on size
compatible to S7 only
S7 from version 3 only!
no adress Byte address of operand to be written
DBNo number of data block 1 – 16383
size number of bits
0..7= bit no 0 7
8 = 1 byte
16 = 1 word
32 = 1 double word


'I','Q','M' only
val value to be written
return 0 on error Error messages

Length of parameter list (Visual-C): 20 bytes.


Read multiple values

Reads multiple values from S7-SoftPLC.

unsigned long int DLLexport ReadVals (unsigned long int type,
unsigned long int no,
unsigned long int DBNo,
unsigned long int size,
unsigned long int far * vals);,


Parameter Description Comment
type 'I' = input
'Q' = output
'M' = flag
'D' = data word
'B' = data byte on byte address



S5 compatible
compatible to S7 only
no adress
DBNo number of data block 1 – 16383
size number of data bytes or data words destination size in bytes for type 'I', 'Q', 'M' and 'B', destination size in data words for 'D'
vals Value of byte Pointer to a valid array in the user applications address space

Warning: Array has to be big enough!

return 0 on error Error messages

Length of parameter list (Visual-C): 20 bytes.


WARNING: FOR DATA BLOCKS (TYPE 'D') THE ARRAY HAS TO BE TWICE AS BIG, SINCE 2 BYTES ARE NECESSARY FOR EVERY DATA WORD!


Write multiple values

Writes multiple values to S7-SoftPLC.

unsigned long int DLLexport WriteVals (unsigned long int type,
unsigned long int no,
unsigned long int DBNo,
unsigned long int size,
unsigned long int far * vals);,


Parameter Description Comment
type 'I' = input
'Q' = output
'M' = flag
'D' = data word
'B' = data byte on byte address



S5 compatible
compatible to S7 only
no adress
DBNo number of data block 1 – 16383
size number of data bytes or data words
'I'
'Q'
'M'
'B'
'D'

Destination size in bytes
Destination size in bytes
Destination size in bytes
Destination size in bytes
Destination size in data words
vals value of byte Pointer to a valid array in the user applications address space

Warning: Array has to be big enough!

return 0 on error Error messages

Length of parameter list (Visual-C): 20 bytes.


WARNING: FOR DATA BLOCKS (TYPE = D) THE ARRAY HAS TO BE TWICE AS BIG, SINCE 2 BYTES ARE NECESSARY FOR EVERY DATA WORD!


Read DB

Reads the content of a data block from S7-SoftPLC.

unsigned long int DLLexport ReadDB (unsigned long int no,
unsigned short int far * block,
unsigned long int far * size,
unsigned long int synchronous);


Parameter Description Comment
no number of data block 1..16383
block pointer to data block content Pointer to a valid array in the user applications address space.

Warning: Array has to be big enough!

size number of words that are to be read from the data block If the data block is smaller than the size, the size will be reduced automatically.

Pointer to a valid variable in the user applications address space.

synchronous always 0 irrelevant for S7
return 0 on error Error messages

Length of parameter list (Visual-C): 16 bytes.


WARNING: WORD-ORIENTED READING, LOW- AND HIGH-BYTE ARE SWAPPED.


Write DB

Writes a data block to S7-SoftPLC.

unsigned long int DLLexport WriteDB (unsigned long int no,
unsigned short int far * block,
unsigned long int far * size,
unsigned long int synchronous);


Parameter Description Comment
no number of data block 1..16383
block pointer to data block content Pointer to a valid array in the user applications address space

Warning: Array has to be big enough!

size number of words that are to be written into the block If the data block is smaller than the size, the size will be reduced automatically.

Pointer to a valid variable in the user applications address space.

synchronous always 0 irrelevant for S7
return 0 on error Error messages

Length of parameter list (Visual-C): 16 bytes.


WARNING: WORD-ORIENTED READING, LOW- AND HIGH-BYTE ARE SWAPPED.


Read S7 DB

Reads the content of a S7 data block from the PLC (byte oriented).

unsigned long int DLLexport ReadDB_S7 (unsigned long int no,
unsigned char int far * block,
unsigned long int far * size,


Parameter Description Comment
no number of data block 1..16383
block pointer to data block content Pointer to a valid array in the user applications address space

Warning: Array has to be big enough!

size number of bytes that are to be read into the block If the data block is smaller than the size, the size will be reduced automatically.

Pointer to a valid variable in the user applications address space.

return 0 on error Error messages

Length of parameter list (Visual-C): 12 bytes.


Write S7 DB

Writes the content of a S7 data block in the PLC (byte-oriented).

unsigned long int DLLexport WriteDB_S7 (unsigned long int no,
unsigned char int far * block,
unsigned long int far * size,


Parameter Description Comment
no number of data block 1..16383
block pointer to data block content Pointer to a valid array in the user applications address space

Warning: Array has to be big enough!

size number of bytes that are to be written into the block If the data block is smaller than the size, the size will be reduced automatically.

Pointer to a valid variable in the user applications address space.

return 0 on error Error messages

Length of parameter list (Visual-C): 12 bytes.


Functions for data conversion

FloatToMC5

Converts floating point numbers from IBM-PC-format into S7 double words.

void DLLexport FloatToMC5 (float FloatValue,
unsigned long far * MC5Val);


Parameter Description Comment
FloatVal floating point number in IEEE- or INTEL-format
MC5Val floating point number in Siemens-S7-format


MC5ToFloat

Converts S7 double words into floating point numbers in IBM-PC-format.

void DLLexport MC5ToFloat (unsigned long far * MC5Val
float FloatVal);


Parameter Description Comment
MC5Val floating point number in Siemens-S7-format
FloatVal floating point number in IEEE- or INTEL-format


Accessing with a web server

If you are intending to access S7-SoftPLC with web applications(IIS), which should have access to the process data, please contact our support for examples. The S7-SoftPLC installs an object, which allows data access from script languages (VB Sript, J Script).