(57)【要約】【課題】入力／出力データの同時性を保証できるようにする。【解決手段】バスＬＳＩは、タクト周期に同期して、入力モジュール５０から送られたデータをＩデータ領域３６に書き込み、Ｏデータ領域３４のデータを出力モジュール６０に渡す。Ｉデータ管理ドライバ２１は、Ｉデータ領域３６に書き込まれたデータを、ＩデータバンクＡ３１またはＢ３２にコピーすると共に、最新データバンクレジスタ３３を更新する。制御用プロセッサ１０は、このレジスタ３３を参照してＩデータバンクＡ３１またはＢ３２からデータを読み出す。また、制御用プロセッサ１０は、Ｏデータ領域排他フラグ３５がフラグＯＮのとき又はタイマ１４がカウントアップしているときには、Ｏデータ領域３４ではなく、Ｏデータ一時退避バッファ３７に出力データを書き込み。【選択図】図１
2007249560.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵモジュールと少なくとも１以上の入力モジュール／出力モジュールがバスに接続され、タクト周期に同期して該バス上でのデータ送受信が行われるプログラマブルコントローラにおける、前記タクト周期に同期して前記バスを介して受信する各入力モジュールからの入力データを入力データ記憶領域に格納するバスＬＳＩと、任意のタイミングで該入力データ記憶領域に格納されている入力データを読み出す制御用プロセッサとを備える前記ＣＰＵモジュールであって、
第１の記憶手段、第２の記憶手段と、
前記入力データ記憶領域に入力データが格納される毎に、該入力データを前記第１の記憶手段、第２の記憶手段の何れか一方に交互に移す管理手段とを備え、
前記制御用プロセッサは、前記入力データの読み出しを、該第１の記憶手段、第２の記憶手段の何れか一方から行うことを特徴とするプログラマブルコントローラにおけるＣＰＵモジュール。
【請求項２】
ＣＰＵモジュールと少なくとも１以上の入力モジュール／出力モジュールがバスに接続され、タクト周期に同期して該バス上でのデータ送受信が行われるプログラマブルコントローラにおける、各出力モジュールに渡すべき出力データを任意のタイミングで出力データ記憶領域に格納する制御用プロセッサと、前記タクト周期に同期して、該出力データ記憶領域に格納されている出力データを前記バス上に送出するバスＬＳＩとを備える前記ＣＰＵモジュールであって、
前記制御用プロセッサが、出力データの同時性を保証できないタイミングでデータ出力するときに、前記出力データ記憶領域に格納すべきデータを一時的に退避させる出力データ退避記憶手段と、
該退避後に、出力データの同時性を保証できるタイミングとなったとき、割込み処理により、該出力データ退避記憶手段に退避されている出力データを、前記出力データ記憶領域に移す割込み処理手段と、
を備えることを特徴とするプログラマブルコントローラにおけるＣＰＵモジュール。
【請求項３】
前記割込み処理手段は、前記出力データ退避記憶手段に退避されている出力データが存在するときに、前記制御用プロセッサが次のデータ出力を行なおうとする場合にも、前記割込み処理を実行することを特徴とする請求項２記載のプログラマブルコントローラにおけるＣＰＵモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラに関する。
【背景技術】
【０００２】
近年、プラント、工場等では、機械や装置のシーケンス制御にプログラマブルコントローラを用い、ＦＡ（ファクトリーオートメーション）化を実現している。
このようなプログラマブルコントローラの構成の１形態として、プログラムの実行やデータの演算処理等を行うＣＰＵモジュールや、各種制御対象機器とのプロセスデータの入出力を行うＩ／Ｏモジュール（通常、各々、複数存在する）が、バスに接続され、ＣＰＵモジュールがこのバスを介して各Ｉ／Ｏモジュールとのデータ入出力を行うものが、従来、存在する。
【０００３】
図７は、この従来のプログラマブルコントローラの構成の一例を、概略的に示す図である。
同図において、上記の通り、ＣＰＵモジュール１００、入力モジュール１４０、出力モジュール１５０が、システムバス１６０に接続されている。尚、図では、入力モジュール１４０、出力モジュール１５０を各々１つのみ示しているが、上記の通り、これらは通常複数存在するものである。
【０００４】
ＣＰＵモジュール１００は、制御用プロセッサ１１０、バスＬＳＩ１３０、これら制御用プロセッサ１１０とバスＬＳＩ１３０とが共有する共有メモリ１２０を有する。
制御用プロセッサ１１０は、データ出力時には、共有メモリ１２０を介して、出力データをバスＬＳＩ１３０に渡す。また、制御用プロセッサ１１０は、データ入力時には、共有メモリ１２０を介して、バスＬＳＩ１３０から入力データを受け取る。
【０００５】
バスＬＳＩ１３０は、タクト周期に同期して、システムバス１６０を介して、各入力モジュール１４０から入力データを受信し、または各出力モジュール１５０へ出力データを送信する。これは、受信処理のときはトータルフレーム方式、送信処理のときはマルチキャスト方式で行う。このようなタクト周期に同期したシステムバス１６０上でのバスＬＳＩ１３０、入力モジュール１４０、出力モジュール１５０間のデータ入出力処理自体については、例えば本出願人による先出願（特許文献１）において説明されているので、ここでは特に詳細には説明しない。また、これより、バスＬＳＩ１３０、入力モジュール１４０、出力モジュール１５０の詳細な構成、動作についても、ここでは特に図示／説明しないものとする。
【０００６】
上記制御用プロセッサ１１０内でのデータ受け渡し動作について、以下、更に詳細に説明する。
データ出力時には、まず、制御アプリケーション１１１が、Ｏデータ管理ドライバ１１３に対して、データ出力要求する。これに応じて、Ｏデータ管理ドライバ１１３は、この出力データを共有メモリ１２０内のＯデータ領域１２１に書き込む。バスＬＳＩ１３０は、上記タクト周期に同期して、Ｏデータ領域１２１に格納されている出力データを読み出し、システムバス１６０上に送出する。
【０００７】
このとき、制御アプリケーション１１１が、タクト周期とは関係なく、任意のタイミングでデータ出力要求する構成の場合、例えば図８（ａ）に示すようなタイミングであれば、問題はない。
【０００８】
しかしながら、図８（ｂ）に示すようなタイミングであると、問題が生じる。すなわち、図示のように制御アプリケーション１１１からの出力要求が、タクト割込みｔ1 の少し前のタイミングで行われた場合、Ｏデータ領域１２１のデータ書き換え処理（データａからｂへの書き換え）の途中でタクト割込みｔ1 のタイミングとなってしまい、バスＬＳＩ１３０によりＯデータ領域１２１の出力データの読み出し／システムバス１６０上への送出処理が開始されてしまう。この為、出力モジュール１５０に渡されるデータは、データａでもデータｂでもないデータ（図ではデータａ’としている）となってしまう。
【０００９】
同様に、データ入力処理においても、制御アプリケーション１１１からのデータ読み出し要求が、図９に示すように、タクト割込みｔ3 の少し前のタイミングで行われた場合、Ｉデータ領域１２２からのデータ読み出し処理の途中でタクト割込みｔ3 のタイミングとなってしまい、バスＬＳＩ１３０によりＩデータ領域１２２の書き換えが開始される結果、制御アプリケーション１１１が得るデータは、データｂでもデータｃでもないデータ（図ではデータｂ’としている）となってしまう。
【００１０】
このように、従来、データ入力処理、データ出力処理のいずれにおいても、制御アプリケーション１１１が、タクト周期とは関係なく、任意のタイミングでデータ入力／出力要求する構成の場合、Ｏデータ／Ｉデータの同時性が保証できなくなるという問題があった。
【００１１】
尚、データｂ、データｃ等と言っているが、実際には複数の入力データの集まり又は複数の出力データの集まりであり、“データ群”と呼んだほうがよいかもしれないが、ここではデータｂ、データｃ等と呼ぶものとする。
【特許文献１】特開平１１−３３８５２３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明の課題は、プログラマブルコントローラにおいて、タクト周期とは関係なく、任意のタイミングでデータ入力／出力要求が行なわれても、入力データ／出力データの同時性を保証できるようにし、更に出力順も保証できるようにするＣＰＵモジュールを提供することである。
【課題を解決するための手段】
【００１３】
本発明の第１のプログラマブルコントローラにおけるＣＰＵモジュールは、ＣＰＵモジュールと少なくとも１以上の入力モジュール／出力モジュールがバスに接続され、タクト周期に同期して該バス上でのデータ送受信が行われるプログラマブルコントローラにおける、前記タクト周期に同期して前記バスを介して受信する各入力モジュールからの入力データを入力データ記憶領域に格納するバスＬＳＩと、任意のタイミングで該入力データ記憶領域に格納されている入力データを読み出す制御用プロセッサとを備える前記ＣＰＵモジュールであって、第１の記憶手段、第２の記憶手段と、前記入力データ記憶領域に入力データが格納される毎に、該入力データを前記第１の記憶手段、第２の記憶手段の何れか一方に交互に移す管理手段とを備え、前記制御用プロセッサは、前記入力データの読み出しを、該第１の記憶手段、第２の記憶手段の何れか一方から行うように構成する。
【００１４】
上記構成のＣＰＵモジュールを用いることにより、上記制御用プロセッサが任意のときに入力データの読み出しを行うタイミングが、例えばタクト割込みタイミングの直前であり当該読み出し処理中に入力データ記憶領域のデータの書き換えが行われるような場合であっても、第１の記憶手段または第２の記憶手段から読み出しを行っているので、問題なく、入力データの同時性を保証できる。
【００１５】
また、本発明の第２のプログラマブルコントローラにおけるＣＰＵモジュールは、ＣＰＵモジュールと少なくとも１以上の入力モジュール／出力モジュールがバスに接続され、タクト周期に同期して該バス上でのデータ送受信が行われるプログラマブルコントローラにおける、各出力モジュールに渡すべき出力データを任意のタイミングで出力データ記憶領域に格納する制御用プロセッサと、前記タクト周期に同期して、該出力データ記憶領域に格納されている出力データを前記バス上に送出するバスＬＳＩとを備える前記ＣＰＵモジュールであって、前記制御用プロセッサが、出力データの同時性を保証できないタイミングでデータ出力するときに、前記出力データ記憶領域に格納すべきデータを一時的に退避させる出力データ退避記憶手段と、該退避後に、出力データの同時性を保証できるタイミングとなったとき、割込み処理により、該出力データ退避記憶手段に退避されている出力データを、前記出力データ記憶領域に移す割込み処理手段とを備えるように構成する。
【００１６】
上記構成のＣＰＵモジュールによれば、もし出力データの同時性を保証できないタイミングでデータ出力を行うことになったときには、出力データ記憶領域へのデータ書き込みは行わず、一時的に出力データ退避記憶手段に書き込んでおくので、出力データの同時性を保証できる。
【００１７】
また、上記第２のプログラマブルコントローラにおけるＣＰＵモジュールにおいて、例えば前記割込み処理手段は、前記出力データ退避記憶手段に退避されている出力データが存在するときに、前記制御用プロセッサが次のデータ出力を行なおうとする場合にも、前記割込み処理を実行するようにしてもよい。
【００１８】
このようにすることで、更に、データ出力順も保証できるようになる。
【発明の効果】
【００１９】
本発明のプログラマブルコントローラにおけるＣＰＵモジュールによれば、タクト周期とは関係なく任意のタイミングでデータ入力／出力要求が行なわれても、入力データ／出力データの同時性を保証できるようになる。更に、出力順を保証できるようにすることもできる。これら効果は、制御アプリケーションを変更することなく、達成できる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照して、本発明の実施の形態について説明する。
尚、本説明において“同時性”とは、複数の入出力データ（複数の入力モジュールからの入力データ、または複数の出力モジュールへの出力データ）を、全て同じタイミング（同一タクト周期内）で入力または出力することを意味する。
【００２１】
例えばＩ／Ｏモジュールに接続されている複数の機器の動作が互いに関連をもっている場合、制御アプリケーション１１がこれら各機器に対して出力するデータ（よって、複数のデータとなる）を、各機器が同一タイミングで受け取って動作しないと、誤動作等が生じる可能性がある為、上記“同時性”を保つようにすることは重要となる。
【００２２】
図１は、本例によるプログラマブルコントローラのシステム構成図である。
同図に示すプログラマブルコントローラは、ＣＰＵモジュール１、入力モジュール５０、出力モジュール６０が、システムバス７０に接続して成る構成となっている。尚、図では、各モジュールは１台ずつ示してあるが、これらは、各々、複数あってもよい。
【００２３】
ＣＰＵモジュール１は、制御用プロセッサ１０、管理用プロセッサ２０、共有メモリ３０、バスＬＳＩ４０を有する。
制御用プロセッサ１０は、制御アプリケーション１１、Ｉデータ管理ドライバ１２、Ｏデータ管理ドライバ１３、タイマ１４、ハンドラ１５を備える。制御アプリケーション１１は、各入力モジュール５０、出力モジュール６０に対する入出力制御処理や、データの演算処理等を行う。Ｉデータ管理ドライバ１２〜ハンドラ１５については、後に説明する。
【００２４】
尚、Ｉデータとは、システムバス７０を介して入力モジュール５０から受け取る入力データ（例えば、制御対象機器の状態データ、センサ計測データ等）のことであり、Ｏデータとは、システムバス７０を介して出力モジュール６０に渡すべき出力データ（例えば制御対象機器の位置、回転数等の設定データ等）のことである。
【００２５】
管理用プロセッサ２０は、Ｉデータ管理ドライバ２１を備える。
共有メモリ３０は、制御用プロセッサ１０、管理用プロセッサ２０、及びバスＬＳＩ４０が、共有するメモリである。共有メモリ３０は、ＩデータバンクＡ３１、ＩデータバンクＢ３２、最新データバンクレジスタ３３、Ｏデータ領域３４、Ｏデータ領域排他フラグ３５、Ｉデータ領域３６、Ｏデータ一時退避バッファ３７等の各記憶領域を有する。
【００２６】
上記各記憶領域の中でＩデータバンクＡ３１、ＩデータバンクＢ３２、最新データバンクレジスタ３３、及びＩデータ領域３６は、データ入力処理に関係する。
Ｉデータ領域３６は、本来、各入力モジュール５０から収集したＩデータを、バスＬＳＩ４０が書き込んで、これを制御用プロセッサ１０が読み出す為の記憶領域であるが、本例では、後述するように、制御用プロセッサ１０は、Ｉデータ領域３６から直接データを読み出すことはしない。
【００２７】
ＩデータバンクＡ３１、ＩデータバンクＢ３２は、ある瞬間の上記Ｉデータ領域３６のデータのコピーを保持する。最新データバンクレジスタ３３は、これら２つのＩデータバンクＡ３１、Ｂ３２のうち、どちらが最新のＩデータを保持しているのかを示すデータ（フラグでもよい）を保持するレジスタである。
【００２８】
これら２つのＩデータバンクＡ３１、Ｂ３２へのデータコピーと、最新データバンクレジスタ３３の更新は、Ｉデータ領域３６のデータが更新されたタイミングで、管理用プロセッサ２０のＩデータ管理ドライバ２１が行う。
【００２９】
また、上記制御用プロセッサ１０のＩデータ管理ドライバ１２は、上記制御アプリケーション１１から任意のときにＩデータ取得要求を受ける毎に、最新データバンクレジスタ３３が示すＩデータバンク（Ａ３１またはＢ３２）から、最新のＩデータを読み出して制御アプリケーション１１に渡す。
【００３０】
一方、共有メモリ３０における各記憶領域の中で、Ｏデータ領域３４、Ｏデータ領域排他フラグ３５、Ｏデータ一時退避バッファ３７は、データ出力処理に関係する。
Ｏデータ領域３４は、制御用プロセッサ１０が、出力モジュール６０に対してＯデータ出力する際に、このＯデータを書き込み、バスＬＳＩ４０が読み出す為の記憶領域である。
【００３１】
Ｏデータ領域排他フラグ３５は、Ｏデータ領域３４へのアクセスに排他をとるために用いられる。
Ｏデータ一時退避バッファ３７は、Ｏデータ領域３４にＯデータを書き込むことができないとき（例えば、Ｏデータ領域排他フラグ３５がセットされているときや、タイマ１４がカウントアップしているとき；詳しくは後述する）、このＯデータを一時的に退避する為の、スタック構造（ＦＩＦＯ等）をもつバッファである（複数の要求が出力できない場合を考慮してＦＩＦＯ構造となっている）。
【００３２】
尚、バスＬＳＩ４０と各入力モジュール５０／出力モジュール６０間のデータ入出力処理自体については、基本的には従来と略同様である。つまり、「バスの転送速度に合わせて一定周期（タクト周期）で割込みを発生させる機能」と、「このタクト割込みに同期して、各“Ｉ／Ｏモジュール５０、６０”に対するデータの入出力処理を行う機能」とを備え、受信処理のときはトータルフレーム方式、送信処理のときはマルチキャスト方式で、システムバス７０上でのデータ転送を行っている。よって、これらバスＬＳＩ４０、入力モジュール５０、出力モジュール６０の詳細な構成、機能については特に図示／説明しないものとする。
【００３３】
以下、まず、図２、図３を参照して、上記プログラマブルコントローラのＣＰＵモジュール１におけるデータ入力処理について説明する。
図２において、まず、バスＬＳＩ４０は、タクト周期毎に、各入力モジュール５０のＩデータを、システムバス７０を介して受け取ると、このＩデータをＩデータ領域３６に書き込む（１）。そして、管理用プロセッサ２０に対してタクト割込みを発生させる（２）。
【００３４】
管理用プロセッサ２０のＩデータ管理ドライバ２１は、このタクト割込みを受けると、Ｉデータ領域３６に格納されているＩデータを読み出し（３）、これをＩデータバンクＡ３１、ＩデータバンクＢ３２の何れか一方（前回、書き込んでいない方）に書き込むと共に（４）、最新データバンクレジスタ３３を更新する（５）。
【００３５】
Ｉデータ管理ドライバ１２は、制御アプリケーション１１からＩデータ取得要求を受けると、最新データバンクレジスタ３３が示すＩデータバンク（Ａ３１またはＢ３２）からＩデータを読み込んできて、制御アプリケーション１１に渡す。
【００３６】
以上のようにすることで、もし、この読み込み処理の最中にバスＬＳＩ４０によってＩデータ領域３６のデータが更新されることになっても、問題ないことになる。すなわち、図３に示すように、図９の場合と同様にタクト割り込み寸前で制御アプリケーション１１からＩデータ取得要求があった場合でも、データ読み出し処理中に、タクト割り込みによりＩデータ領域３６のデータは書き換えられるが、ＩデータバンクＢ３２のデータ（ｂ）は変わらないので、問題なく読み込みを行うことができる。すなわち、同時性を保つことができる（制御アプリケーションを変更することなく）。
【００３７】
次に、以下、図４〜図６を参照して、図１のプログラマブルコントローラのＣＰＵモジュール１におけるデータ出力処理について説明する。
図４において、Ｏデータ管理ドライバ１３は、任意のときに制御アプリケーション１１からＯデータ出力要求を受けると、まず、Ｏデータ領域排他フラグ３５とタイマ１４を参照し、排他フラグ３５がリセット（ＯＦＦ）で且つタイマ１４がカウントアップしていない場合には、Ｏデータ領域３４にデータを書き込む。
【００３８】
一方、排他フラグ３５がセット（ＯＮ）されているか、またはタイマ１４がカウントアップしている場合には、このタイミングではＯデータ領域３４にはデータを書き込めないと判断し、このデータをＯデータ一時退避バッファ３７に書き込むと共に、割込みマスク（不図示）を解除する。
【００３９】
排他フラグ３５は、バスＬＳＩ４０が、タクト周期毎に、Ｏデータ領域３４のデータをシステムバス７０上に送出する処理の開始時にセットし、終了時にリセットする。よって、排他フラグ３５がセットされているときにＯデータ領域３４のデータを書き替えるのは問題があることになる。
【００４０】
割込みマスクは、通常時には、ハンドラ１５による割込みが立ち上がらないようにマスクしているが、Ｏデータ一時退避バッファ３７にデータが退避されたときのみマスク解除することで、ハンドラ１５による割込みが立ち上がるようにしている。これより、ハンドラ１５は、その割込み処理起動タイミング（タイマ１４がカウントアップしたとき）でマスク解除されている場合には、Ｏデータ一時退避バッファ３７に一時的に格納されたデータをＯデータ領域３４に移す割込み処理を実行する。尚、ハンドラ１５による割込みのタイミングは、ここでは、タイマ１４がカウントアップしたときとしているが、これに限るわけではない。
【００４１】
そして、バスＬＳＩ４０が、次のタクト割込みタイミングで、Ｏデータ領域３４からデータを読み出して、これをシステムバス７０上に送出し、各出力モジュール６０が受け取る。
【００４２】
以上の処理により、データ出力処理において同時性が保てるようになる理由について、図５を参照して説明する。
図５は、本例によるデータ出力処理タイミングの一例を示す図である。
【００４３】
図示の例では、図８（ｂ）と同様に制御アプリケーション１１からＯデータ出力要求のタイミングが、Ｏデータ領域書き換え中にタクト割込みタイミングとなってしまう場合を例にしている。
【００４４】
図５において、制御アプリケーション１１からＯデータ出力要求が出されたタイミングでは、Ｏデータ領域排他フラグ３５はリセットされているが、タイマ１４はカウントアップしている為、Ｏデータ管理ドライバ１３は、この出力データ（ここではデータｂとする）をＯデータ領域３４には書き込まずに、Ｏデータ一時退避バッファ３７に一時的に格納すると共に、割込みマスクを解除する。尚、図では、次のタクト割込みタイミングｔ1 を過ぎてからＯデータ一時退避バッファ３７への書き込みが行われているかのように見えるかもしれないが、これは単にタイムラグを表現しているだけである。Ｏデータ一時退避バッファ３７への書き込み処理途中でタクト割込みタイミングとなってしまっても、何ら問題はない。
【００４５】
そして、割込みマスクが解除された状態でハンドラ１５の割込み動作タイミングとなると（この例ではタイマ１４がカウントアップしたとき）、ハンドラ１５はＯデータ一時退避バッファ３７に格納されているデータを、Ｏデータ領域３４に移す。そして、割込みマスクをセットする。
【００４６】
ここで、タイマ１４は、（タクト割込み周期）−（最大出力点数処理時間）でカウントアップするように設定されている（最大出力点数処理時間；制御アプリケーション１１から、出力最大点数の出力データ書き込み要求を受けたときに（つまり、システムバス７０に接続されている全ての出力モジュールに対してデータ出力する場合）、Ｏデータ領域３４へのデータ書き込みに掛かる時間）。
【００４７】
これにより、タイマ１４がカウントアップしてから次のタクト割込みタイミング（ｔ2 ）までに“最大出力点数処理時間”が確保されるので、ハンドラ１５によるＯデータ領域３４へのデータ書き込み処理は、必ず、タイミングｔ2 より前に完了することになる。
【００４８】
これより、次のタクト割込みタイミング（ｔ2 ）で、バスＬＳＩ４０は、データ書き込み処理が完了しているＯデータ領域３４から、データ読み出して、各出力モジュール６０に配信することができるので、データ出力処理において同時性が保てることになる（制御アプリケーションを変更することなく）。
【００４９】
ここで、図５に示す例において、タイミングｔ1 とｔ2 との間において、バスＬＳＩ４０によるデータ配信処理が完了した時点（図上、Ｏデータ領域排他フラグ３５がリセットされた時点）から、タイマ１４がカウントアップするまでの間は、上記の通り、Ｏデータ管理ドライバ１３は、制御アプリケーション１１からＯデータ出力要求を受けると、Ｏデータ領域３４にデータを書き込む処理を行うことになる。この為、後から出力要求を受けたデータ（データｃとする）の方が先にＯデータ領域３４に書き込まれ、次にハンドラ１５によりＯデータ一時退避バッファ３７のデータ（上記データｂ）がＯデータ領域３４に書き込まれる（同一タクト周期内で２度書き込みが行われる場合は、書き換えにはならず、追加の形となる）。このような場合、バスＬＳＩ４０によるデータ配信処理において、Ｏデータの出力順番が逆になってしまう。
【００５０】
図６は、このような場合でも正常な出力順を保証できるようにする方法について説明する為の図である。
図６において、図４、図５と異なる点は、ハンドラ１５による割込み処理の発生条件を、上記の条件に加えて、“割込みマスクが解除されているときに、制御アプリケーション１１からの出力要求があった場合”とした点である。
【００５１】
これより、例えば図６に示すタイミングで制御アプリケーション１１からデータｃの出力要求を受けると、ハンドラ１５による割込み処理の発生し、Ｏデータ一時退避バッファ３７のデータ（上記データｂ）により、Ｏデータ領域３４のデータが書き換えられる。そして、割込みマスクがセットされる（これにより、タイマ１４がカウントアップしたときに再びハンドラ１５による割込み処理が発生するようなことはない）。
【００５２】
ハンドラ１５による割込み処理が終了すると、Ｏデータ管理ドライバ１３が、上記データｃをＯデータ領域３４に書き込む。上記の通り、この様な場合は“書き換え”にはならないので、Ｏデータ領域３４に格納されるデータは、「ｂ＋ｃ」となる。図４、図５の場合は、「ｃ＋ｂ」となってしまい、順番が逆になってしまったが、本例では正常な出力順を保証できる。
【図面の簡単な説明】
【００５３】
【図１】本例によるプログラマブルコントローラのシステム構成図である。
【図２】データ入力処理の流れを説明する為の図である。
【図３】データ入力処理における各記憶領域のデータ書き換えのタイミング図である。
【図４】データ出力処理の流れを説明する為の図である。
【図５】データ出力処理のタイミング図である。
【図６】データ出力処理（出力順を保証）のタイミング図である。
【図７】従来のプログラマブルコントローラの構成の一例を、概略的に示す図である。
【図８】（ａ）、（ｂ）は、従来の構成におけるデータ出力処理の問題点を説明する為の図である。
【図９】従来の構成におけるデータ入力処理の問題点を説明する為の図である。
【符号の説明】
【００５４】
１  ＣＰＵモジュール
１０  制御用プロセッサ
１１  制御アプリケーション
１２  Ｉデータ管理ドライバ
１３  Ｏデータ管理ドライバ
１４  タイマ
１５  ハンドラ
２０  管理用プロセッサ
２１  Ｉデータ管理ドライバ
３０  共有メモリ
３１  Ｉデータバンク
３２  Ｉデータバンク
３３  最新データバンクレジスタ
３４  Ｏデータ領域
３５  Ｏデータ領域排他フラグ
３６  Ｉデータ領域
３７  Ｏデータ一時退避バッファ
４０  バスＬＳＩ
５０  入力モジュール
６０  出力モジュール
７０  システムバス
【図１】
2007249560.tif 000003
【図２】
2007249560.tif 000004
【図３】
2007249560.tif 000005
【図４】
2007249560.tif 000006
【図５】
2007249560.tif 000007
【図６】
2007249560.tif 000008
【図７】
2007249560.tif 000009
【図８】
2007249560.tif 000010
【図９】
2007249560.tif 000011