制御装置
【課題】IOメモリ空間の利用効率を良好にすると共に、活線挿抜にも対応し、更には低負荷でIO装置の挿抜が実現できる、制御装置を提供する。
【解決手段】入出力装置が主体となって、IO接続部に設けられているスロットアドレスレジスタとスロット番号格納部を手がかりに、動的にIOアドレスのマッピングを実行した後、直近のスロットに存在する他の入出力装置が同様な動的アドレスマッピング処理を遂行するための開始アドレスを、当該IO接続部のスロットアドレスレジスタに書き込む。
【解決手段】入出力装置が主体となって、IO接続部に設けられているスロットアドレスレジスタとスロット番号格納部を手がかりに、動的にIOアドレスのマッピングを実行した後、直近のスロットに存在する他の入出力装置が同様な動的アドレスマッピング処理を遂行するための開始アドレスを、当該IO接続部のスロットアドレスレジスタに書き込む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置に関する。
より詳細には、メモリマップドIOを採用する監視制御装置において、CPU装置が能動的に動作することなく、入出力装置自身が入出力装置を動的にアドレスマッピング処理を行うことのできる、監視制御装置に関する。
【背景技術】
【0002】
監視制御装置は、プラントや発電所等、大規模な設備の監視や制御に必要不可欠である。監視制御装置はその適用分野の性質上、柔軟な拡張性と堅牢さと可用性を高いレベルで求められる。拡張性の点においては、入出力装置(以下「IO装置」)とCPU装置の機械形状を同一化して、IOケースへ容易に装着できる仕様になっている。
その一方で、監視制御装置の業界では、適用分野が様々な業態に広がる傾向に起因して、多くの生産者が参入しており、このためにコスト競争にも晒されつつある。
しかしながら、前述のように監視制御装置は高い信頼性が求められるので、コスト競争に対しては高価な電子デバイスを有効利用する、という方法で解決することが殆どである。安易に安価な部品を採用することで信頼性を損ねてしまってはならない。
【0003】
また、前述の可用性については、監視制御装置に活線挿抜が実現できれば理想的である。
なお、本発明に関係すると思われる先行技術文献を特許文献1に示す。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平9−188249号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来の監視制御装置は、活線挿抜には対応しておらず、IOケースからIO装置を挿抜する場合には、一旦監視制御装置自身を停止処理させる必要があった。また、IO装置はその種類に応じて様々なIOデータ長を備えているが、従来の監視制御装置では全てのIO装置のIOメモリ専有幅を同一化していたため、メモリマップドIOの利用効率が必ずしも良くなかった。
【0006】
本発明はかかる課題を解決し、IOメモリ空間の利用効率を良好にすると共に、活線挿抜にも対応し、更には低負荷でIO装置の挿抜が実現できる、制御装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明の制御装置は、IOデータ空間と、IOデータ空間に存在する領域の先頭アドレスを格納するIOインデックス空間とを有するIOメモリ空間にアクセス可能なバスと、バスに接続される周辺装置が収納される複数のスロットとを有するIOケースと、バスに接続され、IOインデックス空間にマッピングされ、IOデータ空間の先頭アドレスが記憶され得るスロットアドレスレジスタと、バスに接続され、IOインデックス空間にマッピングされ、周辺装置が接続されているか否かを検出する周辺装置装着フラグと、IOケースにおける配置位置を示すスロット番号が格納されているスロット番号格納部とを有し、複数のスロットに夫々内蔵される複数のIO接続部と、バスにIO接続部を通じて接続され、IOデータ空間にマッピングされ得る入出力インターフェースと、入出力インターフェースのIOデータ空間上の先頭アドレスが記憶され得るIOアドレスレジスタと、スロットアドレスレジスタとIOアドレスレジスタとの一致を判定するアドレス一致判定部と、スロット番号格納部からスロット番号が記憶され得るスロット番号レジスタと、入出力インターフェースのIOデータ長が格納されるIOデータ長格納部と、アドレス一致判定部がスロットアドレスレジスタとIOアドレスレジスタとの不一致を判定することに呼応して起動し、スロットアドレスレジスタに記憶されているスロットアドレスをIOアドレスレジスタに複写して、スロット番号レジスタの値をインクリメントしながらバスを通じてスロット番号レジスタが指し示す他の周辺装置が接続されている直近のIO接続部を探索し、探索したIO接続部のスロットアドレスレジスタに、複写したスロットアドレスとIOデータ長を加算した算出アドレスを書き込む動的アドレスマッピング処理部とを有する、周辺装置である入出力装置とを具備する。
【0008】
入出力装置が主体となって、IO接続部に設けられているスロットアドレスレジスタとスロット番号格納部を手がかりに、動的にIOアドレスのマッピングを実行した後、直近のスロットに存在する他の入出力装置が同様な動的アドレスマッピング処理を遂行するための開始アドレスを、当該IO接続部のスロットアドレスレジスタに書き込む。
【発明の効果】
【0009】
本発明により、IOメモリ空間の利用効率を良好にすると共に、活線挿抜にも対応し、更には低負荷でIO装置の挿抜が実現できる、制御装置を提供できる。
【図面の簡単な説明】
【0010】
【図1】本発明の一実施形態である監視制御装置の外観斜視図である。
【図2】監視制御装置の概略を表すブロック図である。
【図3】IO接続部とIO装置の機能ブロック図である。
【図4】動的アドレスマッピング制御部の内部構成を示す機能ブロック図である。
【図5】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【図6】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【図7】IO接続部とIO装置とIOメモリ空間の関係を示す概略図である。
【図8】本実施形態の監視制御装置における動的アドレスマッピング処理の流れを説明する概略図である。
【図9】本実施形態の監視制御装置における動的アドレスマッピング処理の流れを説明する概略図である。
【図10】本実施形態の監視制御装置における動的アドレスマッピング処理の流れを説明する概略図である。
【図11】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【図12】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0011】
[外観]
図1は、本発明の一実施形態である監視制御装置の外観斜視図である。
監視制御装置101は、IOケース102のスロット103に一つ以上のIO装置104と一つのCPU装置105が装着されることで構成される。IOケース102にとって周辺装置ともいえるIO装置104及びCPU装置105は、IOケース102のどのスロット103にも装着できるように、共通の大きさと形状を有する。
【0012】
[内部構成]
図2は、監視制御装置101の概略を表すブロック図である。
IOケース102の内側には、バス201と、スロット毎に第一IO接続部202a、第二IO接続部202b、第三IO接続部202c、第(n−1)IO接続部202m及び第nIO接続部202nが設けられている。そして、IO装置104やCPU装置105はこれらのIO接続部に接続される。
第一IO接続部202a乃至第nIO接続部202nには、各々のスロット103の位置を識別するためのスロット番号が書換不可能に格納されているスロット番号格納部203と、各々のスロット103に接続されるIO装置104のIOアドレスが格納されるスロットアドレスレジスタ204と、IO装置104が装着されているか否かを識別するための周辺装置装着フラグともいえるIO装置装着フラグ205が設けられている。
【0013】
IO装置装着フラグ205は2ビットのフラグ変数であり、抵抗を伴って論理電圧にプルアップされた論理配線と図示しないコネクタで構成される。IO装置104がコネクタに接続されると、IO装置104側のグランドが接触することで、当該論理配線の電圧が論理電圧から0Vに降下する。
このIO装置装着フラグ205は、下位1ビットがIO装置104の有無を示すフラグであり、上位1ビットがIO接続部202の有無を示すフラグである。
IO装置装着フラグ205の値が「11」であれば、当該IO接続部202にはIO装置104が装着されていないことを表す。
IO装置装着フラグ205の値が「10」であれば、当該IO接続部202にはIO装置104が装着されていることを表す。
IO装置装着フラグ205の値が「00」であれば、当該IO接続部202以降にIO接続部202は存在しないことを表す。
【0014】
但し、第一IO接続部202aにはスロットアドレスレジスタ204の代わりに、固定値のアドレスが格納されるスロットアドレス格納部206が設けられている。
また、最後のIO接続部である第nIO接続部202nにはスロットアドレスレジスタ204が二つ設けられており、更にスロットアドレスレジスタ204に加えて「このスロットは最後である」という意味を示す固定値が格納される最終フラグ格納部207が設けられている。この最終フラグ格納部207が、値が「00」のIO装置装着フラグ205である。
IO接続部にはこの他にも種々の機能ブロックが存在するが、詳細は図3にて後述する。
【0015】
バス201は一般的なパラレルバスの他、シリアルバスでも良い。このバス201に求められる条件は、IOメモリ空間を有することである。つまり、バス201に接続されるIO装置104、IO接続部及びCPU装置105から一つを選択するために、アドレスを指定することができる必要がある。
【0016】
なお、これ以降、「格納部」と記す名称は固定値を格納する機能ブロックである。ROMやサムロータリスイッチ、或は配線等により固定値を形成する。そして、「レジスタ」と記す名称は可変値を記憶する機能ブロックである。RAMやレジスタ等により可変値を記憶する。
【0017】
図3は、IO接続部202とIO装置104の機能ブロック図である。
IO接続部202には、入出力制御部301がバス201に接続されている。入出力制御部301は、インデックスアドレス格納部302に格納されているインデックスアドレスが、バス201に接続されている他の機器から指定されたアドレスと一致していたら、入出力制御部301に接続されているスロットアドレスレジスタ204に対するアクセスを許可する。つまり、インデックスアドレス格納部302に格納されているインデックスアドレスは、スロットアドレスレジスタ204のIOメモリ空間内におけるアドレスである。したがって、インデックスアドレス格納部302に格納されているインデックスアドレスは、IO接続部202毎にユニークである(一意性を有する)。
【0018】
IO接続部202にはこの他に、スロット番号格納部203が存在する。前述のように、スロット番号格納部203に格納されている値は、スロット103に付されている番号である。スロット番号は1から始まり、IOケース102に設けられているスロット103の最大数が最大値である。
【0019】
IO接続部202には、IO装置104との間にバス201との接続点P303と、スロットアドレスレジスタ204との接続点P304と、スロット番号格納部203との接続点P305を有する。つまり、IO装置104はバス201に接続される他、IO接続部202のスロットアドレスレジスタ204及びスロット番号格納部203と直接接続される。
なお、詳細は後述するが、IO装置104は必ずしもスロットアドレスレジスタ204と直接接続されていなくても良い。但し、IO装置104がスロット番号格納部203内のスロット番号を直接読み取ることができるように、IO装置104とスロット番号格納部203とは直接接続されていなければならない。
【0020】
IO装置104にも、入出力制御部306がバス201に接続されている。入出力制御部306は、IOアドレスレジスタ307に格納されているIOアドレスが、バス201に接続されている他の機器から指定されたアドレスと一致していたら、入出力制御部306に接続されている入出力インターフェース308に対するアクセスを許可する。つまり、IOアドレスレジスタ307に格納されているIOアドレスは、入出力インターフェース308、ひいてはIO装置104自体のIOメモリ空間内におけるアドレスである。したがって、IOアドレスレジスタ307に格納されているIOアドレスは、IO装置104毎にユニークでなければならない。
【0021】
IO接続部202のスロットアドレスレジスタ204と、IO装置104のIOアドレスレジスタ307との間には、アドレス一致判定部309が接続されている。アドレス一致判定部309は双方のアドレスが等しい場合に論理の「真」を出力する。一方、有効アドレス判定部310はIOアドレスの値の有効性、つまりIOメモリ空間内に存在するか否かを判定し、有効であれば論理の「真」を出力する。
アドレス一致判定部309の論理出力と有効アドレス判定部310の論理出力はANDゲート311に入力される。ANDゲート311は、「スロットアドレスレジスタ204の値(以下「スロットアドレス」)とIOアドレス(IOアドレスレジスタ307の値)が一致していて、且つIOアドレスが有効な値である場合」に論理の「真」を出力する。つまり、ANDゲート311の出力が「真」の時は、通常の動作状態を意味する。入出力制御部306は、ANDゲート311の出力が論理の「真」である場合に、バス201と入出力インターフェース308との接続を許可する。
【0022】
一方、アドレス一致判定部309の論理出力はNOTゲート312を介して動的アドレスマッピング制御部313に供給される。NOTゲート312の出力信号は、IO接続部202のスロットアドレスレジスタ204と、IO装置104のIOアドレスレジスタ307とのアドレスが異なる場合に論理の「真」を出力する。そして、この信号が動的アドレスマッピング制御部313の起動トリガとなる。
【0023】
動的アドレスマッピング制御部313は、本実施形態の監視制御装置101における、IOメモリ空間内におけるIO装置104の動的アドレスマッピング処理を遂行する。このために、スロット番号格納部203と、スロットアドレスレジスタ204と、IOアドレスレジスタ307と、スロット番号レジスタ314と、IOデータ長格納部315が動的アドレスマッピング制御部313に接続される。
【0024】
スロット番号レジスタ314は、IO装置104に最も近い他のIO装置104の存在を検出するためのレジスタである。最初に動的アドレスマッピング制御部313によってスロット番号格納部203内のスロット番号が複写され、その後、IO装置104が装着されている直近のスロット103のIO接続部202を見つけるまでインクリメントされる。
IOデータ長格納部315は、IO装置104固有のデータ長を示す情報がワード単位にて格納される。
【0025】
図4は、動的アドレスマッピング制御部313の内部構成を示す機能ブロック図である。
NOTゲート312の出力信号は、動的アドレスマッピング制御部313の起動トリガとしてアドレス複写処理部401に入力される。
アドレス複写処理部401は、起動トリガを受信するとスロットアドレスレジスタ204に記憶されているスロットアドレスをIOアドレスレジスタ307に複写する。そして、複写処理が完遂したら、トリガ信号をスロット番号複写処理部402に出力する。
スロット番号複写処理部402は、トリガ信号を受けると、スロット番号格納部203に格納されているスロット番号を、スロット番号レジスタ314に複写する。そして、複写処理が完遂したら、トリガ信号をIO装置探索部403に出力する。
【0026】
IO装置探索部403は、トリガ信号を受けると、スロット番号レジスタ314に格納されているスロット番号をインクリメントした後、バス201を通じてスロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するIO装置装着フラグ205を読みに行き、当該IO接続部202にIO装置104が装着されているか否かを確認する。
もし、IO装置104が装着されていれば、トリガ信号をアドレス書き込み処理部404に出力する。
もし、IO装置104が装着されていなければ、スロット番号レジスタ314に格納されているスロット番号をインクリメントした後、再びバス201を通じてスロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するIO装置装着フラグ205を読みに行き、当該IO接続部202にIO装置104が装着されているか否かを確認する。
【0027】
アドレス書き込み処理部404は、トリガ信号を受けると、スロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するスロットアドレスレジスタ204に、加算器405が出力する算出アドレスを書き込む。加算器405にはIOアドレスレジスタ307とIOデータ長格納部315が接続されており、加算器405はIOアドレスとIOデータ長を加算する。
【0028】
[動作]
図5及び図6は、動的アドレスマッピング制御部313による動的アドレスマッピング処理の流れを示すフローチャートである。
処理を開始すると(S501)、先ずアドレス一致判定部309はスロットアドレスとIOアドレスが一致しているか否かを判定する(S502)。アドレスが一致していれば(S502のNO)、何もせずに処理を終了する(S503)。そして、所定の時間が経過した後、再びステップS501から処理が繰り返される。所定の時間とは、例えば0.2乃至0.5秒程度の期間である。
【0029】
ステップS502において、アドレス一致判定部309はスロットアドレスとIOアドレスが一致していないと判定したら(S502のYES)、アドレス一致判定部309の出力するトリガ信号がアドレス複写処理部401を駆動する。アドレス複写処理部401はスロットアドレスをIOアドレスレジスタ307に複写する(S504)。そして、複写処理が完遂したら、アドレス複写処理部401はトリガ信号をスロット番号複写処理部402に出力する。
スロット番号複写処理部402は、アドレス複写処理部401からトリガ信号を受けると、スロット番号格納部203に格納されているスロット番号を、スロット番号レジスタ314に複写する(S505)。そして、複写処理が完遂したら、トリガ信号をIO装置探索部403に出力する。
【0030】
これ以降はループである。
IO装置探索部403は、スロット番号複写処理部402からトリガ信号を受けると、先ずスロット番号レジスタ314に格納されているスロット番号をインクリメントする(S506)。次に、バス201を通じてスロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するIO装置装着フラグ205を読みに行き、当該IO接続部202は最後のスロットであるか否かを確認する(S507)。もし最後のスロットであれば(S507のYES)、一連の処理を終了する(S508)。そして、ステップS503と同様、所定の時間が経過した後、再びステップS501から処理が繰り返される。
ステップS507において、最後のスロットでなければ(S507のNO)、IO装置探索部403は次に当該IO接続部202にIO装置104が装着されているか否かを確認する(S509)。当該IO接続部202にIO装置104が装着されていなければ(S509のNO)、ステップS506から再び処理を繰り返す。
【0031】
図6を参照して説明を続ける。
ステップS509において、当該IO接続部202にIO装置104が装着されていれば(S509のYES)、加算器405はIOアドレスとIOデータ長を加算する(S610)。そして、アドレス書き込み処理部404は、IO装置探索部403からトリガ信号を受けると、スロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するスロットアドレスレジスタ204に、加算器405の出力データを書き込み(S611)、一連の処理を終了する(S612)。
【0032】
以上、図1乃至図4にて説明した監視制御装置101の内部構成と、図5及び図6にて説明した監視制御装置101の動作を踏まえて、本実施形態の監視制御装置101が具体的にどのような振る舞いをするのかを、これより説明する。
図7(a)及び(b)は、IO接続部202とIO装置104とIOメモリ空間の関係を示す概略図である。
図7(a)は、IO接続部202にIO装置104が接続されている状態を示す概略図である。
図7(b)は、IOメモリ空間を示す概略図である。
一例として、本実施形態の監視制御装置101は、IOメモリ空間S701として0x00A1〜0x02FF迄のアドレス範囲を有する。このうちIOインデックス空間S702は0x00A1〜0x00A9迄のアドレス範囲を有し、IOデータ空間S703は0x00AA〜0x002F迄のアドレス範囲を有する。
また、本実施形態の監視制御装置101は1ワードを32ビットとし、IOメモリ空間S701のアドレスは16ビットで指定されるものとする。
なお、図7の詳細な説明は後述する。
【0033】
図8(a)、(b)、(c)及び(d)と、図9(e)及び(f)は、本実施形態の監視制御装置101における動的アドレスマッピング処理の流れを説明する概略図である。
先ず、図8(a)には、第一IO接続部202aにIO装置104が接続された瞬間の状態が図示されている。
IO装置104は第一IO接続部202aに接続されると、第一IO接続部202aに設けられている図示しない電源ラインを通じて電源の供給を受ける。そして、IOアドレスレジスタ307を「未値」であることを示す「0xFFFF」に初期化する。なお、IOケース102のスロット103に内蔵されているIO接続部202のスロットアドレスレジスタ204も同様に、電源投入直後は「未値」であることを示す「0xFFFF」に初期化される。
次に、アドレス一致判定部309はスロットアドレスとIOアドレスが一致しているか否か、判定する。この時点で、スロットアドレス格納部206は不変の「0x00AA」というアドレスを格納している。片や比較対象となるIOアドレスは初期値の0xFFFFである。つまり、スロットアドレスとIOアドレスは不一致である。この結果、アドレス一致判定部309はスロットアドレスとIOアドレスが不一致であることを示す信号を出力する。
この状態は、図5のステップS502における「YES」に相当する。
【0034】
次に、図8(b)には、第一IO接続部202aにIO装置104が接続され、図8(a)から所定の時間が経過した後の状態が図示されている。
アドレス複写処理部401はスロットアドレスをIOアドレスレジスタ307に複写する。すると、IOアドレスレジスタ307にはアドレス複写処理部401によって、スロットアドレス格納部206に格納されている「0x00AA」が書き込まれる。
この状態は、図5のステップS504に相当する。
【0035】
次に、図8(c)には、第一IO接続部202aにIO装置104が接続され、図8(b)から所定の時間が経過した後の状態が図示されている。
スロット番号複写処理部402は、スロット番号格納部203に格納されているスロット番号を、スロット番号レジスタ314に複写する。すると、スロット番号レジスタ314にはスロット番号複写処理部402によって、スロット番号格納部203に格納されている「1」が書き込まれる。
この状態は、図5のステップS505に相当する。
【0036】
次に、図8(d)には、第一IO接続部202aにIO装置104が接続され、図8(c)から所定の時間が経過した後の状態が図示されている。
IO装置探索部403は、先ずスロット番号レジスタ314に格納されているスロット番号をインクリメントする。すると、スロット番号レジスタ314に書き込まれた「1」という値は、IO装置探索部403によって「2」にインクリメントされる。
この処理は、図5のステップS506に相当する。
【0037】
次に、IO装置探索部403はバス201を通じて、スロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するIO装置装着フラグ205を読みに行き、当該IO接続部202は最後のスロットであるか否かを確認する。図8(d)の場合では、スロット番号レジスタ314には「2」が記憶されているので、2番目のIO接続部202、すなわち第二IO接続部202bのIO装置装着フラグ205を読みに行く。IOインデックス空間S702のアドレスデータは32ビットの固定長なので、第一IO接続部202aのスロットアドレス格納部206のアドレスである「0x00A1」に「1」を加算した「0x00A2」が、第二IO接続部202bのスロットアドレスレジスタ204及びIO装置装着フラグ205のアドレスである。
第二IO接続部202bにはIO装置104が接続されており、また第二IO接続部202bは最終スロットではない。したがって、IO装置装着フラグ205は「10」という値である。
この状態は、図5のステップS507における「YES」を経て図5のステップS509における「YES」に相当する。
【0038】
次に、図9(e)には、第一IO接続部202aにIO装置104が接続され、図8(d)から所定の時間が経過した後の状態が図示されている。
加算器405はIOアドレスレジスタ307の値とIOデータ長格納部315の値を加算する。図8(d)の場合、加算器405は0x00AA+3ワード=0x00ADという値を出力する。
この処理は、図6のステップS610に相当する。
アドレス書き込み処理部404は、この値を第二IO接続部202bのスロットアドレスレジスタ204に書き込む。
この状態は、図6のステップS611に相当する。
【0039】
図9(f)には、IOメモリ空間S701が図示されている。
図8(a)から図9(e)迄の処理の流れを受けて、IOメモリ空間S701には、IOインデックス空間S702の0x00A2に「0x00AD」が書き込まれる。そして、IOデータ空間S703の0x00AAから0x00ACまでの3ワードは、第一IO接続部202aに接続されたIO装置104によって確保されたこととなる。したがって、第二IO接続部202bに接続されたIO装置104は、0x00ADからIOデータ空間S703の確保を行うこととなる。
【0040】
以上の動作によって、第一IO接続部202aに接続されるIO装置104aの入出力インターフェース308は、IOアドレス「0x00AA」から3ワードの範囲でアクセスが可能になる。
【0041】
再び図7を参照して、説明を続ける。
図7(a)では、第一IO接続部202a、第二IO接続部202b及び第三IO接続部202cが図示されている。そしてこれら三つのIO接続部には夫々IO装置104が接続されている。
第一IO接続部202aにはIOデータ長が3ワードのIO装置104aが接続されている。
第二IO接続部202bにはIOデータ長が2ワードのIO装置104bが接続されている。
第三IO接続部202cにはIOデータ長が4ワードのIO装置104cが接続されている。
【0042】
前述のように、第一IO接続部202aはROM等の不変値であるスロットアドレス格納部206を有する。このスロットアドレス格納部206は、IOインデックス空間S702の先頭位置である「0x00A1」というアドレスにマッピングされ、その中身はIOデータ空間S703の先頭位置である「0x00AA」というアドレスが格納されている。
これに対し、第二IO接続部202b以降のIO接続部は、RAM等の変動値であるスロットアドレスレジスタ204を有する。このスロットアドレスレジスタ204は、IOインデックス空間S702の二番目の位置である「0x00A2」というアドレス以降にマッピングされる。
【0043】
第一IO接続部202aにIOデータ長が3ワードのIO装置104を接続すると、IO装置装着フラグ205は「11」から「10」という値に変化する。つまり、IO装置104が第一IO接続部202aに接続されたことにより、IO装置装着フラグ205の最下位ビットが接地電位になる。そして、IOアドレスレジスタ307にはスロットアドレス格納部206の中身である「0x00AA」が複写される。この「0x00AA」とIOデータ長「3ワード」を足した「0x00AD」が、第二IO接続部202bのスロットアドレスレジスタ204に書き込まれる。
【0044】
第二IO接続部202bにIOデータ長が2ワードのIO装置104を接続すると、IO装置装着フラグ205は「11」から「10」という値に変化する。そして、IOアドレスレジスタ307にはスロットアドレス格納部206の中身である「0x00AD」が複写される。この「0x00AD」とIOデータ長「2ワード」を足した「0x00AF」が、第三IO接続部202cのスロットアドレスレジスタ204に書き込まれる。
【0045】
第三IO接続部202cにIOデータ長が4ワードのIO装置104を接続すると、IO装置装着フラグ205は「11」から「10」という値に変化する。そして、IOアドレスレジスタ307にはスロットアドレス格納部206の中身である「0x00AF」が複写される。この「0x00AF」とIOデータ長「4ワード」を足した「0x00B3」が、第三IO接続部202cの次に位置するIO接続部202のスロットアドレスレジスタ204に書き込まれる。
【0046】
以上、第一IO接続部202aから第三IO接続部202cの状態変化の結果、IOメモリ空間S701は図7(b)のようになる。IOインデックス空間S702にはIOデータ空間S703の先頭アドレスが書き込まれる。そして、IOデータ空間S703はIO装置104のスロット103の順番に、IO装置104のIOデータ長に等しいメモリ空間が割り当てられる。
【0047】
図10(a)、(b)、(c)及び(d)は、本実施形態の監視制御装置101における動的アドレスマッピング処理の流れを説明する概略図である。
本実施形態の監視制御装置101は、空きスロットを設けても動的アドレスマッピング処理が正常に遂行される。
今、図10(a)のように、第二IO接続部202bを空きスロットにして、第一IO接続部202aと第三IO接続部202cにIO装置104が接続されている状態を形成すると、IOメモリ空間S701は図10(b)のように、IOデータ空間S703は第二IO接続部202bの存在がなかったかのように、第一IO接続部202a及び第三IO接続部202cに接続されているIO装置104によって順番にメモリ空間が利用される。
【0048】
図10(a)の状態から、図10(c)のように、後から第二IO接続部202bにIO装置104を接続する。その際、IOメモリ空間S701の動的アドレスマッピングを促すために、第一IO接続部202aに接続されているIO装置104を一旦引き抜き、再び接続する。すると、IOメモリ空間S701は図10(d)のように、IOデータ空間S703は第一IO接続部202aのIO装置104に割り当てられているメモリ空間(3ワード)の後に第二IO接続部202bのIO装置104のためのメモリ空間(2ワード)を割り当てて、その後に第三IO接続部202cのIO装置104のためのメモリ空間(4ワード)を割り当てる。
【0049】
これまでの説明より明らかなように、本実施形態の監視制御装置101は、IO装置104が主体となって、IO接続部202に設けられているスロットアドレス(スロットアドレス格納部206又はスロットアドレスレジスタ204)とスロット番号(スロット番号格納部203)を手がかりに、動的にIOアドレスのマッピングを実行した(図5のステップS504)後、直近のスロット103に存在する他のIO装置104が同様な動的アドレスマッピング処理を遂行するための開始アドレスを当該IO接続部202のスロットアドレスレジスタ204に書き込む(図6のステップS612)。この処理に、CPU装置105は一切介在していない。
したがって、IO装置104が故障した際、監視制御装置101を停止させずに故障したIO装置104をIOケース102から抜き取り、新たなIO装置104を装着すれば、自動的に動的アドレスマッピングが実行されて、当該IO装置104が即座に利用可能になる。
【0050】
以上のように構成される監視制御装置101において、CPU装置105はスロット103に装着されているIO装置104に対し、IOインデックス空間S702のIO装置装着フラグ205を見る。そして、IO装置装着フラグ205が「10」となっている(IO装置104が装着されている)レコードのスロットアドレスレジスタ204又はスロットアドレス格納部206が示すスロットアドレスを読み取り、そのスロットアドレスでIOデータ空間S703にアクセスする。
【0051】
本実施形態では以下の応用例が可能である。
(1)IO装置104は、通常動作時においても、他のIO装置104が装着されている直近のIO接続部202のスロットアドレスレジスタ204を確認し、スロットアドレスが本来あるべき値とは異なる場合には、正しい値に書き込み直す処理を施しても良い。
【0052】
図11及び図12は、動的アドレスマッピング制御部313による動的アドレスマッピング処理の流れを示すフローチャートである。図11及び図12の処理のうち、図5及び図6と同じ処理内容の項目については、括弧書きでステップ番号を付している。
図11及び図12に開示する動的アドレスマッピング処理の、図5及び図6に開示した動的アドレスマッピング処理と異なる点は、以下の二点である。
【0053】
<a>ステップS1102(S502)で、アドレス一致判定部309がスロットアドレスとIOアドレスが一致しているか否かを判定した後、アドレスが一致していれば(S1102のNO)、何もせずに処理を終了するのではなく、動的アドレスマッピング処理のうちステップS1103(S504)にて実行する、アドレス複写処理部401によるスロットアドレスをIOアドレスレジスタ307へ複写する処理を行わずに、ステップS1104(S505)にてスロット番号格納部203に格納されているスロット番号を、スロット番号レジスタ314に複写する。
【0054】
<b>ステップS1209(S610)で、加算器405がIOアドレスとIOデータ長を加算した後、直ぐにステップS1211(S611)で算出したスロットアドレスをIO接続部202のスロットアドレスレジスタに書き込まず、予め算出したスロットアドレスと読み取ったスロットアドレスが一致しているか確認する(S1210)。確認の結果、算出したスロットアドレスと読み取ったスロットアドレスが一致していれば、何もせずに終了する(S1212)。
【0055】
以上のように、通常動作時においても他のIO装置104が装着されている直近のIO接続部202のスロットアドレスレジスタ204を確認することで、図10のような状況でも第一IO接続部202aに装着されているIO装置104を抜き差しせずに動的アドレスマッピング処理を遂行できる。
【0056】
(2)IO装置104の入出力制御部306が参照するIO装置104のアドレスは、IOアドレスレジスタ307の他に、IO接続部202のスロットアドレスレジスタ204を参照しても良い。
【0057】
(3)図3の有効アドレス判定部310及びANDゲート311は、IOアドレスレジスタ307の初期値がIOメモリ空間S701の範囲外である場合、なくてもよい。
【0058】
本実施形態では、監視制御装置101を開示した。
本実施形態の監視制御装置101は、IOケース102に形成される各々のスロット103に、IO接続部202を設ける。IO接続部202には、IO装置104が動的アドレスマッピング処理を行う際の、IOデータ空間S703の先頭アドレスが格納されるスロットアドレスレジスタ204と、IO装置104が装着されているか否かを知るためのIO装置装着フラグ205と、自分自身が装着されているスロットの番号を知るためのスロット番号格納部203が設けられている。
IO装置104は、スロット103に装着されてIO接続部202に接続されると、スロットアドレスレジスタ204とIO装置装着フラグ205とスロット番号格納部203にアクセスし、動的アドレスマッピング処理を実行する。そしてその後、バス201を通じて他のIO装置104が接続されている直近のIO接続部202を探索し、自身が確保したIOデータ空間S703の領域の直後のアドレスを、当該IO接続部202に接続されるIO装置104の、IOデータ空間S703における先頭アドレスとして、当該IO接続部202のスロットアドレスレジスタ204に書き込む。
【0059】
従来の監視制御装置は、IOデータ長が異なる種々のIO装置104を使用するに際して、IOデータ空間S703に対し、固定長でIOデータ空間S703の領域を確保していた。このため、IOデータ空間S703に利用されない無駄な領域が生じていた。
本実施形態の監視制御装置101では、前述のようにIO装置104が動作することで、IOデータ長が異なる種々のIO装置104を使用するに際して、IOデータ空間S703に対し、IO装置104のIOデータ長に合わせて領域を確保する。したがって、IOデータ空間S703、ひいてはIOメモリ空間S701を無駄なく効率的に利用することが可能になる。
CPU装置105が一切介在することなく、IO装置104が主体となって動的アドレスマッピング処理を遂行するので、CPU装置105の処理が全く増加せずに済むだけでなく、活線挿抜にも対応できる。
【0060】
以上、本発明の実施形態例について説明したが、本発明は上記実施形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含む。
【符号の説明】
【0061】
101…監視制御装置、102…IOケース、103…スロット、104…IO装置、105…CPU装置、201…バス、202…IO接続部、203…スロット番号格納部、204…スロットアドレスレジスタ、205…IO装置装着フラグ、206…スロットアドレス格納部、207…最終フラグ格納部、301…入出力制御部、302…インデックスアドレス格納部、306…入出力制御部、307…IOアドレスレジスタ、308…入出力インターフェース、309…アドレス一致判定部、310…有効アドレス判定部、311…ANDゲート、312…NOTゲート、313…動的アドレスマッピング制御部、314…スロット番号レジスタ、315…IOデータ長格納部、401…アドレス複写処理部、402…スロット番号複写処理部、403…IO装置探索部、404…アドレス書き込み処理部、405…加算器
【技術分野】
【0001】
本発明は、制御装置に関する。
より詳細には、メモリマップドIOを採用する監視制御装置において、CPU装置が能動的に動作することなく、入出力装置自身が入出力装置を動的にアドレスマッピング処理を行うことのできる、監視制御装置に関する。
【背景技術】
【0002】
監視制御装置は、プラントや発電所等、大規模な設備の監視や制御に必要不可欠である。監視制御装置はその適用分野の性質上、柔軟な拡張性と堅牢さと可用性を高いレベルで求められる。拡張性の点においては、入出力装置(以下「IO装置」)とCPU装置の機械形状を同一化して、IOケースへ容易に装着できる仕様になっている。
その一方で、監視制御装置の業界では、適用分野が様々な業態に広がる傾向に起因して、多くの生産者が参入しており、このためにコスト競争にも晒されつつある。
しかしながら、前述のように監視制御装置は高い信頼性が求められるので、コスト競争に対しては高価な電子デバイスを有効利用する、という方法で解決することが殆どである。安易に安価な部品を採用することで信頼性を損ねてしまってはならない。
【0003】
また、前述の可用性については、監視制御装置に活線挿抜が実現できれば理想的である。
なお、本発明に関係すると思われる先行技術文献を特許文献1に示す。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平9−188249号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来の監視制御装置は、活線挿抜には対応しておらず、IOケースからIO装置を挿抜する場合には、一旦監視制御装置自身を停止処理させる必要があった。また、IO装置はその種類に応じて様々なIOデータ長を備えているが、従来の監視制御装置では全てのIO装置のIOメモリ専有幅を同一化していたため、メモリマップドIOの利用効率が必ずしも良くなかった。
【0006】
本発明はかかる課題を解決し、IOメモリ空間の利用効率を良好にすると共に、活線挿抜にも対応し、更には低負荷でIO装置の挿抜が実現できる、制御装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明の制御装置は、IOデータ空間と、IOデータ空間に存在する領域の先頭アドレスを格納するIOインデックス空間とを有するIOメモリ空間にアクセス可能なバスと、バスに接続される周辺装置が収納される複数のスロットとを有するIOケースと、バスに接続され、IOインデックス空間にマッピングされ、IOデータ空間の先頭アドレスが記憶され得るスロットアドレスレジスタと、バスに接続され、IOインデックス空間にマッピングされ、周辺装置が接続されているか否かを検出する周辺装置装着フラグと、IOケースにおける配置位置を示すスロット番号が格納されているスロット番号格納部とを有し、複数のスロットに夫々内蔵される複数のIO接続部と、バスにIO接続部を通じて接続され、IOデータ空間にマッピングされ得る入出力インターフェースと、入出力インターフェースのIOデータ空間上の先頭アドレスが記憶され得るIOアドレスレジスタと、スロットアドレスレジスタとIOアドレスレジスタとの一致を判定するアドレス一致判定部と、スロット番号格納部からスロット番号が記憶され得るスロット番号レジスタと、入出力インターフェースのIOデータ長が格納されるIOデータ長格納部と、アドレス一致判定部がスロットアドレスレジスタとIOアドレスレジスタとの不一致を判定することに呼応して起動し、スロットアドレスレジスタに記憶されているスロットアドレスをIOアドレスレジスタに複写して、スロット番号レジスタの値をインクリメントしながらバスを通じてスロット番号レジスタが指し示す他の周辺装置が接続されている直近のIO接続部を探索し、探索したIO接続部のスロットアドレスレジスタに、複写したスロットアドレスとIOデータ長を加算した算出アドレスを書き込む動的アドレスマッピング処理部とを有する、周辺装置である入出力装置とを具備する。
【0008】
入出力装置が主体となって、IO接続部に設けられているスロットアドレスレジスタとスロット番号格納部を手がかりに、動的にIOアドレスのマッピングを実行した後、直近のスロットに存在する他の入出力装置が同様な動的アドレスマッピング処理を遂行するための開始アドレスを、当該IO接続部のスロットアドレスレジスタに書き込む。
【発明の効果】
【0009】
本発明により、IOメモリ空間の利用効率を良好にすると共に、活線挿抜にも対応し、更には低負荷でIO装置の挿抜が実現できる、制御装置を提供できる。
【図面の簡単な説明】
【0010】
【図1】本発明の一実施形態である監視制御装置の外観斜視図である。
【図2】監視制御装置の概略を表すブロック図である。
【図3】IO接続部とIO装置の機能ブロック図である。
【図4】動的アドレスマッピング制御部の内部構成を示す機能ブロック図である。
【図5】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【図6】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【図7】IO接続部とIO装置とIOメモリ空間の関係を示す概略図である。
【図8】本実施形態の監視制御装置における動的アドレスマッピング処理の流れを説明する概略図である。
【図9】本実施形態の監視制御装置における動的アドレスマッピング処理の流れを説明する概略図である。
【図10】本実施形態の監視制御装置における動的アドレスマッピング処理の流れを説明する概略図である。
【図11】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【図12】動的アドレスマッピング制御部による動的アドレスマッピング処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0011】
[外観]
図1は、本発明の一実施形態である監視制御装置の外観斜視図である。
監視制御装置101は、IOケース102のスロット103に一つ以上のIO装置104と一つのCPU装置105が装着されることで構成される。IOケース102にとって周辺装置ともいえるIO装置104及びCPU装置105は、IOケース102のどのスロット103にも装着できるように、共通の大きさと形状を有する。
【0012】
[内部構成]
図2は、監視制御装置101の概略を表すブロック図である。
IOケース102の内側には、バス201と、スロット毎に第一IO接続部202a、第二IO接続部202b、第三IO接続部202c、第(n−1)IO接続部202m及び第nIO接続部202nが設けられている。そして、IO装置104やCPU装置105はこれらのIO接続部に接続される。
第一IO接続部202a乃至第nIO接続部202nには、各々のスロット103の位置を識別するためのスロット番号が書換不可能に格納されているスロット番号格納部203と、各々のスロット103に接続されるIO装置104のIOアドレスが格納されるスロットアドレスレジスタ204と、IO装置104が装着されているか否かを識別するための周辺装置装着フラグともいえるIO装置装着フラグ205が設けられている。
【0013】
IO装置装着フラグ205は2ビットのフラグ変数であり、抵抗を伴って論理電圧にプルアップされた論理配線と図示しないコネクタで構成される。IO装置104がコネクタに接続されると、IO装置104側のグランドが接触することで、当該論理配線の電圧が論理電圧から0Vに降下する。
このIO装置装着フラグ205は、下位1ビットがIO装置104の有無を示すフラグであり、上位1ビットがIO接続部202の有無を示すフラグである。
IO装置装着フラグ205の値が「11」であれば、当該IO接続部202にはIO装置104が装着されていないことを表す。
IO装置装着フラグ205の値が「10」であれば、当該IO接続部202にはIO装置104が装着されていることを表す。
IO装置装着フラグ205の値が「00」であれば、当該IO接続部202以降にIO接続部202は存在しないことを表す。
【0014】
但し、第一IO接続部202aにはスロットアドレスレジスタ204の代わりに、固定値のアドレスが格納されるスロットアドレス格納部206が設けられている。
また、最後のIO接続部である第nIO接続部202nにはスロットアドレスレジスタ204が二つ設けられており、更にスロットアドレスレジスタ204に加えて「このスロットは最後である」という意味を示す固定値が格納される最終フラグ格納部207が設けられている。この最終フラグ格納部207が、値が「00」のIO装置装着フラグ205である。
IO接続部にはこの他にも種々の機能ブロックが存在するが、詳細は図3にて後述する。
【0015】
バス201は一般的なパラレルバスの他、シリアルバスでも良い。このバス201に求められる条件は、IOメモリ空間を有することである。つまり、バス201に接続されるIO装置104、IO接続部及びCPU装置105から一つを選択するために、アドレスを指定することができる必要がある。
【0016】
なお、これ以降、「格納部」と記す名称は固定値を格納する機能ブロックである。ROMやサムロータリスイッチ、或は配線等により固定値を形成する。そして、「レジスタ」と記す名称は可変値を記憶する機能ブロックである。RAMやレジスタ等により可変値を記憶する。
【0017】
図3は、IO接続部202とIO装置104の機能ブロック図である。
IO接続部202には、入出力制御部301がバス201に接続されている。入出力制御部301は、インデックスアドレス格納部302に格納されているインデックスアドレスが、バス201に接続されている他の機器から指定されたアドレスと一致していたら、入出力制御部301に接続されているスロットアドレスレジスタ204に対するアクセスを許可する。つまり、インデックスアドレス格納部302に格納されているインデックスアドレスは、スロットアドレスレジスタ204のIOメモリ空間内におけるアドレスである。したがって、インデックスアドレス格納部302に格納されているインデックスアドレスは、IO接続部202毎にユニークである(一意性を有する)。
【0018】
IO接続部202にはこの他に、スロット番号格納部203が存在する。前述のように、スロット番号格納部203に格納されている値は、スロット103に付されている番号である。スロット番号は1から始まり、IOケース102に設けられているスロット103の最大数が最大値である。
【0019】
IO接続部202には、IO装置104との間にバス201との接続点P303と、スロットアドレスレジスタ204との接続点P304と、スロット番号格納部203との接続点P305を有する。つまり、IO装置104はバス201に接続される他、IO接続部202のスロットアドレスレジスタ204及びスロット番号格納部203と直接接続される。
なお、詳細は後述するが、IO装置104は必ずしもスロットアドレスレジスタ204と直接接続されていなくても良い。但し、IO装置104がスロット番号格納部203内のスロット番号を直接読み取ることができるように、IO装置104とスロット番号格納部203とは直接接続されていなければならない。
【0020】
IO装置104にも、入出力制御部306がバス201に接続されている。入出力制御部306は、IOアドレスレジスタ307に格納されているIOアドレスが、バス201に接続されている他の機器から指定されたアドレスと一致していたら、入出力制御部306に接続されている入出力インターフェース308に対するアクセスを許可する。つまり、IOアドレスレジスタ307に格納されているIOアドレスは、入出力インターフェース308、ひいてはIO装置104自体のIOメモリ空間内におけるアドレスである。したがって、IOアドレスレジスタ307に格納されているIOアドレスは、IO装置104毎にユニークでなければならない。
【0021】
IO接続部202のスロットアドレスレジスタ204と、IO装置104のIOアドレスレジスタ307との間には、アドレス一致判定部309が接続されている。アドレス一致判定部309は双方のアドレスが等しい場合に論理の「真」を出力する。一方、有効アドレス判定部310はIOアドレスの値の有効性、つまりIOメモリ空間内に存在するか否かを判定し、有効であれば論理の「真」を出力する。
アドレス一致判定部309の論理出力と有効アドレス判定部310の論理出力はANDゲート311に入力される。ANDゲート311は、「スロットアドレスレジスタ204の値(以下「スロットアドレス」)とIOアドレス(IOアドレスレジスタ307の値)が一致していて、且つIOアドレスが有効な値である場合」に論理の「真」を出力する。つまり、ANDゲート311の出力が「真」の時は、通常の動作状態を意味する。入出力制御部306は、ANDゲート311の出力が論理の「真」である場合に、バス201と入出力インターフェース308との接続を許可する。
【0022】
一方、アドレス一致判定部309の論理出力はNOTゲート312を介して動的アドレスマッピング制御部313に供給される。NOTゲート312の出力信号は、IO接続部202のスロットアドレスレジスタ204と、IO装置104のIOアドレスレジスタ307とのアドレスが異なる場合に論理の「真」を出力する。そして、この信号が動的アドレスマッピング制御部313の起動トリガとなる。
【0023】
動的アドレスマッピング制御部313は、本実施形態の監視制御装置101における、IOメモリ空間内におけるIO装置104の動的アドレスマッピング処理を遂行する。このために、スロット番号格納部203と、スロットアドレスレジスタ204と、IOアドレスレジスタ307と、スロット番号レジスタ314と、IOデータ長格納部315が動的アドレスマッピング制御部313に接続される。
【0024】
スロット番号レジスタ314は、IO装置104に最も近い他のIO装置104の存在を検出するためのレジスタである。最初に動的アドレスマッピング制御部313によってスロット番号格納部203内のスロット番号が複写され、その後、IO装置104が装着されている直近のスロット103のIO接続部202を見つけるまでインクリメントされる。
IOデータ長格納部315は、IO装置104固有のデータ長を示す情報がワード単位にて格納される。
【0025】
図4は、動的アドレスマッピング制御部313の内部構成を示す機能ブロック図である。
NOTゲート312の出力信号は、動的アドレスマッピング制御部313の起動トリガとしてアドレス複写処理部401に入力される。
アドレス複写処理部401は、起動トリガを受信するとスロットアドレスレジスタ204に記憶されているスロットアドレスをIOアドレスレジスタ307に複写する。そして、複写処理が完遂したら、トリガ信号をスロット番号複写処理部402に出力する。
スロット番号複写処理部402は、トリガ信号を受けると、スロット番号格納部203に格納されているスロット番号を、スロット番号レジスタ314に複写する。そして、複写処理が完遂したら、トリガ信号をIO装置探索部403に出力する。
【0026】
IO装置探索部403は、トリガ信号を受けると、スロット番号レジスタ314に格納されているスロット番号をインクリメントした後、バス201を通じてスロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するIO装置装着フラグ205を読みに行き、当該IO接続部202にIO装置104が装着されているか否かを確認する。
もし、IO装置104が装着されていれば、トリガ信号をアドレス書き込み処理部404に出力する。
もし、IO装置104が装着されていなければ、スロット番号レジスタ314に格納されているスロット番号をインクリメントした後、再びバス201を通じてスロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するIO装置装着フラグ205を読みに行き、当該IO接続部202にIO装置104が装着されているか否かを確認する。
【0027】
アドレス書き込み処理部404は、トリガ信号を受けると、スロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するスロットアドレスレジスタ204に、加算器405が出力する算出アドレスを書き込む。加算器405にはIOアドレスレジスタ307とIOデータ長格納部315が接続されており、加算器405はIOアドレスとIOデータ長を加算する。
【0028】
[動作]
図5及び図6は、動的アドレスマッピング制御部313による動的アドレスマッピング処理の流れを示すフローチャートである。
処理を開始すると(S501)、先ずアドレス一致判定部309はスロットアドレスとIOアドレスが一致しているか否かを判定する(S502)。アドレスが一致していれば(S502のNO)、何もせずに処理を終了する(S503)。そして、所定の時間が経過した後、再びステップS501から処理が繰り返される。所定の時間とは、例えば0.2乃至0.5秒程度の期間である。
【0029】
ステップS502において、アドレス一致判定部309はスロットアドレスとIOアドレスが一致していないと判定したら(S502のYES)、アドレス一致判定部309の出力するトリガ信号がアドレス複写処理部401を駆動する。アドレス複写処理部401はスロットアドレスをIOアドレスレジスタ307に複写する(S504)。そして、複写処理が完遂したら、アドレス複写処理部401はトリガ信号をスロット番号複写処理部402に出力する。
スロット番号複写処理部402は、アドレス複写処理部401からトリガ信号を受けると、スロット番号格納部203に格納されているスロット番号を、スロット番号レジスタ314に複写する(S505)。そして、複写処理が完遂したら、トリガ信号をIO装置探索部403に出力する。
【0030】
これ以降はループである。
IO装置探索部403は、スロット番号複写処理部402からトリガ信号を受けると、先ずスロット番号レジスタ314に格納されているスロット番号をインクリメントする(S506)。次に、バス201を通じてスロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するIO装置装着フラグ205を読みに行き、当該IO接続部202は最後のスロットであるか否かを確認する(S507)。もし最後のスロットであれば(S507のYES)、一連の処理を終了する(S508)。そして、ステップS503と同様、所定の時間が経過した後、再びステップS501から処理が繰り返される。
ステップS507において、最後のスロットでなければ(S507のNO)、IO装置探索部403は次に当該IO接続部202にIO装置104が装着されているか否かを確認する(S509)。当該IO接続部202にIO装置104が装着されていなければ(S509のNO)、ステップS506から再び処理を繰り返す。
【0031】
図6を参照して説明を続ける。
ステップS509において、当該IO接続部202にIO装置104が装着されていれば(S509のYES)、加算器405はIOアドレスとIOデータ長を加算する(S610)。そして、アドレス書き込み処理部404は、IO装置探索部403からトリガ信号を受けると、スロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するスロットアドレスレジスタ204に、加算器405の出力データを書き込み(S611)、一連の処理を終了する(S612)。
【0032】
以上、図1乃至図4にて説明した監視制御装置101の内部構成と、図5及び図6にて説明した監視制御装置101の動作を踏まえて、本実施形態の監視制御装置101が具体的にどのような振る舞いをするのかを、これより説明する。
図7(a)及び(b)は、IO接続部202とIO装置104とIOメモリ空間の関係を示す概略図である。
図7(a)は、IO接続部202にIO装置104が接続されている状態を示す概略図である。
図7(b)は、IOメモリ空間を示す概略図である。
一例として、本実施形態の監視制御装置101は、IOメモリ空間S701として0x00A1〜0x02FF迄のアドレス範囲を有する。このうちIOインデックス空間S702は0x00A1〜0x00A9迄のアドレス範囲を有し、IOデータ空間S703は0x00AA〜0x002F迄のアドレス範囲を有する。
また、本実施形態の監視制御装置101は1ワードを32ビットとし、IOメモリ空間S701のアドレスは16ビットで指定されるものとする。
なお、図7の詳細な説明は後述する。
【0033】
図8(a)、(b)、(c)及び(d)と、図9(e)及び(f)は、本実施形態の監視制御装置101における動的アドレスマッピング処理の流れを説明する概略図である。
先ず、図8(a)には、第一IO接続部202aにIO装置104が接続された瞬間の状態が図示されている。
IO装置104は第一IO接続部202aに接続されると、第一IO接続部202aに設けられている図示しない電源ラインを通じて電源の供給を受ける。そして、IOアドレスレジスタ307を「未値」であることを示す「0xFFFF」に初期化する。なお、IOケース102のスロット103に内蔵されているIO接続部202のスロットアドレスレジスタ204も同様に、電源投入直後は「未値」であることを示す「0xFFFF」に初期化される。
次に、アドレス一致判定部309はスロットアドレスとIOアドレスが一致しているか否か、判定する。この時点で、スロットアドレス格納部206は不変の「0x00AA」というアドレスを格納している。片や比較対象となるIOアドレスは初期値の0xFFFFである。つまり、スロットアドレスとIOアドレスは不一致である。この結果、アドレス一致判定部309はスロットアドレスとIOアドレスが不一致であることを示す信号を出力する。
この状態は、図5のステップS502における「YES」に相当する。
【0034】
次に、図8(b)には、第一IO接続部202aにIO装置104が接続され、図8(a)から所定の時間が経過した後の状態が図示されている。
アドレス複写処理部401はスロットアドレスをIOアドレスレジスタ307に複写する。すると、IOアドレスレジスタ307にはアドレス複写処理部401によって、スロットアドレス格納部206に格納されている「0x00AA」が書き込まれる。
この状態は、図5のステップS504に相当する。
【0035】
次に、図8(c)には、第一IO接続部202aにIO装置104が接続され、図8(b)から所定の時間が経過した後の状態が図示されている。
スロット番号複写処理部402は、スロット番号格納部203に格納されているスロット番号を、スロット番号レジスタ314に複写する。すると、スロット番号レジスタ314にはスロット番号複写処理部402によって、スロット番号格納部203に格納されている「1」が書き込まれる。
この状態は、図5のステップS505に相当する。
【0036】
次に、図8(d)には、第一IO接続部202aにIO装置104が接続され、図8(c)から所定の時間が経過した後の状態が図示されている。
IO装置探索部403は、先ずスロット番号レジスタ314に格納されているスロット番号をインクリメントする。すると、スロット番号レジスタ314に書き込まれた「1」という値は、IO装置探索部403によって「2」にインクリメントされる。
この処理は、図5のステップS506に相当する。
【0037】
次に、IO装置探索部403はバス201を通じて、スロット番号レジスタ314に格納されているスロット番号のIO接続部202に存在するIO装置装着フラグ205を読みに行き、当該IO接続部202は最後のスロットであるか否かを確認する。図8(d)の場合では、スロット番号レジスタ314には「2」が記憶されているので、2番目のIO接続部202、すなわち第二IO接続部202bのIO装置装着フラグ205を読みに行く。IOインデックス空間S702のアドレスデータは32ビットの固定長なので、第一IO接続部202aのスロットアドレス格納部206のアドレスである「0x00A1」に「1」を加算した「0x00A2」が、第二IO接続部202bのスロットアドレスレジスタ204及びIO装置装着フラグ205のアドレスである。
第二IO接続部202bにはIO装置104が接続されており、また第二IO接続部202bは最終スロットではない。したがって、IO装置装着フラグ205は「10」という値である。
この状態は、図5のステップS507における「YES」を経て図5のステップS509における「YES」に相当する。
【0038】
次に、図9(e)には、第一IO接続部202aにIO装置104が接続され、図8(d)から所定の時間が経過した後の状態が図示されている。
加算器405はIOアドレスレジスタ307の値とIOデータ長格納部315の値を加算する。図8(d)の場合、加算器405は0x00AA+3ワード=0x00ADという値を出力する。
この処理は、図6のステップS610に相当する。
アドレス書き込み処理部404は、この値を第二IO接続部202bのスロットアドレスレジスタ204に書き込む。
この状態は、図6のステップS611に相当する。
【0039】
図9(f)には、IOメモリ空間S701が図示されている。
図8(a)から図9(e)迄の処理の流れを受けて、IOメモリ空間S701には、IOインデックス空間S702の0x00A2に「0x00AD」が書き込まれる。そして、IOデータ空間S703の0x00AAから0x00ACまでの3ワードは、第一IO接続部202aに接続されたIO装置104によって確保されたこととなる。したがって、第二IO接続部202bに接続されたIO装置104は、0x00ADからIOデータ空間S703の確保を行うこととなる。
【0040】
以上の動作によって、第一IO接続部202aに接続されるIO装置104aの入出力インターフェース308は、IOアドレス「0x00AA」から3ワードの範囲でアクセスが可能になる。
【0041】
再び図7を参照して、説明を続ける。
図7(a)では、第一IO接続部202a、第二IO接続部202b及び第三IO接続部202cが図示されている。そしてこれら三つのIO接続部には夫々IO装置104が接続されている。
第一IO接続部202aにはIOデータ長が3ワードのIO装置104aが接続されている。
第二IO接続部202bにはIOデータ長が2ワードのIO装置104bが接続されている。
第三IO接続部202cにはIOデータ長が4ワードのIO装置104cが接続されている。
【0042】
前述のように、第一IO接続部202aはROM等の不変値であるスロットアドレス格納部206を有する。このスロットアドレス格納部206は、IOインデックス空間S702の先頭位置である「0x00A1」というアドレスにマッピングされ、その中身はIOデータ空間S703の先頭位置である「0x00AA」というアドレスが格納されている。
これに対し、第二IO接続部202b以降のIO接続部は、RAM等の変動値であるスロットアドレスレジスタ204を有する。このスロットアドレスレジスタ204は、IOインデックス空間S702の二番目の位置である「0x00A2」というアドレス以降にマッピングされる。
【0043】
第一IO接続部202aにIOデータ長が3ワードのIO装置104を接続すると、IO装置装着フラグ205は「11」から「10」という値に変化する。つまり、IO装置104が第一IO接続部202aに接続されたことにより、IO装置装着フラグ205の最下位ビットが接地電位になる。そして、IOアドレスレジスタ307にはスロットアドレス格納部206の中身である「0x00AA」が複写される。この「0x00AA」とIOデータ長「3ワード」を足した「0x00AD」が、第二IO接続部202bのスロットアドレスレジスタ204に書き込まれる。
【0044】
第二IO接続部202bにIOデータ長が2ワードのIO装置104を接続すると、IO装置装着フラグ205は「11」から「10」という値に変化する。そして、IOアドレスレジスタ307にはスロットアドレス格納部206の中身である「0x00AD」が複写される。この「0x00AD」とIOデータ長「2ワード」を足した「0x00AF」が、第三IO接続部202cのスロットアドレスレジスタ204に書き込まれる。
【0045】
第三IO接続部202cにIOデータ長が4ワードのIO装置104を接続すると、IO装置装着フラグ205は「11」から「10」という値に変化する。そして、IOアドレスレジスタ307にはスロットアドレス格納部206の中身である「0x00AF」が複写される。この「0x00AF」とIOデータ長「4ワード」を足した「0x00B3」が、第三IO接続部202cの次に位置するIO接続部202のスロットアドレスレジスタ204に書き込まれる。
【0046】
以上、第一IO接続部202aから第三IO接続部202cの状態変化の結果、IOメモリ空間S701は図7(b)のようになる。IOインデックス空間S702にはIOデータ空間S703の先頭アドレスが書き込まれる。そして、IOデータ空間S703はIO装置104のスロット103の順番に、IO装置104のIOデータ長に等しいメモリ空間が割り当てられる。
【0047】
図10(a)、(b)、(c)及び(d)は、本実施形態の監視制御装置101における動的アドレスマッピング処理の流れを説明する概略図である。
本実施形態の監視制御装置101は、空きスロットを設けても動的アドレスマッピング処理が正常に遂行される。
今、図10(a)のように、第二IO接続部202bを空きスロットにして、第一IO接続部202aと第三IO接続部202cにIO装置104が接続されている状態を形成すると、IOメモリ空間S701は図10(b)のように、IOデータ空間S703は第二IO接続部202bの存在がなかったかのように、第一IO接続部202a及び第三IO接続部202cに接続されているIO装置104によって順番にメモリ空間が利用される。
【0048】
図10(a)の状態から、図10(c)のように、後から第二IO接続部202bにIO装置104を接続する。その際、IOメモリ空間S701の動的アドレスマッピングを促すために、第一IO接続部202aに接続されているIO装置104を一旦引き抜き、再び接続する。すると、IOメモリ空間S701は図10(d)のように、IOデータ空間S703は第一IO接続部202aのIO装置104に割り当てられているメモリ空間(3ワード)の後に第二IO接続部202bのIO装置104のためのメモリ空間(2ワード)を割り当てて、その後に第三IO接続部202cのIO装置104のためのメモリ空間(4ワード)を割り当てる。
【0049】
これまでの説明より明らかなように、本実施形態の監視制御装置101は、IO装置104が主体となって、IO接続部202に設けられているスロットアドレス(スロットアドレス格納部206又はスロットアドレスレジスタ204)とスロット番号(スロット番号格納部203)を手がかりに、動的にIOアドレスのマッピングを実行した(図5のステップS504)後、直近のスロット103に存在する他のIO装置104が同様な動的アドレスマッピング処理を遂行するための開始アドレスを当該IO接続部202のスロットアドレスレジスタ204に書き込む(図6のステップS612)。この処理に、CPU装置105は一切介在していない。
したがって、IO装置104が故障した際、監視制御装置101を停止させずに故障したIO装置104をIOケース102から抜き取り、新たなIO装置104を装着すれば、自動的に動的アドレスマッピングが実行されて、当該IO装置104が即座に利用可能になる。
【0050】
以上のように構成される監視制御装置101において、CPU装置105はスロット103に装着されているIO装置104に対し、IOインデックス空間S702のIO装置装着フラグ205を見る。そして、IO装置装着フラグ205が「10」となっている(IO装置104が装着されている)レコードのスロットアドレスレジスタ204又はスロットアドレス格納部206が示すスロットアドレスを読み取り、そのスロットアドレスでIOデータ空間S703にアクセスする。
【0051】
本実施形態では以下の応用例が可能である。
(1)IO装置104は、通常動作時においても、他のIO装置104が装着されている直近のIO接続部202のスロットアドレスレジスタ204を確認し、スロットアドレスが本来あるべき値とは異なる場合には、正しい値に書き込み直す処理を施しても良い。
【0052】
図11及び図12は、動的アドレスマッピング制御部313による動的アドレスマッピング処理の流れを示すフローチャートである。図11及び図12の処理のうち、図5及び図6と同じ処理内容の項目については、括弧書きでステップ番号を付している。
図11及び図12に開示する動的アドレスマッピング処理の、図5及び図6に開示した動的アドレスマッピング処理と異なる点は、以下の二点である。
【0053】
<a>ステップS1102(S502)で、アドレス一致判定部309がスロットアドレスとIOアドレスが一致しているか否かを判定した後、アドレスが一致していれば(S1102のNO)、何もせずに処理を終了するのではなく、動的アドレスマッピング処理のうちステップS1103(S504)にて実行する、アドレス複写処理部401によるスロットアドレスをIOアドレスレジスタ307へ複写する処理を行わずに、ステップS1104(S505)にてスロット番号格納部203に格納されているスロット番号を、スロット番号レジスタ314に複写する。
【0054】
<b>ステップS1209(S610)で、加算器405がIOアドレスとIOデータ長を加算した後、直ぐにステップS1211(S611)で算出したスロットアドレスをIO接続部202のスロットアドレスレジスタに書き込まず、予め算出したスロットアドレスと読み取ったスロットアドレスが一致しているか確認する(S1210)。確認の結果、算出したスロットアドレスと読み取ったスロットアドレスが一致していれば、何もせずに終了する(S1212)。
【0055】
以上のように、通常動作時においても他のIO装置104が装着されている直近のIO接続部202のスロットアドレスレジスタ204を確認することで、図10のような状況でも第一IO接続部202aに装着されているIO装置104を抜き差しせずに動的アドレスマッピング処理を遂行できる。
【0056】
(2)IO装置104の入出力制御部306が参照するIO装置104のアドレスは、IOアドレスレジスタ307の他に、IO接続部202のスロットアドレスレジスタ204を参照しても良い。
【0057】
(3)図3の有効アドレス判定部310及びANDゲート311は、IOアドレスレジスタ307の初期値がIOメモリ空間S701の範囲外である場合、なくてもよい。
【0058】
本実施形態では、監視制御装置101を開示した。
本実施形態の監視制御装置101は、IOケース102に形成される各々のスロット103に、IO接続部202を設ける。IO接続部202には、IO装置104が動的アドレスマッピング処理を行う際の、IOデータ空間S703の先頭アドレスが格納されるスロットアドレスレジスタ204と、IO装置104が装着されているか否かを知るためのIO装置装着フラグ205と、自分自身が装着されているスロットの番号を知るためのスロット番号格納部203が設けられている。
IO装置104は、スロット103に装着されてIO接続部202に接続されると、スロットアドレスレジスタ204とIO装置装着フラグ205とスロット番号格納部203にアクセスし、動的アドレスマッピング処理を実行する。そしてその後、バス201を通じて他のIO装置104が接続されている直近のIO接続部202を探索し、自身が確保したIOデータ空間S703の領域の直後のアドレスを、当該IO接続部202に接続されるIO装置104の、IOデータ空間S703における先頭アドレスとして、当該IO接続部202のスロットアドレスレジスタ204に書き込む。
【0059】
従来の監視制御装置は、IOデータ長が異なる種々のIO装置104を使用するに際して、IOデータ空間S703に対し、固定長でIOデータ空間S703の領域を確保していた。このため、IOデータ空間S703に利用されない無駄な領域が生じていた。
本実施形態の監視制御装置101では、前述のようにIO装置104が動作することで、IOデータ長が異なる種々のIO装置104を使用するに際して、IOデータ空間S703に対し、IO装置104のIOデータ長に合わせて領域を確保する。したがって、IOデータ空間S703、ひいてはIOメモリ空間S701を無駄なく効率的に利用することが可能になる。
CPU装置105が一切介在することなく、IO装置104が主体となって動的アドレスマッピング処理を遂行するので、CPU装置105の処理が全く増加せずに済むだけでなく、活線挿抜にも対応できる。
【0060】
以上、本発明の実施形態例について説明したが、本発明は上記実施形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含む。
【符号の説明】
【0061】
101…監視制御装置、102…IOケース、103…スロット、104…IO装置、105…CPU装置、201…バス、202…IO接続部、203…スロット番号格納部、204…スロットアドレスレジスタ、205…IO装置装着フラグ、206…スロットアドレス格納部、207…最終フラグ格納部、301…入出力制御部、302…インデックスアドレス格納部、306…入出力制御部、307…IOアドレスレジスタ、308…入出力インターフェース、309…アドレス一致判定部、310…有効アドレス判定部、311…ANDゲート、312…NOTゲート、313…動的アドレスマッピング制御部、314…スロット番号レジスタ、315…IOデータ長格納部、401…アドレス複写処理部、402…スロット番号複写処理部、403…IO装置探索部、404…アドレス書き込み処理部、405…加算器
【特許請求の範囲】
【請求項1】
IOデータ空間と、前記IOデータ空間に存在する領域の先頭アドレスを格納するIOインデックス空間とを有するIOメモリ空間にアクセス可能なバスと、
前記バスに接続される周辺装置が収納される複数のスロットと
を有するIOケースと、
前記バスに接続され、前記IOインデックス空間にマッピングされ、前記IOデータ空間の先頭アドレスが記憶され得るスロットアドレスレジスタと、
前記バスに接続され、前記IOインデックス空間にマッピングされ、前記周辺装置が接続されているか否かを検出する周辺装置装着フラグと、
前記IOケースにおける配置位置を示すスロット番号が格納されているスロット番号格納部と
を有し、前記複数のスロットに夫々内蔵される複数のIO接続部と、
前記バスに前記IO接続部を通じて接続され、前記IOデータ空間にマッピングされ得る入出力インターフェースと、
前記入出力インターフェースの前記IOデータ空間上の先頭アドレスが記憶され得るIOアドレスレジスタと、
前記スロットアドレスレジスタと前記IOアドレスレジスタとの一致を判定するアドレス一致判定部と、
前記スロット番号格納部から前記スロット番号が記憶され得るスロット番号レジスタと、
前記入出力インターフェースのIOデータ長が格納されるIOデータ長格納部と、
前記アドレス一致判定部が前記スロットアドレスレジスタと前記IOアドレスレジスタとの不一致を判定することに呼応して起動し、前記スロットアドレスレジスタに記憶されているスロットアドレスを前記IOアドレスレジスタに複写して、前記スロット番号レジスタの値をインクリメントしながら前記バスを通じて前記スロット番号レジスタが指し示す他の周辺装置が接続されている直近のIO接続部を探索し、探索した前記IO接続部の前記スロットアドレスレジスタに、前記複写した前記スロットアドレスと前記IOデータ長を加算した算出アドレスを書き込む動的アドレスマッピング処理部と
を有する、前記周辺装置である入出力装置と
を具備する制御装置。
【請求項2】
更に、前記IOケースの第一番目のスロットには、前記スロットアドレスレジスタに代えて前記IOデータ空間の先頭アドレスが格納されているスロットアドレス格納部を有する第一IO接続部が内蔵される、請求項1記載の制御装置。
【請求項3】
更に、前記IOケースには、前記周辺装置装着フラグに代えて前記スロットの最終位置を示す最終フラグ格納部を有する最終位置の前記IO接続部が内蔵される、請求項2記載の制御装置。
【請求項1】
IOデータ空間と、前記IOデータ空間に存在する領域の先頭アドレスを格納するIOインデックス空間とを有するIOメモリ空間にアクセス可能なバスと、
前記バスに接続される周辺装置が収納される複数のスロットと
を有するIOケースと、
前記バスに接続され、前記IOインデックス空間にマッピングされ、前記IOデータ空間の先頭アドレスが記憶され得るスロットアドレスレジスタと、
前記バスに接続され、前記IOインデックス空間にマッピングされ、前記周辺装置が接続されているか否かを検出する周辺装置装着フラグと、
前記IOケースにおける配置位置を示すスロット番号が格納されているスロット番号格納部と
を有し、前記複数のスロットに夫々内蔵される複数のIO接続部と、
前記バスに前記IO接続部を通じて接続され、前記IOデータ空間にマッピングされ得る入出力インターフェースと、
前記入出力インターフェースの前記IOデータ空間上の先頭アドレスが記憶され得るIOアドレスレジスタと、
前記スロットアドレスレジスタと前記IOアドレスレジスタとの一致を判定するアドレス一致判定部と、
前記スロット番号格納部から前記スロット番号が記憶され得るスロット番号レジスタと、
前記入出力インターフェースのIOデータ長が格納されるIOデータ長格納部と、
前記アドレス一致判定部が前記スロットアドレスレジスタと前記IOアドレスレジスタとの不一致を判定することに呼応して起動し、前記スロットアドレスレジスタに記憶されているスロットアドレスを前記IOアドレスレジスタに複写して、前記スロット番号レジスタの値をインクリメントしながら前記バスを通じて前記スロット番号レジスタが指し示す他の周辺装置が接続されている直近のIO接続部を探索し、探索した前記IO接続部の前記スロットアドレスレジスタに、前記複写した前記スロットアドレスと前記IOデータ長を加算した算出アドレスを書き込む動的アドレスマッピング処理部と
を有する、前記周辺装置である入出力装置と
を具備する制御装置。
【請求項2】
更に、前記IOケースの第一番目のスロットには、前記スロットアドレスレジスタに代えて前記IOデータ空間の先頭アドレスが格納されているスロットアドレス格納部を有する第一IO接続部が内蔵される、請求項1記載の制御装置。
【請求項3】
更に、前記IOケースには、前記周辺装置装着フラグに代えて前記スロットの最終位置を示す最終フラグ格納部を有する最終位置の前記IO接続部が内蔵される、請求項2記載の制御装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2013−37422(P2013−37422A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−170854(P2011−170854)
【出願日】平成23年8月4日(2011.8.4)
【出願人】(000153443)株式会社日立情報制御ソリューションズ (359)
【Fターム(参考)】
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願日】平成23年8月4日(2011.8.4)
【出願人】(000153443)株式会社日立情報制御ソリューションズ (359)
【Fターム(参考)】
[ Back to top ]