(57)【要約】【課題】  入力値の割り込み処理とその入力値を処理するＤＩタスク処理とが、同じ値を参照／更新する競合を本質的に発生しない入力モジュールを実現する。【解決手段】  連続した更新周期を有し、入力取得周期のタイミングで生入力値ＩＮを読み込む割り込み処理と、読み込んだ生入力値ＩＮを処理してＤＩ値として保持するタスク処理を実行する入力モジュールにおいて、  前記割り込み処理で入力された更新周期分の生入力値ＩＮを取得して保存する入力バッファ手段と、  この入力バッファ手段に保持された前の更新周期の生入力値ＩＮを、後の更新周期で処理してＤＩ値として保持するタスク処理手段と、を備える。【選択図】                    図１
2006202166.tif 000002
【特許請求の範囲】
【請求項１】
連続した更新周期を有し、入力取得周期のタイミングで生入力値ＩＮを読み込む割り込み処理と、読み込んだ生入力値ＩＮを処理してＤＩ値として保持するタスク処理を実行する入力モジュールにおいて、
前記割り込み処理で入力された更新周期分の生入力値ＩＮを取得して保存する入力バッファ手段と、
この入力バッファ手段に保持された前の更新周期の生入力値ＩＮを、後の更新周期で処理してＤＩ値として保持するタスク処理手段と、
を備えたことを特徴とする入力モジュール。
【請求項２】
前記タスク処理手段は、更新周期内で複数に分割された各フェーズにおいて、生入力値ＩＮを処理してＤＩ値として保持するＤＩタスク処理とそれ以外の処理を実行することを特徴とする請求項１に記載の入力モジュール。
【請求項３】
前記タスク処理手段は、生入力値ＩＮと前回保持されたＤＩ値とを比較し、変化があればこれをフィルタ処理し、変化が所定時間連続するときに前記ＤＩ値を更新することを特徴とする請求項１又は２に記載の入力モジュール。
【請求項４】
前記入力バッファ手段の生入力値ＩＮの取得周期と同一タイミングで生時刻値ＴＩＭを取得して保持する時刻バッファ手段を備え、
前記タスク処理手段は、後の更新周期で前記時刻バッファ手段の生時刻値ＴＩＭをＴＩＭ値として保持することを特徴とする請求項１乃至３のいずれかに記載の入力モジュール。
【請求項５】
前記タスク処理手段は、保持された前記ＤＩ値及び前記ＴＩＭ値をセットにしてＳＯＥイベント情報として通知することを特徴とする請求項１乃至４のいずれかに記載の入力モジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連続した更新周期を有し、入力取得周期のタイミングで生入力値ＩＮを読み込む割り込み処理と、読み込んだ生入力値ＩＮを処理してＤＩ値として保持するタスク処理を実行する入力モジュールに関する。
【背景技術】
【０００２】
ＳＯＥ（Sequence Of Event）に関連する先行技術文献としては次のようなものがある。
【０００３】
【特許文献１】特開２００４−０４６４７５号公報
【０００４】
ＳＯＥとは、入力の変化を発生時刻と共に通知する機能を言う。図３は、ＳＯＥ機能を有する従来の入力モジュールの構成例を示す機能ブロック図である。入力モジュール１０は、割り込み処理手段２０、タスク処理手段３０、ＳＯＥイベント保持手段４０よりなる。
【０００５】
割り込み処理手段２０は、生入力値入力手段２１、生時刻値入力手段２２、イベント一時保存処理手段２３よりなる。タスク処理手段３０は、フィルタ処理手段３１、ＳＯＥ＿ＤＩ値保持手段３２、ＳＯＥ＿ＴＩＭ値保持手段３３よりなる。
【０００６】
生入力値入力手段２１は、ある入力取得周期のタイミングで発生する割り込みの中でフィールド側からの入力ＩＮを取得し、これを生入力値ＩＮとする。又、生時刻値入力手段２２は、入力取得周期と同じタイミングで入力読み出し生時刻ＴＩＭを取得し、これを生時刻値ＴＩＭとする。
【０００７】
イベント一時保存処理手段２３は、生入力値ＩＮと前回に保持されているＳＯＥ＿ＤＩ値とを比較し、変化があればその生入力値を一時保存してタスク処理手段３０に渡す。
【０００８】
一方、タスク処理手段３０は、通常処理(割込みでない)のＤＩタスク処理を実行する。
ＤＩタスク処理は、イベント一時保存処理手段２３から渡された生入力値ＩＮをフィルタ処理手段３１で処理し、入力変化が所定時間連続していれば、ＳＯＥ＿ＤＩ値保持手段３２で保持されていたＳＯＥ＿ＤＩ値を更新する。このときの生時刻値ＴＩＭは、ＳＯＥ＿ＴＩＭ値保持手段３３に渡されてＳＯＥ＿ＴＩＭ値を更新する。
【０００９】
タスク処理手段３０は、ＳＯＥ＿ＤＩ値及びＳＯＥ＿ＴＩＭ値が更新されたときに、これらをセットにしてＳＯＥイベント保持手段４０に通知する。
【００１０】
図４は、割り込み処理とタスク処理の関係を示すタイムチャートであり、（Ａ）は割り込み処理、（Ｂ）はタスク処理である。入力モジュールの信号処理は、時間Ｔの連続した更新周期で実行され、この更新周期は更に複数（図では５）のフェーズ１乃至フェーズ５に分割される。
【００１１】
割り込み処理は、各フェーズにおいて時間τの入力取得周期で複数回（図では４回）発生する。一方、各フェーズにおいて同時に進行するタスク処理は、割り込み処理と同期関係を持たないために、割込み処理と競合することがある。
【００１２】
タスク処理は、ＳＯＥ＿ＤＩ値を更新するためのＤＩタスク以外にもその他の処理を行う必要があるため、フェーズによってＤＩタスクの処理時間が変化する。あるフェーズでは処理時間が足りない場合も発生する。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
従来の入力モジュールでは、各フェーズにおいて割り込み処理とタスク処理の双方を実行するために、以下のような問題点が発生する。
（１）割込み処理とＤＩタスク処理が重なり、かつ同じＳＯＥ＿ＤＩ値を参照／更新するため、競合が起こってしまう。
【００１４】
（２）各フェーズによってＤＩタスク処理の時間が異なるため、あるフェーズではＳＯＥ＿ＤＩ値の競合がない（例：図４のフェーズ１）が、別のフェーズ(例：図４のフェーズ２)では３入力取得タイミング分の競合が存在する。つまり、ＤＩタスク処理のパフォーマンスによってＳＯＥ＿ＤＩ値への競合挙動が変わってしまう。
【００１５】
（３）フェーズによってその他のタスク処理に必要な時間が異なり、つまり、割込み処理時間割り込みで実施できる処理がフェーズによって異なる。この時、もし割込み処理内で重い処理を実施したとすると、フェーズによってはタスク処理が終了できない場合がある。
【００１６】
（４）仮に、ある開発タイミングでは割込み処理内でのイベント処理が全て実施できたとする。しかし、その後の設計変更によるＤＩタスク処理時間変更が必要な場合、ＳＯＥ＿ＤＩ値の参照／更新の競合パターンはＤＩタスク処理時間によって変化するため、設計変更毎に動作確認を行う必要がある。
【００１７】
従って本発明が解決しようとする課題は、入力値の割り込み処理とその入力値を処理するＤＩタスク処理とが、同じ値を参照／更新する競合を本質的に発生しない入力モジュールを実現することにある。
【課題を解決するための手段】
【００１８】
このような課題を達成するために、本発明の構成は次の通りである。
（１）連続した更新周期を有し、入力取得周期のタイミングで生入力値ＩＮを読み込む割り込み処理と、読み込んだ生入力値ＩＮを処理してＤＩ値として保持するタスク処理を実行する入力モジュールにおいて、
前記割り込み処理で入力された更新周期分の生入力値ＩＮを取得して保存する入力バッファ手段と、
この入力バッファ手段に保持された前の更新周期の生入力値ＩＮを、後の更新周期で処理してＤＩ値として保持するタスク処理手段と、
を備えたことを特徴とする入力モジュール。
【００１９】
（２）前記タスク処理手段は、更新周期内で複数に分割された各フェーズにおいて、生入力値ＩＮを処理してＤＩ値として保持するＤＩタスク処理とそれ以外の処理を実行することを特徴とする（１）に記載の入力モジュール。
【００２０】
（３）前記タスク処理手段は、生入力値ＩＮと前回保持されたＤＩ値とを比較し、変化があればこれをフィルタ処理し、変化が所定時間連続するときに前記ＤＩ値を更新することを特徴とする（１）又は２に記載の入力モジュール。
【００２１】
（４）前記入力バッファ手段の生入力値ＩＮの取得周期と同一タイミングで生時刻値ＴＩＭを取得して保持する時刻バッファ手段を備え、
前記タスク処理手段は、後の更新周期で前記時刻バッファ手段の生時刻値ＴＩＭをＴＩＭ値として保持することを特徴とする（１）乃至（３）のいずれかに記載の入力モジュール。
【００２２】
（５）前記タスク処理手段は、保持された前記ＤＩ値及び前記ＴＩＭ値をセットにしてＳＯＥイベント情報として通知することを特徴とする（１）乃至（４）のいずれかに記載の入力モジュール。
【発明の効果】
【００２３】
以上説明したことから明らかなように、本発明によれば次のような効果がある。
（１）割り込み処理で取り込んだ更新周期分の入力値をバッファリングし、ＳＯＥ＿ＤＩ値への更新を実行するＤＩタスク処理を、後の更新周期で実施することにより、割り込み処理とＤＩタスク処理におけるＳＯＥ＿ＤＩ値への参照／更新の競合を本質的になくすことが可能となる。
【００２４】
（２）ある更新周期で取得した入力値と時刻値をバッファリングし、後の更新周期で処理することにより、処理タイミングが自由に変更可能になる。従って、設計変更に柔軟に対応することが可能である。
【発明を実施するための最良の形態】
【００２５】
以下、本発明を図面により詳細に説明する。図１は、本発明を適用した入力モジュールの一実施形態を示す機能ブロック図である。入力モジュール１００は、割り込み処理手段２００、タスク処理手段３００、ＳＯＥイベント保持手段４００よりなる。
【００２６】
割り込み処理手段２００は、生入力値入力手段２０１、生時刻値入力手段２０２、入力バッファ手段２０３、時刻バッファ手段２０４よりなる。タスク処理手段３００は、イベント一時保存処理手段３０１、フィルタ処理手段３０２、ＳＯＥ＿ＤＩ値保持手段３０３、ＳＯＥ＿ＴＩＭ値保持手段３０４よりなる。
【００２７】
割り込み処理手段２００において、生入力値入力手段２０１は、ある入力取得周期のタイミングで発生する割り込みの中でフィールド側からの入力ＩＮを取得し、これを生入力ＩＮとして更新周期分を収集し入力バッファ手段２０３に渡す。又、生時刻値入力手段２０２は、入力取得周期と同じタイミングで入力読み出し時刻ＴＩＭを取得し、これを生時刻値ＴＩＭとして更新周期分を収集し時刻バッファ手段２０４に渡す。
【００２８】
タスク処理手段３００は、通常処理(割込みでない)のＤＩタスク処理を実行する。ＤＩタスク処理において、イベント一時保存処理手段３０１は、入力バッファ手段２０３から順次読み出される生入力値ＩＮと前回保持されているＳＯＥ＿ＤＩ値とを比較し、入力変化があればこれをフィルタ処理手段３０２に渡してフィルタ処理を実行し、変化が所定時間連続するときに、ＳＯＥ＿ＤＩ値保持手段３０３で保持されていたＳＯＥ＿ＤＩ値を更新する。
【００２９】
この更新時に、時刻バッファ手段２０４で保持されている生時刻値ＴＩＭが読み出されてＳＯＥ＿ＴＩＭ値保持手段３０４に渡されてＳＯＥ＿ＴＩＭ値を更新する。タスク処理手段３００は、ＳＯＥ＿ＤＩ値及びＳＯＥ＿ＴＩＭ値が更新されたときに、これらをセットにしてＳＯＥイベント保持手段４００に通知する。
【００３０】
図２は、割り込み処理とタスク処理の関係を示すタイムチャートであり、図４と対応する。（Ａ）は割り込み処理、（Ｂ）はタスク処理である。入力モジュールの信号処理は、時間Ｔの連続した更新周期（図では更新周期１及び更新周期２を示す）で実行され、この更新周期は更に複数（図では５）のフェーズ１乃至フェーズ５に分割される。
【００３１】
割り込み処理は、各フェーズにおいて時間τの入力取得周期で複数回（図では４回）発生する。更新周期１において、太線で示した領域Ｐがこの更新周期中に入力バッファ手段２０３及び時刻バッファ手段２０４でバッファリングされた生入力値ＩＮと生時刻値ＴＩＭの情報である。このようなバッファリングは、各更新周期で連続して実行される。
【００３２】
本発明の特徴は、図において更新周期１でバッファリングした生入力ＩＮと生時刻ＴＩＭに対するＤＩタスク処理を、同一更新周期１ではなく、次の更新周期２（又はこれより後の更新周期）で実行する点にある。
【００３３】
従って、ある更新周期に着目した場合、その更新周期では、生入力ＩＮと生時刻ＴＩＭに対する割り込み及びバッファリング処理と、前の更新周期でバッファリングされた情報に対するＤＩタスク処理が実行される。
【００３４】
このように、本発明では、後の更新周期でのＤＩタスク処理は、前の更新周期でバッファリングされた入力値に対して実行されるので、後の更新周期で実行される割り込み処理の同一入力に対するＳＯＥ＿ＤＩ値を参照／更新する競合は本質的に発生しない。
【００３５】
又、前の更新周期で取得した入力値に対する処理を、後の更新周期で実施するので、設計変更に対するＳＯＥ＿ＤＩ値の競合を懸念することなく変更処理が可能である。
【００３６】
本発明によれば、入力値に対するＤＩタスク処理をリアルタイムに実行せずに後の更新周期に実行する。従って、ＤＩ処理はずらせた更新周期分の時間だけ遅れて処理されることになる。ＳＯＥ情報を利用するアプリケーションは、プラントの異常診断解析等であり、リアルタイム性の要求は低いので、この応答遅れは問題とならない。
【００３７】
以上説明した実施形態では、ＳＯＥ機能を有する入力モジュールを説明したが、タイムスタンプを必要としない入力値に対しても適用可能である。この場合には、図１の構成から生時刻値ＴＩＭに関する構成要素が省かれる。
【図面の簡単な説明】
【００３８】
【図１】本発明を適用した入力モジュールの一実施形態を示す機能ブロック図である。
【図２】割り込み処理とタスク処理の関係を示すタイムチャートである。
【図３】ＳＯＥ機能を有する従来の入力モジュールの構成例を示す機能ブロック図である。
【図４】割り込み処理とタスク処理の関係を示すタイムチャートである。
【符号の説明】
【００３９】
１００  入力モジュール
２００  割り込み処理手段
２０１  生入力値入力手段
２０２  生時刻値入力手段
２０３  入力バッファ手段
２０４  時刻バッファ手段
３００  タスク処理手段
３０１  イベント一時保存処理手段
３０２  フィルタ処理手段
３０３  ＳＯＥ＿ＤＩ値保持手段
３０４  ＳＯＥ＿ＴＩＭ値保持手段
４００  ＳＯＥイベント保持手段
【図１】
2006202166.tif 000003
【図２】
2006202166.tif 000004
【図３】
2006202166.tif 000005
【図４】
2006202166.tif 000006