Difference between revisions of "S7-SoftPLC:Data Interface"
(7 intermediate revisions by one other user not shown) | |||
Line 13: | Line 13: | ||
{| | {| | ||
|- | |- | ||
− | | unsigned long int DLLexport ReadVal || (unsigned long int | + | | unsigned long int DLLexport ReadVal || (unsigned long int type, |
|- | |- | ||
− | | || unsigned long int | + | | || unsigned long int no, |
|- | |- | ||
− | | || unsigned long int | + | | || unsigned long int DBNo, |
|- | |- | ||
| || unsigned long int size, | | || unsigned long int size, | ||
Line 39: | Line 39: | ||
| val || Read value || Pointer to a valid variable in the user applications address space | | val || Read value || Pointer to a valid variable in the user applications address space | ||
|- | |- | ||
− | | | + | | return || 0 on Error || Error messages |
|} | |} | ||
Line 51: | Line 51: | ||
{| | {| | ||
|- | |- | ||
− | | unsigned long int DLLexport WriteVal || (unsigned long int | + | | unsigned long int DLLexport WriteVal || (unsigned long int type, |
|- | |- | ||
− | | || unsigned long int | + | | || unsigned long int no, |
|- | |- | ||
− | | || unsigned long int | + | | || unsigned long int DBNo, |
|- | |- | ||
| || unsigned long int size, | | || unsigned long int size, | ||
Line 62: | Line 62: | ||
|} | |} | ||
− | + | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Parameter !! Description !! comment | ||
+ | |- | ||
+ | | type || 'I' = input<br />'Q' = output<br />'M' = flag<br />'C' = counter value<br />'T' = timer value<br />'D' = data word or double data word<br />'B' = data bit, byte, wort, doppelwort on <br />byte address<br />'P' = P_Parameter || <br /><br /><br />16-bit-access only<br />16-bit-access only<br />depending on size<br />depending on size<br />compatible to S7 only<br />S7 from version 3 only!<br /> | ||
+ | |- | ||
+ | | no || adress || Byte address of operand to be written | ||
+ | |- | ||
+ | | DBNo || number of data block || 1 – 16383 | ||
+ | |- | ||
+ | | size || number of bits<br />0..7= bit no 0 7<br />8 = 1 byte<br />16 = 1 word<br />32 = 1 double word || <br /><br />'I','Q','M' only | ||
+ | |- | ||
+ | | val || value to be written || | ||
+ | |- | ||
+ | | return || 0 on error || Error messages | ||
+ | |} | ||
Length of parameter list (Visual-C): 20 bytes. | Length of parameter list (Visual-C): 20 bytes. | ||
Line 73: | Line 89: | ||
{| | {| | ||
|- | |- | ||
− | | unsigned long int DLLexport ReadVals || (unsigned long int | + | | unsigned long int DLLexport ReadVals || (unsigned long int type, |
|- | |- | ||
− | | || unsigned long int | + | | || unsigned long int no, |
|- | |- | ||
− | | || unsigned long int | + | | || unsigned long int DBNo, |
|- | |- | ||
| || unsigned long int size, | | || unsigned long int size, | ||
Line 84: | Line 100: | ||
|} | |} | ||
− | + | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Parameter !! Description !! Comment | ||
+ | |- | ||
+ | | type || 'I' = input<br />'Q' = output<br />'M' = flag<br />'D' = data word<br />'B' = data byte on byte address || <br /><br /><br />S5 compatible<br />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. | Length of parameter list (Visual-C): 20 bytes. | ||
Line 98: | Line 131: | ||
{| | {| | ||
|- | |- | ||
− | | unsigned long int DLLexport WriteVals || (unsigned long int | + | | unsigned long int DLLexport WriteVals || (unsigned long int type, |
|- | |- | ||
− | | || unsigned long int | + | | || unsigned long int no, |
|- | |- | ||
− | | || unsigned long int | + | | || unsigned long int DBNo, |
|- | |- | ||
| || unsigned long int size, | | || unsigned long int size, | ||
Line 109: | Line 142: | ||
|} | |} | ||
− | + | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Parameter !! Description !! Comment | ||
+ | |- | ||
+ | | type || 'I' = input<br />'Q' = output<br />'M' = flag<br />'D' = data word<br />'B' = data byte on byte address || <br /><br /><br />S5 compatible<br />compatible to S7 only | ||
+ | |- | ||
+ | | no || adress || | ||
+ | |- | ||
+ | | DBNo || number of data block || 1 – 16383 | ||
+ | |- | ||
+ | | size || number of data bytes or data words<br />'I'<br />'Q'<br />'M'<br />'B'<br />'D' || <br />Destination size in bytes<br />Destination size in bytes<br />Destination size in bytes<br />Destination size in bytes<br />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. | Length of parameter list (Visual-C): 20 bytes. | ||
Line 123: | Line 173: | ||
{| | {| | ||
|- | |- | ||
− | | unsigned long int DLLexport ReadDB || (unsigned long int | + | | unsigned long int DLLexport ReadDB || (unsigned long int no, |
|- | |- | ||
− | | || unsigned short int far * | + | | || unsigned short int far * block, |
|- | |- | ||
− | | || unsigned long int far * | + | | || unsigned long int far * size, |
|- | |- | ||
− | | || unsigned long int | + | | || unsigned long int synchronous); |
|} | |} | ||
− | + | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! 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. | Length of parameter list (Visual-C): 16 bytes. | ||
Line 146: | Line 212: | ||
{| | {| | ||
|- | |- | ||
− | | unsigned long int DLLexport WriteDB || (unsigned long int | + | | unsigned long int DLLexport WriteDB || (unsigned long int no, |
|- | |- | ||
− | | || unsigned short int far * | + | | || unsigned short int far * block, |
|- | |- | ||
− | | || unsigned long int far * | + | | || unsigned long int far * size, |
|- | |- | ||
− | | || unsigned long int | + | | || unsigned long int synchronous); |
|} | |} | ||
− | + | {| class="wikitable" | |
+ | |- | ||
+ | ! 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. | Length of parameter list (Visual-C): 16 bytes. | ||
Line 170: | Line 251: | ||
{| | {| | ||
|- | |- | ||
− | | unsigned long int DLLexport ReadDB_S7 || (unsigned long int | + | | unsigned long int DLLexport ReadDB_S7 || (unsigned long int no, |
|- | |- | ||
− | | || unsigned char int far * | + | | || unsigned char int far * block, |
|- | |- | ||
− | | || unsigned long int far * | + | | || unsigned long int far * size, |
|} | |} | ||
− | + | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! 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. | Length of parameter list (Visual-C): 12 bytes. | ||
Line 189: | Line 284: | ||
{| | {| | ||
|- | |- | ||
− | | unsigned long int DLLexport WriteDB_S7 || (unsigned long int | + | | unsigned long int DLLexport WriteDB_S7 || (unsigned long int no, |
|- | |- | ||
− | | || unsigned char int far * | + | | || unsigned char int far * block, |
|- | |- | ||
− | | || unsigned long int far * | + | | || unsigned long int far * size, |
|} | |} | ||
− | + | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! 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. | Length of parameter list (Visual-C): 12 bytes. | ||
Line 215: | Line 324: | ||
|} | |} | ||
− | + | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Parameter !! Description !! Comment | ||
+ | |- | ||
+ | | FloatVal || floating point number in IEEE- or INTEL-format || | ||
+ | |- | ||
+ | | MC5Val || floating point number in Siemens-S7-format || | ||
+ | |} | ||
Line 229: | Line 346: | ||
|} | |} | ||
− | + | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Parameter !! Description !! Comment | ||
+ | |- | ||
+ | | MC5Val || floating point number in Siemens-S7-format || | ||
+ | |- | ||
+ | | FloatVal || floating point number in IEEE- or INTEL-format || | ||
+ | |} | ||
Latest revision as of 12:32, 19 December 2012
Contents
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).