(57)【要約】【課題】動作処理、条件処理、遷移処理を含む処理のセットごとにコントローラで実行可能なオブジェクトファイルを生成する。【解決手段】実施形態の制御プログラム管理装置は、判断部と、記述部とを備える。判断部は、動作処理と、動作処理の分岐条件を示す条件処理と、条件処理に示された分岐条件が満たされる場合における状態遷移を示す遷移処理と、処理の実行順を指定する命令語と、を備える第１の言語で記述された制御プログラムに対して、命令語が、動作処理、条件処理、遷移処理を１セットごとに実行するよう指定する第１の命令語であるか否かを判断する。記述部は、命令語が第１の命令語であると判断された場合、動作処理、条件処理、遷移処理を、１セットごとに実行するように第１の言語とは異なる第２の言語でオブジェクトファイルに記述する。【選択図】図２
2020027347.tif 000002
【特許請求の範囲】
【請求項１】
動作処理と、前記動作処理の分岐条件を示す条件処理と、前記条件処理に示された分岐条件が満たされる場合における状態遷移を示す遷移処理と、処理の実行順を指定する命令語と、を備える第１の言語で記述された制御プログラムに対して、前記命令語が、前記動作処理、前記条件処理、前記遷移処理を１セットごとに実行するよう指定する第１の命令語であるか否かを判断する判断部と、
前記命令語が前記第１の命令語であると判断された場合、前記動作処理、前記条件処理、前記遷移処理を、前記１セットごとに実行するように前記第１の言語とは異なる第２の言語でオブジェクトファイルに記述する記述部と、
を備える制御プログラム管理装置。
【請求項２】
前記判断部は、さらに、前記命令語が、前記動作処理、前記条件処理、前記遷移処理を、同じ種類に属する処理ごとに実行するよう指定する第２の命令語であるか否かを判断し、
前記記述部は、前記命令語が前記第２の命令語であると判断された場合、前記動作処理、前記条件処理、前記遷移処理を同じ種類に属する処理ごとに実行するように、前記第２の言語でオブジェクトファイルに記述する、
請求項１に記載の制御プログラム管理装置。
【請求項３】
前記制御プログラムは、前記第１の言語で記述されたメインルーチンと、前記第１の言語と前記第２の言語の両方と異なる第３の言語で記述された１または複数のサブルーチンとを含み、
前記記述部は、前記命令語が前記第１の命令語であると判断された場合、前記オブジェクトファイルにおいて、前記１または複数のサブルーチンを、前記メインルーチンよりも先に記述する、
請求項１または２に記載の制御プログラム管理装置。
【請求項４】
コントローラで実行中の前記制御プログラムを停止する操作と、停止された前記制御プログラムに含まれる複数の前記動作処理のいずれかを選択して前記制御プログラムの処理を再開する操作と、を受け付け可能な操作画面を表示装置に表示する表示制御部と、
前記操作画面において選択された前記動作処理から前記制御プログラムの処理を再開することを指示する指示信号を、前記コントローラに送信する送信部と、をさらに備える、
請求項１から３のいずれか１項に記載の制御プログラム管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、制御プログラム管理装置に関する。
【背景技術】
【０００２】
従来から、産業プラント（以下、単に「プラント」という。）等の制御システムにおいて、Ｉ／Ｏ（Input／output）機器等を制御するためにＰＬＣ（Programmable  Logic  Controller）等のコントローラが用いられている。
【０００３】
また、このようなコントローラは、アプリケーションプログラム(以降、「制御プログラム」と呼ぶ)を実行し、制御プログラムで定められた手順に従って各種の機器の動作を制御する。コントローラで実行される制御プログラムは、ＩＥＣ（国際電気標準会議）６１１３１−３で規定されているＳＦＣ（シーケンシャル・ファンクション・チャート）等の言語によって記述される。また、エンジニアリングツール等が、ＳＦＣで記述された制御プログラムをオブジェクトファイルに変換することにより、当該制御プログラムがコントローラで実行可能な状態となる。
【０００４】
従来技術においては、エンジニアリングツール等がＳＦＣで記述された制御プログラムのソースファイルをオブジェクトファイルに変換する際に、制御プログラムに含まれる処理を、処理の種類ごとに実行するようにオブジェクトファイルに記述していた。このため、コントローラは、当該オブジェクトファイルに記述された処理を実行する際に、同じ種類に属する処理ごとに実行していた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−０４０９９５号公報
【特許文献２】特開２００６−１９５５９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、制御プログラムに含まれる処理を、同じ種類に属する処理ごとではなく、動作処理、条件処理、遷移処理を含む処理のセットごとに実行することについてのニーズがあった。
【課題を解決するための手段】
【０００７】
実施形態の制御プログラム管理装置は、判断部と、記述部とを備える。判断部は、動作処理と、動作処理の分岐条件を示す条件処理と、条件処理に示された分岐条件が満たされる場合における状態遷移を示す遷移処理と、処理の実行順を指定する命令語と、を備える第１の言語で記述された制御プログラムに対して、命令語が、動作処理、条件処理、遷移処理を１セットごとに実行するよう指定する第１の命令語であるか否かを判断する。記述部は、命令語が第１の命令語であると判断された場合、動作処理、条件処理、遷移処理を、１セットごとに実行するように第１の言語とは異なる第２の言語でオブジェクトファイルに記述する。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態にかかる制御システムの全体構成の一例を示す図である。
【図２】図２は、第１の実施形態にかかるＰＣが備える機能の一例を示すブロック図である。
【図３】図３は、第１の実施形態にかかるステップ実行制御命令を含む制御プログラムの一例を示す図である。
【図４】図４は、第１の実施形態にかかるステップ実行制御命令を含む制御プログラムに含まれる処理の実行順の一例を示す図である。
【図５】図５は、第１の実施形態にかかる連続実行制御命令を含む制御プログラムの一例を示す図である。
【図６】図６は、第１の実施形態にかかる連続実行制御命令を含む制御プログラムに含まれる処理の実行順の一例を示す図である。
【図７】図７は、第１の実施形態にかかるコントローラが備える機能の一例を示すブロック図である。
【図８】図８は、第１の実施形態にかかるコントローラによるオブジェクトファイルの生成の処理の流れの一例を示すフローチャートである。
【図９】図９は、第２の実施形態にかかる制御プログラムの一例を示す図である。
【図１０】図１０は、第２の実施形態にかかる制御プログラムのオブジェクトコードの記述順の一例を示す図である。
【図１１】図１１は、第２の実施形態にかかるコントローラ２によるオブジェクトファイル１５２の生成の処理の流れの一例を示すフローチャートである。
【図１２】図１２は、第３の実施形態にかかるＰＣが備える機能の一例を示すブロック図である。
【図１３】図１３は、第３実施形態にかかる操作画面の一例を示す図である。
【図１４】図１４は、図１３に示した操作画面の操作対象である制御プログラムの一例を示す図である。
【発明を実施するための形態】
【０００９】
（第１の実施形態）
図１は、第１の実施形態にかかる制御システムＳの全体構成の一例を示す図である。制御システムＳは、例えば産業プラント（プラント）を制御するシステムであり、ＰＣ（Personal  Computer）１と、コントローラ２と、通信路４とを備える。通信路４は、ＰＣ１とコントローラ２とを結ぶ通信路であり、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）やＵＳＢ（Universal  Serial  Bus）などの高速の通信路である。
【００１０】
ＰＣ１は、ＣＰＵなどの制御装置と、ＲＯＭ（Read  Only  Memory）やＲＡＭ（Random  Access  Memory）などの記憶装置と、ＨＤＤ（Hard  Disk  Drive）、ＣＤドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。ＰＣ１は、本実施形態における制御プログラム管理装置の一例である。
【００１１】
また、コントローラ２は、プラントの制御を行うための基本機能をプログラミングした制御ソフトウェアやアプリケーションプログラム等を実行することにより、プラントを制御する。ハードウェア構成としては、コントローラ２は、ＣＰＵなどの制御装置と、ＲＡＭなどの記憶装置と、ＦＲＯＭやＨＤＤなどの外部記憶装置とを備える。
【００１２】
図２は、本実施形態にかかるＰＣ１が備える機能の一例を示すブロック図である。図２に示すように、ＰＣ１は、表示制御部１０１と、コンパイラ１０２と、オブジェクト生成部１０３と、送信部１０４と、受付部１０５と、記憶部１５０とを備える。
【００１３】
記憶部１５０は、ソースファイル１５１とオブジェクトファイル１５２とを記憶する。記憶部１５０は、例えばＨＤＤ等である。
【００１４】
ソースファイル１５１は、コンパイル前のアプリケーションプログラム（制御プログラム）が記述されたファイルである。本実施形態の制御プログラムは、ＩＥＣ（国際電気標準会議）  ６１１３１−３の標準規格でコントローラ用のプログラム言語として規定されているＳＦＣ（シーケンシャル・ファンクション・チャート）によって記述されている。ＳＦＣは、本実施形態における第１の言語の一例である。
【００１５】
本実施形態の制御プログラムは、コントローラ２で実行可能な複数の処理が記述されており、具体的には、動作処理と、条件処理と、遷移処理と、をそれぞれ１または複数含むものとする。動作処理と、条件処理と、遷移処理とは、制御プログラムに含まれる処理の種類である。
【００１６】
動作処理は、Ｓｔｅｐともいい、コントローラ２が実行する動作を記述したものである。また、条件処理は、Ｔｒａｎｓｉｔｉｏｎともいい、動作処理間の状態遷移を制御するための論理的な分岐条件を示す条件分岐である。ＳＦＣにおいて、条件処理は、動作処理と連続して記述される。遷移処理は、条件処理に示された分岐条件が満たされる場合における状態遷移を示す。具体的には、ＳＦＣ上の遷移処理は、条件処理に示された分岐条件が満たされる場合に、コントローラ２が次に実行する動作処理を規定する。動作処理と、条件処理と、遷移処理との詳細については後述する。
【００１７】
また、制御プログラムは、処理の実行順を指定する命令語を１つ含むものとする。本実施形態においては、制御プログラムは、連続実行制御命令またはステップ実行制御命令を含む。
【００１８】
連続実行制御命令は、動作処理、条件処理、遷移処理を１セットごとに実行するよう指定（命令）する命令語であり、本実施形態における第１の命令語の一例である。
【００１９】
また、ステップ実行制御命令は、動作処理、条件処理、遷移処理を、同じ種類に属する処理ごとに実行するよう指定（命令）する命令語であり、本実施形態における第２の命令語の一例である。具体的には、本実施形態においては、ステップ実行制御命令は、処理の種類ごとに、条件処理、遷移処理、動作処理、の順に実行することを命令する。例えば、ステップ実行制御命令を含む制御プログラムに複数の条件処理が含まれる場合は、全ての条件処理が実行された後に、遷移処理が実行される。連続実行制御命令とステップ実行制御命令の詳細については後述する。
【００２０】
オブジェクトファイル１５２は、制御プログラムのソースファイル１５１が、後述のコンパイラ１０２およびオブジェクト生成部１０３によって実行形式のプログラムに変換されたファイルである。オブジェクトファイル１５２に記述された制御プログラムの条件処理、遷移処理、動作処理は、後述のコントローラ２のプログラム実行処理部２１２によって実行される。より詳細には、オブジェクトファイル１５２は、バイナリデータに変換された制御プログラム（オブジェクトコード）と、コントローラ２の構成の定義情報と、制御プログラムで用いられるパラメータの値等を含む。コントローラ２の構成の定義情報や、制御プログラムで用いられるパラメータの値等は、例えば記憶部１５０に記憶されているものとする。バイナリデータはバイナリ形式の機械語によって記述されたデータである。バイナリ形式の機械語は、本実施形態における第２の言語の一例である。
【００２１】
表示制御部１０１は、制御プログラムを編集する編集画面の表示制御を行う。具体的には、表示制御部１０１は、ソースファイル１５１に記述された制御プログラムを表示装置の画面上に描画する。
【００２２】
コンパイラ１０２は、ソースファイル１５１に記述された制御プログラムに、含まれる命令語の種類を判断する。より詳細には、コンパイラ１０２は、制御プログラムに含まれる命令語が、連続実行制御命令であるか否かを判断する。また、コンパイラ１０２は、制御プログラムに含まれる命令語が、連続実行制御命令ではない場合に、当該命令語がステップ実行制御命令であるか否かを判断する。コンパイラ１０２は、ソースファイル１５１に連続実行制御命令またはステップ実行制御命令が含まれていると判断した場合に、オブジェクト生成部１０３にその旨を通知する。また、コンパイラ１０２は、ソースファイル１５１に記述された制御プログラムの文法の正誤を判定する。コンパイラ１０２は、本実施形態における判断部の一例である。
【００２３】
オブジェクト生成部１０３は、コンパイラ１０２の判断結果に基づいて、制御プログラムをバイナリ形式の機械語に変換し、オブジェクトファイル１５２を生成する。より詳細には、オブジェクト生成部１０３は、制御プログラムに含まれる命令語が連続実行制御命令であると判断された場合、動作処理、条件処理、遷移処理を、１セットごとに実行するようにバイナリ形式の機械語でオブジェクトファイル１５２に記述する。１セットの処理は、１つの動作処理と、ＳＦＣにおいて当該動作処理に連続して記述された１つの条件処理と、当該条件処理に示された条件が満たされる場合における１つの遷移処理と、を含むものとする。
【００２４】
また、オブジェクト生成部１０３は、制御プログラムに含まれる命令語がステップ実行制御命令であると判断された場合、動作処理、条件処理、遷移処理を同じ種類に属する処理ごとに実行するように、バイナリ形式の機械語でオブジェクトファイル１５２に記述する。また、オブジェクト生成部１０３は、記憶部１５０に記憶されたコントローラ２の構成の定義情報や、制御プログラムで用いられるパラメータの値等をオブジェクトファイル１５２に記述する。オブジェクト生成部１０３は、本実施形態における記述部の一例である。なお、コンパイラ１０２がオブジェクト生成部１０３の機能を含むものとしても良い。
【００２５】
送信部１０４は、オブジェクトファイル１５２をコントローラ２に送信（ダウンロード）する。
【００２６】
受付部１０５は、表示装置に表示された編集画面においてユーザが制御プログラムを編集した操作等を受け付ける。
【００２７】
次に、ステップ実行制御命令を含む制御プログラムについて、具体的に説明する。
図３は、本実施形態にかかるステップ実行制御命令を含む制御プログラムの一例を示す図である。図３に示すように、本実施形態において、コンパイル前の制御プログラムはＳＦＣによって記述されている。
【００２８】
図３に示す制御プログラムの先頭に記述された“ＳＥＱ  ＳＱ００１”は、当該制御プログラムにおけるステップ実行制御命令である。本実施形態では、ステップ実行制御命令は、“ＳＥＱ”と、任意の文字列とを含むものとする。ＳＦＣにおいては、動作処理は矩形として記述される。また、遷移処理および遷移処理は、動作処理よりも小さい矩形として記述される。動作処理および遷移処理の間の処理の流れは、“リンク”と呼ばれる実線で示される。
【００２９】
図３に示す制御プログラムは、ステップ実行制御命令である“ＳＥＱ  ＳＱ００１”と、動作処理である“Ｓ１”、“Ｓ２”と、条件処理および遷移処理である“Ｔ１”、“Ｔ２”と、を含む。ステップ実行制御命令の“ステップ”とは、制御プログラムを構成する最小単位を示す。オブジェクト生成部１０３は、制御プログラムがステップ実行制御命令を含む場合、制御プログラムに含まれる処理を１ステップずつ読み取り（スキャン）する。オブジェクト生成部１０３は、読み取った各処理を、処理の種類（条件処理、遷移処理、動作処理）ごとにコントローラ２によって実行されるように、オブジェクトファイル１５２に記述する。
【００３０】
図４は、本実施形態にかかるステップ実行制御命令を含む制御プログラムに含まれる処理の実行順の一例を示す図である。図３に示したステップ実行制御命令を含む制御プログラムは、コンパイラ１０２およびオブジェクト生成部１０３によってオブジェクトファイル１５２に変換された後、後述のコントローラ２によって実行される。この際、図４に示すように、制御プログラム内の各処理は、処理の種類ごとに、条件処理“Ｔ１”、条件処理“Ｔ２”、遷移処理“Ｔ１”、遷移処理“Ｔ２”、動作処理“Ｓ１”、動作処理“Ｓ２”の順に、コントローラ２によって実行される。このようなステップ実行制御命令は、従来から用いられてきた。
【００３１】
次に、連続実行制御命令を含む制御プログラムについて、具体的に説明する。
図５は、本実施形態にかかる連続実行制御命令を含む制御プログラムの一例を示す図である。図５に示す制御プログラムの先頭に記述された“ＳＥＱ２  ＳＱ００１”は、当該制御プログラムにおける連続実行制御命令である。本実施形態では、連続実行制御命令は、“ＳＥＱ２”と、任意の文字列とを含むものとする。先頭の処理がステップ実行制御命令ではなく連続実行制御命令である他は、図５に示す制御プログラムは、図３に示した制御プログラムと同様である。
【００３２】
制御プログラムが連続実行制御命令を含む場合、制御プログラム内で、１つの動作処理と、当該動作処理に連続して記載された１つの条件処理と１つの遷移処理とは１セットの処理となる。具体的には、動作処理“Ｓ１”と、条件処理および遷移処理“Ｔ１”とは、１セットの処理となる。また、動作処理“Ｓ２”と、条件処理および遷移処理“Ｔ２”とは、他の１セットの処理となる。オブジェクト生成部１０３は、連続実行制御命令を含む制御プログラムが複数セットの処理を含む場合、制御プログラム上にＳＦＣで記述された位置が上のセットから順にコントローラ２によって実行されるように、オブジェクトファイル１５２に記述する。
【００３３】
図６は、本実施形態にかかる連続実行制御命令を含む制御プログラムに含まれる処理の実行順の一例を示す図である。図５に示した連続実行制御命令を含む制御プログラムが後述のコントローラ２によって実行される際は、図６に示すように、１セットの処理である動作処理“Ｓ１”、条件処理“Ｔ１”、遷移処理“Ｔ１”が順に実行された後に、他の１セットの処理である動作処理“Ｓ２”、条件処理“Ｔ２”、遷移処理“Ｔ２”が順に実行される。連続実行制御命令を含む制御プログラムにおいては、ＳＦＣで記述された処理を、１つの動作処理と１つの条件処理と１つの遷移処理とを含むセットごとに、ＳＦＣによって制御プログラム内に記述された位置が上に位置するセットから順にコントローラ２によって実行される。
【００３４】
図７は、本実施形態にかかるコントローラ２が備える機能の一例を示すブロック図である。図７に示すように、コントローラ２は、記憶部２５０と、標準処理部２１０とを備える。
【００３５】
記憶部２５０は、オブジェクトファイル１５２に記述された実行形式のプログラムを、データ２５１と、コード２５２とに分けて記憶する。データ２５１は、オブジェクトファイル１５２に記述されたコントローラ２の構成の定義情報や制御プログラムで用いられるパラメータの値等である。また、コード２５２は、オブジェクトファイル１５２に記述された制御プログラムのコードである。記憶部２５０は、ＦＲＯＭ等である。
【００３６】
標準処理部２１０は、オブジェクトロード部２１１と、プログラム実行処理部２１２と、入出力部２１３とを備える。
【００３７】
オブジェクトロード部２１１は、ＰＣ１からオブジェクトファイル１５２を受信（ダウンロード）し、データ２５１とコード２５２とに分割して記憶部２５０に保存する。
【００３８】
プログラム実行処理部２１２は、記憶部２５０に保存されたデータ２５１とコード２５２とを読み出し、制御プログラムを実行する。また、プログラム実行処理部２１２は、入出力部２１３が受信したプロセス信号等により、制御対象のプラントを構成する各種の装置またはセンサからフィードバックを受ける。また、プログラム実行処理部２１２は、当該フィードバックに基づいて、制御プラグラムのパラメータを設定する。プログラム実行処理部２１２は、本実施形態における実行処理部の一例である。
【００３９】
また、プログラム実行処理部２１２は、制御プログラムが連続実行制御命令を含む場合は、複数の動作処理が実行条件を満たしている場合、１スキャンで、複数セットの動作処理、条件処理、遷移処理を連続して実行する。これに対して、制御プログラムがステップ実行制御命令を含む場合は、プログラム実行処理部２１２は、１スキャンごとに１つの処理を実行する。
【００４０】
入出力部２１３は、制御対象のプラントを構成する各種の装置またはセンサから送信されたプロセス信号を受信する。また、入出力部２１３は、入力したプロセス信号を、プログラム実行処理部２１２に送出する。
【００４１】
次に、本実施形態におけるオブジェクトファイル１５２の生成の手順について、より詳細に説明する。
図８は、本実施形態にかかるコントローラ２によるオブジェクトファイル１５２の生成の処理の流れの一例を示すフローチャートである。このフローチャートの処理は、例えばユーザによって制御プログラムの変換を実行する操作が入力された場合に、開始する。
【００４２】
コンパイラ１０２は、記憶部１５０に記憶されたソースファイル１５１を読み込む（Ｓ１）。次に、コンパイラ１０２は、ソースファイル１５１に記述された制御プログラムに、連続実行制御命令とステップ実行制御命令のいずれが含まれるかを判断する（Ｓ２）。
【００４３】
コンパイラ１０２が、制御プログラムに連続実行制御命令が含まれると判断した場合（Ｓ２“連続実行制御命令”）、オブジェクト生成部１０３は、ソースファイル１５１に記述された処理を、１セットの動作処理と条件処理と遷移処理ごとに実行するオブジェクトコードを生成する（Ｓ３）。
【００４４】
そして、オブジェクト生成部１０３は、生成したオブジェクトコードに、コントローラ２の構成の定義情報と、制御プログラムで用いられるパラメータの値等とを追加して、オブジェクトファイル１５２を生成する（Ｓ４）。オブジェクト生成部１０３は、生成したオブジェクトファイル１５２を記憶部１５０に保存する。
【００４５】
また、コンパイラ１０２が、制御プログラムにステップ実行制御命令が含まれると判断した場合（Ｓ２“ステップ実行制御命令”）、オブジェクト生成部１０３は、ソースファイル１５１に記述された処理を、処理の種類ごとに実行するオブジェクトコードを生成する（Ｓ５）。
【００４６】
そして、オブジェクト生成部１０３は、生成したオブジェクトコードに、コントローラ２の構成の定義情報と、制御プログラムで用いられるパラメータの値等とを追加して、オブジェクトファイル１５２を生成する（Ｓ６）。
【００４７】
なお、Ｓ３、Ｓ４、Ｓ５、Ｓ６の処理は、コンパイラ１０２が行うものとしても良い。また、コンパイラ１０２は、Ｓ２の処理の前に、ソースファイル１５１に記述された制御プログラムの文法の誤りの有無を判断する文法チェックの処理をしても良い。
【００４８】
このように、本実施形態のＰＣ１では、動作処理と、条件処理と、遷移処理と、処理の実行順を指定する命令語とを備える制御プログラムに対して、制御プログラムに含まれる命令語が連続実行制御命令であるか否かを判断し、制御プログラムに含まれる命令語が連続実行制御命令であると判断した場合に、動作処理、条件処理、遷移処理を、１セットごとに実行するようにバイナリ形式の機械語でオブジェクトファイル１５２に記述する。このため、本実施形態のＰＣ１によれば、コントローラ２で動作処理、条件処理、遷移処理を含む処理のセットごとに実行可能なオブジェクトファイル１５２を生成することができる。
【００４９】
例えば、ＩＥＣ  ６１１３１−３の標準規格が制定される以前は、制御プログラムを記述するために、連続実行のシーケンスフロー図（以下、連続シーケンスフロー図）が用いられることがあった。このような連続シーケンスフロー図で記述された既存の制御プログラムでは、動作処理、条件処理、遷移処理に相当する処理が連続して実行されることを前提として記述されている場合がある。このため、従来の処理の実行制御命令では、ＩＥＣ  ６１１３１−３の標準規格に適応した新しいコントローラ２で、連続シーケンスフロー図からＳＦＣに変換された制御プログラムを、既存の連続シーケンスフロー図で意図されていた実行順で実行することが困難な場合があった。
【００５０】
これに対して、本実施形態のＰＣ１では、制御プログラムに含まれる複数の処理を１セットの処理ごとに実行するオブジェクトファイル１５２を生成することができるため、新しいコントローラ２でも既存の制御プログラムで意図されていた処理の実行順で実行可能な、実行形式の制御プログラムを生成することができる。このため、本実施形態のＰＣ１によれば、既存ソフトウェア資産の活用や、性能改善をすることができる。
【００５１】
さらに、本実施形態のＰＣ１では、制御プログラムに含まれる命令語がステップ実行制御命令である場合に、制御プログラムに含まれる複数の処理を、同じ種類に属する処理ごとに実行するようにオブジェクトファイル１５２を生成する。このため、本実施形態のＰＣ１によれば、連続実行制御命令に対応すると共に、従来から用いられているステップ実行制御命令に基づいた実行順で、コントローラ２に処理を実行させることができる。
【００５２】
（第２の実施形態）
第１の実施形態では、ＳＦＣで記述されたメインルーチンのみが記述された制御プログラムについて説明した。この第２の実施形態では、連続実行制御命令を含む制御プログラムが、ＳＦＣ以外の言語で記述されたサブルーチンを含む場合におけるオブジェクトファイル１５２の生成について説明する。
【００５３】
本実施形態における制御システムＳは、第１の実施形態と同様に、ＰＣ１と、コントローラ２と、通信路４とを備える。また、本実施形態におけるＰＣ１、およびコントローラ２のハードウェア構成は、第１の実施形態と同様である。本実施形態のコントローラ２は、第１の実施形態と同様の機能を備える。
【００５４】
本実施形態のＰＣ１は、第１の実施形態と同様に、表示制御部１０１と、コンパイラ１０２と、オブジェクト生成部１０３と、送信部１０４と、受付部１０５と、記憶部１５０とを備える。表示制御部１０１と、コンパイラ１０２と、送信部１０４と、受付部１０５と、記憶部１５０とは、第１の実施形態と同様の機能を備える。
【００５５】
本実施形態のオブジェクト生成部１０３は、第１の実施形態の機能を備えた上で、制御プログラム内の命令語が連続実行制御命令であると判断された場合、つまり、制御プログラムに連続実行制御命令が含まれる場合に、オブジェクトファイル１５２において、サブルーチンをメインルーチンよりも先に記述する。
【００５６】
図９は、本実施形態にかかる制御プログラムの一例を示す図である。図９に示す制御プログラムは、連続実行制御命令と、ＳＦＣによって記述されたメインルーチンと、１または複数のサブルーチンとを含む。ＳＦＣにおけるサブルーチンはアクションとも呼ばれ、メインルーチン内から呼び出されて実行される。サブルーチンは、ＩＥＣ  ６１１３１−３の標準規格でコントローラ用のプログラム言語として規定されている言語のうち、ＳＦＣ以外の言語で記述される。本実施形態においては、制御プログラムに含まれるサブルーチンは、ＬＤ(ラダー・ダイアグラム)またはＦＢＤ（ファンクション・ブロック・ダイアグラム）によって記述されるものとする。ＬＤおよびＦＢＤは、本実施形態における第３の言語の一例である。
【００５７】
図９に示す例では、制御プログラムは、３つのサブルーチン“ＡＣＴ＿１”、“ＡＣＴ＿２”、“ＡＣＴ＿３”を含む。以下、制御プログラムに含まれる連続実行制御命令（またはステップ実行制御命令）、サブルーチン、メインルーチン、メインルーチンの終了処理を、「制御プログラムに含まれる要素」、という。
【００５８】
図１０は、本実施形態にかかる制御プログラムのオブジェクトコードの記述順の一例を示す図である。図１０の左側に示すように、制御プログラムが連続実行制御命令を含む場合、オブジェクト生成部１０３は、連続実行制御命令、３つのサブルーチン“ＡＣＴ＿１”、“ＡＣＴ＿２”、“ＡＣＴ＿３”、メインルーチン、メインルーチンの終了処理、の順に、オブジェクトファイル１５２にオブジェクトコードを記述する。オブジェクト生成部１０３がこのような順番で実行形式の制御プログラムを生成することにより、コントローラ２が連続実行制御命令を含む制御プログラム場合に、効率よくサブルーチンとメインルーチンとをスキャンすることができる。
【００５９】
これに対して、オブジェクト生成部１０３は、制御プログラム内の命令語が連続実行制御命令ではないと判断された場合、つまり、制御プログラムに連続実行制御命令が含まれない場合は、制御プログラムに含まれる要素を、制御プログラムのソースファイル１５１における記述位置が上に位置するものから順に、オブジェクトファイル１５２にオブジェクトコードを記述する。
【００６０】
例えば、図９で説明した制御プログラムが、連続実行制御命令ではなく、ステップ実行制御命令を含むとする。このような場合、オブジェクト生成部１０３は、図１０の右側に示すように、サブルーチン“ＡＣＴ＿１”、ステップ実行制御命令、メインルーチン、メインルーチンの終了処理、サブルーチン“ＡＣＴ＿２”、サブルーチン“ＡＣＴ＿３”の順に、オブジェクトファイル１５２にオブジェクトコードを記述する。このようにソースファイル１５１に記述された順に実行形式の制御プログラムに記述する記述方法は、従来から用いられている方法である。オブジェクト生成部１０３は、制御プログラムが連続実行制御命令を含まない場合には、従来と同様の記述順に切り替えてオブジェクトファイル１５２を生成することができる。
【００６１】
次に、本実施形態におけるオブジェクトファイル１５２の生成の手順について、より詳細に説明する。
図１１は、本実施形態にかかるコントローラ２によるオブジェクトファイル１５２の生成の処理の流れの一例を示すフローチャートである。
【００６２】
Ｓ１のソースファイル１５１の読み込みから、Ｓ２の制御プログラムに連続実行制御命令とステップ実行制御命令のいずれが含まれるかを判断する処理までは、第１の実施形態のＳ１、Ｓ２と同様の処理である。
【００６３】
コンパイラ１０２が、制御プログラムに連続実行制御命令が含まれると判断した場合（Ｓ２“連続実行制御命令”）、オブジェクト生成部１０３は、全てのサブルーチンを、メインルーチンよりも前に記述したオブジェクトコードを生成する（Ｓ１３）。また、オブジェクト生成部１０３は、ＳＦＣで記述されたメインルーチンに含まれる処理については、第１の実施形態と同様に、動作処理と条件処理と遷移処理とを１つずつ含むセットごとに実行するオブジェクトコードを生成する。
【００６４】
Ｓ４のオブジェクトファイル１５２の生成の処理については、第１の実施形態のＳ４と同様の処理である。
【００６５】
また、コンパイラ１０２が、制御プログラムにステップ実行制御命令が含まれると判断した場合（Ｓ２“ステップ実行制御命令”）、オブジェクト生成部１０３は、制御プログラムに含まれる要素を、ソースファイル１５１における記述位置が上に位置するものから順に記述したオブジェクトコードを生成する（Ｓ１５）。また、オブジェクト生成部１０３は、ＳＦＣで記述されたメインルーチンに含まれる処理については、第１の実施形態と同様に、ソースファイル１５１に記述された処理を、処理の種類ごとに実行するオブジェクトコードを生成する。
【００６６】
Ｓ６のオブジェクトファイル１５２の生成の処理については、第１の実施形態のＳ４と同様の処理である。
【００６７】
このように、本実施形態のＰＣ１では、ＳＦＣで記述されたメインルーチンとＳＦＣ以外の言語で記述されたサブルーチンとを含む制御プログラムに連続実行制御命令が含まれる場合、オブジェクトファイル１５２において、サブルーチンを、メインルーチンよりも先に記述する。このため、本実施形態のＰＣ１によれば、第１の実施形態の効果に加えて、メインルーチンとＳＦＣ以外の言語で記述されたサブルーチンとが混在した制御プログラムを、コントローラ２が連続実行制御命令に基づいた処理を実行するために適したオブジェクトファイル１５２に変換することができる。
【００６８】
（第３の実施形態）
この第３の実施形態では、ＰＣ１は、第１の実施形態の機能に加えて、コントローラ２で実行中の制御プログラムを停止するユーザの操作や、制御プログラム内の任意の処理からの再開をする操作を受け付ける。
【００６９】
本実施形態における制御システムＳは、第１の実施形態と同様に、ＰＣ１と、コントローラ２と、通信路４とを備える。また、本実施形態におけるＰＣ１、およびコントローラ２のハードウェア構成は、第１の実施形態と同様である。
【００７０】
図１２は、本実施形態にかかるＰＣ１が備える機能の一例を示すブロック図である。本実施形態のＰＣ１は、表示制御部１１０１と、コンパイラ１０２と、オブジェクト生成部１０３と、送信部１１０４と、受付部１０５と、取得部１１０６と、記憶部１５０とを備える。コンパイラ１０２と、オブジェクト生成部１０３と、記憶部１５０とは、第１の実施形態と同様の機能を備える。
【００７１】
取得部１０６は、コントローラ２から、制御プログラムの実行状態を取得する。また、取得部１０６は、コントローラ２から、コントローラ２またはプラントの状態に関するタグデータ（タグ情報）を受信する。タグデータは、例えば、制御プログラムにおいて発生したアラームやエラーの内容と、当該アラームやエラーが発生した処理を特定する識別情報とを含む。
【００７２】
本実施形態の表示制御部１１０１は、第１の実施形態の機能を備えた上で、操作画面を表示装置に表示する。操作画面は、ユーザによる操作を受け付け可能な画面であり、例えば、コントローラ２で実行中の制御プログラムを停止する操作と、停止された制御プログラムに含まれる複数の動作処理のいずれかを選択して制御プログラムの処理を再開する操作と、を受け付け可能である。また、表示制御部１１０１は、さらに、取得部１０６が取得した制御プログラムの実行状態を表す監視画面を表示装置に表示する。監視画面と操作画面の詳細については後述する。
【００７３】
本実施形態の受付部１１０５は、第１の実施形態の機能を備えた上で、操作画面におけるユーザの操作を受け付ける。
【００７４】
本実施形態の送信部１１０４は、第１の実施形態の機能を備えた上で、操作画面において選択された動作処理から制御プログラムの処理を再開することを指示する指示信号を、コントローラ２に送信する。また、送信部１１０４は、操作画面において制御プログラムを停止または一時停止する操作がされた場合に、制御プログラムの停止または一時停止を指示する指示信号を、コントローラ２に送信する。
【００７５】
また、本実施形態のコントローラ２は、第１の実施形態と同様に、記憶部２５０と、標準処理部２１０とを備える。また、第１の実施形態と同様に、標準処理部２１０は、オブジェクトロード部２１１と、プログラム実行処理部２１２と、入出力部２１３とを備える。記憶部２５０と、オブジェクトロード部２１１と、入出力部２１３とは、第１の実施形態と同様の機能を備える。
【００７６】
本実施形態のコントローラ２のプログラム実行処理部２１２は、第１の実施形態の機能を備えた上で、制御プラグラムの実行状態をＰＣ１に送信する。
【００７７】
図１３は、本実施形態にかかる操作画面９０（操作パネル）の一例を示す図である。操作画面９０は、一時停止ボタン９１と、停止ボタン９２と、実行ボタン９４と、リスタートステップを選択可能なリストボックス９３とを備える。リスタートステップは、停止状態にある制御プログラムの処理が再開する際に、再開位置となる動作処理のことを示す。リストボックス９３には、制御プログラムに含まれる動作処理の名称が表示される。
【００７８】
一時停止ボタン９１は、実行中の制御プログラムを一時停止するボタンである。また、停止ボタン９２は、実行中の制御プログラムを停止するボタンである。
【００７９】
実行ボタン９４は、停止状態にある制御プログラムを実行するボタンである。停止状態は、一時停止状態を含むものとする。リストボックス９３でいずれかの動作処理がリスタートステップとして選択された状態で、実行ボタン９４が押下された場合に、実行ボタン９４が押下された場合に、送信部１１０４は、リスタートステップとして選択された動作処理から制御プログラムの処理を再開することを指示する指示信号を、コントローラ２に送信する。
【００８０】
図１４は、本実施形態にかかる監視画面の一例を示す図である。表示制御部１１０１は、ＳＦＣで記述された制御プログラムを表示装置に表示し、取得部１０６が取得した制御プログラムの実行状態に応じて、監視画面の表示を変更する。例えば、表示制御部１１０１は、制御プログラムに含まれる処理のうち、実行中の処理を、実行中ではない処理とは異なる表示態様で表示しても良い。
【００８１】
図１４に示す制御プログラムは、３つの動作処理“Ｓ１”、“Ｓ２”、“Ｓ３”を含む。また、当該制御プログラムは、ＰＣ１に対するタグデータの出力処理“ＣＭＳＱ＿Ｐ”を含み、ＰＣ１で実行状態を監視されることを前提としている。
【００８２】
制御プログラムがコントローラ２で実行中に、ユーザが操作画面９０上で一時停止ボタン９１または停止ボタン９２を押下して当該制御プログラムを一時停止または停止させる。その後に、例えば、ユーザが操作画面９０上でリストボックス９３からリスタートステップとして動作処理“Ｓ３”を選択した上で実行ボタン９４を押下した場合、制御プログラムがいずれの処理の実行中に一時停止または停止したかに関わらず、動作処理“Ｓ３”から制御プログラムの処理が実行される。
【００８３】
なお、図１３に示した操作画面９０が有する各種のボタンおよび図１４に示した制御プログラムは一例であり、これに限定されるものではない。また、操作画面９０はタグデータの出力処理を含まない制御プログラムに対しても、一時停止、停止、実行、リスタートステップの選択等の操作が可能であるものとする。
【００８４】
このように、本実施形態のＰＣ１では、コントローラ２で実行中の制御プログラムを停止する操作と、停止された制御プログラムに含まれる複数の動作処理のいずれかを選択して制御プログラムの処理を再開する操作と、を受け付け可能な操作画面を表示装置に表示し、操作画面において選択された動作処理から制御プログラムの処理を再開することを指示する指示信号を、コントローラ２に送信する。このため、本実施形態のＰＣ１によれば、第１の実施形態の効果に加えて、ユーザの任意の処理から制御プログラムの実行を再開することができる。
【００８５】
例えば、エンジニアが、開発用のＰＣ１とコントローラ２とを含むエンジニアリング環境（開発環境）を用いて、制御プログラムのテスト実行や検証をする場合がある。このような場合に、エンジニアが、ＰＣ１の表示装置に表示された操作画面から制御プログラムの停止および任意の動作処理からの再開をすることで、効率よく制御プログラムのテスト実行や検証を行うことができる。
【００８６】
以上説明したとおり、第１から第３の実施形態によれば、動作処理、条件処理、遷移処理を含む処理のセットごとにコントローラで実行可能な実行形式の制御プログラムを生成することができる。
【００８７】
本実施形態のＰＣ１で実行されるオブジェクトファイルの生成プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００８８】
また、本実施形態のＰＣ１で実行されるオブジェクトファイルの生成プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の〜装置で実行される〜プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。また、本実施形態のオブジェクトファイルの生成プログラムプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００８９】
本実施形態のＰＣ１で実行されるオブジェクトファイルの生成プログラムは、上述した各部（表示制御部、コンパイラ、オブジェクト生成部、送信部、受付部、取得部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体からオブジェクトファイルの生成プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、表示制御部、コンパイラ、オブジェクト生成部、送信部、受付部、取得部が主記憶装置上に生成されるようになっている。
【００９０】
また、本実施形態のコントローラ２で実行されるプログラムは、ＲＯＭ等に予め組み込まれて提供される。本実施形態のコントローラ２で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００９１】
さらに、本実施形態のコントローラ２で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態のコントローラ２で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００９２】
本実施形態のコントローラ２で実行されるプログラムは、上述した各部（標準処理、オブジェクトロード部、プログラム実行処理部、入出力部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記ＲＯＭからプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、標準処理、オブジェクトロード部、プログラム実行処理部、入出力部が主記憶装置上に生成されるようになっている。
【００９３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９４】
２  コントローラ
９０  操作画面
９１  一時停止ボタン
９２  停止ボタン
９３  リストボックス
９４  実行ボタン
１０１，１１０１  表示制御部
１０２  コンパイラ
１０３  オブジェクト生成部
１０４，１１０４  送信部
１０５，１１０５  受付部
１０６，１１０６  取得部
１５０  記憶部
１５１  ソースファイル
１５２  オブジェクトファイル
２１０  標準処理部
２１１  オブジェクトロード部
２１２  プログラム実行処理部
２１３  入出力部
２５０  記憶部
Ｓ  制御システム
【図１】
2020027347.tif 000003
【図２】
2020027347.tif 000004
【図３】
2020027347.tif 000005
【図４】
2020027347.tif 000006
【図５】
2020027347.tif 000007
【図６】
2020027347.tif 000008
【図７】
2020027347.tif 000009
【図８】
2020027347.tif 000010
【図９】
2020027347.tif 000011
【図１０】
2020027347.tif 000012
【図１１】
2020027347.tif 000013
【図１２】
2020027347.tif 000014
【図１３】
2020027347.tif 000015
【図１４】
2020027347.tif 000016