Siemens S7-1500 OB80 Time Error: Cycle Time Exceeded, what to check?
I'm getting an OB80 Time Error on my S7-1500 CPU, indicating the cycle time was exceeded. The machine is still running, but I want to prevent a CPU STOP. What should I investigate first?
An OB80 Time Error on a Siemens S7-1500 CPU means the cyclic program or an interrupt OB ran longer than the maximum configured cycle time. While the CPU continues after the first overrun with OB80 present, a second overrun in the same cycle will cause a CPU STOP. This error can also occur if an interrupt OB is called before its previous run finished, or due to time-of-day interrupt issues.
Likely causes and checks
1Cyclic program too long for configured maximum cycle time
- Points to it
- The primary cause is that the main cyclic program (OB1 and any interrupting OBs) takes longer to execute than the maximum cycle time set in the controller configuration.
- Check
- Compare the measured maximum cycle time with the configured maximum cycle time. Look for Fault_ID 16#01 in the OB80 start information and check 'Online & diagnostics' for measured cycle times close to the limit.
2Program loop running excessively long under specific conditions
- Points to it
- A section of the program, particularly a FOR/WHILE loop or indirect jump, might execute for an extended duration only under certain operational conditions or after a recent program edit or data change, causing a sudden cycle time overrun.
- Check
- Review FOR/WHILE loops and indirect jumps in the program block identified by Csg_OBnr in the fault information. This is indicated if the cycle time is normally short but suddenly overruns.
3Interrupt OBs or communication load interrupting the cycle
- Points to it
- Frequent or long-running interrupt OBs (cyclic or hardware interrupts) or heavy communication traffic can consume CPU time, preventing the cyclic program from completing within its allotted cycle time, or causing interrupt requests to queue up.
- Check
- Review the periods, priorities, and run times of interrupt OBs. Look for Fault_ID 16#02, 16#07, or 16#09 in the OB80 start information, which point to an OB still running, request buffer overflow, or interrupt loss.
Next check: After checking the measured cycle times against the configured maximum, if the issue persists, review the program logic for any loops or complex calculations that might be consuming excessive CPU time under specific conditions.
Related questions
Describe the fault or upload a photo, and InduQT checks it against the manufacturer manuals. Share the result here when it helps someone else.