IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三菱電機株式会社の特許一覧

<>
  • 特許-翻訳装置、翻訳方法及びプログラム 図1
  • 特許-翻訳装置、翻訳方法及びプログラム 図2
  • 特許-翻訳装置、翻訳方法及びプログラム 図3
  • 特許-翻訳装置、翻訳方法及びプログラム 図4
  • 特許-翻訳装置、翻訳方法及びプログラム 図5
  • 特許-翻訳装置、翻訳方法及びプログラム 図6
  • 特許-翻訳装置、翻訳方法及びプログラム 図7
  • 特許-翻訳装置、翻訳方法及びプログラム 図8
  • 特許-翻訳装置、翻訳方法及びプログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2025-03-06
(45)【発行日】2025-03-14
(54)【発明の名称】翻訳装置、翻訳方法及びプログラム
(51)【国際特許分類】
   G06F 8/40 20180101AFI20250307BHJP
   G06F 8/51 20180101ALI20250307BHJP
【FI】
G06F8/40
G06F8/51
【請求項の数】 12
(21)【出願番号】P 2024551599
(86)(22)【出願日】2024-04-08
(86)【国際出願番号】 JP2024014246
【審査請求日】2024-08-29
【早期審査対象出願】
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】100095407
【弁理士】
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100131152
【弁理士】
【氏名又は名称】八島 耕司
(74)【代理人】
【識別番号】100147924
【弁理士】
【氏名又は名称】美恵 英樹
(74)【代理人】
【識別番号】100148149
【弁理士】
【氏名又は名称】渡邉 幸男
(74)【代理人】
【識別番号】100181618
【弁理士】
【氏名又は名称】宮脇 良平
(74)【代理人】
【識別番号】100174388
【弁理士】
【氏名又は名称】龍竹 史朗
(72)【発明者】
【氏名】山本 亮
(72)【発明者】
【氏名】跡部 浩士
【審査官】今川 悟
(56)【参考文献】
【文献】特開平10-177487(JP,A)
【文献】特開2010-176377(JP,A)
【文献】特開2013-140513(JP,A)
【文献】特開2002-099312(JP,A)
【文献】長田 知之 ほか,変電所監視制御システム向け制御シーケンス開発支援システム,平成20年電気学会全国大会講演論文集 (第3分冊),2008年03月19日,p.40
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/40
G06F 8/51
(57)【特許請求の範囲】
【請求項1】
シーケンス制御プログラムのソースコードから、前記ソースコードの一部であるブロックを抽出するブロック抽出手段と、
前記ブロック抽出手段により抽出されたブロックのうち、どのブロックを高級言語に翻訳するかを決定する翻訳対象決定手段と、
前記翻訳対象決定手段により前記高級言語に翻訳することが決定されたブロックを前記高級言語に翻訳する翻訳手段と、
前記ブロック抽出手段により抽出された各ブロックについて、該ブロックを前記高級言語に翻訳したときの処理性能と、該ブロックを前記高級言語に翻訳しなかったときの処理性能とを推定する性能推定手段と、
前記各ブロックについて、前記性能推定手段により推定された、該ブロックを前記高級言語に翻訳したときの処理性能と、該ブロックを前記高級言語に翻訳しなかったときの処理性能とをユーザに提示する提示手段と、
を備える翻訳装置。
【請求項2】
シーケンス制御プログラムのソースコードから、前記ソースコードの一部であるブロックを抽出するブロック抽出手段と、
前記ブロック抽出手段により抽出されたブロックのうち、どのブロックを高級言語に翻訳するかを決定する翻訳対象決定手段と、
前記翻訳対象決定手段により前記高級言語に翻訳することが決定されたブロックを前記高級言語に翻訳する翻訳手段と、
ユーザの入力に基づいて目標性能を設定する設定手段と、
前記目標性能を満たし、かつ前記高級言語に翻訳したとき翻訳対象の総ステップ数が最小となるブロックの組を特定する組特定手段と、
前記組特定手段により特定された組を前記ユーザに提示する提示手段と、
を備える翻訳装置。
【請求項3】
前記ブロックは、前記高級言語に翻訳したときに高速化の効果が期待できる大きさかつデバッガビリティが考慮された大きさである、
請求項1に記載の翻訳装置。
【請求項4】
前記ブロック抽出手段は、前記ソースコードが含む制御構文に基づいてブロックを抽出する、
請求項1から3のいずれか1項に記載の翻訳装置。
【請求項5】
前記翻訳対象決定手段はさらに、前記ユーザの入力に基づいて前記高級言語に翻訳しないブロックを特定し、特定したブロック以外のブロックを前記高級言語に翻訳するブロックとして決定する、
請求項1から3のいずれか1項に記載の翻訳装置。
【請求項6】
前記ユーザの入力に基づいて前記ソースコードにおける観測対象を設定する設定手段をさらに備え、
前記翻訳対象決定手段は、前記観測対象を含まないブロックを前記高級言語に翻訳するブロックとして決定する、
請求項1から3のいずれか1項に記載の翻訳装置。
【請求項7】
前記翻訳手段は、前記高級言語に翻訳することが決定されたブロックの翻訳において、該ブロックでのみ使用されている変数を前記高級言語のローカル変数として翻訳する、
請求項1から3のいずれか1項に記載の翻訳装置。
【請求項8】
前記性能推定手段は、学習済モデルに基づいて処理性能を推定する、
請求項1に記載の翻訳装置。
【請求項9】
コンピュータが、
シーケンス制御プログラムのソースコードから、前記ソースコードの一部であるブロックを抽出し、
抽出されたブロックのうちどのブロックを高級言語に翻訳するかを決定し、
前記高級言語に翻訳することが決定されたブロックを前記高級言語に翻訳し、
抽出された各ブロックについて、該ブロックを前記高級言語に翻訳したときの処理性能と、該ブロックを前記高級言語に翻訳しなかったときの処理性能とを推定し、
前記各ブロックについて、推定された、該ブロックを前記高級言語に翻訳したときの処理性能と、該ブロックを前記高級言語に翻訳しなかったときの処理性能とをユーザに提示する、
翻訳方法。
【請求項10】
コンピュータが、
シーケンス制御プログラムのソースコードから、前記ソースコードの一部であるブロックを抽出し、
抽出されたブロックのうちどのブロックを高級言語に翻訳するかを決定し、
前記高級言語に翻訳することが決定されたブロックを前記高級言語に翻訳し、
ユーザの入力に基づいて目標性能を設定し、
前記目標性能を満たし、かつ前記高級言語に翻訳したとき翻訳対象の総ステップ数が最小となるブロックの組を特定し、
特定された組を前記ユーザに提示する、
翻訳方法。
【請求項11】
コンピュータを、
シーケンス制御プログラムのソースコードから、前記ソースコードの一部であるブロックを抽出するブロック抽出手段、
前記ブロック抽出手段により抽出されたブロックのうちどのブロックを高級言語に翻訳するかを決定する翻訳対象決定手段、
前記翻訳対象決定手段により前記高級言語に翻訳することが決定されたブロックを前記高級言語に翻訳する翻訳手段、
前記ブロック抽出手段により抽出された各ブロックについて、該ブロックを前記高級言語に翻訳したときの処理性能と、該ブロックを前記高級言語に翻訳しなかったときの処理性能とを推定する性能推定手段、
前記各ブロックについて、前記性能推定手段により推定された、該ブロックを前記高級言語に翻訳したときの処理性能と、該ブロックを前記高級言語に翻訳しなかったときの処理性能とをユーザに提示する提示手段、
として機能させるプログラム。
【請求項12】
コンピュータを、
シーケンス制御プログラムのソースコードから、前記ソースコードの一部であるブロックを抽出するブロック抽出手段、
前記ブロック抽出手段により抽出されたブロックのうちどのブロックを高級言語に翻訳するかを決定する翻訳対象決定手段、
前記翻訳対象決定手段により前記高級言語に翻訳することが決定されたブロックを前記高級言語に翻訳する翻訳手段、
ユーザの入力に基づいて目標性能を設定する設定手段、
前記目標性能を満たし、かつ前記高級言語に翻訳したとき翻訳対象の総ステップ数が最小となるブロックの組を特定する組特定手段、
前記組特定手段により特定された組を前記ユーザに提示する提示手段、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、翻訳装置、翻訳方法及びプログラムに関する。
【背景技術】
【0002】
ST言語などのシーケンス制御プログラム用のプログラミング言語で記載されたソースコードを、C言語などの高級言語に翻訳する技術が知られている。例えば特許文献1には、ST言語で記載されたソースコードをC言語で記載されたソースコードに変換するエンジニアリングツールが開示されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2007-133622号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
一般的に、ST言語などのシーケンス制御プログラム用のプログラミング言語で記載されたソースコードに基づくプログラムよりも、C言語などの高級言語で記載されたソースコードに基づくプログラムのほうが処理性能が高い。一方で、一般的に、シーケンス制御プログラム用のプログラミング言語で記載されたソースコードに基づくプログラムは、ステップ実行、観測ポイントの設定、変数の監視などデバッグのための機能を容易に実現できるため、高級言語で記載されたソースコードに基づくプログラムよりもデバッガビリティに優れる。
【0005】
そのため、高速化とデバッガビリティとの双方を考慮して、シーケンス制御プログラム用のプログラミング言語で記載されたソースコードの一部を適切に高級言語に翻訳する技術が求められている。しかし特許文献1に記載のエンジニアリングツールは、単にST言語で記載されたソースコードをC言語で記載されたソースコードに変換するのみであり、この要求に対応できない。
【0006】
本開示の目的は、上記の事情に鑑み、高速化とデバッガビリティとの双方を考慮して、シーケンス制御プログラム用のプログラミング言語で記載されたソースコードの一部を高級言語に翻訳可能な翻訳装置等を提供することにある。
【課題を解決するための手段】
【0007】
上記の目的を達成するため、本開示に係る翻訳装置は、
シーケンス制御プログラムのソースコードから、前記ソースコードの一部であるブロックを抽出するブロック抽出手段と、
前記ブロック抽出手段により抽出されたブロックのうち、どのブロックを高級言語に翻訳するかを決定する翻訳対象決定手段と、
前記翻訳対象決定手段により前記高級言語に翻訳することが決定されたブロックを前記高級言語に翻訳する翻訳手段と、
前記ブロック抽出手段により抽出された各ブロックについて、該ブロックを前記高級言語に翻訳したときの処理性能と、該ブロックを前記高級言語に翻訳しなかったときの処理性能とを推定する性能推定手段と、
前記各ブロックについて、前記性能推定手段により推定された、該ブロックを前記高級言語に翻訳したときの処理性能と、該ブロックを前記高級言語に翻訳しなかったときの処理性能とをユーザに提示する提示手段と、
を備える。
【発明の効果】
【0008】
本開示によれば、高速化とデバッガビリティとの双方を考慮して、シーケンス制御プログラム用のプログラミング言語で記載されたソースコードの一部を高級言語に翻訳できる。
【図面の簡単な説明】
【0009】
図1】本開示の実施の形態1に係る翻訳装置の機能的構成を示すブロック図
図2】本開示の実施の形態1に係る翻訳装置のブロック抽出部によるブロック抽出の一例を示す図
図3】本開示の実施の形態1に係る翻訳装置のブロック抽出部によるブロック抽出の一例を示す図
図4】本開示の実施の形態1に係る翻訳装置の提示部が提示する処理性能の一例を示す図
図5】本開示の実施の形態1に係る翻訳装置の翻訳部により得られる翻訳後ソースコードの一例を示す図
図6】本開示の実施の形態1に係る翻訳装置のハードウェア構成の一例を示す図
図7】本開示の実施の形態1に係る翻訳装置による翻訳の動作の一例を示すフローチャート
図8】本開示の実施の形態2に係る翻訳装置の機能的構成を示すブロック図
図9】本開示の実施の形態3に係る翻訳装置の機能的構成を示すブロック図
【発明を実施するための形態】
【0010】
以下、図面を参照しながら、本開示の実施の形態に係る翻訳装置を説明する。各図面においては、同一又は同等の部分に同一の符号を付す。
【0011】
(実施の形態1)
図1を参照しながら、実施の形態1に係る翻訳装置1を説明する。翻訳装置1には、表示装置2及び入力装置3が接続されている。翻訳装置1は、ST言語、ラダー言語などのシーケンス制御用プログラム用のプログラミング言語で記載されたソースコードの一部を、C言語などの高級言語に翻訳する翻訳装置である。以下、便宜のため、シーケンス制御用プログラム用のプログラミング言語で記載された元々のソースコードのことを「翻訳前ソースコード」という。また、翻訳前ソースコードの一部が高級言語に翻訳されたソースコードのことを「翻訳後ソースコード」という。当該シーケンス制御用プログラムは、例えばプログラマブルロジックコントローラにて実行される。翻訳装置1は、本開示に係る翻訳装置の一例である。
【0012】
まず、翻訳装置1によりどのようなことが実現されるかを概略的に説明する。後述するように、翻訳装置1は、翻訳前ソースコードが含む制御構文に基づいて、翻訳前ソースコードから複数のブロックを抽出する。ブロックとは、プログラミング言語におけるコードのまとまりのことであり、ソースコードの一部である。後述するように、制御構文に基づいて抽出されたブロックは、高級言語に翻訳したときに高速化が期待できる大きさであり、かつ、デバッガビリティが考慮された大きさである。
【0013】
翻訳装置1は、抽出した各ブロックについて、当該ブロックを高級言語に翻訳したときの処理性能と、当該ブロックを高級言語に翻訳しなかったときの処理性能とを推定し、推定した処理性能をユーザに提示する。ユーザは、提示された内容をもとに、高級言語への翻訳対象としないブロックを指定する。
【0014】
翻訳装置1は、ユーザが指定したブロック以外のブロックを高級言語に翻訳する。翻訳装置1により生成された翻訳後ソースコードは、シーケンス制御用プログラム用のプログラミング言語で記載されたブロックと、高級言語で記載されたブロックとの双方を含むものとなる。これにより、翻訳装置1は、高速化とデバッガビリティとの双方を考慮して、翻訳前ソースコードの一部を高級言語に翻訳できる。
【0015】
以下では、シーケンス制御用プログラム用のプログラミング言語はST言語であるものとし、高級言語はC言語であるものとして説明する。しかし、以下の説明は、ST言語以外のシーケンス制御用プログラム用のプログラミング言語、C言語以外の高級言語にも適用可能である。
【0016】
次に、表示装置2及び入力装置3を説明する。表示装置2は、翻訳装置1が提示する内容を表示するための装置である。表示装置2は、例えば液晶ディスプレイである。入力装置3は、ユーザによる翻訳装置1への入力操作を受け付けるための装置である。入力装置3は、例えばマウス、キーボードなどの入力装置である。表示装置2及び入力装置3は、一体となったタッチスクリーンであってもよい。
【0017】
次に、翻訳装置1の機能的構成を説明する。翻訳装置1は、記憶部10とブロック抽出部11と性能推定部12と提示部13と翻訳対象決定部14と翻訳部15とを備える。
【0018】
記憶部10は、翻訳前ソースコードを保存する。また、記憶部10は、後述する翻訳部15が翻訳前ソースコードの一部を翻訳することにより得られた翻訳後ソースコードを保存する。
【0019】
ブロック抽出部11は、記憶部10に保存された翻訳前ソースコードから、翻訳前ソースコードが含む制御構文に基づいて複数のブロックを抽出する。制御構文とは、IF文、FOR文、関数呼び出し文など、プログラムの各ステップの実行順序を制御するための構文である。ブロック抽出部11は、本開示に係るブロック抽出手段の一例である。
【0020】
図2を参照しながら、ブロック抽出部11によるブロック抽出の一例を説明する。図2に示すソースコードは、翻訳前ソースコードである。この翻訳前ソースコードは、制御構文を含まない連続した文と、FOR文と、IF文と、関数呼び出し文とを含む。ブロック抽出部11は、制御構文を含まない連続した文をまとめて1つのブロックとして抽出する。ブロック抽出部11は、FOR文、IF文及び関数呼び出し文を、それぞれ1つのブロックとして抽出する。抽出されたブロックは、翻訳前ソースコードの一部である。以下、ブロックに対応するソースコードを「コード片」ということがある。
【0021】
図3を参照しながら、ブロック抽出部11によるブロック抽出の別の一例を説明する。図3に示すソースコードは、FOR文を含むFOR文と、FOR文を含むIF文とを含む。つまり、図3に示すソースコードは、制御構文が入れ子となっている部分を含む。この場合、ブロック抽出部11は、内側の制御構文を下位ブロックとして抽出し、外側の制御構文を上位ブロックとして抽出する。このように、制御構文が入れ子となっている場合、抽出されるブロックも入れ子となる。
【0022】
ブロック抽出部11が制御構文に基づいて抽出したブロックは、C言語に翻訳したときに高速化が期待できる大きさであり、かつ、デバッガビリティが考慮された大きさである。高速化についての理由は、C言語に翻訳する際には、1つの文ごとに翻訳するよりも、一定のまとまりごとに翻訳した方が高速化の恩恵が大きいからである。デバッガビリティについての理由は、FOR文におけるループ変数、IF文において条件分岐に使用される変数、関数呼び出し文で渡される引数などは、デバッグの際に監視の対象となりやすいからである。また、ブロックをこれ以上細かく抽出すると、後述するユーザの指定において指定対象が莫大となり、ユーザの負担が大きくなるため、制御構文に基づくブロック抽出は、ユーザの負担を抑える効果もある。
【0023】
再び図1を参照する。性能推定部12は、ブロック抽出部11が抽出した複数のブロックのそれぞれについて、当該ブロックをC言語に翻訳したときの処理性能と、当該ブロックをC言語に翻訳しなかったときの処理性能とを推定する。性能推定部12は、各ブロックについて、当該ブロックの翻訳前のコード片に基づいて当該ブロックをC言語に翻訳しなかったときの処理性能を推定する。性能推定部12は、当該ブロックをC言語に翻訳してコード片を得て、得られたコード片に基づいて、当該ブロックをC言語に翻訳したときの処理性能を推定する。性能推定部12は、本開示に係る性能推定手段の一例である。
【0024】
性能推定部12は、例えば、各言語の各命令文の実行時間についてのデータベースを参照し、ブロックが含む命令文を分析して処理性能を推定する。あるいは、性能推定部12は、各ブロックについて、翻訳前のコード片に基づくプログラムと翻訳後のコード片に基づくプログラムとの双方をプログラマブルロジックコントローラにて実行して実行時間を計測することにより、処理性能を推定する。
【0025】
提示部13は、各ブロックについて、性能推定部12により推定された、当該ブロックをC言語に翻訳したときの処理性能と、当該ブロックをC言語に翻訳しなかったときの処理性能とを、表示装置2を介してユーザに提示する。提示部13は、例えば図4に示す結果をユーザに提示する。図4では、処理性能として実行時間が示されている。図4は、図2に示す翻訳前ソースコードについてのものである。提示部13は、本開示に係る提示手段の一例である。
【0026】
再び図1を参照する。翻訳対象決定部14は、ユーザの入力に基づいて、C言語に翻訳しないブロックを特定し、特定したブロック以外のブロックをC言語に翻訳するブロックとして特定する。ユーザは、例えば提示部13が提示した結果と、どのくらい高速化したいかと、どのようにデバッグを行いたいかとに基づいて、入力装置3を操作して翻訳対象から除外するブロックを指定する。翻訳対象決定部14は、ユーザの指定操作を受けて、C言語に翻訳しないブロックを特定する。翻訳対象決定部14は、本開示に係る翻訳対象決定手段の一例である。
【0027】
翻訳部15は、翻訳対象決定部14が翻訳対象として決定した全てのブロックをC言語に翻訳して翻訳後ソースコードを得る。なお、翻訳部15は、C言語に翻訳されずST言語のままとなっているブロックについても必要に応じて、C言語に翻訳されたブロックに対応して当該ブロックを呼び出すようにソースコードを変更する。翻訳部15は、翻訳して得られた翻訳後ソースコードを記憶部10に保存する。翻訳部15は、本開示に係る翻訳手段の一例である。
【0028】
図5を参照しながら、翻訳部15により得られる翻訳後ソースコードの一例を説明する。図5に示す翻訳後ソースコードは、図2に示す翻訳前ソースコードを翻訳して得られたものである。図5に示す網掛け部分は、翻訳後ソースコードのST言語部分のうち翻訳前ソースコードから変更された部分を示す。図5に示す翻訳後ソースコードは、図2に示す翻訳前ソースコードのうちFOR文に対応するブロックがC言語に翻訳されて図5に示すC言語部分のものとなり、ST言語部分ではC言語にて記載されたC_Func_Call関数を呼び出すように変更されている。なお、C言語部分に記載のget_label_ptr関数は、引数で指定された変数名に対応するST言語部分の変数を参照するための関数である。この関数により、ST言語部分で使用されている変数をC言語部分でも参照することができる。
【0029】
次に、翻訳装置1のハードウェア構成の一例について、図6を参照しながら説明する。図6に示す翻訳装置1は、例えばエンジニアリングツールのプログラムがインストールされたパーソナルコンピュータにより実現される。
【0030】
翻訳装置1は、バス1000を介して互いに接続された、プロセッサ1001と、メモリ1002と、インタフェース1003と、二次記憶装置1004と、を備える。
【0031】
プロセッサ1001は、例えばCPU(Central Processing Unit:中央演算装置)である。プロセッサ1001が、二次記憶装置1004に記憶されたエンジニアリングツールのプログラムをメモリ1002に読み込んで実行することにより、翻訳装置1の各機能が実現される。
【0032】
メモリ1002は、例えば、RAM(Random Access Memory)により構成される主記憶装置である。メモリ1002は、プロセッサ1001が二次記憶装置1004から読み込んだエンジニアリングツールのプログラムを記憶する。また、メモリ1002は、プロセッサ1001がエンジニアリングツールのプログラムを実行する際のワーキングメモリとして機能する。
【0033】
インタフェース1003は、例えばシリアルポート、USB(Universal Serial Bus)ポート、ネットワークインタフェースなどのI/O(Input/Output)インタフェースである。
【0034】
二次記憶装置1004は、例えば、フラッシュメモリ、HDD(Hard Disk Drive)、SSD(Solid State Drive)である。二次記憶装置1004は、プロセッサ1001が実行するエンジニアリングツールのプログラムを記憶する。また、二次記憶装置1004により記憶部10の機能が実現される。
【0035】
次に、図7を参照しながら、翻訳装置1による翻訳の動作の一例を説明する。図7に示す動作は、例えばユーザが入力装置3を操作して翻訳前ソースコードを翻訳する操作を行ったときに開始される。
【0036】
翻訳装置1のブロック抽出部11は、記憶部10に保存された翻訳前ソースコードから、翻訳前ソースコードが含む制御構文に基づいてブロックを抽出する(ステップS101)。
【0037】
翻訳装置1の性能推定部12は、各ブロックについて、翻訳前、翻訳後それぞれの処理性能を推定する(ステップS102)。
【0038】
翻訳装置1の提示部13は、各ブロックについて、ステップS102にて推定された翻訳前、翻訳後それぞれの処理性能を提示する(ステップS103)。
【0039】
翻訳装置1の翻訳対象決定部14は、ユーザによる指定操作を待ち受けて、ユーザが指定したブロックを翻訳しないブロックとして特定する(ステップS104)。
【0040】
翻訳対象決定部14は、ステップS101にて抽出されたブロックのうちステップS104にて翻訳しないブロックとして特定されたブロック以外のブロックを、翻訳対象として決定する(ステップS105)。
【0041】
翻訳装置1の翻訳部15は、ステップS105にて翻訳対象として決定されたブロックをC言語に翻訳し、翻訳後ソースコードを記憶部10に保存する(ステップS106)。
【0042】
以上、実施の形態1に係る翻訳装置1を説明した。翻訳装置1は、シーケンス制御プログラム用のプログラミング言語で記載された翻訳前ソースコードが含む制御構文に基づいて、翻訳前ソースコードから複数のブロックを抽出する。このように抽出されたブロックは、高級言語に翻訳したときに高速化が期待できる大きさであり、かつ、デバッガビリティが考慮された大きさである。翻訳装置1は、抽出した複数のブロックから翻訳対象となるブロックを決定し、翻訳対象となるブロックを高級言語に翻訳する。翻訳装置1は、各ブロックについて、翻訳前、翻訳後それぞれの処理性能を推定してユーザに提示する。ユーザは、提示された結果を参考に、高速化とデバッガビリティとを考慮して、どのブロックを翻訳対象から除外するかを指定できる。よって、翻訳装置1によれば、高速化とデバッガビリティとの双方を考慮して、シーケンス制御プログラム用のプログラミング言語で記載されたソースコードの一部を高級言語に翻訳できる。
【0043】
(実施の形態2)
図8を参照しながら、実施の形態2に係る翻訳装置1を説明する。実施の形態2に係る翻訳装置1は、設定部16と組特定部17とをさらに備える点が実施の形態1と異なる。また、提示部13の機能に追加がある点も実施の形態1と異なる。
【0044】
実施の形態2では、ユーザは、シーケンス制御プログラムの目標性能を設定することができる。翻訳装置1は、目標性能を満たし、かつ高級言語に翻訳したとき翻訳対象の総ステップ数が最小となるブロックの組を特定して提示する。ユーザは、提示された結果を踏まえて、翻訳しないブロックを指定できる。翻訳対象の総ステップ数を最小とすることにより、高速化にて目標性能を達成しつつ、デバッガビリティを可能な限り向上させることができる。翻訳対象のステップ数が少ないほど、翻訳されない部分が多くなり、翻訳されない部分はデバッガビリティに優れるからである。
【0045】
設定部16は、ユーザによる入力装置3を介した、目標性能の設定操作を受け付ける。設定部16は、ユーザの操作に基づいて目標性能を設定する。設定部16は、本開示に係る設定手段の一例である。
【0046】
組特定部17は、目標設定を満たし、かつ高級言語に翻訳したとき翻訳対象の総ステップ数が最小となるブロックの組を特定する。組特定部17は、本開示に係る組特定手段の一例である。
【0047】
提示部13は、実施の形態1の場合に加えて、組特定部17にて特定された、目標設定を満たし、かつ高級言語に翻訳したとき翻訳対象の総ステップ数が最小となるブロックの組をユーザに提示する。ユーザは、実施の形態1同様の各ブロックの処理性能と、新たに提示されたブロックの組とを参考に、翻訳しないブロックを指定することができる。
【0048】
(実施の形態2の変形例)
実施の形態2において、翻訳対象決定部14は、組特定部17が特定した、目標設定を満たし、かつ高級言語に翻訳したとき翻訳対象の総ステップ数が最小となるブロックの組を、ユーザの指定を待つことなく自動的に翻訳対象として決定してもよい。これにより、ユーザは、所望する目標設定を満たし、かつ最大限にデバッガビリティが向上した翻訳後プログラムを自動的に取得できる。
【0049】
(実施の形態3)
図9を参照しながら、実施の形態3に係る翻訳装置1を説明する。実施の形態3に係る翻訳装置1は、設定部18をさらに備える点が実施の形態1と異なる。また、翻訳対象決定部14の機能が実施の形態1と異なる。なお、この設定部18は、実施の形態2に係る設定部16とは異なる。
【0050】
設定部18は、ユーザの入力操作に基づいて、翻訳前ソースコードにおける観測対象を設定する。ユーザは、観測対象として、ソースコード中の変数、ソースコード中の特定の文などを指定できる。例えば、観測対象として指定された変数は、デバッグ中には常時値が表示されるようになる。また、例えば、観測対象として指定された文について、デバッグ中にプログラムが当該文を実行したときに、ユーザは、プログラム実行の一時停止、当該文に関連する変数の表示などを行うことができる。設定部18は、本開示に係る設定手段の一例である。
【0051】
翻訳対象決定部14は、実施の形態1の場合と異なり、設定部18が設定した観測対象を含まないブロックを高級言語に翻訳するブロックとして自動的に決定する。これにより、観測対象を含むブロックについては高級言語にしないことによりデバッガビリティを確保し、それ以外のブロックについては自動的に高級言語に翻訳することができる。これにより、ユーザに必要なデバッガビリティを確保しつつ、ユーザにブロック指定の負担をかけることなく自動的に高速化を図ることができる。
【0052】
(その他の変形例)
図5に示す翻訳の一例において、C言語部分ではget_label_ptr関数によりST言語部分で使用されている変数が参照されるものであった。一方、翻訳前ソースコードにおいて、1つのブロック内で使用されている変数については、C言語のローカル変数に変換してもよい。例えば、図2に示す翻訳前ソースコードの例において、変数ZがFOR文内以外では使用されていない場合、変数ZについてはC言語のローカル変数に変換することができる。これにより、当該ブロックをより高速化することができる。ただし、実施の形態3のように変数Zが観測対象として指定されている場合には、ローカル変数に変換せずget_label_ptr関数により参照されるべきである。
【0053】
性能推定部12による処理性能推定において、コード片を入力とし処理性能を出力として構築された学習済モデルを利用して処理性能を推定してもよい。例えば、予め多数のコード片について、翻訳前、翻訳後ともにプログラマブルロジックコントローラでプログラムを実行させて処理性能を測定し、コード片と測定結果とに基づいて予め学習済モデルを構築してもよい。
【0054】
各実施の形態では、ユーザが高級言語への翻訳対象としないブロックを指定することとしたが、ユーザが翻訳対象とするブロックを指定することとしてもよい。その場合にも各実施の形態と同様の効果を奏する。
【0055】
図6に示すハードウェア構成においては、翻訳装置1が二次記憶装置1004を備えている。しかし、これに限らず、二次記憶装置1004を翻訳装置1の外部に設け、インタフェース1003を介して翻訳装置1と二次記憶装置1004とが接続される形態としてもよい。この形態においては、USBフラッシュドライブ、メモリカードなどのリムーバブルメディアも二次記憶装置1004として使用可能である。
【0056】
また、図6に示すハードウェア構成に代えて、ASIC(Application Specific Integrated Circuit:特定用途向け集積回路)、FPGA(Field Programmable Gate Array)などを用いた専用回路により翻訳装置1を構成してもよい。また、図6に示すハードウェア構成において、翻訳装置1の機能の一部を、例えばインタフェース1003に接続された専用回路により実現してもよい。
【0057】
翻訳装置1で用いられるプログラムは、CD-ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、USBフラッシュドライブ、メモリカード、HDD等のコンピュータ読み取り可能な記録媒体に格納して配布することが可能である。そして、かかるプログラムを特定の又は汎用のコンピュータにインストールすることによって、当該コンピュータを翻訳装置1として機能させることが可能である。
【0058】
また、上述のプログラムをインターネット上の他のサーバが有する記憶装置に格納しておき、当該サーバから上述のプログラムがダウンロードされるようにしてもよい。
【0059】
本開示は、本開示の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、本開示を説明するためのものであり、本開示の範囲を限定するものではない。つまり、本開示の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の開示の意義の範囲内で施される様々な変形が、本開示の範囲内とみなされる。
【符号の説明】
【0060】
1 翻訳装置、2 表示装置、3 入力装置、10 記憶部、11 ブロック抽出部、12 性能推定部、13 提示部、14 翻訳対象決定部、15 翻訳部、16 設定部、17 組特定部、18 設定部、1000 バス、1001 プロセッサ、1002 メモリ、1003 インタフェース、1004 二次記憶装置。
【要約】
翻訳装置(1)は、シーケンス制御プログラムのソースコードから、ソースコードの一部であるブロックを抽出するブロック抽出部(11)と、ブロック抽出部(11)により抽出されたブロックのうち、どのブロックを高級言語に翻訳するかを決定する翻訳対象決定部(14)と、翻訳対象決定部(14)により高級言語に翻訳することが決定されたブロックを高級言語に翻訳する翻訳部(15)と、を備える。
図1
図2
図3
図4
図5
図6
図7
図8
図9