I have bought the CRIO-PN Module for a while, and now wants make the CRIO-PN module perform as good as possible. I want make the profinet cycle to 1ms if possible, if better, can speed up to 250us, which is the minimum cycle time Profinet Protocol can support, But during my programming, I have found that the minimum cycle time can reach is 2.8ms for 254 Bytes communication.
I have made a little test as showed in the attached pictures,
the whole process is like following:
Set Input Data(254 Bytes) - Read/Write IO Data(254 Bytes) - Get Output Data (254 Bytes)
As you can see, the normal interval time for this process is 2072us, and the interval time is not stablized, fluctuate a lot, some time can reach 5030us.
I have also done some little tests to check each indivile process, from my little tests, the result is like following:
The Set Input Data process and Get Output Data process doesn't consume so much time, but the Read/Write IO data process is the most time-consuming one, and if there are more bytes transfer, the interval time is more time consuming, for example : 254Bytes transfer > 128 Bytes transfer .
Can you give any advice to improve the performance of Profinet Cycle? I want speed up profinet cycle to reach 1ms. If not, can anybody tell me the possible reason behind?
Solved! Go to Solution.
Hi, yes that would be expected behavior. Let me explain.
The data is transferred from the FPGA App. to the module via SPI protocol. The rate the SPI works is at 2.8 MHz. That means the transfer time for one bit is 2.8 us. So transferring 254 bytes will take at least 5.69 ms.
The Profinet Master in RT mode will send a frame every 1 ms and if the module does not have a complete new data block it will send latest old data block it has. The module will not disturb the RT network in any way. It will just not have new data in every cycle.
The same is true for IRT (250us) mode.
So what you can do is reducing your payload to less then 40 bytes for example to come close to your 1ms cycle time for new data.
Hope that helps to understand whats going on.
Really thanks for your appreciate advice, that really helps me a lot, and help me have a more deeper understanding for the system.
I just have a question:
Now, in my system, there are about 32 Bytes which I want have a high speed transfer, if can reach 1ms, that will be perfect for me.
According to your explanation, less than 40 bytes is okay for me.
However, For the others Bytes, they are just for system monitoring, the speed is not that important for me. the updating time 1s is also okay for me.
I want know If possible, in the CRIO-PN Module, I can define which Bytes are high speed one, and which Bytes are low speed one?
Maybe, like define 2 slots? 32 bytes for 1 slot, which is high speed, the other bytes for the 2nd slot, which is low speed?