(57)【要約】【課題】複数種別のそれぞれの言語で作成された制御プログラムの構成を適正化する。【解決手段】実施形態によれば、制御プログラム作成装置は、制御プログラムのソースファイルをコンパイル処理してオブジェクトファイルに変換するコンパイラと、オブジェクトファイルをコントローラに送付する通信手段とを有する制御プログラム管理部と、ソースファイルとオブジェクトファイルとを格納してソースファイルとオブジェクトファイルとを制御プログラム毎に設定されたキー情報により管理するデータベースとを備える。データベースは、第１の種別の言語でメインルーチン用に作成したソースファイルを変換したオブジェクトファイルと、第１の種別と異なる第２の種別の言語でサブルーチン用に作成したソースファイルを変換したオブジェクトファイルとを混在させて１つのプログラム構成単位をなすオブジェクトファイルとして管理する。【選択図】図１
2014228990.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを経由して、コントローラに制御プログラムのオブジェクトファイルを書き込む制御プログラム作成装置であって、
前記制御プログラムのソースファイルをコンパイル処理してオブジェクトファイルに変換するコンパイラと、前記オブジェクトファイルを前記コントローラに送付する通信手段とを有する制御プログラム管理部と、
前記ソースファイルと前記オブジェクトファイルとを格納し、前記ソースファイルと前記オブジェクトファイルとを前記制御プログラム毎に設定されたキー情報により管理するデータベースとを備え、
前記データベースは、
第１の種別の言語でメインルーチン用に作成したソースファイルを変換したオブジェクトファイルと、前記第１の種別と異なる第２の種別の言語でサブルーチン用に作成したソースファイルを変換したオブジェクトファイルとを混在させて１つのプログラム構成単位をなすオブジェクトファイルとして管理する
ことを特徴とする制御プログラム作成装置。
【請求項２】
前記制御プログラム管理部は、
前記第１の種別の言語で作成したソースファイルを変換したオブジェクトファイルが対応するサブルーチンへの前記メインルーチンからのコールを前記第１の種別の言語用のサブコール命令を使用して行い、前記第２の種別の言語で作成したソースファイルを変換したオブジェクトファイルが対応するサブルーチンへの前記メインルーチンからのコールを前記第２の種別の言語用のサブコール命令を使用して行う
ことを特徴とする請求項１に記載の制御プログラム作成装置。
【請求項３】
前記データベースは、
前記制御プログラムの制御プログラム情報、ルーチン情報、前記第１または第２の種別で作成されたソースファイルを、前記制御プログラム情報を最も上位として前記ソースファイルを最も下位とした階層構造で管理し、
前記制御プログラム情報は、プログラム名と、プログラム種別の情報とを含み、
前記ルーチン情報は、ルーチン名と、前記ソースファイルの作成に用いた言語の種別の情報とを含み、
前記制御プログラム情報とルーチン情報とを前記キー情報で関連付け、
前記ルーチン情報と前記ソースファイルをルーチン毎に設定されたサブキー情報で関連付ける
ことを特徴とする請求項１に記載の制御プログラム作成装置。
【請求項４】
編集対象のサブルーチンに対応するソースファイルが前記第１の種別の言語で作成された場合は、この第１の種別の言語に対応した編集画面を起動し、前記編集対象のサブルーチンに対応するソースファイルが前記第２の種別の言語で作成された場合は、この第２の種別の言語に対応した編集画面を起動する
ことを特徴とする請求項１に記載の制御プログラム作成装置。
【請求項５】
前記プログラム管理部のコンパイラは、
前記制御プログラムのルーチン毎に言語種別を判別し、この判別した言語に応じて前記制御プログラムのソースファイルをコンパイル処理してオブジェクトファイルに変換し、
前記コンパイラによってルーチン毎に変換されたオブジェクトファイルを１つのプログラム構成単位をなすオブジェクトファイルとして結合する
ことを特徴とする請求項１に記載の制御プログラム作成装置。
【請求項６】
前記データベースが管理する制御プログラム情報、ルーチン情報、およびソースファイルを１つのファイルとして外部との間でインポートまたはエクスポートする手段をさらに備えた
ことを特徴とする請求項３に制御プログラム作成装置。
【請求項７】
前記制御プログラムのルーチン毎に言語種別を判別し、この判別した言語に応じて制御プログラムを印刷する手段をさらに備えた
ことを特徴とする請求項１に記載の制御プログラム作成装置。
【請求項８】
ネットワークを経由して、コントローラに制御プログラムのオブジェクトファイルを書き込む制御プログラム作成装置に適用される制御プログラム作成方法であって、
制御プログラム管理部が前記制御プログラムのソースファイルをコンパイル処理してオブジェクトファイルに変換し、
前記制御プログラム管理部が前記オブジェクトファイルを前記コントローラに送付し、
データベースが前記ソースファイルと前記オブジェクトファイルとを格納し、前記ソースファイルと前記オブジェクトファイルとを前記制御プログラム毎に設定されたキー情報により管理し、
前記データベースが第１の種別の言語でメインルーチン用に作成したソースファイルを変換したオブジェクトファイルと、前記第１の種別と異なる第２の種別の言語でサブルーチン用に作成したソースファイルを変換したオブジェクトファイルとを混在させて１つのプログラム構成単位をなすオブジェクトファイルとして管理する
ことを特徴とする制御プログラム作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、制御プログラム作成装置および制御プログラム作成方法に関する。
【背景技術】
【０００２】
システムプログラマ（ユーザ）は、プラントを自動運転するためのプログラムを、プラント制御装置のアプリケーションプログラム(以降、「制御プログラム」と呼ぶ)として、作成、試験、調整後、プラント運転者へ提供する。システムプログラマは、プラントを安全に制御するために、制御プログラムの調整時に制御プログラムのデバッグを行う。
【０００３】
制御プログラムは、例えばIEC61131-3で規定されているＬＤ（ラダー）、ＦＢＤ（ファンクションブロックダイアグラム)、ＳＦＣ（シーケンシャルファンクションチャート）、およびＳＴ（ストラクチャードテキスト）などの言語を用いて記述される。制御プログラムのデバッグ時は、オンライン状態で、制御プログラム単位の置き換え、または接点（Ａ接点やＢ接点など）や変数の値を強制変更することにより、制御プログラムの動作確認を行う。この動作確認のとき、システムプログラマに対して、誤操作を招かないように、制御プログラム作成装置がわかりやすく提示することが求められる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−２２７８２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
制御プログラム作成装置では、制御プログラムは、メインで実行する「PROGRAM」と、この「PROGRAM」からコールされて実行する少なくとも１つの「FUNCTION／FUNCTION BLOCK」とに分けられる。「PROGRAM」、および「FUNCTION／FUNCTION BLOCK」は、それぞれが１つのプログラム構成単位をなしてプラント制御装置にロードされて実行される。  
「PROGRAM」や「FUNCTION／FUNCTION BLOCK」は、ＬＤ／ＦＢＤ／ＳＦＣなどのグラフィック言語、またはＳＴなどのテキスト言語を用いて作成することができる。
【０００６】
現状では、グラフィック言語のプログラムとテキスト言語のプログラムとは別個のプログラム構成単位をなすプログラムとしている。このため、ＬＤ／ＦＢＤ／ＳＦＣなどのグラフィック言語で作成されたプログラム（「PROGRAM」）からＳＴなどのテキスト言語で作成されたプログラムをコールする場合、テキスト言語のプログラムを「FUNCTION／FUNCTION BLOCK」とし、コール元とコール先のプログラムとを異なるプログラム構成単位として作成する必要がある。
【０００７】
また、１つのプログラム構成単位内でルーチンをメインルーチンとサブルーチンに分けて、メインルーチンからサブルーチンをコールして実行するプログラムを作成する場合、メインルーチンとサブルーチンとは、同じグラフィック言語、または同じテキスト言語で作成する必要がある。
【０００８】
そのため、例えば、メインで実行する「PROGRAM」の制御プログラムを視認性の高いグラフィック言語で作成し、プログラム内の各所で演算等を行う「FUNCTION／FUNCTION BLOCK」の制御プログラムをテキスト言語で作成すると、「FUNCTION／FUNCTION BLOCK」のプログラムの数が増えるにつれば、プログラム構成単位の数が増大してしまう。この場合、プログラム構成単位の数がプラント制御装置のプログラム構成単位の許容数をオーバーしてしまうので、プラント制御装置に適用できない。また、メインの「PROGRAM」の制御プログラムからコールされる「FUNCTION／FUNCTION BLOCK」の制御プログラムが大量に存在する場合、メインの「PROGRAM」の制御プログラムとの一元管理が困難になる。
【０００９】
本発明は上記事情を鑑みて成されたものであって、複数種別のそれぞれの言語で作成された制御プログラムの構成を適正化することが可能な制御プログラム作成装置および制御プログラム作成方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
実施形態に係る制御プログラム作成装置は、ネットワークを経由して、コントローラに制御プログラムのオブジェクトファイルを書き込む制御プログラム作成装置であって、制御プログラムのソースファイルをコンパイル処理してオブジェクトファイルに変換するコンパイラと、オブジェクトファイルをコントローラに送付する通信手段とを有する制御プログラム管理部と、ソースファイルとオブジェクトファイルとを格納し、ソースファイルとオブジェクトファイルとを制御プログラム毎に設定されたキー情報により管理するデータベースとを備える。データベースは、第１の種別の言語でメインルーチン用に作成したソースファイルを変換したオブジェクトファイルと、第１の種別と異なる第２の種別の言語でサブルーチン用に作成したソースファイルを変換したオブジェクトファイルとを混在させて１つのプログラム構成単位をなすオブジェクトファイルとして管理する。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係る制御プログラム作成装置の一構成例を概略的に示す図。
【図２】JISB3503(またはIEC61131-3)で規定されたグラフィック言語を使って作成した制御プログラムの一例を示す図。
【図３】JISB3503(またはIEC61131-3)で規定されたテキスト言語を使って作成した制御プログラムの一例を示す図。
【図４】実施形態におけるプログラム構成単位のオブジェクトファイルの構成例を示す図。
【図５】実施形態に係る制御プログラム作成装置のデータベースの一構成例を概略的に示す図。
【図６】実施形態における制御プログラムの異なる言語のルーチンを編集するための動作の一例を示すフローチャート。
【図７】実施形態における制御プログラムの異なる言語のルーチンをコンパイルするための動作の一例を示すフローチャート。
【図８】実施形態における制御プログラムのインポート／エクスポートファイルの構成例を示す図。
【図９】実施形態における異なる言語のルーチンをもつ制御プログラムをエクスポートするための動作の一例を示すフローチャート。
【図１０】実施形態における異なる言語のルーチンをもつ制御プログラムをインポートするための動作の一例を示すフローチャート。
【図１１】実施形態における異なる言語のルーチンをもつ制御プログラムを印刷するための動作の一例を示すフローチャート。
【図１２】従来のプログラム構成単位のオブジェクトファイルの構成例を示す図。
【発明を実施するための形態】
【００１２】
以下、実施形態における制御プログラム作成装置について図面を参照して説明する。図１は、実施形態における制御プログラム作成装置の構成例を概略的に示す図である。  
本実施形態における制御プログラム作成装置は、制御プログラム管理部１１０と、データベース１５０と、インポート／エクスポート部１６０と、制御プログラム印刷部１７０とを備えたコンピュータ１００を備えている。また、制御プログラム作成装置は、コンピュータ１００の入力装置としてのマウス１２およびキーボード１４と、コンピュータ１００の出力装置としての表示装置１６とを備えている。コンピュータ１００とプラント制御装置のコントローラ２００とはネットワーク３００に接続されている。
【００１３】
プラント制御装置のコントローラ２００は、制御プログラムのオブジェクトファイルを格納するためのオブジェクトメモリ２１０と、これらの書き込み、読み出し、実行を行う標準処理部２２０を有している。さらに、オブジェクトメモリ２１０は、データメモリ２１２とコードメモリ２１４とを有している。
【００１４】
標準処理部２２０は、プログラムロードサーバ部２２２と、オブジェクトメモリ２１０に記録された制御プログラムを実行するためのプログラム実行処理部２２４と、制御対象であるプラントからのプロセス信号を制御プログラムに与えるためのプロセス入出力処理部２２６とを備える。
【００１５】
プログラムロードサーバ部２２２は、ネットワーク３００を経由してコンピュータ１００から送付された制御プログラムのオブジェクトファイルを、オブジェクトメモリ２１０のデータメモリ２１２およびコードメモリ２１４に配置する。
【００１６】
コンピュータ１００は、システムプログラマが制御プログラムを作成するための制御プログラム管理部１１０と、制御プログラムを格納するデータベース１５０とを備える。  
制御プログラム管理部１１０は、グラフィック言語編集画面１１１と、テキスト言語編集画面１１２と、プログラムコンパイラ１１３と、プログラムロードクライアント部１１４とを備えている。
【００１７】
グラフィック言語編集画面１１１は、グラフィック言語の制御プログラムを編集するための画面である。テキスト言語編集画面１１２は、テキスト言語の制御プログラムを編集するための画面である。プログラムコンパイラ１１３は、制御プログラムのソースファイルをオブジェクトファイルに変換するためのコンパイル処理を行う。プログラムロードクライアント部１１４は、プログラムコンパイラ１１３によってソースファイルから変換されたオブジェクトファイルをコントローラ２００へ送付する通信手段である。
【００１８】
インポート／エクスポート部１６０は、制御プログラムを他のプラント制御装置の間でインポートまたはエクスポートする。制御プログラム印刷部１７０は、制御プログラムの印刷処理を行う。
【００１９】
プログラムコンパイラ１１３は、グラフィック言語で作成された制御プログラムのソースファイルをオブジェクトファイルに変換するためのグラフィック言語コンパイラ１１３ａと、テキスト言語で作成された制御プログラムのソースファイルをオブジェクトファイルに変換するためのテキスト言語コンパイラ１１３ｂとを備えている。
【００２０】
データベース１５０は、制御プログラムのソースファイルを格納するためのソースファイル部１５２と、制御プログラムのオブジェクトファイルを格納するためのオブジェクトファイル部１５４とを備えている。
【００２１】
図２に、JISB3503(またはIEC61131-3)で規定されたグラフィック言語を使って作成した制御プログラムの一例を示す。図２に示した制御プログラムは、表示装置１６の画面上で、プログラム言語に対応する図を組み合わせることによってその構造を組み立てることができる。例えば、図２に示したＣ１〜Ｃ７のそれぞれは、JISB3503(またはIEC61131-3)で規定されたグラフィック言語で記述された命令語に対応している。  
図３に、JISB3503(またはIEC61131-3)で規定されたＳＴ言語（テキスト言語）を使って作成した制御プログラムの一例を示す。
【００２２】
このように、システムプログラマは、グラフィック言語に対応する図を組み立てる、もしくはテキスト入力により制御プログラムのソースファイルを作成する。システムプログラマは、ソースファイルをプログラムコンパイラ１１３によってコンパイルして、オブジェクトファイルを作成する。
【００２３】
次に、制御プログラムの各ルーチンを異なる言語を用いて作成する機能について説明する。  
図１２は、従来のプログラム構成単位のオブジェクトファイルの構成例を示す図である。図１２に示すように、１つのプログラム構成単位をなす「PROGRAM」のオブジェクトファイルは、メインルーチンのオブジェクトとサブルーチンのオブジェクトとで構成するが、従来では、メインルーチンでのオブジェクトの作成に用いた言語と、少なくとも１つのサブルーチンのオブジェクトの作成に用いた言語とは共通している。このような「PROGRAM」の構成において、テキスト言語で作成したプログラムを用いる場合には、図１２に示すように、この「PROGRAM」とは異なるプログラム構成単位をなす「FUNCTION／FUNCTION BLOCK」のプログラムのメインルーチンとしている。
【００２４】
図４は、実施形態におけるプログラム構成単位のオブジェクトファイルの構成例を示す図である。  
図４に示した例では、ある制御プログラムのメインルーチン用にグラフィック言語で作成したソースファイルを変換したオブジェクト、サブルーチンＡ，Ｂ用にグラフィック言語で作成したソースファイルを変換したオブジェクト、および、サブルーチンＹ用にテキスト言語で作成したソースファイルを変換したオブジェクトを混在させて１つのプログラム構成単位をなすオブジェクトファイルとして結合して構成する。
【００２５】
このような構成とすることで、１つのプログラム構成単位をなすメインルーチンとサブルーチンとを異なる言語を用いて構成することができる。図４に示した例では、「PROGRAM」の構成において、メインルーチンをグラフィック言語で作成している場合で、テキスト言語で作成したプログラムを用いる場合には、同じ「PROGRAM」内にテキスト言語によるサブルーチンとして用いればよい。つまり、図１２に示した例と比較して、異なるプログラム構成単位をなす「FUNCTION／FUNCTION BLOCK」のプログラムの数を減らすことができる。つまり、言語の違いに起因してプログラム構成単位の数を増加させる必要がなくなるので、制御プログラムの数をプラント制御装置のプログラム構成単位の許容数の範囲内に抑えることができる。
【００２６】
次に、異なる言語で作成された制御プログラムのルーチンをコール（指定）する機能について説明する。  
メインルーチンは、制御プログラムの新規作成時にグラフィック言語、またはテキスト言語の何れかが指定されて作成される。  
メインルーチンからサブルーチンへのコールは、サブコール命令にて行う。メインルーチンでは、任意のプログラム位置にて、グラフィック言語専用のサブコール命令、またはテキスト言語専用のサブコール命令を配置する。
【００２７】
本実施形態では、グラフィック言語で作成されたソースファイルを変換したオブジェクトファイルが対応するサブルーチンへのコールは、グラフィック言語のサブルーチン専用のサブコール命令を使用する。また、テキスト言語で作成されたソースファイルを変換したオブジェクトファイルが対応するサブルーチンへのコールは、テキスト言語のサブルーチン専用のサブコール命令を使用する。
【００２８】
例えば、図４に示したメインルーチンからサブルーチンＡ，Ｂへのコールには、グラフィック言語サブルーチン専用のサブコールＡ，Ｂを使用する。また、図４に示したメインルーチンからサブルーチンＹへのコールには、テキスト言語サブルーチン専用のサブコールＹを使用する。
【００２９】
図５に、データベース１５０の一構成例を示す。データベース１５０のソースファイル部１５２には、制御プログラムのソースファイルが記録されている。ソースファイル部１５２は、制御プログラム情報１５２Ａと、ルーチン情報１５２Ｂと、グラフィック言語のプログラムソース１５２Ｃと、テキスト言語のプログラムソース１５２Ｄとで構成される。
【００３０】
図６に示した例では、１つの制御プログラム情報１５２Ａに対するルーチン情報１５２Ｂとグラフィック言語のプログラムソース１５２Ｃと、テキスト言語のプログラムソース１５２Ｄとは複数のデータで構成される。ルーチン情報１５２Ｂは図４に示したような１つのプログラム構成単位内のルーチン毎に設けられる。ルーチン情報１５２Ｂとグラフィック言語のプログラムソース１５２Ｃと、テキスト言語のプログラムソース１５２Ｄとを階層構造で管理している。最上位階層を制御プログラム情報１５２Ａとし、１つの制御プログラムに対して、固有の１つのキー情報を割り当てる。制御プログラム情報１５２Ａには、固有のキー情報と、プログラム名と、プログラム種別とが含まれる。キー情報は、例えば、数字や文字を組み合わせた情報である。プログラム種別とは、例えば図４に示した「PROGRAM」や「FUNCTION／FUNCTION BLOCK」である。
【００３１】
制御プログラム情報１５２Ａより１階層下のルーチン情報１５２Ｂは、このキー情報で制御プログラム情報１５２Ａと関連付けられる。  
ルーチン情報１５２Ｂは、メインルーチンおよびサブルーチンの情報を管理し、サブキー情報と、ルーチン名と、言語種別（グラフィック言語またはテキスト言語）と、制御プログラム情報１５２Ａのキー情報を参照するための参照キー情報とが含まれる。ルーチン情報１５２Ｂのサブキー情報は、例えば制御プログラムのルーチン情報１５２Ｂごとに付与された固有の情報である。
【００３２】
また、ルーチン情報１５２Ｂよりさらに１階層下のグラフィック言語のプログラムソース１５２Ｃと、テキスト言語のプログラムソース１５２Ｄとは、サブキー情報でルーチン情報１５２Ｂと関連付けられる。プログラムソース１５２Ｃのサブキー情報は、例えば制御プログラムの命令語ごとに付与された固有の情報である。
【００３３】
グラフィック言語のプログラムソース１５２Ｃは、グラフィック言語の各命令語を管理し、サブキー情報と、グラフィック言語の命令語位置情報と、グラフィック言語の命令語コードと、ルーチン情報１５２Ｂのサブキー情報を参照するための参照キー情報とを含む。  
テキスト言語のプログラムソース１５２Ｄは、各プログラムテキストを管理し、サブキー情報と、プログラムテキストと、ルーチン情報１５２Ｂのサブキーを参照するための参照キー情報とを含む。プログラムソース１５２Ｄのサブキー情報は、例えば制御プログラムのプログラムテキストごとに付与された固有の情報である。
【００３４】
本実施形態では、制御プログラム情報Ａとルーチン情報１５２Ｂは、上位階層のキー情報と同じ情報をもつ下位階層の参照キー情報を関連付けることで管理する。  
本実施形態では、ルーチン情報１５２Ｂと、グラフィック言語のプログラムソース１５２Ｃと、テキスト言語のプログラムソース１５２Ｄは、上位階層のサブキー情報と同じ情報をもつ下位階層の参照キー情報を関連付けることで管理する。これにより各ルーチンのプログラムソースを言語の種別に関わらず一元管理できる。
【００３５】
オブジェクトファイル部１５４に格納された制御プログラム情報１５４Ａは、各オブジェクトを管理し、キー情報と、プログラム名と、オブジェクトとを含む。このオブジェクトファイル部１５４に格納された制御プログラム情報１５４Ａと、ソースファイル部１５２に格納された制御プログラム情報１５２Ａとは、同じキー情報同士を関連付けることで管理される。
【００３６】
このような階層構造を用いてソースファイルやオブジェクトファイルを管理する事で、異なる言語で生成されたソースファイルおよびこのソースファイルを変換したオブジェクトファイルを一元管理する事ができる。
【００３７】
上記コンピュータ１００およびコントローラ２００の動作について以下に説明する。システムプログラマは、表示装置１６に表示されるグラフィック言語編集画面１１１またはテキスト言語編集画面１１２を使用して、制御プログラムを作成する。システムプログラマが制御プログラムを保存した時、その制御プログラムは、データベース１５０のソースファイル部１５２に格納され、かつ、そのソースファイルをプログラムコンパイラ１１３のグラフィック言語コンパイラ１１３ａやテキスト言語コンパイラ１１３ｂでコンパイルしたオブジェクトファイルをデータベース１５０のオブジェクトファイル部１５４へ保存する。
【００３８】
システムプログラマは、上記のように制御プログラムを作成、保存、コンパイルを実施した後に、ネットワーク３００を経由してコントローラ２００にオブジェクトファイルを書き込み、制御プログラムを実行させる。
【００３９】
オブジェクトファイルをコントローラ２００に書き込むとき、コンピュータ１００およびコントローラ２００は、プログラムロードクライアント部１１４がデータベース１５０のオブジェクトファイル部１５４からオブジェクトファイルを読み出して、ネットワーク３００を経由して、コントローラ２００のプログラムロードサーバ部２２２に送付する。プログラムロードサーバ部２２２は、オブジェクトファイルを受信して、オブジェクトメモリ２１０のデータメモリ２１２上およびコードメモリ２１４上に配置し、さらにプログラム実行処理部２２４がこれを実行して、制御プログラムが実行される。  
本実施形態にかかる制御プログラム作成装置では、コントローラ２００へ制御プログラムを書き込み、動作確認、および、デバックの動作を行う。
【００４０】
次に、制御プログラムにおける異なる言語のサブルーチンを編集することについて説明する。図６は、実施形態における制御プログラムの異なる言語のサブルーチンを編集するための動作の一例を示すフローチャートである。  
各サブルーチンのプログラムの編集は、メインルーチンとは別の編集画面にて行う。図１に示したコンピュータ１００の制御プログラム管理部１１０は、編集対象のサブルーチンに対応するソースファイルの作成に用いた言語種別を判別するために、編集対象のサブルーチンに対応するサブコール命令の言語種別を判別する（Ｓ１）。制御プログラム管理部１１０は、編集対象のサブルーチンに対応するルーチン情報の言語種別をソースファイル部１５２から読み出すことで、編集対象のサブルーチンに対応するソースファイルの作成に用いた言語種別を判別してもよい。
【００４１】
制御プログラム管理部１１０は、このサブコール命令がグラフィック言語専用のサブコール命令、例えば図４に示したサブコールＡ，Ｂである場合には（Ｓ２のＹＥＳ）、グラフィック言語編集画面１１１を起動する（Ｓ３）。また、制御プログラム管理部１１０は、サブコール命令がテキスト言語専用のサブコール命令、例えば図４に示したサブコールＹである場合には（Ｓ２のＮＯ）、テキスト言語編集画面１１２を起動する（Ｓ４）。
【００４２】
各編集画面は、サブルーチンの呼び出し元のメインルーチン情報（プログラム名、ルーチン名、言語種別）、サブコール命令のコール位置の情報、および自身のサブルーチン情報（ルーチン名、言語種別）を管理する。
【００４３】
次に、異なる言語を用いて作成したプログラムソースをコンパイルして１つのプログラム構成単位としてのオブジェクトファイルを生成する機能について説明する。図７は、実施形態における制御プログラムの異なる言語のルーチンをコンパイルするための動作の一例を示すフローチャートである。  
図１に示したコンピュータ１００の制御プログラム管理部１１０は、メインルーチン、またはサブルーチンのグラフィック言語編集画面１１１、またはテキスト言語編集画面１１２からプログラムのコンパイルを依頼された場合（Ｓ１１）、プログラムコンパイラ１１３にコンパイル処理を移管する（Ｓ１２）。プログラムコンパイラ１１３は、メインルーチンおよび各サブルーチンのうちコンパイル対象のルーチンを選択し（Ｓ１３）、このルーチンに対応する制御プログラムの言語種別を判別する（Ｓ１４）。
【００４４】
グラフィック言語のルーチンのプログラムであれば（Ｓ１５のＹＥＳ）、プログラムコンパイラ１１３は、グラフィック言語コンパイラ１１３ａを呼び出す（Ｓ１６）。また、テキスト言語のルーチンのプログラムであれば（Ｓ１５のＮＯ）、プログラムコンパイラ１１３は、テキスト言語コンパイラ１１３ｂを呼び出す（Ｓ１７）。
【００４５】
Ｓ１６またはＳ１７の後は、プログラムコンパイラ１１３は、言語種別を判別していない他のルーチンがあれば（Ｓ１８のＹＥＳ）、Ｓ１３に戻る。また、言語種別を判別していない他のルーチンなければ（Ｓ１８のＮＯ），プログラムコンパイラ１１３は、全てのルーチンのコンパイル処理を一括して実行し、このコンパイル処理によって生成された各ルーチンのオブジェクトを、図４に示すように１つのプログラム構成単位をなすオブジェクトファイルとして結合する（Ｓ１９）。
【００４６】
次に、異なる言語のルーチンをもつ制御プログラムを１つのプログラム構成単位として他のプラント制御装置用のコンピュータとの間でインポート／エクスポートする機能について説明する。  
図８は、実施形態における制御プログラムのインポート／エクスポートファイルの構成例を示す図である。インポートファイルまたはエクスポートファイルは、プログラム構成単位ごとに１つのファイルとする。インポートファイルまたはエクスポートファイルは、制御プログラムのプログラム情報（プログラム名、プログラム種別）と、ルーチン情報（ルーチン数、ルーチン名、ルーチンの言語種別）と、プログラムソース情報（プログラムソースのサイズ、プログラムソース）とで構成する。  
図８に示したように、グラフィック言語のプログラムソースは、グラフィック言語の命令語位置情報と命令語コードで構成する。また、テキスト言語のプログラムソースは、テキスト言語のプログラムテキストで構成する。
【００４７】
図９は、実施形態における異なる言語のルーチンをもつ制御プログラムをエクスポートするための動作の一例を示すフローチャートである。  
図１に示したコンピュータ１００のインポート／エクスポート部１６０は、エクスポート時、データベース１５０のソースファイル部１５２から制御プログラム情報と、関連するルーチン情報と、プログラムソース情報とを取得する（Ｓ２１）。
【００４８】
インポート／エクスポート部１６０は、取得した制御プログラムのプログラム名、プログラム種別を判別する（Ｓ２２）。インポート／エクスポート部１６０は、取得した制御プログラムのルーチン数を判別する（Ｓ２３）。インポート／エクスポート部１６０は、各ルーチンのルーチン名、言語種別を判別する（Ｓ２４）。
【００４９】
インポート／エクスポート部１６０は、各プログラムソースのサイズを判別する（Ｓ２５）。インポート／エクスポート部１６０は、各プログラムソースのソース情報を取得する（Ｓ２６）。
【００５０】
インポート／エクスポート部１６０は、Ｓ２２からＳ２６までの判別又は取得結果に基づいて、図８に示すように制御プログラム情報と、ルーチン情報と、プログラムソース情報とを配列したエクスポートファイルを生成する（Ｓ２７）。  
インポート／エクスポート部１６０は、この生成したエクスポートファイルを他のプラント制御装置用のコンピュータに出力する（Ｓ２８）。
【００５１】
図１０は、実施形態における異なる言語のルーチンをもつ制御プログラムをインポートするための動作の一例を示すフローチャートである。  
インポート／エクスポート部１６０は、他のプラント制御装置用のコンピュータからインポートファイルを入力する（Ｓ３１）。
【００５２】
インポート／エクスポート部１６０は、入力したインポートファイルの制御プログラム情報、ルーチン情報、およびプログラムソース情報を分解する（Ｓ３２）。具体的には、インポート／エクスポート部１６０は、制御プログラム情報のプログラム名、プログラム種別、ルーチン数を判別する。また、インポート／エクスポート部１６０は、ルーチン情報のルーチン名、言語種別を判別する。また、インポート／エクスポート部１６０は、入力したプログラムソース情報の命令語位置情報、命令語コード、プログラムテキストを判別する。
【００５３】
インポート／エクスポート部１６０は、この分解した結果キー情報、サブキー情報、参照キー情報を付与してデータベース１５０のソースファイル部１５２に格納する（Ｓ３３）。
【００５４】
以上の結果から明らかなように、本実施形態では、異なる言語種別のルーチンをもつ制御プログラムのプログラム情報、ルーチン情報およびプログラムソース情報を１つのファイルとしてシステムプログラマとの間でインポートまたはエクスポートすることができる。これにより、メインルーチンと複数のサブルーチンからなる制御プログラムのインポートファイルまたはエクスポートファイルを一元管理することができる。
【００５５】
次に、異なる言語のルーチンをもつ制御プログラムを１つのプログラム構成単位として印刷する機能について説明する。  
図１１は、実施形態における異なる言語のルーチンをもつ制御プログラムを印刷するための動作の一例を示すフローチャートである。  
図１に示したコンピュータ１００の制御プログラム印刷部１７０は、制御プログラムの印刷の操作を受け付け、データベース１５０のソースファイル部１５２から印刷対象の制御プログラムの制御プログラム情報と、関連するルーチン情報、およびプログラムソース情報を取得する（Ｓ４１）。
【００５６】
制御プログラム印刷部１７０は、取得した制御プログラムのルーチンのいずれかを印刷対象のルーチンとして選択して（Ｓ４２）、このルーチンの言語種別を判別する（Ｓ４３）。  
制御プログラム印刷部１７０は、ルーチンの言語種別がグラフィック言語であれば（Ｓ４４のＹＥＳ）、グラフィック言語のプログラムの印刷を実行する（Ｓ４５）。  
制御プログラム印刷部１７０は、ルーチンの言語種別がテキスト言語であれば（Ｓ４４のＮＯ）、グラフィック言語のプログラムの印刷を実行する（Ｓ４６）。
【００５７】
制御プログラム印刷部１７０は、全ルーチンの印刷が終了していなければ（Ｓ４７のＮＯ）、Ｓ４２に戻る。制御プログラム印刷部１７０は、全ルーチンの印刷が終了していれば（Ｓ４７のＹＥＳ）、一連の処理を終了する。  
プログラムの印刷結果には、ヘッダ情報（プログラム名、ルーチン名、印刷日時、等）、およびフッタ情報（ページ番号、等）が印字される。
【００５８】
以上の結果から明らかなように、本実施形態では、異なる言語種別のルーチンをもつ制御プログラムを１回の操作で印刷することができる。これにより、メインルーチンと複数のサブルーチンとの言語種別が異なっていても、これらのルーチンからなる制御プログラムの印刷結果を一元管理することができる。
【００５９】
実施形態によれば、複数種別のそれぞれの言語で作成された制御プログラムの構成を適正化する制御プログラム作成装置および制御プログラム作成方法を提供することができる。
【００６０】
なお、上記の各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。  
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。  
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。  
さらに、各実施形態における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。  
また、記憶媒体は１つに限らず、複数の媒体から上記の各実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。なお、各実施形態におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記の各実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。  
また、各実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。  
発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６１】
１２…マウス、１４…キーボード、１６…表示装置、１００…コンピュータ、１１０…制御プログラム編集部、１１１…グラフィック言語編集画面、１１２…テキスト言語編集画面、１１３…プログラムコンパイラ、１１３ａ…グラフィック言語コンパイラ、１１３ｂ…テキスト言語コンパイラ、１１４…プログラムロードクライアント部（通信部）、１５０…データベース、１５２…ソースファイル部、１５４…オブジェクトファイル部、１６０…インポート／エクスポート部、１７０…制御プログラム印刷部、２００…コントローラ、２１０…オブジェクトメモリ、２１２…データメモリ、２１４…コードメモリ、２２０…標準処理部、２２２…プログラムロードサーバ部、２２４…プログラム実行処理部、２２６…プロセス入出力処理部、３００…ネットワーク。
【図１】
2014228990.tif 000003
【図２】
2014228990.tif 000004
【図３】
2014228990.tif 000005
【図４】
2014228990.tif 000006
【図５】
2014228990.tif 000007
【図６】
2014228990.tif 000008
【図７】
2014228990.tif 000009
【図８】
2014228990.tif 000010
【図９】
2014228990.tif 000011
【図１０】
2014228990.tif 000012
【図１１】
2014228990.tif 000013
【図１２】
2014228990.tif 000014