(57)【要約】【課題】２重化されたＣＰＵを有するＰＬＣに対して、それぞれのＣＰＵを動作せるための別々の実行ファイルを、手間なく作成可能であり、コンバータソフトウェアの不具合によるＰＬＣの緊急停止をより確実に防止可能であり、プログラムの保守のための記憶容量をより低減可能な、ＰＬＣ用プログラムの作成支援装置及びＰＬＣ用プログラムの作成支援方法を提供する。【解決手段】オリジナルプログラムから第１、第２中間コードを生成し、第１中間コードから逆変換プログラムを生成し、逆変換プログラムから再変換第１、再変換第２中間コードを生成し、第１（第２）中間コードと再変換第１（第２）中間コードの比較結果が一致した場合、再変換第１中間コードから第１実行ファイルを生成し、再変換第２中間コードから第２実行ファイルを生成し、ＰＬＣの第１制御手段に第１実行ファイルを転送して第２制御手段に第２実行ファイルを転送する。【選択図】図４
2015201132.tif 000002
【特許請求の範囲】
【請求項１】
第１所定言語で記述されたプログラムから第２所定言語で記述された中間コードを生成する互いに異なる第１中間コードコンバータ及び第２中間コードコンバータと、
前記第２所定言語で記述された中間コードから逆変換された前記第１所定言語で記述されたプログラムを生成する逆コンバータと、
前記第２所定言語で記述された中間コードからプログラマブルロジックコントローラにて実行可能な実行ファイルを生成する互いに異なる第１実行ファイルコンバータ及び第２実行ファイルコンバータと、
前記第１中間コードコンバータにて、前記第１所定言語で記述されたオリジナルプログラムから第１中間コードを生成するとともに、前記第２中間コードコンバータにて、前記第１中間コードの生成に用いた前記オリジナルプログラムから前記第１中間コードとは異なる第２中間コードを生成する、中間コード生成手段と、
前記逆コンバータにて、前記第１中間コードから逆変換された逆変換プログラムを生成する、逆変換プログラム生成手段と、
前記第１中間コードコンバータにて、前記逆変換プログラムから再変換第１中間コードを生成するとともに、前記第２中間コードコンバータにて、前記逆変換プログラムから前記再変換第１中間コードとは異なる再変換第２中間コードを生成する、再変換中間コード生成手段と、
前記第１中間コードと前記再変換第１中間コードとを比較、あるいは前記第２中間コードと前記再変換第２中間コードとを比較する、中間コード照合手段と、
前記中間コード照合手段による比較結果が一致した場合、前記第１実行ファイルコンバータにて、前記再変換第１中間コードから第１実行ファイルを生成し、前記第２実行ファイルコンバータにて、前記再変換第２中間コードから前記第１実行ファイルとは異なる第２実行ファイルを生成する、実行ファイル生成手段と、
第１制御手段及び第１記憶手段と、第２制御手段及び第２記憶手段と、にて２重化された制御手段及び記憶手段を有するプログラマブルロジックコントローラにおける前記第１制御手段に前記第１実行ファイルを転送して前記第１記憶手段に前記第１実行ファイルを記憶させ、前記第２制御手段に前記第２実行ファイルを転送して前記第２記憶手段に前記第２実行ファイルを記憶させる、ファイル転送手段と、を有する、
プログラマブルロジックコントローラ用プログラムの作成支援装置。
【請求項２】
請求項１に記載のプログラマブルロジックコントローラ用プログラムの作成支援装置であって、
前記中間コード照合手段にて、前記第１中間コードと前記再変換第１中間コードとを比較するとともに、前記第２中間コードと前記再変換第２中間コードとを比較し、
前記実行ファイル生成手段にて、前記中間コード照合手段による双方の比較結果がそれぞれ一致した場合に、前記第１実行ファイルコンバータにて、前記再変換第１中間コードから前記第１実行ファイルを生成し、前記第２実行ファイルコンバータにて、前記再変換第２中間コードから前記第１実行ファイルとは異なる前記第２実行ファイルを生成する、
プログラマブルロジックコントローラ用プログラムの作成支援装置。
【請求項３】
請求項１または２に記載のプログラマブルロジックコントローラ用プログラムの作成支援装置であって、
前記ファイル転送手段にて、さらに、前記第１制御手段に前記第１中間コードを転送して前記第１記憶手段に前記第１中間コードを記憶させる、
プログラマブルロジックコントローラ用プログラムの作成支援装置。
【請求項４】
請求項１〜３のいずれか一項に記載のプログラマブルロジックコントローラ用プログラムの作成支援装置であって、
前記第１所定言語はラダー言語であり、前記第２所定言語はＳＴＡ言語である、
プログラマブルロジックコントローラ用プログラムの作成支援装置。
【請求項５】
第１所定言語で記述されたプログラムから第２所定言語で記述された中間コードを生成する互いに異なる第１中間コードコンバータ及び第２中間コードコンバータと、
前記第２所定言語で記述された中間コードから逆変換された前記第１所定言語で記述されたプログラムを生成する逆コンバータと、
前記第２所定言語で記述された中間コードからプログラマブルロジックコントローラにて実行可能な実行ファイルを生成する互いに異なる第１実行ファイルコンバータ及び第２実行ファイルコンバータと、を備えたコンピュータを用いて、
前記第１中間コードコンバータにて、前記第１所定言語で記述されたオリジナルプログラムから第１中間コードを生成するとともに、前記第２中間コードコンバータにて、前記第１中間コードの生成に用いた前記オリジナルプログラムから前記第１中間コードとは異なる第２中間コードを生成する、中間コード生成ステップと、
前記逆コンバータにて、前記第１中間コードから逆変換された逆変換プログラムを生成する逆変換プログラム生成ステップと、
前記第１中間コードコンバータにて、前記逆変換プログラムから再変換第１中間コードを生成するとともに、前記第２中間コードコンバータにて、前記逆変換プログラムから前記再変換第１中間コードとは異なる再変換第２中間コードを生成する、再変換中間コード生成ステップと、
前記第１中間コードと前記再変換第１中間コードとを比較、あるいは前記第２中間コードと前記再変換第２中間コードとを比較する、中間コード照合ステップと、
前記中間コード照合ステップによる比較結果が一致した場合、前記第１実行ファイルコンバータにて、前記再変換第１中間コードから第１実行ファイルを生成し、前記第２実行ファイルコンバータにて、前記再変換第２中間コードから前記第１実行ファイルとは異なる第２実行ファイルを生成する、実行ファイル生成ステップと、
第１制御手段及び第１記憶手段と、第２制御手段及び第２記憶手段と、にて２重化された制御手段及び記憶手段を有するプログラマブルロジックコントローラにおける前記第１制御手段に前記第１実行ファイルを転送して前記第１記憶手段に前記第１実行ファイルを記憶させ、前記第２制御手段に前記第２実行ファイルを転送して前記第２記憶手段に前記第２実行ファイルを記憶させる、ファイル転送ステップと、を有する、
プログラマブルロジックコントローラ用プログラムの作成支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックコントローラ用プログラムの作成支援装置及びプログラマブルロジックコントローラ用プログラムの作成支援方法に関する。
【背景技術】
【０００２】
プログラマブルロジックコントローラ（Programmable Logic Controller、以下、ＰＬＣと記載する）は、工場の自動機械の制御等に使用されている。ＰＬＣは、小型のコンピュータであり、プログラムで動作する中央処理装置（以下、ＣＰＵと記載する）を備え、プログラムの設計にはラダー回路（ラダー言語）が利用され、用途に合わせたシーケンスプログラムに適宜書き換えられて利用されている。そしてＰＬＣには種々の入力機器（スイッチ、センサ等）からの導通状態に関する信号（ＯＮまたはＯＦＦの情報）が入力され、ＰＬＣは、種々の入力機器を所望する形態に組み合わせた（直列または並列に組み合わせた）シーケンスプログラムを用いて、出力機器（リレー、モータ等）を制御（ＯＮまたはＯＦＦ信号を出力等）している。
【０００３】
ＰＬＣの中でも安全ＰＬＣと呼ばれるＰＬＣは、ＣＰＵ及びＲＯＭが２重化されており、２個のＲＯＭのそれぞれに、同一のラダー言語プログラムから作成された別々の実行ファイル（ＰＬＣにて実行可能な機械語コード）が搭載されている。そして、２重化されたＣＰＵの出力が一致した場合に、その出力を用いてモータやリレー等の出力機器を制御している。すなわち、同一のラダー言語プラグラムから作成された異なる２つの実行ファイルを別々のＣＰＵで実行してそれぞれの出力を照合することで、ラダー言語プログラムから実行ファイルまでの変換ソフトウェア等に予期せぬ不具合があった場合の緊急停止を未然に防止している。
【０００４】
従来では、別々の実行ファイルを作成する際、中間コードコンバータ（コンバータソフトウェア）を用いて、ラダー言語プログラムから機械的に中間コード（例えばＳＴＡ言語のプログラム）に変換し、この変換された中間コードを、設計者が一文ずつ確認して変換の不具合の有無を確認している。そして、この中間コードを、第１実行ファイルコンバータにて機械的に第１実行ファイルに変換し、第２実行ファイルコンバータにて機械的に第２実行ファイルに変換し、一方のＣＰＵに第１実行ファイルを搭載し、他方のＣＰＵに第２実行ファイルを搭載している。
【０００５】
また特許文献１には、ＰＬＣに実行ファイルでなく数値データプログラムを転送し、ＰＬＣは、数値データプログラムをコマンド毎に解釈して実行するインタプリタプログラムを備えている制御システムが開示されている。この構成では、ＰＬＣは、数値データプログラムを直接実行するのでなく、インタプリタプログラムにて解釈（機械語に翻訳）した内容を実行する。
【０００６】
また特許文献２には、例えば設備１の標準ラダーシーケンス１と設備２の標準ラダーシーケンス２とを合成したラダーシーケンス３を作成した場合、ラダーシーケンス３からシーケンスＡとシーケンスＢを取り出し、ブロック毎にニーモニックに展開し、展開したシーケンスを論理化してアドレス順に並び替えて比較することで、論理の矛盾や論理の重複を認識することが可能なシーケンス回路の照合方法が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−２３５６６０号公報
【特許文献２】特開平９−２１２２１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ラダー言語プログラムから機械的に中間コードに変換し、この変換された中間コードから第１実行ファイルと第２実行ファイルを作成する従来の方法では、機械的に変換された中間コード（例えばＳＴＡ言語プログラム）を設計者が一文ずつ確認する作業に、非常に手間と時間がかかってしまうので、あまり好ましくない。また、２種類の実行ファイルコンバータを用意して、１つの中間コードから別々の実行ファイルを作成しているが、ラダー言語プログラムから中間コードへの変換は１通りである。従って、このラダー言語プログラムから中間コードへ機械的に変換する中間コードコンバータ（コンバータソフトウェア）に不具合があった場合、設計者の一文ずつの確認を行っても発見できない可能性があり、ＰＬＣの緊急停止が発生する可能性が考えられるので、あまり好ましくない。
【０００９】
また、上記の方法に対して、中間コードコンバータ（コンバータソフトウェア）を２種類用意して、１つのラダー言語プログラムから別々の中間コードを作成し、この２種類の中間コードから、２種類の実行ファイルコンバータ（コンバータソフトウェア）を用いて、別々の実行ファイルを作成する方法も考えられるが、一連のプログラムの保守（メンテナンス）のためには、ラダー言語プログラムを保存する必要があり、多大な記憶容量を必要とする点で、あまり好ましくない（ラダー言語プログラムは中間コードや実行ファイルと比較して非常にサイズが大きい）。また、ラダー言語プログラムを保存する代わりに２種類の中間コードを保存してもよいが、２種類の中間コードを保存する分、（１種類の中間コードを保存する場合よりも）記憶容量を余分に必要とする点で、あまり好ましくない。
【００１０】
また特許文献１に記載の制御システムでは、インタプリタプログラムを搭載した特殊なＰＬＣを対象としており、機械語の実行ファイルが搭載されて機械語で直接動作するＰＬＣに対して動作が遅い。また、２重化された安全ＰＬＣのそれぞれのＣＰＵにインタプリタプログラム、及び異なる数値データプログラムを搭載した場合、それぞれの数値データプログラムの解釈から実行されるまでの動作時間の差が大きくなる可能性が考えられる点で、好ましくない。
【００１１】
また特許文献２に記載のシーケンス回路の照合方法は、２重化された安全ＰＬＣのそれぞれのＣＰＵに、それぞれ別々の実行ファイルを搭載する方法として適用できるものではない。
【００１２】
本発明は、このような点に鑑みて創案されたものであり、２重化されたＣＰＵを有するＰＬＣに対して、それぞれのＣＰＵを動作させるための別々の実行ファイルを、手間なく作成可能であり、コンバータソフトウェアの不具合によるＰＬＣの緊急停止をより確実に防止可能であり、プログラムの保守のための記憶容量をより低減可能な、プログラマブルロジックコントローラ用プログラムの作成支援装置及びプログラマブルロジックコントローラ用プログラムの作成支援方法を提供することを課題とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、本発明に係るプログラマブルロジックコントローラ用プログラムの作成支援装置及びプログラマブルロジックコントローラ用プログラムの作成支援方法は、次の手段をとる。本発明の第１の発明は、第１所定言語で記述されたプログラムから第２所定言語で記述された中間コードを生成する互いに異なる第１中間コードコンバータ及び第２中間コードコンバータと、前記第２所定言語で記述された中間コードから逆変換された前記第１所定言語で記述されたプログラムを生成する逆コンバータと、前記第２所定言語で記述された中間コードからプログラマブルロジックコントローラにて実行可能な実行ファイルを生成する互いに異なる第１実行ファイルコンバータ及び第２実行ファイルコンバータと、を有する。また、前記第１中間コードコンバータにて、前記第１所定言語で記述されたオリジナルプログラムから第１中間コードを生成するとともに、前記第２中間コードコンバータにて、前記第１中間コードの生成に用いた前記オリジナルプログラムから前記第１中間コードとは異なる第２中間コードを生成する、中間コード生成手段と、前記逆コンバータにて、前記第１中間コードから逆変換された逆変換プログラムを生成する、逆変換プログラム生成手段と、前記第１中間コードコンバータにて、前記逆変換プログラムから再変換第１中間コードを生成するとともに、前記第２中間コードコンバータにて、前記逆変換プログラムから前記再変換第１中間コードとは異なる再変換第２中間コードを生成する、再変換中間コード生成手段と、前記第１中間コードと前記再変換第１中間コードとを比較、あるいは前記第２中間コードと前記再変換第２中間コードとを比較する、中間コード照合手段と、前記中間コード照合手段による比較結果が一致した場合、前記第１実行ファイルコンバータにて、前記再変換第１中間コードから第１実行ファイルを生成し、前記第２実行ファイルコンバータにて、前記再変換第２中間コードから前記第１実行ファイルとは異なる第２実行ファイルを生成する、実行ファイル生成手段と、第１制御手段及び第１記憶手段と、第２制御手段及び第２記憶手段と、にて２重化された制御手段及び記憶手段を有するプログラマブルロジックコントローラにおける前記第１制御手段に前記第１実行ファイルを転送して前記第１記憶手段に前記第１実行ファイルを記憶させ、前記第２制御手段に前記第２実行ファイルを転送して前記第２記憶手段に前記第２実行ファイルを記憶させる、ファイル転送手段と、を有する、プログラマブルロジックコントローラ用プログラムの作成支援装置である。
【００１４】
次に、本発明の第２の発明は、上記第１の発明に係るプログラマブルロジックコントローラ用プログラムの作成支援装置であって、前記中間コード照合手段にて、前記第１中間コードと前記再変換第１中間コードとを比較するとともに、前記第２中間コードと前記再変換第２中間コードとを比較し、前記実行ファイル生成手段にて、前記中間コード照合手段による双方の比較結果がそれぞれ一致した場合に、前記第１実行ファイルコンバータにて、前記再変換第１中間コードから前記第１実行ファイルを生成し、前記第２実行ファイルコンバータにて、前記再変換第２中間コードから前記第１実行ファイルとは異なる前記第２実行ファイルを生成する、プログラマブルロジックコントローラ用プログラムの作成支援装置である。
【００１５】
次に、本発明の第３の発明は、上記第１の発明または第２の発明に係るプログラマブルロジックコントローラ用プログラムの作成支援装置であって、前記ファイル転送手段にて、さらに、前記第１制御手段に前記第１中間コードを転送して前記第１記憶手段に前記第１中間コードを記憶させる、プログラマブルロジックコントローラ用プログラムの作成支援装置である。
【００１６】
次に、本発明の第４の発明は、上記第１の発明〜第３の発明のいずれか１つに係るプログラマブルロジックコントローラ用プログラムの作成支援装置であって、前記第１所定言語はラダー言語であり、前記第２所定言語はＳＴＡ言語である、プログラマブルロジックコントローラ用プログラムの作成支援装置である。
【００１７】
次に、本発明の第５の発明は、第１所定言語で記述されたプログラムから第２所定言語で記述された中間コードを生成する互いに異なる第１中間コードコンバータ及び第２中間コードコンバータと、前記第２所定言語で記述された中間コードから逆変換された前記第１所定言語で記述されたプログラムを生成する逆コンバータと、前記第２所定言語で記述された中間コードからプログラマブルロジックコントローラにて実行可能な実行ファイルを生成する互いに異なる第１実行ファイルコンバータ及び第２実行ファイルコンバータと、を備えたコンピュータを用いた、プログラマブルロジックコントローラ用プログラムの作成支援方法である。そして、前記第１中間コードコンバータにて、前記第１所定言語で記述されたオリジナルプログラムから第１中間コードを生成するとともに、前記第２中間コードコンバータにて、前記第１中間コードの生成に用いた前記オリジナルプログラムから前記第１中間コードとは異なる第２中間コードを生成する、中間コード生成ステップと、前記逆コンバータにて、前記第１中間コードから逆変換された逆変換プログラムを生成する逆変換プログラム生成ステップと、前記第１中間コードコンバータにて、前記逆変換プログラムから再変換第１中間コードを生成するとともに、前記第２中間コードコンバータにて、前記逆変換プログラムから前記再変換第１中間コードとは異なる再変換第２中間コードを生成する、再変換中間コード生成ステップと、前記第１中間コードと前記再変換第１中間コードとを比較、あるいは前記第２中間コードと前記再変換第２中間コードとを比較する、中間コード照合ステップと、前記中間コード照合ステップによる比較結果が一致した場合、前記第１実行ファイルコンバータにて、前記再変換第１中間コードから第１実行ファイルを生成し、前記第２実行ファイルコンバータにて、前記再変換第２中間コードから前記第１実行ファイルとは異なる第２実行ファイルを生成する、実行ファイル生成ステップと、第１制御手段及び第１記憶手段と、第２制御手段及び第２記憶手段と、にて２重化された制御手段及び記憶手段を有するプログラマブルロジックコントローラにおける前記第１制御手段に前記第１実行ファイルを転送して前記第１記憶手段に前記第１実行ファイルを記憶させ、前記第２制御手段に前記第２実行ファイルを転送して前記第２記憶手段に前記第２実行ファイルを記憶させる、ファイル転送ステップと、を有する、プログラマブルロジックコントローラ用プログラムの作成支援方法である。
【発明の効果】
【００１８】
第１の発明によれば、逆コンバータを用いて機械的に生成した第１所定言語で記述された逆変換プログラムから、２通りの中間コードコンバータ（コンバータソフトウェア）にて２通りの中間コードを機械的に生成した後、２通りの実行ファイルコンバータ（コンバータソフトウェア）にて２通りの実行ファイルを機械的に生成する。これにより、いずれかのコンバータソフトウェアに不具合があった場合、適切にＰＬＣの出力を停止させることができるので、ＰＬＣの緊急停止をより確実に防止することが可能である。また、中間コード照合ステップにて、逆コンバータ（コンバータソフトウェア）に不具合があった場合であっても、不具合を発見することができる。また、中間コードを設計者が一文ずつ確認する作業を排除し、手間と時間を大幅に短縮することができる。
【００１９】
第２の発明によれば、第１中間コードと再変換第１中間コードとの照合に加えて、第２中間コードと再変換第２中間コードとの照合も行うことで、逆コンバータ（コンバータソフトウェア）の不具合を、より確実に発見することができる。
【００２０】
第３の発明によれば、逆変換プログラムの生成に用いた第１中間コードのみを保守用に保存しておくことで、逆変換プログラム、再変換第１中間コード、再変換第２中間コード、第１実行ファイル、第２実行ファイルを機械的に生成することができる。従って、容量の大きなオリジナルプログラムを保存しておく必要が無く、２通りの中間コードプログラムを保存しておく必要も無い。このため、保守のためのプログラムを保存する際の記憶容量をより低減することが可能である。
【００２１】
第４の発明によれば、設計者は、ラダー言語にてオリジナルプログラムを作成すればよいので、比較的容易にＰＬＣ用プログラムを設計することができる。また中間コードを（汎用性の高い）ＳＴＡ言語とすることで、仮に設計者が中間コードを確認する必要が発生した場合であっても適切に確認することが可能であるとともに、実行ファイル形式の異なる種々のＣＰＵへの転用が容易となるので、非常に便利である。
【００２２】
第５の発明によれば、第１の発明のプログラマブルロジックコントローラ用プログラムの作成支援装置を適切に実現することができる。
【図面の簡単な説明】
【００２３】
【図１】ＰＬＣを構成する制御ユニットと、入力ユニットと、出力ユニットの外観の例を説明する斜視図である。
【図２】制御ユニットと、入力ユニットと、出力ユニットにて構成されたＰＬＣのブロック構成及びＰＬＣ用プログラムの作成支援装置との接続の例を説明する図である。
【図３】ＰＬＣ用プログラムの作成支援装置の処理手順を説明するフローチャートである。
【図４】ＰＬＣ用プログラムの作成支援装置による図３に示した各処理にて各プログラム等が機械的に生成される様子を説明する図である。
【発明を実施するための形態】
【００２４】
以下に本発明を実施するための形態を図面を用いて説明する。
●［ＰＬＣ１の外観（図１）］
図１に示すように、ＰＬＣ１は、制御ユニット１０、入力ユニット２０、出力ユニット３０にて構成されている。また入力ユニット２０及び出力ユニット３０は、入出力の数に応じて適宜増設される。入力ユニット２０内には制御ユニット１０と接続するためのコネクタ２０Ｂを備えた入力ボード２０Ａが収容されており、複数の入力機器（スイッチ、センサ等）からの配線が接続される入力端子２０Ｆが設けられている。出力ユニット３０内には制御ユニット１０と接続するためのコネクタ３０Ｃを備えた出力ボード３０Ａが収容されており、複数の出力機器（リレー、モータ等）への配線が接続される出力端子３０Ｇが設けられている。制御ユニット１０内には入力ユニット２０と接続するためのコネクタ１０Ｂ、出力ユニット３０と接続するためのコネクタ１０Ｃ、を備えた制御ボード１０Ａが収容されており、パソコン等のＰＬＣ用プログラムの作成支援装置を接続可能なコネクタ１１Ｇ、１２Ｇ等が設けられている。また例えば、制御ユニット１０には、異常が発生したことを報知する報知手段１４が設けられている。
【００２５】
●［ＰＬＣ１のブロック構成及び接続例（図２）］
次に図２を用いてＰＬＣ１のブロック構成及び接続の例について説明する。入力ユニット２０の入力端子２０Ｆには、複数の入力機器（スイッチ４０Ａ、センサ４０Ｂ・・入力手段４０Ｎ等）からの配線が接続され、複数の入力機器の導通状態に関する信号（ＯＮまたはＯＦＦの情報等）が入力される。入力された導通状態に関する信号は、インターフェース２１Ａ（以下、インターフェースをＩ／Ｆと記載する）及びコネクタ２０Ｂを介して制御ユニット１０に伝送される。
【００２６】
本実施の形態にて説明するＰＬＣ１（例えば安全ＰＬＣ）は、制御手段及び記憶手段が２重化されている。制御ユニット１０は、第１ＣＰＵ１１Ａ（第１制御手段に相当）と第１ＲＡＭ１１Ｂと第１ＲＯＭ１１Ｃ（第１記憶手段に相当）にて構成された２重化された一方である第１制御手段及び第１記憶手段と、第２ＣＰＵ１２Ａ（第２制御手段に相当）と第２ＲＡＭ１２Ｂと第２ＲＯＭ１２Ｃ（第２記憶手段に相当）にて構成された２重化された他方である第２制御手段及び第２記憶手段と、を備えている。また、第１ＲＯＭ１１Ｃ、第２ＲＯＭ１２Ｃには、ＥＥＰＲＯＭ、ＦｌａｓｈＲＯＭ等の書替え可能なＲＯＭが用いられ、任意の入力機器を直列または並列に組み合わせて構成したシーケンスプログラム等である実行ファイルが記憶されている。
【００２７】
ユーザは、パーソナルコンピュータ等であるＰＬＣ用プログラムの作成支援装置５０（以下、ＰＬＣ用プログラムの作成支援装置５０をＰＣ５０と記載する）を用いて、ラダー言語等を用いてオリジナルプログラム（ソースコード等）を作成可能である。そして、ユーザはＰＣ５０を用いて、同一のラダー言語プログラムから異なる２通りの実行ファイル（ネイティブコード）を生成し、一方の実行ファイルを第１ＲＯＭ１１Ｃに記憶させ、他方の実行ファイルを第２ＲＯＭ１２Ｃに記憶させる。なお、第１ＲＯＭ１１Ｃには、Ｉ／Ｆ１１Ｅ及びコネクタ１１Ｇを介してＰＣ５０と通信を行うプログラム等も格納されており、第２ＲＯＭ１２Ｃには、Ｉ／Ｆ１２Ｅ及びコネクタ１２Ｇを介してＰＣ５０と通信を行うプログラム等も格納されている。
【００２８】
第１ＣＰＵ１１Ａは、第１ＲＯＭ１１Ｃに記憶されている第１実行ファイルと、コネクタ１０Ｂ及びＩ／Ｆ１１Ｄを介して入力ユニット２０から入力される各入力機器からの導通状態に関する信号とに基づいた演算結果を、照合手段１０Ｓに出力する。また、第２ＣＰＵ１２Ａは、第２ＲＯＭ１２Ｃに記憶されている第２実行ファイルと、コネクタ１０Ｂ及びＩ／Ｆ１２Ｄを介して入力ユニット２０から入力される各入力機器からの導通状態に関する信号とに基づいた演算結果を、照合手段１０Ｓに出力する。例えば、照合手段１０Ｓは、照合用回路であり、第１ＣＰＵ１１Ａからの出力と第２ＣＰＵ１２Ａからの出力が一致した場合に、一致した出力をＩ／Ｆ１０Ｔ及びコネクタ１０Ｃを介して出力ユニット３０に出力する。また例えば、照合手段１０Ｓは、第１ＣＰＵ１１Ａからの出力と第２ＣＰＵ１２Ａからの出力が一致しない場合は、Ｉ／Ｆ１０Ｔへの出力を行わず、報知手段１４（例えばＬＥＤやブザー等）を作動させ、異常が発生したことを報知する。
【００２９】
出力ユニット３０の出力端子３０Ｇには、複数の出力機器（モータ４２Ａ、リレー４２Ｂ・・出力手段４２Ｎ等）への配線が接続される。そして出力ユニット３０は、制御ユニット１０にて求めた演算結果を、コネクタ３０Ｃ及びＩ／Ｆ３１Ａを介して出力端子３０Ｇに接続された出力機器に出力する。
【００３０】
●［ＰＣ５０（ＰＬＣ用プログラムの作成支援装置）の処理手順（図３、図４）］
次に図３及び図４を用いて、ＰＣ５０（ＰＬＣ用プログラムの作成支援装置）にて実施されるＰＬＣ用プログラムの作成支援の処理手順（図３参照）、及び各処理にて生成されるプログラム等（図４参照）について説明する。ユーザは、ＰＣ５０あるいは他のパーソナルコンピュータ等を用いて、ＰＬＣ１に搭載するためのシーケンスプログラムである実行ファイルのベースとなるオリジナルプログラムを作成し、作成したオリジナルプログラムをＰＣ５０に記憶させる。なお、本実施の形態の説明では、オリジナルプログラムはラダー言語で記述されているものとして説明する。
【００３１】
またＰＣ５０には、ラダー言語（第１所定言語に相当）で記述されたプログラム（いわゆるソースコード）からＳＴＡ言語（第２所定言語に相当）で記述された中間コードを生成する、互いに異なる第１中間コードコンバータ（コンバータソフトウェア）と第２中間コードコンバータ（コンバータソフトウェア）が記憶されている（インストールされている）。またＰＣ５０には、ＳＴＡ言語で記述された中間コードから逆変換されたプログラム（ラダー言語で記述されたプログラム）を生成する逆コンバータ（コンバータソフトウェア）が記憶されている（インストールされている）。またＰＣ５０には、ＳＴＡ言語にて記述された中間コードプログラムから、ＰＬＣにて実行可能な実行ファイル（機械語等のネイティブコード）を生成する、互いに異なる第１実行ファイルコンバータ（コンバータソフトウェア）と第２実行ファイルコンバータ（コンバータソフトウェア）が記憶されている（インストールされている）。以下、図３を用いて、上記の各コンバータソフトウェアがインストールされているＰＣ５０を用いた、ＰＬＣ用プログラムの作成支援の処理手順について説明するとともに、図４を用いて、各処理にて生成されるプログラム等について説明する。
【００３２】
ステップＳ１０にてＰＣ５０は、オリジナルプログラム（ラダー言語で記述されたソースコード）が選択されて実行開始の指示が入力されたか否かを判定し、オリジナルプログラムが選択されて実行開始の指示がされた場合（Ｙｅｓ）はステップＳ２０に進み、そうでない場合（Ｎｏ）はステップＳ１０に戻る。
【００３３】
ステップＳ２０に進んだ場合、ＰＣ５０は、第１中間コードコンバータを起動して、オリジナルプログラムから第１中間コードを生成（図４参照）してステップＳ２５Ａに進む。そしてステップＳ２５ＡにてＰＣ５０は、第１中間コードコンバータによる生成時のエラーの有無を判定し、エラーが無い場合（Ｙｅｓ）はステップＳ３０に進み、エラーが有る場合（Ｎｏ）はステップＳ２５Ｂに進んでエラーメッセージを表示して処理を終了する。ステップＳ３０に進んだ場合、ＰＣ５０は、第２中間コードコンバータを起動して、オリジナルプログラムから第２中間コードを生成（図４参照）してステップＳ３５Ａに進む。そしてステップＳ３５ＡにてＰＣ５０は、第２中間コードコンバータによる生成時のエラーの有無を判定し、エラーが無い場合（Ｙｅｓ）はステップＳ４０に進み、エラーが有る場合（Ｎｏ）はステップＳ４５Ｂに進んでエラーメッセージを表示して処理を終了する。このステップＳ２０、Ｓ３０の処理が、中間コード生成ステップに相当し、ステップＳ２０、Ｓ３０の処理を実行するＰＣ５０が、中間コード生成手段に相当する。
【００３４】
ステップＳ４０に進んだ場合、ＰＣ５０は、逆コンバータを起動して、ステップＳ２０にて生成した第１中間コード（ＳＴＡ言語）から逆変換プログラム（ラダー言語）を生成（図４参照）してステップＳ４５Ａに進む。そしてステップＳ４５ＡにてＰＣ５０は、逆コンバータによる生成時のエラーの有無を判定し、エラーが無い場合（Ｙｅｓ）はステップＳ５０に進み、エラーが有る場合（Ｎｏ）はステップＳ４５Ｂに進んでエラーメッセージを表示して処理を終了する。このステップＳ４０の処理が、逆変換プログラム生成ステップに相当し、ステップＳ４０の処理を実行するＰＣ５０が、逆変換プログラム生成手段に相当する。
【００３５】
ステップＳ５０に進んだ場合、ＰＣ５０は、第１中間コードコンバータを起動して、ステップＳ４０にて生成した逆変換プログラム（ラダー言語）から再変換第１中間コード（ＳＴＡ言語）を生成（図４参照）してステップＳ５５Ａに進む。そしてステップＳ５５ＡにてＰＣ５０は、第１中間コードコンバータによる生成時のエラーの有無を判定し、エラーが無い場合（Ｙｅｓ）はステップＳ６０に進み、エラーが有る場合（Ｎｏ）はステップＳ５５Ｂに進んでエラーメッセージを表示して処理を終了する。ステップＳ６０に進んだ場合、ＰＣ５０は、第２中間コードコンバータを起動して、ステップＳ４０にて生成した逆変換プログラム（ラダー言語）から再変換第２中間コード（ＳＴＡ言語）を生成（図４参照）してステップＳ６５Ａに進む。そしてステップＳ６５ＡにてＰＣ５０は、第２中間コードコンバータによる生成時のエラーの有無を判定し、エラーが無い場合（Ｙｅｓ）はステップＳ７０に進み、エラーが有る場合（Ｎｏ）はステップＳ６５Ｂに進んでエラーメッセージを表示して処理を終了する。このステップＳ５０、Ｓ６０の処理が、再変換中間コード生成ステップに相当し、ステップＳ５０、Ｓ６０の処理を実行するＰＣ５０が、再変換中間コード生成手段に相当する。
【００３６】
ステップＳ７０に進んだ場合、ＰＣ５０は、ステップＳ２０にて生成した第１中間コードと、ステップＳ５０にて生成した再変換第１中間コードとを比較（図４参照）して、一致する場合（Ｙｅｓ）はステップＳ８０に進み、一致しない場合（Ｎｏ）はステップＳ７５Ｂに進んでエラーメッセージを表示して処理を終了する。ステップＳ８０に進んだ場合、ＰＣ５０は、ステップＳ３０にて生成した第２中間コードと、ステップＳ６０にて生成した再変換第２中間コードとを比較（図４参照）して、一致する場合（Ｙｅｓ）はステップＳ１１０に進み、一致しない場合（Ｎｏ）はステップＳ８５Ｂに進んでエラーメッセージを表示して処理を終了する。このステップＳ７０、Ｓ８０の処理が、中間コード照合ステップに相当し、ステップＳ７０、Ｓ８０の処理を実行するＰＣ５０が、中間コード照合手段に相当する。なお、図３に示す処理では、第１中間コードと再変換第１中間コードとが一致、且つ第２中間コードと再変換第２中間コードとが一致した場合に、後述する実行ファイル生成ステップを実行しているが、第１中間コードと再変換第１中間コードとが一致、あるいは第２中間コードと再変換第２中間コードとが一致、のいずれかが成立した場合に後述する実行ファイル生成ステップを実行するようにしてもよい。つまり、ステップＳ７０とステップＳ８０のいずれか一方を省略してもよい。
【００３７】
ステップＳ１１０に進んだ場合、ＰＣ５０は、第１実行ファイルコンバータを起動して、ステップＳ５０にて生成した再変換第１中間コード（ＳＴＡ言語）から第１実行ファイル（機械語）を生成（図４参照）してステップＳ１１５Ａに進む。そしてステップＳ１１５ＡにてＰＣ５０は、第１実行ファイルコンバータによる生成時のエラーの有無を判定し、エラーが無い場合（Ｙｅｓ）はステップＳ１２０に進み、エラーが有る場合（Ｎｏ）はステップＳ１１５Ｂに進んでエラーメッセージを表示して処理を終了する。ステップＳ１２０に進んだ場合、ＰＣ５０は、第２実行ファイルコンバータを起動して、ステップＳ６０にて生成した再変換第２中間コード（ＳＴＡ言語）から第２実行ファイル（機械語）を生成（図４参照）してステップＳ１２５Ａに進む。そしてステップＳ１２５ＡにてＰＣ５０は、第２実行ファイルコンバータによる生成時のエラーの有無を判定し、エラーが無い場合（Ｙｅｓ）はステップＳ１３０に進み、エラーが有る場合（Ｎｏ）はステップＳ１２５Ｂに進んでエラーメッセージを表示して処理を終了する。このステップＳ１１０、Ｓ１２０の処理が、実行ファイル生成ステップに相当し、ステップＳ１１０、Ｓ１２０の処理を実行するＰＣ５０が、実行ファイル生成手段に相当する。
【００３８】
ステップＳ１３０に進んだ場合、ＰＣ５０は、ステップＳ１１０にて生成した第１実行ファイルを、コネクタ１１Ｇ及びＩ／Ｆ１１Ｅを介して第１ＣＰＵ１１Ａに転送（図４参照）して第１ＲＯＭ１１Ｃに第１実行ファイルを記憶させ（図２参照）、ステップＳ１３５Ａに進む。そしてステップＳ１３５ＡにてＰＣ５０は、第１実行ファイルの転送等によるエラーの有無を判定し、エラーが無い場合（Ｙｅｓ）はステップＳ１４０に進み、エラーが有る場合（Ｎｏ）はステップＳ１３５Ｂに進んでエラーメッセージを表示して処理を終了する。ステップＳ１４０に進んだ場合、ＰＣ５０は、ステップＳ１２０にて生成した第２実行ファイルを、コネクタ１２Ｇ及びＩ／Ｆ１２Ｅを介して第２ＣＰＵ１２Ａに転送（図４参照）して第２ＲＯＭ１２Ｃに第２実行ファイルを記憶させ（図２参照）、ステップＳ１４５Ａに進む。そしてステップＳ１４５ＡにてＰＣ５０は、第２実行ファイルの転送等によるエラーの有無を判定し、エラーが無い場合（Ｙｅｓ）はステップＳ１５０に進み、エラーが有る場合（Ｎｏ）はステップＳ１４５Ｂに進んでエラーメッセージを表示して処理を終了する。このステップＳ１３０、Ｓ１４０の処理が、ファイル転送ステップに相当し、ステップＳ１３０、Ｓ１４０の処理を実行するＰＣ５０が、ファイル転送手段に相当する。
【００３９】
ステップＳ１５０に進んだ場合、ＰＣ５０は、ステップＳ２０にて生成した第１中間コードを、コネクタ１１Ｇ及びＩ／Ｆ１１Ｅを介して第１ＣＰＵ１１Ａに転送（図４参照）して第１ＲＯＭ１１Ｃに第１中間コードを記憶させ（図２参照）、ステップＳ１５５Ａに進む。そしてステップＳ１５５ＡにてＰＣ５０は、第１中間コードの転送等によるエラーの有無を判定し、エラーが無い場合（Ｙｅｓ）は処理を終了し、エラーが有る場合（Ｎｏ）はステップＳ１５５Ｂに進んでエラーメッセージを表示して処理を終了する。またファイル転送ステップに、このステップＳ１５０を含めてもよい。また、ステップＳ１５０〜Ｓ１５５Ｂの処理は、省略してもよい。
【００４０】
この第１中間コードを第１ＲＯＭ１１Ｃに記憶するステップは、保守のためのプログラムの保存であり、当該第１中間コードを残しておけば、逆変換プログラム、再変換第１中間コード、再変換第２中間コード、第１実行ファイル、第２実行ファイルを、各コンバータソフトウェアにて機械的に生成することができる。従って、ラダー言語で記述されたオリジナルプログラムや逆変換プログラムを記憶しておく必要がない。この場合、ＳＴＡ言語の中間コードのサイズは、ラダー言語のプログラムの約１／１６のサイズであるので、記憶容量を大きく削減することができる。また、第１中間コードと第２中間コードの２通りの中間コードを記憶しておく必要も無く、第１中間コードのみを記憶しておけばよい。
【００４１】
また、本実施の形態にて説明したＰＬＣ用プログラムの作成支援方法は、第１所定言語のオリジナルプログラムから、２通りの中間コードコンバータ（コンバータソフトウェア）を用いて、２通りの中間コードを生成し、２通りの実行ファイルコンバータ（コンバータソフトウェア）を用いて、２通りの中間コードから２通りの実行ファイルを生成している。これにより、いずれかのコンバータソフトウェアに不具合があった場合、適切にＰＬＣの出力を停止させることができるので、ＰＬＣの緊急停止をより確実に防止することが可能である。また、ステップＳ７０にて第１中間コードと再変換第１中間コードとを機械的に比較し、ステップＳ８０にて第２中間コードと再変換第２中間コードとを機械的に比較することで、中間コードを設計者が一文ずつ確認していた従来の作業を排除し、手間と時間を短縮することができる。また、中間コード照合ステップにて、逆コンバータ（コンバータソフトウェア）に不具合があった場合であっても、適切に不具合を発見することができる。
【００４２】
また、第１中間コードコンバータと、第２中間コードコンバータと、逆コンバータと、第１実行ファイルコンバータと、第２実行ファイルコンバータと、が記憶された記憶手段と、第１中間コードコンバータと、第２中間コードコンバータと、逆コンバータと、第１実行ファイルコンバータと、第２実行ファイルコンバータと、を適宜実行して、中間コード生成ステップと、逆変換プログラム生成ステップと、再変換中間コード生成ステップと、中間コード照合ステップと、実行ファイル生成ステップと、ファイル転送ステップと、を実行する制御手段と、を有するＰＬＣ用プログラムの作成支援装置（ＰＣ５０）は、比較的容易に実現することができる。
【００４３】
本発明のプログラマブルロジックコントローラ用プログラムの作成支援装置及びプログラマブルロジックコントローラ用プログラムの作成支援方法は、本実施の形態にて説明した処理手順、構成、外観等に限定されず、本発明の要旨を変更しない範囲で種々の変更、追加、削除が可能である。また本実施の形態にて説明したプログラマブルロジックコントローラは、本実施の形態にて説明した構成、構造、外観、形状等に限定されず、本発明の要旨を変更しない範囲で種々の変更、追加、削除が可能である。
【００４４】
また、本実施の形態の説明では、第１所定言語としてラダー言語、第２所定言語としてＳＴＡ言語、を用いた例を説明したが、第１所定言語はラダー言語に限定されず、第２所定言語はＳＴＡ言語に限定されるものではない。また、本実施の形態の説明に用いた数値は一例であり、この数値に限定されるものではない。また本実施の形態の説明では、第１中間コードから逆変換プログラムを生成して第１中間コードを第１ＲＯＭに記憶したが、第２中間コードから逆変換プログラムを生成して第２中間コードを第２ＲＯＭに記憶するようにしてもよい。
【符号の説明】
【００４５】
１        ＰＬＣ（プログラマブルロジックコントローラ）
１０      制御ユニット
１０Ｓ    照合手段
１１Ａ    第１ＣＰＵ（第１制御手段）
１１Ｂ    第１ＲＡＭ
１１Ｃ    第１ＲＯＭ（第１記憶手段）
１２Ａ    第２ＣＰＵ（第２制御手段）
１２Ｂ    第２ＲＡＭ
１２Ｃ    第２ＲＯＭ（第２記憶手段）
１４      報知手段
２０      入力ユニット
３０      出力ユニット
５０      ＰＣ（ＰＬＣ用プログラムの作成支援装置）
【図１】
2015201132.tif 000003
【図３】
2015201132.tif 000004
【図２】
2015201132.tif 000005
【図４】
2015201132.tif 000006