6. HX3040 Redundancy
296
NonSkippedProtPrg Program
This POU is similar to "NonSkippedPrg", except that it features a higher priority. The
"NonSkippedProtPrg" is created only in projects with CPU redundancy.
GVLs with Redundant Symbolic Variables
You can create GVLs other than those mentioned above, so as to declare redundant symbolic
variables. For that, after generate the GVL, select it in the Redundancy Configuration object
configuration (in the project device tree). By default, all user-created GVLs are initially redundant.
ATTENTION:
Avoid using the AT directive in GVLs containing redundant symbolic variables declarations so as to
prevent the variable mappings in non-redundant areas.
Program POUs with Redundant Symbolic Variables
You can declare redundant symbolic variables in program POUs, except for NonSkippedPrg and
NonSkippedProtPrg as these sorts non-redundant variables.
You can create POUs other than those mentioned above, so as to declare redundant symbolic
variables. For that, after generate the POU, select it in the Redundancy Configuration object
configuration (in the project device tree). By default, all user-created POUs are initially redundant.
ATTENTION:
Avoid using the AT directive in redundant POUs so as to prevent the variable mappings in non-
redundant areas.
Breakpoints Use in Redundant Systems
For redundant systems, you can only use breakpoints in the Active CPU if the other one is outside the
bus or it is in Inactive state. MasterTool blocks the operation if it meets this condition.
Limitations in the Programming of a Redundant CPU
Redundant CPUs present some limitations regarding the programming. The following subsections
discuss such restrictions.
Limitations in GVLs and Redundant POUs
For GVLs or redundant program POUs make sure to attend the following rules for the correct
operation of the CPUs:
Do not use VAR_TEMP variables.
Do not mix several variable types (VAR, VAR RETAIN, VAR PERSISTENT, etc.) The GVL or
POU must contain one kind in each.
Do not mix declaration of symbolic variables with ATs in GVLs. Create separate GVLs
declaring AT variables in the first one and the symbolic variables in the second one.
Do not store the address of a variable in a redundant variable (use a redundant variable as a
pointer to an address), as the addresses of the variables may be different in CPUA and CPUB.
Limitations in the Non-Redundant Program (StartPrg, NonSkippedPrg and NonSkippedProtPrg)
For non-redundant POUs (POUs StartPrg, NonSkippedPrg and NonSkippedProtPrg), make sure to
attend the following rules for the correct operation of the CPUs:
Do not use TON and TOF traditional function blocks, as they use the IEC timer. When the Stand-
by CPU goes into Active state (while the other CPU exits the Active state), the IEC timer will be
synchronized, causing a discontinuity in the timer value. Preferably, use TON_NR and TOF_NR
functional blocks, which are available in LibPlcStandard library. See Configuration > Function
Blocks > Non-Redundant Timer