6. HX3040 Redundancy
266
Therefore, NonSkippedPrg will always run in both CPUs (CPUA and CPUB), regardless of its
redundancy state. As for the UserProtPrg program, it will run only in the active CPU. This POU
presents a higher priority than UserPrg.
Oppositely to the ProtPrg, which cannot and must not be modified, the user may modify other
programs. When the redundant project is created from the Redundancy Template, the programs are
“empty”, although it is possible to the user insert them a code.
UserProtPrg Program
The main goal of this program, which is executed only in the active CPU, is to control processes with
higher priority than the UserPrg of the final user.
This POU runs only in the Active CPU and it aims to control the user process. “UserProtPrg” is
created only in projects with CPU redundancy and its priority is higher than “UserPrg”. For further
information see Redundant CPU Programming ProtTask Configurations.
NonSkippedProtPrg Program
This program, which runs in both CPUs regardless of their redundancy state, features a higher
priority than “NonSkippedPrg”. It is commonly used for functions such as:
Activities that, for some reason, need to run in the Active CPU and in the Stand-by CPU with
high priority.
For further information, see Redundant CPU Programming - NonSkippedProtPrg Program.
Redundant and Non-redundant Variables
The variables of a redundant CPU can be classified as redundant and non-redundant. Redundant
variables are copied from the Active CPU to the Non-Active one at the beginning of each MainTask
cycle (through the CPU sync channels). On the other hand, non-redundant variables are not copied
between CPUs and therefore may have different values in the both CPUs (Active and Non-Active).
The non-redundant variables are used to store private information of each CPU (CPUA and CPUB),
such as diagnostic communication drivers and diagnostic CPU, including diagnostics redundancy
(redundancy state of this CPU, etc.).
Redundant variables regard the shared information and the process control. The variables associated
to I/O modules are typical examples of redundant variables.
Redundant %I Variables
Typically, the direct representation input variables (%I) are allocated to store the signals read from
the digital and analog input modules of the local bus.
In projects with CPU redundancy that have input modules on the local bus, there is a range of %I
variables, which is automatically redundant. This range always starts with the %I variable of address
0 and extends to the %I most used in local input modules.
Projects with CPU Redundancy that do not have input modules on the local bus will not have
redundant direct representation input variables % I.
Redundant %Q Variables
Typically, the direct representation output variables (%Q) are allocated to store the signals written in
the digital and analog output modules of the local bus.
In projects with CPU redundancy that have output modules on the local bus, there is a range of %Q
variables, which is automatically redundant. This range always starts with the %Q variable of most
used address in local output modules.
Projects with CPU Redundancy that do not have output modules on the local bus will not have
redundant direct representation output variables % Q.