Diagnostic functions of PLC
User defined errors
C.5 Failure alarm - FAL(06)
C.6 Severe Failure
alarm - FALS(07)
C.7 MESSAGE - MSG(46)
C.8 Syntax errors
C.9 Algorithm for
finding errors in the program
The whole work of PLC controller can be
represented with a diagram shown on the following page. After turning on
the power, PLC is first initialized (clearing IR, SR i AR areas,
system timers and checking I/O lines), and if no errors were detected,
monitoring process, program execution, calling the I/O lines and serving
the peripheral devices starts to occur in cycles.
Diagnostic functions of PLC
PLC controller features
additional functions that make locating errors easier. Errors can be divided into two
categories according to severity :
1. Fatal errors are severe and they prevent PLC controller from operating
until their cause is located and solved.
2. Non-fatal errors are those that do not prevent PLC controller from
operating. After detecting one or more non-fatal errors, program execution
will continue. Nevertheless, it is necessary to correct these errors as
soon as possible.
When one of these errors
takes place, indicators POWER and RUN will be on, and the indicator ERR/ALM
will blink. Upon locating non-fatal error, manual for the given PLC
controller should be consulted and the flags checked in order to
understand the cause of a problem and correct the error.
When any of the fatal errors take place, PLC
controller stops operating and all outputs are shut down. PLC controller
cannot be put back to work until the controller is turned off and then
turned back on, or until it is switched to PROGRAM mode via peripheral
device and the fatal error corrected. With these errors, indicators ERR/ALM
are on, while the RUN indicator remains off. It is necessary to check the
error flag in the manual of the given PLC in order to locate the cause of
the problem and to correct the error.
User defined errors
There are three
instructions for user to define his own errors or messages. FAL(06)
causes non-fatal error, FAL(07) causes fatal error, while MSG(46) sends a
message to program console or to the host computer connected to the PLC
Failure alarm - FAL(06)
generates the code of non-fatal error that took place to provide the
information on the possible cause of the problem for the programmer. Upon
execution of the instruction FAL(06) following events take place:
1. Indicator ERR/ALM will blink, while PLC continues to work.
2. Two-digits BCD number of instruction FAL (01 do 99) is written from SR253000 to SR25307.
Same number must not be assigned to both FAL and FALS instructions. To
delete the code of an error, error should be corrected and FAL 00
Severe failure alarm - FALS(07)
generates the code of fatal error that took place. In this case the
1. Program stops and all outputs are shut down.
2. Indicator ERR/ALM is turned on.
3. Two-digit BCD number (01 do 99) of instruction FALS is written from SR 253000 to SR25307.
4. If memory card with RTC is used, part of the memory where the presence
of error is recorded will also contain numbers of FALS instruction and
exact time when error took place.
Numbers of FALS instruction can be assigned to certain states. Same number
must not be assigned to both FAL and FALS instructions. To delete FALS
error, PLC controller must be in PROGRAM mode, cause of error solved and
then error code deleted.
Message - MSG (46)
MSG(46) is used for
printing messages on program console display. Message cannot exceed 16
characters, and it appears when specified condition is fulfilled.
During the program check with operation
Program Check, syntax errors are detected. There are three levels of
program check at user’s disposal. By selecting the level, types of errors
to be checked for are selected. The following table shows types of errors,
corresponding messages that appear on display and explains all of syntax
errors. Zero level check searches for errors of A, B and C type. First
level check searches for errors of A and B type, while the second searches
only for errors of type A.
and the appropriate action
is damaged by creating non-existing function in the code. Re-enter
logical blocks doesn't match the instructions of logical blocks.
Check the program.
constant is not in allowed range. Change the constant so that it
fits in the proper range.
is missing the instruction END(01). Add END(01) to the last
address of the program.
is in the wrong place of the program. Check what the instruction
demands and correct the mistake.
JME(04) is missing the instruction JMP(05). Correct the number of
jump and add the correct JME(04) instruction.
number of jump or subroutine is used twice in the program. Correct
the program so that each number is used only once.
SBS(091) is programmed for non-existing subroutine. Correct the
number of subroutine or create the missing one.
with the number of section and STEP(08) without the number of
section are used illegally. Check the demands of instruction
STEP(08) and correct the mistake.
and ILC(03) are not used in pair. Check if every instruction
IL(02) has its corresponding ILC(03). This message will also
appear in case that multiple IL(02) instructions were used with
single ILC(03) instruction. Check if that's exactly what you
and JME(05) are not used in pair. Before proceeding, check if the
program is written exactly the way you wanted.
address of instruction SBN(92) is displayed, there are two
different subroutines with the same number. Change one of the
numbers or delete one of the subroutines in question. If the
address of instruction RET(93) is displayed, RET(93) wasn't used
appropriately. Check the demands of this instruction and correct
is controlled by more than one instruction (for example, OUT, OUT
NOT, DIFU(13), KEEP(11), SFT(10)...). Although certain
instructions allow this, you should check the demands of specific
instructions, make sure that the program is correct or rearrange
the program so that each bit is controlled by single instruction.
is used without JMP(04) with the same number of jump. Add the
instruction JMP(04) with the same number or delete JME(05) that is
a subroutine that is not called by SBS(91). Add subroutine call to
an appropriate place in the program or delete the subroutine.
Algorithm for finding errors in the program