(57)【要約】【課題】ソースプログラムで記述されるファンクションをコンパイラで目的プログラムに変換するプログラマブルコントローラのプログラム作成方式において、部分範囲データ形変数の使用に際して上下限逸脱発生をチェックおよび確認を容易にする。【解決手段】コンパイラ２は、加算ファンクション１の入力変数Ｘが部分範囲データ形変数である場合、該変数に対して部分範囲チェックを行うＥＮ付きＬＩＭＩＴファンクション命令３Ａと、この部分範囲チェック内に該変数が収まっていない場合にその時点の演算プログラム位置を記憶するＥＮフラグチェックファンクション命令３Ｂとを自動的に変換プログラム３に埋め込む。ＥＮフラグチェックファンクション命令は、変数が部分範囲チェック内に収まっていない場合にアプリケーションプログラムで確認できる出力を得ることも含む。【選択図】図１
2008077262.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムで記述されるファンクションをコンパイラで目的プログラムに変換するプログラマブルコントローラのプログラム作成方式において、
前記コンパイラは、前記ファンクションの入力変数が部分範囲データ形変数である場合、該変数に対して部分範囲チェックを行うＥＮ付きＬＩＭＩＴファンクション命令と、この部分範囲チェック内に該変数が収まっていない場合にその時点の演算プログラム位置を記憶するＥＮフラグチェックファンクション命令とを自動的に変換プログラムに埋め込む手段を備えたことを特徴とするプログラマブルコントローラのプログラム作成方式。
【請求項２】
前記ＥＮフラグチェックファンクション命令は、前記変数が部分範囲チェック内に収まっていない場合にアプリケーションプログラムで確認できる出力を得ることを特徴とする請求項１に記載のプログラマブルコントローラのプログラム作成方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＪＩＳＢ３５０３（ＩＥＣ６１１３１−３）に規定されているプログラム言語によるプログラマブルコントローラのプログラム作成方式に関わり、特に、変数の派生データ形の１つである、範囲データ形変数を使ったプログラム作成方式に関わるものである。
【背景技術】
【０００２】
ＪＩＳＢ３５０３（ＩＥＣ６１１３１−３）では変数の派生データ形として、以下の表に示す４種類が規定されている。以下にＪＩＳＢ３５０３での説明文を示す。なお、表中の「表１２」とはＪＩＳＢ３５０３内の表番号である。
【０００３】
【表１】
2008077262.tif 000003
【０００４】
現在、ＩＥＣ６１１３１−３準拠のＰＬＣ（プログラマブルコントローラ）が各社から発売されている。このＰＬＣのプログラム作成には、その目的に応じて上記のデータ形で個々に宣言した変数をプログラム中に適宜組み込み、これら変数を使って演算を実行できるようにする。
【０００５】
これら変数を使用したプログラミングにおいて、宣言された変数の型チェック、サイズチェック、値チェックなどを自動的に行うことでプログラムの正当性を高めると共に、プログラミングの負担を軽減する装置も提案されている（例えば、特許文献１参照）。
【特許文献１】特開平７−２８１８８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記表に示す４種類の派生データ形すべてを扱えるＰＬＣはない。特に、部分範囲データ形の場合は、プログラムのコンパイル時には、変数の部分範囲に対象変数が収まっているかが判断できない。このため、演算実行中に、演算対象データが定義された部分範囲に入っているかどうかを検証しながら演算しなくてはならず、正確なプログラミングを難しくしている。
【０００７】
例えば、部分範囲データ形は、図３の（ａ）に示すように、変数「ＶＡＬ１」の定義として整数「ＩＮＴ」、範囲「−６〜＋１２」として宣言しておき、この変数「ＶＡＬ１」を図３の（ｂ）に示す加算命令「ＡＤＤ」の演算結果として使用する場合、入力データ「ＩＮ１」の値が「−１７」以下、または「３」以上であれば、変数「ＶＡＬ１」は「−６〜＋１２」の範囲外となる。このチェックはコンパイラではできず、プログラム実行時のみ実行できる。
【０００８】
また、部分範囲データ形に対応したＰＬＣが発売されていない理由として、ＩＥＣ６１１３１−３には演算対象データが部分範囲外であった時の対処方法が明確に規定されていないことも挙げられる。但し、ファンクション言語では「ＥＮフラグ」が規定されていて、ＥＮフラグ＝１でファンクションが起動された場合に、ファンクション中で演算エラーがあれば、ＥＮフラグ＝０とするという記述がある。
【０００９】
例えば、図４において、ＥＮの入力端子に接続される演算条件が真であれば、ファンクションは演算を行う。この場合、入力１と入力２に対する演算を行い、演算結果を出力する。演算途中でエラーがなければＥＮＯ端子には真が出力されるが、エラーがあれば偽が出力される。
【００１０】
また、ＩＥＣ６１１３１−３の標準ファンクションとしてＬＩＭＩＴが規定されている。このファンクションは入力された変数の上下限チェックを行うもので、以下の形をしている。このＬＩＭＩＴファンクションは、図５の（ａ）に示すように、入力「ＩＮ」で与えられた数値がＭＮ（下限値）とＭＸ（上限値）により上下限制限されるものとなっている。例えば、ＭＮ＝０でＭＸ＝１０００の時に、ＩＮ＝２０００であれば、出力は１０００になる。このファンクションを使えば、部分範囲データ形を使わなくても演算ができそうである。しかし、ＬＩＭＩＴファンクションは入力が上限と下限を超えた場合でも、出力を上下限に制限してしまうため、入力の正当性確認には使用できない。つまり、エラー検出機能はない。例えば、図５の（ｂ）に示すように、変数「ＶＡＬ１」の出力をＬＩＭＩＴで制限すると、変数「ＶＡＬ１」は（−６〜＋１２）の範囲に制限されるだけで、演算時チェックでエラー検出はできない。
【００１１】
本発明の目的は、部分範囲データ形変数の使用に際して上下限逸脱発生のチェックおよび確認を容易にしたプログラマブルコントローラのプログラム作成方式を提供することにある。
【課題を解決するための手段】
【００１２】
本発明は、前記の課題を解決するため、部分範囲データ形変数が使用されているときに、コンパイラがＥＮ付きＬＩＭＩＴファンクションとＥＮフラグチェックファンクションを自動的に埋め込み、部分範囲データ形変数が部分範囲を逸脱したことを検出および確認可能とするもので、以下の構成を特徴とする。
【００１３】
（１）ソースプログラムで記述されるファンクションをコンパイラで目的プログラムに変換するプログラマブルコントローラのプログラム作成方式において、
前記コンパイラは、前記ファンクションの入力変数が部分範囲データ形変数である場合、該変数に対して部分範囲チェックを行うＥＮ付きＬＩＭＩＴファンクション命令と、この部分範囲チェック内に該変数が収まっていない場合にその時点の演算プログラム位置を記憶するＥＮフラグチェックファンクション命令とを自動的に変換プログラムに埋め込む手段を備えたことを特徴とする。
【００１４】
（２）前記ＥＮフラグチェックファンクション命令は、前記変数が部分範囲チェック内に収まっていない場合にアプリケーションプログラムで確認できる出力を得ることを特徴とする。
【発明の効果】
【００１５】
以上のとおり、本発明によれば、部分範囲データ形変数が使用されているときに、コンパイラがＥＮ付きＬＩＭＩＴファンクションとＥＮフラグチェックファンクションを自動的に埋め込み、部分範囲データ形変数が部分範囲を逸脱したことを検出および確認可能とするため、部分範囲データ形変数の使用に際して上下限逸脱発生をチェックおよび確認が容易になる。
【発明を実施するための最良の形態】
【００１６】
（実施形態１）
図１は本実施形態を示すプログラム作成の模式図であり、加算ファンクションの変数Ｘに部分範囲データ形を指定する場合である。
【００１７】
アプリケーションプログラムのソースプログラムとしての加算ファンクション（ＡＤＤ）１は、変数Ｘと変数Ｙを加算し、この演算結果Ｚ（＝Ｘ＋Ｙ）を得るという演算であり、ＩＬ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｌｉｓｔ）言語で記述すると右側に示す命令の組み合わせになる。
【００１８】
コンパイラ２は、加算ファンクション１のソースプログラムをプログラマブルコントローラの目的プログラムにコンパイルした変換プログラム３として得る。ここで、変数Ｘは部分範囲データ形であり、上限が１０００で下限が０であるとする場合、コンパイラ２は、変数Ｘに対して、ＥＮ付きＬＩＭＩＴファンクション命令３Ａと、ＥＮフラグチェックファンクション命令３Ｂを自動的に変換プログラムに埋め込み、範囲逸脱エラー検出を可能にする。ただし、命令３Ａと命令３Ｂは、ソースプログラムとしては見せないようにして、見た目は加算ファンクション１と同じ命令３Ｃのみのようにする。
【００１９】
図１の変換プログラム３では、変数Ｘに対して、ＥＮ付きＬＩＭＩＴファンクション命令３Ａを使って、部分範囲チェックを行う。ＥＮ付きＬＩＭＩＴファンクションは入力データ（変数Ｘ）が部分範囲（０〜１０００）に収まっていれば、ＥＮＯ＝１になり、収まっていなければＥＮＯ＝０になるようにする。ＥＮフラグチェックファンクション命令３Ｂでは、ＥＮＯ＝０の場合にのみ動作して、その時点の演算プログラム位置を記憶する。その演算プログラム位置はＰＬＣのシステムプログラム内メモリに記憶され、プログラミングツールなどの装置で、エラーの発生時にはエラー発生アドレスを元に検索したソースプログラム位置として表示できるようにする。
【００２０】
なお、変数Ｙも部分範囲データ形変数とする場合には、コンパイラ２は、変数ＹについてもＥＮ付きＬＩＭＩＴファンクション命令３Ａと、ＥＮフラグチェックファンクション命令３Ｂを自動的に追加する。
【００２１】
したがって、本実施形態によれば、部分範囲データ形変数を使用するプログラミングに際して、アプリケーションプログラム上では、通常の変数と部分範囲データ形変数で、特に見た目が変わらないようにプログラミングすることができる。そして、部分範囲データ形変数の上下限逸脱をシステムプログラムに通知することができる。また、プログラミング装置などで、上下限逸脱のあった変数を使ったプログラムの場所を表示することができる。
【００２２】
（実施形態２）
図２は本実施形態を示すプログラム作成の模式図であり、加算ファンクションの変数Ｘに部分範囲データ形を指定する場合である。
【００２３】
同図が図１と異なる部分は、ＥＮフラグチェックファンクション命令３ＢをＥＮＯ＝０の場合に出力＝１となるようにする点にある。こうすることで、部分範囲データが上下限を逸脱したことを、アプリケーションプログラムでも確認できることになる。
【００２４】
図２において、変数Ｘが上下限を逸脱した場合には、変数ＥＲＲＯＲが真となり、アプリケーションプログラムで、部分範囲データエラーがあったことを確認することができる。この場合は、ＥＮフラグチェックファンクション命令３Ｂは、明示的として、アプリケーションプログラムから自由に使用できるものとする。
【００２５】
本実施形態によれば、部分範囲データ形変数の上下限逸脱がアプリケーションプログラムで確認することができる。
【００２６】
なお、変数Ｙも部分範囲データ形変数である場合には、コンパイラ２は、変数ＹについてもＥＮ付きＬＩＭＩＴファンクション命令３Ａと、ＥＮフラグチェックファンクション命令３Ｂを自動的に追加する。
【００２７】
また、実施形態１，２では加算ファンクション命令についての部分範囲データ形変数である場合を示すが、他のファンクション命令についても同様に適用することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施形態１を示すプログラム作成の模式図。
【図２】本発明の実施形態２を示すプログラム作成の模式図。
【図３】部分範囲データ形の例。
【図４】ファンクションの例。
【図５】ＬＩＭＩＴファンクションの例。
【符号の説明】
【００２９】
１  加算ファンクション
２  コンパイラ
３  変換プログラム
３Ａ  ＥＮ付きＬＩＭＩＴファンクション命令
３Ｂ  ＥＮフラグチェックファンクション命令
３Ｃ  加算命令
【図１】
2008077262.tif 000004
【図２】
2008077262.tif 000005
【図３】
2008077262.tif 000006
【図４】
2008077262.tif 000007
【図５】
2008077262.tif 000008