In today's rapidly changing automation technology, a large number of classic control systems that have been in operation for ten or even twenty years are still playing a residual role in industrial sites. The Siemens S5-90U and S5-95U, as the backbone of small and medium-sized control systems at that time, are still deployed in numerous fans, pump stations, small production lines, and auxiliary process units. However, with the aging of equipment and the turnover of technical personnel, the difficulty of maintaining, diagnosing faults, and modernizing these "veterans" is increasing day by day. This article will provide you with a detailed maintenance and diagnostic guide based on the core features of the S5-90U/S5-95U system, helping you understand its working principle, handle common problems calmly, and pave the way for its integration into modern automation architecture.
System hardware characteristics and anti-interference configuration
The S5-90U and S5-95U are known for their compact design and flexible expansion capabilities. Understanding its hardware characteristics is the foundation for any maintenance work. The S5-90U directly integrates 10 digital inputs and 6 relay outputs, while the S5-95U provides stronger onboard capabilities: 16 point digital inputs, 16 point digital outputs, 8 analog inputs, 1 analog output, 4 interrupt inputs, and 2 high-speed counter inputs. Both can be expanded for I/O through the S5-100U series expansion module, and the S5-95U can connect up to 32 modules.
Key points for on-site maintenance:
Power check (S5-95U): S5-95U requires an external supply of 24V DC. Be sure to use an isolated power supply that complies with DIN VDE 0551/EN 60742 standards. Many inexplicable "crashes" or I/O errors are caused by excessive ripple or poor grounding of the 24V power supply. Check the "Battery Low" LED on the backplane. If it lights up, replace the lithium battery while the PLC is powered on, otherwise it may cause RAM data loss.
Bus configuration (PBUS parameter of S5-95U): There is a "PBUS" parameter in the system parameters (SDP:) of data block DB1. Its default value is "PBUS N", allowing the PLC to start without an external I/O bus. If your external I/O module frequently drops or reports errors, it should be changed to "PBUS J". This will force the PLC to detect the external I/O bus during startup, and only when the bus connection is normal can it enter the "RUN" mode, thereby avoiding I/O data disorder caused by poor contact.
Electromagnetic Compatibility (EMC) and Wiring: The manual extensively emphasizes anti-interference, which directly affects the stability of outdated systems. When maintaining, please focus on the following three points:
Cable grouping: Ensure that signal lines and shielded bus cables (such as SINEC L1) of 24V and below are routed separately from power lines greater than 60V and power cables greater than 400V, maintaining a distance of at least 10 centimeters, or in different metal cable trays.
Shielding grounding: Analog signal and bus cables must be shielded and grounded at both ends, and metal cables should be clamped at the entrance of the cabinet to directly press the shielding layer on the grounding rail over a large area. Do not twist the shielding layer into a "pig tail" and connect it to the module terminals, as this will greatly reduce the high-frequency interference suppression effect.
Equipotential connection: If the system is divided into different cabinets and connected through signal cables, it is necessary to lay equipotential connection conductors with a cross-sectional area of not less than 16mm ². This is crucial for preventing communication failures or analog drift caused by ground potential differences.

Structured Fault Diagnosis: From LED to ISTACK
The S5-90U/95U provides a powerful diagnostic toolchain. When the system malfunctions, please do not blindly restart and follow the following steps:
Step 1: Observe the LED on the operation panel
RUN light on, STOP light on (S5-95U): This indicates that the PLC is in "REST" mode and is usually executing the startup organization block (OB21/OB22). If it stays in this state for a long time, check if there is a dead loop in the startup program.
Red STOP light flashing: This is a critical signal indicating an error occurred while loading or saving the program. At this point, the programmer should be connected and the "ISTACK" function should be called.
RUN light on but I/O abnormal: This is a typical program logic error or I/O module failure. Use the "Status VAR" function of the programmer to monitor the status of input and output signals online, compared to checking the IO table point by point.
Step 2: Analyze ISTACK (Interrupt Stack)
ISTACK is the core of fault diagnosis. When the PLC enters STOP mode due to a fault, ISTACK freezes on-site information. By reading ISTACK through the programmer, you will receive a 16 bit error ID and fault address.
Address analysis: ISTACK will provide a "STEP Address Counter (SAC)" and a "Relative STEP Address Counter (REL-SAC)". Convert the hexadecimal address to decimal and accurately locate the erroneous program statement based on the length of the data block (DB).
Common Error ID Interpretation:
NNN: Indicates a statement that the CPU cannot execute. The most common reason is that programmers used instructions that are not supported by this version of the CPU, or the program was damaged during transmission. In old systems, if the battery has been replaced, please be sure to download the program again to ensure its integrity.
TRAF: Transmission error. This usually occurs in accessing a data block (DB), such as attempting to read a non-existent DB, or accessing a data word (DW) that exceeds the defined length of the DB (e.g. the DB only has 10 words, but the program attempts to read the 11th word).
ZYK: Scan cycle timeout. The program execution time of S5-95U exceeds its watchdog time (default 300ms). The reason may be that the program contains a dead loop, or that too many interrupt/time drivers (OB3/OB13) are called within one cycle. The solution is to optimize the program or divide the long program into multiple program blocks (PB).
PEU: External I/O bus failure. When set to "PBUS J", if no external I/O bus is detected or the module on the bus does not match the configuration, the PLC will report this error and stop in STOP mode. Check the connection cable and terminal resistance of the IM 316/315 interface module.
SUF (S5-95U only): Replacement error. Usually, when calling a function block (FB), the actual parameters passed to FB do not match the parameter types defined by the called FB. For example, FB requires a KT type time constant, but you give an integer of KF type when calling it.
Step 3: Use BSTACK to track the program path
When dealing with runtime errors such as TRAF or SUF, BSATCK (block stack) is more effective than ISTACK. BSTACK records the nested path of program execution. Assuming ISTACK indicates that the error occurred in function block FB2, BSTACK will show you the complete chain of calling FB2: OB1->PB2->FB2. At the same time, it will also display which data block (DB) is open when calling FB2. This is crucial for troubleshooting errors such as' DB access out of bounds'.
In depth application of core functions and fault prediction
The S5-95U is equipped with many practical functions that even today seem quite useful, and mastering them can effectively predict and prevent system failures.
Real time response: interrupts and high-speed counters
Application scenario: A sensor signal is required to trigger an emergency stop, or an encoder pulse is needed for precise positioning.
Configuration: Interrupt inputs (I34.0-I34.3) and counter inputs (Counter A/B) need to be enabled in the OBI: and OBC: parameter blocks of DB1. For example, IP 0 indicates enabling I34.0 as a rising edge interrupt; CAP 500 indicates the activation of counter A, which generates an interrupt when the count reaches 500.
Fault prediction: The input frequency of the counter is strictly limited. The manual clearly states that when a programmer or OP (operation panel) is connected, the maximum frequency of counter A will decrease from 5kHz. The calculation formula is: frequency=1/[(0.5ms+additional interruption reaction time) * current count value]. If you find that high-speed counting always loses pulses, you should check if the human-machine interface is connected through the programmer interface and re evaluate the counting frequency.
Accuracy and efficiency of analog processing
Input processing (FB250): The onboard analog input range is 0-10V, with a resolution of 10 bits. Directly reading the original value (0-1024) is meaningless. FB250 must be called for scaling. For example, converting a 0-10V temperature sensor signal directly to an engineering value of 0.0-200.0 ° C.
Key parameter: KNKT is used to define channel types. For onboard input, KY=0.4 (unipolar) must be set. OGR and UGR define the upper and lower limits of the engineering values you want.
Optimize scanning cycle: By default, all analog inputs are read into the Process Image Area (PII), which increases the scanning cycle. In the OBA: parameter block of DB1, AI parameters can control the number of channels read into PII. For example, AI 4 indicates that the first four channels are cyclically read in. If your program does not require values for all channels every cycle, it is recommended to set this value to 0 and then perform a single read by setting EINZ=1 for FB250 when a channel needs to be read in the program, which can significantly improve CPU utilization.
Time sensitive application: Real time clock
Scenario: Scheduled start stop, accumulated equipment running time, event logging.
Key point: The positions of the clock data area and status word need to be defined in the CLP: parameter block of DB1. STW defines the position of the status word, and CLK defines the clock data area. For precise control, it is recommended to store the clock data area in a dedicated, power-off hold data block.
Diagnosis: Bit 0, 8, and 12 of the status word respectively indicate whether the clock, running hour meter, and prompt time settings are incorrect. Bit 13 is a very useful flag bit, which will be set to 1 when the set "prompt time" is reached. You can periodically scan this bit in the program to achieve precise timed task triggering.

Migration and Upgrade Strategies for Old Systems
Completely replacing an S5 system is costly and risky. A more economical strategy is to perform "core porting" or "system integration".
Retain I/O and upgrade CPU: Siemens' new generation S7-1200 or S7-1500 series does not provide direct compatibility with the S5-100U module. However, you can connect the existing sensor and actuator signals to the new system through a third-party gateway (such as Profinet to S5-100U bus coupler) or by using the ET 200SP distributed I/O system. This method can maximize the preservation of the original on-site wiring.
Program migration strategy:
Documentation: Firstly, use STEP 5 software to upload the complete program in the PLC and print out a detailed statement table (STL). This is the only reliable information for subsequent work.
Refactoring rather than translation: It is not recommended to mechanically "translate" STL code line by line into LAD/FBD language in TIA Portal. S5-95U supports structured programming (PB, FB, DB), and you can first understand the functional architecture of the original program (such as main loop, interrupt handling, PID tuning, etc.).
Using standard libraries: The original code may have called integrated function blocks such as FB240 (BCD to integer conversion) and FB242 (multiplication). In S7, these features have more efficient standard library functions (such as CONV, MUL). During the porting process, these new standard functions should be used instead of simulating the behavior of old blocks.
Communication integration: S5-95U can serve as a slave station for SINEC L1 through its TTY interface (programmer interface). In modern systems, you can integrate S5-95U as a substation into a new SCADA system through a protocol converter (such as converting L1 to Modbus RTU or TCP/IP). In this way, data collection and monitoring can be achieved without modifying any S5 program.
Tips for reducing scanning load:
The scanning cycle of S5-95U is greatly affected by internal timer updates. By default, the system will handle all 128 timers (T0-T127). If your program only uses a portion of it (such as T0-T9), it is strongly recommended to modify NT 128 to NT 10 in the system parameter (SDP:) of DB1. This can significantly reduce the timer refresh time from 128 * 33 µ s=4.2ms to 10 * 33 µ s=0.33ms. For systems with tight scanning cycles, this is an immediate optimization method.
