Kkula
Hello
Firstly, many thanks for all the advice generally contained in this forum, It has been an invaluable resource over the years and has helped me solve many problems. However I have come up against an intermittent fault on a Safety Digital Input Card that has got me stumped - and am trying to diagnose the exact cause of the problem.
My suspicion is that the fault is in the external field wiring that is connected to the card and I am trying to use OB82 to diagnose which Channel (or Group Power Supply) is causing the fault so that I can narrow down the wiring to be examined in detail. (Initial field wiring checks have not revealed any faults)
I have enabled module diagnostics on the affected module #110 ( Whose Rack is connected to the PLC over a Hardwired connection rather than by a Probus/Profinet remote IO slave)
The PLC CPU Module Diagnostics show the module going into fault (Event 7) and that there is Channel Data Available (Event 8):
Event 7 of 100: Event ID 16# 79E5
F-I/O passivated
- Check value error (CRC)/Sequence number error detected in the F-CPU
Logical base address: 110
F-I/O database number: 12802
External error, Incoming event
06:23:07.339 AM 06/16/2015
(Coding: 16# 79E5 9F00 C47A 3202 006E 0001)
Event 8 of 100: Event ID 16# 3942
Module problem or maintenance necessary
Module type: FM
Input address: 110
Internal module power supply failed
Channel information available
Module/submodule fault
Internal module error
Requested OB: Diagnostic interrupt OB (OB82)
Priority class: 26
External error, Incoming event
06:23:07.311 AM 06/16/2015
(Coding: 16# 3942 1A52 C554 006E 0318 1000)
However, the Module does not list any Channel or Group Data to narrow the fault down - Instead the fault is shown as 'External load voltage missing'. See Events 1 to 6 below. No Diagnostic Interrupt information is listed in the Module Information.
Diagnostic buffer of module FDI24xDC24V
Order No./ Description Component Version
6ES7 326-1BK02-0AB0 Hardware 1
- - - Firmware V 3.0.0
Rack: 2
Slot: 8
Serial number: S C-E7WC23412014
Event 1 of 8: Event ID 16# F980:0501
External load voltage missing
External error, Incoming event
(Coding: 16# F980 0501 0000 0000 0000 0000)
Event 2 of 8: Event ID 16# F980:0501
External load voltage missing
External error, Incoming event
(Coding: 16# F980 0501 0000 0000 0000 0000)
Event 3 of 8: Event ID 16# F980:0501
External load voltage missing
External error, Incoming event
(Coding: 16# F980 0501 0000 0000 0000 0000)
Event 4 of 8: Event ID 16# F980:0501
External load voltage missing
External error, Incoming event
(Coding: 16# F980 0501 0000 0000 0000 0000)
Event 5 of 8: Event ID 16# F980:0501
External load voltage missing
External error, Incoming event
(Coding: 16# F980 0501 0000 0000 0000 0000)
Event 6 of 8: Event ID 16# F980:0501
External load voltage missing
External error, Incoming event
(Coding: 16# F980 0501 0000 0000 0000 0000)
So, in an attempt to gain more information about the problem I have programmed OB82 with the following code to try and capture more information and log it using SFC51 if a channel fault is detected.
OB82 Code
// Set Data bit to show that OB82 has been called.
A "AlwaysOn"
S "DIAG_DB".OB82_Called
// Compare Address to Module Base Address stored in TEMP Data of OB82
L 110
L #OB82_MDL_ADDR
==I
JCN END // If the module address of the Ob82 is 110 then do not jump
// Evaluate Whether Event Class matches the Value of 39 (Hex) in byte format
// b#16#39 for entering the diagnostic, b#16#38 for leaving the diagnostic
L B#16#39
L #OB82_EV_CLASS
==I
JCN MODOK // If not entering Diagnostic then Module is ok
// Set up module on address 110 when entering diagnostic
A #OB82_EXT_FAULT
S "DIAG_DB".External_Failure
JCN NEXF
A #OB82_INT_FAULT
S "DIAG_DB".Internal_Failure
A #OB82_PNT_INFO
JCN END // Jump not if there is more channel information available
S "DIAG_DB".Channel_Failure
JU END
NEXF: NOP 0
//here you may react to internal faults
SET
= "DIAG_DB".Internal_Failure
JU END
MODOK: NOP 0
//reset all markers if not entering diagnostic > the module is ok
CLR
= "DIAG_DB".Channel_Failure
= "DIAG_DB".Internal_Failure
= "DIAG_DB".External_Failure
JU END
END: NOP 0
BEU
Unfortunately though when the eror occurs, it sets the OB82 Called Bit (so I can see that the block has been called) but none of the other bits 'Channel_Failure, Internal Failure, External Failure are set. Therefore the SFC51 (triggered in OB1 when the Channel Failure bit is set) is never called.
I guess my question is whether anyone else has experienced a similar problem and if so, what steps did they take to find the fault. And also has anyone used OB82 in similar circumstances and had the same issue as me (or have I made a silly programming error that I haven't spotted)
If you've made it this far into the post, then many thanks for taking the time to read it - it is much appreciated.
Best regards,
Jon
You're facing a tricky issue with an intermittent fault on a safety digital input card (FDI24xDC24V, Module #110). The PLC diagnostics indicate a fault (Event 7 - CRC/Sequence error) and module problem (Event 8 - Internal power supply failed, Channel information available), yet the diagnostic buffer consistently reports "External load voltage missing" (Events 1-6) without providing specific channel information.
Your approach of using OB82 for detailed diagnostics is sound, but the fact that your OB82 code isn't triggering as expected suggests the issue lies in how the module is reporting the fault *before* OB82 is even called, or an issue with the event class being evaluated.
Here are some suggestions:
L B#16#39). The correct event class for entering diagnostics might differ based on your TIA Portal version or PLC configuration. Consult Siemens documentation for the exact value.It’s possible the 'External load voltage missing' message is a symptom of an underlying communication problem rather than a direct indication of a wiring issue. Troubleshooting the communication path is crucial.
Share this page with your family and friends.