- プログラムの起動・停止は親SFCからのみ行えます。言い換えると、プログラムは自分自身を停止できません。プログラムの起動はgstart命令で行うが、その際プログラムがすでに活動中であれば、命令は無意味になります。
そこで、ご希望の動作をさせるには次のような工夫が必要です。
(1)まず、グローバル変数
child_flag:論理値、チャイルドプログラムを動作・停止させるフラグを定義します。
(2)次に、チャイルドプログラムの内容を下記のようにします。
(3)親プログラムを下記のように記述します。
-
(a)初期ステップ
-
チャイルドプログラムをgstartする。
-
パルスアクションで変数 Child_flagをtrueにする。
-
1.変数 Child_flagをfalseにし、
2.gkill(チャイルドプログラム)し、
3.gstrat(チャイルドプログラム)する。
このようにすれば、実際にはチャイルドは常に動作しているものの、処理そのものを止めたり初期ステップから起動することが出来ます。
注意事項
ISaGRAF ver.4/5では gkill,gstart 命令はサポートしていません。