How to do data exchange between Siemens PLC and iC9200 as a PROFINET I-Device
|
Version Number |
Description |
|
1.0 |
Initial Version |
1. Supported Components
|
Component Name for PROFINET I-Device |
Version |
|
iC9200 series PLC with “PROFINET I-Device + Controller” License (JXPMC-OPX010703)
|
≥ 2023.9.1 |
|
iCube Engineer |
≥ 2024.03 |
|
Example PROFINET Controller CPUs and programming tools |
|
|
YASKAWA SLIO 015 PLC |
|
|
Siemens TIA Portal |
≥ TIA 15 |
2. Supported libraries
3.Data exchange handling between Siemens PLC and iC9200 as a PROFINET I-Device
The basic communication will be done automatically over the I/O layer with maximum 512 Byte. In iCube I-Device section there are defined arrays with 512 Output Bytes (PND_S1_OUTPUTS) and 512 Input Bytes (PND_S1_INPUTS). In the hardware configuration of PROFINET controller PLC the number of transferred Bytes will be determined between 2 and 512 Bytes. The number of output and input Bytes are the same. If only byte variables will be transferred there is no additional format changing necessary. Using structs with different variable types following restrictions has to be recognized:
Compare Table with different variable types:
| iCube / PLCnext | Yaskawa 300 SLIO Siemens 300 | Siemens 1200 | Siemens 1500 | |||||
| Little Endian | Big Endian | Big Endian | Big Endian | |||||
| VAR Type | Length [BYTE] | Start address multiple of | Length | Start address multiple of | Length [BYTE] | Start address multiple of | Length [BYTE] | Start address multiple of |
| Binary Numbers | ||||||||
| BOOL | 1 | 1 | 1 Bit | 8 Bits in one Byte | 1 Bit | 8 Bits in one Byte | 1 Bit | 8 Bits in one Byte |
| BYTE | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| WORD | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| DWORD | 4 | 4 | 4 | 2 | 4 | 2 | 4 | 2 |
| LWORD | 8 | 8 | - | - | - | - | 8 | 2 |
| Integers | ||||||||
| USINT | 1 | 1 | - | - | 1 | 1 | 1 | 1 |
| SINT | 1 | 1 | - | - | 1 | 1 | 1 | 1 |
| UINT | 2 | 2 | - | - | 2 | 2 | 2 | 2 |
| INT | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
| UDINT | 4 | 4 | - | - | 4 | 2 | 4 | 2 |
| DINT | 4 | 4 | 4 | 2 | 4 | 2 | 4 | 2 |
| ULINT | 8 | 8 | - | - | - | - | 8 | 2 |
| LINT | 8 | 8 | - | - | - | - | 8 | 2 |
| Floating-point numbers | ||||||||
| REAL | 4 | 4 | 4 | 2 | 4 | 2 | 4 | 2 |
| LREAL | 8 | 8 | - | - | 8 | 2 | 8 | 2 |
| Timer | ||||||||
| TIME | 4 | 4 | 4 | 2 | 4 | 2 | 4 | 2 |
| S5TIME | - | - | 2 | 2 | - | - | 2 | 2 |
| LTIME | 8 | 8 | - | - | - | - | 8 | 2 |
| Date and time | ||||||||
| DATE | - | - | 2 | 2 | 2 | 2 | 2 | 2 |
| TIME_Of_DAY (TOD) | - | - | 4 | 2 | 4 | 2 | 4 | 2 |
| LTOD (LTIME_OF_DAY) | 8 | 8 | - | - | - | - | 8 | 2 |
| DT (DATE_AND_TIME) | 8 | 8 | ?8 | ?2 | - | - | 8 | 2 |
| LDT(DATE_AND_LTIME) (LDATE_AND_TIME) | 8 | 8 | - | - | - | - | 8 | 2 |
| DTL | - | - | 12 | 2 | 12 | 2 | ||
| LD (LDATE) | 8 | 8 | ||||||
| LTD (LDATE_AND_TIME ) | 8 | 8 | - | - | - | - | - | - |
| Character strings | ||||||||
| CHAR | - | - | 1 | 1 | 1 | 1 | 1 | 1 |
| WCHAR | - | - | - | - | 2 | 2 | ||
| STRING | - | - | 256 | 2 | 256 | 2 | n+2 | 2 |
| WSTRING | - | - | - | - | n*2+2 | n*2+2 | ||
| STRING[x] | x+4 | - | - | - | - | - | - | |
| WSTRING[x] | 2*x+4 | - | - | - | - | - | - | |
Please note that start address multiplier handling between iCube and Siemens is different. This will have effects on all variables more than 2 Bytes length. Also different is the Big / Low Endian Format between the two systems.
Following rules will avoid problems:
- Combine Boolean variables in a byte, word or double word.
- Sort the variables within the structures by byte length (the longest first).
- Do Endian adjustment on the iCube side.