(57)【特許請求の範囲】
【請求項１】
デバイス間を結ぶ配線によってループが形成された複数の揮発性のＰＬＤと、複数のプログラムを保持する不揮発性メモリとを搭載した論理制御装置であって、
前記各ＰＬＤに書き込むナンバリング処理プログラムを保持するナンバリング処理プログラム保持手段と、
前記複数の各ＰＬＤに書き込む複数のプログラムを保持するデバイス用処理プログラム保持手段と、
を前記不揮発性メモリ内に有するプログラム保持部と、
起動時に、前記ナンバリング処理プログラム保持手段から読み出した前記ナンバリング処理プログラムを前記各ＰＬＤに書き込んでから、実行させる第一書込手段と、
前記ナンバリング処理プログラムを実行した前記各ＰＬＤから通知を受け、当該通知に基づいて前記各ＰＬＤのナンバリングを行うナンバリング手段と、
前記ナンバリング終了後に、前記デバイス用処理プログラム保持手段から読み出した前記各プログラムを対応する前記各ＰＬＤに書き込んで実行させる第二書込手段と、
前記各ＰＬＤで実行された前記プログラムから該プログラム内に格納されている機能番号を取得する機能番号取得手段と、
前記ＰＬＤ各々について、前記ナンバリング手段によるナンバリングで付けられた付与番号と、前記機能番号取得手段によって取得した機能番号とを比較する比較手段と、
前記比較手段による比較結果を出力する比較結果出力手段と、
を有する制御部と、
を備えたことを特徴とする論理制御装置。 
【請求項２】
前記比較手段による比較の結果、両者が整合性を欠く場合には、前記付与番号および前記機能番号に基づいてプログラムの入れ替えを試行し、当該入れ替えが成立する場合には、前記ＰＬＤのプログラムを書き換えるプログラム入替手段をさらに備えたことを特徴とする請求項１に記載の論理制御装置。 
【請求項３】
前記ＰＬＤのいずれか一つを起点ＰＬＤとして他と区別して搭載し、
前記ナンバリング手段は、前記ナンバリング処理プログラムを実行した前記起点ＰＬＤで生成されたシリアルデータを受信したＰＬＤから通知を受けることを特徴とする請求項１または２に記載の論理制御装置。 
【請求項４】
前記プログラム入替手段による書き換えが終了した場合に、前記付与番号および前記機能番号の対応関係を記憶部に格納する対応関係格納手段をさらに備え、
前記第二書込手段は、起動時に、前記記憶部に前記対応関係が格納されている場合には、当該対応関係に基づく順序で前記デバイス用処理プログラム保持手段からプログラムを読み出し、前記ＰＬＤに書き込んでから、実行させることを特徴とする請求項２または３に記載の論理制御装置。 
【請求項５】
デバイス間を結ぶ配線によってループが形成された複数の揮発性のＰＬＤと、複数のプログラムを保持する不揮発性メモリとを搭載した論理制御装置が備えるコンフィグレーション制御部が行なうプログラム書き込み方法であって、
前記論理制御装置の起動時に、所定の記憶部から読み出したナンバリング処理プログラムを前記各ＰＬＤに書き込んでから、実行させる第一書込工程と、
前記ナンバリング処理プログラムを実行した前記各ＰＬＤから通知を受け、当該通知に基づいて前記各ＰＬＤのナンバリングを行うナンバリング工程と、
前記ナンバリング終了後に、前記不揮発性メモリから読み出した前記各プログラムを対応する前記各ＰＬＤに書き込んで実行させる第二書込工程と、
前記各ＰＬＤで実行された前記プログラムから該プログラム内に格納されている機能番号を取得する機能番号取得工程と、
前記ＰＬＤ各々について、前記ナンバリング工程によるナンバリングで付けられた付与番号と、前記機能番号取得工程によって取得した機能番号とを比較する比較工程と、
前記比較工程による比較結果を出力する比較結果出力工程と
を含んだことを特徴とするプログラム書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラマブルロジックデバイスを複数搭載し、当該デバイスに書き込むプログラムを保持する不揮発性メモリと、当該不揮発性メモリからプログラムを読み出して当該デバイスに書き込む制御部と、を備えた論理制御装置、および、当該制御部が行なうプログラム書き込み方法に関する。
【背景技術】
【０００２】
従来、電気製品などには、書き換え可能な集積回路を複数搭載したボード（例えば特許文献１参照）が多く用いられている。
【０００３】
書き換え可能な集積回路とは、所定のプログラムを書き込むことで回路を任意に変更できるもので、例えば、ＦＰＧＡ（Field  Programmable  Gate  Array）がある。
【０００４】
当該集積回路各々に対して一意のプログラムを書き込むことで、ボードに一定のシステムを構築する。
【０００５】
しかし、集積回路の多くは、電源の投入期間しかプログラムを記憶しない。したがって、ボードは、ＲＯＭ（Read  Only  Memory）などの不揮発性メモリを搭載し、当該メモリに、各集積回路に書き込むプログラムが格納される。
【０００６】
また、ボードは、制御部を搭載し、当該制御部によって電源投入時にＲＯＭからプログラムを読み出し、集積回路に書き込む。
【０００７】
ところで、当該制御部は、予め決められた順序でプログラムをＲＯＭから逐次読み出し、書き込み先となる集積回路を予め決められた順序で選択し、当該読み出したプログラムを書き込むという単純な処理を行う。
【０００８】
例えば、２つの集積回路「Ａ」〜「Ｂ」に対し、ＲＯＭに格納されたプログラム「Ａ」〜「Ｂ」を書き込む場合、制御部は、まず、プログラム「Ａ」を読み出し、書き込み先として集積回路「Ａ」を選択する。次に、プログラム「Ｂ」を読み出し、書き込み先として集積回路「Ｂ」を選択する。
【０００９】
ボードに一定のシステムを構築するには、集積回路各々に対して一意のプログラムを書き込まなければならないので、このような制御部の処理上、ＲＯＭには、所定の格納場所に所定のプログラムが書き込まれていることが必要となる。
【００１０】
【特許文献１】特開２００３−２２９７６０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ＲＯＭの所定の格納場所に所定のプログラムが書き込まれていない状態でボードに電源を投入すると、本来とは異なるシステムが構築する（ほとんどの場合は、フリーズ状態となる）。
【００１２】
ＲＯＭの格納場所へのプログラムの書き込みは、人の手で行うため、プログラムの格納場所を間違えてしまうことがある。
【００１３】
つまり、ボードの不具合が発生した場合には、プログラムの誤書き込みが原因となり得る。
【００１４】
しかし、不具合の原因にはその他ハード障害などがあり、原因の特定には時間がかかっていた。したがって、時間短縮には、原因を切り分けることが望ましく、プログラムの誤書き込みについては検出することが課題とされた。
【００１５】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、プログラムの誤書き込みを直ちに検出することが可能な論理制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上述した課題を解決し、目的を達成するため、この装置は、デバイス間を結ぶ配線によってループが形成された複数の揮発性のＰＬＤと、複数のプログラムを保持する不揮発性メモリとを搭載した論理制御装置であって、前記各ＰＬＤに書き込むナンバリング処理プログラムを保持するナンバリング処理プログラム保持手段と、前記複数の各ＰＬＤに書き込む複数のプログラムを保持するデバイス用処理プログラム保持手段と、を前記不揮発性メモリ内に有するプログラム保持部と、起動時に、前記ナンバリング処理プログラム保持手段から読み出した前記ナンバリング処理プログラムを前記各ＰＬＤに書き込んでから、実行させる第一書込手段と、前記ナンバリング処理プログラムを実行した前記各ＰＬＤから通知を受け、当該通知に基づいて前記各ＰＬＤのナンバリングを行うナンバリング手段と、前記ナンバリング終了後に、前記デバイス用処理プログラム保持手段から読み出した前記各プログラムを対応する前記各ＰＬＤに書き込んで実行させる第二書込手段と、前記各ＰＬＤで実行された前記プログラムから該プログラム内に格納されている機能番号を取得する機能番号取得手段と、前記ＰＬＤ各々について、前記ナンバリング手段によるナンバリングで付けられた付与番号と、前記機能番号取得手段によって取得した機能番号とを比較する比較手段と、前記比較手段による比較結果を出力する比較結果出力手段と、を有する制御部と、を備えたことを要件とする。
【００１７】
また、この方法は、デバイス間を結ぶ配線によってループが形成された複数の揮発性のＰＬＤと、複数のプログラムを保持する不揮発性メモリとを搭載した論理制御装置が備えるコンフィグレーション制御部が行なうプログラム書き込み方法であって、前記論理制御装置の起動時に、所定の記憶部から読み出したナンバリング処理プログラムを前記各ＰＬＤに書き込んでから、実行させる第一書込工程と、前記ナンバリング処理プログラムを実行した前記各ＰＬＤから通知を受け、当該通知に基づいて前記各ＰＬＤのナンバリングを行うナンバリング工程と、前記ナンバリング終了後に、前記不揮発性メモリから読み出した前記各プログラムを対応する前記各ＰＬＤに書き込んで実行させる第二書込工程と、前記各ＰＬＤで実行された前記プログラムから該プログラム内に格納されている機能番号を取得する機能番号取得工程と、前記ＰＬＤ各々について、前記ナンバリング工程によるナンバリングで付けられた付与番号と、前記機能番号取得工程によって取得した機能番号とを比較する比較工程と、前記比較工程による比較結果を出力する比較結果出力工程とを含んだことを要件とする。
【発明の効果】
【００１８】
あるＰＬＤに対し一意のプログラムを書き込むのであれば、当該ＰＬＤが、複数のＰＬＤで形成されるループ上で、代表ＰＬＤから何番目に位置するかに基づいて機能番号を決定し、当該番号を本来のプログラムに格納しておく。ナンバリング処理プログラムにより各ＰＬＤに付与された付与番号も代表ＰＬＤから何番目に位置するかに基づいて決定される。したがって、ＰＬＤ各々に対して一意のプログラムが書き込まれたか否かは、各ＰＬＤに付与された付与番号と、当該機能番号との間に整合性が取れているか否かで判断することができる。つまり、両者を比較することで、プログラムの誤書き込みを直ちに検出することが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下に添付図面を参照して、本発明に係る論理制御装置の好適な実施例について詳細に説明する。
【実施例１】
【００２０】
まず、実施例１に係る論理制御装置の概要を説明する。論理制御装置は、ＦＰＧＡ（Field  Programmable  Gate  Array）など、所定のプログラムの書き込みに基づいて回路が定義され、かつ、電源投入期間のみ当該書き込まれたプログラムを記憶する揮発性のデバイスを複数搭載し、当該デバイスに書き込むプログラムを保持するプログラム保持部を備える。さらに、論理制御装置は、コンフィグレーション制御部を備え、当該コンフィグレーション制御部によって、起動時に、プログラム保持部からプログラムを読み出してデバイスに書き込む。
【００２１】
コンフィグレーション制御部は、予め決められた順序でプログラム保持部からプログラムを読み出し、当該読み出したプログラムの書き込み先となるデバイスを予め決められた順序で選択し、書き込む。
【００２２】
論理制御装置に一定のシステムを構築するには、デバイス各々に対して一意のプログラムを書き込まなければならないので、このようなコンフィグレーション制御部の処理上、プログラム保持部の所定の格納場所に所定のプログラムが書き込まれていることが必要である。
【００２３】
また、当該論理制御装置では、複数のデバイスは、デバイス間を結ぶ配線によりループを形成することが前提である。つまり、あるデバイスを起点として配線を辿った場合、他の全てのデバイスを通過して最終的には起点のデバイスに戻る。
【００２４】
図１では、コンフィグレーション制御部による処理動作の特徴を示している。まず、コンフィグレーション制御部２０は、各デバイス３０に本来のプログラムを書き込む前に、ナンバリング用のプログラムを書き込む。
【００２５】
各デバイス３０は、ナンバリング用のプログラムを書き込まれると、一つのデバイスが代表（具体的には、ハードウェア的な施策によって、他のデバイスと区別して搭載されたデバイス）となってシリアルデータを生成し、当該シリアルデータを中継する（Ａ１）。シリアルデータは、代表デバイスから出力され、上記した配線を通過し、最終的に代表デバイスに入力される。
【００２６】
ここで、各デバイス３０は、当該シリアルデータを受け取ると、コンフィグレーション制御部２０に対し、シリアルデータを受信したことを示す通知データを出力する（Ｂ１）。
【００２７】
そして、コンフィグレーション制御部２０は、当該通知データの受信順にデバイス３０に対して番号を付与する。
【００２８】
デバイス３０に対する番号の付与後、コンフィグレーション制御部２０は、各デバイス３０に本来のプログラムを書き込む。
【００２９】
本来のプログラムには、予め固有の番号（以下、機能番号）が格納されており、各デバイス３０は、本来のプログラムを書き込まれると、コンフィグレーション制御部２０に対し、当該機能番号を出力する（Ｃ１）。
【００３０】
当該機能番号は、仮に、あるデバイスに対し一意のプログラムを書き込むとして、当該デバイスが、上記したループ上で、代表デバイスから何番目に位置するかに基づいて決定される。
【００３１】
したがって、デバイス各々に対して一意のプログラムが書き込まれたか否かは、各デバイス３０に付与された付与番号と、当該機能番号との間に整合性が取れているか否かで判断することができる。
【００３２】
そこで、コンフィグレーション制御部２０は、各デバイス３０から通知された機能番号と、先にデバイス３０に対して付与した付与番号とを比較し、その整合性を判断する。
【００３３】
両者の整合性がとれていなければ、プログラム保持部４０へプログラムを書き込む際に、順序を誤って書き込んだものと判断することができる。
【００３４】
なお、以下では、付与番号と機能番号に全く同一の数字を用いるものとして説明するが、両者は、整合性を判断できる関係であればよく、必ずしも両者に全く同一の番号を用いる必要はない。
【００３５】
例えば、機能番号が「Ａ１」で、デバイスに対して付与した番号が「Ｂ１」である場合、両者が同一であるか否かで整合性を判断するのではなく、数字部分が同一か否かで整合性を判断することができる。また、付与番号と機能番号に同一の番号を用いた場合でも、例えば、差が１であるか否かで整合性を判断してもよい。
【００３６】
次に、論理制御装置の構成について説明する。図２は、実施例１に係る論理制御装置の構成を示すブロック図である。
【００３７】
論理制御装置１０は、コンフィグレーション制御部２０と、デバイス３０と、プログラム保持部４０と、を備える。なお、デバイス３０の型各は全て同一であるものとして説明を行う。
【００３８】
コンフィグレーション制御部２０は、書込処理部２１と、チェックテーブル２２と、番号付与部２３と、機能番号処理部２４と、整合性判断部２５と、入替処理部２６と、を備える。
【００３９】
書込処理部２１は、プログラム保持部４０からナンバリング用プログラム４１やプログラム４２Ａ１〜４２Ａｎを読み出し、デバイス３０に書き込む。
【００４０】
具体的には、書込処理部２１は、論理制御装置１０に電源が投入されると、まず、ナンバリング用プログラム４１を読み出し、全てのデバイス３０に書き込む。
【００４１】
書込処理部２１は、その後、後述する番号付与部２３から制御信号を受け取ると、次に、本来デバイス３０に書き込むプログラム４２Ａ１〜４２Ａｎを予め決められた順序で逐次読み出す。そして、書込処理部２１は、予め決められた順序通りに書き込み先となるデバイス３０を選択し、当該読み出したプログラムを書き込む。
【００４２】
ここで、ナンバリング用プログラム４１を書き込まれたデバイス３０について説明する。
【００４３】
図３は、ナンバリング用プログラム４１を書き込まれたデバイス３０の構成を示すブロック図である。同図に示すように、デバイス３０は、シリアルデータ生成部３１と、起点認識部３２と、切替部３３と、シリアルデータ受信通知部３４と、を備える。
【００４４】
シリアルデータ生成部３１は、シリアルデータを生成し、後述する切替部３３の動作に基づいて各デバイス３０が形成するループへ出力する。
【００４５】
なお、デバイス３０は、ループを形成する配線への接続に用いる２つのピンを入力ピンおよび出力ピンに指定し（なお、必ず当該ピンである必要はない）、当該シリアルデータを入力／出力する。
【００４６】
起点認識部３２は、自デバイスからシリアルデータを出力するか否かを判定し、判定結果に基づいて切替部３３を制御する。
【００４７】
具体的には、起点認識部３２は、シリアルデータを出力する場合には、切替部３３がシリアルデータ生成部３１からシリアルデータを受け取るように制御し、出力しない場合には、切替部３３が自デバイス外からシリアルデータを受け取るように制御する。
【００４８】
なお、論理制御装置１０には、予め、起点認識部３２が判定を行えるような仕組みを設ける必要がある。
【００４９】
切替部３３は、入力されたシリアルデータを自デバイス外に出力する。具体的には、切替部３３は、起点認識部３２によってシリアルデータの入力先を選択的に切り換えられ、シリアルデータ生成部３１、または、自デバイス外から入力されたシリアルデータを自デバイス外に出力する。
【００５０】
シリアルデータ受信通知部３４は、シリアルデータの受信をコンフィグレーション制御部２０に通知する。具体的には、シリアルデータ受信通知部３４は、自デバイス外からシリアルデータが入力されると、通知データを生成し、当該通知データをコンフィグレーション制御部２０に出力する。
【００５１】
上述したように、ナンバリング用プログラム４１を書き込まれたデバイス３０には、各機能部３１〜３４が生成される。その結果、コンフィグレーション制御部２０は、各デバイス３０から通知データを受信する。
【００５２】
チェックテーブル２２は、デバイス３０に対して付与される付与番号と、デバイス３０から通知される機能番号と、をデバイス３０ごとに記憶する。
【００５３】
具体的には、図４に示すように、チェックテーブル２２は、コンフィグレーション制御部２０が各デバイス３０との接続に用いられ、通知データや機能番号が入力される入力ピンの識別情報に関連付けて、付与番号と、機能番号を記憶する。
【００５４】
なお、図４に示すように、チェックテーブル２２では、電源投入時には付与番号や機能番号はブランクである。
【００５５】
番号付与部２３は、通知データの入力に基づいて、デバイス３０に対して番号を付与する。
【００５６】
具体的には、番号付与部２３は、コンフィグレーション制御部２０に通知データが入力されると、何番目に入力したかによって付与番号を決定し、入力ピンの識別情報に関連付けてチェックテーブル２２に格納する。
【００５７】
したがって、例えば、最初に入力ピン「Ｂ」から通知データが入力された場合には、図５に示すように、チェックテーブル２２には、付与番号「１」が格納される。
【００５８】
通知データの受信が終了すると、番号付与部２３は、書込処理部２１に対し、本来のプログラム４２Ａ１〜４２Ａｎの読み出しを指示する制御信号を書込処理部２１に出力する。
【００５９】
ここで、本来のプログラム４２Ａ１〜４２Ａｎを書き込まれたデバイス３０について説明する。
【００６０】
図６は、本来のプログラム４２Ａ１〜４２Ａｎを書き込まれたデバイス３０の構成を示すブロック図である。同図に示すように、デバイス３０は、本来のプログラム４２Ａ１〜４２Ａｎに基づく処理を実行する機能実行部３５に加え、機能番号保持部３６と、機能番号送信部３７と、を備える。
【００６１】
機能番号保持部３６は、プログラム４２Ａ１〜４２Ａｎに予め格納された機能番号を記憶する。
【００６２】
機能番号送信部３７は、機能番号保持部３６から機能番号を読み出し、コンフィグレーション制御部２０に出力する。なお、その際、図６に示すように、機能番号の前に同期ヘッダを挿入するようにしてもよい。
【００６３】
上述したように、本来のプログラム４２Ａ１〜４２Ａｎを書き込まれたデバイス３０には、各機能部３５〜３７が生成される。その結果、コンフィグレーション制御部２０は、各デバイス３０から機能番号を受信する。
【００６４】
機能番号処理部２４は、コンフィグレーション制御部２０に機能番号が入力されると、入力ピンの識別情報に関連付けてチェックテーブル２２に格納する。
【００６５】
したがって、例えば、最初に入力ピン「Ａ」から機能番号「３」が入力された場合には、図７に示すように、チェックテーブル２２には、機能番号「３」が格納される。
【００６６】
整合性判断部２５は、各デバイス３０から通知された機能番号と、先にデバイス３０に対して付与した番号とを比較し、その整合性を判断する。
【００６７】
具体的には、整合性判断部２５は、チェックテーブル２２に機能番号が全て格納されると、入力ピンの識別情報ごとに、付与番号と機能番号を逐次比較する。例えば、入力ピン「Ａ」に関連付けられた付与番号と機能番号から比較する。
【００６８】
そして、整合性判断部２５は、両者が一致しない場合には、入替処理部２６に対して入力ピンの識別情報を出力し、当該ピンに接続されたデバイス３０に対するプログラム４２Ａ１〜４２Ａｎの入れ替えを指示する。
【００６９】
入替処理部２６は、整合性判断部２５の指示に応じて、デバイス３０に対するプログラム４２Ａ１〜４２Ａｎの入れ替えを行う。
【００７０】
具体的には、入替処理部２６は、入力ピンの識別情報を受け取ると、チェックテーブル２２を参照し、当該入力ピンの識別情報に関連付けられた付与番号と同一の機能番号を検索する。
【００７１】
そして、入替処理部２６は、同一の機能番号が存在する場合には、付与番号と不一致の機能番号を通知したデバイスに対し、検索結果の機能番号を通知したデバイスに書き込んだプログラムを書き込む。このような入れ替え処理を実行後、入替処理部２６は、整合性判断部２５に応答を返す。なお、当該応答により、整合性判断部２５は、次の付与番号と機能番号を選択し、両者の比較を行なう。
【００７２】
一方、入替処理部２６は、同一の機能番号が存在しない場合には、通知部５０に制御信号を出力する。
【００７３】
通知部５０は、アラームやＬＥＤで実現され、入替処理部２６の制御信号に応じて警報を鳴らしたり、点灯したりする。つまり、あるデバイスに対して一意のプログラムがプログラム保持部４０にもともと格納されておらず、プログラムの入れ替えができない場合に、通知部５０が動作する。
【００７４】
次に、コンフィグレーション制御部２０の処理動作について図８のフローチャートを参照して説明する。同図に示した処理フローは、論理制御装置１０が起動する際に繰り返し実行される処理である。
【００７５】
同図に示すように、コンフィグレーション制御部２０は、プログラム保持部４０からナンバリング用プログラム４１を読み出し（ステップＳ１１０）、全てのデバイス３０に書き込む（ステップＳ１２０）。
【００７６】
各デバイス３０からは、通知データが出力されるので、コンフィグレーション制御部２０は、通知データの受信順にデバイス３０に対して番号を付与する（ステップＳ１３０）。
【００７７】
その後、コンフィグレーション制御部２０は、プログラム保持部４０から本来のプログラム４２Ａ１〜４２Ａｎを読み出し（ステップＳ１４０）、各デバイス３０に書き込む（ステップＳ１５０）。
【００７８】
すると、各デバイス３０からは、機能番号が通知されるので、コンフィグレーション制御部２０は、当該通知された機能番号をチェックテーブル２２に格納する（ステップＳ１６０）。
【００７９】
全て機能番号を格納すると、コンフィグレーション制御部２０は、初めに選択する付与番号と機能番号を選択して比較する（ステップＳ１７０）。
【００８０】
そして、両者が一致する場合には（ステップＳ１８０肯定）、コンフィグレーション制御部２０は、次の付与番号と機能番号を選択して比較する（ステップＳ１９０否定およびステップＳ２００）。
【００８１】
コンフィグレーション制御部２０は、全ての付与番号と機能番号を選択し、両者が一致している場合には（ステップＳ１８０肯定かつステップＳ１９０肯定）、処理を終了する。
【００８２】
ステップＳ１８０に戻って、両者が一致しない場合には（ステップＳ１８０否定）、コンフィグレーション制御部２０は、付与番号と同一の機能番号をチェックテーブル２２から検索する（ステップＳ２０５）。
【００８３】
そして、対象の機能番号がある場合には（ステップＳ２１０肯定）、コンフィグレーション制御部２０は、付与番号と不一致の機能番号を通知したデバイスに対し、検索結果の機能番号を通知したデバイスに書き込んだプログラムを書き込む（ステップＳ２２０）。
【００８４】
そして、コンフィグレーション制御部２０は、次の付与番号と機能番号を選択して比較し（ステップＳ２３０）、ステップＳ１８０で示した処理に戻る。
【００８５】
一方、検索の結果、対象の機能番号がない場合には（ステップＳ２１０否定）、コンフィグレーション制御部２０は、通知部５０を制御して報知し（ステップＳ２４０）、処理を終了する。
【００８６】
上述してきたように、実施例１によれば、あるデバイスに対し一意のプログラムを書き込むとして、当該デバイスが、複数のデバイスで形成されるループ上で、代表デバイスから何番目に位置するかに基づいて機能番号を決定し、当該番号を本来のプログラムに格納しておく。コンフィグレーション制御部は、起動時に、デバイスにナンバリング用プログラムを書き込み、デバイスに対してナンバリングを行なう。当該ナンバリングにより各デバイスに付与される付与番号も、上記したループ上で代表デバイスから何番目に位置するかに基づいて決定される。コンフィグレーション制御部は、次に、本来のプログラムを書き込み、各デバイスから機能番号を取得すると、デバイス各々について、付与番号と機能番号を比較する。デバイス各々に対して一意のプログラムが書き込まれたか否かは、各デバイスに付与された付与番号と、当該機能番号との間に整合性が取れているか否かで判断することができる。つまり、両者を比較することで、プログラムの誤書き込みを直ちに検出することが可能となる。
【００８７】
また、実施例１によれば、コンフィグレーション制御部は、両者が整合性を欠く場合には、付与番号および機能番号に基づいてデバイス間でプログラムを入れ替えて書き換える。こうすることによって、プログラムを誤書き込みしただけであればそれを修正し、論理制御装置を一定のシステムで正常に起動することが可能となる。
【００８８】
また、実施例１によれば、通知部を設置することにより、プログラムの誤書き込みを管理者に報知することが可能となる。
【実施例２】
【００８９】
さて、これまで実施例１に係る論理制御装置について説明したが、本発明は上述した実施例１以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に示すように、（１）〜（７）にそれぞれ区分けして異なる実施例を説明する。
【００９０】
（１）デバイスの型格
上記の実施例では、論理制御装置が備えるデバイスが全て同一の型格であることを前提として説明したが、本発明はこれに限定されるものではなく、異なる種類の型格を併せて備えるようにしてもよい。
【００９１】
その場合には、デバイスの型格ごとにナンバリング用プログラムをプログラム保持部に格納する。そして、コンフィグレーション制御部は、例えば、一つのデバイスに対し、型格が当てはまるまでナンバリング用プログラムを書き込む。
【００９２】
（２）報知
また、上記の実施例では、同一の機能番号が存在しない場合に、通知部５０による報知が行なわれるものとして説明したが、本発明はこれに限定されるものではなく、プログラムの書き換え自体が行なわれなかった場合、または、プログラムの書き換えの結果、デバイス各々に一意のプログラムが書き込まれた場合に、通知部５０による報知を行うようにしてもよい。このようにすれば、通知部５０が、論理制御装置が一定のシステムで正常に起動したことも管理者に報知することが可能となる。
【００９３】
また、上記したいずれの場合にも報知はするが、同一の機能番号が存在しない場合には、例えば、ＬＥＤを赤色に点灯させ、プログラムの書き換え自体が行なわれなかった場合、または、プログラムの書き換えの結果、デバイス各々に一意のプログラムが書き込まれた場合には、ＬＥＤを青色に点灯させる。このように、場合によって異なる報知を行なうようにしてもよい。
【００９４】
なお、プログラムの書き換え自体が行なわれなかった場合、または、プログラムの書き換えの結果、デバイス各々に一意のプログラムが書き込まれた場合の通知部５０による報知後、論理制御装置をリセットするようにしてもよい。このようにすれば、起動直後に論理制御装置を正常に動作させることが可能となる。
【００９５】
（３）報知後の動作
また、上記の実施例では、通知部５０の報知が継続されるものとして説明を行ったが、本発明はこれに限定されるものではなく、報知後に論理制御装置の電源を切るようにしてもよい。こうすることによって、デバイス３０に掛かる負荷を軽減することが可能となる。
【００９６】
（４）デバイスの搭載
また、上記の実施例では、デバイスを区分けすることなく論理制御装置に搭載するものとして説明を行ったが、本発明はこれに限定されるものではなく、図９に示すように、ボード上に複数のデバイス３０を搭載し、当該ボードを複数枚搭載することでデバイスを区分けして搭載するようにしてもよい。なお、ボードごとにコンフィグレーション制御部やプログラム保持部を設置する手法と比較して、装置内の部品実装面積や装置規模を削減することが可能となる。
【００９７】
その場合、さらに、同図に示すように、ボード６０Ａ１〜Ａ３ごとに通知部５０Ａ１〜Ａ３を設置するようにしてもよい。そして、例えば、ボード６０Ａ１が搭載するデバイス３０に対して一意のプログラムがプログラム保持部４０にもともと格納されてない場合に、当該ボード６０Ａ１に対応する通知部５０Ａ１のみが報知を行うようにしてもよい。
【００９８】
なお、同図に示すようにデバイスを搭載する場合であっても、上述したように、報知後に論理制御装置の電源を切るようにしてもよい。
【００９９】
さらに、上述したように、プログラムの書き換え自体が行なわれなかった場合、または、プログラムの書き換えの結果、デバイス各々に一意のプログラムが書き込まれた場合に、通知部５０Ａ１〜Ａ３による報知を行うようにしてもよい。なお、当該報知後にリセットを行うようにしてもよい。
【０１００】
さらに、上述したように、同一の機能番号が存在しない場合には、例えば、ＬＥＤを赤色に点灯させ、プログラムの書き換え自体が行なわれなかった場合、または、プログラムの書き換えの結果、デバイス各々に一意のプログラムが書き込まれた場合には、ＬＥＤを青色に点灯させる。このように、場合によって異なる報知を行なうようにしてもよい。
【０１０１】
（５）報知を行なう範囲
また、上記の実施例では、論理制御装置からアラームやＬＥＤによる報知があるものとして説明を行ったが、本発明はこれに限定されるものではなく、図１０に示すように、当該論理制御装置１０に接続された他の装置１００でも報知が行われるようにしてもよい。具体的には、同図に示すように、通知部５０が他の装置１００の通知部１５０にアラーム情報を転送することにより実現する。こうすることによって、論理制御装置を遠隔で管理する場合に、プログラムの誤書き込みを管理者に報知することが可能となる。
【０１０２】
（６）起動時の処理
また、上記の実施例では、起動時のたびにナンバリング用プログラムを読み出して書き込むものとして説明を行ったが、本発明はこれに限定されるものではなく、例えば、チェックテーブル２２に情報が格納されているか否かにより、かかる処理を省略するようにしてもよい。
【０１０３】
つまり、プログラムの書き換え自体が行なわれなかった場合、または、プログラムの書き換えの結果、デバイス各々に一意のプログラムが書き込まれた場合に、例えば、チェックテーブル２２に格納された情報を保存しておく。なお、プログラム保持部４０に同様の情報を格納するようにしてもよい。
【０１０４】
書込処理部２１は、次回起動時に、チェックテーブル２２にアクセスして付与番号や機能番号が格納されているか否かを判定する。そして、書込処理部２１は、格納されている場合には、チェックテーブル２２に基づいてプログラム４２Ａ１〜Ａｎを読み出してデバイス３０に書き込むようにしてもよい。こうすることによって、論理制御装置の２回目以降の起動を迅速に行なうことが可能となる。
【０１０５】
（７）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散、統合の具体的形態は図示のものに限られず、例えば、書込処理部２１を、ナンバリング用プログラムの書込処理部と、本来のプログラムの書き込み処理部とに分散するなど、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散、統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１０６】
以上の実施例１〜２を含む実施形態に関し、更に以下の付記を開示する。
【０１０７】
（付記１）デバイス間を結ぶ配線によってループが形成された複数の揮発性のＰＬＤと、複数のプログラムを保持する不揮発性メモリとを搭載した論理制御装置であって、
前記各ＰＬＤに書き込むナンバリング処理プログラムを保持するナンバリング処理プログラム保持手段と、
前記複数の書くＰＬＤに書き込む複数のプログラムを保持するデバイス用処理プログラム保持手段と、
を前記不揮発性メモリ内に有するプログラム保持部と、
起動時に、前記ナンバリング処理プログラム保持手段から読み出した前記ナンバリング処理プログラムを前記各ＰＬＤに書き込んでから、実行させる第一書込手段と、
前記ナンバリング処理プログラムを実行した前記各ＰＬＤから通知を受け、当該通知に基づいて前記各ＰＬＤのナンバリングを行うナンバリング手段と、
前記ナンバリング終了後に、前記不揮発性メモリから読み出した前記各プログラムを対応する前記各ＰＬＤに書き込んで実行させる第二書込手段と、
前記各ＰＬＤで実行された前記プログラムから該プログラム内に格納されている機能番号を取得する機能番号取得手段と、
前記ＰＬＤ各々について、前記ナンバリング手段によるナンバリングで付けられた付与番号と、前記機能番号取得手段によって取得した機能番号とを比較する比較手段と、
前記比較手段による比較結果を出力する比較結果出力手段と、
を有する制御部と、
を備えたことを特徴とする論理制御装置。
【０１０８】
（付記２）前記比較手段による比較の結果、両者が整合性を欠く場合には、前記付与番号および前記機能番号に基づいてプログラムの入れ替えを試行し、当該入れ替えが成立する場合には、前記ＰＬＤのプログラムを書き換えるプログラム入替手段をさらに備えたことを特徴とする付記１に記載の論理制御装置。
【０１０９】
（付記３）前記ＰＬＤのいずれか一つを起点ＰＬＤとして他と区別して搭載し、
前記ナンバリング手段は、前記ナンバリング処理プログラムを実行した前記起点ＰＬＤで生成されたシリアルデータを受信したＰＬＤから通知を受けることを特徴とする付記１または２に記載の論理制御装置。
【０１１０】
（付記４）前記プログラム入替手段による入れ替えが成立しない場合、および／または、前記プログラム入替手段による書き換えが終了した場合に、報知を行う報知手段をさらに備えたことを特徴とする付記２または３に記載の論理制御装置。
【０１１１】
（付記５）前記報知手段による報知が、前記プログラム入替手段による入れ替えの試行が失敗した場合と、前記プログラム入替手段による書き換えが終了した場合とで、区別して行われることを特徴とする付記４に記載の論理制御装置。
【０１１２】
（付記６）前記報知手段による報知が、アラームまたは発光で行われることを特徴とする付記４または５に記載の論理制御装置。
【０１１３】
（付記７）前記プログラム入替手段による入れ替えが成立しない場合に行われる前記報知手段の報知を契機として自装置の電源を切る電源管理手段をさらに備えたことを特徴とする付記４、５または６に記載の論理制御装置。
【０１１４】
（付記８）前記プログラム入替手段による書き換えが終了した場合に行われる前記報知手段の報知を契機として自装置をリセットするリセット手段をさらに備えたことを特徴とする付記４〜７のいずれか一つに記載の論理制御装置。
【０１１５】
（付記９）前記ＰＬＤが複数搭載されたボードを複数枚含んで構成されることを特徴とする付記４〜８のいずれか一つに記載の論理制御装置。
【０１１６】
（付記１０）前記報知手段が前記ボードごとに設置されることを特徴とする付記９に記載の論理制御装置。
【０１１７】
（付記１１）前記報知手段による報知が、自装置と接続する他装置が備える報知手段で行なわれることを特徴とする付記４〜１０のいずれか一つに記載の論理制御装置。
【０１１８】
（付記１２）前記プログラム入替手段による書き換えが終了した場合に、前記付与番号および前記機能番号の対応関係を記憶部に格納する対応関係格納手段をさらに備え、前記第一書込手段は、起動時に、前記記憶部に前記対応関係が格納されている場合には、当該対応関係に基づく順序で前記デバイス用処理プログラム保持手段からプログラムを読み出し、前記ＰＬＤに書き込んでから、実行させることを特徴とする付記２〜１１のいずれか一つに記載の論理制御装置。
【０１１９】
（付記１３）デバイス間を結ぶ配線によってループが形成された複数の揮発性のＰＬＤと、複数のプログラムを保持する不揮発性メモリとを搭載した論理制御装置が備えるコンフィグレーション制御部が行なうプログラム書き込み方法であって、前記論理制御装置の起動時に、所定の記憶部から読み出したナンバリング処理プログラムを前記各ＰＬＤに書き込んでから、実行させる第一書込工程と、前記ナンバリング処理プログラムを実行した前記各ＰＬＤから通知を受け、当該通知に基づいて前記各ＰＬＤのナンバリングを行うナンバリング工程と、前記ナンバリング終了後に、前記不揮発性メモリから読み出した前記各プログラムを対応する前記各ＰＬＤに書き込んで実行させる第二書込工程と、前記各ＰＬＤで実行された前記プログラムから該プログラム内に格納されている機能番号を取得する機能番号取得工程と、前記ＰＬＤ各々について、前記ナンバリング工程によるナンバリングで付けられた付与番号と、前記機能番号取得工程によって取得した機能番号とを比較する比較工程と、前記比較工程による比較結果を出力する比較結果出力工程とを含んだことを特徴とするプログラム書き込み方法。
【図面の簡単な説明】
【０１２０】
【図１】コンフィグレーション制御部による処理動作の特徴を説明するための図である。
【図２】論理制御装置の概要構成を示すブロック図である。
【図３】ナンバリング用プログラムが書き込まれたデバイスの概要構成を示すブロック図である。
【図４】具体的なチェックテーブルを示す図ある。
【図５】付与番号が格納されたチェックテーブルを示す図である。
【図６】本来のプログラムが書き込まれたデバイスの概要構成を示すブロック図である。
【図７】付与番号および機能番号が格納されたチェックテーブルを示す図である。
【図８】コンフィグレーション制御部の処理の流れを示すフローチャートである。
【図９】実施例１の変形例を説明するための図である。
【図１０】実施例１の変形例を説明するための図である。
【符号の説明】
【０１２１】
１０  論理制御装置
２０  コンフィグレーション制御部
２１  書込処理部
２２  チェックテーブル
２３  番号付与部
２４  機能番号処理部
２５  整合性判断部
２６  入替処理部
３０  デバイス
３１  シリアルデータ生成部
３２  起点認識部
３３  切替部
３４  シリアルデータ受信通知部
３５  機能実行部
３６  機能番号保持部
３７  機能番号送信部
４０  プログラム保持部
４１  ナンバリング用プログラム
４２Ａ１〜４２Ａｎ  プログラム
５０  通知部
【図１】
0005115274.tif 000002
【図２】
0005115274.tif 000003
【図３】
0005115274.tif 000004
【図４】
0005115274.tif 000005
【図５】
0005115274.tif 000006
【図６】
0005115274.tif 000007
【図７】
0005115274.tif 000008
【図８】
0005115274.tif 000009
【図９】
0005115274.tif 000010
【図１０】
0005115274.tif 000011