(57)【要約】【課題】プログラマブルコントローラにおいて、ソフトウェアによる入出力強制セット機能を実現する回路構成を簡易にする。【解決手段】プログラマブルコントローラは、揮発記憶装置に、外部入力データエリアと、外部出力データエリアと、内部出力データエリアとを有し、揮発記憶装置に、内部出力データとアドレスの対応を示すテーブルを保持している。入出力強制セット機能の実現において、内部出力データエリアのデータとそのデータが格納されるアドレスの対応を示すテーブルに、入出力命令発行前に未使用であるエリアをポイントするアドレスを書き込み、プログラム上の対象となる入出力アドレスを前記書き込まれたアドレスに置き換える。そして、入出力命令発行することにより、未使用である書き込まれたアドレスを参照し、未使用のエリアに、入力データまたは出力データを書き込む。【選択図】  図２
2017102528.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、揮発記憶部と、不揮発記憶部とを備え、前記不揮発記憶部に記憶されたプログラムを前記ＣＰＵが実行して、処理をおこなうプログラマブルコントローラであって、
前記揮発記憶部に、外部入力装置の入力に用いる入力データを保持する外部入力データエリアと、外部出力装置の出力に用いる出力データを保持する外部出力データエリアと、内部出力データエリアとを有し、
前記揮発記憶部に、内部出力データエリアに書き込むデータとそのデータが格納されるアドレスの対応を示すテーブルを保持し、
前記ＣＰＵは、前記内部出力データエリアに書き込むデータとそのデータが格納されるアドレスの対応を示すテーブルに、入出力命令発行前に未使用であるエリアをポイントするアドレスを書き込み、
前記ＣＰＵは、前記プログラム上の対象となる入出力アドレスを前記書き込まれたアドレスに置き換え、
前記ＣＰＵは、入出力命令を実行することにより、前記書き込まれたアドレスを参照し、前記未使用のエリアに、前記入力データまたは前記出力データを書き込むことを特徴とするプログラマブルコントローラ。
【請求項２】
前記プログラマブルコントローラは、プログラム実行のための第一のモードと、第二のモードを有し、
前記第一のモードでプログラムを実行するときには、前記外部入力装置の入力データを前記外部入力データエリアに、前記外部出力装置の出力データを前記外部出力データエリアに、それぞれ保持し、
前記第二のモードでプログラムを実行するときには、前記外部入力装置の入力データ、前記外部出力装置の出力データを前記内部出力データエリアに保持することを特徴とする請求項１記載のプログラマブルコントローラ。
【請求項３】
記憶部を有しており、Ｉ／Ｏモジュールが搭載されたプログラマブルコントローラであって、
前記記憶部は、前記Ｉ／ＯモジュールのＩ／Ｏ情報を格納する第１の領域を確保し、
さらに、第１の領域に対応する第２の領域を確保し、
前記Ｉ／Ｏモジュールの動作をさせる際には、前記第１の領域を用いて演算することによって行い、
前記Ｉ／Ｏモジュールの動作のシミュレーションをさせる際には、前記第２の領域を用いて演算することによってシミュレーションを行うこと
を特徴とするプログラマブルコントローラ。
【請求項４】
請求項３に記載のプログラマブルコントローラであって、
前記記憶部は、一の半導体装置により構成されること
を特徴とするプログラマブルコントローラ。
【請求項５】
請求項３に記載のプログラマブルコントローラであって、
前記第２の領域は、前記第１の領域のうち、ユーザに指定された領域に対応する領域であること
を特徴とするプログラマブルコントローラ。
【請求項６】
請求項４に記載のプログラマブルコントローラであって、
前記記憶部に前記指定された領域以上の領域が確保可能か否かを判定し、確保可能であると判定された場合には、前記対応する領域に前記第２の領域を確保すること
を特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラに関する。
【背景技術】
【０００２】
プログラマブルコントローラは、リレー回路の代替装置として開発された制御装置であり、工場などの自動機械の制御に使われるほか、エレベーター、自動ドア、ボイラーなどの機械の制御にも使用されている。
【０００３】
プログラマブルコントローラでは、実設備でのデバッグ時に外部接続機器の配線確認やユーザプログラム処理が正しく動作するかの検証が行われる。しかしながら、設備の立ち上げ最中だと、外部センサ等がまだ未配線の状態でユーザプログラムの動作検証をしなければならないケースが存在する。その際に、入出力強制セット機能と言われる機能を使用し、擬似的に入出力機器のオン/オフ制御を実施することができる。
【０００４】
特許文献１には、「通常動作用ラダープログラム１１１、およびシミュレーション用ラダープログラム１１２が、実行されており、通常動作用データレジスタ１２１と、シミュレーション用データレジスタ１２２と、を主メモリ１００に有しており、入力部２０３を介して、通常動作用ラダープログラム１１１が選択されると、通常動作用ラダープログラム１１１は通常動作用データレジスタ１２１を使用して制御対象装置２の制御を行い、入力部２０３を介して、シミュレーション用ラダープログラム１１２が選択されると、シミュレーション用ラダープログラム１１２は、通常動作用データレジスタ１２１およびシミュレーション用データレジスタ１２２を使用してシミュレーションを行うことを特徴とする。（要約参照）」ことが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−０２９９４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１（特開２０１３−０２９９４０号公報）には、同一の主メモリ内に、通常動作用データレジスタとシミュレーション用データレジスタを設ける構成が開示されている。また、シミュレーション用ラダープログラムは、通常動作用データレジスタにおいて、入力値を読み込むことはできるが、出力値を書き込むことはできないとされている。
【０００７】
シミュレーションにおいて、シミュレーションラダープログラムを別途設け、通常動作用データレジスタからデータを読み込み、一部はシミュレーション用データレジスタに書き込むことから、読み込みと書き込みエリアが異なるため、処理が複雑となるが、この点については考慮されていない。
【０００８】
そのため、簡便なシミュレーションを行うプログラマブルコントローラが望まれている。
【０００９】
一方、特許文献１とは異なる方法として従来技術に係る入出力強制セット機能を持つプログラマブルコントローラの構成の一例について図１を用いて説明する。図１は、従来技術に係る入出力強制セット機能を実現するプログラマブルコントローラの構成図である。
【００１０】
従来、入出力強制セット機能を実現するには、図１に示されるように、ＣＰＵモジュールのハード構成に入出力データを格納するメモリと入出力強制セット機能専用のメモリを搭載し、プログラミングツール側からの指定Ｉ／Ｏ入出力強制セット要求に対し、参照するメモリのエリアをハードウェア的に切り替えることで実現していた。
【００１１】
すなわち、プログラミングツールが発行するＩ／Ｏ命令が、「入出力強制セットなし」の場合は、入出力強制セット切替回路により、データメモリだけにアクセスするようにし、「入出力強制セットあり」の場合は、入出力強制セット機能専用メモリだけにアクセスする。ここで、入出力強制セット機能専用メモリは、シミュレーションのために確保されるメモリであり、データメモリのコピーとなっている。
【００１２】
しかしながら、この実現方法によると、入出力強制セット切替用のハードウェア回路や入出力強制セット処理専用メモリを設ける必要があり、回路構成が大きくなってしまうというデメリットがある。
【００１３】
すなわち、入出力強制セット切替用ハードウェアは、ゲートアレイＬＳＩ上のハードウェアロジックで実装され、入出力強制セット処理専用メモリは、データメモリとして、ハードウェア的に別のメモリとして実装されるものである。
【００１４】
そのため、それぞれのメモリに対してバスインターフェースが必要となることから、少なくともメモリ２つ分のバスが必要となる。したがって、バスに係る回路構成が大きくなるという問題点があった。また、場合によっては、メモリへアクセスする際のバスを変更するための切替回路も必要となる場合がある。これらによって、物理的な回路構成が大きくなるため、ＰＬＣ自体の小型化が困難であった。
【００１５】
本発明は、上記課題を解決するためになされたもので、その目的は、ソフトウェアとハードウェアの構成が簡易な入出力強制セット機能を実現するプログラマブルコントローラを提供することにある。
【課題を解決するための手段】
【００１６】
上記課題を解決するために、本発明のプログラマブルコントローラの構成は、ＣＰＵと、揮発記憶部と、不揮発記憶部とを備え、不揮発記憶部に記憶されたプログラムをＣＰＵが実行して、処理をおこなうプログラマブルコントローラであって、揮発記憶部に、外部入力装置の入力に用いる入力データを保持する外部入力データエリアと、外部出力装置の出力に用いる出力データを保持する外部出力データエリアと、内部出力データエリアとを有し、揮発記憶部に、内部出力データエリアに書き込むデータとそのデータが格納されるアドレスの対応を示すテーブルを保持し、ＣＰＵは、内部出力データエリアに書き込むデータとそのデータが格納されるアドレスの対応を示すテーブルに、入出力命令発行前に未使用であるエリアをポイントするアドレスを書き込み、ＣＰＵは、プログラム上の対象となる入出力アドレスを書き込まれたアドレスに置き換え、ＣＰＵは、書き込まれたアドレスを参照し、未使用のエリアに、入力データまたは出力データを書き込むようにしたものである。
【００１７】
本発明のプログラマブルコントローラの別の構成は、記憶部を有しており、Ｉ／Ｏモジュールが搭載されたプログラマブルコントローラであって、記憶部は、前記Ｉ／ＯモジュールのＩ／Ｏ情報を格納する第１の領域を確保し、さらに、第１の領域に対応する第２の領域を確保し、Ｉ／Ｏモジュールの動作をさせる際には、第１の領域を用いて演算することによって行い、Ｉ／Ｏモジュールの動作のシミュレーションをさせる際には、第２の領域を用いて演算することによってシミュレーションを行うようにしたものである。
【発明の効果】
【００１８】
本発明によれば、ソフトウェアとハードウェアの構成が簡易な入出力強制セット機能を有するプログラマブルコントローラを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】従来技術に係る入出力強制セット機能を実現するプログラマブルコントローラの構成図である。
【図２】入出力強制セット処理の概要を説明する図である。
【図３】プログラマブルコントローラのハードウェア構成図である。
【図４】プログラマブルコントローラ構成図の入力装置、出力装置のブロック構成図である。
【図５】揮発記憶装置１３０のデータ割当ての詳細な内容を示す図である。
【図６】プログラマブルコントローラが使用している制御テーブルを示す図である。
【図７Ａ】一般的なプログラマブルコントローラの動作処理を示すフローチャートである。
【図７Ｂ】本発明の一実施形態に係るプログラマブルコントローラの動作処理を示すフローチャートである。
【図８】プログラマブルコントローラの動作を時間的観点から説明する図である。
【図９】一般的なラダープログラムを示す図である。
【図１０】入出力強制セット設定画面の表示例を示す図である。
【図１１】入出力強制セット処理実行のためのプログラマブルコントローラのデータ構造を示す図である。
【図１２】入出力強制セット処理を示すフローチャートである。
【図１３】強制入出力処理実行時のラダープログラムの一例を示す図である。
【図１４】入出力強制セット処理解除時のプログラマブルコントローラのデータ構造を示す図である。
【図１５】入出力強制セット解除処理を示すフローチャートである。
【図１６】入出力強制セット解除処理時のラダープログラムを示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。実施の形態を説明するための全図において、同一の機能を有する部材には同一の符号を付し、その繰り返しの説明は省略する。異なる図に記載される同一の符号であっても、他の図で説明した同一の符号は、原則として同一の構成であるため、説明を省略する場合がある。
【００２１】
以下、図２ないし図１６を用いて本発明の一実施形態に係るプログラマブルコントローラについて説明する。
【００２２】
〔本実施形態の入出力強制セット処理の概要〕
先ず、図２を用いて本実施形態の入出力強制セット処理の概要について説明する。図２は、入出力強制セット処理の概要を説明する図である。
【００２３】
入出力強制セット処理とは、プログラマブルコントローラの入出力モジュール(外部入力装置、外部出力装置)には、実際に配線されていないが、ユーザプログラムの動作を検証する必要があるときは、擬似的に対象の入出力をオン／オフする処理である。
【００２４】
なお、本願明細書において、擬似的とは、実際のハードウェア構成とは無関係に、プログラマブルコントローラのプログラミングソフトウェアによって、その入出力に係る機器の状態を設定することを意味する。
【００２５】
次に、本実施形態でのプログラマブルコントローラにおける入出力強制セット機能の実現方法について説明する。
【００２６】
プログラマブルコントローラに接続されたＰＣなどの情報処理機器(図示せず)で稼働するプログラミングツール８００により、プログラムの命令語がＣＰＵ１１０に与えられ、ＣＰＵ１１０により実行される。
【００２７】
ＣＰＵ１１０は、ゲートアレイＬＳＩ１９０のバスＩ／Ｆ(Interface)を介して、揮発記憶装置１３０に入出力データなどのワークデータを書き込む。ここで、入出力強制セット無(通常)の命令語８１０ａは、Ｉ／Ｏセット命令であり、そのオペランドは、Ｉ／Ｏセット種別Ｘ、ＮＯ０であり、これに対応する入出力データが、揮発記憶装置１３０に、Ｘ０メモリとして書き込まれる。
【００２８】
また、入出力強制セット有の命令語８１０ｂは、Ｉ／Ｏセット命令であり、そのオペランドは、Ｉ／Ｏセット種別ＫＸ、ＮＯ１であり、この場合には、通常の入出力データのエリアに書き込まれるＸデータとは異なり、別の仮想Ｘ１データとして書き込まれる。
【００２９】
ここで、Ｉ／Ｏセット種別Ｘは、通常のＩ／Ｏセット命令であり、Ｉ／Ｏセット種別ＫＸは、入出力強制セット有の命令語であることを示している。なお、揮発記憶装置１３０上のエリアの構成については、後に、詳述する。
【００３０】
記憶部である揮発記憶装置１３０には、第１の領域として、通常のＩ／Ｏセット命令が格納されており、入出力強制セット命令が指定された内容については第２の領域として記憶されることとなる。この入出力強制セット命令であるか否かの判断は、命令が入出力強制セット命令である場合や、命令の作成後に別途、装置をシミュレートする旨の指定をすることで実施できる。後者の場合は、指定された装置が関係する命令を適宜、入出力強制セット命令に変更または置き換える。
【００３１】
この場合に、入出力強制セット処理を実行すると、演算に使用する領域は、第１の領域と第２の領域を使い分けることとなる。（１）第１の領域は、ＣＰＵ１１０とプログラマブルコントローラに接続された他の装置の入出力状態を用いたＩ／Ｏ処理、（２）第２の領域は、変更または置き換えられた入出力セット命令を用いて、仮想的なＩ／Ｏ処理を行う。
【００３２】
このように、入出力強制セット命令として必要な領域を第２の領域として演算し、通常の命令については、第１の領域を用いて演算することが可能となる。入出力強制セット命令に関しては、第２の領域にアクセスすることで、第１の領域が有する実際のＩ／Ｏ情報を用いずに入出力強制セット処理を実行できる。このように、記憶部に入出力強制セット用の領域として第２の領域を設けることで、物理的に一つの記憶部を用いてそれぞれのモードを実行することができる。
【００３３】
さらに、記憶部の容量が大きい場合、つまり、入出力強制セットが不要である通常の命令と入出力強制セット命令を併せた全ての命令を第２の領域に記憶させることが可能な場合である。
【００３４】
この場合は、第１の領域は、全て入出力強制セットが不要の通常の命令で構成され、第２の領域は、通常の命令が指定された部分と、入出力強制セット命令が指定された部分とが混在することになる。
【００３５】
記憶部の容量が大きい場合には、第一のモードである通常モードとして、第１の領域を用いて演算を行い。第２の領域にはアクセスしない。また、第二のモードである入出力強制セットモードでは、第２の領域を用いて演算を行い、第１の領域にはアクセスしない。すなわち、記憶部の容量が大きい場合には、第１の領域に対応する領域が第２の領域に確保され、さらに入出力強制セット命令を有するので、モードごとにアクセスする領域を変更せずにそれぞれのモードを実行できる。
【００３６】
第２の領域を用いた演算をする際に、通常の命令部分は実際に接続された装置が用いられる。つまり、第２の領域に存在する第１の領域のうち通常の命令に対応する部分がコピーされる。入出力強制セット命令部分は、仮想的なデータを用いて演算を行うということである。つまり、第２の領域には、第１の領域がコピーされ、入出力強制セット命令部分に対応する箇所は置き換えられるということである。
【００３７】
このように、本実施形態によれば一つの記憶部を用いることにより入出力強制セットの切替え回路や切り替えるべきバスが不要となる。これにより装置全体の小型化が可能となる。また、入出力強制処理と通常処理の２つモードを一つの記憶部で実行可能である。
【００３８】
よって、ソフトウェアとハードウェアの構成が簡易な入出力強制セット機能ソフトウェアによる入出力強制セット機能を実現する回路構成が簡易なプログラマブルコントローラを提供することができる。
【００３９】
〔プログラマブルコントローラの構成〕
先ず、図３および図４を用いて本発明の一実施形態に係るプログラマブルコントローラの構成について説明する。図３は、プログラマブルコントローラのハードウェア構成図である。図４は、プログラマブルコントローラ構成図の入力装置、出力装置のブロック構成図である。
【００４０】
プログラマブルコントローラは、図３に示されるように、ＣＰＵ１１０、不揮発記憶装置１３０、揮発記憶装置１３０、入力装置１４０、出力装置１５０、通信インターフェース１６０、ゲートアレイＬＳＩ１９０を有し、それらがバスにより接続されている。
【００４１】
ＣＰＵ（Central Processing Unit）１１０は、不揮発記憶装置１３０に保持されているシステムプログラム、ユーザプログラムを実行し、プログラマブルコントローラの各部を制御する装置である。
【００４２】
不揮発記憶装置１３０は、プログラマブルコントローラの電源を切っても、記憶した内容が消去されない記憶装置であり、ＦＬＡＳＨメモリなどの半導体記憶装置で構成される。不揮発記憶装置１３０には、システムプログラムやユーザプログラムが記憶される。
【００４３】
揮発記憶装置１３０は、プログラマブルコントローラの電源を切った場合に、記憶した内容が消去される記憶装置であり、ＳＲＡＭなどの半導体記憶装置で構成される。揮発記憶装置１３０には、ワークデータやユーザプログラムが記憶される。
【００４４】
通信インターフェース１６０は、外部の機器と通信するインターフェースである。プログラマブルコントローラの代表的な通信の規格には、ＲＳ２３２Ｃ、ＵＳＢ(Universal Serial Bus)などインターフェース規格がある。これに限らず他の通信規格を用いてもよい。
【００４５】
ゲートアレイＬＳＩ１９０は、バスの調停をするバスＩ／Ｆの機能をハードウェアロジックで実現する半導体装置である。
【００４６】
入力装置１４０、外部入力装置１７０から電圧入力、電流入力、周波数の入力などをおこなう装置である。
【００４７】
出力装置１５０、外部出力装置１８０へ電圧出力、電流出力、周波数の出力などをおこなう装置である。
【００４８】
入力装置１４０と出力装置１５０の数または機能は、ユーザの実現したい構成によって任意に追加、削除することができる。入力装置１４０と出力装置１５０の実装する場所は、スロットと呼ばれ、ＣＰＵ１１０はどこのスロットに何が実装されているのか判別することができる。入力装置１４０と出力装置１５０に関する電圧、電流、周波数などの入出力データは、スロットごとに異なる。
【００４９】
入力装置１４０は、図４に示されるように、インターフェース回路２２０、入力回路２３０、表示灯制御回路２４０、表示灯２９０を有する。
【００５０】
入力装置１４０には、外部入力装置１７０が接続され、外部入力装置１７０の入力状態はインターフェース回路２２０を介してＣＰＵ１１０へ伝達される。外部入力装置１７０は、このプログラマバルコントローラにより制御され、その状態(電圧、電力、周波数)が入力される装置である。
【００５１】
なお、入力装置１４０に、外部入力装置１７０、出力装置１５０に、外部出力装置１８０が各々接続されることは必須ではなく、必要に応じて適宜接続される。
【００５２】
また、外部入力装置１７０の入力状態がＣＰＵ１１０へ伝達されるのとほぼ同様のタイミングで表示灯制御回路２４０へ入力情報が伝達され、表示灯制御回路２４０が表示灯２９０を制御する。ユーザは、表示灯２９０により、入力装置１４０の動作状態を判断することができる。
出力装置１５０は、図４に示されるように、インターフェース回路２６０、入力回路２７０、表示灯制御回路２８０、表示灯２９５を有する。出力装置１５０には、外部出力装置が接続され、ＣＰＵ１１０からインターフェース回路２６０を介して出力回路２７０に伝達され、出力回路２７０は外部出力装置１８０に出力情報を出力する。外部出力装置１８０は、このプログラマブルコントローラにより制御され、その状態(電圧、電力、周波数)が出力される装置である。ここで、外部入力装置１７０と、外部出力装置１８０は、同じ装置であってもよい。外部入力装置１７０と、外部出力装置１８０は、例えば、このプログラマブルコントローラで制御される工作機械、プラント装置などである。
【００５３】
また、ＣＰＵ１１０から出力情報を出力回路２７０へ伝達する同じタイミングで表示灯制御回路２８０へ出力情報が伝達され、表示灯制御回路２８０が表示灯２９５を制御する。ユーザは、表示灯２９５により、出力装置２５０の動作状態を判断することができる。
【００５４】
〔プログラマブルコントローラのデータ構造〕
次に、図５を用いて揮発記憶装置１３０のデータ割当ての詳細な内容について説明する。図５は、揮発記憶装置１３０のデータ割当ての詳細な内容を示す図である。
【００５５】
揮発記憶装置１３０の使用エリアは、図５に示されるように、主に外部入力データエリア３１０、外部出力データエリア３２０、内部出力データエリア３３０に区分けされる。
【００５６】
外部入力データエリア３１０は、外部入力装置１７０のために確保されるエリアであり、外部出力データエリア３２０は、外部出力装置１８０のために確保されるエリアである。内部出力データエリア３３０は、ＣＰＵ１１０がアクセスするユーザ用のメモリエリアである。
【００５７】
外部入力データエリア３１０は、全てのスロット分の外部入力データ格納エリア３４０を設けており、外部出力データエリア３２０は、全てのスロット分の外部出力データ格納エリア３５０を設けている。
【００５８】
内部出力データエリア３３０は、ユーザがプログラムで使用するための内部出力データをビット専用、ワード専用、ビットワード専用とそれぞれ設けている。内部出力データエリア３３０は、演算用、ワークデータ用にユーザが自由に使用できる記憶領域であるが、本実施形態では、通常時には、外部入力データエリア３１０、外部出力データエリア３２０に格納される入出力データを、入出力強制セット機能を使用する場合に、内部出力データエリア３３０に記憶して用いる。
【００５９】
ユーザは、外部入力データエリア３１０、外部出力データエリア３２０、内部出力データエリア３３０を使用してユーザプログラムを作成する。
【００６０】
次に、図６を用いてプログラマブルコントローラが使用している制御テーブルについて説明する。図６は、プログラマブルコントローラが使用している制御テーブルを示す図である。
【００６１】
外部入力装置一覧テーブル４００は、各スロットに実装している入力装置を管理するデータテーブルである。テーブルのエントリには、入力装置１４０が実装された実装スロット位置、使用データサイズが管理されており、ＣＰＵ１１０は、このテーブルに基づいてデータ更新をする入力装置１４０の実装スロット位置、使用データサイズを判断している。
【００６２】
外部出力装置一覧テーブル４１０は、各スロットに実装している出力装置１５０を管理するデータテーブルである。テーブルのエントリには、実装スロット位置、使用データサイズが管理されており、ＣＰＵ１１０は、このテーブルに基づいてデータ更新をする出力装置１５０の実装スロット位置、使用データサイズを判断している。
【００６３】
内部出力一覧テーブル４２０は、ユーザがプログラム上で使用している内部出力を管理するデータテーブルである。例えば、ＮＯ．１のデータは、データメモリ上のアドレスＲ０から格納されていることを示している。
【００６４】
これらの制御テーブルは、揮発記憶装置１３０に格納、保持または保存される。
【００６５】
〔プログラマブルコントローラの動作〕
次に、図７Ａないし図８を用いてプログラマブルコントローラの動作処理について説明する。図７Ａは、一般的なプログラマブルコントローラの動作処理を示すフローチャートである。図７Ｂは、本発明の一実施形態に係るプログラマブルコントローラの動作処理を示すフローチャートである。図８は、プログラマブルコントローラの動作を時間的観点から説明する図である。
【００６６】
プログラマブルコントローラは、外部入力装置一覧テーブル４００の内容に基づいて対象のスロットに入力データ取得処理を実施し、入力装置１４０の入力状態を取得する（Ｓ５１０）。
【００６７】
次に、入力データ取得処理Ｓ５１０で取得した入力状態を対象の外部入力データ格納エリアに格納する（Ｓ５２０）。
【００６８】
次に、ユーザが作成したプログラムを実行する（Ｓ５３０）。
【００６９】
そして、ユーザプログラムの結果に応じて外部出力データ格納エリア３５０と内部出力データ格納エリア３６０に格納されているデータを更新し、外部出力データ格納エリア３５０のデータを外部出力装置一覧テーブル４１０にて管理されている情報に基づいて各出力装置１５０へ反映させる（Ｓ５４０）。そして、最初の入力データ取得のステップＳ５１０に戻る。
【００７０】
プログラマブルコントローラの動作を時間的観点から説明すると、図８に示されるようになる。
【００７１】
ＣＰＵ１１０は、ユーザプログラム(ラダープログラム)を実行(スキャン)する。そのときに、スキャンの最初に入力情報を読み込み、ユーザプログラムを最初の行から最後の行まで演算し、出力情報を書き込む。その後に、通信等の内部の出力処理をおこなう。この入力データの読み込みからシステム処理までが１サイクルであり、プログラマブルコントローラこれを繰り返すことにより、処理をおこなう。１サイクルの長さは、ユーザプログラムの長さによって異なるが、装置構成やプログラマブルコントローラの処理速度によって異なる。
【００７２】
次に、図７Ｂを用いて本発明の一実施形態に係るプログラマブルコントローラの動作処理について説明する。
【００７３】
入出力強制セット機能が実行されているか否かは、ＣＰＵ１１０が実行するプログラムの命令語として、入出力強制セットで実行する命令語を用意してもよいし、制御モードのフラグを設けて、それを切り替えることにより、判定してもよいが、以下の説明では、図２(ｂ)のように、命令語に、入出力強制セット実行のフラグが用意されているものとして説明する。
【００７４】
プログラマブルコントローラは、先ず、入力命令が入出力強制セット機能実行ありか否かを判定し(Ｓ１５１０)、入力命令が入出力強制セット機能実行ありのときには、Ｓ１５２０を実行し、入力命令が入出力強制セット機能実行なし(通常の実行)のときには、Ｓ１５４０を実行する。
【００７５】
入力命令が入出力強制セット機能実行ありのときには(Ｓ１５１０：Ｙｅｓ)、プログラミングツールにより入力データを取得し(Ｓ１５２０)、入力データを内部出力データエリア３３０に書き込む(Ｓ１５３０)。
【００７６】
一方、入力命令が入出力強制セット機能実行なしのときには(Ｓ１５１０：Ｎｏ)、プログラマブルコントローラは、外部入力装置一覧テーブル４００の内容に基づいて対象のスロットに入力データ取得処理を実施し、入力装置１４０の入力状態を取得し（Ｓ１５４０）、取得した入力データを外部入力データエリア３１０に書き込む(Ｓ１５５０)。
【００７７】
次に、ユーザが作成したプログラムを実行する(Ｓ１５６０)。
【００７８】
次に、出力命令が入出力強制セット機能実行ありか否かを判定し(Ｓ１５７０)、出力命令が入出力強制セット機能実行ありのときには、Ｓ１５８０を実行し、出力命令が入出力強制セット機能実行なし(通常の実行)のときには、Ｓ１５９０を実行する。
【００７９】
出力命令が入出力強制セット機能実行ありのときには(Ｓ１５７０：Ｙｅｓ)、出力データを内部出力データエリア３３０に書き込む。一方、出力命令が入出力強制セット機能実行なしのときには(Ｓ１５７０：Ｎｏ)、プログラマブルコントローラは、取得した出力データを外部出力データエリア３２０に書き込み(Ｓ１５９０)、外部出力データ格納エリア３５０のデータを外部出力装置一覧テーブル４１０にて管理されている情報に基づいて各出力装置１５０へ反映させる（Ｓ１６００）。そして、最初の判定ステップＳ１５１０に戻る。
【００８０】
本実施形態の処理では、入出力強制セット機能によりデータの入出力をシミュレートするときには、内部入力データエリア３３０をそのためのエリアとして使用する、すなわち、必要な半導体装置がハードウェアとして一つですむため、従来技術のように特別な入出力強制セット機能のための専用のメモリを用意しなくてよいという利点がある。
【００８１】
〔ラダープログラム〕
次に、図９を用いてプログラマブルコントローラの制御を記述するのに使用される一般的なラダープログラムについて説明する。図９は、一般的なラダープログラムを示す図である。
【００８２】
ラダープログラムは、プログラマブルコントローラの制御処理を記述するプログラムであり、図９に示されるラダープログラムでは、入力である接点Ｘ０が、ＯＮすると、コイルＹ１００がＯＮされ、接点Ｒ０が、ＯＮすると、出力であるコイルＹ１０１がＯＮされるプログラム記述となっている。本実施形態では、アドレスＸを外部入力データ、アドレスＹを外部出力データ、アドレスＲを内部出力データとする。
【００８３】
〔入出力強制セット機能のＵＩ（ユーザインターフェース）について〕
次に、図１０を用いて入出力強制セット設定画面について説明する。図１０は、入出力強制セット設定画面の表示例を示す図である。
【００８４】
入出力強制セット設定画面は、プログラマブルコントローラに接続したＰＣのユーティリティプログラムによって、ＰＣに接続されたディスプレイ上に表示される画面である。
【００８５】
入出力強制セット設定画面７００には、入出力アドレス入力欄７１０、データ入力欄７７０、セットボタン７４０、リセットボタン７５０、閉じるボタン７６０が表示される。
【００８６】
入出力アドレス入力欄７１０には、強制セットしたい入出力のアドレスを入力する。データ入力欄７７０には、入出力アドレス７１０に強制セットしたいデータを書き込む。セットボタン７４０をマウスなどの入力デバイスでクリックすると、後述の図１２に示す入出力強制セット処理を実行する。リセットボタン７５０をマウスなどの入力デバイスでクリックすると、後述の図１４に示す強制セット解除処理を実行する。閉じるボタン７６０をマウスなどの入力デバイスでクリックすると、この入出力強制セット設定画面７００を閉じる。
【００８７】
本実施形態では、入出力強制セット処理のためにユーザがユーティリティ画面により、直接、入出力アドレスとデータを指定して、その入出力アドレスを有する入力装置１４０および出力装置のデータを書き換える例を示したが、ユーザプログラムにより、入出力強制セット処理を行ってもよい。
【００８８】
〔入出力強制セット処理実行のためのプログラマブルコントローラのデータ構造〕
次に、図１１を用いて入出力強制セット処理実行のためのプログラマブルコントローラのデータ構造について説明する。
【００８９】
図１１は、入出力強制セット処理実行のためのプログラマブルコントローラのデータ構造を示す図である。
【００９０】
図６に示す内部出力一覧テーブル４２０と、図１１に示す内部出力一覧テーブル１０２０の違いは、ＮＯ．７のデータの内部出力データエリア３３０上のエリアのアドレスとして、Ｒ９９９が追加されていることである。このＮＯ．７は、入出力強制セット処理のために使用されるエリアである。
【００９１】
〔入出力強制セット処理〕
次に、図１２を用いて入出力強制セット処理について説明する。図１２は、入出力強制セット処理を示すフローチャートである。
【００９２】
先ず、内部出力データエリア３３０に入出力強制セットに用いる入出力データに対応する空きエリア(未使用エリア)があるか否かの判定を行う(Ｓ８１０)。必要な空きエリアがあるときには(Ｓ８１０：Ｙｅｓ)、Ｓ８２０に行き、十分な容量の空きエリアがないときには(Ｓ８１０：Ｎｏ)、Ｓ８６０の処理に進む。ここで、空きエリア(未使用エリア)があるか否かの判定時は、入出力強制セットに係る入出力命令の発行前に行う。
【００９３】
Ｓ８１０で内部出力データエリア３３０に必要な空き容量があると判定されたときには、内部出力データエリア３３０にそのためのエリアを確保し(Ｓ８２０)、図１０で示した入出力アドレス入力欄７１０で指定された入出力アドレス（Ｘ０）を、内部出力一覧４２０に表示されていない未使用のアドレス（図１１の内部出力一覧テーブル１０２０のＮＯ．７のデータのアドレス：Ｒ９９９）に置き換える（Ｓ８３０）。ここで、内部出力アドレス：Ｒ９９９は、Ｓ８２０で確保したエリアをポイントするアドレスである。この新たに内部出力データエリア３３０に確保されたメモリは、通常時(入出力強制セット機能実行がないとき)には、外部入力データ３１０、または、外部出力データ３２０に書き込まれる入出力データを、入出力強制セット機能実行があるときに、書き込むためのエリアである。ここで、入出力強制セット処理を行わない通常処理を第一のモードと呼び、入出力強制セット処理を第二のモードと呼ぶ。
【００９４】
次に、上記の対象のアドレスを未使用の内部出力データに置き換える処理Ｓ８３０により、置き換えた内部出力のアドレスを内部出力一覧テーブル４２０に反映させる（図１１の内部出力一覧テーブル１０２０のＮＯ．７のデータの内部出力アドレス）（Ｓ８４０）。  そして、内部出力一覧テーブルのアドレス(ＮＯ．７のデータのアドレス：Ｒ９９９）の示すエリアに、指定された入出力データを書き込む(Ｓ８５０)。ここで、ユーザは、図１０に示されるようにデータ入力欄７７０に、データの「１」を入力しているので、置き換えられたアドレスに対し、ユーザが入力したデータである「１」を書き込む。
【００９５】
Ｓ８１０で内部出力データエリア３３０に必要な空き容量がないと判定されたときには、エラー処理を行う(Ｓ８６０)。エラー処理は、例えば、図示しなかったがユーザプログラミングツール画面にメッセージを表示するなどである。
【００９６】
〔入出力強制セット処理実行時のラダープログラム〕
次に、図１３を用いて強制入出力処理セット実行時のラダープログラムについて説明する。図１３は、強制入出力処理実行時のラダープログラムの一例を示す図である。
【００９７】
接点９１０は、ユーザから見るとＸ０と表示されているが、実際には、図１２のフローチャートで示す処理より実行された未使用の内部出力データのアドレス（Ｒ９９９）を割り当てている。
【００９８】
これにより、プログラム実行時に、Ｘ０が入力装置に物理的に配線されていなくても、擬似的にＯＮされることになり、コイルＹ１００もＯＮにされ、ソフトウェアにより入出力機能がシミュレートできることになる。
【００９９】
〔入出力強制セット処理解除時のプログラマブルコントローラのデータ構造〕
次に、図１４を用いて入出力強制セット処理解除時のプログラマブルコントローラのデータ構造について説明する。図１４は、入出力強制セット処理解除時のプログラマブルコントローラのデータ構造を示す図である。
【０１００】
図１１に示す内部出力一覧テーブル１０２０と、図１４に示す内部出力一覧テーブル１３２０との違いは、ＮＯ．７のデータの内部出力アドレスＲ９９９が削除されていることである。すなわち、図６に示す内部出力一覧テーブル４２０に戻ったことである。これは、入出力強制セット処理を解除すると、入出力アドレスを内部出力アドレスに置き換えていたものを元のアドレスに戻すため、ＮＯ．７のデータの内部出力アドレスのエントリは使用されなくなるためである。
【０１０１】
〔入出力強制セット解除処理〕
次に、図１５を用いて入出力強制セット解除処理について説明する。図１５は、入出力強制セット解除処理を示すフローチャートである。
【０１０２】
先ず、図１２の処理で強制セット状態になった入出力アドレスに対し、図１２の処理以前に使用していたアドレスに置き換える処理を実行する（Ｓ１１１０）。
【０１０３】
そして、使用している内部出力データ一覧表テーブル１０２０を更新する処理を実行し、ＣＰＵ１１０が管理している内部出力一覧テーブル１０２０を、図１２処理以前の状態（図６の内部出力一覧テーブル４２０）に戻る処理を実行する（Ｓ１１１２）。
【０１０４】
〔入出力強制セット解除処理時のラダープログラム〕
次に、図１６を用いて入出力強制セット解除処理時のラダープログラムについて説明する。図１６は、入出力強制セット解除処理時のラダープログラムを示す図である。
【０１０５】
接点１２１０は、元のＸ０（図９と同じ）に置き換えられる。これにより、入出力強制セットが解除される。これにより、ユーザは入出力強制セットが解除され、ＰＬＣのハードウェア構成による通常の動作モードに移行する。すなわち、入出力強制セットモードが終了することとなる。  以上述べてきたように、本実施形態によれば、専用の入出力強制セットの切替え回路が不要となる。また、入出力強制処理のための別メモリを用意しなくてもよくなる。また、別メモリへアクセスするためのバスが不要となるため、回路構成が簡易なため、ハードウェア構成が小型のプログラマブルコントローラを実現することができる。
【符号の説明】
【０１０６】
１１０…ＣＰＵ
１２０…不揮発記憶装置
１３０…揮発記憶装置
１４０…入力装置
１５０…出力装置
１６０…通信インターフェース
１７０…外部入力装置
１８０…外部出力装置
２１０…入力装置
２２０…インターフェース回路
２３０…入力回路
２４０…表示灯制御回路
２５０…出力回路
２６０…インターフェース回路
２７０…出力回路
２８０…表示灯制御回路
２９０…表示灯
２９５…表示灯
３１０…外部入力データエリア
３２０…外部出力データエリア
３３０…内部入力データエリア
３４０…外部入力データ格納エリア
３５０…外部出力データ格納エリア
３６０…内部出力データ格納エリア
４００…外部入力装置一覧テーブル
４１０…外部出力装置一覧テーブル
４２０…内部出力一覧テーブル
６００…ラダープログラム
６１０…接点
６２０…コイル
７００…入出力強制セット設定画面
７１０…入出力アドレス入力欄
７４０…セットボタン
７５０…リセットボタン
７６０…閉じるボタン
７７０…データ入力欄
８１０…未使用エリアの判定処理
８２０…エリア確保処理
８３０…対象のアドレスを未使用の内部出力データに置き換える処理
８４０…使用している内部出力データ一覧テーブルを更新する処理
８５０…内部出力データ一覧テーブルのアドレスに入出力データを書き込む処理
８６０…エラー処理
９００…ラダープログラム
９１０…接点
９２０…コイル
１０００…外部入力装置一覧テーブル
１０１０…外部出力装置一覧テーブル
１０２０…内部出力一覧テーブル
１１１０…対象の箇所を元のアドレスに置き換える処理
１１２０…使用している内部出力データの一覧テーブル表を更新する処理
１２００…ラダープログラム
１２１０…接点
１２２０…コイル
１３００…外部入力装置一覧テーブル
１３１０…外部出力装置一覧テーブル
１３２０…内部出力一覧テーブル
１４００…データメモリ
１４１０…入出力強制セット処理専用メモリ
１４２０…シミュレーションエリア
１５１０…入力命令の入出力強制セット機能ありなしの判定処理
１５２０…入力データ所得処理(入出力強制セット機能実行時)
１５３０…取得した入力データを内部出力データエリアへ書き込む処理(入出力強制セット機能実行時)
１５４０…入力データ所得処理(通常時)
１５５０…取得した入力データを対象の外部入力データエリアへ書き込む処理(通常時)
１５６０…ユーザプログラム実行処理
１５７０…出力命令の入出力強制セット機能ありなしの判定処理
１５８０…出力データを内部出力データエリアへ書き込む処理(入出力強制セット機能実行時)
１５９０…出力データを対象の外部出力データエリアへ書き込む処理(通常時)
１６００…出力データ更新処理
【図１】
2017102528.tif 000003
【図２】
2017102528.tif 000004
【図３】
2017102528.tif 000005
【図４】
2017102528.tif 000006
【図５】
2017102528.tif 000007
【図６】
2017102528.tif 000008
【図７Ａ】
2017102528.tif 000009
【図７Ｂ】
2017102528.tif 000010
【図８】
2017102528.tif 000011
【図９】
2017102528.tif 000012
【図１０】
2017102528.tif 000013
【図１１】
2017102528.tif 000014
【図１２】
2017102528.tif 000015
【図１３】
2017102528.tif 000016
【図１４】
2017102528.tif 000017
【図１５】
2017102528.tif 000018
【図１６】
2017102528.tif 000019