(57)【要約】【課題】ラダープログラムで展開したファンクション又はファンクションブロックの実行を可能にする。【解決手段】ＰＬＣ演算部１１にはファンクション又はファンクションブロックを内部アルゴリズムとしてもち、これをラダープログラムに展開して演算機能を実現する。この演算において、インスタンス領域を通常のデータメモリ１２とは別空間にしたインスタンス用データメモリ１３を用意する。そして、ファンクション又はファンクションブロックがプログラムで使用された時に、自動的にインスタンス空間が割り付けられるようにプログラミングツールでコンパイルする。【選択図】図１
2008102648.tif 000002
【特許請求の範囲】
【請求項１】
ラダープログラムで展開したファンクション又はファンクションブロックの実行方式であって、
データメモリとは別に、データメモリにインスタンス領域を用意し、
前記インスタンス領域をアクセスするラダー命令を用意し、
ファンクション又はファンクションブロックの定義は通常のラダー命令を使って行い、その実行プログラムへの展開は前記インスタンス領域とそれをアクセスするラダー命令を用いて行うことを特徴とするファンクション実行方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ラダープログラムによるファンクション又はファンクションブロックの実行方式に関する。
【背景技術】
【０００２】
プログラマブルコントローラ（ＰＬＣ）の言語として、ラダープログラム及びファンクション、ファンクションブロックがある。これらは最近、ＩＥＣ６１１３１−３やＪｌＳ  Ｂ３５０３で規定されている。これらの規格ではファンクション又はファンクションブロックの実現方式については規定がなく、言語仕様のみが規定されている。
【０００３】
（１）ファンクション又はファンクションブロックの形状
ファンクションのブロック形状例を図５に示す。ファンクションブロックも同様な形状をしており、違いは内部変数を持つかどうかである。形状として、これらには入力変数（図５ではＩＮ１，ＩＮ２）と出力変数（図５ではＯＵＴ１とＯＵＴ２）がある。これらの変数を使って、演算を行うことになる。
【０００４】
（２）ファンクション又はファンクションブロックの演算アルゴリズム
ファンクション又はファンクションブロックはその内部で、その所期の機能を実現するため、設定された演算を実行する。あるファンクション又はファンクションブロックを何度も実行させるために、実行部として展開する場合には、定義部をコピーしたインスタンスが使用される（例えば、特許文献１参照）。
【０００５】
ファンクションの実行は図６のような構成で行われる。ファンクションブロックの実行は図７のような構成で行われる。即ち、実入力をインスタンスの入力変数部１に転送して、それを元にプログラミングされた演算アルゴリズム部２によって演算し、演算結果はインスタンスの出力変数部３に書き込む。それが実出力として取り出される。ファンクションブロックでは、図７に示すように、内部変数部４もインスタンスとして用意しておく。
【０００６】
（３）ファンクション又はファンクションブロックを実現するアルゴリズムのラダープログラムによる展開
ファンクション又はファンクションブロックのアルゴリズムをラダープログラムで展開する場合、以下の手順を踏む。
【０００７】
（ａ）実入力データを実行用データ領域である入力変数用インスタンスにコピーする。
【０００８】
（ｂ）入力変数用インスタンスや内部変数用インスタンス、出力変数用インスタンスを使って演算を行い、演算結果を出力変数用インスタンスに書き込む。
【０００９】
（ｃ）出力変数用インスタンスを実出力データにコピーする。
【特許文献１】特開２００４−２８０３４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
（１）前記のように、ファンクション又はファンクションブロックのアルゴリズムをラダープログラムに展開して実行しようとする場合、通常のラダープログラムのみでは実現できない。即ち、通常のラダープログラムは実データを扱い、論理データ領域であるインスタンスデータを扱えないからである。
【００１１】
通常のプログラマブルコントローラ（以下、ＰＬＣ）は扱えるデータ領域が決まっており、図８のように、そのデータメモリ空間でのみ演算できるようになっている。ファンクション又はファンクションブロックを使用するためにはインスタンス領域が必要であり、通常のＰＬＣでは図９のように、データメモリの一部をインスタンスとして使用することになる。これでは、データメモリの使用可能部分が削られることになり、アプリケーションプログラムの作成に制約が出る。
【００１２】
（２）ファンクション又はファンクションブロックのアルゴリズムをラダー命令で実現しようとする場合、通常のラダー命令はデータメモリのみしかアクセスできない。そのため、インスタンス領域をアクセスできない。
【００１３】
本発明の目的は、上記の課題を解決したラダープログラムによるファンクション実行方式を提供することにある。
【課題を解決するための手段】
【００１４】
本発明は、前記の課題を解決するため、
（ａ）データメモリとは別に、データメモリにインスタンス領域を用意すること。
【００１５】
（ｂ）インスタンス領域をアクセスするラダー命令を用意すること。
【００１６】
（ｃ）ファンクション又はファンクションブロックの定義は通常のラダー命令を使って行い、その実行プログラムへの展開は上記のインスタンス領域とそれをアクセスするラダー命令を用いること。
としたもので、以下の方式を特徴とする。
【００１７】
（１）ラダープログラムで展開したファンクション又はファンクションブロックの実行方式であって、
データメモリとは別に、データメモリにインスタンス領域を用意し、
前記インスタンス領域をアクセスするラダー命令を用意し、
ファンクション又はファンクションブロックの定義は通常のラダー命令を使って行い、その実行プログラムへの展開は前記インスタンス領域とそれをアクセスするラダー命令を用いて行うことを特徴とする。
【発明の効果】
【００１８】
以上のとおり、本発明によれば、以下の効果がある。
【００１９】
（１）データメモリとは別に、インスタンス領域を用意することにより、データメモリにインスタンス領域を割り付けることがなく、現状のＰＬＣアプリケーションに制約を加える必要がなくなる。
【００２０】
（２）インスタンス領域をアクセスするラダー命令を用意するため、通常のＰＬＣにはデータメモリをアクセスする命令しかないが、インスタンス領域をアクセスする命令を追加することで、アプリケーションが意識しないでファンクション又はファンクションブロックを実現できる。
【００２１】
（３）ファンクション又はファンクションフロックをインスタンス領域とそれをアクセスするラダー命令を用いて実現するため、プログラミング装置は、ファンクション又はファンクションブロックが使用された場合、自動的にインスタンス領域を確保して、その領域をアクセスするラダー命令を使って、ファンクション又はファンクションブロックの機能を実現する。このことで、ユーザはインスタンス領域を意識しないでプログラミングが可能となる。
【発明を実施するための最良の形態】
【００２２】
図１は、本発明の実施形態を示すファンクション機能を実現するためのプログラマブルコントローラのブロック構成図である。ＰＬＣ演算部１１にはファンクション又はファンクションブロックを内部アルゴリズムとしてもち、これをラダープログラムに展開して演算機能を実現する。
【００２３】
この演算機能を実現するため、インスタンス領域を通常のデータメモリ１２に置くと都合が悪いため、別空間にしたインスタンス用データメモリ１３を用意する。この空間はアプリケーションでは意識する必要のない空間である。そして、ファンクション又はファンクションブロックをプログラムで使用した時に、自動的にインスタンス空間が割り付けられるようにプログラミングツールでコンパイルする。これにより、アプリケーションではデータメモリ領域のみを意識したプログラミングで済むし、現状のＰＬＣアプリケーションに制約を加える必要がなくなる。
【００２４】
上記の機能を実現するために、本実施形態では以下の手段および処理機能を設ける。
【００２５】
（１）インスタンス空間をアクセスするラダー命令の追加
インスタンス空間のデータをＲＥＡＤ／ＷＲＩＴＥする命令や、インスタンス空間データと演算する命令を追加する。この命令はアプリケーションプログラム作成時にはユーザが使用しない。ファンクション又はファンクションブロックを使用した時にプログラミングツールがコンパイルすることで自動的に生成される。すなわち、通常のＰＬＣにはデータメモリをアクセスする命令しかないが、インスタンス領域をアクセスする命令を追加することで、アプリケーションが意識しないでファンクション又はファンクションブロックの実現を可能にする。
【００２６】
（２）ファンクション又はファンクションブロックでのラダー命令展開
ファンクション又はファンクションブロックをコンパイラで展開する。例えば、図５のファンクションは図２に２入力/２出力のファンクションを示すように、入力部、ファンクション命令、演算部、出力部に分かれた展開になる。ここで、入力部の［ＩＮＴ］は単精度実データを読み込む命令、［ＷＴＸ］は読み込んだデータをインスタンスに書き込む命令である。出力部の［ＲＤＸ］はインスタンスのデータを読み込む命令、［ＩＮＴ］は読み込んだデータを単精度で実データ領域に書き込む命令である。
【００２７】
図２では入力部で実データをインスタンス用データメモリ１３の領域に転送し、ＰＬＣ演算部１１で演算を行い、出力部でインスタンス用データメモリ１３の領域からデータメモリ１２に実データを転送している。
【００２８】
（３）アルゴリズム部の定義
図２の内部アルゴリズム部では、ユーザによって通常のラダープログラムで定義される。そして、それを実行プログラムにコンパイルするときに、インスタンス用データメモリ１３の領域をアクセスするラダー命令に変換する。
【００２９】
図３はＩＮ１とＩＮ２の単精度データの平均（ＡＶＥ）をＯＵＴに出力するファンクションの例である。図４はそれの展開形である。［ＲＤＸ］、［＋Ｘ］、［ＷＴＸ］はインスタンス領域に対する演算である。［／］＃２は途中演算結果を２で割る命令であり、通常のラダー命令が使用できる。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施形態を示すプログラマブルコントローラのブロック構成図。
【図２】実施形態におけるファンクションの展開形の例。
【図３】平均値を求めるファンクションの例を示すブロック図。
【図４】図３のファンクションの展開形。
【図５】ファンクションのブロック形状例。
【図６】ファンクションの実行形態。
【図７】ファンクションブロックの実行形態。
【図８】通常のＰＬＣのデータアクセスの説明図。
【図９】通常のＰＬＣのインスタンスの実装の説明図。
【符号の説明】
【００３１】
１  入力変数部（インスタンス）
２  演算アルゴリズム部
３  出力変数（インスタンス）
４  内部変数（インスタンス）
１１  ＰＬＣ演算部
１２  データメモリ
１３  インスタンス用データメモリ
【図１】
2008102648.tif 000003
【図２】
2008102648.tif 000004
【図３】
2008102648.tif 000005
【図４】
2008102648.tif 000006
【図５】
2008102648.tif 000007
【図６】
2008102648.tif 000008
【図７】
2008102648.tif 000009
【図８】
2008102648.tif 000010
【図９】
2008102648.tif 000011