(57)【要約】【課題】制御装置の機種間において同一のソフトウェアによって第１記憶部の第１領域へのアクセスを実行することができる制御装置を提供する。【解決手段】実施形態の制御装置は、外部機器を制御する制御装置であって、第１記憶部と、第２記憶部と、制御部と、を備える。第１記憶部は、外部機器を制御するための第１情報を記憶可能な第１領域を有する。第２記憶部は、第１領域に対するアクセスを実行可能なソフトウェアを記憶する。制御部は、第２記憶部に記憶されたソフトウェアを実行する。ソフトウェアは、制御装置の機種を特定し、制御装置の機種と当該機種の制御装置が備える第１記憶部における第１領域のアドレスとを対応付けて記憶するデータベースにおいて、当該特定した機種と対応付けて記憶されるアドレスに従って第１領域に対するアクセスを実行する。【選択図】図２
2015207172.tif 000002
【特許請求の範囲】
【請求項１】
外部機器を制御する制御装置であって、
前記外部機器を制御するための第１情報を記憶可能な第１領域を有する第１記憶部と、
前記第１領域に対するアクセスを実行可能なソフトウェアを記憶する第２記憶部と、
前記第２記憶部に記憶された前記ソフトウェアを実行する制御部と、を備え、
前記ソフトウェアは、前記制御装置の機種を特定し、前記制御装置の機種と当該機種の前記制御装置が備える前記第１記憶部における前記第１領域のアドレスとを対応付けて記憶するデータベースにおいて、当該特定した機種と対応付けて記憶される前記アドレスに従って前記第１領域に対するアクセスを実行する制御装置。
【請求項２】
前記ソフトウェアは、前記制御装置の起動処理の開始後、前記第１領域に対するアクセスの実行に先立って、前記データベースから、特定した機種と対応付けて記憶された前記アドレスを読み出して前記第１記憶部の所定の第２領域に書き込み、前記第２領域に記憶された前記アドレスに従って前記第１領域に対するアクセスを実行する請求項１に記載の制御装置。
【請求項３】
前記第１記憶部は、前記第１情報の種類毎に設けられた複数の前記第１領域を有し、
前記データベースは、前記制御装置の機種と対応付けて、前記第１情報の各種類に対応する前記第１領域の前記アドレスを記憶し、
前記ソフトウェアは、前記データベースにおいて、特定した機種と対応付けて記憶されかつ前記第１領域へのアクセスにより書き込みおよび読み出しの少なくとも一方を実行する前記第１情報の種類に対応する前記アドレスに従って前記第１領域へのアクセスを実行する請求項１または２に記載の制御装置。
【請求項４】
前記ソフトウェアは、上位機器から、前記制御装置の機種を識別可能とする第２情報を受信し、当該受信した第２情報に基づいて前記制御装置の機種を特定する請求項１から３のいずれか一に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、制御装置に関する。
【背景技術】
【０００２】
コントローラやＰＬＣ（Programmable  Logic  Controller）等の制御装置のＣＰＵ（Central  Processing  Unit）モジュールは、当該ＣＰＵモジュールに接続されたＩ（Input）／Ｏ（Output）モジュール等の外部機器を制御するためのＩ／Ｏ変数を記憶可能な記憶領域を記憶部に割り付けている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１４２９３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、制御装置によって制御可能な外部機器の数は、当該制御装置が装備している記憶部の容量によって異なるため、容量が異なる記憶部を装備する制御装置は、別機種となっている。それに伴い、制御装置に装備されるファームウェア等のソフトウェアも、当該ソフトウェアにより実行される処理機能が同じでも、制御装置が装備する記憶部の容量によってメモリ管理方法（例えば、記憶部における、Ｉ／Ｏ変数を記憶可能な記憶領域の割り付け等）が異なるため、制御装置の機種毎に別のソフトウェアを製造・管理している。
【０００５】
また、従来技術においては、機種が異なる制御装置に搭載された処理機能が同じ２つのソフトウェアに対して、機能の追加や機能の修正等の変更を行う場合、当該２つのソフトウェアそれぞれに変更を行う必要があるため、当該２つのソフトウェアそれぞれに対する変更に誤って差異が生じる可能性があり、同じ変更作業を２度行う必要もありその作業量が増えるので、ソフトウェアの管理が複雑になる。
【課題を解決するための手段】
【０００６】
実施形態の制御装置は、外部機器を制御する制御装置であって、第１記憶部と、第２記憶部と、制御部と、を備える。第１記憶部は、外部機器を制御するための第１情報を記憶可能な第１領域を有する。第２記憶部は、第１領域に対するアクセスを実行可能なソフトウェアを記憶する。制御部は、第２記憶部に記憶されたソフトウェアを実行する。ソフトウェアは、制御装置の機種を特定し、制御装置の機種と当該機種の制御装置が備える第１記憶部における第１領域のアドレスとを対応付けて記憶するデータベースにおいて、当該特定した機種と対応付けて記憶されるアドレスに従って第１領域に対するアクセスを実行する。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態にかかるコントローラの構成を示すブロック図である。
【図２】図２は、第１の実施形態にかかるコントローラが備えるファームウェアによるＩ／Ｏ変数領域へのアクセス動作を説明するための図である。
【図３】図３は、第１の実施形態にかかるコントローラが備えるファームウェアによるＩ／Ｏ変数領域へのアクセス動作の流れを示すフローチャートである。
【図４】図４は、第２の実施形態にかかるコントローラが備えるファームウェアによるＩ／Ｏ変数領域へのアクセス動作を説明するための図である。
【図５】図５は、第３の実施形態にかかるコントローラが備えるファームウェアによるＩ／Ｏ変数領域へのアクセス動作を説明するための図である。
【発明を実施するための形態】
【０００８】
以下、添付の図面を用いて、本実施形態にかかる制御装置を適用したコントローラについて説明する。
【０００９】
（第１の実施形態）
図１は、第１の実施形態にかかるコントローラの構成を示すブロック図である。本実施形態では、コントローラ１は、制御対象のＩ／Ｏモジュール３（外部機器の一例）を制御する制御装置の一例であり、図１に示すように、ＲＡＭ（Random  Access  Memory）１０１と、ＣＰＵ（Central  Processing  Unit）モジュール１０２と、通信Ｉ／Ｆ１０３と、ＲＯＭ（Read  Only  Memory）１０４と、を備えている。
【００１０】
通信Ｉ／Ｆ１０３は、イーサーネット（登録商標）等のネットワークを介して、コントローラ１を含む情報処理システム全体を制御するエンジニアリングツール２０１を備えたＰＣ（Personal  Computer）２等の上位機器と接続され、当該上位機器と通信可能なインタフェースである。
【００１１】
ＲＡＭ１０１は、後述するＣＰＵモジュール１０２の作業領域として機能する。具体的には、ＲＡＭ１０１（第１記憶部の一例）は、Ｉ／Ｏモジュール３を制御するためのＩ／Ｏ変数（第１情報の一例）を記憶可能なＩ／Ｏ変数領域１０１ａ（図２参照、第１領域の一例）を有する。本実施形態では、ＲＡＭ１０１は、Ｉ／Ｏ変数以外の他の変数を記憶可能な変数領域１０１ｂ（図２参照）やＩ／Ｏ変数領域１０１ａのアドレス（以下、Ｉ／Ｏ変数アドレスと言う）を記憶可能な変数ポインタ領域１０１ｃ（図２参照、所定の第２領域の一例）等を有している。
【００１２】
ＲＯＭ１０４（第２記憶部の一例）は、後述するＣＰＵモジュール１０２により実行され、ＲＡＭ１０１が有するＩ／Ｏ変数領域１０１ａ（図２参照）へアクセス（例えば、Ｉ／Ｏ変数領域１０１ａへのＩ／Ｏ変数の書き込み、Ｉ／Ｏ変数領域１０１ａからのＩ／Ｏ変数の読み出しなど）を実行可能なファームウェア１０４ａ（図２参照、ソフトウェアの一例）やＯＳ（Operating  System）等の各種プログラムを記憶する。
【００１３】
また、ＲＯＭ１０４は、コントローラ１の機種を識別可能とする機種情報（例えば、機種名など）と、当該機種情報により識別される機種のコントローラ１が有するＲＡＭ１０１におけるＩ／Ｏ変数領域１０１ａ（図２参照）のアドレスであるＩ／Ｏ変数アドレスと、を対応付けるアドレス表１０４ｂ（図２参照、データベースの一例）を記憶する。
【００１４】
ＣＰＵモジュール１０２は、コントローラ１全体を制御する。具体的には、ＣＰＵモジュール１０２は、バスを介して接続されているＲＡＭ１０１、ＲＯＭ１０４等の各部を制御する。
【００１５】
また、ＣＰＵモジュール１０２には、コントローラ１が制御するＩ／Ｏモジュール３が複数接続されている。そして、ＣＰＵモジュール１０２（制御部の一例）は、ＲＯＭ１０４に記憶されたファームウェア１０４ａ（図２参照）を実行することにより、ＲＡＭ１０１が有するＩ／Ｏ変数領域１０１ａ（図２参照）へのアクセスを実行する。
【００１６】
ここで、図２を用いて、本実施形態にかかるコントローラ１が備えるファームウェア１０４ａによるＩ／Ｏ変数領域１０１ａへのアクセス動作について説明する。図２は、第１の実施形態にかかるコントローラが備えるファームウェアによるＩ／Ｏ変数領域へのアクセス動作を説明するための図である。
【００１７】
コントローラ１に搭載されるＲＡＭ１０１は、コントローラ１の機種（ＣＰＵモジュール１０２に接続されたＩ／Ｏモジュール３の数であるＩ／Ｏモジュール数、言い換えると、コントローラ１により制御する外部機器の数）によってその容量が異なる。例えば、機種Ａのコントローラ１により制御するＩ／Ｏモジュール数が「１」で、機種Ｂのコントローラ１により制御するＩ／Ｏモジュール数が「５」である場合、機種ＡのＲＡＭ１０１の容量は、図２に示すように、機種ＢのＲＡＭ１０１の容量より少ない。それに伴い、機種ＡのＲＡＭ１０１におけるＩ／Ｏ変数領域１０１ａの容量も、図２に示すように、機種ＢのＲＡＭ１０１におけるＩ／Ｏ変数領域１０１ａの容量よりも少なくなる。
【００１８】
しかしながら、機種ＡのＣＰＵモジュール１０２および機種ＢのＣＰＵモジュール１０２それぞれの処理機能は同一であるため、ＲＡＭ１０１におけるＩ／Ｏ変数以外の他の変数を記憶可能な変数領域１０１ｂの容量およびアドレスは、図２に示すように、機種Ａと機種Ｂとの間において同一となる。そのため、機種Ａおよび機種ＢそれぞれのＩ／Ｏ変数領域１０１ａを、図２に示すように、ＲＡＭ１０１における同じ領域に設けることはできない。
【００１９】
従来のコントローラにおいては、コントローラの機種毎に異なるファームウェアに設計することにより、機種毎に異なるＩ／Ｏ変数領域へのアクセスを実現していたが、コントローラの機種毎に異なるファームウェアを設計しなければならない。
【００２０】
また、従来のコントローラにおいては、機種が異なるコントローラに搭載されかつ処理機能が同じ２つのファームウェアに対して機能の追加や機能の修正等の変更を行う場合、当該２つのファームウェアそれぞれに変更を行う必要があるため、当該２つのファームウェアそれぞれに対する変更に誤って差異が生じる可能性があり、同じ変更作業を２度行う必要もありその作業量が増えるので、ファームウェアの管理が複雑になる。
【００２１】
そこで、本実施形態にかかるコントローラ１では、ＣＰＵモジュール１０２により実行されるファームウェア１０４ａが、当該ファームウェア１０４ａが搭載されたコントローラ１の機種を特定し、ＲＯＭ１０４に記憶されたアドレス表１０４ｂにおいて、当該特定した機種の機種情報と対応付けて記憶されたＩ／Ｏ変数アドレスに従って、ＲＡＭ１０１が有するＩ／Ｏ変数領域１０１ａにアクセスする。
【００２２】
これにより、本実施形態にかかるコントローラ１によれば、コントローラ１の機種毎に異なるファームウェア１０４ａを設計しなくても、機種毎に異なるＩ／Ｏ変数領域１０１ａへのアクセスを実現することができるので、コントローラ１の機種が異なる場合でも同一のファームウェア１０４ａによってＩ／Ｏ変数領域１０１ａへのアクセスを実行することができる。
【００２３】
また、本実施形態にかかるコントローラ１によれば、異なる機種のコントローラ１のファームウェア１０４ａに機能追加や機能修正等の各種の変更を行う場合に、各機種のコントローラ１のファームウェア１０４ａに対して同様の変更を行えば良いので、ファームウェア１０４ａに対する各種変更を行う場合の変更ミスや作業量が低減でき、ファームウェア１０４ａの管理を統一化することができる。
【００２４】
次に、図２および図３を用いて、本実施形態にかかるコントローラ１におけるＩ／Ｏ変数領域１０１ａへのアクセス動作について説明する。図３は、第１の実施形態にかかるコントローラが備えるファームウェアによるＩ／Ｏ変数領域へのアクセス動作の流れを示すフローチャートである。
【００２５】
本実施形態では、ＣＰＵモジュール１０２は、コントローラ１の起動処理が開始されると、ＲＯＭ１０４に記憶されたファームウェア１０４ａを実行する（ステップＳ３０１）。ファームウェア１０４ａは、コントローラ１の起動時に当該コントローラ１が備えるハードウェアから出力される信号（以下、ハードウェア信号と言う）に基づいて、コントローラ１の機種を特定する（ステップＳ３０２）。
【００２６】
本実施形態では、ファームウェア１０４ａは、ハードウェア信号に基づいてコントローラ１の機種を特定しているが、これに限定するものではなく、例えば、コントローラ１が備える図示しない操作部または通信Ｉ／Ｆ１０３を介してＰＣ２から入力された機種情報に基づいて、コントローラ１の機種を特定しても良い。
【００２７】
次いで、ファームウェア１０４ａは、コントローラ１の起動処理の開始後、Ｉ／Ｏ変数領域１０１ａへのアクセスに先立って、ＲＯＭ１０４に記憶されたアドレス表１０４ｂから、ステップＳ３０２において特定した機種と対応付けられたＩ／Ｏ変数アドレスを読み出す（ステップＳ３０３）。本実施形態では、ファームウェア１０４ａは、コントローラ１自身が有する記憶部（ＲＯＭ１０４に記憶されたアドレス表１０４ｂ）からＩ／Ｏ変数アドレスを読み出しているが、これに限定するものではなく、例えば、ＰＣ２等が備える外部記憶部に記憶されたアドレス表１０４ｂからＩ／Ｏ変数アドレスを読み出すようにすることも可能である。
【００２８】
そして、ファームウェア１０４ａは、読み出したＩ／Ｏ変数アドレスを、ＲＡＭ１０１における変数ポインタ領域１０１ｃ（所定の第２領域の一例）に書き込む。これにより、Ｉ／Ｏ変数領域１０１ａにアクセスする際に、変数ポインタ領域１０１ｃに記憶されたＩ／Ｏ変数アドレスを用いて、Ｉ／Ｏ変数領域１０１ａにアクセスすることができ、Ｉ／Ｏ変数領域１０１ａへアクセスする度にアドレス表１０４ｂからＩ／Ｏ変数アドレスを読み出す必要がないので、Ｉ／Ｏ変数領域１０１ａのアクセスによる処理負荷を軽減することができる。
【００２９】
例えば、ファームウェア１０４ａは、図２（ａ）に示すように、ハードウェア信号に基づいて特定した機種が機種Ａである場合、アドレス表１０４ｂから、機種Ａと対応付けられたＩ／Ｏ変数アドレス：アドレスＡを読み出す。そして、ファームウェア１０４ａは、図２（ａ）に示すように、読み出したＩ／Ｏ変数アドレス：アドレスＡを、ＲＡＭ１０１の変数ポインタ領域１０１ｃに書き込む。
【００３０】
一方、ファームウェア１０４ａは、図２（ｂ）に示すように、ハードウェア信号に基づいて特定した機種が機種Ｂである場合、アドレス表１０４ｂから、機種Ｂと対応付けられたＩ／Ｏ変数アドレス：アドレスＢを読み出す。そして、ファームウェア１０４ａは、図２（ｂ）に示すように、読み出したＩ／Ｏ変数アドレス：アドレスＢを、ＲＡＭ１０１の変数ポインタ領域１０１ｃに書き込む。
【００３１】
図３に戻り、その後、Ｉ／Ｏモジュール３に接続された外部機器を制御するためにＩ／Ｏ変数領域１０１ａにアクセスする場合、ファームウェア１０４ａは、まず、ＲＡＭ１０１の変数ポインタ領域１０１ｃにアクセスして、Ｉ／Ｏ変数アドレスを読み出す。そして、ファームウェア１０４ａは、読み出したＩ／Ｏ変数アドレスに従って、Ｉ／Ｏ変数領域１０１ａにアクセスする（ステップＳ３０４）。すなわち、アドレス表１０４ｂから読み出したＩ／Ｏ変数アドレスを用いてＩ／Ｏ変数領域１０１ａにアクセスすることにより、コントローラ１の機種毎に異なるファームウェア１０４ａを設計しなくても、機種毎に異なるＩ／Ｏ変数領域１０１ａへのアクセスを実現することができるので、コントローラ１の機種が異なる場合でも同一のファームウェア１０４ａによってＩ／Ｏ変数領域１０１ａへのアクセスを実行することができる。
【００３２】
例えば、機種Ａのファームウェア１０４ａは、図２（ａ）に示すように、ＲＡＭ１０１の変数ポインタ領域１０１ｃにアクセスして、Ｉ／Ｏ変数アドレス：アドレスＡを読み出す。そして、ファームウェア１０４ａは、読み出したＩ／Ｏ変数アドレス：アドレスＡに従って、Ｉ／Ｏ変数領域１０１ａにアクセスする。一方、機種Ｂのファームウェア１０４ａは、図２（ｂ）に示すように、ＲＡＭ１０１の変数ポインタ領域１０１ｃにアクセスして、Ｉ／Ｏ変数アドレス：アドレスＢを読み出す。そして、ファームウェア１０４ａは、読み出したＩ／Ｏ変数アドレス：アドレスＢに従って、Ｉ／Ｏ変数領域１０１ａにアクセスする。
【００３３】
本実施形態では、ファームウェア１０４ａは、コントローラ１の起動時に予め変数ポインタ領域１０１ｃに書き込まれたＩ／Ｏ変数アドレスを用いて、Ｉ／Ｏ変数領域１０１ａにアクセスしているが、ＲＯＭ１０４ａから読み出したＩ／Ｏ変数アドレスを用いて、Ｉ／Ｏ変数領域１０１ａにアクセスするものであれば、これに限定するものではない。例えば、ファームウェア１０４ａは、Ｉ／Ｏ変数領域１０１ａにアクセスする際に、ＲＯＭ１０４からＩ／Ｏ変数アドレスを読み出し、当該読み出したＩ／Ｏ変数アドレスを用いてＩ／Ｏ変数領域１０１ａにアクセスしても良い。
【００３４】
このように、第１の実施形態にかかるコントローラ１によれば、コントローラ１の機種毎に異なるファームウェア１０４ａを設計しなくても、機種毎に異なるＩ／Ｏ変数領域１０１ａへのアクセスを実現することができるので、コントローラ１の機種が異なる場合でも同一のファームウェア１０４ａによってＩ／Ｏ変数領域１０１ａへのアクセスを実行することができる。
【００３５】
（第２の実施形態）
本実施形態は、ＲＡＭが、Ｉ／Ｏ変数の種類毎に設けられた複数のＩ／Ｏ変数領域を有し、アドレス表が、コントローラの機種と対応付けて、Ｉ／Ｏ変数の各種類に対応するＩ／Ｏ変数領域のアドレスを記憶し、ファームウェアが、アドレス表において、コントローラ自身の機種と対応付けて記憶されかつＩ／Ｏ変数領域へのアクセスによって読み出しまたは書き込みの少なくとも一方を行うＩ／Ｏ変数の種類に対応するＩ／Ｏ変数アドレスに従ってＩ／Ｏ変数領域へのアクセスを実行する例である。以下の説明では、第１の実施形態と同様の箇所については説明を省略する。
【００３６】
図４は、第２の実施形態にかかるコントローラが備えるファームウェアによるＩ／Ｏ変数領域へのアクセス動作を説明するための図である。本実施形態にかかるコントローラ４が備えるＲＡＭ４０１は、図４に示すように、Ｉ／Ｏ変数の種類であるＩ／Ｏ変数種類（例えば、Ｉ／Ｏ変数のデータフォーマット、Ｉ／Ｏ変数により制御するＩ／Ｏモジュール３など）毎に設けられた複数（本実施形態では、２つ）のＩ／Ｏ変数領域４０１ａ，４０１ｂを有する。また、本実施形態では、ＲＡＭ４０１は、図４に示すように、Ｉ／Ｏ変数種類毎に設けられた複数の（本実施形態では、２つ）の変数ポインタ領域４０１ｃ，４０１ｄを有している。
【００３７】
さらに、本実施形態では、ＲＯＭ１０４は、Ｉ／Ｏ変数種類毎の複数（本実施形態では、２つ）のアドレス表４０２，４０３を記憶している。具体的には、アドレス表４０２は、コントローラ４の機種を識別可能とする機種情報と、Ｉ／Ｏ変数種類Ｘに対応するＩ／Ｏ変数領域４０１ａのアドレスを記憶する。アドレス表４０３は、コントローラ４の機種を識別可能とする機種情報と、Ｉ／Ｏ変数種類Ｙに対応するＩ／Ｏ変数領域４０１ｂのアドレスを記憶する。すなわち、アドレス表４０２，４０３は、コントローラ４の機種に対応付けて、各Ｉ／Ｏ変数種類に対応するＩ／Ｏ変数領域のアドレスを記憶するデータベースの一例として機能する。
【００３８】
本実施形態では、ファームウェア４０４は、コントローラ４の起動処理の開始後、Ｉ／Ｏ変数領域４０１ａ，４０１ｂへのアクセスに先立って、ＲＯＭ１０４に記憶されたアドレス表４０２，４０３それぞれから、特定した機種と対応付けられた各Ｉ／Ｏ変数種類のＩ／Ｏ変数アドレスを読み出す。次いで、ファームウェア４０４は、読み出した各Ｉ／Ｏ変数種類のＩ／Ｏ変数アドレスを、Ｉ／Ｏ変数種類毎に設けられた変数ポインタ領域４０１ｃ，４０１ｄに書き込む。
【００３９】
例えば、ファームウェア４０４は、ハードウェア信号に基づいて特定したコントローラ４が機種Ａでありかつ書き込みおよび読み出しの少なくとも一方を行うＩ／Ｏ変数がＩ／Ｏ変数種類Ｘである場合、図４（ａ）に示すように、当該Ｉ／Ｏ変数種類Ｘに対応するアドレス表４０２から、機種Ａと対応付けられたＩ／Ｏ変数アドレス：アドレスＡＸを読み出す。そして、ファームウェア４０４は、図４（ａ）に示すように、読み出したＩ／Ｏ変数アドレス：アドレスＡＸを、Ｉ／Ｏ変数種類Ｘに対応する変数ポインタ領域４０１ｃに書き込む。
【００４０】
一方、ファームウェア４０４は、ハードウェア信号に基づいて特定したコントローラ４が機種Ａでありかつ書き込みおよび読み出しの少なくとも一方を行うＩ／Ｏ変数がＩ／Ｏ変数種類Ｙである場合、図４（ａ）に示すように、Ｉ／Ｏ変数種類Ｙに対応するアドレス表４０３から、機種Ａと対応付けられたＩ／Ｏ変数アドレス：アドレスＡＹを読み出す。そして、ファームウェア４０４は、図４（ａ）に示すように、読み出したＩ／Ｏ変数アドレス：アドレスＡＹを、Ｉ／Ｏ変数種類Ｙに対応する変数ポインタ領域４０１ｄに書き込む。
【００４１】
また、ファームウェア４０４は、ハードウェア信号に基づいて特定したコントローラ４が機種Ｂでありかつ書き込みおよび読み出しの少なくとも一方を行うＩ／Ｏ変数がＩ／Ｏ変数種類Ｘである場合、図４（ｂ）に示すように、Ｉ／Ｏ変数種類Ｘに対応するアドレス表４０２から、機種Ｂと対応付けられたＩ／Ｏ変数アドレス：アドレスＢＸを読み出す。そして、ファームウェア４０４は、図４（ｂ）に示すように、読み出したＩ／Ｏ変数アドレス：アドレスＢＸを、Ｉ／Ｏ変数種類Ｘに対応する変数ポインタ領域４０１ｃに書き込む。
【００４２】
一方、ファームウェア４０４は、ハードウェア信号に基づいて特定したコントローラ４が機種Ｂでありかつ書き込みおよび読み出しの少なくとも一方を行うＩ／Ｏ変数がＩ／Ｏ変数種類Ｙである場合、図４（ｂ）に示すように、Ｉ／Ｏ変数種類Ｙに対応するアドレス表４０３から、機種Ｂと対応付けられたＩ／Ｏ変数アドレス：アドレスＢＹを読み出す。そして、ファームウェア４０４は、図４（ｂ）に示すように、読み出したＩ／Ｏ変数アドレス：アドレスＢＹを、Ｉ／Ｏ変数種類Ｙに対応する変数ポインタ領域４０１ｄに書き込む。
【００４３】
そして、ファームウェア４０４は、Ｉ／Ｏ変数領域４０１ａ，４０１ｂにアクセスする場合、当該アクセスにより書き込みおよび読み出しの少なくとも一方を実行するＩ／Ｏ変数のＩ／Ｏ変数種類に対応する変数ポインタ領域４０１ｃ，４０１ｄから、Ｉ／Ｏ変数アドレスを読み出す。すなわち、ファームウェア４０４は、アドレス表４０２，４０３から、書き込みおよび読み出しの少なくとも一方を実行するＩ／Ｏ変数のＩ／Ｏ変数種類に対応するＩ／Ｏ変数アドレスを読み出す。その後、ファームウェア４０４は、読み出したＩ／Ｏ変数アドレスに基づいて、Ｉ／Ｏ変数領域４０１ａ，４０１ｂへのアクセスを実行する。
【００４４】
このように、第２の実施形態のコントローラ４によれば、ＲＡＭ４０１が、Ｉ／Ｏ変数の種類毎に設けられた複数のＩ／Ｏ変数領域４０１ａ，４０１ｂを有する場合も、第１の実施形態と同様に、コントローラ４の機種毎に異なるファームウェア４０４を設計しなくても、機種毎に異なるＩ／Ｏ変数領域４０１ａ，４０１ｂへのアクセスを実現することができるので、コントローラ４の機種が異なる場合でも同一のファームウェア４０４によってＩ／Ｏ変数領域４０１ａ，４０１ｂへのアクセスを実行することができる。また、異なる機種のコントローラ４のファームウェア４０４に機能追加や機能修正等の各種の変更を行う場合に、各機種のコントローラ４のファームウェア４０４に対して同様の変更を行えば良いので、ファームウェア４０４に対する各種変更を行う場合の変更ミスや作業量が低減でき、ファームウェア４０４の管理を統一化することができる。
【００４５】
（第３の実施形態）
本実施形態は、上位機器から、コントローラの機種を識別可能とするＩ／Ｏモジュール登録情報（第２情報の一例）を受信し、当該受信したＩ／Ｏモジュール登録情報に基づいてコントローラの機種を特定する例である。以下の説明では、第１，２の実施形態と同様の箇所について説明を省略する。
【００４６】
図５は、第３の実施形態にかかるコントローラが備えるファームウェアによるＩ／Ｏ変数領域へのアクセス動作を説明するための図である。本実施形態にかかるコントローラ５が備えるＲＯＭ１０４は、コントローラ５の機種を識別可能とする機種情報と、各Ｉ／Ｏ変数種類に対応するＩ／Ｏ変数領域４０１ａ，４０１ｂのアドレスとを対応付けるアドレス表５０２を記憶している。
【００４７】
本実施形態では、ファームウェア５０１は、コントローラ５の起動処理の開始後、Ｉ／Ｏ変数領域４０１ａ，４０１ｂへのアクセスに先立って、通信Ｉ／Ｆ１０３を介して、ＰＣ２（上位機器の一例）から、コントローラ５の機種を識別可能とするＩ／Ｏモジュール登録情報Ｉを受信する。
【００４８】
本実施形態では、ＰＣ２のエンジニアリングツール２０１は、コントローラ５の起動処理の開始を検知すると、当該コントローラ５に対してＩ／Ｏモジュール登録情報Ｉを送信する。ここで、Ｉ／Ｏモジュール登録情報Ｉは、上述したように、起動処理の開始を検知したコントローラ５の機種を識別可能とする情報であり、例えば、Ｉ／Ｏモジュール３を制御するためのＩ／Ｏ変数種類ＸのＩ／Ｏ変数の数とＩ／Ｏ変数種類ＹのＩ／Ｏ変数の数との大小関係である。
【００４９】
そして、ファームウェア５０１は、ＰＣ２から受信したＩ／Ｏモジュール登録情報Ｉに基づいて、コントローラ５の機種を特定する。例えば、ファームウェア５０１は、受信したＩ／Ｏモジュール登録情報Ｉが、Ｉ／Ｏ変数種類ＸのＩ／Ｏ変数の数が、Ｉ／Ｏ変数種類ＹのＩ／Ｏ変数の数よりも少ないことを表している場合、図５（ａ）に示すように、コントローラ５の機種が機種Ａであることを特定する。次いで、ファームウェア５０１は、図５（ａ）に示すように、ＲＯＭ１０４に記憶されたアドレス表５０２から、特定した機種Ａと対応付けられたＩ／Ｏ変数アドレス：アドレスＡＸ，ＡＹを読み出す。そして、ファームウェア５０１は、図５（ａ）に示すように、読み出した各Ｉ／Ｏ変数種類に対応するＩ／Ｏ変数アドレス：アドレスＡＸ，ＡＹを、各Ｉ／Ｏ変数種類に対応する変数ポインタ領域４０１ｃ，４０１ｄに書き込む。
【００５０】
その後、ファームウェア５０１は、Ｉ／Ｏ変数種類ＸのＩ／Ｏ変数が記憶されたＩ／Ｏ変数領域４０１ａにアクセスする場合、図５（ａ）に示すように、変数ポインタ領域４０１ｃに記憶されたＩ／Ｏ変数アドレス：アドレスＡＸに基づいて、Ｉ／Ｏ変数領域４０１ａにアクセスする。一方、ファームウェア５０１は、Ｉ／Ｏ変数種類ＹのＩ／Ｏ変数が記憶されたＩ／Ｏ変数領域４０１ｂにアクセスする場合、図５（ａ）に示すように、変数ポインタ領域４０１ｄに記憶されたＩ／Ｏ変数アドレス：アドレスＡＹに基づいて、Ｉ／Ｏ変数領域４０１ｂにアクセスする。
【００５１】
また、ファームウェア５０１は、受信したＩ／Ｏモジュール登録情報Ｉが、Ｉ／Ｏ変数種類ＸのＩ／Ｏ変数の数が、Ｉ／Ｏ変数種類ＹのＩ／Ｏ変数の数よりも多いことを表している場合、図５（ｂ）に示すように、コントローラ５の機種が機種Ｂであることを特定する。次いで、ファームウェア５０１は、図５（ｂ）に示すように、ＲＯＭ１０４に記憶されたアドレス表５０２から、特定した機種Ｂと対応付けられたＩ／Ｏ変数アドレス：アドレスＢＸ，ＢＹを読み出す。そして、ファームウェア５０１は、図５（ｂ）に示すように、読み出した各Ｉ／Ｏ変数種類に対応するＩ／Ｏ変数アドレス：アドレスＢＸ，ＢＹを、各Ｉ／Ｏ変数種類に対応する変数ポインタ領域４０１ｃ，４０１ｄに書き込む。
【００５２】
その後、ファームウェア５０１は、Ｉ／Ｏ変数種類ＸのＩ／Ｏ変数が記憶されたＩ／Ｏ変数領域４０１ａにアクセスする場合、変数ポインタ領域４０１ｃに記憶されたＩ／Ｏ変数アドレス：アドレスＢＸに基づいて、Ｉ／Ｏ変数領域４０１ａにアクセスする。一方、ファームウェア５０１は、Ｉ／Ｏ変数種類ＹのＩ／Ｏ変数が記憶されたＩ／Ｏ変数領域４０１ｂにアクセスする場合、変数ポインタ領域４０１ｄに記憶されたＩ／Ｏ変数アドレス：アドレスＢＹに基づいて、Ｉ／Ｏ変数領域４０１ｂにアクセスする。
【００５３】
このように、第３の実施形態にかかるコントローラ５によれば、ＰＣ２から受信したＩ／Ｏモジュール登録情報Ｉに基づいてコントローラ５の機種を特定する場合も、第１の実施形態と同様に、コントローラ５の機種毎に異なるファームウェア５０１を設計しなくても、機種毎に異なるＩ／Ｏ変数領域４０１ａ，４０１ｂへのアクセスを実現することができるので、コントローラ５の機種が異なる場合でも同一のファームウェア５０１によってＩ／Ｏ変数領域４０１ａ，４０１ｂへのアクセスを実行することができる。また、異なる機種のコントローラ５のファームウェア５０１に機能追加や機能修正等の各種の変更を行う場合に、各機種のコントローラ５のファームウェア５０１に対して同様の変更を行えば良いので、ファームウェア５０１に対する各種変更を行う場合の変更ミスや作業量が低減でき、ファームウェア５０１の管理を統一化することができる。
【００５４】
以上説明したとおり、第１から第３の実施形態によれば、コントローラの機種間において同一のファームウェアによってＩ／Ｏ変数領域へのアクセスを実行することができる。
【００５５】
なお、本実施形態のコントローラ１，４，５で実行されるプログラムは、ＲＯＭ１０４等に予め組み込まれて提供されるが、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００５６】
さらに、本実施形態のコントローラ１，４，５で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態のコントローラ１，４，５で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００５７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５８】
１，４，５  コントローラ
２  ＰＣ
３  Ｉ／Ｏモジュール
１０１，４０１  ＲＡＭ
１０１ａ，４０１ａ，４０１ｂ  Ｉ／Ｏ変数領域
１０１ｃ，４０１ｃ，４０１ｄ  変数ポインタ領域
１０２  ＣＰＵモジュール
１０３  通信Ｉ／Ｆ
１０４  ＲＯＭ
１０４ａ，４０４，５０１  ファームウェア
１０４ｂ，４０２，４０３，５０２  アドレス表
【図１】
2015207172.tif 000003
【図２】
2015207172.tif 000004
【図３】
2015207172.tif 000005
【図４】
2015207172.tif 000006
【図５】
2015207172.tif 000007