(57)【特許請求の範囲】
【請求項１】
基本コントローラおよび少なくとも１つの拡張コントローラを備え、これらの複数のコントローラの各々で別々のアプリケーションプログラムを実行する構成とされたプログラマブルコントローラシステムであって、
前記基本コントローラおよび前記拡張コントローラで共有される共有メモリ領域に設けられた同期フリーランカウンタと、
前記共有メモリ領域に設けられてアプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を記憶するアプリ運転状態開始カウンタ値記憶手段と、
前記基本コントローラ用のアプリケーションについての運転状態および停止状態を含むステータスを記憶する前記基本コントローラ用のステータス記憶手段と、
前記拡張コントローラ用のアプリケーションについての運転状態および停止状態を含むステータスを記憶する前記拡張コントローラ用のステータス記憶手段とを備え、
前記基本コントローラは、
前記拡張コントローラへ同期割込み信号を送信する処理を実行する同期割込み送信処理手段と、
前記同期フリーランカウンタに、前記同期割込み信号の１回の送信につき、１カウント若しくは一定数のカウントを加算または減算する処理を実行するカウント更新処理手段とを備え、
前記拡張コントローラは、
前記基本コントローラからの前記同期割込み信号を受信する処理を実行する同期割込み受信処理手段を備え、
前記基本コントローラおよび前記拡張コントローラの各々は、
前記同期フリーランカウンタの現在値と、前記アプリ運転状態開始カウンタ値記憶手段に記憶された前記同期フリーランカウンタ値とが一致したか否かを判断する処理を繰り返し実行するアプリ運転状態開始タイミング判断処理手段と、
このアプリ運転状態開始タイミング判断処理手段により一致したと判断した場合に、各々の前記ステータス記憶手段に記憶された前記ステータスを、アプリケーション停止状態からアプリケーション運転状態へ移行させる処理を実行するアプリ運転状態移行処理手段と、
前記同期割込み信号の送受信のタイミングで、各々の前記ステータス記憶手段に記憶された前記ステータスを取得し、取得した前記ステータスがアプリケーション運転状態である場合に、各々のアプリケーションの起動要求処理を実行するアプリケーション起動要求処理手段と
を備えたことを特徴とするプログラマブルコントローラシステム。
【請求項２】
前記基本コントローラは、
外部からの起動要求を受け付けた場合に、前記同期フリーランカウンタの現在値に、予め定められたカウント数を加算または減算することにより、前記アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を算出し、算出した前記同期フリーランカウンタ値を前記アプリ運転状態開始カウンタ値記憶手段に記憶させる処理を実行する設定用カウンタ値算出・設定処理手段を備えた
ことを特徴とする請求項１に記載のプログラマブルコントローラシステム。
【請求項３】
基本コントローラおよび少なくとも１つの拡張コントローラを備え、これらの複数のコントローラの各々で別々のアプリケーションプログラムを実行する構成とされたプログラマブルコントローラシステムのアプリケーション起動方法であって、
前記基本コントローラおよび前記拡張コントローラで共有される共有メモリ領域に、同期フリーランカウンタと、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を記憶するアプリ運転状態開始カウンタ値記憶手段とを設けるとともに、
前記基本コントローラ用のアプリケーションについての運転状態および停止状態を含むステータスを記憶する前記基本コントローラ用のステータス記憶手段と、前記拡張コントローラ用のアプリケーションについての運転状態および停止状態を含むステータスを記憶する前記拡張コントローラ用のステータス記憶手段とを設けておき、
前記基本コントローラの同期割込み送信処理手段が、前記拡張コントローラへ同期割込み信号を送信する処理を実行し、
前記基本コントローラのカウント更新処理手段が、前記同期フリーランカウンタに、前記同期割込み信号の１回の送信につき、１カウント若しくは一定数のカウントを加算または減算する処理を実行し、
前記拡張コントローラの同期割込み受信処理手段が、前記基本コントローラからの前記同期割込み信号を受信する処理を実行し、
前記基本コントローラおよび前記拡張コントローラの各々のアプリ運転状態開始タイミング判断処理手段が、前記同期フリーランカウンタの現在値と、前記アプリ運転状態開始カウンタ値記憶手段に記憶された前記同期フリーランカウンタ値とが一致したか否かを判断する処理を繰り返し実行し、
前記基本コントローラおよび前記拡張コントローラの各々のアプリ運転状態移行処理手段が、前記アプリ運転状態開始タイミング判断処理手段により一致したと判断した場合に、各々の前記ステータス記憶手段に記憶された前記ステータスを、アプリケーション停止状態からアプリケーション運転状態へ移行させる処理を実行し、
前記基本コントローラおよび前記拡張コントローラの各々のアプリケーション起動要求処理手段が、前記同期割込み信号の送受信のタイミングで、各々の前記ステータス記憶手段に記憶された前記ステータスを取得し、取得した前記ステータスがアプリケーション運転状態である場合に、各々のアプリケーションの起動要求処理を実行する
ことを特徴とするプログラマブルコントローラシステムのアプリケーション起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、基本コントローラおよび少なくとも１つの拡張コントローラを備え、これらの複数のコントローラの各々で別々のアプリケーションプログラムを実行する構成とされたプログラマブルコントローラシステムおよびそのアプリケーション起動方法に係り、例えば、各々のコントローラでユーザデータ領域を使用するアプリケーションプログラムを実行する場合等に利用できる。
【背景技術】
【０００２】
図７には、従来のプログラマブルコントローラシステム９０の構成の一例が、システム処理の流れの概略とともに示されている。また、図８には、プログラマブルコントローラシステム９０による従来のシステム処理のタイムチャートが示されている。
【０００３】
図７において、プログラマブルコントローラシステム９０は、基本コントローラ９１と拡張コントローラ９２とを備えている。基本コントローラ９１は、マイクロプロセッサ９１Ａと、このマイクロプロセッサ９１Ａで実行されるアプリケーションプログラムαが使用するユーザデータ領域を有するデータメモリ９１Ｂとを含んで構成されている。同様に、拡張コントローラ９２は、マイクロプロセッサ９２Ａと、このマイクロプロセッサ９２Ａで実行されるアプリケーションプログラムβが使用するユーザデータ領域を有するデータメモリ９２Ｂとを含んで構成されている。
【０００４】
これらの基本コントローラ９１および拡張コントローラ９２では、マイクロプロセッサ９１Ａ，９２Ａにより、それぞれ次のようなシステム処理を行う。すなわち、（１）先ず、アプリケーション運転状態においては、タイマ時間計測によりアプリケーション起動周期を生成し、所定の周期でアプリケーションプログラムα，βを起動する。（２）次に、アプリケーション停止状態からアプリケーション運転状態へ移行する際には、アプリケーションプログラムα，βが使用するデータメモリ９１Ｂ，９２Ｂのユーザデータ領域の各種変数の初期化等のようなアプリケーションプログラムα，βの起動準備処理を実行した後、アプリケーションプログラムα，βを実行するアプリケーション運転状態へ移行する。
【０００５】
そして、図８に示すように、前記（１）については、タイマ時間計測により生成されるアプリケーション起動周期（図８中の点線で示された縦線の各時刻）は、基本コントローラ９１と拡張コントローラ９２とで同期していないので、双方のアプリケーションプログラムα，βの起動タイミングには同期性がない。なお、図８中のアプリケーション運転状態におけるＡＰＬは、アプリケーションプログラムα，βが実行される期間を示し、ＳＹＳは、アプリケーション起動周期の到来を待っているシステム処理の期間を示している。
【０００６】
また、前記（２）については、アプリケーションプログラムα，βの起動準備処理の開始タイミングが非同期であるとともに、それぞれの起動準備処理に要する時間も異なる。なお、図８中のアプリケーション停止状態におけるＳＹＳは、アプリケーションプログラムα，βの起動準備処理期間を示している。
【０００７】
従って、基本コントローラ９１のアプリケーションプログラムαと、拡張コントローラ９２のアプリケーションプログラムβとは、完全に非同期で実行されることになる。
【０００８】
なお、プログラマブルコントローラの同期方式として、定周期の割込信号および同期信号により、ＰＬＣモジュール（基本コントローラ９１に相当）とオプションモジュール（拡張コントローラ９２に相当）とを同期させる方式が知られている（特許文献１参照）。
【０００９】
また、すべての外部機器が動作準備完了状態であることが確認された段階で、同期信号がすべての外部機器に送信される分散制御システムが知られている（特許文献２参照）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００４−１０２７９１号公報（段落［００１８］、図４、図５）
【特許文献２】特開２００６−２０９６４６号公報（要約）
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、前述した従来のプログラマブルコントローラシステム９０では、基本コントローラ９１のアプリケーションプログラムαと、拡張コントローラ９２のアプリケーションプログラムβとが、完全に非同期で実行されるので、精緻な制御が要求される制御対象の場合には、不都合が生じるおそれがある。例えば、カラー印刷機に設けられた送り用のサーボモータの制御等では、僅かなズレで印刷物の品質が落ちてしまうため、高精度な同期制御が要求される。
【００１２】
本発明の目的は、アプリケーション運転状態におけるアプリケーションプログラムの起動の同期化、およびアプリケーション停止状態からアプリケーション運転状態への移行の同期化を図ることができるプログラマブルコントローラシステムおよびそのアプリケーション起動方法を提供するところにある。
【課題を解決するための手段】
【００１３】
本発明は、基本コントローラおよび少なくとも１つの拡張コントローラを備え、これらの複数のコントローラの各々で別々のアプリケーションプログラムを実行する構成とされたプログラマブルコントローラシステムであって、基本コントローラおよび拡張コントローラで共有される共有メモリ領域に設けられた同期フリーランカウンタと、共有メモリ領域に設けられてアプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を記憶するアプリ運転状態開始カウンタ値記憶手段と、基本コントローラ用のアプリケーションについての運転状態および停止状態を含むステータスを記憶する基本コントローラ用のステータス記憶手段と、拡張コントローラ用のアプリケーションについての運転状態および停止状態を含むステータスを記憶する拡張コントローラ用のステータス記憶手段とを備え、基本コントローラは、拡張コントローラへ同期割込み信号を送信する処理を実行する同期割込み送信処理手段と、同期フリーランカウンタに、同期割込み信号の１回の送信につき、１カウント若しくは一定数のカウントを加算または減算する処理を実行するカウント更新処理手段とを備え、拡張コントローラは、基本コントローラからの同期割込み信号を受信する処理を実行する同期割込み受信処理手段を備え、基本コントローラおよび拡張コントローラの各々は、同期フリーランカウンタの現在値と、アプリ運転状態開始カウンタ値記憶手段に記憶された同期フリーランカウンタ値とが一致したか否かを判断する処理を繰り返し実行するアプリ運転状態開始タイミング判断処理手段と、このアプリ運転状態開始タイミング判断処理手段により一致したと判断した場合に、各々のステータス記憶手段に記憶されたステータスを、アプリケーション停止状態からアプリケーション運転状態へ移行させる処理を実行するアプリ運転状態移行処理手段と、同期割込み信号の送受信のタイミングで、各々のステータス記憶手段に記憶されたステータスを取得し、取得したステータスがアプリケーション運転状態である場合に、各々のアプリケーションの起動要求処理を実行するアプリケーション起動要求処理手段とを備えたことを特徴とするものである。
【００１４】
ここで、「カウント更新処理手段」における「同期割込み信号の１回の送信につき、１カウント若しくは一定数のカウントを加算または減算する処理」とは、同期割込み信号の送信を繰り返すと、同期フリーランカウンタが、０，１，２，３，４，…と１カウントずつ増加してもよく、あるいは、例えば、０，２，４，６，８，…等のように毎回カウントが同数ずつ増加してもよく、さらには、…，８，７，６，５，４，…と１カウントずつ減少してもよく、あるいは、例えば、…，１６，１４，１２，１０，８，…等のように毎回カウントが同数ずつ減少してもよい趣旨である。但し、設計の容易化、構成の簡易化等の観点からは、１カウントずつ増加していくことが好ましい。
【００１５】
このような本発明のプログラマブルコントローラシステムにおいては、基本コントローラの同期割込み送信処理手段および拡張コントローラの同期割込み受信処理手段により、同期割込み信号の送受信を行い、基本コントローラおよび拡張コントローラの各々のアプリケーション起動要求処理手段により、同期割込み信号の送受信のタイミングで、各々のアプリケーションの起動要求処理を実行するので、アプリケーション運転状態では、双方のアプリケーションの周期的に繰り返される起動を毎回同期させることが可能となる。
【００１６】
また、基本コントローラのカウント更新処理手段により、同期フリーランカウンタの値を更新していき、基本コントローラおよび拡張コントローラの各々のアプリ運転状態開始タイミング判断処理手段により、同期フリーランカウンタの現在値と、アプリ運転状態開始カウンタ値記憶手段に記憶された同期フリーランカウンタ値とが一致したと判断した場合に、各々のアプリ運転状態移行処理手段により、各々のステータス記憶手段に記憶されたステータスを、アプリケーション停止状態からアプリケーション運転状態へ移行させる。そして、各々のアプリケーション起動要求処理手段により、同期割込み信号の送受信のタイミングで、各々のアプリケーションの起動要求処理を実行する際には、各々のステータス記憶手段に記憶されたステータスを取得し、ステータスがアプリケーション運転状態に既に移行されている場合に起動要求処理を実行するので、アプリケーション停止状態からアプリケーション運転状態への移行を同期させることが可能となる。
【００１７】
このため、アプリケーション運転状態におけるアプリケーションプログラムの周期的に繰り返される起動の同期化、およびアプリケーション停止状態からアプリケーション運転状態への移行の同期化を実現することができるので、例えば、カラー印刷機に設けられた送り用のサーボモータ等のような高精度な同期制御が要求される制御対象の場合であっても、不都合なく稼働させることが可能となり、これらにより前記目的が達成される。
【００１８】
なお、前述した特許文献１，２に記載された技術は、同期フリーランカウンタによるタイミング制御を行っていないので、本発明とは異なる技術である。
【００１９】
また、前述したプログラマブルコントローラシステムにおいて、基本コントローラは、外部からの起動要求を受け付けた場合に、同期フリーランカウンタの現在値に、予め定められたカウント数を加算または減算することにより、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を算出し、算出した同期フリーランカウンタ値をアプリ運転状態開始カウンタ値記憶手段に記憶させる処理を実行する設定用カウンタ値算出・設定処理手段を備えた構成とすることが望ましい。
【００２０】
ここで、「予め定められたカウント数を加算または減算する」とは、同期フリーランカウンタが、０，１，２，３，４，…と１カウントずつ増加していくか、あるいは、例えば、０，２，４，６，８，…等のように同数カウントずつ増加していく場合には、「予め定められたカウント数」を「加算」し、一方、…，８，７，６，５，４，…と１カウントずつ減少していくか、あるいは、例えば、…，１６，１４，１２，１０，８，…等のように同数カウントずつ減少していく場合には、「予め定められたカウント数」を「減算」するという意味である。
【００２１】
このように同期フリーランカウンタの現在値に予め定められたカウント数を加算または減算する設定用カウンタ値算出・設定処理手段を備えた構成とした場合には、外部からの起動要求を受け付けたときに、そのときの同期フリーランカウンタの値を基準として、相対的にアプリケーション運転状態の開始タイミングを定めることができるので、アプリケーション運転状態の開始タイミングの判断処理の容易化を図ることが可能となる。
【００２２】
さらに、本発明は、基本コントローラおよび少なくとも１つの拡張コントローラを備え、これらの複数のコントローラの各々で別々のアプリケーションプログラムを実行する構成とされたプログラマブルコントローラシステムのアプリケーション起動方法であって、基本コントローラおよび拡張コントローラで共有される共有メモリ領域に、同期フリーランカウンタと、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を記憶するアプリ運転状態開始カウンタ値記憶手段とを設けるとともに、基本コントローラ用のアプリケーションについての運転状態および停止状態を含むステータスを記憶する基本コントローラ用のステータス記憶手段と、拡張コントローラ用のアプリケーションについての運転状態および停止状態を含むステータスを記憶する拡張コントローラ用のステータス記憶手段とを設けておき、基本コントローラの同期割込み送信処理手段が、拡張コントローラへ同期割込み信号を送信する処理を実行し、基本コントローラのカウント更新処理手段が、同期フリーランカウンタに、同期割込み信号の１回の送信につき、１カウント若しくは一定数のカウントを加算または減算する処理を実行し、拡張コントローラの同期割込み受信処理手段が、基本コントローラからの同期割込み信号を受信する処理を実行し、基本コントローラおよび拡張コントローラの各々のアプリ運転状態開始タイミング判断処理手段が、同期フリーランカウンタの現在値と、アプリ運転状態開始カウンタ値記憶手段に記憶された同期フリーランカウンタ値とが一致したか否かを判断する処理を繰り返し実行し、基本コントローラおよび拡張コントローラの各々のアプリ運転状態移行処理手段が、アプリ運転状態開始タイミング判断処理手段により一致したと判断した場合に、各々のステータス記憶手段に記憶されたステータスを、アプリケーション停止状態からアプリケーション運転状態へ移行させる処理を実行し、基本コントローラおよび拡張コントローラの各々のアプリケーション起動要求処理手段が、同期割込み信号の送受信のタイミングで、各々のステータス記憶手段に記憶されたステータスを取得し、取得したステータスがアプリケーション運転状態である場合に、各々のアプリケーションの起動要求処理を実行することを特徴とするものである。
【００２３】
このような本発明のプログラマブルコントローラシステムのアプリケーション起動方法においては、前述した本発明のプログラマブルコントローラシステムで得られる作用・効果がそのまま得られ、これにより前記目的が達成される。
【発明の効果】
【００２４】
以上に述べたように本発明によれば、基本コントローラと拡張コントローラとの間での同期割込み信号および同期フリーランカウンタによるタイミング制御により、アプリケーション運転状態におけるアプリケーションプログラムの周期的に繰り返される起動の同期化、およびアプリケーション停止状態からアプリケーション運転状態への移行の同期化を図ることができるので、高精度な同期制御を実現することができるという効果がある。
【図面の簡単な説明】
【００２５】
【図１】本発明の一実施形態のプログラマブルコントローラシステムの全体構成図。
【図２】前記実施形態のシステム処理手段の構成図。
【図３】前記実施形態のシステム構成およびシステム処理に伴うデータや信号の流れの概略図。
【図４】前記実施形態のシステム処理のうちの同期割込みを行う処理Ａの流れを示すフローチャートの図。
【図５】前記実施形態のシステム処理のうちのアプリケーションの起動準備および運転状態への移行を行う処理Ｂの流れを示すフローチャートの図。
【図６】前記実施形態のシステム処理の全体的な流れを示すタイムチャートの図。
【図７】従来のシステム構成およびシステム処理の流れの概略図。
【図８】従来のシステム処理の流れを示すタイムチャートの図。
【発明を実施するための形態】
【００２６】
以下に本発明の一実施形態について図面を参照して説明する。図１には、本実施形態のプログラマブルコントローラシステム１０の全体構成が示されている。図２には、プログラマブルコントローラシステム１０のシステム処理手段２４，３４の構成が示され、図３には、システム構成およびシステム処理に伴うデータや信号の流れの概略が示されている。また、図４には、システム処理のうちの同期割込みを行う処理Ａの流れがフローチャートで示され、図５には、システム処理のうちのアプリケーションの起動準備および運転状態への移行を行う処理Ｂの流れがフローチャートで示されている。さらに、図６には、システム処理の全体的な流れがタイムチャートで示されている。
【００２７】
図１において、プログラマブルコントローラシステム１０は、基本コントローラ２０と、拡張コントローラ３０と、管理部４０とを備えて構成されている。本実施形態では、これらの基本コントローラ２０、拡張コントローラ３０、および管理部４０は、それぞれ別々のプリント基板上に形成され、これらの３つの基板が１つの筐体（不図示）に収納される構成となっているが、これに限定されるものではなく、例えば、基本コントローラ２０、拡張コントローラ３０、および管理部４０が、それぞれ別の筐体に収納されていてもよい。
【００２８】
基本コントローラ２０は、バスＬＳＩ２１と、マイクロプロセッサ２２と、主メモリ２３と、共有メモリ領域２５と、フラッシュメモリ２６と、データメモリ２７とを備えている。そして、マイクロプロセッサ２２およびその動作手順を規定するシステムプログラムγ、並びに作業領域である主メモリ２３等により、システム処理手段２４が構成されている。
【００２９】
拡張コントローラ３０も同様な構成であり、バスＬＳＩ３１と、マイクロプロセッサ３２と、主メモリ３３と、共有メモリ領域３５と、フラッシュメモリ３６と、データメモリ３７とを備えている。そして、マイクロプロセッサ３２およびその動作手順を規定するシステムプログラムδ、並びに作業領域である主メモリ３３等により、システム処理手段３４が構成されている。
【００３０】
管理部４０は、基本コントローラ２０や拡張コントローラ３０とは異なった構成であり、バスＬＳＩ４１と、マイクロプロセッサ４２と、主メモリ４３と、共有メモリ領域４５と、フラッシュメモリ４６と、ＵＳＢ接続部４７Ａと、イーサネット接続部４７Ｂ（イーサネットは登録商標）と、シリアル接続部４７Ｃと、スイッチ操作信号入力部４８とを備えている。そして、マイクロプロセッサ４２およびその動作手順を規定するシステムプログラムε、並びに作業領域である主メモリ４３等により、システム処理手段４４が構成されている。
【００３１】
基本コントローラ２０、拡張コントローラ３０、および管理部４０のバスＬＳＩ２１，３１，４１は、内部バス１１に接続され、これらのバスＬＳＩ２１，３１，４１による共有化のための内部バス１１を介した通信機能により、基本コントローラ２０、拡張コントローラ３０、および管理部４０の共有メモリ領域２５，３５，４５に記憶された各種のデータは共有化され、各共有メモリ領域２５，３５，４５のそれぞれに同じデータが保持されるようになっている。
【００３２】
マイクロプロセッサ２２，３２，４２は、主メモリ２３，３３，４３に記憶されたアプリケーションプログラムα，βやシステムプログラムγ，δ，εを読み込んで実行する中央演算処理装置である。なお、管理部４０のマイクロプロセッサ４２では、アプリケーションプログラムの実行処理は行わない。
【００３３】
主メモリ２３，３３，４３は、本実施形態では、一例としてシンクロナスＤＲＡＭ（ＳＤＲＡＭ）とされているが、これに限定されるものではない。
【００３４】
共有メモリ領域２５，３５，４５は、本実施形態では、一例としてＳＲＡＭとされているが、これに限定されるものではない。これらの共有メモリ領域２５，３５，４５には、同期フリーランカウンタ２５Ａ，３５Ａ，４５Ａと、アプリケーション起動準備処理の開始タイミングを示す同期フリーランカウンタ値を記憶するアプリ起動準備開始カウンタ値記憶手段２５Ｂ，３５Ｂ，４５Ｂと、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を記憶するアプリ運転状態開始カウンタ値記憶手段２５Ｃ，３５Ｃ，４５Ｃと、基本コントローラ２０に対してアプリケーション運転開始要求が行われたか否かを示すフラグを記憶する基本コントローラ２０用のアプリ運転開始要求フラグ記憶手段２５Ｄ，３５Ｄ，４５Ｄと、拡張コントローラ３０に対してアプリケーション運転開始要求が行われたか否かを示すフラグを記憶する拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段２５Ｅ，３５Ｅ，４５Ｅと、基本コントローラ２０用のアプリケーションαについての運転状態および停止状態を含むステータスを記憶する基本コントローラ２０用のステータス記憶手段２５Ｆ，３５Ｆ，４５Ｆと、拡張コントローラ３０用のアプリケーションβについての運転状態および停止状態を含むステータスを記憶する拡張コントローラ３０用のステータス記憶手段２５Ｇ，３５Ｇ，４５Ｇとが設けられている。
【００３５】
なお、共有メモリ領域２５，３５，４５には、その他に、基本コントローラ２０に対してアプリケーション停止要求が行われたか否かを示すフラグを記憶する基本コントローラ２０用のアプリ停止要求フラグ記憶手段（不図示）や、拡張コントローラ３０に対してアプリケーション停止要求が行われたか否かを示すフラグを記憶する拡張コントローラ３０用のアプリ停止要求フラグ記憶手段（不図示）等が設けられているが、本発明の処理に直接関係しないため、説明を省略する。また、後述するように、アプリ起動準備開始カウンタ値記憶手段２５Ｂ，３５Ｂ，４５Ｂの設置を省略してもよい。
【００３６】
フラッシュメモリ２６，３６、４６は、ローダ５０でユーザにより作成されてコンパイルされたアプリケーションプログラムα，βや、システムプログラムγ，δ，εを格納するものである。
【００３７】
データメモリ２７，３７は、例えばＳＲＡＭ等であり、アプリケーションプログラムα，βの実行時に使用される各種変数等を記憶するユーザデータ領域２７Ａ，３７Ａを有している。なお、管理部４０では、アプリケーションプログラムを実行することはないので、データメモリ２７，３７に相当するメモリは設置されていない。
【００３８】
管理部４０のＵＳＢ接続部４７Ａ、イーサネット接続部４７Ｂ（イーサネットは登録商標）、およびシリアル接続部４７Ｃは、外部端末との通信のために設けられ、ローダ５０を接続することができる。なお、外部端末との通信のための接続部は、これらの種類に限定されるものではなく、有線、無線の別も問わない。また、管理部４０のスイッチ操作信号入力部４８は、スイッチ操作による外部からの起動要求等の信号を入力するものである。
【００３９】
図２において、基本コントローラ２０のシステム処理手段２４は、システムイニシャル処理手段２４Ａと、アプリケーション起動周期待機処理手段２４Ｂと、カウント更新処理手段２４Ｃと、同期割込み送信処理手段２４Ｄと、アプリケーション起動要求処理手段２４Ｅと、外部要求待機処理手段２４Ｆと、設定用カウンタ値算出・設定処理手段２４Ｇと、アプリ運転開始要求フラグ設定処理手段２４Ｈと、アプリ起動準備開始タイミング判断処理手段２４Ｊと、アプリ起動準備処理手段２４Ｋと、アプリ運転状態開始タイミング判断処理手段２４Ｌと、アプリ運転状態移行処理手段２４Ｍとを含んで構成されている。なお、後述するように、アプリ起動準備開始タイミング判断処理手段２４Ｊの設置を省略してもよい。
【００４０】
また、拡張コントローラ３０のシステム処理手段３４は、システムイニシャル処理手段３４Ａと、同期割込み受信処理手段３４Ｂと、アプリケーション起動要求処理手段３４Ｃと、アプリ運転開始要求フラグ監視処理手段３４Ｄと、アプリ起動準備開始タイミング判断処理手段３４Ｅと、アプリ起動準備処理手段３４Ｆと、アプリ運転状態開始タイミング判断処理手段３４Ｇと、アプリ運転状態移行処理手段３４Ｈとを含んで構成されている。なお、後述するように、アプリ起動準備開始タイミング判断処理手段３４Ｅの設置を省略してもよい。
【００４１】
このうち、基本コントローラ２０の各処理手段２４Ｂ，２４Ｃ，２４Ｄ，２４Ｆおよび拡張コントローラ３０の各処理手段３４Ｂ，３４Ｃは、図４の処理Ａを実行する手段である。また、基本コントローラ２０の各処理手段２４Ｆ，２４Ｇ，２４Ｈ，２４Ｊ，２４Ｋ，２４Ｌ，２４Ｍおよび拡張コントローラ３０の各処理手段３４Ｄ，３４Ｅ，３４Ｆ，３４Ｇ，３４Ｈは、図５の処理Ｂを実行する手段である。
【００４２】
システムイニシャル処理手段２４Ａ，３４Ａは、リセット状態解除で立ち上がり、ハンドシェイク（通信用パラメータの取り決め等の通信規律の確立処理）により、基本コントローラ２０と拡張コントローラ３０との間のイニシャル完了待ち合わせを行うものである。また、基本コントローラ２０のシステムイニシャル処理手段２４Ａは、同期フリーランカウンタ２５Ａを起動する処理を行う。
【００４３】
（処理Ａを実行する手段）
【００４４】
基本コントローラ２０のアプリケーション起動周期待機処理手段２４Ｂは、タイマ時間計測により、所定の時間間隔（例えば１ミリ秒の間隔等）のアプリケーション起動周期が到来したか否かを判断する処理を繰り返し実行するものである。
【００４５】
基本コントローラ２０のカウント更新処理手段２４Ｃは、アプリケーション起動周期が到来したときに、同期割込み信号の送信直前に、同期フリーランカウンタ２５Ａに、１カウントを加算する処理を実行するものである。従って、同期フリーランカウンタ２５Ａの値は、同期割込み信号の１回の送信につき、１カウント増加することになる。
【００４６】
基本コントローラ２０の同期割込み送信処理手段２４Ｄは、アプリケーション起動周期が到来したときに、拡張コントローラ３０へ同期割込み信号を送信する処理を実行するものである。従って、同期割込み信号は、アプリケーション起動周期の到来タイミングに合わせて送信されることになる。
【００４７】
拡張コントローラ３０の同期割込み受信処理手段３４Ｂは、基本コントローラ２０からの同期割込み信号を受信する処理を実行するものである。
【００４８】
アプリケーション起動要求処理手段２４Ｅ，３４Ｃは、同期割込み信号の送受信の直後に、各々のステータス記憶手段２５Ｆ，３５Ｇに記憶されたステータスを取得し、取得したステータスがアプリケーション運転状態（ＲＵＮ）である場合に、各々のアプリケーションα，βの起動要求処理を実行するものである。従って、アプリケーションの起動要求処理は、アプリケーション起動周期の到来タイミングに合わせて行われることになる。なお、このアプリケーションプログラムの起動要求処理が行われるときには、アプリケーションプログラムα，βは、既に主メモリ２３，３３上に配置されている。
【００４９】
（処理Ｂを実行する手段）
【００５０】
基本コントローラ２０の外部要求待機処理手段２４Ｆは、管理部４０のスイッチ操作信号入力部４８（図１参照）に、スイッチ操作による外部からの起動要求信号の入力があったときに、この起動要求信号を管理部４０から受信する処理を実行するものである。
【００５１】
基本コントローラ２０の設定用カウンタ値算出・設定処理手段２４Ｇは、外部からの起動要求信号を受信した場合に、同期フリーランカウンタの現在値に、予め定められたアプリ起動準備開始タイミング設定用のカウント数Ｃ１を加算することにより、アプリケーション起動準備処理の開始タイミングを示す同期フリーランカウンタ値を算出し、算出した同期フリーランカウンタ値を、アプリ起動準備開始カウンタ値記憶手段２５Ｂに記憶させるとともに、同期フリーランカウンタの現在値に、予め定められたアプリ運転状態開始タイミング設定用のカウント数Ｃ２を加算することにより、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を算出し、算出した同期フリーランカウンタ値を、アプリ運転状態開始カウンタ値記憶手段２５Ｃに記憶させる処理を実行するものである。
【００５２】
具体的には、同期フリーランカウンタの現在値をＬとすると、アプリケーション起動準備処理の開始タイミングを示す同期フリーランカウンタ値Ｍは、Ｍ＝Ｌ＋Ｃ１で算出され、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値Ｎは、Ｎ＝Ｌ＋Ｃ２で算出される（図６参照）。
【００５３】
例えば、アプリ起動準備開始タイミング設定用のカウント数Ｃ１は、拡張コントローラ３０のアプリ運転開始要求フラグ監視処理手段３４Ｄによるフラグ受付までに要する時間を考慮し、例えば２カウント等と定められている。また、アプリ運転状態開始タイミング設定用のカウント数Ｃ２は、基本コントローラ２０および拡張コントローラ３０のメモリ初期化処理（データメモリ２７，３７のユーザデータ領域２７Ａ，３７Ａに記憶された各種変数の初期化処理）を含む各々のコントローラ２０，３０のアプリケーション起動準備処理に要する時間（例えば、数百ミリ秒）のうち最長のものの所要時間を考慮し、例えば１０００カウント（仮に１カウントを１ミリ秒とすれば、１秒に相当する。）等と定められている。そして、これらのカウント数Ｃ１，Ｃ２は、上記のように見込みの数値であるが、設定用カウンタ値算出・設定処理手段２４Ｇ（システム処理手段２４）を構成するシステムプログラムγ内に記述しておいてもよく、あるいはメモリ（例えばフラッシュメモリ２６等）に記憶させておいてもよい。
【００５４】
なお、後述するように、上記の設定用カウンタ値算出・設定処理手段２４Ｇの処理のうち、アプリケーション起動準備処理の開始タイミングを示す同期フリーランカウンタ値Ｍを算出・設定する処理（Ｍ＝Ｌ＋Ｃ１）は省略してもよく、省略する場合には、アプリ起動準備開始タイミング設定用のカウント数Ｃ１も予め定めておく必要はない。
【００５５】
基本コントローラ２０のアプリ運転開始要求フラグ設定処理手段２４Ｈは、外部からの起動要求信号を受信した場合に、基本コントローラ２０に設けられた基本コントローラ２０用のアプリ運転開始要求フラグ記憶手段２５Ｄに記憶されたフラグ、および基本コントローラ２０に設けられた拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段２５Ｅに記憶されたフラグを立てる処理（運転開始要求があったことを示す状態に変更する処理）を実行するものである。なお、このアプリ運転開始要求フラグ設定処理手段２４Ｈにより、基本コントローラ２０に設けられた拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段２５Ｅに記憶されたフラグが立てられると、この状態が内部バス１１を介して、共有メモリ機能により、拡張コントローラ３０に設けられた拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段３５Ｅに記憶されたフラグに反映される。
【００５６】
拡張コントローラ３０のアプリ運転開始要求フラグ監視処理手段３４Ｄは、拡張コントローラ３０に設けられた拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段３５Ｅに記憶されたフラグの状態を監視し、このフラグが立った状態に変更されたか否かを判断する処理を繰り返し実行するものである。
【００５７】
アプリ起動準備開始タイミング判断処理手段２４Ｊ，３４Ｅは、同期フリーランカウンタ２５Ａ，３５Ａの現在値と、アプリ起動準備開始カウンタ値記憶手段２５Ｂ，３５Ｂに記憶された同期フリーランカウンタ値とが一致したか否かを判断することにより、アプリケーション起動準備処理の開始タイミングが到来したか否かを判断する処理を繰り返し実行するものである。
【００５８】
アプリ起動準備処理手段２４Ｋ，３４Ｆは、アプリ起動準備開始タイミング判断処理手段２４Ｊ，３４Ｅにより双方の値が一致した（つまり、アプリケーション起動準備処理の開始タイミングが到来した）と判断した場合に、図３に示すように、基本コントローラ２０および拡張コントローラ３０のメモリ初期化処理（データメモリ２７，３７のユーザデータ領域２７Ａ，３７Ａに記憶された各種変数の初期化処理）を含む各々のコントローラ２０，３０のアプリケーション起動準備処理を実行するものである。
【００５９】
アプリ運転状態開始タイミング判断処理手段２４Ｌ，３４Ｇは、同期フリーランカウンタ２５Ａ，３５Ａの現在値と、アプリ運転状態開始カウンタ値記憶手段２５Ｃ，３５Ｃに記憶された同期フリーランカウンタ値とが一致したか否かを判断することにより、アプリケーション運転状態の開始タイミングが到来したか否かを判断する処理を繰り返し実行するものである。
【００６０】
アプリ運転状態移行処理手段２４Ｍ，３４Ｈは、アプリ運転状態開始タイミング判断処理手段２４Ｌ，３４Ｇにより双方の値が一致した（つまり、アプリケーション運転状態の開始タイミングが到来した）と判断した場合に、各々のコントローラ２０，３０用のアプリ運転開始要求フラグ記憶手段２５Ｄ，３５Ｅに記憶されたフラグを降ろす処理（運転開始要求が無いことを示す状態に変更する処理）を実行するとともに、各々のステータス記憶手段２５Ｆ，３５Ｇに記憶されたステータスを、アプリケーション停止状態（ＳＴＯＰ）からアプリケーション運転状態（ＲＵＮ）へ移行させる処理を実行するものである。
【００６１】
管理部４０のシステム処理手段４４は、スイッチ操作信号入力部４８（図１参照）に、スイッチ操作による外部からの起動要求信号の入力があったときに、この起動要求信号を基本コントローラ２０へ送信する処理、あるいは、ローダ５０から送信されてくるアプリケーションプログラムα，βを、フラッシュメモリ２６，３６に格納するために、基本コントローラ２０や拡張コントローラ３０へ送信する処理等を実行するものである。
【００６２】
このような本実施形態においては、以下のようにしてプログラマブルコントローラシステム１０におけるシステム処理が実行され、アプリケーションが起動される。
【００６３】
（処理Ａの流れ）
【００６４】
図４において、基本コントローラ２０および拡張コントローラ３０において、システム処理のうちの処理Ａを開始する（ステップＳ１，Ｓ２）。先ず、基本コントローラ２０において、アプリケーション起動周期待機処理手段２４Ｂにより、タイマ時間計測を行って所定の時間間隔（例えば１ミリ秒の間隔等）のアプリケーション起動周期が到来したか否かを繰り返し判断する（ステップＳ３）。
【００６５】
ステップＳ３でアプリケーション起動周期が到来したと判断された場合には、カウント更新処理手段２４Ｃにより、同期フリーランカウンタ２５Ａに、１カウントを加算する（ステップＳ４）。なお、同期フリーランカウンタ２５Ａの値を変更した状態は、内部バス１１を介して、共有メモリ機能により、他の同期フリーランカウンタ３５Ａ，４５Ａにも反映される。
【００６６】
続いて、同期割込み送信処理手段２４Ｄにより、拡張コントローラ３０へ同期割込み信号を送信する（ステップＳ５）。この同期割込み信号は、基本コントローラ２０のバスＬＳＩ２１、内部バス１１、および拡張コントローラ３０のバスＬＳＩ３１を介して拡張コントローラ３０のマイクロプロセッサ３２に伝達される。そして、拡張コントローラ３０において、同期割込み受信処理手段３４Ｂにより、基本コントローラ２０からの同期割込み信号を受信する（ステップＳ６）。
【００６７】
それから、同期割込み信号の送受信の後に、基本コントローラ２０においては、アプリケーション起動要求処理手段２４Ｅにより、基本コントローラ２０用のステータス記憶手段２５Ｆに記憶されたステータスを取得し、取得したステータスがアプリケーション運転状態（ＲＵＮ）であるか否かを判断し（ステップＳ７）、アプリケーション運転状態（ＲＵＮ）である場合には、基本コントローラ２０のアプリケーションαの起動要求を行い（ステップＳ８）、処理Ａを終了する（ステップＳ９）。一方、取得したステータスがアプリケーション停止状態（ＳＴＯＰ）である場合には、アプリケーションαの起動要求は行わずに、処理Ａを終了する（ステップＳ９）。
【００６８】
また、拡張コントローラ３０においても同様にして、アプリケーション起動要求処理手段３４Ｃにより、拡張コントローラ３０用のステータス記憶手段３５Ｇに記憶されたステータスを取得し、取得したステータスがアプリケーション運転状態（ＲＵＮ）であるか否かを判断し（ステップＳ１０）、アプリケーション運転状態（ＲＵＮ）である場合には、拡張コントローラ３０のアプリケーションβの起動要求を行い（ステップＳ１１）、処理Ａを終了する（ステップＳ１２）。一方、取得したステータスがアプリケーション停止状態（ＳＴＯＰ）である場合には、アプリケーションβの起動要求は行わずに、処理Ａを終了する（ステップＳ１２）。
【００６９】
（処理Ｂの流れ）
【００７０】
図５において、基本コントローラ２０および拡張コントローラ３０において、システム処理のうちの処理Ｂを開始する（ステップＳ２１，Ｓ２２）。先ず、基本コントローラ２０において、外部要求待機処理手段２４Ｆにより、外部からの起動要求を待ち、管理部４０のスイッチ操作信号入力部４８（図１参照）に、スイッチ操作による外部からの起動要求信号の入力があったときに、この起動要求信号を管理部４０から受信する（ステップＳ２３）。
【００７１】
続いて、設定用カウンタ値算出・設定処理手段２４Ｇにより、同期フリーランカウンタの現在値（図６の例では、Ｌ）に、予め定められたアプリ起動準備開始タイミング設定用のカウント数Ｃ１（例えば、Ｃ１＝２カウント等）を加算することにより、アプリケーション起動準備処理の開始タイミングを示す同期フリーランカウンタ値（図６の例では、Ｍ）を、Ｍ＝Ｌ＋Ｃ１として算出する（ステップＳ２４）。このステップＳ２４における同期フリーランカウンタ値（図６の例では、Ｍ）の算出処理は、アプリケーション起動準備処理の開始タイミングの同期を図らない場合には、省略してもよい。
【００７２】
また、設定用カウンタ値算出・設定処理手段２４Ｇにより、同期フリーランカウンタの現在値（図６の例では、Ｌ）に、予め定められたアプリ運転状態開始タイミング設定用のカウント数Ｃ２（例えば、Ｃ２＝１０００カウント等）を加算することにより、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値（図６の例では、Ｎ）を、Ｎ＝Ｌ＋Ｃ２として算出する（ステップＳ２４）。
【００７３】
それから、設定用カウンタ値算出・設定処理手段２４Ｇにより、算出したアプリケーション起動準備処理の開始タイミングを示す同期フリーランカウンタ値（図６の例では、Ｍ）を、アプリ起動準備開始カウンタ値記憶手段２５Ｂに記憶させる（ステップＳ２５）。なお、アプリ起動準備開始カウンタ値記憶手段２５Ｂに記憶された同期フリーランカウンタ値（図６の例では、Ｍ）は、内部バス１１を介して、共有メモリ機能により、他のアプリ起動準備開始カウンタ値記憶手段３５Ｂ，４５Ｂにも反映される。このステップＳ２５の処理は、アプリケーション起動準備処理の開始タイミングの同期を図らない場合には、省略してもよい。
【００７４】
また、設定用カウンタ値算出・設定処理手段２４Ｇにより、算出したアプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値（図６の例では、Ｎ）を、アプリ運転状態開始カウンタ値記憶手段２５Ｃに記憶させる（ステップＳ２６）。なお、アプリ運転状態開始カウンタ値記憶手段２５Ｃに記憶された同期フリーランカウンタ値（図６の例では、Ｎ）は、内部バス１１を介して、共有メモリ機能により、他のアプリ運転状態開始カウンタ値記憶手段３５Ｃ，４５Ｃにも反映される。
【００７５】
続いて、アプリ運転開始要求フラグ設定処理手段２４Ｈにより、基本コントローラ２０用のアプリ運転開始要求フラグ記憶手段２５Ｄに記憶されたフラグ、および拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段２５Ｅに記憶されたフラグを立てる処理（運転開始要求があったことを示す状態に変更する処理）を実行する（ステップＳ２７）。なお、基本コントローラ２０用のアプリ運転開始要求フラグ記憶手段２５Ｄに記憶されたフラグが立てられると、この状態が内部バス１１を介して、共有メモリ機能により、拡張コントローラ３０や管理部４０に設けられた基本コントローラ２０用のアプリ運転開始要求フラグ記憶手段３５Ｄ，４５Ｄに記憶されたフラグに反映される。同様に、拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段２５Ｅに記憶されたフラグが立てられると、この状態が内部バス１１を介して、共有メモリ機能により、拡張コントローラ３０や管理部４０に設けられた拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段３５Ｅ，４５Ｅに記憶されたフラグに反映される。
【００７６】
そして、拡張コントローラ３０において、アプリ運転開始要求フラグ監視処理手段３４Ｄにより、拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段３５Ｅに記憶されたフラグの状態を監視し、このフラグが立った状態に変更されたか否かを判断する処理を繰り返し実行し（ステップＳ２８）、フラグが立った場合には、次のステップに進む。
【００７７】
その後、基本コントローラ２０においては、アプリ起動準備開始タイミング判断処理手段２４Ｊにより、同期フリーランカウンタ２５Ａの現在値と、アプリ起動準備開始カウンタ値記憶手段２５Ｂに記憶された同期フリーランカウンタ値（図６の例では、Ｍ）とが一致したか否かを判断することにより、アプリケーション起動準備処理の開始タイミングが到来したか否かを判断する処理を繰り返し実行する（ステップＳ２９）。このステップＳ２９の処理は、アプリケーション起動準備処理の開始タイミングの同期を図らない場合には、省略してもよい。
【００７８】
ステップＳ２９で双方の値が一致した（つまり、アプリケーション起動準備処理の開始タイミングが到来した）と判断された場合には、アプリ起動準備処理手段２４Ｋにより、図３に示すように、基本コントローラ２０のメモリ初期化処理（データメモリ２７のユーザデータ領域２７Ａに記憶されたアプリケーションα用の各種変数の初期化処理）を含む基本コントローラ２０のアプリケーション起動準備処理を実行する（ステップＳ３０）。
【００７９】
また、拡張コントローラ３０においては、アプリ起動準備開始タイミング判断処理手段３４Ｅにより、同期フリーランカウンタ３５Ａの現在値と、アプリ起動準備開始カウンタ値記憶手段３５Ｂに記憶された同期フリーランカウンタ値（図６の例では、Ｍ）とが一致したか否かを判断することにより、アプリケーション起動準備処理の開始タイミングが到来したか否かを判断する処理を繰り返し実行する（ステップＳ３１）。このステップＳ３１の処理は、アプリケーション起動準備処理の開始タイミングの同期を図らない場合には、省略してもよい。
【００８０】
ステップＳ３１で双方の値が一致した（つまり、アプリケーション起動準備処理の開始タイミングが到来した）と判断された場合には、アプリ起動準備処理手段３４Ｆにより、図３に示すように、拡張コントローラ３０のメモリ初期化処理（データメモリ３７のユーザデータ領域３７Ａに記憶されたアプリケーションβ用の各種変数の初期化処理）を含む拡張コントローラ３０のアプリケーション起動準備処理を実行する（ステップＳ３２）。
【００８１】
次に、基本コントローラ２０においては、アプリ運転状態開始タイミング判断処理手段２４Ｌにより、同期フリーランカウンタ２５Ａの現在値と、アプリ運転状態開始カウンタ値記憶手段２５Ｃに記憶された同期フリーランカウンタ値（図６の例では、Ｎ）とが一致したか否かを判断することにより、アプリケーション運転状態の開始タイミングが到来したか否かを判断する処理を繰り返し実行する（ステップＳ３３）。
【００８２】
ステップＳ３３で双方の値が一致した（つまり、アプリケーション運転状態の開始タイミングが到来した）と判断された場合には、アプリ運転状態移行処理手段２４Ｍにより、基本コントローラ２０用のアプリ運転開始要求フラグ記憶手段２５Ｄに記憶されたフラグを降ろす処理（運転開始要求が無いことを示す状態に変更する処理）を実行する（ステップＳ３４）。なお、基本コントローラ２０用のアプリ運転開始要求フラグ記憶手段２５Ｄに記憶されたフラグが降ろされると、この状態が内部バス１１を介して、共有メモリ機能により、拡張コントローラ３０や管理部４０に設けられた基本コントローラ２０用のアプリ運転開始要求フラグ記憶手段３５Ｄ，４５Ｄに記憶されたフラグに反映される。
【００８３】
続いて、アプリ運転状態移行処理手段２４Ｍにより、基本コントローラ２０用のステータス記憶手段２５Ｆに記憶されたステータスを、アプリケーション停止状態（ＳＴＯＰ）からアプリケーション運転状態（ＲＵＮ）へ移行させる処理を実行し（ステップＳ３５）、処理Ｂを終了する（ステップＳ３６）。なお、基本コントローラ２０用のステータス記憶手段２５Ｆに記憶されたステータスを変更すると、この変更後の状態が内部バス１１を介して、共有メモリ機能により、拡張コントローラ３０や管理部４０に設けられた基本コントローラ２０用のステータス記憶手段３５Ｆ，４５Ｆに記憶されたステータスに反映される。
【００８４】
また、拡張コントローラ３０においては、アプリ運転状態開始タイミング判断処理手段３４Ｇにより、同期フリーランカウンタ３５Ａの現在値と、アプリ運転状態開始カウンタ値記憶手段３５Ｃに記憶された同期フリーランカウンタ値（図６の例では、Ｎ）とが一致したか否かを判断することにより、アプリケーション運転状態の開始タイミングが到来したか否かを判断する処理を繰り返し実行する（ステップＳ３７）。
【００８５】
ステップＳ３７で双方の値が一致した（つまり、アプリケーション運転状態の開始タイミングが到来した）と判断された場合には、アプリ運転状態移行処理手段３４Ｈにより、拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段３５Ｅに記憶されたフラグを降ろす処理（運転開始要求が無いことを示す状態に変更する処理）を実行する（ステップＳ３８）。なお、拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段３５Ｅに記憶されたフラグが降ろされると、この状態が内部バス１１を介して、共有メモリ機能により、基本コントローラ２０や管理部４０に設けられた拡張コントローラ３０用のアプリ運転開始要求フラグ記憶手段２５Ｅ，４５Ｅに記憶されたフラグに反映される。
【００８６】
続いて、アプリ運転状態移行処理手段３４Ｈにより、拡張コントローラ３０用のステータス記憶手段３５Ｇに記憶されたステータスを、アプリケーション停止状態（ＳＴＯＰ）からアプリケーション運転状態（ＲＵＮ）へ移行させる処理を実行し（ステップＳ３９）、処理Ｂを終了する（ステップＳ４０）。なお、拡張コントローラ３０用のステータス記憶手段３５Ｇに記憶されたステータスを変更すると、この変更後の状態が内部バス１１を介して、共有メモリ機能により、基本コントローラ２０や管理部４０に設けられた拡張コントローラ３０用のステータス記憶手段２５Ｇ，４５Ｇに記憶されたステータスに反映される。
【００８７】
（システム処理の全体の流れ）
【００８８】
図６において、先ず、リセット状態解除により、基本コントローラ２０および拡張コントローラ３０において、システムイニシャル処理手段２４Ａ，３４Ａによる処理が開始される。この際、基本コントローラ２０のシステムイニシャル処理手段２４Ａにより、同期フリーランカウンタ２５Ａが起動され、ゼロからのカウントが開始される。なお、同期フリーランカウンタ２５Ａの状態は、内部バス１１を介して、共有メモリ機能により、拡張コントローラ３０や管理部４０に設けられた同期フリーランカウンタ３５Ａ，４５Ａに反映される。
【００８９】
また、基本コントローラ２０のシステムイニシャル処理手段２４Ａにより、基本コントローラ２０用のステータス記憶手段２５Ｆに記憶されたステータスが、アプリケーション停止状態（ＳＴＯＰ）に設定され、この状態が内部バス１１を介して、共有メモリ機能により、拡張コントローラ３０や管理部４０に設けられた基本コントローラ２０用のステータス記憶手段３５Ｆ，４５Ｆに記憶されたステータスに反映される。同様に、拡張コントローラ３０のシステムイニシャル処理手段３４Ａにより、拡張コントローラ３０用のステータス記憶手段３５Ｇに記憶されたステータスが、アプリケーション停止状態（ＳＴＯＰ）に設定され、この状態が内部バス１１を介して、共有メモリ機能により、基本コントローラ２０や管理部４０に設けられた拡張コントローラ３０用のステータス記憶手段２５Ｇ，４５Ｇに記憶されたステータスに反映される。なお、ステータスは、最初にイニシャル状態としておき、ハンドシェイクしてイニシャル処理を完了してから、アプリケーション停止状態（ＳＴＯＰ）としてもよい。
【００９０】
続いて、基本コントローラ２０のアプリケーション起動周期待機処理手段２４Ｂによるアプリケーション起動周期の到来監視が開始され、以降、図６中の点線で示された縦線のように、一定周期（例えば１ミリ秒間隔等）で、すなわちアプリケーション起動周期のタイミングで、処理Ａ（図４参照）の同期割込みが繰り返し実行されるとともに、同期フリーランカウンタ２５Ａのカウントアップが進んでいく。図６では、アプリケーション起動周期の到来（図４のステップＳ３）が点線の縦線で示され、同期フリーランカウンタ２５Ａのカウントアップ（図４のステップＳ４）で点線の直後からカウンタ値が１カウント増加し、さらにその直後の同期割込み信号の送受信（図４のステップＳ５，Ｓ６）が下方に向かう太い矢印で示されている。
【００９１】
その後、システムイニシャル処理手段２４Ａ，３４Ａにより、ハンドシェイク（通信用パラメータの取り決め等の通信規律の確立処理）を行うことにより、基本コントローラ２０と拡張コントローラ３０との間のイニシャル完了待ち合わせを行う。なお、図６の例では、イニシャル完了待ち合わせ時のカウンタ値が２となっているが、説明の便宜と紙面の都合上の記載であり、実際のカウンタ値を示すものではない。
【００９２】
そして、イニシャル処理の完了後には、基本コントローラ２０および拡張コントローラ３０の双方とも、イニシャル状態からアプリケーション停止状態となり、基本コントローラ２０の外部要求待機処理手段２４Ｆによる外部からの起動要求待ち（起動のスイッチ操作待ち）を行う処理Ｂ（図５参照）が開始される。なお、図６の例では、カウンタ値が３のときに外部からの起動要求待ちが開始されているが、説明の便宜と紙面の都合上の記載であり、実際のカウンタ値を示すものではない。
【００９３】
この際、処理Ｂ（図５参照）に対し、処理Ａ（図４参照）は、一定周期での割込みとなるので、図６に示すように、処理Ａと処理Ｂとが交互に実行されるタイムチャートとなる。但し、処理Ａは、割込みの処理であるため、図６のタイムチャートにおいて、図４の処理Ａの流れは何回も繰り返されるが、図５の処理Ｂの流れは１回である。なお、図６中において、点線で示されたアプリケーション起動周期の時間間隔（例えば１ミリ秒等）を示す長さと、処理Ａの実行時間を示す長さと、処理Ｂの実行時間を示す長さとは、実際の時間の比率を示すものではなく、各処理の時間的関係をイメージし易くするための説明の便宜上の記載である。
【００９４】
図６に示すように、同期フリーランカウンタ２５Ａの値がＬになった時点で、外部からの起動要求（図５のステップＳ２３）があったとすると、この時点で、アプリケーション起動準備処理の開始タイミングを示す同期フリーランカウンタ値Ｍが、見込みで予め定められたカウント数Ｃ１を用いて、Ｍ＝Ｌ＋Ｃ１により算出されるとともに、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値Ｎが、見込みで予め定められたカウント数Ｃ２を用いて、Ｎ＝Ｌ＋Ｃ２により算出される（図５のステップＳ２４）。そして、算出された同期フリーランカウンタ値Ｍ，Ｎの設定が行われる（図５のステップＳ２５，Ｓ２６）。
【００９５】
そして、同期フリーランカウンタ２５Ａ，３５Ａの値が、設定されたカウンタ値Ｍになった時点で、アプリケーション起動準備処理の開始タイミングが到来したと判断され（図５のステップＳ２９，Ｓ３１）、基本コントローラ２０では、アプリケーションαの起動準備処理が開始され（図５のステップＳ３０）、拡張コントローラ３０では、アプリケーションβの起動準備処理が開始される（図５のステップＳ３２）。但し、アプリケーション起動準備処理の開始タイミングの同期を行わない場合には、このようなカウンタ値Ｍによる開始タイミング判断処理（図５のステップＳ２９，Ｓ３１）を行うことなく、それぞれの起動準備処理を開始してもよい。
【００９６】
なお、図６の例では、アプリケーションαの起動準備処理がカウント値（Ｎ−１）まで続き、アプリケーションβの起動準備処理がカウント値（Ｎ−２）まで続くように記載されているが、これは、各コントローラ２０，３０によって起動準備処理に要する時間が異なることを示すための記載であり、実際のカウント値ではない。実際には、例えばＣ２＝１０００カウント等の大きさの数値を見込んでＮを設定するので、Ｎよりも、もっと手前のカウント値でそれぞれの起動準備処理は終了する。
【００９７】
その後、アプリケーション起動周期の到来タイミングで、処理Ａの同期フリーランカウンタ２５Ａのカウンタアップ（図４のステップＳ４）を行って、同期フリーランカウンタ２５Ａの値がＮになったとする。そして、処理Ａの同期割込み信号の送受信（図４のステップＳ５，Ｓ６）の後に、ステータスの確認（図４のステップＳ７，Ｓ１０）を行っても、このときには、ステータスは、未だアプリケーション停止状態（ＳＴＯＰ）であるから、アプリケーション起動要求（図４のステップＳ８，Ｓ１１）は行われない。
【００９８】
この直後に、処理Ａの割込みを終了し、処理Ｂに戻ると、同期フリーランカウンタ２５Ａ，３５Ａの値はＮになっているので、アプリケーション運転状態の開始タイミングが到来したと判断され（図５のステップＳ３３，Ｓ３７）、基本コントローラ２０および拡張コントローラ３０において、基本コントローラ２０用のステータスおよび拡張コントローラ３０用のステータスが、それぞれアプリケーション停止状態（ＳＴＯＰ）からアプリケーション運転状態（ＲＵＮ）へ移行される（図５のステップＳ３５，Ｓ３９）。
【００９９】
続いて、同期フリーランカウンタ２５Ａ，３５Ａの値が（Ｎ＋１）になった時点で、処理Ａの同期割込み信号の送受信（図４のステップＳ５，Ｓ６）の後に、ステータスの確認（図４のステップＳ７，Ｓ１０）を行うと、この時点では、ステータスは、既にアプリケーション運転状態（ＲＵＮ）へ移行されているので、基本コントローラ２０および拡張コントローラ３０において、アプリケーションα，βが起動される（図４のステップＳ８，Ｓ１１）。以降、同期フリーランカウンタ２５Ａ，３５Ａの値が（Ｎ＋２），（Ｎ＋３），…になった時点でも同様であり、ステータスは、アプリケーション運転状態（ＲＵＮ）となっているので、アプリケーションα，βが起動される（図４のステップＳ８，Ｓ１１）。従って、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値がＮであれば、その次のカウンタ値（Ｎ＋１）の時点から、アプリケーション運転状態（アプリケーションα，βの一定周期での起動が繰り返される期間）が続くことになる。
【０１００】
このような本実施形態によれば、次のような効果がある。すなわち、基本コントローラ２０の同期割込み送信処理手段２４Ｄおよび拡張コントローラ３０の同期割込み受信処理手段３４Ｂにより、同期割込み信号の送受信を行い、基本コントローラ２０および拡張コントローラ３０の各々のアプリケーション起動要求処理手段２４Ｅ，３４Ｃにより、同期割込み信号の送受信のタイミングで、各々のアプリケーションの起動要求処理を実行するので（図４参照）、アプリケーション運転状態（図６の例では、カウンタ値が（Ｎ＋１）以降の期間）では、双方のアプリケーションα，βの周期的に繰り返される起動を毎回同期させることができる。
【０１０１】
また、基本コントローラ２０のカウント更新処理手段２４Ｃにより、同期フリーランカウンタ２５Ａの値を更新していき、基本コントローラ２０および拡張コントローラ３０の各々のアプリ運転状態開始タイミング判断処理手段２４Ｌ，３４Ｇにより、同期フリーランカウンタ２５Ａ，３５Ａの現在値と、アプリ運転状態開始カウンタ値記憶手段２５Ｃ，３５Ｃに記憶された同期フリーランカウンタ値とが一致したと判断した場合に、各々のアプリ運転状態移行処理手段２４Ｍ，３４Ｈにより、各々のステータス記憶手段２５Ｆ，３５Ｇに記憶されたステータスを、アプリケーション停止状態（ＳＴＯＰ）からアプリケーション運転状態（ＲＵＮ）へ移行させる（図５参照）。そして、各々のアプリケーション起動要求処理手段２４Ｅ，３４Ｃにより、同期割込み信号の送受信のタイミングで、各々のアプリケーションの起動要求処理を実行する際には、各々のステータス記憶手段２５Ｆ，３５Ｇに記憶されたステータスを取得し、ステータスがアプリケーション運転状態（ＲＵＮ）に既に移行されている場合に起動要求処理を実行するので（図４参照）、アプリケーション停止状態からアプリケーション運転状態への移行を同期させることができる。つまり、図６の例でいえば、カウンタ値が（Ｎ＋１）の時点から、双方のアプリケーションα，βの起動要求を開始することができる。
【０１０２】
このため、アプリケーション運転状態（図６の例では、カウンタ値が（Ｎ＋１）以降の期間）におけるアプリケーションプログラムα，βの周期的に繰り返される起動の同期化、およびアプリケーション停止状態からアプリケーション運転状態への移行の同期化（図６の例でいえば、カウンタ値が（Ｎ＋１）の時点からアプリケーション運転状態となる。）を実現することができるので、例えば、カラー印刷機に設けられた送り用のサーボモータ等のような高精度な同期制御が要求される制御対象の場合であっても、不都合なく稼働させることができる。
【０１０３】
また、設定用カウンタ値算出・設定処理手段２４Ｇは、同期フリーランカウンタ２５Ａの現在値に、予め定められたカウント数Ｃ２を加算することにより、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値（図６の例では、Ｎ）を算出し、設定する構成とされているので、外部からの起動要求を受け付けたときに、そのときの同期フリーランカウンタ２５Ａの値を基準として、相対的にアプリケーション運転状態の開始タイミングを定めることができるため、開始タイミングの判断処理の容易化を図ることができる。
【０１０４】
なお、本発明は前記実施形態に限定されるものではなく、本発明の目的を達成できる範囲内での変形等は本発明に含まれるものである。
【０１０５】
例えば、前記実施形態では、拡張コントローラ３０は１つであるものとして説明を行ったが、拡張コントローラ３０は複数でもよい。
【０１０６】
また、前記実施形態では、設定用カウンタ値算出・設定処理手段２４Ｇにより、外部からの起動要求を受け付けたときの同期フリーランカウンタ２５Ａの値を基準として、相対的にアプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を算出し、設定する構成とされていたが（図５のステップＳ２４）、これに限定されるものではなく、例えば、基本コントローラ２０および拡張コントローラ３０の双方（３つ以上のコントローラがある場合には、それらの全部）についてのアプリケーション起動準備処理が終了するのをフラグやステータス等を用いて確認してから（つまり、起動準備処理の終了を判断できるようなフラグやステータスを設けておく。）、確認後にアプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を算出し、設定する構成としてもよい。例えば、全部のアプリケーション起動準備処理が終了するのを確認した時点の同期フリーランカウンタ２５Ａの値に、予め定められたカウント数Ｃ３（例えば、Ｃ３＝２カウント等）を加算することにより、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値を算出し、設定してもよい。しかし、アプリケーション運転状態の開始タイミングの判断処理の容易化という観点からは、前記実施形態のような構成とすることが好ましい。
【０１０７】
さらに、前記実施形態では、３つの共有メモリ領域２５，３５，４５でデータを共有する構成とされていたが（図１、図２参照）、それぞれのマイクロプロセッサとバスで接続された１つの共有メモリ領域を設置してもよい。
【０１０８】
そして、前記実施形態では、アプリケーション起動準備処理の開始タイミングを示す同期フリーランカウンタ値を算出・設定し、このカウンタ値（図６の例では、Ｍ）を用いてアプリケーション起動準備処理の開始タイミングの到来を判断する構成とされていたが（図５のステップＳ２９，Ｓ３１）、この処理を省略し、アプリケーション起動準備処理の開始タイミングの同期を図らない構成としてもよく、要するに、少なくともアプリケーション運転状態の開始タイミングの同期が図られていればよい。
【０１０９】
また、実用上、同期フリーランカウンタ２５Ａの値のオーバーフローが問題になることはないが、万一、オーバーフローした場合（外部からの起動要求が著しく遅れた場合等）を考慮し、アプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値の算出処理を、次のようにしてもよい。すなわち、同期フリーランカウンタ２５Ａの最大値をＭＡＸとし（０〜ＭＡＸの値をとるので、カウント総数は（ＭＡＸ＋１）となる。）、算出するアプリケーション運転状態の開始タイミングを示す同期フリーランカウンタ値をＮとし、この算出処理の時点での同期フリーランカウンタ２５Ａの現在値をＬとし、予め定められたカウント数をＣ２（このＣ２の値は、前記実施形態と同じでよい。）とすると、Ｎ＝Ｌ＋Ｃ２がＭＡＸを超える場合には、Ｎ＝Ｌ＋Ｃ２−（ＭＡＸ＋１）とする処理を行ってもよい。つまり、カウント値がＭＡＸとなった後に、０に戻ることを考慮し、カウント総数の（ＭＡＸ＋１）を減じている。なお、同期フリーランカウンタ２５Ａが１からカウントされるものとすれば（つまり、カウント値がＭＡＸとなった後に、１に戻るとすれば）、１〜ＭＡＸの値をとるので、カウント総数はＭＡＸとなり、Ｎ＝Ｌ＋Ｃ２−ＭＡＸでよい。要するに、カウント値がＬの時点（外部からの起動要求があった時点）から、カウント数Ｃ２の時間分だけ経過した時点を定めることができればよい。
【産業上の利用可能性】
【０１１０】
以上のように、本発明のプログラマブルコントローラシステムおよびそのアプリケーション起動方法は、例えば、各々のコントローラでユーザデータ領域を使用するアプリケーションプログラムを実行する場合等に用いるのに適している。
【符号の説明】
【０１１１】
１０  プログラマブルコントローラシステム
２０  基本コントローラ
２４Ｂ  アプリケーション起動周期待機処理手段
２４Ｃ  カウント更新処理手段
２４Ｄ  同期割込み送信処理手段
２４Ｅ，３４Ｃ  アプリケーション起動要求処理手段
２４Ｇ  設定用カウンタ値算出・設定処理手段
２４Ｌ，３４Ｇ  アプリ運転状態開始タイミング判断処理手段
２４Ｍ，３４Ｈ  アプリ運転状態移行処理手段
２５，３５，４５  共有メモリ領域
２５Ａ，３５Ａ，４５Ａ  同期フリーランカウンタ
２５Ｃ，３５Ｃ，４５Ｃ  アプリ運転状態開始カウンタ値記憶手段
２５Ｄ，３５Ｄ，４５Ｄ  基本コントローラ用のアプリ運転開始要求フラグ記憶手段
２５Ｅ，３５Ｅ，４５Ｅ  拡張コントローラ用のアプリ運転開始要求フラグ記憶手段
２５Ｆ，３５Ｆ，４５Ｆ  基本コントローラ用のステータス記憶手段
２５Ｇ，３５Ｇ，４５Ｇ  拡張コントローラ用のステータス記憶手段
３０  拡張コントローラ
３４Ｂ  同期割込み受信処理手段
α，β  アプリケーションプログラム
【図１】
0005540928.tif 000002
【図２】
0005540928.tif 000003
【図３】
0005540928.tif 000004
【図４】
0005540928.tif 000005
【図５】
0005540928.tif 000006
【図６】
0005540928.tif 000007
【図７】
0005540928.tif 000008
【図８】
0005540928.tif 000009