(57)【要約】【課題】ＳＦＣプログラムの記述を簡易にし、プログラムの変更を容易にする。【解決手段】ステップ命令の実行は、ステップ管理テーブル１３で示す当該ステップが活性状態であればアクション管理テーブル１５で示すアクションＰＯＵの管理番号とインスタンスアドレスを識別し、該ＰＯＵ管理番号からＰＯＵ管理テーブル２０の目的エントリから実行すべきアクションＰＯＵ３０のアドレスを識別して当該アクションＰＯＵを実行する。トランジション命令の実行は、トランジション管理テーブル１４で示す当該トランジション命令の前に接続されているステップ命令の管理番号を参照し、当該ステップが活性状態であればトランジションＰＯＵ４０の管理番号とインスタンスアドレスを識別し、該ＰＯＵ管理番号からＰＯＵ管理テーブルの目的エントリから実行すべきトランジションＰＯＵのアドレスを識別して当該トランジションＰＯＵを実行する。【選択図】図１
2008040995.tif 000002
【特許請求の範囲】
【請求項１】
ステップ命令群とトランジション命令群およびステップ移行命令群で記述したＳＦＣプログラムによって演算を実行するプログラマブルコントローラであって、
前記ステップ命令のアクションを変数定義部と演算命令を記述するボディ部から構成されるアクションＰＯＵと、
前記トランジションを変数定義部と演算命令を記述するボディ部から構成されるトランジションＰＯＵと、
前記ステップ命令群のアクションの管理番号とそのステップ命令が使用するインスタンス領域のアドレスを有してステップ管理番号順に並べたステップ管理テーブルと、
前記トランジションＰＯＵのＰＯＵ管理番号とそのトランジションが使用するインスタンス領域のアドレスを有してトランジション管理番号順に並べたトランジション管理テーブルと、
前記アクションＰＯＵのＰＯＵ管理番号とそのアクションが使用するインスタンス領域のアドレスを有してアクション管理番号順に並べたアクション管理テーブルと、
前記トランジションＰＯＵおよびアクションＰＯＵを管理番号順にＰＯＵのパラメータを記述したＰＯＵ管理テーブルとを備え、
ステップ命令の実行は、前記ステップ管理テーブルで示す当該ステップが活性状態か否かを判定し、活性状態であれば前記アクション管理テーブルで示す前記アクションＰＯＵの管理番号とインスタンスアドレスを識別し、該ＰＯＵ管理番号から前記ＰＯＵ管理テーブルの目的エントリから実行すべきアクションＰＯＵのアドレスを識別して当該アクションＰＯＵを実行し、
前記ステップ命令の実行後、トランジション命令の実行は、前記トランジション管理テーブルの管理番号で示す当該トランジション命令の前に接続されているステップ命令の管理番号を参照し、該ステップ管理番号に対応する前記ステップ管理テーブルのエントリを参照して対応するステップが活性状態か否かを判定し、当該ステップ命令が活性状態であれば前記トランジション管理テーブルで示す前記トランジションＰＯＵの管理番号とインスタンスアドレスを識別し、該ＰＯＵ管理番号から前記ＰＯＵ管理テーブルの目的エントリから実行すべきトランジションＰＯＵのアドレスを識別して当該トランジションＰＯＵを実行し、
前記トランジション命令の終了後、前記ステップ移行命令の実行は、トランジション命令の実行で確立したステップ遷移演算結果を使って、ステップ活性化フラグを更新する、
ことを特徴とするプログラマブルコントローラ。
【請求項２】
前記トランジションＰＯＵとアクションＰＯＵはＳＦＣプログラムの外に置くことを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記ＳＦＣプログラムの内部に前記ステップ管理テーブル、トランジション管理テーブル、アクション管理テーブル、ＳＴＥＰ命令群、ＴＲＡＮ命令群、ＳＴＥＰ移行命令群を置くことを特徴とする請求項１または２に記載のプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＪＩＳＢ３５０３（ＩＥＣ６１１３１−３）に規定されているＳＦＣ（Ｓｅｑｕｅｎｃｉａｌ  Ｆｕｎｃｔｉｏｎ  Ｃｈａｒｔ）言語を使用して演算を実行するプログラマブルコントローラに関わり、特に、ＰＬＣｏｐｅｎ−ＸＭＬスキーマに対応するＳＦＣ演算方式に関わるものである。
【背景技術】
【０００２】
ＪＩＳＢ３５０３にはＳＦＣのほかにテキスト言語であるＩＬ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｌｉｓｔ）言語、ＳＴ（Ｓｔｒｕｃｔｕｒｅｄ  Ｔｅｘｔ）言語、グラフィック言語であるＬＤ（Ｌａｄｄｅｒ  Ｄｉａｇｒａｍ）言語、ＦＢＤ（Ｆｕｎｃｔｉｏｎ  ＢＩｏｃｋ  Ｄｉａｇｒａｍ）がある。ＳＦＣ以外の言語はプログラムの先頭から順番に命令を実行するので、通常のコンピュータプログラムと同様の演算方法が可能である。
【０００３】
しかし、ＳＦＣでは、実際に動作するプログラムは活性化したＳＴＥＰのみとなり、活性化したＳＴＥＰに続くトランジション条件が成立した場合に、次ＳＴＥＰが活性化され、元ＳＴＥＰは非活性状態になる。例えば、図３でＳｔｅｐ２が活性化状態であるとき、Ｔｒａｎ（トランジション）２の条件が成立した時にＳｔｅｐ３が活性化され、Ｓｔｅｐ２は非活性状態になる。
【０００４】
このように、ＳＦＣ演算を実行するには通常のコンピュータプログラム言語では表現が難しい。ましてや、通常のプログラマブルコントローラが持っているインストラクション（演算命令）で、ＳＦＣ演算を実現するのは困難である。そのため、ＳＦＣ演算に関しては、プログラマブルコントローラの演算ＬＳＩを使用しないで、汎用マイコンで実施しているプログラマブルコントローラもある。
【０００５】
また、ＳＦＣ演算をプログラマブルコントローラが持っているインストラクションで実施する場合には、ＳＦＣプログラムをトランジション群プログラム、アクション群プログラム、リンク群プログラムに分けて実行する方式が提案されている（例えば、特許文献１、特許文献２参照）。
【特許文献１】特開平６−２４２８１０号公報
【特許文献２】、特開平５−１５０８１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＪＩＳＢ３５０３では規定はないが、ＰＬＣｏｐｅｎ−ＸＭＬスキーマではＳＦＣの構成要素であるトランジションとアクションはＰＯＵ（Ｐｒｏｇｒａｍ  Ｏｒｇａｎｉｚａｔｉｏｎ  Ｕｎｉｔ）として定義されている。
【０００７】
これまでのプログラマブルコントローラのＳＦＣではトランジションやアクションをＰＯＵとして定義して使うようになっていない。即ち、トランジションやアクションを同じアルゴリズムとしたい場合に、そのアルゴリズムとデータ定義の組み合わせをＰＯＵとして定義して、変数部分を格納するデータ領域をインスタンスとすることで、何度もＰＯＵを使いまわすような使い方ができなかった。即ち、同じアルゴリズムを別々のトランジションやアクションで、プログラミングする必要があった。
【０００８】
例えば、図４でＳｔｅｐ２とＳｔｅｐ３が同じアルゴリズムのアクションでプログラムできるとする。アクションをＰＯＵとして記述できない場合には、Ｓｔｅｐ２，Ｓｔｅｐ３のアクションである、Ａｃｔｉｏｎ２とＡｃｔｉｏｎ３は、同じアルゴリズムであるにもかかわらず、全く別なプログラムとして記述する必要がある。すなわち、プログラムメモリを別々に消費することになる。Ｔｒａｎ２とＴｒａｎ３についても、遷移条件アルゴリズムが同じであれば同様なことになる。
【０００９】
また、前記の特許文献１，２によれば、トランジションやアクションはＰＯＵとして定義できるとはなっていない。プログラマブルコントローラのインストラクションで、トランジションやアクションの実行部分を記述している。この方式によれば、トランジション群プログラム、アクション群プログラムの一部を変更する場合には、ＳＦＣプログラム全体をコンパイルする必要がある。このことから、ＳＦＣプログラムのオンライン変更にも対応しにくい構造であると言える。
【００１０】
本発明の目的は、ＳＦＣプログラムの記述を簡易にし、プログラムの変更を容易にしたプログラマブルコントローラを提供することにある。
【課題を解決するための手段】
【００１１】
前記の課題を解決する本発明は、以下の構成を特徴とする。
【００１２】
（１）ステップ命令群とトランジション命令群およびステップ移行命令群で記述したＳＦＣプログラムによって演算を実行するプログラマブルコントローラであって、
前記ステップ命令のアクションを変数定義部と演算命令を記述するボディ部から構成されるアクションＰＯＵと、
前記トランジションを変数定義部と演算命令を記述するボディ部から構成されるトランジションＰＯＵと、
前記ステップ命令群のアクションの管理番号とそのステップ命令が使用するインスタンス領域のアドレスを有してステップ管理番号順に並べたステップ管理テーブルと、
前記トランジションＰＯＵのＰＯＵ管理番号とそのトランジションが使用するインスタンス領域のアドレスを有してトランジション管理番号順に並べたトランジション管理テーブルと、
前記アクションＰＯＵのＰＯＵ管理番号とそのアクションが使用するインスタンス領域のアドレスを有してアクション管理番号順に並べたアクション管理テーブルと、
前記トランジションＰＯＵおよびアクションＰＯＵを管理番号順にＰＯＵのパラメータを記述したＰＯＵ管理テーブルとを備え、
ステップ命令の実行は、前記ステップ管理テーブルで示す当該ステップが活性状態か否かを判定し、活性状態であれば前記アクション管理テーブルで示す前記アクションＰＯＵの管理番号とインスタンスアドレスを識別し、該ＰＯＵ管理番号から前記ＰＯＵ管理テーブルの目的エントリから実行すべきアクションＰＯＵのアドレスを識別して当該アクションＰＯＵを実行し、
前記ステップ命令の実行後、トランジション命令の実行は、前記トランジション管理テーブルの管理番号で示す当該トランジション命令の前に接続されているステップ命令の管理番号を参照し、該ステップ管理番号に対応する前記ステップ管理テーブルのエントリを参照して対応するステップが活性状態か否かを判定し、当該ステップ命令が活性状態であれば前記トランジション管理テーブルで示す前記トランジションＰＯＵの管理番号とインスタンスアドレスを識別し、該ＰＯＵ管理番号から前記ＰＯＵ管理テーブルの目的エントリから実行すべきトランジションＰＯＵのアドレスを識別して当該トランジションＰＯＵを実行し、
前記トランジション命令の終了後、前記ステップ移行命令の実行は、トランジション命令の実行で確立したステップ遷移演算結果を使って、ステップ活性化フラグを更新する、
ことを特徴とする。
【００１３】
（２）前記トランジションＰＯＵとアクションＰＯＵはＳＦＣプログラムの外に置くことを特徴とする。
【００１４】
（３）前記ＳＦＣプログラムの内部に前記ステップ管理テーブル、トランジション管理テーブル、アクション管理テーブル、ＳＴＥＰ命令群、ＴＲＡＮ命令群、ＳＴＥＰ移行命令群を置くことを特徴とする。
【発明の効果】
【００１５】
以上のとおり、本発明によれば、ＳＦＣプログラムの記述が簡易になり、プログラムの変更も容易になる。具体的には、以下の効果が得られる。
【００１６】
（１）トランジションやアクションをＰＯＵとして定義できるため、同じアルゴリズムのトランジションやアクションをインスタンス領域を用意するだけで、何度でもＳＦＣプログラム中で使用することができる。
【００１７】
（２）ＰＬＣｏｐｅｎ−ＸＭＬ形式に準拠したプログラムが作成できる。
【００１８】
（３）ＳＦＣプログラム内部にＳＴＥＰ命令群を持ち、ＳＴＥＰ命令のオペランドにステップ管理テーブルの管理番号を示すことで、ステップ管理テーブルを介した、ステップ用インスタンス領域、及びアクション用インスタンス領域へのアクセスや関連するアクションＰＯＵの実行が可能になる。
【００１９】
（４）ＳＦＣプログラム内部にＴＲＡＮ命令群を持ち、ＴＲＡＮ命令のオペランドにトランジション管理テーブルの管理番号を示すことで、トランジション管理テーブルを介した、トランジション用インスタンス領域アクセスや関連するトランジションＰＯＵの実行が可能になる。
【００２０】
（５）トランジションＰＯＵとアクションＰＯＵをＰＯＵ管理テーブルを介して実行することで、その他の型のＰＯＵと同様な管理が実施できる。
【００２１】
（６）トランジションＰＯＵとアクションＰＯＵの管理をＳＦＣプログラムのトランジション管理テーブルとアクション管理テーブルを介して実行することで、そのＳＦＣプログラムだけの管理下でＳＦＣプログラム演算が実施できる。
【００２２】
（７）トランジションＰＯＵとアクションＰＯＵをＳＦＣプログラムの外に置いているために、トランジションＰＯＵやアクションＰＯＵのアルゴリズムに変更があっても、ＳＦＣプログラムを再度コンパイルする必要がない。そのため、オンライン変更処理が簡単に実施可能になる。
【発明を実施するための最良の形態】
【００２３】
（実施形態１）
図１は、本実施形態を示すＳＦＣブログラムの構成例であり、以下の特徴を持つ。
【００２４】
（１）アクションとトランジションをＰＯＵとして定義できる。
【００２５】
（２）アクションＰＯＵを呼び出すためにＳＴＥＰ命令を用意する。
【００２６】
（３）トランジションＰＯＵを呼び出すためにＴＲＡＮ命令を用意する。
【００２７】
（４）ＳＴＥＰ命令とアクションを結びつけるためにステップ管理テーブルを用意する。
【００２８】
（５）アクションＰＯＵを管理するためにアクション管理テーブルを用意する。
【００２９】
（６）トランジションＰＯＵを管理するためにトランジションＰＯＵを用意する。
【００３０】
（７）ＰＯＵを管理するためのＰＯＵ管理テーブルを用意する。
【００３１】
（８）ＳＦＣプログラムのオンライン変更に対応しやすい。
【００３２】
（９）ＳＦＣプログラム内部にステップ管理テーブル、トランジション管理テーブル、アクション管理テーブル、ＳＴＥＰ命令群、ＴＲＡＮ命令群、ＳＴＥＰ移行命令群を置く。
【００３３】
（１０）トランジションＰＯＵとアクションＰＯＵはＳＦＣプログラムの外に置く。
【００３４】
図１において、ＳＦＣプログラム１０は以下の要素で構成される。
【００３５】
ヘッダ１１は、プログラムインスタンスとしてのＳＦＣプログラムの各種属性情報を示す。変数定義１２はＳＦＣプログラムが使用する変数を定義する領域であり、この管理用インスタンスや内部変数は後述のインスタンス領域５０に格納される。
【００３６】
ステップ管理テーブル１３は、ＳＦＣプログラム内部に存在する各ステップに管理番号を付けて、その管理番号順に並べたＳＴＥＰ管理用テーブルである。この中に、対応するステップに関連するアクションの管理番号とそのステップが使用するインスタンス領域のアドレスが示される。ＳＴＥＰ命令のオペランドにこのステップ管理テーブル１３の管理番号が示される。１つのステップに関連するアクションは複数あっても良い。また、アクションでなく、直接ＢＯＯＬ型変数を設定することもできる。
【００３７】
トランジション管理テーブル１４は、ＳＦＣプログラム内部に存在する各トランジションに管理番号を付けて、その管理番号順に並べたトランジション管理用テーブルである。この中に、対応するトランジションＰＯＵのＰＯＵ管理番号とそのトランジションが使用するインスタンス領域のアドレスが示される。ＴＲＡＮ命令のオペランドにこのトランジション管理テーブル１４の管理番号が示される。
【００３８】
アクション管理テーブル１５は、ＳＦＣプログラム内部に存在するアクションに管理番号を付けて、その管理番号順に並べたアクション管理用テーブルである。この中に、対応するアクションＰＯＵのＰＯＵ管理番号とそのアクションが使用するインスタンス領域のアドレスが示される。ステップ管理テーブル１３にこのアクション管理テーブル１５の管理番号が示される。
【００３９】
ＳＴＥＰ命令群１６は、ＳＦＣプログラム内部に存在するＳＴＥＰを実行する命令群である。これらＳＴＥＰ命令のオペランドには、ステップ管理テーブル１３の管理番号が示される。ステップの活性状態により、関連するアクションを実行するかどうかが決まる。
【００４０】
ＴＲＡＮ命令群１７は、ＳＦＣプログラム内部に存在するトランジションを実行する命令群である。これらＴＲＡＮ命令のオペランドには、トランジション管理テーブル１４の管理番号が示される。上位に接続されるステップの活性状態により、トランジション演算を実行するかどうかが決まる。
【００４１】
ＳＴＥＰ移行命令群１８は、ＴＲＡＮ命令群の演算結果により、ステップ移行条件が成立した場合、活性化しているステップを非活性状態にして、次ステップを活性化状態にするためのＬＤ命令の集まりである。これらの演算により、ステップ用インスタンスにあるステップ活性化フラグが更新される。
【００４２】
以上までのＳＦＣプログラム以外に、ＰＯＵ管理テーブル２０を用意する。このＰＯＵ管理テーブル２０は、プログラマブルコントローラに登録されているＰＯＵに管理番号を付けて、その管理番号順にＰＯＵのパラメータを記述したものである。ＰＯＵにはトランジションやアクションの他に、ファンクション、ファンクションブロック、プログラムという型が存在する。ＰＯＵ管理テーブル２０はそれらのＰＯＵを全体として管理するものである。アクション管理テーブル１５とトランジション管理テーブル１４には、ＰＯＵ管理テーブル２０の管理番号が示され、実行しようとするＰＯＵのアドレスなどが示される。このＰＯＵ管理テーブル２０を介して、実際のトランジションＰＯＵやアクションＰＯＵが実行できるようになる。
【００４３】
以下に、図１を例にして、ＳＦＣプログラムの演算方式を説明する。なお、プログラムメモリとして、アクションＰＯＵ３０、トランジションＰＯＵ４０が用意され、さらにデータメモリとしてＳＦＣ用インスタンスを格納するインスタンス領域５０が用意される。
【００４４】
（Ｓ１）ＳＦＣプログラムが起動すると、ＳＴＥＰ命令群１６の先頭命令が実行される。ＳＴＥＰ命令のオペランドにはステップ管理テーブル１３の管理番号が示されており、目的のステップ管理番号が参照される。
【００４５】
（Ｓ２）ステップ管理テーブル１３にはステップが活性状態か否かを示す、ステップ活性化フラグが格納されているステップ用インスタンス領域のアドレスが格納されているステップが活性かどうかはＸやＴから判定する。
【００４６】
（Ｓ３）対応するステップ活性化フラグが活性状態であれば、ステップ管理テーブル１３に示されているアクション管理テーブル１５の管理番号を参照する。このことで、目的のアクションＰＯＵのアドレスを識別することができる。なお、１つのステップでは複数のアクション管理番号を登録できる。
【００４７】
（Ｓ４）アクション管理テーブル１５で目的のアクションＰＯＵのＰＯＵ管理番号と、アクション用インスタンス領域のアドレスを識別する。
【００４８】
（Ｓ５）ＰＯＵ管理番号からＰＯＵ管理テーブル２０の目的エントリを識別し、実行すべきアクションＰＯＵのアドレスを識別する。
【００４９】
（Ｓ６）アクションＰＯＵ３０はアクション用インスタンス領域のアドレスをパラメータとして起動され、アクション演算を実行する。アクションＰＯＵの最後はＲＥＴ命令となっており、次ＳＴＥＰ命令を実行することになる。
【００５０】
したがって、ステップ命令の実行は、前記ステップ管理テーブルで示す当該ステップが活性状態か否かを判定し、活性状態であれば前記アクション管理テーブルで示す前記アクションＰＯＵのＰＯＵ管理番号とインスタンスアドレスを識別し、該ＰＯＵ管理番号から前記ＰＯＵ管理テーブルの目的エントリから実行すべきアクションＰＯＵのアドレスを識別して当該アクションＰＯＵを実行する。
【００５１】
（Ｓ７）上記のＳＴＥＰ命令の実行後、ＴＲＡＮ命令群１７のＴＲＡＮ命令が実行される。ＴＲＡＮ命令オペランドにはトランジション管理テーブル１４の管理番号が示されており、目的のトランジション管理データが参照される。
【００５２】
（Ｓ８）トランジション管理テーブル１４には、そのＴＲＡＮ命令の前に接続されているステップ命令のステップ管理番号が示されている。そのステップ管理番号に対応するステップ管理テーブル１３のエントリを参照し、対応するステップが活性状態か否かを判定する。
【００５３】
（Ｓ９）対応するステップ命令のフラグが活性状態であれば、トランジション管理テーブル１４に示されているトランジションＰＯＵ管理番号を参照する。このことで、目的のＰＯＵ管理テーブル２０のアドレスを知ることができる。また、トランジション管理テーブル２０にはトランジション演算で使用するトランジション用インスタンス領域のアドレスが示されている。
【００５４】
（Ｓ１０）ＰＯＵ管理番号からＰＯＵ管理テーブル２０の目的エントリを知り、実行すべきトランジションＰＯＵ４０のアドレスを判定する。トランジションＰＯＵ４０はトランジション用インスタンス領域のアドレスをパラメータとして起動され、トランジション演算を実行する。トランジションＰＯＵの最後はＲＥＴ命令となっており、次ＴＲＡＮ命令を実行することになる。
【００５５】
したがって、トランジション命令の実行は、前記トランジション管理テーブルの管理番号で示す当該トランジション命令の前に接続されているステップ命令のステップ管理番号を参照し、該ステップ管理番号に対応する前記ステップ管理テーブルのエントリを参照して対応するステップが活性状態か否かを判定し、当該ステップ命令が活性状態であれば前記トランジション管理テーブルで示す前記トランジションＰＯＵの管理番号とインスタンスアドレスを識別し、該ＰＯＵ管理番号から前記ＰＯＵ管理テーブルの目的エントリから実行すべきトランジションＰＯＵのアドレスを識別して当該トランジションＰＯＵを実行する。
【００５６】
（Ｓ１１）ＴＲＡＮ命令が終了すると、ＳＴＥＰ移行命令群１８が実行される。ＴＲＡＮ命令群で確立したステップ遷移演算結果を使って、ステップ活性化フラグを更新する。
【００５７】
（実施形態２）
実施形態１ではすべてのＰＯＵを総括的に管理するＰＯＵ管理テーブル２０を別途用意していた。しかし、ＳＦＣプログラムで使用するトランジションやアクションは、他言語で使用することは少ない。また、あるＳＦＣプログラムで作成したトランジションＰＯＵとアクションＰＯＵを他ＳＦＣプログラムで使用することは少ない。そのため、トランジションＰＯＵとアクションＰＯＵの管理を行うＰＯＵ管理テーブル２０をＳＦＣプログラム１０に含めてしまうことができる。図２はその構成図であり、ＳＦＣプログラム１０Ａにはトランジション管理テーブル１４およびアクション管理テーブル１５内にＰＯＵ管理テーブルを含めておく。このことで、ＳＦＣと他言語を切り離して管理することが可能になる。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施形態１を示すＳＦＣプログラムの構成例。
【図２】本発明の実施形態２を示すＳＦＣプログラムの構成例。
【図３】ＳＦＣプログラムの活性／非活性の例。
【図４】ＳＦＣプログラムの処理手順例。
【符号の説明】
【００５９】
１０  ＳＦＣプログラム
２０  ＰＯＵ管理テーブル
３０  アクションＰＯＵ
４０  トランジションＰＯＵ
５０  ＳＦＣ用インスタンス領域
１１  ヘッダ
１２  変数定義
１３  ステップ管理テーブル
１４  トランジション管理テーブル
１５  アクション管理テーブル
１６  ＳＴＥＰ命令群
１７  ＴＲＡＮ命令群
１８  ＳＴＥＰ移行命令群
【図１】
2008040995.tif 000003
【図２】
2008040995.tif 000004
【図３】
2008040995.tif 000005
【図４】
2008040995.tif 000006