(57)【特許請求の範囲】
【請求項１】
外部からデータを入力する入力モジュールと、前記入力モジュールとバスを通じて接続され、該入力モジュールから受信したデータに基づいて演算を行う演算モジュールと、を備えた制御システムであって、
前記制御システムで実行されるプログラムは、割込条件の成立を実行契機とする割込プログラムと、該割込プログラムを除いた非割込プログラムとを含んでなり、
前記入力モジュールは、
前記割込プログラムに対応付けられた割込条件が成立しているか否か判定する条件判定部と、
前記割込条件が成立していると判定されると、前記割込プログラムを実行する割込プログラム実行部と、
外部のアナログ信号をデジタル信号に変換するＡＤコンバータと、
該ＡＤコンバータの変換制御を行うＡＤ制御回路と、
を備え、
前記割込プログラム実行部は、
前記割込プログラムの実行途中で任意のデジタル信号が必要になると、前記ＡＤ制御回路に前記ＡＤコンバータの変換制御を実行させ、
前記ＡＤコンバータの変換完了後に、前記任意のデジタル信号のみ正規化して正規化デジタル信号を生成し、
前記正規化デジタル信号によって前記割込プログラムを実行し、
前記演算モジュールは、
前記割込プログラム実行部の実行結果を参照し、前記非割込プログラムを実行する非割込プログラム実行部
を備えることを特徴とする制御システム。
【請求項２】
前記入力モジュールは、デジタル信号をアナログ信号に変換して外部に出力するＤＡコンバータと、該ＤＡコンバータの変換制御を行うＤＡ制御回路と、を備え、
前記割込プログラム実行部は、
前記割込プログラムの実行途中で任意のデジタル信号が生成されると、前記任意のデジタル信号のみ非正規化して非正規化デジタル信号を生成し、
前記ＤＡ制御回路に、前記非正規化デジタル信号によって前記ＤＡコンバータの変換制御を実行させることを特徴とする請求項１に記載の制御システム。
【請求項３】
外部からデータを入力する入力モジュールと、前記入力モジュールとバスを通じて接続され、該入力モジュールから受信したデータに基づいて演算を行う演算モジュールと、を備えた制御システムであって、
前記制御システムで実行されるプログラムは、割込条件の成立を実行契機とする割込プログラムと、該割込プログラムを除いた非割込プログラムとを含んでなり、
前記入力モジュールは、
前記割込プログラムに対応付けられた割込条件が成立しているか否か判定する条件判定部と、
前記割込条件が成立していると判定されると、前記割込プログラムを実行する割込プログラム実行部と、
外部のアナログ信号をデジタル信号に変換するＡＤコンバータと、
該ＡＤコンバータの変換制御を行うＡＤ制御回路と、
を備え、
前記ＡＤ制御回路は、
所定の周期で前記ＡＤコンバータの変換制御を実行し、
変換されたデジタル信号を保持し、
前記割込プログラム実行部は、
前記割込プログラムの実行途中で任意のデジタル信号が必要になると、前記ＡＤ制御回路に保持された該任意のデジタル信号のみ正規化して正規化デジタル信号を生成し、
前記正規化デジタル信号によって前記割込プログラムを実行し、
前記演算モジュールは、
前記割込プログラム実行部の実行結果を参照し、前記非割込プログラムを実行する非割込プログラム実行部
を備えることを特徴とする制御システム。
【請求項４】
前記入力モジュールは、デジタル信号をアナログ信号に変換して外部に出力するＤＡコンバータと、該ＤＡコンバータの変換制御を行うＤＡ制御回路と、を備え、
前記割込プログラム実行部は、
前記割込プログラムの実行途中で任意のデジタル信号が生成されると、前記任意のデジタル信号のみ非正規化して非正規化デジタル信号を生成し、
前記非正規化デジタル信号を前記ＤＡ制御回路に保持させ、
前記ＤＡ制御回路は、
前記非正規化デジタル信号によって前記ＤＡコンバータの変換制御を実行することを特徴とする請求項３に記載の制御システム。
【請求項５】
所定の契機に、前記割込プログラムを前記入力モジュールに複製するプログラム複製部をさらに備えることを特徴とする請求項１から４のいずれか１項に記載の制御システム。
【請求項６】
前記所定の契機は、前記演算モジュールおよび前記入力モジュールの起動時であり、
前記プログラム複製部は、前記割込プログラムを、前記演算モジュールから前記入力モジュールに複製することを特徴とする請求項５に記載の制御システム。
【請求項７】
前記入力モジュールは、前記割込プログラム実行部が前記割込プログラムに基づく割込処理を完了すると、割込処理が完了した旨の情報を前記演算モジュールに送信する履歴通知部をさらに備えることを特徴とする請求項１から６のいずれか１項に記載の制御システム。
【請求項８】
前記入力モジュールは、第１入力モジュールおよび第２入力モジュールを含み、
前記バスは、前記演算モジュールと前記第１入力モジュールとを接続する第１バス、および、前記演算モジュールと前記第２入力モジュールとを接続する第２バスを含み、
前記演算モジュールは、所定のタクトタイム毎に、前記第１バスを通じて、前記第１入力モジュールからデータを入力し、
前記第２入力モジュールの前記割込プログラム実行部は、前記タクトタイムに関係ない所定のタイミングで、前記第２バスを通じて、前記第２入力モジュールのデータを前記演算モジュールに入力させることを特徴とする請求項１から７のいずれか１項に記載の制御システム。
【請求項９】
前記演算モジュールは、
所定のタクトタイム毎に、前記第１バスを通じて、前記第１入力モジュールにデータを出力し、
前記タクトタイムに関係ない所定のタイミングで、前記第２バスを通じて、前記第２入力モジュールにデータを出力することを特徴とする請求項８に記載の制御システム。
【請求項１０】
前記第１バスは、シリアル伝送方式であり、
前記第２バスは、パラレル伝送方式であることを特徴とする請求項８または９に記載の制御システム。
【請求項１１】
外部からデータを入力する入力モジュールと、前記入力モジュールとバスを通じて接続され、該入力モジュールから受信したデータに基づいて演算を行う演算モジュールと、を備える制御システムを用いた制御方法であって、
前記制御システムで実行されるプログラムは、割込条件の成立を実行契機とする割込プログラムと、該割込プログラムを除いた非割込プログラムとを含んでなり、
前記入力モジュールが、
前記割込プログラムに対応付けられた割込条件が成立しているか否か判定し、
前記割込条件が成立していると判定すると、前記割込プログラムを実行し、
前記割込プログラムの実行途中で任意のデジタル信号が必要になると、外部のアナログ信号をデジタル信号に変換するＡＤコンバータの変換制御を行うＡＤ制御回路に前記ＡＤコンバータの変換制御を実行させ、
前記ＡＤコンバータの変換完了後に、前記任意のデジタル信号のみ正規化して正規化デジタル信号を生成し、
前記正規化デジタル信号によって前記割込プログラムを実行し、
前記演算モジュールが、
前記割込プログラムの実行結果を参照し、前記非割込プログラムを実行することを特徴とする制御方法。
【請求項１２】
外部からデータを入力する入力モジュールと、前記入力モジュールとバスを通じて接続され、該入力モジュールから受信したデータに基づいて演算を行う演算モジュールと、を備える制御システムを用いた制御方法であって、
前記制御システムで実行されるプログラムは、割込条件の成立を実行契機とする割込プログラムと、該割込プログラムを除いた非割込プログラムとを含んでなり、
前記入力モジュールが、
前記割込プログラムに対応付けられた割込条件が成立しているか否か判定し、
前記割込条件が成立していると判定すると、前記割込プログラムを実行し、
外部のアナログ信号をデジタル信号に変換するＡＤコンバータの変換制御を行うＡＤ制御回路が、
所定の周期で前記ＡＤコンバータの変換制御を実行し、
変換されたデジタル信号を保持し、
前記入力モジュールが、
前記割込プログラムの実行途中で任意のデジタル信号が必要になると、前記ＡＤ制御回路に保持された該任意のデジタル信号のみ正規化して正規化デジタル信号を生成し、
前記正規化デジタル信号によって前記割込プログラムを実行し、
前記演算モジュールが、
前記割込プログラムの実行結果を参照し、前記非割込プログラムを実行することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算モジュールと入力モジュールとを備える制御システムおよび制御方法に関する。
【背景技術】
【０００２】
大規模な制御システムでは、システムの構築やメンテナンスの容易性の観点から、必要な機能を複数のモジュールに分散させたプログラマブルコントローラを採用することがある。プログラマブルコントローラは、例えば、演算モジュール、通信モジュール、入出力モジュール（入力モジュール＋出力モジュール）、電源モジュールといった複数種類のモジュールで構成され、それぞれのモジュール数を制御対象に合わせて変更可能とすることで、メンテナンスやシステムの拡張性を高めている。
【０００３】
プログラマブルコントローラでは、例えば、通信モジュールが、アプリケーションを実行するための実行プログラムを演算モジュールにダウンロードし、演算モジュールが、ダウンロードされた実行プログラムを用い、入出力モジュールを通じて下位の被制御機器から入力データを収集すると共に演算処理を実行し、その演算結果を、入出力モジュールを通じて下位の被制御機器に伝達している（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１２０１８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したように、プログラマブルコントローラでは、演算モジュールが実行プログラムを用いて他のモジュールおよび下位の被制御機器を制御する。このような実行プログラムに基づく演算モジュールの処理は、割込条件の成立に基づいて実行される割込処理と、割込処理による時間的な制約を受けない非割込処理とに大別される。演算モジュールでは、非割込処理を周期的に実行しつつ、また、割込条件が成立すると割込処理を優先的に実行し、割込処理以外の有余時間を有効利用して非割込処理を実行していた。
【０００６】
しかし、アプリケーションの多様化に伴い、実行プログラムの容量も増大し、割込処理および非割込処理の処理時間が共に長期化して、想定される処理時間内で完了することが困難となってきた。ここで、単純に非割込処理の周期を長くしてしまうと、情報の更新頻度も低くなるので、被制御機器の制御能力や分解能の劣化を招くことになってしまう。また、割込処理の処理結果も周期的にしか入出力モジュールに伝達されないので、非割込処理の周期の長期化に伴い割込処理の処理結果が伝達されるタイミングも遅くなることとなる。
【０００７】
そこで、本発明は、このような課題に鑑み、実行プログラムの容量の増大に拘わらず、被制御機器の制御能力や分解能の劣化を防止することが可能な制御システムおよび制御方法を提供することを目的としている。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、外部からデータを入力する入力モジュールと、入力モジュールとバスを通じて接続され、入力モジュールから受信したデータに基づいて演算を行う演算モジュールと、を備えた本発明の制御システムでは、制御システムで実行されるプログラムは、割込条件の成立を実行契機とする割込プログラムと、割込プログラムを除いた非割込プログラムとを含んでなり、入力モジュールは、割込プログラムに対応付けられた割込条件が成立しているか否か判定する条件判定部と、割込条件が成立していると判定されると、割込プログラムを実行する割込プログラム実行部と、外部のアナログ信号をデジタル信号に変換するＡＤコンバータと、ＡＤコンバータの変換制御を行うＡＤ制御回路と、を備え、割込プログラム実行部は、割込プログラムの実行途中で任意のデジタル信号が必要になると、ＡＤ制御回路にＡＤコンバータの変換制御を実行させ、ＡＤコンバータの変換完了後に、任意のデジタル信号のみ正規化して正規化デジタル信号を生成し、正規化デジタル信号によって割込プログラムを実行し、演算モジュールは、割込プログラム実行部の実行結果を参照し、非割込プログラムを実行する非割込プログラム実行部を備えることを特徴とする。
入力モジュールは、デジタル信号をアナログ信号に変換して外部に出力するＤＡコンバータと、ＤＡコンバータの変換制御を行うＤＡ制御回路と、を備え、割込プログラム実行部は、割込プログラムの実行途中で任意のデジタル信号が生成されると、任意のデジタル信号のみ非正規化して非正規化デジタル信号を生成し、ＤＡ制御回路に、非正規化デジタル信号によってＤＡコンバータの変換制御を実行させてもよい。
上記課題を解決するために、外部からデータを入力する入力モジュールと、入力モジュールとバスを通じて接続され、入力モジュールから受信したデータに基づいて演算を行う演算モジュールと、を備えた本発明の制御システムでは、制御システムで実行されるプログラムは、割込条件の成立を実行契機とする割込プログラムと、割込プログラムを除いた非割込プログラムとを含んでなり、入力モジュールは、割込プログラムに対応付けられた割込条件が成立しているか否か判定する条件判定部と、割込条件が成立していると判定されると、割込プログラムを実行する割込プログラム実行部と、外部のアナログ信号をデジタル信号に変換するＡＤコンバータと、ＡＤコンバータの変換制御を行うＡＤ制御回路と、を備え、ＡＤ制御回路は、所定の周期でＡＤコンバータの変換制御を実行し、変換されたデジタル信号を保持し、割込プログラム実行部は、割込プログラムの実行途中で任意のデジタル信号が必要になると、ＡＤ制御回路に保持された任意のデジタル信号のみ正規化して正規化デジタル信号を生成し、正規化デジタル信号によって割込プログラムを実行し、演算モジュールは、割込プログラム実行部の実行結果を参照し、非割込プログラムを実行する非割込プログラム実行部を備えることを特徴とする。
入力モジュールは、デジタル信号をアナログ信号に変換して外部に出力するＤＡコンバータと、ＤＡコンバータの変換制御を行うＤＡ制御回路と、を備え、割込プログラム実行部は、割込プログラムの実行途中で任意のデジタル信号が生成されると、任意のデジタル信号のみ非正規化して非正規化デジタル信号を生成し、非正規化デジタル信号をＤＡ制御回路に保持させ、ＤＡ制御回路は、非正規化デジタル信号によってＤＡコンバータの変換制御を実行してもよい。
【０００９】
所定の契機に、割込プログラムを入力モジュールに複製するプログラム複製部をさらに備えてもよい。
【００１０】
所定の契機は、演算モジュールおよび入力モジュールの起動時であり、プログラム複製部は、割込プログラムを、演算モジュールから入力モジュールに複製してもよい。
【００１１】
入力モジュールは、割込プログラム実行部が割込プログラムに基づく割込処理を完了すると、割込処理が完了した旨の情報を演算モジュールに送信する履歴通知部をさらに備えてもよい。
【００１６】
入力モジュールは、第１入力モジュールおよび第２入力モジュールを含み、バスは、演算モジュールと第１入力モジュールとを接続する第１バス、および、演算モジュールと第２入力モジュールとを接続する第２バスを含み、演算モジュールは、所定のタクトタイム毎に、第１バスを通じて、第１入力モジュールからデータを入力し、第２入力モジュールの割込プログラム実行部は、タクトタイムに関係ない所定のタイミングで、第２バスを通じて、第２入力モジュールのデータを演算モジュールに入力させてもよい。
【００１７】
演算モジュールは、所定のタクトタイム毎に、第１バスを通じて、第１入力モジュールにデータを出力し、タクトタイムに関係ない所定のタイミングで、第２バスを通じて、第２入力モジュールにデータを出力してもよい。
【００１８】
第１バスは、シリアル伝送方式であり、第２バスは、パラレル伝送方式であってもよい。
【００１９】
上記課題を解決するための、外部からデータを入力する入力モジュールと、入力モジュールとバスを通じて接続され、入力モジュールから受信したデータに基づいて演算を行う演算モジュールと、を備える制御システムを用いた本発明の制御方法では、制御システムで実行されるプログラムは、割込条件の成立を実行契機とする割込プログラムと、割込プログラムを除いた非割込プログラムとを含んでなり、入力モジュールが、割込プログラムに対応付けられた割込条件が成立しているか否か判定し、割込条件が成立していると判定すると、割込プログラムを実行し、割込プログラムの実行途中で任意のデジタル信号が必要になると、外部のアナログ信号をデジタル信号に変換するＡＤコンバータの変換制御を行うＡＤ制御回路にＡＤコンバータの変換制御を実行させ、ＡＤコンバータの変換完了後に、任意のデジタル信号のみ正規化して正規化デジタル信号を生成し、正規化デジタル信号によって割込プログラムを実行し、演算モジュールが、割込プログラムの実行結果を参照し、非割込プログラムを実行することを特徴とする。
上記課題を解決するための、外部からデータを入力する入力モジュールと、入力モジュールとバスを通じて接続され、入力モジュールから受信したデータに基づいて演算を行う演算モジュールと、を備える制御システムを用いた本発明の制御方法では、制御システムで実行されるプログラムは、割込条件の成立を実行契機とする割込プログラムと、割込プログラムを除いた非割込プログラムとを含んでなり、入力モジュールが、割込プログラムに対応付けられた割込条件が成立しているか否か判定し、割込条件が成立していると判定すると、割込プログラムを実行し、外部のアナログ信号をデジタル信号に変換するＡＤコンバータの変換制御を行うＡＤ制御回路が、所定の周期でＡＤコンバータの変換制御を実行し、変換されたデジタル信号を保持し、入力モジュールが、割込プログラムの実行途中で任意のデジタル信号が必要になると、ＡＤ制御回路に保持された任意のデジタル信号のみ正規化して正規化デジタル信号を生成し、正規化デジタル信号によって割込プログラムを実行し、演算モジュールが、割込プログラムの実行結果を参照し、非割込プログラムを実行することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、実行プログラムの容量の増大に拘わらず、被制御機器の制御能力や分解能の劣化を防止することが可能となる。
【図面の簡単な説明】
【００２１】
【図１】制御システムを構成する各装置の概略的な接続関係を示した外観図である。
【図２】制御システムの概略的な構成を示した説明図である。
【図３】実行プログラムに基づく処理のタイミングを説明するためのタイミングチャートである。
【図４】演算モジュールのハードウェア構成の一例を示す図である。
【図５】入出力モジュールのハードウェア構成の一例を示す図である。
【図６】演算モジュールおよび入出力モジュールの処理の流れを説明するタイミングチャートである。
【図７】プログラム複製部の処理を説明するための説明図である。
【図８】非割込プログラム実行部と割込プログラム実行部の処理の流れを説明するための説明図である。
【図９】入出力部の構成を示したブロック図である。
【図１０】割込プログラムの処理の一例を示したタイミングチャートである。
【図１１】割込プログラムの処理の他の例を示したタイミングチャートである。
【図１２】割込プログラムの処理のさらに他の例を示したタイミングチャートである。
【図１３】非割込処理の一例を説明するためのタイミングチャートである。
【図１４】非割込処理の他の例を説明するためのタイミングチャートである。
【発明を実施するための形態】
【００２２】
以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値などは、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書および図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
【００２３】
（第１の実施形態：制御システム１００）
図１は、制御システム１００を構成する各装置の概略的な接続関係を示した外観図であり、図２は、制御システム１００の概略的な構成を示した説明図である。制御システム１００は、管理装置１１０と、プログラマブルコントローラ１２０と、被制御機器１３０とを含んで構成される。また、管理装置１１０とプログラマブルコントローラ１２０とは、例えば、ギガ（Ｇ）ベース等のＥｔｈｅｒｎｅｔ（登録商標）によるネットワーク配線１４０によって互いに接続される。さらに、プログラマブルコントローラ１２０と被制御機器１３０とは、例えば、専用の接続配線１４２を通じて通信や信号伝達可能に接続されている。
【００２４】
上記管理装置１１０は、制御システム１００全体がアプリケーションに定められた工程に沿って動作するように、複数のプログラマブルコントローラ１２０を一括して制御する。例えば、管理装置１１０は、個々のプログラマブルコントローラ１２０からステータス情報や制御結果を収集したり、その収集した内容に応じて、個々のプログラマブルコントローラ１２０に各種制御指令を出力したりする。
【００２５】
プログラマブルコントローラ１２０は、ＰＬＣ（Programmable Logic Controller）とも呼ばれ、図２に示すように、演算モジュール１２２、通信モジュール１２４、入出力（Ｉ／Ｏ）モジュール１２６、電源モジュール１２８等の複数のモジュールを含んで構成される。また、各モジュールはベースボードに着脱可能に固定され、電源モジュール１２８を除く各モジュール同士は、ベースボード上のバスを通じて接続される。かかるバスには、例えば、シリアル伝送方式の第１バス（不図示）や、パラレル伝送方式の第２バス（不図示）が準備されている。本実施形態では、複数の入出力モジュール１２６が、それぞれ第１バスまたは第２バスのいずれかを通じて演算モジュール１２２と接続されている。
【００２６】
ここで、演算モジュール１２２は、制御システム１００に定められたアプリケーションを実現するために、それぞれのプログラマブルコントローラ１２０用に分割されたプログラムである実行プログラムを管理装置１１０からダウンロードし、その実行プログラムを遂行したり、プログラマブルコントローラ１２０の動作状況を不図示のモニタに表示したりする。その際、管理装置１１０から受信した制御指令、入出力モジュール１２６を通じて入力された被制御機器１３０のセンサ検出結果等に基づいて被制御機器１３０を制御する。
【００２７】
通信モジュール１２４は、Ｅｔｈｅｒｎｅｔ（登録商標）によるネットワーク配線１４０を通じて、管理装置１１０、他のプログラマブルコントローラ１２０、および、他のモジュールに接続され、それぞれと通信を確立することができる。
【００２８】
入出力モジュール１２６は、被制御機器１３０（外部）からの入力管理を行う入力モジュールと、被制御機器１３０に対する出力管理を行う出力モジュールとを結合したモジュールである。例えば、被制御機器１３０がセンサであれば、センサ検出結果を収集し、電動機であれば、ディスクリートで表される制御指令を送信するとともに、その制御結果を収集する。電源モジュール１２８は、演算モジュール１２２、通信モジュール１２４、入出力モジュール１２６等の各モジュールに電力を供給する。
【００２９】
被制御機器１３０は、例えば、ＦＡ（Factory Automation）における様々な状態を検知するセンサ、そのセンサの検知結果に応じて動作する電動機、エンコーダ等の電気機器で構成される。
【００３０】
このような制御システム１００は、様々な制御対象に適用できる。例えば、生産実行システム（ＭＥＳ：Manufacturing Execution System）に制御システム１００を適用した場合、被制御機器１３０としての、モーションコントロールユニット（Motion Control Unit）、センタシーラユニット（Center Sealer Unit）、および、フィルムユニット(Film Unit)等の生産機器にプログラマブルコントローラ１２０を接続する。そして、プログラマブルコントローラ１２０の演算モジュール１２２は、入出力モジュール１２６から生産機器の動作状態を入力データとして取り込み、実行プログラムを用いて入力データを処理した後、入出力モジュール１２６を通じて生産機器への指令を行う。このようなアプリケーションは、以下のような実行プログラムにより実現される。
【００３１】
図３は、実行プログラムに基づく処理のタイミングを説明するためのタイミングチャートである。一般的に、実行プログラムに基づく演算モジュール１２２の処理は、入出力モジュール１２６における割込条件の成立に基づいて実行される割込処理（割込条件の成立を実行契機とする処理）と、割込処理による時間的な制約を受けない非割込処理とに大別される。ここでは、割込処理に用いられるプログラムを割込プログラム、非割込処理に用いられるプログラムを非割込プログラムとする。なお、本実施形態では、割込条件として、入出力モジュール１２６への入力状態（例えば、離散信号の状態やカウント値）に基づく条件について説明する。
【００３２】
演算モジュール１２２は、例えば、図３（ａ）に示すように、非割込プログラムを用いて非割込処理を周期的に（例えばタクトタイム２０ｍｓｅｃ毎に）実行し、周期の始めにデータを入力し、周期の終わりにその処理結果を出力する。ここで、入出力モジュール１２６において割込条件が成立すると、図３（ａ）のように、演算モジュール１２２は、割込プログラムを用いて割込処理を優先的に実行し、割込処理以外の有余時間を有効利用して、非割込処理を実行する。具体的には、割込処理が発生すると、その割込処理が終了するまで非割込処理が中断され、割込処理終了後に非割込処理が再開される。そして、周期の終わりに、割込処理および非割込処理の処理結果が出力される。
【００３３】
しかし、アプリケーションの多様化に伴い、そのアプリケーションを実現するための実行プログラムの容量が増大すると、図３（ｂ）のように、割込処理に費やす時間が長くなり、有余時間が短くなる。一方、割込処理と同様に、非割込処理に費やす時間も長くなるが、短くなった有余時間内では処理を完了することができなくなる。ここで、単純に非割込処理を実行する周期を長くすると、有余時間の長期化は図れるが、情報の更新頻度が低くなり、被制御機器１３０の制御能力や分解能の劣化を招くこととなる。特に、割込処理の処理結果も周期的にしか（周期の終わりにしか）入出力モジュール１２６に伝達されないので、所定の上下限値に達すると制御方式を変更するような即時反応を要する割込処理の場合でも、非割込処理の周期の長期化に伴い、その反応が遅くなってしまう。
【００３４】
そこで、本実施形態では、割込処理の一部または全部を他のモジュール（ここでは入出力モジュール１２６）で行い、演算モジュール１２２では、主として非割込処理を行うことで（残った割込処理も含む）、分散処理を実現する。例えば、図３（ｃ）のように、突発的に発生する割込処理を入出力モジュール１２６内で完結的に実行し、並行して、非割込処理を演算モジュール１２２で周期的に実行する。かかる構成により、即時反応を要する割込処理が生じた場合でも、演算モジュール１２２における非割込処理の周期の影響を受けることなく、入出力モジュール１２６内で割込処理を迅速に実行し、その結果を即座に反映できるので、実行プログラムの容量の増大に拘わらず、被制御機器１３０の制御能力や分解能の劣化を防止することが可能となる。
【００３５】
また、本実施形態では、このような割込処理を行う割込プログラムを起動時等、所定の契機に自動的に入出力モジュール１２６に配置する。かかる構成により、個々のモジュールへの煩雑なインストール作業を回避できるとともに、入出力モジュール１２６を新設または交換した場合においても当該割込処理を即座に開始することが可能となる。以下、かかる目的を実現する演算モジュール１２２および入出力モジュール１２６のハードウェア構成を詳述する。
【００３６】
（演算モジュール１２２）
図４は、演算モジュール１２２のハードウェア構成の一例を示す図である。図４に示す演算モジュール１２２は、Ｉ／Ｆ部１５０と、不揮発性メモリ１５２と、共有メモリ１５４と、固有メモリ１５６と、制御部１５８とを含んで構成される。
【００３７】
Ｉ／Ｆ部１５０は、第１バスや第２バスを通じて、通信モジュール１２４および入出力モジュール１２６と通信を確立し、その通信モジュール１２４を通じて、管理装置１１０、他のプログラマブルコントローラ１２０と通信することができる。
【００３８】
不揮発性メモリ１５２は、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、ＨＤＤ等の記憶媒体で構成され、コンピュータを動作させる基本プログラムであるシステムプログラム、ならびに、実行プログラム（非割込プログラムおよび割込プログラム）を保持する。共有メモリ１５４は、ＲＡＭ等の記憶媒体で構成され、入力データや、制御部１５８が非割込プログラムを遂行することにより更新される出力データを記憶する。なお、Ｉ／Ｆ部１５０と、不揮発性メモリ１５２と、共有メモリ１５４とは、共通バス１６０によりアクセス可能に接続されている。したがって、不揮発性メモリ１５２や共有メモリ１５４は、他のモジュールからのアクセスも受け付ける。
【００３９】
例えば、共有の作業領域として利用可能なメモリ領域が各モジュールに分割して割り当てられる場合、割り当てられたメモリ領域に共有メモリ１５４を対応付ける。したがって、演算モジュール１２２に割り当てられたメモリ領域には、他のモジュールのメモリが存在せず、当該メモリ領域にアクセスすると、唯一、演算モジュール１２２の共有メモリ１５４のみデータを読み出しまたは書き込みできる。
【００４０】
固有メモリ１５６は、共有メモリ１５４同様、ＲＡＭ等の記憶媒体で構成され、入力データや、制御部１５８が非割込プログラムを遂行することにより更新される内部データを記憶する。ただし、固有メモリ１５６は、共通バス１６０に接続されておらず、制御部１５８からのみアクセス可能となる。このようなメモリへのアクセス制限は、ＦＰＧＡ（Field-Programmable Gate Array）等を用いたデコーダによって実現できる。
【００４１】
制御部１５８は、中央処理装置（ＣＰＵ）等を含む半導体集積回路で構成され、非割込プログラムを不揮発性メモリ１５２から読み出し、固有メモリ１５６に展開して非割込処理を実行する。そして、制御部１５８は、プログラム複製部１７０、非割込プログラム実行部１７２、履歴管理部１７４といった機能部として機能する。かかる機能部の動作については後程詳述する。
【００４２】
（入出力モジュール１２６）
図５は、入出力モジュール１２６のハードウェア構成の一例を示す図である。本実施形態では、入出力モジュール１２６が複数準備されている。ここでは、複数の入出力モジュール１２６のうち、比較的高速に動作する入出力モジュール１２６を挙げて説明する。図５に示す入出力モジュール１２６は、Ｉ／Ｆ部１８０と、不揮発性メモリ１８２と、共有メモリ１８４と、固有メモリ１８６と、入出力部１８８と、制御部１９０とを含んで構成される。
【００４３】
Ｉ／Ｆ部１８０は、第１バスや第２バスを通じて、演算モジュール１２２、通信モジュール１２４および入出力モジュール１２６と通信を確立する。
【００４４】
不揮発性メモリ１８２は、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、ＨＤＤ（Hard Disk Drive）等の記憶媒体で構成され、システムプログラムを保持する。共有メモリ１８４は、ＲＡＭ等の記憶媒体で構成され、実行プログラムの一部である割込プログラムや、入力データ、制御部１９０が割込プログラムを遂行することにより更新される出力データを記憶する。なお、Ｉ／Ｆ部１８０と、不揮発性メモリ１８２と、共有メモリ１８４と、入出力部１８８は、共通バス１９２によりアクセス可能に接続されている。したがって、不揮発性メモリ１８２や共有メモリ１８４は、他のモジュールからのアクセスも受け付ける。ただし、複数ある共有メモリ１８４それぞれの配置場所は、その共有メモリ１８４へのアクセス頻度が高いモジュールとするとよい。例えば、共有メモリ１８４へのアクセス頻度は入出力モジュール１２６が高いので、共有メモリ１８４は入出力モジュール１２６に配置される。
【００４５】
固有メモリ１８６は、共有メモリ１８４同様、ＲＡＭ等の記憶媒体で構成され、入力データや、制御部１９０が割込プログラムを遂行することにより更新される内部データを記憶する。ただし、固有メモリ１８６は、共通バス１９２に接続されておらず、制御部１９０からのみアクセス可能となる。
【００４６】
入出力部１８８は、被制御機器１３０に接続され、被制御機器１３０との通信および信号伝達を行う。例えば、入出力部１８８は、ＦＰＧＡ、ＡＤコンバータ、ＤＡコンバータ、フォトカプラ、トランジスタ等で構成され、アナログ信号、デジタル信号、矩形波（カウンタ入力）等を入出力する。特に、アナログ信号については、後述するように、ＡＤコンバータ、ＤＡコンバータに対する個々の変換制御をＦＰＧＡで行うことで、処理負荷の分散を果たしている。
【００４７】
制御部１９０は、演算モジュール１２２とスペックが同等の中央処理装置（ＣＰＵ）等を含む半導体集積回路で構成され、割込プログラムを共有メモリ１８４から読み出し、固有メモリ１８６に展開して割込処理を実行する。そして、制御部１９０は、条件判定部２００、割込プログラム実行部２０２、履歴通知部２０４といった機能部としても機能する。かかる機能部の動作については後程詳述する。以下、割込プログラムの入出力モジュール１２６への複製処理や割込処理を遂行するための、演算モジュール１２２および入出力モジュール１２６の処理の流れを説明する。
【００４８】
（プログラム複製処理Ｓ３００）
図６は、演算モジュール１２２および入出力モジュール１２６の処理（制御方法）の流れを説明するタイミングチャートである。当該制御システム１００が起動され、演算モジュール１２２および入出力モジュール１２６に電力の供給が開始されると、演算モジュール１２２の制御部１５８や入出力モジュール１２６の制御部１９０は、それぞれ、システムプログラムを固有メモリ１５６、１８６に展開し、演算モジュール１２２のプログラム複製部１７０は、かかる起動を契機に、不揮発性メモリ１５２に記憶している実行プログラムのうち割込プログラムを入出力モジュール１２６に複製する（Ｓ３００）。なお、不揮発性メモリ１５２内の割込プログラムは、当該複製によって削除されず、そのまま保持される。
【００４９】
図７は、プログラム複製部１７０の処理を説明するための説明図である。例えば、当該制御システム１００における実行プログラムは、それぞれが独立した（他のプログラムの影響を受けない）６つのプログラムに分割することができ、その内訳は、非割込プログラム３つと、割込プログラム３つであるとする。ただし、この時点では、６つのプログラムは、それぞれコンパイルが完了し、実行形式となっている。プログラム複製部１７０は、このうち３つの割込プログラムを、その割込プログラムが制御対象としている被制御機器１３０に接続された入出力モジュール１２６にそれぞれ複製する。
【００５０】
ここで、割込プログラムには、それぞれ、割込処理に関する情報である複製ステータスが付されている。したがって、プログラム複製部１７０は、割込プログラムに付されている複製ステータスを読み出し、複製先として入出力モジュール１２６の識別子が登録されていれば、その識別子によって特定される入出力モジュール１２６に、当該複製ステータスに対応付けられた割込プログラムを複製する。入出力モジュール１２６では、演算モジュール１２２から受信した割込プログラムを共有メモリ１８４の所定のメモリ位置に保持させる。なお、複製ステータスには、識別子の他、割込ポート番号と、割込条件も含まれている。ここで、割込ポート番号は、入出力部１８８における割込対象となるポート（割込端子）の番号を示し、割込条件は、割込を発生させる条件、例えば、割込ポート番号に入力された離散信号がＴＲＵＥかＦＡＬＳＥか、もしくは、サーボ等の出力信号を計数したカウント値が所定の値に到達したか等の条件を示す。
【００５１】
図７の例では、割込プログラム（１）および割込プログラム（２）の識別子が「１」となっているので、プログラム複製部１７０は、割込プログラム（１）および割込プログラム（２）を、識別子「１」によって特定される入出力モジュール（１）の共有メモリ１８４の所定のメモリ位置に複製する。また、割込プログラム（３）の識別子が「２」となっているので、プログラム複製部１７０は、割込プログラム（３）を、識別子「２」によって特定される入出力モジュール（２）の共有メモリ１８４に複製する。
【００５２】
続いて、プログラム複製部１７０は、各割込プログラムの作業領域となるメモリ領域を確保する。具体的に、プログラム複製部１７０は、図７のように、割込プログラム（１）を入出力モジュール（１）の共有メモリ１８４に複製するとともに、その割込プログラム（１）に対し予め定められた容量のメモリ領域（１）を入出力モジュール（１）の共有メモリ１８４内に確保する。同様に、プログラム複製部１７０は、割込プログラム（２）に対し予め定められた容量のメモリ領域（２）を入出力モジュール（１）の共有メモリ１８４内に確保し、割込プログラム（３）に対し予め定められた容量のメモリ領域（３）を入出力モジュール（２）の共有メモリ１８４内に確保する。
【００５３】
（非割込プログラム設定処理Ｓ３０２）
図８は、非割込プログラム実行部１７２と割込プログラム実行部２０２の処理の流れを説明するための説明図である。上述したように割込プログラムの複製が完了すると、演算モジュール１２２の非割込プログラム実行部１７２は、非割込プログラムの実行準備を行う。具体的に、非割込プログラム実行部１７２は、図８に示すように、非割込プログラム（１）〜（３）を不揮発性メモリ１５２から読み出し、固有メモリ１５６に展開する。
【００５４】
（割込プログラム設定処理Ｓ３０４）
同様に、上述したように割込プログラムの複製が完了すると、入出力モジュール１２６の割込プログラム実行部２０２は、割込プログラムの実行準備を行う。具体的に、図８に示すように、入出力モジュール（１）の割込プログラム実行部２０２は、割込プログラム（１）、（２）を共有メモリ１８４から読み出し、固有メモリ１８６に展開する。同様に、入出力モジュール（２）の割込プログラム実行部２０２は、割込プログラム（３）を共有メモリ１８４から読み出し、固有メモリ１８６に展開する。
【００５５】
（非割込プログラム実行処理Ｓ３１０）
続いて、非割込プログラム実行部１７２は、固有メモリ１５６に展開された非割込プログラムを用い非割込プログラムを実行する。ここで、非割込プログラム実行部１７２は、必要に応じて、後述する入出力モジュール１２６の割込プログラム実行部２０２の実行結果を参照し（共有メモリ１８４からデータを読み出し）、例えば２０ｍｓｅｃ毎に当該非割込プログラムの実行結果を導出する。
【００５６】
（条件判定処理Ｓ３１２）
条件判定部２００は、割込プログラムに対応付けられた割込条件が成立しているか否か判定する。図７の複製ステータスを参照すると、本実施形態では、割込プログラム（１）〜（３）に、それぞれ割込条件「１２３４」、「ＴＲＵＥ」、「５６７８」が対応付けられている。したがって、入出力モジュール（１）の条件判定部２００は、割込ポート番号「１」で特定される、サーボ等の動作に応じて積算されたカウント値を参照し、そのカウント値が「１２３４」と一致すると、割込プログラム（１）の割込条件が成立したと判定する。そして、一度、割込条件が成立したと判定するとカウント値を０にリセットする。
【００５７】
同様に、入出力モジュール（１）の条件判定部２００は、割込ポート番号「３」で特定される離散信号を参照し、その離散信号がＴＲＵＥであれば、割込プログラム（２）の割込条件が成立したと判定する。また、入出力モジュール（２）の条件判定部２００は、割込ポート番号「１」で特定される、サーボ等の動作に応じて積算されたカウント値を参照し、そのカウント値が「５６７８」と一致すると、割込プログラム（３）の割込条件が成立したと判定する。
【００５８】
（割込プログラム実行処理Ｓ３１４）
割込プログラム実行部２０２は、条件判定部２００が所定の割込条件が成立していると判定すると、その割込条件に対応する割込プログラムを実行する。例えば、入出力モジュール（１）の条件判定部２００が、割込ポート番号「１」で特定されるカウント値が「１２３４」に到達したと判定すると、割込プログラム実行部２０２は、割込プログラム（１）を実行する。そして、割込プログラム実行部２０２は、割込プログラム（１）に基づく割込処理の処理結果を、プログラム複製部１７０が共有メモリ１８４内に確保したメモリ領域（１）に記憶する。こうして、演算モジュール１２２の非割込プログラム実行部１７２は、任意のタイミングで、共有メモリ１８４から処理結果を読み出すことが可能となる。
【００５９】
ここで、割込プログラム実行部２０２は、非割込プログラム実行部１７２による周期的な処理の制限を受けることなく、独立かつ最優先に割込プログラムを実行し、その処理結果を迅速に反映することができる。したがって、例えば、所定の上下限値に達すると制御方式を変更するような即時反応を要する割込処理については、反応時間の短縮化を図ることが可能となる。また、非割込プログラム実行部１７２による制限を受けない（非割込処理の周期の影響を受けない）ので、非割込処理の周期より短い時間で割込処理を繰り返し実行することもでき、割込処理を高頻度で実現することも可能となる。こうして、実行プログラムの容量の増大に拘わらず、被制御機器１３０の制御能力や分解能の劣化を防止することができる。
【００６０】
また、入出力モジュール１２６に離散信号による割込が発生した場合、本来、入出力モジュール１２６が、一旦、離散信号をバス信号に置き換えて演算モジュール１２２に伝達し、演算モジュール１２２で、その条件を判定した上で割込処理を行っていたところ、本実施形態では、バス信号に置き換えることなく、入出力モジュール１２６内で処理を完結することができるので、割込処理に費やす時間自体を短縮することができる。
【００６１】
（履歴通知処理Ｓ３１６）
履歴通知部２０４は、割込プログラム実行部２０２が割込プログラムに基づく割込処理を完了すると、それに伴って、割込処理が完了した旨の情報を演算モジュール１２２に送信する。これは、演算モジュール１２２において、割込処理が想定通りに遂行されているか否か管理するためである。
【００６２】
（履歴管理処理Ｓ３１８）
履歴管理部１７４は、履歴通知部２０４から割込処理が完了した旨の情報を受信すると、それを履歴（ログ）として管理し、割込処理の数やタイミングが、想定された範囲に収まるか否か判定し、想定された範囲を逸脱すると、割込処理にエラーが生じたとして、エラー処理を行う。
【００６３】
以上、説明した制御システム１００では、実行プログラムを、演算モジュール１２２と入出力モジュール１２６で分散処理することで、たとえ、実行プログラムの容量が増大したとしても、演算モジュール１２２の処理負荷を増大させることなく、かつ、割込処理を非割込処理から独立したタイミングで迅速に実行することができ、被制御機器１３０の制御能力や分解能の劣化を防止することが可能となる。
【００６４】
また、このような割込処理を行う割込プログラムを起動時に自動的に入出力モジュール１２６に配置しているので、個々のモジュールへの煩雑なインストール作業を回避できるとともに、入出力モジュール１２６を新設または交換した場合においても当該割込処理を即座に開始することが可能となる。したがって、既存の入出力モジュール１２６を、実行プログラムがインストールされていない出荷状態の入出力モジュール１２６と交換したとしても、既存の入出力モジュール１２６と同状態を迅速に復元できるので、メンテナンス性を高めることができる。
【００６５】
（第２の実施形態）
このように、演算モジュール１２２で本来実行すべき処理を入出力モジュール１２６に分散することで、演算モジュール１２２自体の処理負荷を低減することができる。しかし、その一方で、演算モジュール１２２で低減された処理負荷分、入出力モジュール１２６の処理負荷が増大する場合がある。そこで、入出力モジュール１２６における、特に、ＡＤコンバータやＤＡコンバータに割く処理負荷を低減し、入出力モジュール１２６の処理負担を低減する。
【００６６】
図９は、入出力部１８８の構成を示したブロック図である。入出力モジュール１２６の入出力部１８８は、ＡＤコンバータ２２０、ＤＡコンバータ２２２、ＦＰＧＡ２２４、を含んで構成される。
【００６７】
ＡＤコンバータ２２０は、外部のアナログ信号をデジタル信号に変換する。ＤＡコンバータ２２２は、デジタル信号をアナログ信号に変換して外部に出力する。ＦＰＧＡ２２４は、ＡＤコンバータ２２０の変換制御を行うＡＤ制御回路２２４ａやＤＡコンバータの変換制御を行うＤＡ制御回路２２４ｂとしても機能する。また、ＡＤ制御回路２２４ａには、ＡＤコンバータ２２０で変換されたデジタル信号を保持するバッファが設けられ、ＤＡ制御回路２２４ｂには、ＤＡコンバータ２２２の変換対象となるデジタル信号を保持するバッファが設けられている。
【００６８】
図１０は、割込プログラムの処理の一例を示したタイミングチャートである。図１０の例では、ＡＤ制御回路２２４ａやＤＡ制御回路２２４ｂが主体となり、所定の周期（例えば、２５μｓｅｃ）でＡＤ変換およびＤＡ変換を繰り返し、その途中でＡＤコンバータ２２０によってデジタル信号が生成されたことを契機に割込プログラムが実行される。
【００６９】
具体的に、ＡＤ制御回路２２４ａは、所定の周期に基づく、例えば時点（ａ）でＡＤコンバータ２２０の変換制御を開始し、変換されたデジタル信号を保持し、時点（ｂ）において、制御部１９０を通じ、デジタル信号を正規化して正規化デジタル信号を生成する。
【００７０】
かかる正規化は、以下の処理を含む。すなわち、ＡＤ制御回路２２４ａは、制御部１９０を通じて、ＡＤコンバータ２２０のハードフェア特性であるオフセットおよびゲインを調整するアナログ値調整処理、ＡＤコンバータ２２０の出力値（例えば６５５３６）を割込プログラムの利用範囲（例えば１００００）に変換するスケール変換処理、過去の複数（例えば８や１６）のデジタル値の平均を示す移動平均処理を行う。
【００７１】
なお、ここで用いられるＡＤコンバータ２２０は複数（例えば４つ）のチャンネルを有しており、割込プログラムによってどのチャンネルのデジタル値が利用されるか把握できないため、正規化は複数のチャンネル全てに対して行われ、その総時間はチャンネル数分だけ長くなる。
【００７２】
そして、ＡＤ変換に対する一通りの処理が終了すると、ＤＡ制御回路２２４ｂは、時点（ｃ）において、ＤＡ制御回路２２４ｂのバッファに保持されたデジタル信号を、制御部１９０を通じて非正規化して非正規化デジタル信号を生成し、非正規化デジタル信号によってＤＡコンバータ２２２の変換制御を実行する。こうして、ＤＡコンバータ２２２からアナログ信号が出力される。
【００７３】
かかる非正規化は、以下の処理を含む。すなわち、ＤＡ制御回路２２４ｂは、制御部１９０を通じて、割込プログラムの利用範囲（例えば１００００）をＤＡコンバータ２２２の出力値（例えば６５５３６）に変換するスケール変換処理、ＤＡコンバータ２２２のハードフェア特性であるオフセットおよびゲインを調整するアナログ値調整処理を行う。
【００７４】
なお、ここで用いられるＤＡコンバータ２２２は複数（例えば４つ）のチャンネルを有しており、割込プログラムによってどのチャンネルの出力を要するか把握できないため、非正規化は複数のチャンネル全てに対して行われ、その総時間はチャンネル数分だけ長くなる。
【００７５】
このように、所定の周期でＡＤ変換およびＤＡ変換が繰り返される途中、ＡＤ制御回路２２４ａが主体となり、割込プログラムを動作させる。具体的に、ＡＤ制御回路２２４ａは、正規化デジタル信号を生成したことを契機に、制御部１９０に割込処理をかけ、時点（ｄ）から割込プログラム実行部２０２に、割込プログラムを実行させる。そして、割込プログラムにおいて、当該正規化デジタル信号の処理が終了すると、時点（ｅ）において、ＤＡ制御回路２２４ｂに正規化デジタル信号を保持させ、ＤＡ制御回路２２４ｂが、割込プログラムの処理結果をＤＡコンバータ２２２に反映する。
【００７６】
しかし、制御部１９０においては、ＡＤコンバータ２２０やＤＡコンバータ２２２を正確な時間で周期的に行うため、デジタル信号の全チャンネル分の正規化処理や非正規化処理が優先される。したがって、非同期の割込プログラムは、図１０においてハッチングで示されるように、デジタル信号の正規化処理や非正規化処理と排他的に実行されるので、その結果、割込プログラムの中断、再開を繰り返し、割込プログラムが完了するまでの時間が長期化し、ひいては、ＤＡコンバータ２２２に処理結果が反映される時間が遅延する。
【００７７】
そこで、本実施形態では、デジタル信号の正規化処理や非正規化処理を必要最小限に留め、かつ、正規化処理や非正規化処理を実行する場合であっても必要なチャンネルのみに限定することで、その分、割込プログラムに時間を解放する。
【００７８】
図１１は、割込プログラムの処理の他の例を示したタイミングチャートである。図１１の例では、制御部１９０の割込プログラム実行部２０２が主体となり、割込プログラムの要求に応じて必要最小限のＡＤ変換およびＤＡ変換を行う。
【００７９】
具体的に、割込プログラム実行部２０２は、割込プログラムの実行途中の時点（ａ）で任意のデジタル信号が必要になると、例えば、ＡＤコンバータ２２０に接続されたアナログ信号のアドレスに対してアクセスを検出すると、ＡＤ制御回路２２４ａにＡＤコンバータ２２０の変換制御を実行させる。こうして時点（ｂ）からＡＤ変換が開始される。
【００８０】
そして、ＡＤコンバータの変換が完了すると、ＡＤ制御回路２２４ａは、時点（ｃ）において、変換されたデジタル信号を保持し、制御部１９０を通じ、デジタル信号を正規化して正規化デジタル信号を生成する。かかる正規化は、図１０を用いて説明したのと同様、アナログ値調整処理、スケール変換処理、移動平均処理からなる。
【００８１】
ただし、ここでは、ＡＤコンバータ２２０に複数備わっているチャンネルのうち、デジタル信号が必要なチャンネルのみを正規化する。したがって、その正規化処理に費やされる処理時間は図１０と比べて１／チャンネル数（ここでは１／４）となる。これは、以下の理由による。すなわち、従来のように、割込処理を演算モジュール１２２で実行すると、デジタル信号が必要な入出力が、入出力モジュール１２６のいずれのチャンネルに対応するか演算モジュール１２２では把握できなかったところ、図１１の例では、割込処理を入出力モジュール１２６自体で実行しているので、デジタル信号が必要な入出力とチャンネルとの対応を把握可能となったからである。
【００８２】
続いて、割込プログラム実行部２０２は、正規化デジタル信号によって割込プログラムを実行し、時点（ｄ）において、処理結果として任意のデジタル信号が生成されると、任意のデジタル信号を非正規化して非正規化デジタル信号を生成し、ＤＡ制御回路２２４ｂのバッファに保持させる。かかる非正規化は、図１０を用いて説明したのと同様、スケール変換処理、アナログ値調整処理からなる。
【００８３】
ただし、ここでは、ＤＡコンバータ２２２に複数備わっているチャンネルのうち、デジタル信号を出力する対象となっているチャンネルのみを非正規化する。したがって、その非正規化処理に費やされる処理時間は図１０と比べて１／チャンネル数（ここでは１／４）となる。
【００８４】
最後に、割込プログラム実行部２０２は、時点（ｅ）において、ＤＡ制御回路２２４ｂに、非正規化デジタル信号によってＤＡコンバータ２２２の変換制御を実行させる。こうして、ＤＡコンバータ２２２からアナログ信号が出力される。
【００８５】
かかる図１１の処理では、図１０での処理と比べ、ＡＤ変換やＤＡ変換を周期的に行っていないので、そのＡＤ変換やＤＡ変換に伴うデジタル信号の正規化処理や非正規化処理が行われない。また、制御部１９０が主体となり、必要なチャンネルのみ正規化処理や非正規化処理を実行し、他のチャンネルについての正規化処理や非正規化処理を実行していない（前回値をそのまま利用する）。
【００８６】
したがって、図１１にハッチングで示すように、正規化処理や非正規化処理によって割込プログラムが中断させられることもなく、割込プログラムが図１０に比べて短時間で終了することが理解できる。このように、図１１の例では、割込プログラムの実行時間を確保し、資源の有効利用を図ることができる。
【００８７】
また、他の処理でも、デジタル信号の正規化処理や非正規化処理を必要最小限に留め、かつ、正規化処理や非正規化処理を実行する場合であっても必要なチャンネルのみに限定することで、その分、割込プログラムに処理時間を解放することができる。
【００８８】
図１２は、割込プログラムの処理のさらに他の例を示したタイミングチャートである。図１２の例では、ＡＤ制御回路２２４ａやＤＡ制御回路２２４ｂが主体となり、所定の周期（例えば、２５μｓｅｃ）でＡＤ変換およびＤＡ変換を繰り返しつつ、その途中で、制御部１９０の割込プログラム実行部２０２が主体となり、割込プログラムの要求に応じてデジタル信号の処理を行う。
【００８９】
具体的に、ＡＤ制御回路２２４ａは、所定の周期に基づく、例えば時点（ａ）において、ＡＤコンバータ２２０の変換制御を開始し、変換されたデジタル信号をバッファに保持する。また、ＤＡ制御回路２２４ｂは、ＡＤ制御回路２２４ａと独立した所定の周期に基づく、例えば時点（ｂ）において、ＤＡ制御回路２２４ｂのバッファに保持された非正規化デジタル信号によってＤＡコンバータ２２２の変換制御を実行する。こうして、ＤＡコンバータ２２２からアナログ信号が出力される。ここでは、正規化処理および非正規化処理を除くＡＤ変換およびＤＡ変換が周期的に行われる。
【００９０】
そして、制御部１９０の割込プログラム実行部２０２は、割込プログラムの実行途中の時点（ｃ）で任意のデジタル信号が必要になると、例えば、ＡＤコンバータ２２０に接続されたアナログ信号のアドレスに対してアクセスを検出すると、時点（ｄ）において、ＡＤ制御回路２２４ａに保持された、変換後の最新のデジタル信号を読み出し、デジタル信号を正規化して正規化デジタル信号を生成する。かかる正規化は、図１０を用いて説明したのと同様、アナログ値調整処理、スケール変換処理、移動平均処理からなる。ここで、時点（ｄ）では、ＡＤコンバータ２２０が次の変換を開始しているが、変換結果が生成されていないので、前回の変換結果が用いられる。
【００９１】
ただし、ここでも、ＡＤコンバータ２２０に複数備わっているチャンネルのうち、デジタル信号が必要なチャンネルのみを正規化する。したがって、その正規化処理に費やされる処理時間は図１０と比べて１／チャンネル数（ここでは１／４）となる。
【００９２】
続いて、割込プログラム実行部２０２は、正規化デジタル信号によって割込プログラムを実行し、時点（ｅ）において、処理結果として任意のデジタル信号が生成されると、任意のデジタル信号を非正規化して非正規化デジタル信号を生成し、ＤＡ制御回路２２４ｂのバッファに保持させる。かかる非正規化は、図１０を用いて説明したのと同様、スケール変換処理、アナログ値調整処理からなる。
【００９３】
ただし、ここでも、ＤＡコンバータ２２２に複数備わっているチャンネルのうち、デジタル信号を出力する対象となっているチャンネルのみを非正規化する。したがって、その非正規化処理に費やされる処理時間は図１０と比べて１／チャンネル数（ここでは１／４）となる。
【００９４】
そして、ＤＡ制御回路２２４ｂは、バッファに保持している非正規化デジタル信号によってＤＡコンバータ２２２の変換制御を実行させる。
【００９５】
かかる図１２の処理でも、図１０の処理と比べ、デジタル信号の正規化処理や非正規化処理を周期的に行っていない。また、制御部１９０が主体となって実行されるＡＤ変換やＤＡ変換においては、必要なチャンネルのみ正規化処理や非正規化処理を実行し、他のチャンネルについての正規化処理や非正規化処理を実行していない（前回値をそのまま利用する）。
【００９６】
したがって、図１２にハッチングで示すように、正規化処理や非正規化処理によって割込プログラムが中断させられることもなく、かつ、ＡＤ変換を待つことすらないので、割込プログラムが、図１０や図１１に比べて短時間で終了することが理解できる。このように、図１２の例では、割込プログラムの実行時間を確保し、資源のさらなる有効利用を図ることができる。
【００９７】
また、正規化処理や非正規化処理の負荷が最小化されるので、制御部１９０の駆動時間が短くなり、発熱や消費電力を抑えることもできる。
【００９８】
（第３の実施形態）
図３でも説明したように、実行プログラムは、割込プログラムと非割込プログラムに大別され、割込プログラムに基づく割込処理については、入出力モジュール１２６に完結的に割り当てることができる。そして、演算モジュール１２２は、非割込プログラムに基づく非割込処理によって入出力モジュール１２６から割込処理の結果を取得することができる。
【００９９】
図１３は、非割込処理の一例を説明するためのタイミングチャートである。まず、入出力モジュール１２６の割込プログラム実行部２０２は、時点（ａ）において割込処理が発生すると、割込プログラムに基づいて演算処理を実行し、その処理結果を、時点（ｂ）において、共有メモリ１８４に保持する。
【０１００】
続いて、演算モジュール１２２は、周期的に、非割込プログラムに基づく非割込処理を実行し、その開始時点（ｃ）において、入出力モジュール１２６の共有メモリ１８４から入力データを取得する。そして、非割込プログラムの実行途中の時点（ｄ）で当該入力データを演算し、その演算結果である出力データを、周期の終了時点（ｅ）において、共有メモリ１８４に保持する。最後に、入出力モジュール１２６の割込プログラム実行部２０２は、任意の時点（ｆ）において共有メモリ１８４から出力データを取得する。
【０１０１】
このように、周期的に非割込処理を実行することで、データの入出力をタクトタイムに正確に同期させることが可能となる。しかし、入力データが生成されてから非割込プログラムで処理される入力応答時間や、非割込プログラムで処理されてから出力データが反映されるまでの出力応答時間は長くなってしまう。このような入力応答時間や出力応答時間は、タクトタイムに影響を受けている。例えば、入出力モジュール１２６の数や、入出力モジュール１２６で用いる入出力数が増加し、それに応じて非割込処理が長くなると、タクトタイムを長くせざるを得なくなり、それに伴って、入力応答時間や出力応答時間も長期化する。そうすると、制御システム１００全体の制御精度や応答性が低下するおそれがある。
【０１０２】
ここで、入出力の即応性が必要となる場合、プログラマブルコントローラ１２０を別途独立して設け、その独立したプログラマブルコントローラ１２０において、演算処理や入出力数を必要最小限に抑え、タクトタイムを短縮して高速に入出力処理を実行し、その結果を、通信モジュール１２４を介して送受信することも考えられる。しかし、かかる手法では制御システム１００が大規模化してしまう。
【０１０３】
そこで、プログラマブルコントローラ１２０内で、即応性より同期性を優先する処理と、同期性より即応性を優先する処理とを分け、それぞれにバスおよび入出力モジュール１２６を個別に割り当てる。具体的には、上述したように、ベースボードにシリアル伝送方式の第１バスや、パラレル伝送方式の第２バスといった複数のバスを準備し、それぞれ異なる複数の入出力モジュール１２６に接続する。ここでシリアル伝送方式は、データのビット数未満のラインに対し１ビットずつ順番に情報を伝達する方式であり、パラレル伝送方式は、少なくともデータのビット数のラインに対し、全ての情報を各ラインに並行して同時に伝送する方式をいう。
【０１０４】
例えば、任意の入出力モジュール１２６（以下、単に第１入出力モジュールという）は、第１バスのみを通じて演算モジュール１２２と接続し、任意の他の入出力モジュール１２６（以下、単に第２入出力モジュールという）は、第２バスのみを通じて演算モジュール１２２と接続する。そして、第１バスを通じた第１入出力モジュール（第１入力モジュール）については、図１３のように周期的に処理し、第２バスを通じた第２入出力モジュール（第２入力モジュール）については、以下に示すように高速処理を行い、かかる同期性を優先する処理と即応性を優先する処理とを並行して実行する。
【０１０５】
図１４は、非割込処理の他の例を説明するためのタイミングチャートである。ここでは、図１３を用いて説明した周期的な処理ではなく、データが生成されたタイミングで処理を開始する割込処理が行われる。入出力モジュール１２６の割込プログラム実行部２０２は、時点（ａ）において割込処理が発生すると、割込プログラムに基づいて演算処理を実行し、その処理結果を、時点（ｂ）において、共有メモリ１８４に保持し、演算モジュール１２２に、入力データの準備ができた旨伝達する（割込通知）。
【０１０６】
続いて、演算モジュール１２２は、非割込プログラムに基づく非割込処理を実行し、入出力モジュール１２６からの伝達に応じて、時点（ｃ）において、入出力モジュール１２６の共有メモリ１８４から入力データを取得し、当該入力データを演算し、その演算結果である出力データを、周期の終了時点（ｄ）において、共有メモリ１８４に保持し、入出力モジュール１２６に、入力データの準備ができた旨伝達する（割込通知）。最後に、入出力モジュール１２６の割込プログラム実行部２０２は、演算モジュール１２２からの伝達に応じて、時点（ｅ）において共有メモリ１８４から出力データを取得する。
【０１０７】
ここでは、データが生成されたタイミングで割込通知を行い、タクトタイムに関係なく、データが生成された直後にモジュール間でデータの送受信を行っているので、入力応答時間や出力応答時間を短縮することが可能となる。
【０１０８】
図１３、図１４を用いて説明したように、即応性より同期性を優先する処理と、同期性より即応性を優先する処理とを並行して実行することで以下の効果を得られる。すなわち、第１バスを通じた第１入出力モジュールにより、従来通り、データの入力、出力をタクトタイムに正確に同期させることが可能となる。また、第２バスを通じた第２入出力モジュールにより、入力応答時間や出力応答時間を短縮できるので、入出力モジュール１２６の数や、入出力モジュール１２６で用いる入出力数が増加し、それに応じて非割込処理が長くなり、タクトタイムを長くせざるを得なくなったとしても、制御システム１００全体の制御精度や応答性を向上することが可能となる。
【０１０９】
このように複数の伝送方式を採用し、それぞれの特性を活かして入出力を分配することで、制御システム１００全体として処理効率や汎用性を高めることができる。また、少ないプログラマブルコントローラ１２０による少ないモジュール数で、同期性と即応性とをいずれも実現することが可能となる。
【０１１０】
また、コンピュータを制御システム１００として機能させるプログラムや、当該プログラムを記録した、コンピュータで読み取り可能なフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ、ＤＶＤ、ＢＤ等の記憶媒体も提供される。ここで、プログラムは、任意の言語や記述方法にて記述されたデータ処理手段をいう。
【０１１１】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる実施形態に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【０１１２】
例えば、上述した実施形態においては、説明の便宜上、入出力モジュール１２６において割込プログラムを用い、演算モジュール１２２で、その割込プログラムを除く非割込プログラムを用いる例を挙げて説明したが、入出力モジュール１２６に割り当てる割込プログラムは、実行プログラムに含まれる全ての割込プログラムの一部であればよく、残りの割込プログラムを演算モジュール１２２自体で用いることができる。したがって、非割込プログラムは、入出力モジュール１２６に割り当てた割込プログラムを除く全てのプログラムを含むこととなる。
【０１１３】
また、上述した実施形態においては、プログラム複製部１７０が演算モジュール１２２に備わっている例を挙げて説明したが、かかる場合に限らず、入出力モジュール１２６や他のモジュール、もしくは、管理装置１１０に備わるとしてもよい。同様に、複製対象となる割込プログラムが演算モジュール１２２の不揮発性メモリ１５２に保持されている例を挙げて説明したが、その保持されるメモリは制御システム１００内のいずれのメモリであってもよい。また、上述した実施形態においては、割込プログラムを入出力モジュール１２６に複製する例を挙げたが、非割込プログラムをいずれかのメモリに保持しておき、所定の契機に、非割込プログラムを演算モジュール１２２に複製するとしてもよい。
【０１１４】
また、上述した実施形態においては、割込プログラムを複製する所定の契機として、制御システム１００の起動時を挙げて説明したが、他の任意のタイミングを排除するものではなく、様々なタイミングを選択することができる。なお、上述した実施形態においては、制御システム１００を起動する度に割込プログラムを入出力モジュール１２６の共有メモリ１８４に複製する例を挙げて説明したが、入出力モジュール１２６において割込プログラムを保持するメモリが不揮発性であれば、そのメモリに割込プログラムが既に複製されているか否か判定し、複製されていない場合にのみ割込プログラムを複製するとしてもよい。
【０１１５】
上述した実施形態においては、制御システム１００を例に挙げて説明したが、分散型制御装置（ＤＣＳ）等、様々な機器に適用することができる。また、上述した実施形態においては、入力モジュールと出力モジュールが結合された入出力モジュール１２６を通じて外部からデータを入力する例を挙げているが、出力モジュールは必須の構成ではなく、少なくとも入力モジュールがあれば本実施形態を適用することができる。
【０１１６】
また、上述した実施形態においては、実行プログラムのうち割込プログラムを入出力モジュール１２６に複製し、入出力モジュール１２６にて割込処理を実行する例を挙げて説明したが、パラレル伝送方式の第２バスによって接続される場合、その割込処理の一部を、さらに演算モジュール１２２に割り当て、割込処理を分散することもできる。
【０１１７】
また、上述した実施形態においては、複数のバスとして、シリアル伝送方式の第１バスとパラレル伝送方式の第２バスを挙げて説明したが、かかる場合に限らず、複数のバスがいずれもシリアル伝送方式であってもよいし、パラレル伝送方式であってもよい。また、上述した実施形態においては、いずれのバスにも制御部１９０を有する入出力モジュール１２６を接続する例を挙げて説明したが、即応性を要さない第１バスに接続する入出力モジュール１２６は、制御部１９０を有さないＦＰＧＡ等により入出力を管理する入出力モジュールであってもよい。
【０１１８】
なお、本明細書の制御方法の各工程は、必ずしもタイミングチャートとして記載された順序に沿って時系列に処理する必要はなく、また、並列的あるいはサブルーチンによる処理を含んでもよい。
【産業上の利用可能性】
【０１１９】
本発明は、演算モジュールと入力モジュールとを備える制御システムおよび制御方法に利用することができる。
【符号の説明】
【０１２０】
１００  制御システム
１２２  演算モジュール
１２６  入出力モジュール（入力モジュール、第１入力モジュール、第２入力モジュール）
１７０  プログラム複製部
１７２  非割込プログラム実行部
１７４  履歴管理部
２００  条件判定部
２０２  割込プログラム実行部
２０４  履歴通知部
２２０  ＡＤコンバータ
２２２  ＤＡコンバータ
２２４ａ  ＡＤ制御回路
２２４ｂ  ＤＡ制御回路
【図１】
0006686521.tif 000002
【図２】
0006686521.tif 000003
【図３】
0006686521.tif 000004
【図４】
0006686521.tif 000005
【図５】
0006686521.tif 000006
【図６】
0006686521.tif 000007
【図７】
0006686521.tif 000008
【図８】
0006686521.tif 000009
【図９】
0006686521.tif 000010
【図１０】
0006686521.tif 000011
【図１１】
0006686521.tif 000012
【図１２】
0006686521.tif 000013
【図１３】
0006686521.tif 000014
【図１４】
0006686521.tif 000015