(57)【特許請求の範囲】
【請求項１】
ＩＯデータ空間と、前記ＩＯデータ空間に存在する領域の先頭アドレスを格納するＩＯインデックス空間とを有するＩＯメモリ空間にアクセス可能なバスと、
前記バスに接続される周辺装置が収納される複数のスロットと
を有するＩＯケースと、
前記バスに接続され、前記ＩＯインデックス空間にマッピングされ、前記ＩＯデータ空間の先頭アドレスが記憶され得るスロットアドレスレジスタと、
前記バスに接続され、前記ＩＯインデックス空間にマッピングされ、前記周辺装置が接続されているか否かを検出する周辺装置装着フラグと、
前記ＩＯケースにおける配置位置を示すスロット番号が格納されているスロット番号格納部と
を有し、前記複数のスロットに夫々内蔵される複数のＩＯ接続部と、
前記バスに前記ＩＯ接続部を通じて接続され、前記ＩＯデータ空間にマッピングされ得る入出力インターフェースと、
前記入出力インターフェースの前記ＩＯデータ空間上の先頭アドレスが記憶され得るＩＯアドレスレジスタと、
前記スロットアドレスレジスタと前記ＩＯアドレスレジスタとの一致を判定するアドレス一致判定部と、
前記スロット番号格納部から前記スロット番号が記憶され得るスロット番号レジスタと、
前記入出力インターフェースのＩＯデータ長が格納されるＩＯデータ長格納部と、
前記アドレス一致判定部が前記スロットアドレスレジスタと前記ＩＯアドレスレジスタとの不一致を判定することに呼応して起動し、前記スロットアドレスレジスタに記憶されているスロットアドレスを前記ＩＯアドレスレジスタに複写して、前記スロット番号レジスタの値をインクリメントしながら前記バスを通じて前記スロット番号レジスタが指し示す他の周辺装置が接続されている直近のＩＯ接続部を探索し、探索した前記ＩＯ接続部の前記スロットアドレスレジスタに、前記複写した前記スロットアドレスと前記ＩＯデータ長を加算した算出アドレスを書き込む動的アドレスマッピング処理部と
を有する、前記複数のスロットに装着される前記周辺装置である入出力装置と、
前記複数のスロットに装着され、前記入出力装置と前記バスを通じて情報を送受信して、所定の演算処理を行う、前記周辺装置であるＣＰＵ装置と
を具備する制御装置。
【請求項２】
更に、前記ＩＯケースの第一番目のスロットには、前記スロットアドレスレジスタに代えて前記ＩＯデータ空間の先頭アドレスが格納されているスロットアドレス格納部を有する第一ＩＯ接続部が内蔵される、請求項１記載の制御装置。
【請求項３】
更に、前記ＩＯケースには、前記周辺装置装着フラグに代えて前記スロットの最終位置を示す最終フラグ格納部を有する最終位置の前記ＩＯ接続部が内蔵される、請求項２記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置に関する。
より詳細には、メモリマップドＩＯを採用する監視制御装置において、ＣＰＵ装置が能動的に動作することなく、入出力装置自身が入出力装置を動的にアドレスマッピング処理を行うことのできる、監視制御装置に関する。
【背景技術】
【０００２】
監視制御装置は、プラントや発電所等、大規模な設備の監視や制御に必要不可欠である。監視制御装置はその適用分野の性質上、柔軟な拡張性と堅牢さと可用性を高いレベルで求められる。拡張性の点においては、入出力装置（以下「ＩＯ装置」）とＣＰＵ装置の機械形状を同一化して、ＩＯケースへ容易に装着できる仕様になっている。
その一方で、監視制御装置の業界では、適用分野が様々な業態に広がる傾向に起因して、多くの生産者が参入しており、このためにコスト競争にも晒されつつある。
しかしながら、前述のように監視制御装置は高い信頼性が求められるので、コスト競争に対しては高価な電子デバイスを有効利用する、という方法で解決することが殆どである。安易に安価な部品を採用することで信頼性を損ねてしまってはならない。
【０００３】
また、前述の可用性については、監視制御装置に活線挿抜が実現できれば理想的である。
なお、本発明に関係すると思われる先行技術文献を特許文献１に示す。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−１８８２４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の監視制御装置は、活線挿抜には対応しておらず、ＩＯケースからＩＯ装置を挿抜する場合には、一旦監視制御装置自身を停止処理させる必要があった。また、ＩＯ装置はその種類に応じて様々なＩＯデータ長を備えているが、従来の監視制御装置では全てのＩＯ装置のＩＯメモリ専有幅を同一化していたため、メモリマップドＩＯの利用効率が必ずしも良くなかった。
【０００６】
本発明はかかる課題を解決し、ＩＯメモリ空間の利用効率を良好にすると共に、活線挿抜にも対応し、更には低負荷でＩＯ装置の挿抜が実現できる、制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明は、ＩＯケース、複数のＩＯ接続部及び入出力装置（ＩＯ装置）及びＣＰＵ装置を備える制御装置である。
ＩＯケースは、ＩＯデータ空間と、ＩＯデータ空間に存在する領域の先頭アドレスを格納するＩＯインデックス空間とを有するＩＯメモリ空間にアクセス可能なバスと、バスに接続される周辺装置が収納される複数のスロットとを有する。
また、複数のＩＯ接続部は、バスに接続され、ＩＯインデックス空間にマッピングされ、ＩＯデータ空間の先頭アドレスが記憶され得るスロットアドレスレジスタと、バスに接続され、ＩＯインデックス空間にマッピングされ、周辺装置が接続されているか否かを検出する周辺装置装着フラグを有する。更に、複数のＩＯ接続部は、ＩＯケースにおける配置位置を示すスロット番号が格納されているスロット番号格納部と有し、複数のスロットに夫々内蔵されている。
また、入出力装置（ＩＯ装置）は、複数のスロットに装着される周辺装置であり、バスにＩＯ接続部を通じて接続され、ＩＯデータ空間にマッピングされ得る入出力インターフェースと、入出力インターフェースのＩＯデータ空間上の先頭アドレスが記憶され得るＩＯアドレスレジスタと、スロットアドレスレジスタとＩＯアドレスレジスタとの一致を判定するアドレス一致判定部と、スロット番号格納部からスロット番号が記憶され得るスロット番号レジスタと、入出力インターフェースのＩＯデータ長が格納されるＩＯデータ長格納部を有する。また、アドレス一致判定部がスロットアドレスレジスタとＩＯアドレスレジスタとの不一致を判定することに呼応して起動し、スロットアドレスレジスタに記憶されているスロットアドレスをＩＯアドレスレジスタに複写して、スロット番号レジスタの値をインクリメントしながらバスを通じてスロット番号レジスタが指し示す他の周辺装置が接続されている直近のＩＯ接続部を探索し、探索したＩＯ接続部のスロットアドレスレジスタに、複写したスロットアドレスとＩＯデータ長を加算した算出アドレスを書き込む動的アドレスマッピング処理部とを有する。
また、ＣＰＵ装置は、複数のスロットに装着され、入出力装置とバスを通じて情報を送受信して、所定の演算処理を行う周辺装置である。
【０００８】
入出力装置が主体となって、ＩＯ接続部に設けられているスロットアドレスレジスタとスロット番号格納部を手がかりに、動的にＩＯアドレスのマッピングを実行した後、直近のスロットに存在する他の入出力装置が同様な動的アドレスマッピング処理を遂行するための開始アドレスを、当該ＩＯ接続部のスロットアドレスレジスタに書き込む。
【発明の効果】
【０００９】
本発明により、ＩＯメモリ空間の利用効率を良好にすると共に、活線挿抜にも対応し、更には低負荷でＩＯ装置の挿抜が実現できる、制御装置を提供できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態である監視制御装置の外観斜視図である。
【図２】監視制御装置の概略を表すブロック図である。
【図３】ＩＯ接続部とＩＯ装置の機能ブロック図である。
【図４】動的アドレスマッピング制御部の内部構成を示す機能ブロック図である。
【図５】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【図６】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【図７】ＩＯ接続部とＩＯ装置とＩＯメモリ空間の関係を示す概略図である。
【図８】本実施形態の監視制御装置における動的アドレスマッピング処理の流れを説明する概略図である。
【図９】本実施形態の監視制御装置における動的アドレスマッピング処理の流れを説明する概略図である。
【図１０】本実施形態の監視制御装置における動的アドレスマッピング処理の流れを説明する概略図である。
【図１１】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【図１２】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１１】
［外観］
図１は、本発明の一実施形態である監視制御装置の外観斜視図である。
監視制御装置１０１は、ＩＯケース１０２のスロット１０３に一つ以上のＩＯ装置１０４と一つのＣＰＵ装置１０５が装着されることで構成される。ＩＯケース１０２にとって周辺装置ともいえるＩＯ装置１０４及びＣＰＵ装置１０５は、ＩＯケース１０２のどのスロット１０３にも装着できるように、共通の大きさと形状を有する。
【００１２】
［内部構成］
図２は、監視制御装置１０１の概略を表すブロック図である。
ＩＯケース１０２の内側には、バス２０１と、スロット毎に第一ＩＯ接続部２０２ａ、第二ＩＯ接続部２０２ｂ、第三ＩＯ接続部２０２ｃ、第（ｎ−１）ＩＯ接続部２０２ｍ及び第ｎＩＯ接続部２０２ｎが設けられている。そして、ＩＯ装置１０４やＣＰＵ装置１０５はこれらのＩＯ接続部に接続される。
第一ＩＯ接続部２０２ａ乃至第ｎＩＯ接続部２０２ｎには、各々のスロット１０３の位置を識別するためのスロット番号が書換不可能に格納されているスロット番号格納部２０３と、各々のスロット１０３に接続されるＩＯ装置１０４のＩＯアドレスが格納されるスロットアドレスレジスタ２０４と、ＩＯ装置１０４が装着されているか否かを識別するための周辺装置装着フラグともいえるＩＯ装置装着フラグ２０５が設けられている。
【００１３】
ＩＯ装置装着フラグ２０５は２ビットのフラグ変数であり、抵抗を伴って論理電圧にプルアップされた論理配線と図示しないコネクタで構成される。ＩＯ装置１０４がコネクタに接続されると、ＩＯ装置１０４側のグランドが接触することで、当該論理配線の電圧が論理電圧から０Ｖに降下する。
このＩＯ装置装着フラグ２０５は、下位１ビットがＩＯ装置１０４の有無を示すフラグであり、上位１ビットがＩＯ接続部２０２の有無を示すフラグである。
ＩＯ装置装着フラグ２０５の値が「１１」であれば、当該ＩＯ接続部２０２にはＩＯ装置１０４が装着されていないことを表す。
ＩＯ装置装着フラグ２０５の値が「１０」であれば、当該ＩＯ接続部２０２にはＩＯ装置１０４が装着されていることを表す。
ＩＯ装置装着フラグ２０５の値が「００」であれば、当該ＩＯ接続部２０２以降にＩＯ接続部２０２は存在しないことを表す。
【００１４】
但し、第一ＩＯ接続部２０２ａにはスロットアドレスレジスタ２０４の代わりに、固定値のアドレスが格納されるスロットアドレス格納部２０６が設けられている。
また、最後のＩＯ接続部である第ｎＩＯ接続部２０２ｎにはスロットアドレスレジスタ２０４が二つ設けられており、更にスロットアドレスレジスタ２０４に加えて「このスロットは最後である」という意味を示す固定値が格納される最終フラグ格納部２０７が設けられている。この最終フラグ格納部２０７が、値が「００」のＩＯ装置装着フラグ２０５である。
ＩＯ接続部にはこの他にも種々の機能ブロックが存在するが、詳細は図３にて後述する。
【００１５】
バス２０１は一般的なパラレルバスの他、シリアルバスでも良い。このバス２０１に求められる条件は、ＩＯメモリ空間を有することである。つまり、バス２０１に接続されるＩＯ装置１０４、ＩＯ接続部及びＣＰＵ装置１０５から一つを選択するために、アドレスを指定することができる必要がある。
【００１６】
なお、これ以降、「格納部」と記す名称は固定値を格納する機能ブロックである。ＲＯＭやサムロータリスイッチ、或は配線等により固定値を形成する。そして、「レジスタ」と記す名称は可変値を記憶する機能ブロックである。ＲＡＭやレジスタ等により可変値を記憶する。
【００１７】
図３は、ＩＯ接続部２０２とＩＯ装置１０４の機能ブロック図である。
ＩＯ接続部２０２には、入出力制御部３０１がバス２０１に接続されている。入出力制御部３０１は、インデックスアドレス格納部３０２に格納されているインデックスアドレスが、バス２０１に接続されている他の機器から指定されたアドレスと一致していたら、入出力制御部３０１に接続されているスロットアドレスレジスタ２０４に対するアクセスを許可する。つまり、インデックスアドレス格納部３０２に格納されているインデックスアドレスは、スロットアドレスレジスタ２０４のＩＯメモリ空間内におけるアドレスである。したがって、インデックスアドレス格納部３０２に格納されているインデックスアドレスは、ＩＯ接続部２０２毎にユニークである（一意性を有する）。
【００１８】
ＩＯ接続部２０２にはこの他に、スロット番号格納部２０３が存在する。前述のように、スロット番号格納部２０３に格納されている値は、スロット１０３に付されている番号である。スロット番号は１から始まり、ＩＯケース１０２に設けられているスロット１０３の最大数が最大値である。
【００１９】
ＩＯ接続部２０２には、ＩＯ装置１０４との間にバス２０１との接続点Ｐ３０３と、スロットアドレスレジスタ２０４との接続点Ｐ３０４と、スロット番号格納部２０３との接続点Ｐ３０５を有する。つまり、ＩＯ装置１０４はバス２０１に接続される他、ＩＯ接続部２０２のスロットアドレスレジスタ２０４及びスロット番号格納部２０３と直接接続される。
なお、詳細は後述するが、ＩＯ装置１０４は必ずしもスロットアドレスレジスタ２０４と直接接続されていなくても良い。但し、ＩＯ装置１０４がスロット番号格納部２０３内のスロット番号を直接読み取ることができるように、ＩＯ装置１０４とスロット番号格納部２０３とは直接接続されていなければならない。
【００２０】
ＩＯ装置１０４にも、入出力制御部３０６がバス２０１に接続されている。入出力制御部３０６は、ＩＯアドレスレジスタ３０７に格納されているＩＯアドレスが、バス２０１に接続されている他の機器から指定されたアドレスと一致していたら、入出力制御部３０６に接続されている入出力インターフェース３０８に対するアクセスを許可する。つまり、ＩＯアドレスレジスタ３０７に格納されているＩＯアドレスは、入出力インターフェース３０８、ひいてはＩＯ装置１０４自体のＩＯメモリ空間内におけるアドレスである。したがって、ＩＯアドレスレジスタ３０７に格納されているＩＯアドレスは、ＩＯ装置１０４毎にユニークでなければならない。
【００２１】
ＩＯ接続部２０２のスロットアドレスレジスタ２０４と、ＩＯ装置１０４のＩＯアドレスレジスタ３０７との間には、アドレス一致判定部３０９が接続されている。アドレス一致判定部３０９は双方のアドレスが等しい場合に論理の「真」を出力する。一方、有効アドレス判定部３１０はＩＯアドレスの値の有効性、つまりＩＯメモリ空間内に存在するか否かを判定し、有効であれば論理の「真」を出力する。
アドレス一致判定部３０９の論理出力と有効アドレス判定部３１０の論理出力はＡＮＤゲート３１１に入力される。ＡＮＤゲート３１１は、「スロットアドレスレジスタ２０４の値（以下「スロットアドレス」）とＩＯアドレス（ＩＯアドレスレジスタ３０７の値）が一致していて、且つＩＯアドレスが有効な値である場合」に論理の「真」を出力する。つまり、ＡＮＤゲート３１１の出力が「真」の時は、通常の動作状態を意味する。入出力制御部３０６は、ＡＮＤゲート３１１の出力が論理の「真」である場合に、バス２０１と入出力インターフェース３０８との接続を許可する。
【００２２】
一方、アドレス一致判定部３０９の論理出力はＮＯＴゲート３１２を介して動的アドレスマッピング制御部３１３に供給される。ＮＯＴゲート３１２の出力信号は、ＩＯ接続部２０２のスロットアドレスレジスタ２０４と、ＩＯ装置１０４のＩＯアドレスレジスタ３０７とのアドレスが異なる場合に論理の「真」を出力する。そして、この信号が動的アドレスマッピング制御部３１３の起動トリガとなる。
【００２３】
動的アドレスマッピング制御部３１３は、本実施形態の監視制御装置１０１における、ＩＯメモリ空間内におけるＩＯ装置１０４の動的アドレスマッピング処理を遂行する。このために、スロット番号格納部２０３と、スロットアドレスレジスタ２０４と、ＩＯアドレスレジスタ３０７と、スロット番号レジスタ３１４と、ＩＯデータ長格納部３１５が動的アドレスマッピング制御部３１３に接続される。
【００２４】
スロット番号レジスタ３１４は、ＩＯ装置１０４に最も近い他のＩＯ装置１０４の存在を検出するためのレジスタである。最初に動的アドレスマッピング制御部３１３によってスロット番号格納部２０３内のスロット番号が複写され、その後、ＩＯ装置１０４が装着されている直近のスロット１０３のＩＯ接続部２０２を見つけるまでインクリメントされる。
ＩＯデータ長格納部３１５は、ＩＯ装置１０４固有のデータ長を示す情報がワード単位にて格納される。
【００２５】
図４は、動的アドレスマッピング制御部３１３の内部構成を示す機能ブロック図である。
ＮＯＴゲート３１２の出力信号は、動的アドレスマッピング制御部３１３の起動トリガとしてアドレス複写処理部４０１に入力される。
アドレス複写処理部４０１は、起動トリガを受信するとスロットアドレスレジスタ２０４に記憶されているスロットアドレスをＩＯアドレスレジスタ３０７に複写する。そして、複写処理が完遂したら、トリガ信号をスロット番号複写処理部４０２に出力する。
スロット番号複写処理部４０２は、トリガ信号を受けると、スロット番号格納部２０３に格納されているスロット番号を、スロット番号レジスタ３１４に複写する。そして、複写処理が完遂したら、トリガ信号をＩＯ装置探索部４０３に出力する。
【００２６】
ＩＯ装置探索部４０３は、トリガ信号を受けると、スロット番号レジスタ３１４に格納されているスロット番号をインクリメントした後、バス２０１を通じてスロット番号レジスタ３１４に格納されているスロット番号のＩＯ接続部２０２に存在するＩＯ装置装着フラグ２０５を読みに行き、当該ＩＯ接続部２０２にＩＯ装置１０４が装着されているか否かを確認する。
もし、ＩＯ装置１０４が装着されていれば、トリガ信号をアドレス書き込み処理部４０４に出力する。
もし、ＩＯ装置１０４が装着されていなければ、スロット番号レジスタ３１４に格納されているスロット番号をインクリメントした後、再びバス２０１を通じてスロット番号レジスタ３１４に格納されているスロット番号のＩＯ接続部２０２に存在するＩＯ装置装着フラグ２０５を読みに行き、当該ＩＯ接続部２０２にＩＯ装置１０４が装着されているか否かを確認する。
【００２７】
アドレス書き込み処理部４０４は、トリガ信号を受けると、スロット番号レジスタ３１４に格納されているスロット番号のＩＯ接続部２０２に存在するスロットアドレスレジスタ２０４に、加算器４０５が出力する算出アドレスを書き込む。加算器４０５にはＩＯアドレスレジスタ３０７とＩＯデータ長格納部３１５が接続されており、加算器４０５はＩＯアドレスとＩＯデータ長を加算する。
【００２８】
［動作］
図５及び図６は、動的アドレスマッピング制御部３１３による動的アドレスマッピング処理の流れを示すフローチャートである。
処理を開始すると（Ｓ５０１）、先ずアドレス一致判定部３０９はスロットアドレスとＩＯアドレスが一致しているか否かを判定する（Ｓ５０２）。アドレスが一致していれば（Ｓ５０２のＮＯ）、何もせずに処理を終了する（Ｓ５０３）。そして、所定の時間が経過した後、再びステップＳ５０１から処理が繰り返される。所定の時間とは、例えば０．２乃至０．５秒程度の期間である。
【００２９】
ステップＳ５０２において、アドレス一致判定部３０９はスロットアドレスとＩＯアドレスが一致していないと判定したら（Ｓ５０２のＹＥＳ）、アドレス一致判定部３０９の出力するトリガ信号がアドレス複写処理部４０１を駆動する。アドレス複写処理部４０１はスロットアドレスをＩＯアドレスレジスタ３０７に複写する（Ｓ５０４）。そして、複写処理が完遂したら、アドレス複写処理部４０１はトリガ信号をスロット番号複写処理部４０２に出力する。
スロット番号複写処理部４０２は、アドレス複写処理部４０１からトリガ信号を受けると、スロット番号格納部２０３に格納されているスロット番号を、スロット番号レジスタ３１４に複写する（Ｓ５０５）。そして、複写処理が完遂したら、トリガ信号をＩＯ装置探索部４０３に出力する。
【００３０】
これ以降はループである。
ＩＯ装置探索部４０３は、スロット番号複写処理部４０２からトリガ信号を受けると、先ずスロット番号レジスタ３１４に格納されているスロット番号をインクリメントする（Ｓ５０６）。次に、バス２０１を通じてスロット番号レジスタ３１４に格納されているスロット番号のＩＯ接続部２０２に存在するＩＯ装置装着フラグ２０５を読みに行き、当該ＩＯ接続部２０２は最後のスロットであるか否かを確認する（Ｓ５０７）。もし最後のスロットであれば（Ｓ５０７のＹＥＳ）、一連の処理を終了する（Ｓ５０８）。そして、ステップＳ５０３と同様、所定の時間が経過した後、再びステップＳ５０１から処理が繰り返される。
ステップＳ５０７において、最後のスロットでなければ（Ｓ５０７のＮＯ）、ＩＯ装置探索部４０３は次に当該ＩＯ接続部２０２にＩＯ装置１０４が装着されているか否かを確認する（Ｓ５０９）。当該ＩＯ接続部２０２にＩＯ装置１０４が装着されていなければ（Ｓ５０９のＮＯ）、ステップＳ５０６から再び処理を繰り返す。
【００３１】
図６を参照して説明を続ける。
ステップＳ５０９において、当該ＩＯ接続部２０２にＩＯ装置１０４が装着されていれば（Ｓ５０９のＹＥＳ）、加算器４０５はＩＯアドレスとＩＯデータ長を加算する（Ｓ６１０）。そして、アドレス書き込み処理部４０４は、ＩＯ装置探索部４０３からトリガ信号を受けると、スロット番号レジスタ３１４に格納されているスロット番号のＩＯ接続部２０２に存在するスロットアドレスレジスタ２０４に、加算器４０５の出力データを書き込み（Ｓ６１１）、一連の処理を終了する（Ｓ６１２）。
【００３２】
以上、図１乃至図４にて説明した監視制御装置１０１の内部構成と、図５及び図６にて説明した監視制御装置１０１の動作を踏まえて、本実施形態の監視制御装置１０１が具体的にどのような振る舞いをするのかを、これより説明する。
図７（ａ）及び（ｂ）は、ＩＯ接続部２０２とＩＯ装置１０４とＩＯメモリ空間の関係を示す概略図である。
図７（ａ）は、ＩＯ接続部２０２にＩＯ装置１０４が接続されている状態を示す概略図である。
図７（ｂ）は、ＩＯメモリ空間を示す概略図である。
一例として、本実施形態の監視制御装置１０１は、ＩＯメモリ空間Ｓ７０１として０ｘ００Ａ１〜０ｘ０２ＦＦ迄のアドレス範囲を有する。このうちＩＯインデックス空間Ｓ７０２は０ｘ００Ａ１〜０ｘ００Ａ９迄のアドレス範囲を有し、ＩＯデータ空間Ｓ７０３は０ｘ００ＡＡ〜０ｘ００２Ｆ迄のアドレス範囲を有する。
また、本実施形態の監視制御装置１０１は１ワードを３２ビットとし、ＩＯメモリ空間Ｓ７０１のアドレスは１６ビットで指定されるものとする。
なお、図７の詳細な説明は後述する。
【００３３】
図８（ａ）、（ｂ）、（ｃ）及び（ｄ）と、図９（ｅ）及び（ｆ）は、本実施形態の監視制御装置１０１における動的アドレスマッピング処理の流れを説明する概略図である。
先ず、図８（ａ）には、第一ＩＯ接続部２０２ａにＩＯ装置１０４が接続された瞬間の状態が図示されている。
ＩＯ装置１０４は第一ＩＯ接続部２０２ａに接続されると、第一ＩＯ接続部２０２ａに設けられている図示しない電源ラインを通じて電源の供給を受ける。そして、ＩＯアドレスレジスタ３０７を「未値」であることを示す「０ｘＦＦＦＦ」に初期化する。なお、ＩＯケース１０２のスロット１０３に内蔵されているＩＯ接続部２０２のスロットアドレスレジスタ２０４も同様に、電源投入直後は「未値」であることを示す「０ｘＦＦＦＦ」に初期化される。
次に、アドレス一致判定部３０９はスロットアドレスとＩＯアドレスが一致しているか否か、判定する。この時点で、スロットアドレス格納部２０６は不変の「０ｘ００ＡＡ」というアドレスを格納している。片や比較対象となるＩＯアドレスは初期値の０ｘＦＦＦＦである。つまり、スロットアドレスとＩＯアドレスは不一致である。この結果、アドレス一致判定部３０９はスロットアドレスとＩＯアドレスが不一致であることを示す信号を出力する。
この状態は、図５のステップＳ５０２における「ＹＥＳ」に相当する。
【００３４】
次に、図８（ｂ）には、第一ＩＯ接続部２０２ａにＩＯ装置１０４が接続され、図８（ａ）から所定の時間が経過した後の状態が図示されている。
アドレス複写処理部４０１はスロットアドレスをＩＯアドレスレジスタ３０７に複写する。すると、ＩＯアドレスレジスタ３０７にはアドレス複写処理部４０１によって、スロットアドレス格納部２０６に格納されている「０ｘ００ＡＡ」が書き込まれる。
この状態は、図５のステップＳ５０４に相当する。
【００３５】
次に、図８（ｃ）には、第一ＩＯ接続部２０２ａにＩＯ装置１０４が接続され、図８（ｂ）から所定の時間が経過した後の状態が図示されている。
スロット番号複写処理部４０２は、スロット番号格納部２０３に格納されているスロット番号を、スロット番号レジスタ３１４に複写する。すると、スロット番号レジスタ３１４にはスロット番号複写処理部４０２によって、スロット番号格納部２０３に格納されている「１」が書き込まれる。
この状態は、図５のステップＳ５０５に相当する。
【００３６】
次に、図８（ｄ）には、第一ＩＯ接続部２０２ａにＩＯ装置１０４が接続され、図８（ｃ）から所定の時間が経過した後の状態が図示されている。
ＩＯ装置探索部４０３は、先ずスロット番号レジスタ３１４に格納されているスロット番号をインクリメントする。すると、スロット番号レジスタ３１４に書き込まれた「１」という値は、ＩＯ装置探索部４０３によって「２」にインクリメントされる。
この処理は、図５のステップＳ５０６に相当する。
【００３７】
次に、ＩＯ装置探索部４０３はバス２０１を通じて、スロット番号レジスタ３１４に格納されているスロット番号のＩＯ接続部２０２に存在するＩＯ装置装着フラグ２０５を読みに行き、当該ＩＯ接続部２０２は最後のスロットであるか否かを確認する。図８（ｄ）の場合では、スロット番号レジスタ３１４には「２」が記憶されているので、２番目のＩＯ接続部２０２、すなわち第二ＩＯ接続部２０２ｂのＩＯ装置装着フラグ２０５を読みに行く。ＩＯインデックス空間Ｓ７０２のアドレスデータは３２ビットの固定長なので、第一ＩＯ接続部２０２ａのスロットアドレス格納部２０６のアドレスである「０ｘ００Ａ１」に「１」を加算した「０ｘ００Ａ２」が、第二ＩＯ接続部２０２ｂのスロットアドレスレジスタ２０４及びＩＯ装置装着フラグ２０５のアドレスである。
第二ＩＯ接続部２０２ｂにはＩＯ装置１０４が接続されており、また第二ＩＯ接続部２０２ｂは最終スロットではない。したがって、ＩＯ装置装着フラグ２０５は「１０」という値である。
この状態は、図５のステップＳ５０７における「ＹＥＳ」を経て図５のステップＳ５０９における「ＹＥＳ」に相当する。
【００３８】
次に、図９（ｅ）には、第一ＩＯ接続部２０２ａにＩＯ装置１０４が接続され、図８（ｄ）から所定の時間が経過した後の状態が図示されている。
加算器４０５はＩＯアドレスレジスタ３０７の値とＩＯデータ長格納部３１５の値を加算する。図８（ｄ）の場合、加算器４０５は０ｘ００ＡＡ＋３ワード＝０ｘ００ＡＤという値を出力する。
この処理は、図６のステップＳ６１０に相当する。
アドレス書き込み処理部４０４は、この値を第二ＩＯ接続部２０２ｂのスロットアドレスレジスタ２０４に書き込む。
この状態は、図６のステップＳ６１１に相当する。
【００３９】
図９（ｆ）には、ＩＯメモリ空間Ｓ７０１が図示されている。
図８（ａ）から図９（ｅ）迄の処理の流れを受けて、ＩＯメモリ空間Ｓ７０１には、ＩＯインデックス空間Ｓ７０２の０ｘ００Ａ２に「０ｘ００ＡＤ」が書き込まれる。そして、ＩＯデータ空間Ｓ７０３の０ｘ００ＡＡから０ｘ００ＡＣまでの３ワードは、第一ＩＯ接続部２０２ａに接続されたＩＯ装置１０４によって確保されたこととなる。したがって、第二ＩＯ接続部２０２ｂに接続されたＩＯ装置１０４は、０ｘ００ＡＤからＩＯデータ空間Ｓ７０３の確保を行うこととなる。
【００４０】
以上の動作によって、第一ＩＯ接続部２０２ａに接続されるＩＯ装置１０４ａの入出力インターフェース３０８は、ＩＯアドレス「０ｘ００ＡＡ」から３ワードの範囲でアクセスが可能になる。
【００４１】
再び図７を参照して、説明を続ける。
図７（ａ）では、第一ＩＯ接続部２０２ａ、第二ＩＯ接続部２０２ｂ及び第三ＩＯ接続部２０２ｃが図示されている。そしてこれら三つのＩＯ接続部には夫々ＩＯ装置１０４が接続されている。
第一ＩＯ接続部２０２ａにはＩＯデータ長が３ワードのＩＯ装置１０４ａが接続されている。
第二ＩＯ接続部２０２ｂにはＩＯデータ長が２ワードのＩＯ装置１０４ｂが接続されている。
第三ＩＯ接続部２０２ｃにはＩＯデータ長が４ワードのＩＯ装置１０４ｃが接続されている。
【００４２】
前述のように、第一ＩＯ接続部２０２ａはＲＯＭ等の不変値であるスロットアドレス格納部２０６を有する。このスロットアドレス格納部２０６は、ＩＯインデックス空間Ｓ７０２の先頭位置である「０ｘ００Ａ１」というアドレスにマッピングされ、その中身はＩＯデータ空間Ｓ７０３の先頭位置である「０ｘ００ＡＡ」というアドレスが格納されている。
これに対し、第二ＩＯ接続部２０２ｂ以降のＩＯ接続部は、ＲＡＭ等の変動値であるスロットアドレスレジスタ２０４を有する。このスロットアドレスレジスタ２０４は、ＩＯインデックス空間Ｓ７０２の二番目の位置である「０ｘ００Ａ２」というアドレス以降にマッピングされる。
【００４３】
第一ＩＯ接続部２０２ａにＩＯデータ長が３ワードのＩＯ装置１０４を接続すると、ＩＯ装置装着フラグ２０５は「１１」から「１０」という値に変化する。つまり、ＩＯ装置１０４が第一ＩＯ接続部２０２ａに接続されたことにより、ＩＯ装置装着フラグ２０５の最下位ビットが接地電位になる。そして、ＩＯアドレスレジスタ３０７にはスロットアドレス格納部２０６の中身である「０ｘ００ＡＡ」が複写される。この「０ｘ００ＡＡ」とＩＯデータ長「３ワード」を足した「０ｘ００ＡＤ」が、第二ＩＯ接続部２０２ｂのスロットアドレスレジスタ２０４に書き込まれる。
【００４４】
第二ＩＯ接続部２０２ｂにＩＯデータ長が２ワードのＩＯ装置１０４を接続すると、ＩＯ装置装着フラグ２０５は「１１」から「１０」という値に変化する。そして、ＩＯアドレスレジスタ３０７にはスロットアドレス格納部２０６の中身である「０ｘ００ＡＤ」が複写される。この「０ｘ００ＡＤ」とＩＯデータ長「２ワード」を足した「０ｘ００ＡＦ」が、第三ＩＯ接続部２０２ｃのスロットアドレスレジスタ２０４に書き込まれる。
【００４５】
第三ＩＯ接続部２０２ｃにＩＯデータ長が４ワードのＩＯ装置１０４を接続すると、ＩＯ装置装着フラグ２０５は「１１」から「１０」という値に変化する。そして、ＩＯアドレスレジスタ３０７にはスロットアドレス格納部２０６の中身である「０ｘ００ＡＦ」が複写される。この「０ｘ００ＡＦ」とＩＯデータ長「４ワード」を足した「０ｘ００Ｂ３」が、第三ＩＯ接続部２０２ｃの次に位置するＩＯ接続部２０２のスロットアドレスレジスタ２０４に書き込まれる。
【００４６】
以上、第一ＩＯ接続部２０２ａから第三ＩＯ接続部２０２ｃの状態変化の結果、ＩＯメモリ空間Ｓ７０１は図７（ｂ）のようになる。ＩＯインデックス空間Ｓ７０２にはＩＯデータ空間Ｓ７０３の先頭アドレスが書き込まれる。そして、ＩＯデータ空間Ｓ７０３はＩＯ装置１０４のスロット１０３の順番に、ＩＯ装置１０４のＩＯデータ長に等しいメモリ空間が割り当てられる。
【００４７】
図１０（ａ）、（ｂ）、（ｃ）及び（ｄ）は、本実施形態の監視制御装置１０１における動的アドレスマッピング処理の流れを説明する概略図である。
本実施形態の監視制御装置１０１は、空きスロットを設けても動的アドレスマッピング処理が正常に遂行される。
今、図１０（ａ）のように、第二ＩＯ接続部２０２ｂを空きスロットにして、第一ＩＯ接続部２０２ａと第三ＩＯ接続部２０２ｃにＩＯ装置１０４が接続されている状態を形成すると、ＩＯメモリ空間Ｓ７０１は図１０（ｂ）のように、ＩＯデータ空間Ｓ７０３は第二ＩＯ接続部２０２ｂの存在がなかったかのように、第一ＩＯ接続部２０２ａ及び第三ＩＯ接続部２０２ｃに接続されているＩＯ装置１０４によって順番にメモリ空間が利用される。
【００４８】
図１０（ａ）の状態から、図１０（ｃ）のように、後から第二ＩＯ接続部２０２ｂにＩＯ装置１０４を接続する。その際、ＩＯメモリ空間Ｓ７０１の動的アドレスマッピングを促すために、第一ＩＯ接続部２０２ａに接続されているＩＯ装置１０４を一旦引き抜き、再び接続する。すると、ＩＯメモリ空間Ｓ７０１は図１０（ｄ）のように、ＩＯデータ空間Ｓ７０３は第一ＩＯ接続部２０２ａのＩＯ装置１０４に割り当てられているメモリ空間（３ワード）の後に第二ＩＯ接続部２０２ｂのＩＯ装置１０４のためのメモリ空間（２ワード）を割り当てて、その後に第三ＩＯ接続部２０２ｃのＩＯ装置１０４のためのメモリ空間（４ワード）を割り当てる。
【００４９】
これまでの説明より明らかなように、本実施形態の監視制御装置１０１は、ＩＯ装置１０４が主体となって、ＩＯ接続部２０２に設けられているスロットアドレス（スロットアドレス格納部２０６又はスロットアドレスレジスタ２０４）とスロット番号（スロット番号格納部２０３）を手がかりに、動的にＩＯアドレスのマッピングを実行した（図５のステップＳ５０４）後、直近のスロット１０３に存在する他のＩＯ装置１０４が同様な動的アドレスマッピング処理を遂行するための開始アドレスを当該ＩＯ接続部２０２のスロットアドレスレジスタ２０４に書き込む（図６のステップＳ６１２）。この処理に、ＣＰＵ装置１０５は一切介在していない。
したがって、ＩＯ装置１０４が故障した際、監視制御装置１０１を停止させずに故障したＩＯ装置１０４をＩＯケース１０２から抜き取り、新たなＩＯ装置１０４を装着すれば、自動的に動的アドレスマッピングが実行されて、当該ＩＯ装置１０４が即座に利用可能になる。
【００５０】
以上のように構成される監視制御装置１０１において、ＣＰＵ装置１０５はスロット１０３に装着されているＩＯ装置１０４に対し、ＩＯインデックス空間Ｓ７０２のＩＯ装置装着フラグ２０５を見る。そして、ＩＯ装置装着フラグ２０５が「１０」となっている（ＩＯ装置１０４が装着されている）レコードのスロットアドレスレジスタ２０４又はスロットアドレス格納部２０６が示すスロットアドレスを読み取り、そのスロットアドレスでＩＯデータ空間Ｓ７０３にアクセスする。
【００５１】
本実施形態では以下の応用例が可能である。
（１）ＩＯ装置１０４は、通常動作時においても、他のＩＯ装置１０４が装着されている直近のＩＯ接続部２０２のスロットアドレスレジスタ２０４を確認し、スロットアドレスが本来あるべき値とは異なる場合には、正しい値に書き込み直す処理を施しても良い。
【００５２】
図１１及び図１２は、動的アドレスマッピング制御部３１３による動的アドレスマッピング処理の流れを示すフローチャートである。図１１及び図１２の処理のうち、図５及び図６と同じ処理内容の項目については、括弧書きでステップ番号を付している。
図１１及び図１２に開示する動的アドレスマッピング処理の、図５及び図６に開示した動的アドレスマッピング処理と異なる点は、以下の二点である。
【００５３】
＜ａ＞ステップＳ１１０２（Ｓ５０２）で、アドレス一致判定部３０９がスロットアドレスとＩＯアドレスが一致しているか否かを判定した後、アドレスが一致していれば（Ｓ１１０２のＮＯ）、何もせずに処理を終了するのではなく、動的アドレスマッピング処理のうちステップＳ１１０３（Ｓ５０４）にて実行する、アドレス複写処理部４０１によるスロットアドレスをＩＯアドレスレジスタ３０７へ複写する処理を行わずに、ステップＳ１１０４（Ｓ５０５）にてスロット番号格納部２０３に格納されているスロット番号を、スロット番号レジスタ３１４に複写する。
【００５４】
＜ｂ＞ステップＳ１２０９（Ｓ６１０）で、加算器４０５がＩＯアドレスとＩＯデータ長を加算した後、直ぐにステップＳ１２１１（Ｓ６１１）で算出したスロットアドレスをＩＯ接続部２０２のスロットアドレスレジスタに書き込まず、予め算出したスロットアドレスと読み取ったスロットアドレスが一致しているか確認する（Ｓ１２１０）。確認の結果、算出したスロットアドレスと読み取ったスロットアドレスが一致していれば、何もせずに終了する（Ｓ１２１２）。
【００５５】
以上のように、通常動作時においても他のＩＯ装置１０４が装着されている直近のＩＯ接続部２０２のスロットアドレスレジスタ２０４を確認することで、図１０のような状況でも第一ＩＯ接続部２０２ａに装着されているＩＯ装置１０４を抜き差しせずに動的アドレスマッピング処理を遂行できる。
【００５６】
（２）ＩＯ装置１０４の入出力制御部３０６が参照するＩＯ装置１０４のアドレスは、ＩＯアドレスレジスタ３０７の他に、ＩＯ接続部２０２のスロットアドレスレジスタ２０４を参照しても良い。
【００５７】
（３）図３の有効アドレス判定部３１０及びＡＮＤゲート３１１は、ＩＯアドレスレジスタ３０７の初期値がＩＯメモリ空間Ｓ７０１の範囲外である場合、なくてもよい。
【００５８】
本実施形態では、監視制御装置１０１を開示した。
本実施形態の監視制御装置１０１は、ＩＯケース１０２に形成される各々のスロット１０３に、ＩＯ接続部２０２を設ける。ＩＯ接続部２０２には、ＩＯ装置１０４が動的アドレスマッピング処理を行う際の、ＩＯデータ空間Ｓ７０３の先頭アドレスが格納されるスロットアドレスレジスタ２０４と、ＩＯ装置１０４が装着されているか否かを知るためのＩＯ装置装着フラグ２０５と、自分自身が装着されているスロットの番号を知るためのスロット番号格納部２０３が設けられている。
ＩＯ装置１０４は、スロット１０３に装着されてＩＯ接続部２０２に接続されると、スロットアドレスレジスタ２０４とＩＯ装置装着フラグ２０５とスロット番号格納部２０３にアクセスし、動的アドレスマッピング処理を実行する。そしてその後、バス２０１を通じて他のＩＯ装置１０４が接続されている直近のＩＯ接続部２０２を探索し、自身が確保したＩＯデータ空間Ｓ７０３の領域の直後のアドレスを、当該ＩＯ接続部２０２に接続されるＩＯ装置１０４の、ＩＯデータ空間Ｓ７０３における先頭アドレスとして、当該ＩＯ接続部２０２のスロットアドレスレジスタ２０４に書き込む。
【００５９】
従来の監視制御装置は、ＩＯデータ長が異なる種々のＩＯ装置１０４を使用するに際して、ＩＯデータ空間Ｓ７０３に対し、固定長でＩＯデータ空間Ｓ７０３の領域を確保していた。このため、ＩＯデータ空間Ｓ７０３に利用されない無駄な領域が生じていた。
本実施形態の監視制御装置１０１では、前述のようにＩＯ装置１０４が動作することで、ＩＯデータ長が異なる種々のＩＯ装置１０４を使用するに際して、ＩＯデータ空間Ｓ７０３に対し、ＩＯ装置１０４のＩＯデータ長に合わせて領域を確保する。したがって、ＩＯデータ空間Ｓ７０３、ひいてはＩＯメモリ空間Ｓ７０１を無駄なく効率的に利用することが可能になる。
ＣＰＵ装置１０５が一切介在することなく、ＩＯ装置１０４が主体となって動的アドレスマッピング処理を遂行するので、ＣＰＵ装置１０５の処理が全く増加せずに済むだけでなく、活線挿抜にも対応できる。
【００６０】
以上、本発明の実施形態例について説明したが、本発明は上記実施形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含む。
【符号の説明】
【００６１】
１０１…監視制御装置、１０２…ＩＯケース、１０３…スロット、１０４…ＩＯ装置、１０５…ＣＰＵ装置、２０１…バス、２０２…ＩＯ接続部、２０３…スロット番号格納部、２０４…スロットアドレスレジスタ、２０５…ＩＯ装置装着フラグ、２０６…スロットアドレス格納部、２０７…最終フラグ格納部、３０１…入出力制御部、３０２…インデックスアドレス格納部、３０６…入出力制御部、３０７…ＩＯアドレスレジスタ、３０８…入出力インターフェース、３０９…アドレス一致判定部、３１０…有効アドレス判定部、３１１…ＡＮＤゲート、３１２…ＮＯＴゲート、３１３…動的アドレスマッピング制御部、３１４…スロット番号レジスタ、３１５…ＩＯデータ長格納部、４０１…アドレス複写処理部、４０２…スロット番号複写処理部、４０３…ＩＯ装置探索部、４０４…アドレス書き込み処理部、４０５…加算器
【図１】
0005540207.tif 000002
【図２】
0005540207.tif 000003
【図３】
0005540207.tif 000004
【図４】
0005540207.tif 000005
【図５】
0005540207.tif 000006
【図６】
0005540207.tif 000007
【図７】
0005540207.tif 000008
【図８】
0005540207.tif 000009
【図９】
0005540207.tif 000010
【図１０】
0005540207.tif 000011
【図１１】
0005540207.tif 000012
【図１２】
0005540207.tif 000013