(57)【特許請求の範囲】
【請求項１】
ユーザプログラムを実行するＣＰＵユニットと、
前記ＣＰＵユニットとの間でデータ転送を行うためのバッファメモリを備え、前記ＣＰＵユニットのスレーブとして動作する補助ユニットと、
前記ＣＰＵユニットおよび前記補助ユニットが装着されるスロットを複数備え、前記ＣＰＵユニットと前記補助ユニットとの間のデータ転送を行うバスユニットと、
を備え、
前記ＣＰＵユニットは、
前記ユーザプログラムの実行中に前記バスユニットの空きスロットに補助ユニットが新規装着されたとき、前記新規装着を検知して、前記新規装着された補助ユニットのバッファメモリに当該補助ユニットの検知順に対応したアドレスを割り付け、当該補助ユニットとの間の前記ユーザプログラムに基づくデータ転送を開始し、
補助ユニットが装着されているスロット毎に、前記ＣＰＵユニットとの間の位置関係を示す物理スロット番号、補助ユニットの装着の検知順に付与される論理スロット番号および装着されている補助ユニットに割り付けられたアドレスを対応付けたバッファメモリ割り付け情報を更新管理する、
ことを特徴とするプログラマブルコントローラ。 
【請求項２】
前記ＣＰＵユニットは、前記新規装着された補助ユニットのバッファメモリを、１つ前に割り付けた領域に連続した領域に割り付ける、
ことを特徴とする請求項１に記載のプログラマブルコントローラ。 
【請求項３】
前記補助ユニットは、前記バスユニットに装着されたとき、ユニット認証要求を発行し、
前記ＣＰＵユニットは、前記ユーザプログラムの実行中に空きスロット毎にポーリングを行って前記ユニット認証要求を検知する、
ことを特徴とする請求項１に記載のプログラマブルコントローラ。 
【請求項４】
前記補助ユニットは、前記ユニット認証要求とともに自補助ユニットのバッファメモリの入出力点数を記述したユニット情報を発行し、
前記ＣＰＵユニットは、前記新規装着を検知した補助ユニットが発行した前記ユニット情報に記述されている入出力点数のサイズの領域を当該補助ユニットのバッファメモリに割り付ける、
ことを特徴とする請求項３に記載のプログラマブルコントローラ。 
【請求項５】
前記補助ユニットは、自補助ユニットの引き抜きが行われたとき、該引き抜きを検知してユニット抜き取り要求を発行し、
前記ＣＰＵユニットは、前記ユーザプログラムを実行中に補助ユニットが装着されているスロット毎にポーリングを行って前記ユニット抜き取り要求を監視し、前記ユニット抜き取り要求を検知したとき、前記ユニット抜き取り要求を発行した補助ユニットとの間のデータ転送を終了する、
ことを特徴とする請求項１から請求項４の何れか１項に記載のプログラマブルコントローラ。 
【請求項６】
前記バッファメモリ割り付け情報は、補助ユニットが装着されているスロット毎に予約状態フラグを格納する領域を備え、
前記ＣＰＵユニットは、前記ユニット抜き取り要求を検知したとき、前記ユニット抜き取り要求を発行した補助ユニットが装着されていたスロットの予約状態フラグを立て、予約状態フラグが立てられているスロットに補助ユニットの新規装着を検知したとき、当該予約状態フラグを下ろす、
ことを特徴とする請求項５に記載のプログラマブルコントローラ。 
【請求項７】
前記ＣＰＵユニットは、前記バスユニットに装着されている補助ユニットとの間でデータ転送を行うとともに相互の生存確認を実行し、前記ユニット抜き取り要求を検知したとき、前記ユニット抜き取り要求を発行した補助ユニットとの間の生存確認を停止する、
ことを特徴とする請求項５に記載のプログラマブルコントローラ。 
【請求項８】
前記補助ユニットは、スロットに固定されるためのロック機構と、前記ロック機構の解除を検知する抜き取り検知スイッチと、を備え、前記抜き取り検知スイッチが前記ロック機構の解除を検知したとき、前記ユニット抜き取り要求を発行する、
ことを特徴とする請求項５に記載のプログラマブルコントローラ。 
【請求項９】
ユーザプログラムを実行するＣＰＵユニットと、前記ＣＰＵユニットとの間でデータ転送を行うためのバッファメモリを備え、前記ＣＰＵユニットのスレーブとして動作する補助ユニットと、前記ＣＰＵユニットおよび前記補助ユニットが装着されるスロットを複数備え、前記ＣＰＵユニットと前記補助ユニットとの間のデータ転送を行うバスユニットと、を備えるプログラマブルコントローラに補助ユニットを追加するユニット追加方法であって、
前記ユーザプログラムの実行中に前記バスユニットの空きスロットに補助ユニットが新規装着されたとき、前記ＣＰＵユニットが前記新規装着を検知するステップと、
前記ＣＰＵユニットが、前記新規装着された補助ユニットのバッファメモリに当該補助ユニットの検知順に対応したアドレスを割り付けるステップと、
前記ＣＰＵユニットが、前記新規装着された補助ユニットとの間の前記ユーザプログラムに基づくデータ転送を開始するステップと、
前記ＣＰＵユニットが、補助ユニットが装着されているスロット毎に、前記ＣＰＵユニットとの間の位置関係を示す物理スロット番号、補助ユニットの装着の検知順に付与される論理スロット番号および装着されている補助ユニットに割り付けられたアドレスを対応付けたバッファメモリ割り付け情報を更新するステップと、
を備えることを特徴とするユニット追加方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラ（以下、単にＰＬＣ）および動作中のＰＬＣに補助ユニットを追加するユニット追加方法に関する。
【背景技術】
【０００２】
従来、ＰＬＣを構成する各種ユニットを動作中に挿抜できるようにする技術がある。例えば、特許文献１に開示されている技術によれば、ユーザは、ＰＬＣを構成するＣＰＵユニットおよび該ＰＬＣに新たに追加されたＣＰＵユニットの夫々にプログラミングツールを用いて定義ファイルを送信する。そして、ユーザは、プログラミングツールにオンライン変更準備完了通知を受信すると、オンライン変更実施指示を夫々のＣＰＵユニットに送信してＣＰＵユニットの変更を行う。
【０００３】
また、特許文献２に開示されている技術によれば、ＣＰＵユニットは、未接続の補助ユニットに対してポーリングを行う。補助ユニットが新規接続されたとき、該補助ユニットからポーリングに対する応答があるので、接続機器としての設定を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−６９９３９号公報
【特許文献２】特開２００１−３３３０８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来の技術によれば、ユニットを追加する際に、プログラミングツールの接続を必要とする。
【０００６】
本発明は、上記に鑑みてなされたものであって、簡単な操作で補助ユニットの増設を行うことができるプログラマブルコントローラおよびユニット追加方法を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、ユーザプログラムを実行するＣＰＵユニットと、前記ＣＰＵユニットとの間でデータ転送を行うためのバッファメモリを備え、前記ＣＰＵユニットのスレーブとして動作する補助ユニットと、前記ＣＰＵユニットおよび前記補助ユニットが装着されるスロットを複数備え、前記ＣＰＵユニットと前記補助ユニットとの間のデータ転送を行うバスユニットと、を備え、前記ＣＰＵユニットは、前記ユーザプログラムの実行中に前記バスユニットの空きスロットに補助ユニットが新規装着されたとき、前記新規装着を検知して、前記新規装着された補助ユニットのバッファメモリに当該補助ユニットの検知順に対応したアドレスを割り付け、当該補助ユニットとの間の前記ユーザプログラムに基づくデータ転送を開始し、補助ユニットが装着されているスロット毎に、前記ＣＰＵユニットとの間の位置関係を示す物理スロット番号、補助ユニットの装着の検知順に付与される論理スロット番号および装着されている補助ユニットに割り付けられたアドレスを対応付けたバッファメモリ割り付け情報を更新管理する、ことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、どのような入出力点数のバッファメモリを備える補助ユニットを追加する場合でも、装着を自動で検知してバッファメモリに自動でアドレスを割り付けることができるので、ユーザはプログラミングツールを必要とせず、簡単な操作で補助ユニットの増設を行うことができるようになる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明にかかる実施の形態のＰＬＣの模式的な外観図である。
【図２】図２は、本発明にかかる実施の形態のＰＬＣの構成を説明するブロック図である。
【図３】図３は、比較例を適用した場合のアドレス割り付けを説明する図である。
【図４】図４は、本実施の形態のアドレス割り付けを説明する図である。
【図５】図５は、メモリ空間を説明する図である。
【図６】図６は、補助ユニットが新規に装着された場合を説明する図である。
【図７】図７は、メモリ空間を説明する図である。
【図８】図８は、バッファメモリ割り付けテーブルのデータ構造の一例を説明する図である。
【図９】図９は、システム用Ｉ／Ｏ領域のメモリ構造を説明する図である。
【図１０】図１０は、ＰＬＣの断面図である。
【図１１】図１１は、ＰＬＣの断面図である。
【図１２】図１２は、ＰＬＣの起動処理を説明するフローチャートである。
【図１３】図１３は、起動処理時におけるアドレス割り付け処理を説明するフローチャートである。
【図１４】図１４は、通常処理時において、補助ユニットの抜き取りを行った場合のＰＬＣの動作を説明するフローチャートである。
【図１５】図１５は、通常処理時において、補助ユニットの増設を行なった場合のＰＬＣ１の動作を説明するフローチャートである。
【図１６】図１６は、通常処理時におけるアドレス割り付け処理を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、本発明にかかるプログラマブルコントローラおよびユニット追加方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態．
図１は、本発明にかかる実施の形態のプログラマブルコントローラ（ＰＬＣ）の模式的な外観図である。バスユニット２は、位置固定用コネクタ２１とバスコネクタ２２とを備えるスロットを複数備えており、ＰＬＣ１は、バスユニット２が備えるこれらのスロットに各種ユニットが装着されて構成される。ここでは、バスユニット２には、ＰＬＣ１を構成する夫々のユニットに電源を供給する電源ユニット３と、ＰＬＣ１全体の制御を行うＣＰＵユニット４と、補助ユニット５と、が装着されている。
【００１２】
補助ユニット５は、ＣＰＵユニット４に対してスレーブとして動作し、ＣＰＵユニット４に被制御装置を制御するための各種の機能を提供するものである。例えば、補助ユニット５には、アナログ入力ユニット、アナログ出力ユニット、温度調節ユニット、位置決めユニットなど、機能別に様々なものが用意されている。ユーザはＰＬＣ１の使用目的に応じて所望の機能を備える補助ユニット５を選択してＰＬＣ１に装着することができる。ここでは、５つの補助ユニット５ａ〜５ｅがＰＬＣ１に装着されている。
【００１３】
補助ユニット５は、夫々、ＣＰＵユニット４との間で通信（データ転送）を行うためのバッファメモリ（後述のバッファメモリ５４）を備えている。ＣＰＵユニット４は、補助ユニット５が夫々備えるバッファメモリをＣＰＵユニット４のメモリ空間に割り付け、バスコネクタ２２を介して夫々のバッファメモリに指令を書き込んだりバッファメモリから応答を読み出したりすることによって、補助ユニット５との間の通信を行う。
【００１４】
なお、電源ユニット３は、図示するように、バスユニット２の最も端に用意された専用のスロットに装着され、ＣＰＵユニット４は、電源ユニット３に隣接するスロットに装着される。ＣＰＵユニット４は、各スロットに、電源ユニット３と反対側に隣接するスロットから順番に位置が遠くなるに従って昇順にスロット番号を付し、このスロット番号を用いて各スロットに装着された補助ユニット５が夫々備えるバッファメモリの割り付けアドレスを管理する。図１の例によれば、５個の補助ユニット５ａ〜５ｅが夫々装着されているスロット番号は、夫々、０、１、３、４、５となり、スロット２、６、７は空きスロットとなっている。
【００１５】
本発明の実施の形態においては、ＣＰＵユニット４は、ＣＰＵユニット４の起動時のみならず、ユーザプログラムを実行（ＲＵＮ）中であっても、新規に補助ユニット５が装着（追加）されたとき、補助ユニット５の新規装着を検知して、装着された補助ユニット５のバッファメモリをメモリ空間に割り付けることができるようになっている。また、ＣＰＵユニット４は、ＲＵＮ中であっても、補助ユニット５が抜き取られたとき、抜き取られた補助ユニット５を故障と判定してエラー処理を実行するのではなく、抜き取られた補助ユニット５の使用を停止し、ユーザプログラムの実行を継続することができる。また、ＣＰＵユニット４は、補助ユニット５の新規装着および引き抜きを自動で検知して、自動でメモリ空間への割り付けを行うことができるので、ユーザはプログラミングツールを用いることなく補助ユニット５の新規装着および引き抜きを行うことができる。
【００１６】
図２は、ＰＬＣ１の構成を説明するブロック図である。なお、補助ユニット５ａ〜５ｅは、機種毎に夫々構成が異なるが、ここでは、補助ユニット５ａ〜５ｅに共通して備えられる構成について説明することとする。
【００１７】
図２に示すように、ＣＰＵユニット４は、ＭＰＵ４１、システムメモリ４２、ユーザメモリ４３、ワークメモリ４４、デバイスメモリ４５、外部インタフェース（Ｉ／Ｆ）４６、バスＩ／Ｆ４７を備えている。ＣＰＵユニット４が備える前記夫々の構成要素は、ＣＰＵユニット４の内部バスで互いに接続されている。
【００１８】
システムメモリ４２は、ＣＰＵユニット４を動作させるためのシステムプログラム４２１を記憶している。ユーザメモリ４３は、補助ユニット５を制御して被制御装置に対して所望の制御動作を行うためのユーザプログラム４３１を記憶している。ユーザプログラム４３１は、ユーザにより作成され、プログラミングツールを用いてユーザメモリ４３にダウンロードされる。
【００１９】
ＭＰＵ４１は、ワークメモリ４４をワークエリアとして使用してシステムプログラム４２１を実行する。ＭＰＵ４１は、システムプログラム４２１に基づく動作の一環として、バスユニット２に装着されている夫々の補助ユニット５が備えるバッファメモリに対するメモリ空間のアドレス割り付けを管理する。具体的には、ＭＰＵ４１は、夫々の補助ユニット５のバッファメモリをメモリ空間に割り付け、割り付け結果を記述したバッファメモリ割り付けテーブル４４１をワークメモリ４４に生成する。そして、ＭＰＵ４１は、補助ユニット５の着脱に応じてバッファメモリ割り付けテーブル４４１を更新する。
【００２０】
ここで、本実施の形態と比較されるバッファメモリのアドレス割り付けの技術として、割り付けられた領域の順番がスロット番号の順番に一致するようにアドレス割り付けを行う技術がある。この技術を比較例ということとする。比較例によれば、図１に示すスロット２のようにスキップされて空きスロットとなっているスロットにも予め設定されている容量の領域を確保する。
【００２１】
図３は、比較例を適用した場合のアドレス割り付けを説明する図である。補助ユニット５ａ、５ｂ、５ｃ、５ｄ、５ｅは、夫々、１６点、３２点、１６点、３２点、１６点の入出力点数（サイズ）のバッファメモリを備えるものとし、バッファメモリに割り当てられる領域の先頭アドレスを１６進法表記で“００”とする。なお、１点は１ワード分の容量に等しい。図示するように、比較例によれば、補助ユニット５ａには“００−０Ｆ”の領域が割り当てられ、補助ユニット５ｂには“１０−２Ｆ”の領域が割り当てられる。そして、空きスロットであるスロット２には、予め設定された容量として１６点分の容量の領域“３０−３Ｆ”が割り当てられ、以降、補助ユニット５ｃ、５ｄ、５ｅに夫々“４０−４Ｆ”、“５０−６Ｆ”、“７０−７Ｆ”が割り当てられている。このように割り当てると、装着位置がスキップされて生じた空きスロット２に増設できる補助ユニット５は、バッファメモリの容量が１６点以下のものに限られてしまうという問題が生じる。例えば、スロット２に３２点のバッファメモリを備える補助ユニット５を増設すると、エラーとなる。
【００２２】
そこで、本実施の形態では、単にスロットの位置関係に基づいて決められるスロット番号（以降、物理スロット番号）のほかに、補助ユニット５が装着されているスロットに対して連続した論理的なスロット番号（論理スロット番号）を割り付ける。また、新規に補助ユニット５が装着されたとき、新規に補助ユニット５が装着されたスロットに、割り付け済みの最大の論理スロット番号の次の番号を割り付ける。そして、割り付けられる領域の順番がこの論理スロット番号の順番に一致するようにメモリ空間の先頭から連続した領域のアドレス割り付けを行う。
【００２３】
図４は、本実施の形態のアドレス割り付けを説明する図である。図示するように、補助ユニット５が装着されている物理スロット０、１、３、４、５に対して夫々論理スロット０、１、２、３、４を割り付けられており、“００−０Ｆ”、“１０−２Ｆ”、“３０−３Ｆ”、“４０−５Ｆ”、“６０−６Ｆ”のように論理スロット番号の順番で隙間なく割り当てられている。図５は、このように割り当てられた場合のメモリ空間を説明する図である。図示するように、装着されている補助ユニット５に対して先頭から順次連続した領域が割り付けられる。
【００２４】
図６は、空きスロットとなっていた物理スロット２に１６点のバッファメモリを備える補助ユニット５ｆ、物理スロット６に１６点のバッファメモリを備える補助ユニット５ｇが新規に装着された場合を説明する図である。また、図７は、補助ユニット５ｆおよび補助ユニット５ｇが新規に装着された場合のメモリ空間を説明する図である。図示するように、補助ユニット５ｆが装着される物理スロット２に、割り付け済みの番号の最大値“４”の次の論理スロット番号“５”が割り付けられ、論理スロット４に割り付け済みの領域“６０−６Ｆ”に連続した１６点分の領域“７０−７Ｆ”が割り付けられる。また、補助ユニット５ｇが装着される物理スロット６に論理スロット番号“６”が割り付けられ、論理スロット５に割り付けた“７０−７Ｆ”に連続した１６点分の領域“８０−８Ｆ”が割り付けられる。
【００２５】
このように、装着される毎に昇順に空き番号を作ることなく論理スロット番号が割り振られ、論理スロット番号が連続する補助ユニット５に連続したメモリ空間が割り付けられるので、図５および図７に示すように、新規に割り付け可能なメモリ空間が常にメモリ空間の後ろに固まって存在することになる。これにより、物理スロット２のような装着位置がスキップされて生じた空きスロットにどのような容量のバッファメモリを持つ補助ユニット５を装着しても、エラーとなることなくメモリ空間を割り付けることができる。
【００２６】
なお、本実施の形態では、ＣＰＵユニット４は、ＣＰＵユニット４に近いスロットから順番に装着を検出するようにしている。したがって、初期状態における補助ユニット５ａ〜５ｅや、後から新規装着された補助ユニット５ｆと補助ユニット５ｇのように、複数の補助ユニット５が同時に装着された場合、ＣＰＵユニット４に近いスロットから順番に論理スロット番号が割り付けられる。
【００２７】
図８は、ＭＰＵ４１が更新管理するバッファメモリ割り付けテーブル４４１のデータ構造の一例を説明する図である。図示するように、補助ユニット５が装着されているスロット毎に、論理スロット番号および割り付けアドレスを対応付けるエントリが登録されている。バッファメモリ割り付けテーブル４４１には、新しい補助ユニット５が装着される毎に新しい論理スロット番号のエントリが追加される。
【００２８】
なお、補助ユニット５の交換時においては、補助ユニット５が抜き取られ、補助ユニット５が抜き取られた後のスロットに該補助ユニット５と同等の機能を備える補助ユニット５が装着される。バッファメモリ割り付けテーブル４４１の各エントリは、予約状態フラグを格納するフィールドを備えており、補助ユニット５の抜き取りが行われたとき、対応するエントリは消去される代わりに予約状態フラグがオンされる。そして、抜き取られたスロットに新しい補助ユニット５が装着されたとき、装着された補助ユニット５の入出力点数が抜き取られた補助ユニット５の入出力点数を超えないことが確認された後、予約状態フラグがオフされる。
【００２９】
図２に戻り、デバイスメモリ４５は、ＭＰＵ４１がユーザプログラム４３１を実行することによって生成した補助ユニット５に対する指令としての出力データおよび補助ユニット５からの応答としての入力データが格納される。具体的には、ＭＰＵ４１は、デバイスメモリ４５上の出力データを読み出して、読み出した出力データを対応する補助ユニット５のバッファメモリに指令として格納し、該バッファメモリに格納されている応答を読み出して、読み出した応答をデバイスメモリ４５に入力データとして格納する。ＭＰＵ４１は、読み出した入力データを用いてユーザプログラム４３１を実行し、次のサイクルの出力データを算出する。なお、出力データを算出するための中間データもデバイスメモリ４５に格納される。
【００３０】
外部Ｉ／Ｆ４６は、プログラミングツールとの間で通信を行うための通信インタフェースである。ユーザは、外部Ｉ／Ｆ４６にプログラミングツールを接続することによってユーザプログラム４３１のＣＰＵユニット４へのダウンロードを行うことができる。
【００３１】
バスＩ／Ｆ４７は、バスコネクタ２２を介して補助ユニット５の夫々と通信を行うための通信インタフェースである。バスＩ／Ｆ４７は、夫々の補助ユニット５の生存確認を行う生存確認回路４７１を備えている。生存確認回路４７１による生存確認方法は特に限定しないが、例えば、生存確認回路４７１は、確認対象の補助ユニット５が備えるタイマ（図示せず）を読み、該タイマが動作していれば生存しているとし、動作していなければ生存していないと判定する。なお、ＲＵＮ中に生存が確認されなくなった場合、ＣＰＵユニット４は生存が確認されなくたった補助ユニット５を故障と判定する。
【００３２】
補助ユニット５は、ＭＰＵ５１、システムメモリ５２、ワークメモリ５３、バッファメモリ５４、バスＩ／Ｆ５５、Ｉ／Ｏポート５６、およびユニット抜き取りスイッチ５７を備えている。ＭＰＵ５１、システムメモリ５２、ワークメモリ５３、バッファメモリ５４、Ｉ／Ｏポート５６は、補助ユニット５の内部バスで互いに接続されている。
【００３３】
システムメモリ５２は、補助ユニット５を動作させるためのシステムプログラム５２１を記憶している。ＭＰＵ５１は、ワークメモリ５３をワークエリアとして使用して、システムプログラム５２１を実行することによって、補助ユニット制御部として機能する。
【００３４】
バスＩ／Ｆ５５は、バスコネクタ２２を介してＣＰＵユニット４と通信を行うための通信インタフェースである。バスＩ／Ｆ５５は、ＣＰＵユニット４の生存確認を行う生存確認回路５５１を備えている。生存確認回路５５１による生存確認方法は特に限定しないが、生存確認回路５５１は、例えば、ＣＰＵユニット４が備えるタイマ（図示せず）を読み、該タイマが動作していればＣＰＵユニット４は生存しているとし、動作していなければ生存していないと判定する。
【００３５】
バッファメモリ５４は、２ポートメモリであって、補助ユニット５の内部バスおよびバスＩ／Ｆ５５の夫々に接続されている。バッファメモリ５４は、上述のように、ＣＰＵユニット４によってＣＰＵユニット４のメモリ空間に割り付けられ、ＣＰＵユニット４との間の通信に使用される。バッファメモリ５４には、ＣＰＵユニット４がシステムプログラム４２１に基づいて補助ユニット５を認証／認証解除する通信を行うためのシステム用Ｉ／Ｏ領域５４１と、ＣＰＵユニット４がユーザプログラム４３１に基づいて指令の送信と応答の受信とを行うためのユーザ用Ｉ／Ｏ領域５４２と、が確保されている。
【００３６】
図９は、システム用Ｉ／Ｏ領域５４１のメモリ構造を説明する図である。図示するように、システム用Ｉ／Ｏ領域５４１には、補助ユニット５のＭＰＵ５１が生成するユニット情報６１およびシステム情報６２が格納される。ユニット情報６１は、自補助ユニット５のユニット種別、入出力点数、システム用Ｉ／Ｏ領域５４１の使用ワード数などを記述した情報である。また、システム情報６２は、自補助ユニット５の固有コードや自補助ユニット５に実装されている機能を記述した情報である。
【００３７】
また、システム用Ｉ／Ｏ領域５４１には、補助ユニット５のＭＰＵ５１が管理するビット情報として、ユニット認証要求フラグ６３、システム情報セット完了フラグ６４、ユニット準備完了フラグ６５、およびユニット抜き取り要求フラグ６６が格納されている。さらに、システム用Ｉ／Ｏ領域５４１には、ＣＰＵユニット４のＭＰＵ４１が管理するビット情報として、ユニット認証完了フラグ６７、システム情報チェック完了フラグ６８、およびユニット抜き取り許可フラグ６９が格納されている。
【００３８】
ユニット抜き取りスイッチ５７は、位置固定用コネクタ２１への自補助ユニット５の固定／固定解除に連動してオン／オフされる。
【００３９】
図１０は、補助ユニット５が固定されているＰＬＣ１をｘｚ面に沿って切断した断面図である。図示するように、位置固定用コネクタ２１の断面は、ｚ軸の負方向にＬ字型に折れ曲がった構造を備えている。一方、補助ユニット５は、位置固定用コネクタ２１のＬ字構造に咬合してｘ軸方向の補助ユニット５の抜け落ちを防止する咬合部５８が設けられたロックバー５９を備えている。ロックバー５９は、補助ユニット５本体に対してｘ軸方向に移動可能となっている。ユーザは、ロックバー５９をｘ軸負方向にスライドさせることによって、咬合部５８を位置固定用コネクタ２１に咬合させ、補助ユニット５を固定状態にすることができる。また、ユーザは、ロックバー５９をｘ軸正方向に移動させられることによって、咬合部５８と位置固定用コネクタ２１との咬合を解除し、補助ユニット５を固定解除状態にすることができる。固定解除状態となっているとき、ユーザは、補助ユニット５をｘ軸正方向に動かすと、補助ユニット５をバスユニット２から取り外すことができる。
【００４０】
さらに、補助ユニット５本体には、ｘ軸正方向に押下される補助ユニット５が設けられている。そして、ロックバー５９には、固定解除状態となったときにユニット抜き取りスイッチ５７を押下することができるように、ユニット抜き取りスイッチ５７の配設位置に対応した位置にスイッチ押下部６０が設けられている。図１１は、補助ユニット５が固定解除状態となっているときのＰＬＣ１の断面図である。図示するように、固定解除状態においては、ユニット抜き取りスイッチ５７が押下された状態となっている。
【００４１】
このように、補助ユニット５を固定状態にしたとき、ユニット抜き取りスイッチ５７はオフ状態となり、補助ユニット５を固定解除状態にしたとき、ユニット抜き取りスイッチ５７はオン状態となる。
【００４２】
Ｉ／Ｏポート５６は、ユニット抜き取りスイッチ５７のオン／オフを検知して、検知した内容をＭＰＵ５１に伝達する。ＭＰＵ５１は、ユニット抜き取りスイッチ５７がオンとなったとき、ユニット抜き取り要求フラグ６６を立てる。
【００４３】
次に、本発明の実施の形態のＰＬＣ１の動作を説明する。図１２は、ＰＬＣ１の起動処理を説明するフローチャートである。なお、以下、ＣＰＵユニット４が備えるＭＰＵ４１による処理を説明するとき、ＣＰＵユニット４を動作主体をとして表現することがある。また、補助ユニット５が備えるＭＰＵ５１による処理を説明するとき、ＭＰＵユニット５を動作主体として表現することがある。
【００４４】
まず、ＣＰＵユニット４は、ＰＬＣ１のリセットを解除し、装着されている夫々の補助ユニット５のユニット認証要求フラグ６３がオンされているか否かを夫々の補助ユニット５に対して確認するポーリングを実行する（ステップＳ１）。なお、物理スロット毎に補助ユニット５のバッファメモリ５４の割り付け先が予め仮決めされており、ＣＰＵユニット４は、起動の後、バッファメモリ割り付けテーブル４４１に登録されるまでは仮決めされたアドレス割り付けに基づいて夫々のバッファメモリ５４にアクセスするようにするとよい。
【００４５】
補助ユニット５は、リセット解除された後、動作を開始し（ステップＳ２）、ユニット情報６１をシステムＩ／Ｏ領域５４１にセットする（ステップＳ３）。ユニット情報６１をセット完了すると、補助ユニット５は、ユニット認証要求フラグ６３をオンする（ステップＳ４）。
【００４６】
ＣＰＵユニット４は、ユニット認証要求フラグ６３のオンを確認すると（ステップＳ５）、ユニット認証要求フラグ６３のオンが確認された補助ユニット５に対するアドレス割り付け処理を実行する（ステップＳ６）。
【００４７】
図１３は、起動処理時におけるアドレス割り付け処理を説明するフローチャートである。図示するように、まず、ＣＰＵユニット４は、バッファメモリ割り付けテーブル４４１を参照して、割り付け済みの最大論理スロット番号を求め、求めた最大論理スロット番号に１加算して、対象の補助ユニット５が装着されている物理スロット番号に対応する論理スロット番号を算出する（ステップＳ２１）。そして、ＣＰＵユニット４は、割り付け済みのメモリ空間の最後尾アドレスと、ユニット情報６１に記述されている入出力点数と、に基づいて、割り付け済みのメモリ空間に連続する割り付けアドレスを算出する（ステップＳ２２）。そして、ＣＰＵユニット４は、バッファメモリ割り付けテーブル４４１に、対象の補助ユニットが装着された物理スロット番号と算出した論理スロット番号および割り付けアドレスとを対応付けたエントリを追加し（ステップＳ２３）、対象の補助ユニット５に対するアドレス割り付け処理が終了する。なお、起動処理時のアドレス割り付け処理において生成した各エントリの予約状態フラグはすべてオフ状態としておく。
【００４８】
ＣＰＵユニット４は、補助ユニット５に対するアドレス割り付け処理を終了すると、該補助ユニット５のシステム用Ｉ／Ｏ領域５４１にユニット認証完了フラグ６７を立てる（ステップＳ７）。
【００４９】
補助ユニット５は、ユニット認証完了フラグ６７のオンを確認すると（ステップＳ８）、システム情報６２をシステム用Ｉ／Ｏ領域５４１にセットし（ステップＳ９）、システム情報セット完了フラグ６４をオンする（ステップＳ１０）。
【００５０】
ＣＰＵユニット４は、システム情報セット完了フラグ６４のオンを確認すると（ステップＳ１１）、セットされているシステム情報６２をチェックし（ステップＳ１２）、システム情報チェック完了フラグ６８をオンする（ステップＳ１３）。
【００５１】
補助ユニット５がシステム情報チェック完了フラグ６８のオンを確認すると（ステップＳ１４）、補助ユニット５が備える生存確認回路５５１およびＣＰＵユニット４が備える生存確認回路４７１は互いに生存確認処理を実行する（ステップＳ１５、ステップＳ１６）。相互に生存していることを確認すると、補助ユニット５は、ユニット準備完了フラグ６５をオンし（ステップＳ１７）、ＣＰＵユニット４はユニット準備完了フラグ６５のオンを確認する（ステップＳ１８）。
【００５２】
なお、ＣＰＵユニット４は、ステップＳ１においてリセット解除すると、物理スロット番号が小さいスロットから物理スロット毎に順次ユニット認証要求フラグ６３をポーリングしていく。ユニット認証要求フラグ６３がオンとなっている物理スロットがあった場合、該物理スロットに装着されている補助ユニット５との間でステップＳ６〜ステップＳ１８までの処理が実行され、ステップＳ１８までの処理が終了すると、ＣＰＵユニット４は次の物理スロットのユニット認証要求フラグ６３を確認しにいく。全ての物理スロットに対する確認が完了すると、ＣＰＵユニット４および装着されている全ての補助ユニット５の起動処理が終了し、その状態でＣＰＵユニット４にＲＵＮ指示が入力されると、ＰＬＣ１はユーザプログラム４３１の実行を開始して通常処理に移行する。
【００５３】
図１４は、通常処理時（ＲＵＮ中）において、補助ユニット５の抜き取りを行った場合のＰＬＣ１の動作を説明するフローチャートである。ＣＰＵユニット４は、通常処理が開始されると、バッファメモリ割り付けテーブル４４１に登録済みの領域をサーチすることによってユニット抜き取り要求フラグ６６のポーリングを行う（ステップＳ３１）。
【００５４】
ユーザは、補助ユニット５のロックバー５９をスライドさせて非固定状態とすると（ステップＳ３２）、補助ユニット５は、ユニット抜き取り要求フラグ６６をオンする（ステップＳ３３）。
【００５５】
ＣＰＵユニット４は、ユニット抜き取り要求フラグ６６のオンを確認すると（ステップＳ３４）、生存確認回路４７１による生存確認処理およびユーザ用Ｉ／Ｏ領域５４２を介した入出力データのデータ転送の停止を行う（ステップＳ３５）。そして、ＣＰＵユニット４は、抜き取り位置の物理スロット番号のエントリが含む予約状態フラグをオンし（ステップＳ３６）、ユニット抜き取り許可フラグ６９をオンする（ステップＳ３７）。その後、ステップＳ３１に移行する。
【００５６】
補助ユニット５は、ユニット抜き取り許可フラグ６９のオンを確認すると（ステップＳ３８）、内部データの保存など停止処理を行い（ステップＳ３９）、ユーザに抜き取り可能状態であることを示すために自補助ユニット５が備えるＬＥＤ（図示せず）を消灯し（ステップＳ４０）、抜き取り待ち状態に移行する（ステップＳ４１）。
【００５７】
ユーザは、ＬＥＤの消灯を確認して補助ユニット５を抜き取り（ステップＳ４２）、ユニット抜き取り処理が終了する。
【００５８】
図１５は、通常処理時において、補助ユニット５の増設を行なった場合のＰＬＣ１の動作を説明するフローチャートである。通常処理が開始されると、ＣＰＵユニット４は、バッファメモリ割り付けテーブル４４１に登録されていない領域および予約状態で登録されている領域をサーチすることによって、ユニット認証要求フラグ６３のポーリングを行う（ステップＳ５１）。
【００５９】
一方、新たな補助ユニット５がスロットに装着されると、装着された補助ユニット５（以降、増設ユニットという）は動作を開始し（ステップＳ５２）、ユニット情報６１をシステムＩ／Ｏ領域５４１にセットする（ステップＳ５３）。ユニット情報６１をセット完了すると、補助ユニット５は、ユニット認証要求フラグ６３をオンする（ステップＳ５４）。
【００６０】
ＣＰＵユニット４は、ポーリングを続行してゆくうちに、増設ユニットのユニット認証要求フラグ６３のオンを確認する（ステップＳ５５）。すると、ＣＰＵユニット４は、アドレス割り付け処理を実行する（ステップＳ５６）。
【００６１】
図１６は、通常処理時（ＲＵＮ中）におけるアドレス割り付け処理を説明するフローチャートである。まず、ＣＰＵユニット４は、増設ユニット５が装着された物理スロット番号を検索キーとしてバッファメモリ割り付けテーブル４４１を検索し（ステップＳ７１）、エントリが存在するか否かを判定する（ステップＳ７２）。エントリが存在しなかった場合（ステップＳ７２、Ｎｏ）、ＣＰＵユニット４は、ステップＳ２１〜ステップＳ２３と同等の処理をステップＳ７３〜ステップＳ７５で実行し、増設ユニット５に関するＲＵＮ中のアドレス割り付け処理を終了する。
【００６２】
前に補助ユニット５が装着されたことがあり、抜き取られた状態となっている物理スロットは、バッファメモリ割り付けテーブル４４１に予約状態フラグが立っている状態となっているが、エントリは削除されずに存在している。エントリが存在した場合（ステップＳ７２、Ｙｅｓ）、ＣＰＵユニット４は、増設ユニット５の入出力点数がバッファメモリ割り付けテーブル４４１に登録されている領域のサイズよりも小さいか否かを判定し（ステップＳ７６）、小さくなかった場合（ステップＳ７６、Ｎｏ）、ＣＰＵユニット４は、エラー処理を実行する（ステップＳ７７）。増設ユニット５の入出力点数がバッファメモリ割り付けテーブル４４１に登録されている領域のサイズよりも小さかった場合（ステップＳ７６、Ｙｅｓ）、予約状態フラグをオフして登録されている領域を増設ユニット５の割り当て先とし（ステップＳ７８）、増設ユニット５に関するＲＵＮ中のアドレス割り付け処理を終了する。
【００６３】
ＣＰＵユニット４は、アドレス割り付け処理を完了すると、ユニット認証完了フラグ６７をオンする（ステップＳ５７）。
【００６４】
増設ユニット５がユニット認証完了フラグ６７のオンを確認すると（ステップＳ５８）、増設ユニット５およびＣＰＵユニット４は、夫々、ステップＳ５９〜ステップＳ６８において、既に説明したステップＳ９〜ステップＳ１８と同等の処理を実行し、増設ユニット５は起動処理を終了する。増設ユニット５の起動処理が終了すると、ユーザプログラム４３１に基づいて増設ユニット５とＣＰＵユニット４との間のデータ転送を行う通常処理に移行する。なお、ステップＳ６８の後、ＣＰＵユニット４は、ステップＳ５１へ移行してポーリングを実行する。
【００６５】
なお、通常処理時における各種フラグのポーリング（ステップＳ３１、ステップＳ５１）を行うタイミングについては特に言及しなかったが、これらのポーリングはどのようなタイミングで行うようにしてもよい。例えばユーザプログラム４３１を１回または複数スキャンする毎に実行するようにしてもよい。また、ＭＰＵ４１がアイドル状態となっているときに実行するようにしてもよい。また、一定の時間間隔毎に割り込みをかけて実行するようにしてもよい。
【００６６】
また、システム用Ｉ／Ｏ領域５４１を介して補助ユニットを認証／認証解除するための通信が実行されるとして説明したが、補助ユニット５を認証／認証解除するための通信をバスユニット２が備えるバスや別途設けた専用線を用いて実行するようにしてもよい。
【００６７】
また、ロックバー５９を用いて補助ユニット５を位置固定用コネクタ２１に固定するものとして説明したが、非固定状態となったときにユニット抜き取りスイッチ５７がオンされるようになっていればロック機構はロックバー５９の方式だけに限定されない。
【００６８】
なお、一般に、ワークメモリ４４には、高速動作が可能な揮発性のメモリが用いられる。そして、ユーザは、ＰＬＣ１を停止して再起動したときに同一のアドレス割り付けとなるように、所望のタイミングでバッファメモリ割り付けテーブル４４１を図示しない書き換え可能な不揮発性メモリに退避させるようにする。バッファメモリ割り付けテーブル４４１の退避を省略できるようにするために、ワークメモリ４４に、バッテリバックアップされた揮発性メモリや、不揮発性のメモリを用いるようにしてもよい。
【００６９】
以上述べたように、本発明の実施の形態によれば、ＣＰＵユニット４は、ユーザプログラム４３１の実行中に補助ユニット５が新規装着されたとき、新規装着を検知して、新規装着された補助ユニット５のバッファメモリ５４に当該補助ユニット５の検知順に対応したアドレスを割り付け、当該補助ユニット５との間のユーザプログラム４３１に基づくデータ転送を開始する、ように構成したので、プログラミングツールを用いることなく新規装着でき、かつどのような入出力点数のバッファメモリを備える補助ユニット５を追加する場合でも新規装着を自動で検知してバッファメモリ５４に自動でアドレスを割り付けることができる。即ち、簡単な操作で補助ユニットの増設を行うことができるようになる。また、スキップされて空きスロットとなっている部分にどのような入出力点数を備える補助ユニット５でも装着することができるようになる。
【００７０】
また、補助ユニット５は、バスユニット２に装着されたとき、ユニット認証要求フラグ６３を発行し、ＣＰＵユニット４は、ユーザプログラム４３１の実行中に空きスロット毎にポーリングを行ってユニット認証要求フラグ６３を検知する、ように構成したので、ＣＰＵユニット４はユーザプログラム４３１の実行中に補助ユニット５の新規装着を検知することができる。
【００７１】
また、補助ユニット５は、ユニット認証要求フラグ６３とともに自補助ユニット５のバッファメモリ５４の入出力点数を記述したユニット情報６１を発行する、ように構成したので、ＣＰＵユニット４は、どのような入出力点数を備える補助ユニット５が新規装着されても、当該補助ユニット５に割り付けるべきサイズを認識することができる。
【００７２】
また、補助ユニット５は、自補助ユニット５の引き抜きが行われたとき、該引き抜きを検知してユニット抜き取り要求フラグ６６を発行し、ＣＰＵユニット４は、ユーザプログラム４３１を実行中に補助ユニット５が装着されているスロット毎にポーリングを行ってユニット抜き取り要求フラグ６６を監視し、ユニット抜き取り要求フラグ６６を検知したとき、ユニット抜き取り要求フラグ６６を発行した補助ユニット５との間のデータ転送を終了する、ように構成したので、ＲＵＮ中であってもエラー出力されることなく補助ユニット５を引き抜くことができるようになる。
【００７３】
また、バッファメモリ割り付けテーブル４４１は、補助ユニット５が装着されているスロット毎に予約状態フラグを格納する領域を備え、ＣＰＵユニット４は、ユニット抜き取り要求フラグ６６を検知したとき、ユニット抜き取り要求フラグ６６を発行した補助ユニット５が装着されていたスロットの予約状態フラグを立て、予約状態フラグが立てられているスロットに補助ユニット５の新規装着を検知したとき、当該予約状態フラグを下ろす、ように構成したので、ユーザは、補助ユニット５を交換する際に割り付けアドレスの変更を行う必要がないので、プログラミングツールを必要とすることなく簡単な操作で補助ユニット５の交換を行うことができるようになる。
【００７４】
また、ＣＰＵユニット４は、バスユニット２に装着されている補助ユニット５との間でデータ転送を行うとともに相互の生存確認を実行し、ユニット抜き取り要求フラグ６６を検知したとき、ユニット抜き取り要求フラグ６６を発行した補助ユニット５との間の生存確認を停止する、ように構成したので、抜き取られた補助ユニット５を故障したものとして誤検出されること防止することができる。
【００７５】
また、補助ユニット５は、スロットに固定されるためのロックバー５９と、ロックバー５９の解除を検知するユニット抜き取りスイッチ５７と、を備え、ユニット抜き取りスイッチ５７がロックバー５９の解除を検知したとき、ユニット抜き取り要求フラグ６６を発行する、ように構成したので、ユーザがロックバー５９を非固定状態とするだけでユニット抜き取りの処理が開始されるので、簡単な操作で補助ユニット５の抜き取りを行うことができるようになる。
【産業上の利用可能性】
【００７６】
以上のように、本発明にかかるＰＬＣおよびユニット追加方法は、ＰＬＣおよび動作中のＰＬＣに補助ユニットを追加するユニット追加方法に適用して好適である。
【符号の説明】
【００７７】
１  ＰＬＣ
２  バスユニット
３  電源ユニット
４  ＣＰＵユニット
５、５ａ〜５ｇ  補助ユニット
２１  位置固定用コネクタ
２２  バスコネクタ
４１  ＭＰＵ
４２  システムメモリ
４３  ユーザメモリ
４４  ワークメモリ
４５  デバイスメモリ
４６  外部Ｉ／Ｆ
４７  バスＩ／Ｆ
５１  ＭＰＵ
５２  システムメモリ
５３  ワークメモリ
５４  バッファメモリ
５５  バスＩ／Ｆ
５６  Ｉ／Ｏポート
５７  ユニット抜き取りスイッチ
５８  咬合部
５９  ロックバー
６０  スイッチ押下部
６１  ユニット情報
６２  システム情報
６３  ユニット認証要求フラグ
６４  システム情報セット完了フラグ
６５  ユニット準備完了フラグ
６６  ユニット抜き取り要求フラグ
６７  ユニット認証完了フラグ
６８  システム情報チェック完了フラグ
６９  ユニット抜き取り許可フラグ
４２１  システムプログラム
４３１  ユーザプログラム
４４１  バッファメモリ割り付けテーブル
４７１  生存確認回路
５２１  システムプログラム
５４１  システム用Ｉ／Ｏ領域
５４２  ユーザ用Ｉ／Ｏ領域
５５１  生存確認回路
【図１】
0005460556.tif 000002
【図２】
0005460556.tif 000003
【図３】
0005460556.tif 000004
【図４】
0005460556.tif 000005
【図５】
0005460556.tif 000006
【図６】
0005460556.tif 000007
【図７】
0005460556.tif 000008
【図８】
0005460556.tif 000009
【図９】
0005460556.tif 000010
【図１０】
0005460556.tif 000011
【図１１】
0005460556.tif 000012
【図１２】
0005460556.tif 000013
【図１３】
0005460556.tif 000014
【図１４】
0005460556.tif 000015
【図１５】
0005460556.tif 000016
【図１６】
0005460556.tif 000017