Controlling a child program may be simply achieved by specifying the name of the child program as an action block in a step of its parent program. Below are possible qualifiers that can be applied to an action block for handling a child program:
Child (N); | Starts the child program when the step is activated and stops (kills) it when the step is de-activated. |
Child (S); | Starts the
child program when the step is activated (Inital steps of the child program are activated) |
Child (R); | Stops
(kills) the child program when the step is activated (All active steps of the child program are deactivated) |
Alternatively, you can use the following statements in an action block programmed in ST language. In the following table, "prog" represents the name of the child program:
GSTART (prog); | Starts the
child program when the step is activated (Inital steps of the child program are activated) |
GKILL (prog); | Stops
(kills) the child program when the step is activated (All active steps of the child program are deactivated) |
GFREEZE (prog); | Suspends the execution of a child program |
GRST (prog); | Restarts a program suspended by a GFREEZE command. |
You can also use the "GSTATUS" function in expressions. This function returns the current state of a child SFC program:
GSTATUS (prog) | Returns
the current state of a child SFC program: 0: program is inactive 1: program is active 2: program is suspended |
Note: When a child program is started by its parent program, it keeps the "inactive" status until it is executed (further in the cycle). If you start a child program in a SFC chart, GSTATUS will return 1 (active) on the next cycle.