(57)【要約】【課題】独自の言語仕様で開発されたＰＬＣのアプリケーションプログラムを、Ｊ１ＳＢ３５０３（ＩＥＣ６１１３１−３）言語に準拠したプログラムへの自動変換を容易にする。【解決手段】ＩＥＣ６１１３１−３準拠のＰＬＣ間で行われているＸＭＬによる相互運用を利用して、旧ＰＬＣのアプリケーションプログラムをＸＭＬ変換し、ＩＥＣ６１１３１−３言語のプログラムに変換するものであり、この変換にプログラムの分割と、アドレスの変換と、プログラムの変換と、データの型変換および特殊命令の変換の各手段を用意しておく。【選択図】図１
2010176377.tif 000002
【特許請求の範囲】
【請求項１】
ＩＥＣ６１１３１−３言語に準拠しない旧ＰＬＣのアプリケーションプログラムをＩＥＣ６１１３１−３言語に準拠するプログラムに変換するプログラム変換ツールであって、
旧ＰＬＣプログラムの実行プログラムＡを取り込み、これを旧ＰＬＣソースプログラムＢに変換する手段と、
前記旧ＰＬＣソースプログラムＢを複数の旧ＰＬＣソースプログラムＢ1〜ＢNへの分割とアドレス変換を行う手段と、
前記旧ＰＬＣソースプログラムＢ1〜ＢNをそれぞれＩＥＣ６１１３１−３命令のソースプログラムＣ1〜ＣNに変換する手段と、
前記ＩＥＣ６１１３１−３命令のソースプログラムＣ1〜ＣNをＸＭＬファイルＤ1〜ＤNに変換してエクスポートする手段と、
を備えたことを特徴とするＰＬＣのプログラム変換ツール。
【請求項２】
前記プログラムの分割は、
使用者の指定入力により分割する手段と、
固定のラング単位に自動分割、１つのラングで使用された変数が次ラングでも使用されている場合には連続したプログラムとする分割、最低でも指定したラング数は連続するプログラムと見なす分割、同一データを検索する範囲を次ラングだけでなく指定したラング数とする分割の少なくとも１つの分割手段と、
を組み合わせたことを特徴とする請求項１に記載のＰＬＣのプログラム変換ツール。
【請求項３】
前記アドレスの変換は、
旧ＰＬＣの実アドレスとＩＥＣ６１１３１−３対応ＰＬＣの実アドレスを直接表現変数として１対１に変換させる直接表現変数に変換する手段と、
分割した旧ＰＬＣのプログラム内で使用しているメモリアドレスが他の分割したプログラム内で使用していない場合にはローカル変数とするローカル変数に変換する手段と、
データメモリの各アドレスに付けられたコメントを変数名として変換する手段と、
の少なくとも１つを備えたことを特徴とする請求項１に記載のＰＬＣのプログラム変換ツール。
【請求項４】
前記プログラムの変換は、
旧ＰＬＣの命令がＩＥＣ６１１３１−３言語の基本命令に存在しない場合、旧ＰＬＣの命令をユーザ定義ファンクションやユーザ定義ファンクションブロックとして定義しておき、それらの命令が現れた場合には、それらのユーザ定義ファンクションやユーザ定義ファンクションブロックに自動変換する手段を備えたことを特徴とする請求項１に記載のＰＬＣのプログラム変換ツール。
【請求項５】
旧ＰＬＣで扱うデータの型変換は、
旧ＰＬＣで使用している命令によりデータの型を認識し、次命令の間にデータ型変換命令を自動挿入する手段を備えたことを特徴とする請求項１に記載のＰＬＣのプログラム変換ツール。
【請求項６】
旧ＰＬＣのみで使用する特殊命令の変換は、
前記特殊命令をＩＥＣ６１１３１−３の基本命令に追加する手段を備えたことを特徴とする請求項１に記載のＰＬＣのプログラム変換ツール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＥＣ６１１３１−３言語に準拠しないプログラマブルコントローラのアプリケーションプログラムをＩＥＣ６１１３１−３言語に準拠するプログラムに変換するプログラム変換ツールに関する。
【背景技術】
【０００２】
一般に、プログラマブルコントローラ（ＰＣ、ＰＬＣ）は、シーケンス処理用の特別なアプリケーションプログラム（制御プログラム）の記述にしたがって動作する。アプリケーションプログラムは、パーソナルコンピュータ等の汎用コンピュータやプログラムローダで開発され、プログラマブルコントローラには通信インターフェースを介して転送される。
【０００３】
他方、汎用マイクロプロセッサを搭載したＰＬＣにおいて、シーケンス処理を実行させるために、アプリケーションプログラム開発を汎用マイクロプロセッサにおいて直接実行可能な実行コードを生成するものもある（例えば、特許文献１参照）。
【０００４】
ここで、シーケンス処理用のプログラムを記述する言語のうち代表的なものとして、ラダーダイヤグラム方式、ファンクション・ブロック・ダイアグラム方式、構造化言語（Ｓｔｒｕｃｔｕｒｅｄ Ｔｅｘｔ）方式およびＳＦＣ（Ｓｅｑｕｅｎｔｉａｌ Ｆｕｎｃｔｉｏｎ Ｃｈａｒｔ）方式などが知られている。
【０００５】
Ｊ１ＳＢ３５０３（ＩＥＣ６１１３１−３）は、国際電気標準会議が１９９３年１２月に発行した標準規格であり、これにはＰＬＣ用のプログラム言語として、ラダー・ロジック言語（ＬＤ言語）、シーケンシャル・ファンクション・チャート（ＳＦＣ言語）、ファンクション・ブロック・ダイアグラム（ＦＢＤ言語）、ストラクチャード・テキスト（ＳＴ言語）、インストラクション・リスト（ＩＬ言語）を定義している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−９９３１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のＪ１ＳＢ３５０３（ＩＥＣ６１１３１−３）言語に準拠したＰＬＣのアプリケーションプログラムは、プログラミングツールのＸＭＬインポート／エクスポート機能により、他メーカ間で相互にアプリケーションプログラムの交換ができるようにＸＭＬスキーマの標準化が進んでいる。この機能はＩＥＣ６１１３１−３準拠のＰＬＣ間でのみ実現できる。
【０００８】
一方、各社ＰＬＣメーカは、長年各社独自の言語仕様で動作するＰＬＣを発売しており、多くのユーザに販売し、現実に多くのシステムとして稼動している。それらのＰＬＣが寿命などによりリプレースする場合がある。この場合、これらのＰＬＣをＩＥＣ６１１３１−３準拠のプログラムで動作するＰＬＣに置き換える場合、言語仕様が全く異なるため、置き換え作業は非常に困難になる。具体的には、元のアプリケーションプログラムについて十分に調査して、動作を完全に理解した上で、人がＩＥＣ６１１３１−３言語に変換することになる。これでは、非常に手間がかかり、変換する時の勘違いによるミスが発生する可能性がある。
【０００９】
本発明の目的は、独自の言語仕様で開発されたＰＬＣのアプリケーションプログラムを、Ｊ１ＳＢ３５０３（ＩＥＣ６１１３１−３）言語に準拠したプログラムへの自動変換が容易になるＰＬＣのプログラム変換ツールを提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、前記の課題を解決するため、ＩＥＣ６１１３１−３準拠のＰＬＣ間で行われているＸＭＬによる相互運用を利用して、旧ＰＬＣのアプリケーションプログラムをＸＭＬ変換し、ＩＥＣ６１１３１−３言語のプログラムに変換するものであり、この変換にプログラムの分割と、アドレスの変換と、プログラムの変換と、データの型変換および特殊命令の変換の各手段を用意しておくもので、以下の構成を特徴とする。
【００１１】
（１）ＩＥＣ６１１３１−３言語に準拠しない旧ＰＬＣのアプリケーションプログラムをＩＥＣ６１１３１−３言語に準拠するプログラムに変換するプログラム変換ツールであって、
旧ＰＬＣプログラムの実行プログラムＡを取り込み、これを旧ＰＬＣソースプログラムＢに変換する手段と、
前記旧ＰＬＣソースプログラムＢを複数の旧ＰＬＣソースプログラムＢ1〜ＢNへの分割とアドレス変換を行う手段と、
前記旧ＰＬＣソースプログラムＢ1〜ＢNをそれぞれＩＥＣ６１１３１−３命令のソースプログラムＣ1〜ＣNに変換する手段と、
前記ＩＥＣ６１１３１−３命令のソースプログラムＣ1〜ＣNをＸＭＬファイルＤ1〜ＤNに変換してエクスポートする手段と、
を備えたことを特徴とする。
【００１２】
（２）前記プログラムの分割は、
使用者の指定入力により分割する手段と、
固定のラング単位に自動分割、１つのラングで使用された変数が次ラングでも使用されている場合には連続したプログラムとする分割、最低でも指定したラング数は連続するプログラムと見なす分割、同一データを検索する範囲を次ラングだけでなく指定したラング数とする分割の少なくとも１つの分割手段と、
を組み合わせたことを特徴とする。
【００１３】
（３）前記アドレスの変換は、
旧ＰＬＣの実アドレスとＩＥＣ６１１３１−３対応ＰＬＣの実アドレスを直接表現変数として１対１に変換させる直接表現変数に変換する手段と、
分割した旧ＰＬＣのプログラム内で使用しているメモリアドレスが他の分割したプログラム内で使用していない場合にはローカル変数とするローカル変数に変換する手段と、
データメモリの各アドレスに付けられたコメントを変数名として変換する手段と、
の少なくとも１つを備えたことを特徴とする。
【００１４】
（４）前記プログラムの変換は、
旧ＰＬＣの命令がＩＥＣ６１１３１−３言語の基本命令に存在しない場合、旧ＰＬＣの命令をユーザ定義ファンクションやユーザ定義ファンクションブロックとして定義しておき、それらの命令が現れた場合には、それらのユーザ定義ファンクションやユーザ定義ファンクションブロックに自動変換する手段を備えたことを特徴とする。
【００１５】
（５）旧ＰＬＣで扱うデータの型変換は、
旧ＰＬＣで使用している命令によりデータの型を認識し、次命令の間にデータ型変換命令を自動挿入する手段を備えたことを特徴とする。
【００１６】
（６）旧ＰＬＣのみで使用する特殊命令の変換は、
前記特殊命令をＩＥＣ６１１３１−３の基本命令に追加する手段を備えたことを特徴とする。
【発明の効果】
【００１７】
以上のとおり、本発明によれば、ＩＥＣ６１１３１−３準拠のＰＬＣ間で行われているＸＭＬによる相互運用を利用して、旧ＰＬＣのアプリケーションプログラムをＸＭＬ変換し、ＩＥＣ６１１３１−３言語のプログラムに変換するものであり、この変換にプログラムの分割と、アドレスの変換と、プログラムの変換と、データの型変換および特殊命令の変換の各手段を用意しておくため、独自の言語仕様で開発されたＰＬＣのアプリケーションプログラムを、Ｊ１ＳＢ３５０３（ＩＥＣ６１１３１−３）言語に準拠したプログラムへの自動変換が容易になる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態を示すプログラム変換フロー。
【図２】プログラムの分割の例。
【図３】アドレス変換の例。
【図４】ユーザ定義ファンクションに変換する例。
【図５】データの型変換の例。
【図６】特殊命令への変換例。
【発明を実施するための形態】
【００１９】
図１は、旧ＰＬＣプログラムをＩＥＣ６１１３１−３言語のプログラムに変換するためのプログラム変換フローであり、ＩＥＣ６１１３１−３準拠のＰＬＣ間で行われているＸＭＬによる相互運用を利用して、旧ＰＬＣのアプリケーションプログラムをＸＭＬ変換し、ＩＥＣ６１１３１−３言語に変換することにより、プログラム変換処理の自動化を図るものである。
【００２０】
図１において、プログラム変換ツール１００は、まず、旧ＰＬＣプログラムの実行プログラムＡを取り込み、これを旧ＰＬＣソースプログラムＢに変換する。次いで、旧ＰＬＣソースプログラムＢを複数の旧ＰＬＣソースプログラムＢ1〜ＢNへの分割とアドレス変換を行い、これら旧ＰＬＣソースプログラムＢ1〜ＢNをそれぞれＩＥＣ６１１３１−３命令のソースプログラムＣ1〜ＣNに変換する。さらに、ＩＥＣ６１１３１−３命令のソースプログラムＣ1〜ＣNをＸＭＬファイルＤ1〜ＤNに変換してエクスポートする。
【００２１】
ＩＥＣ６１１３１−３プログラミングツール２００は、ＸＭＬファイルＤ1〜ＤNを最小単位のプログラムＰＯＵ1〜ＰＯＵNとしてインポートする。
【００２２】
以上までのプログラム変換フローの詳細を以下に説明する。
【００２３】
（１）プログラムＢからＢ1〜ＢNへの分割
旧ＰＬＣのアプリケーションプログラムはタスク単位などで作成され、１つのプログラムが非常に大きいものがある。一方、ＩＥＣ６１１３１−３ではＰＯＵという単位でプログラムを作成し、機能的に意味がある単位でプログラムをモジュール化して、それぞれをＰＯＵとして定義する。したがって、旧ＰＬＣプログラムをＩＥＣ６１１３１−３準拠のプログラムに変換する場合には大きなプログラムをある程度、小さなプログラムに分割する必要がある。
【００２４】
分割方法としては、単純にプログラム単位で分割する方法がある。例えば、ラダープログラムの場合、プログラムはラングと呼ばれる単位で作成されるので、１０ラング単位にＰＯＵを作成する方法が考えられる。但し、この方法では本来の機能単位に分割すべきＰＯＵとしての機能が果たせない。そこで、使用者に分割すべきプログラムを指定してもらうことが考えられる。但し、この方法では、使用者がプログラムの内容を理解しなければならず、分割処理に多くの時間を要する。
【００２５】
上記の使用者の判断による指定入力によらず、自動的に元プログラムを分割する方法を提供する。具体的には、１つのラングに使用されているデータが次ラングでも使用されている場合には、連続したプログラムであると判断する。図２の場合、ラング１と２で「Ｃ」が同じデータであるので、連続したプログラムと判断する。
【００２６】
この方法では分割数が多すぎる場合もある。そのような場合には、以下の手段で自動分割を最適化する。
【００２７】
（手段１）最低でも指定したラング数（例えば、１０ラング）は連続するプログラムと見なす。
【００２８】
（手段２）同一データを検索する範囲を次ラングだけでなく、指定したラング数（例えば、５ラング）とする。
【００２９】
（２）アドレス変換
（ａ）直接表現変数への変換
旧ＰＬＣはデータメモリの実アドレスに対する演算を行っている。データメモリを入力領域（Ｉ）、出力領域（Ｏ）、メモリ領域（Ｍ）に分けて、そのアドレスを使った演算をしている。ＩＥＣ６１１３１−３でも直接表現変数という変数表現があり、データメモリの実アドレスを扱うことができる。
【００３０】
そこで、旧ＰＬＣのアドレス変換を行う場合、図３の（ａ）に示すように、基本的には、旧ＰＬＣの実アドレスとＩＥＣ６１１３１−３対応ＰＬＣの実アドレスを１対１に対応させたアドレス変換を行う。
【００３１】
（ｂ）ローカル変数への変換
旧ＰＬＣの場合、メモリ（Ｍ）というデータはプログラム相互で何度も参照される場合と、特定のプログラムのみで使用する場合がある。
【００３２】
そこで、分割したプログラム内で使用しているメモリ（Ｍ）を調べ、他の分割したプログラムで使用しているかを調べる。他のプログラムでも使用している場合にはそのまま直接表現変数とするが、他のプログラムで使用していない場合にはローカル変数とすることができるので、直接表現変数でなく、その分割プログラムで独自なローカル変数とする。例えば、図３の（ｂ）に示すように、ｖａｒ１，ｖａｒ２、…のようなローカル変数名にする。
【００３３】
（ｃ）コメントとの連動による変数
一般的に、データメモリの各アドレスには用途の意味を持ったコメント（デバイス名と呼ぶこともある）を付けることができるようになっている。このコメントを変数名としてしまうことを行えば、わかりやすいプログラムになる。
【００３４】
そこで、上記（ａ）の直接表現変数や（ｂ）のローカル変数を、図３の（ｃ）に示すように、データに付けられたコメントをそのまま変数名とする。なお、コメントの文字数が変数名の文字数を超えているような場合には、変数名が重複しないように先頭文字からの一致チェックにより、異なる変数名に自動的に変換する必要がある。
【００３５】
（３）プログラム変換
旧ＰＬＣの命令がすべてＩＥＣ６１１３１−３言語の基本命令に含まれる場合は問題ないが、通常はＩＥＣ６１１３１−３言語に存在しない命令が多くある。このような命令をＩＥＣ６１１３１−３言語に変換する場合には、ユーザ定義ファンクションやユーザ定義ファンクションブロックを使用する。例えば、データの内容をビット列として、ビット０から調べて、最初に１になっているビット位置を調べるような命令があったとする。例として、１６進数で１２０Ｈでは、最下位ビットを０とすると、最初に１のビット位置は５になる。このような変換命令はＩＥＣ６１１３１−３の基本命令には存在しない。
【００３６】
そこで、旧ＰＬＣにあるＩＥＣ６１１３１−３非互換命令を予め、ユーザ定義ファンクションやユーザ定義ファンクションブロックとして定義しておき、それらの命令が現れた場合には、それらのユーザ定義ファンクションやユーザ定義ファンクションブロックに自動変換する。図４にはビット位置を調べる命令［ＢＩＴ］をユーザ定義ファンクションに変換する例を示す。
【００３７】
（４）データの型変換
ＩＥＣ６１１３１−３言語では演算で扱うデータの型を厳密に規定している。例えば、１６ビットデータではＷＯＲＤ，ＩＮＴ，ＵＩＮＴの３種類がある。ＡＮＤ／ＯＲ／ＸＯＲなどの論理演算では演算対象データ型はＷＯＲＤであるが、ＡＤＤ／ＳＵＢ／ＭＵＬ／ＤＩＶなどの数値演算の演算対象データはＩＮＴまたはＵＩＮＴである。旧ＰＬＣの演算ではデータ型を厳密に意識していないものが多い。
【００３８】
例えば、１６ビットデータの下位１２ビットを取り出し、それに１を加算するようなプログラムは図５の（ａ）に示すようなプログラムであった。同図中、［ＲＤ］ＸはＸというデータを読み込む命令、（ＷＴ）ＹはＹに演算結果を書き込む命令である。ここで、［ＡＮＤ］命令ではデータをＷＯＲＤ型データとしているが、［ＡＤＤ］ではＩＮＴまたはＵＩＮＴとして演算していることになる。
【００３９】
しかし、ＩＥＣ６１１３１−３では、図５の（ｂ）に示すように記述しなければならない。同図中、［ＷＯＲＤ＿ＴＯ＿ＵＩＮＴ］はＷＯＲＤ型データをＵＩＮＴ型に変換する命令である。
【００４０】
そこで、データ型の自動変換には、旧ＰＬＣで使用している命令により、扱うデータ型を認識して、次命令の間にデータ型変換命令を自動挿入する。
【００４１】
（５）特殊命令への変換
以上までの（１）〜（４）による変換処理によって、殆どの旧ＰＬＣ命令はＩＥＣ６１１３１−３言語に自動変換可能であるが、旧ＰＬＣのアーキテクチャの都合により、ＩＥＣ６１１３１−３の命令やユーザ定義ファンクション、ユーザ定義ファンクションブロックでは表現できない命令が存在する。例えば、各社ＰＬＣで多く採用するマスターコントロール関連命令（ＭＣＳ／ＭＣＲ）である。
【００４２】
このような命令は変換できないので、変換エラーとしてしまうことも可能であるが、ＩＥＣ６１１３１−３の基本命令にこのような命令を追加することで対応することにする。図６にＭＣＳ／ＭＣＲ命令を変換する例を示す。
【００４３】
このような命令を使用する場合、ＰＬＣｏｐｅｎが規定するＸＭＬスキーマではＸＭＬ変換できない。したがって、ＰＬＣｏｐｅｎ−ＸＭＬスキーマを標準として、命令追加したＸＭＬスキーマをベンダー固有ＸＭＬスキーマとして提供する。このベンダー固有ＸＭＬスキーマでは、メーカ間のプログラムの相互変換はできない。
【符号の説明】
【００４４】
１００  プログラム変換ツール
２００  ＩＥＣ６１１３１−３プログラミングツール
【図１】
2010176377.tif 000003
【図２】
2010176377.tif 000004
【図３】
2010176377.tif 000005
【図４】
2010176377.tif 000006
【図５】
2010176377.tif 000007
【図６】
2010176377.tif 000008