In the hardware declaration, an IO system can only exist under the IO systems node. It uses interface references to define the IO controller and IO devices of the system.
It means that the devices will be assigned to the controller. The controller synchronizes IO information from the device in a fixed time interval. This time is the PnUpdateTime (ms).
Hardware Compiler generates a RealTimeSettings.json file after every compile so the update times can be observed.
You will find that file in the output directory for a specific controller (e.g. at PLC_1/RealTimeSettings.json).
With the parameter PnWatchdogFactor we can set how often we would repeat the run of the watchdog. The purpose of the watchdog is to check the integrity of the IO communication.
{
"Devices": [
{
"Name": "Device1",
"Modules": [
{
"Name": "PLC_1",
"TypeIdentifier": {
"OrderNumber": "6ES7 516-3AN01-0AB0",
"Version": "V2.9"
},
"AccessProtection": {
"AccessLevel": "NoAccess"
},
"Interfaces": [
{
"Label": "X1",
"Name": "ProfinetInterface1",
"Addresses": {
"Configured": [
{ "IPv4": "192.168.0.1/24" }
]
}
}
]
}
]
},
{
"Name": "MyIoDevice1",
"Modules": [
{
"Name": "MyHead",
"TypeIdentifier": {
"GsdId": "IM 155-5 PN BA V4.3",
"FileName": "GSDML-V2.35-SIEMENS-ET200MP_SHORTENED-20220701.XML"
},
"Interfaces": [
{
"Label": "X1",
"Name": "Interface1",
"Addresses": {
"Configured": [
{ "IPv4": "192.168.0.5/24" }
]
}
}
]
}
]
}
],
"IoSystems": [
{
"Name": "MyIoSystem",
"ControllerInterfaces": [
{ "Ref": "Device1/PLC_1/ProfinetInterface1" }
],
"DeviceInterfaces": [
{
"Ref": "MyIoDevice1/MyHead/Interface1",
"Parameters": {
"PnWatchdogFactor": 4 //In how many IO cycles the watchdog will run.
} //If we update IO data in every ms, watchdog will run in every 4 ms.
}
]
}
]
}
RealTimeSettings.json
{
"IoSystems": [
{
"Name": "PROFINET_IO-System",
"DeviceInterfaces": [
{
"Ref": "MyIoDevice1/MyHead/Interface1",
"Update time [ms]": 128
}
]
}
]
}