Nothing Special   »   [go: up one dir, main page]

JP2003044106A - Sfc変換プログラム、制御プログラムの作成方法及びプログラマブルロジックコントローラ - Google Patents

Sfc変換プログラム、制御プログラムの作成方法及びプログラマブルロジックコントローラ

Info

Publication number
JP2003044106A
JP2003044106A JP2001233015A JP2001233015A JP2003044106A JP 2003044106 A JP2003044106 A JP 2003044106A JP 2001233015 A JP2001233015 A JP 2001233015A JP 2001233015 A JP2001233015 A JP 2001233015A JP 2003044106 A JP2003044106 A JP 2003044106A
Authority
JP
Japan
Prior art keywords
transition
program
function
sfc
condition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001233015A
Other languages
English (en)
Inventor
Masahiro Koyama
昌宏 小山
Tadahiko Nogami
忠彦 野上
Tsurumasa Matsushita
鶴正 松下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2001233015A priority Critical patent/JP2003044106A/ja
Publication of JP2003044106A publication Critical patent/JP2003044106A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Programmable Controllers (AREA)

Abstract

(57)【要約】 【課題】記述が複雑なSFCプログラムにおいても、そ
の処理時間を短縮し、制御装置の応答性を向上すると共
に、そのプログラムの実行が制御装置の機種等ハードウ
ェアに依存しないようにする。 【解決手段】各ステップとトランジションの接続関係を
表す情報101aと、各ステップのアクションを示す情
報101bと、各トランジションの情報101cを有し
たSFCプログラムのソースコードから、それぞれのス
テップについて、その出力におけるトランジションの条
件が成立しているかどうかを判定し、次のステップのア
クションを実行させるステップ遷移関数106aを生成
する機能と、条件が成立しているステップに対応したス
テップ遷移関数106aを呼び出すメイン関数106d
を生成する機能と、を実現させるSFC変換プログラ
ム。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、制御装置の順序制
御、条件制御だけでなく、位置決め、画像処理、通信、
プロセス制御などの種々の制御プログラムが記述された
SFC(シーケンシャル・ファンクション・チャート)
プログラムを、制御装置において実行可能なプログラム
に変換するSFC変換プログラム及びそれを用いたプロ
グラマブルロジックコントローラに関する。
【0002】
【従来の技術】近年、プログラマブルロジックコントロ
ーラ(PLC)などの制御装置において、SFCという
言語を使用したプログラム(以下、SFCプログラム)
を用いる方法が普及しつつある。SFCプログラムは、
PLCの実行順序を示す処理構造を記述するための共通
要素として定義されたものであり、IEC61131−
3として規格化されている。通常、SFCプログラム
は、制御装置とは別に用意されたプログラミング装置を
用いて編集され、この編集作業が完了した後、制御装置
の中で実行可能な形式に変換される。また、SFCプロ
グラムを実行する際に、SFCの各ステップとトランジ
ションの接続関係を表すデータをテーブル形式のオブジ
ェクト群とし、これに基づいてSFCの遷移をPLCの
内部プログラムで実行することが知られ、例えば特開平
8−54911号公報に記載されている。
【0003】
【発明が解決しようとする課題】上記従来技術において
は、SFCプログラムにおける順序制御の記述が複雑に
なった場合、すなわち、ステップとトランジションの接
続関係が複雑になった場合、PLCの内部プログラムが
テーブル形式のデータを解釈する処理の負荷が増大し、
PLCの応答性が低下する。また、オブジェクト群は、
各ステップのアクションと各トランジションの条件をそ
れぞれコンパイルしたものであり、これらはPLCの内
部プログラムによるステップとトランジションの接続関
係を示すテーブル形式のデータ解釈に基づいて呼び出さ
れる。つまり、テーブル形式のデータとオブジェクト群
にはそのものには、SFCの遷移を実行するためのテー
ブルを解釈する処理が含まれていない。したがって、そ
のままの形では他の実行環境、例えば、異なった機種の
制御装置、あるいは汎用の計算機において実行すること
ができず、制御装置ごとにテーブルを解釈する処理を変
更せざるを得ない。本発明の目的は、記述が複雑なSF
Cプログラムにおいても、その処理時間を短縮し、制御
装置の応答性を向上すると共に、そのプログラムの実行
が制御装置の機種等ハードウェアに依存しないようにす
るSFC変換プログラム及びそれを用いたプログラマブ
ルロジックコントローラを提供することにある。
【0004】
【課題を解決するための手段】上記目的を達成するため
本発明は、制御装置に対する制御処理の実行順序が記述
されたSFCプログラムを制御装置において実行可能な
プログラムに変換するSFC変換プログラムであって、
各ステップとトランジションの接続関係を表す情報と、
各ステップのアクションを示す情報と、各トランジショ
ンの条件を示す情報を有したSFCプログラムのソース
コードから、それぞれのステップについて、その出力に
おけるトランジションの条件が成立しているかどうかを
判定し、条件が成立していればそのステップを不活性状
態、次のステップを活性状態にし、次のステップのアク
ションを実行させるステップ遷移関数を生成する機能
と、活性状態にあるステップに対応したステップ遷移関
数を呼び出すメイン関数を生成する機能と、初期ステッ
プを活性状態にし、そのアクションを実行させる初期化
関数を生成する機能と、を実現させるものである。
【0005】これにより、メイン関数から活性状態にあ
るステップに対応したステップ遷移関数を呼び出すこと
で、SFCプログラムの遷移を実行するためのテーブル
を解釈する処理が制御装置の実行形式プログラムとして
生成されるので、一連のSFCプログラムの内容を実行
するための全ての情報及び処理が実行形式プログラムと
なる。よって、記述が複雑なSFCプログラムにおいて
も、その処理時間を短縮し、制御装置の応答性を向上す
ると共に、そのプログラムの実行が制御装置の機種等ハ
ードウェアに依存しないようにすることができる。
【0006】また、上記のものにおいて、各ステップと
トランジションの接続関係を表す情報は、初期ステップ
の番号を格納したテーブルと、各ステップの出力となる
トランジションの番号を格納したテーブルと、各トラン
ジションの入力となるステップと出力となるステップの
番号を格納したトランジションテーブルを備えたことが
望ましい。
【0007】さらに、上記のものにおいて、メイン関数
はSFCプログラムにおける並行プロセスを複数のスレ
ッドとして管理し、スレッドのそれぞれで活性状態にあ
るステップに対応したステップ遷移関数を呼び出すこと
が望ましい。さらに、上記のものにおいて、ステップ遷
移関数はSFCプログラムにおける並列分岐の際にスレ
ッドを増加させ、メイン関数はSFCプログラムにおけ
る並列結合の際にスレッドを減少させることが望まし
い。また、本発明は、制御装置に対する制御処理の実行
順序が記述された制御プログラムの作成方法であって、
各ステップとトランジションの接続関係を表す情報と、
各ステップのアクションを示す情報と、各トランジショ
ンの情報を有したSFCプログラムのソースコードを作
成し、作成されたソースコードからそれぞれのステップ
について、その出力におけるトランジションの条件が成
立しているかどうかを判定し、前記条件が成立していれ
ばそのステップを不活性状態、次のステップを活性状態
にし、次のステップのアクションを実行させるステップ
遷移関数を生成し、初期ステップを活性状態にし、それ
以降、活性状態にあるステップに対応した前記ステップ
遷移関数を順次制御装置において実行させるプログラム
に変換するものである。さらに、上記のものにおいて、
各ステップとトランジションの接続関係を表す情報は、
初期ステップの番号を格納したテーブルと、各ステップ
の出力となるトランジションの番号を格納したテーブル
と、各トランジションの入力となるステップと出力とな
るステップの番号を格納したトランジションテーブル
と、活性状態にあるステップに対応したステップ遷移関
数を呼び出すメイン関数と、を制御装置において実行可
能なプログラムに変換することが望ましい。さらに、上
記のものにおいて、ステップ遷移関数はC言語で記述さ
れ、実行させるプログラムは制御装置に搭載されるマイ
クロプロセッサに対応したCクロスコンパイラで機械語
に変換されることが望ましい。また、本発明は、各ステ
ップとトランジションの接続関係を表す情報と、各ステ
ップのアクションを示す情報と、各トランジションの条
件を示す情報を有したSFCプログラムを実行するプロ
グラマブルロジックコントローラにおいて、それぞれの
ステップについて、その出力におけるトランジションの
条件が成立しているかどうかを判定し、条件が成立して
いればそのステップを不活性状態、次のステップを活性
状態にし、次のステップのアクションを実行させるステ
ップ遷移関数に基づいて、制御処理されるものである。
【0008】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照して説明する。図1は、一実施の形態に
よる制御プログラムの作成装置の処理手順を示し、SF
Cプログラム101を、その実行環境となる制御装置の
ハードウェアに依存しない形式(例えばC言語)で記述
した汎用言語ソースコード106に変換し、制御装置の
ハードウェアに対応した機械語プログラム108に変換
する。これにより、SFCプログラム101の内容を任
意の実行環境において実行可能となり、制御装置におけ
る全ての実行形式プログラムが機械語プログラム108
となるため、その処理時間を短縮し、制御装置の応答性
を向上できる。
【0009】SFCプログラム101のソースコード
は、SFCのステップとトランジションの接続関係を表
すSFC構造情報101aと、各ステップのアクション
示すステップ処理情報101bと、各トランジションの
条件を記述したトランジション条件情報101cとを有
している。
【0010】汎用言語ソースコード106は、ステップ
遷移関数106aと、ステップ遷移関数ポインタテーブ
ル106bと、初期化関数106cと、メイン関数10
6dと、さらにハードウェア依存情報106eとに区別
される。ステップ遷移関数106aは、SFCプログラ
ム101における活性状態にある任意のステップの出力
となるトランジションの条件が成立しているかどうかを
判定し、この条件が成立していれば、このステップを不
活性状態にして、トランジションの出力となる次のステ
ップを活性状態にし、そのアクションを実行する処理を
記述し、SFCプログラム101の各ステップに対して
1個ずつ生成される。ステップ遷移関数ポインタテーブ
ル106bは、ステップ遷移関数106bの各々のエン
トリアドレスをステップ番号に対応させて格納する。初
期化関数106cは、SFCプログラム101の初期ス
テップを活性状態にし、初期ステップのアクションの実
行する処理を記述する。メイン関数106dは、活性状
態にあるステップに対応したステップ遷移関数106a
のエントリアドレスをステップ遷移関数ポインタテーブ
ル106bから読み出し、このステップ遷移関数106
aを実行する処理を記述する。ハードウェア依存情報1
06eは、SFCプログラム101を変換して得られる
機械語プログラム108の実行環境となる制御装置のハ
ードウェアに依存した情報(メモリマップ、I/Oマッ
プなど)である。
【0011】SFCプログラム101から汎用言語ソー
スコード106への変換は、以下のように行われる。ス
テップ遷移関数生成手段102により、SFC構造情報
101aとステップ処理情報101bとトランジション
条件情報101cから、それぞれのステップについて、
その出力におけるトランジションの条件が成立している
かどうかを判定し、前記条件が成立していればそのステ
ップを不活性状態、次のステップを活性状態にし、次の
ステップのアクションを記述したステップ遷移関数10
6aがSFCプログラム101の各ステップに対して1
個ずつ生成される。ステップ遷移関数ポインタテーブル
生成手段103により、SFC構造情報101a、ある
いは生成されたステップ遷移関数106aからステップ
遷移関数ポインタテーブル106bが生成される。初期
化関数生成手段104により、SFC構造情報101a
とステップ処理情報101bから、初期ステップを活性
状態にし、そのアクションを実行する処理を記述した初
期化関数106cが生成される。メイン関数生成処理1
05により、活性状態にあるステップに対応したステッ
プ遷移関数を呼び出すメイン関数106dが生成され
る。なお、ハードウェア依存情報106eは、制御装置
のハードウェアの仕様に応じて別途作成し、例えば、C
言語またはアセンブリ言語によるソースコードとして用
意すれば良い。
【0012】汎用言語ソースコード106は、機械語変
換手段107により、機械語プログラム108に変換さ
れる。例えば、汎用言語としてC言語を用いた場合、ハ
ードウェアに搭載されるマイクロプロセッサに対応した
C(クロス)コンパイラ及びリンカが機械語変換手段1
07となる。図1に示した制御プログラムの作成装置に
おいて、SFCプログラム101を汎用言語ソースコー
ド106に変換するための手段、すなわち、ステップ遷
移関数生成手段102と、ステップ遷移関数ポインタテ
ーブル生成手段103と、初期化関数生成手段104
と、メイン関数生成手段105を具体例により説明す
る。
【0013】図2は、SFCプログラム101の記述例
を示し、ステップ201(図中、長方形)とトランジシ
ョン202(図中、太い横線)とリンク203(図中、
細い線または二重線)を要素として表現される。ステッ
プ201のそれぞれにはステップ番号が割り当てられ、
これをSn(nは番号)と記す。同様に、トランジショ
ン202のそれぞれにはトランジション番号が割り当て
られ、これをトランジション202の横にTn(nは番
号)と記す。最初のステップとなる初期ステップ204
は、二重長方形で表現される。リンク203は上から下
への接続を示し、それ以外への接続は矢印を付ける。
【0014】ステップ201は制御中のシステムの状態
として活性と不活性の2種類を表す。ステップ201が
活性状態であれば、そのステップ201において定義さ
れたアクション(図示せず)が実行される。アクション
は制御処理の内容を示し、SFC以外のプログラミング
言語、例えば、IEC61131−3で定義されたテキ
スト型言語IL(命令リスト)やST(構造化テキス
ト)、あるいは図式言語LD(ラダー図)やFBD(フ
ァンクション・ブロック・ダイヤグラム)などを用いて
記述される。トランジション202はステップ201の
活性状態を遷移させるための条件を示し、トランジショ
ン202の入力となるステップ201が活性状態で、か
つトランジション202の条件が成立すれば、トランジ
ション202の出力となる次のステップが活性状態と
し、前のステップ201は不活性状態とする。例えば、
図2では、トランジションT3はステップS2からステ
ップS4へ活性状態を遷移させる条件となっている。
【0015】また、SFCでは、トランジション202
の条件により複数の処理から一つを選んで実行する処
理、いわゆる選択分岐の処理を表現できる。選択分岐で
は、分岐先にあるトランジションのうち、最初に条件が
成立したトランジションが有効となり、その出力となる
ステップが活性状態になる。複数のトランジションにお
いて条件が成立した場合、最も左側に位置するトランジ
ションが有効となる。例えば、図2の選択分岐205で
は、初期ステップS1が活性状態のとき、トランジショ
ンT1の条件が成立すればステップS2が活性状態にな
り、トランジションT2の条件が成立すればステップS
3が活性状態になる。
【0016】さらに、SFCでは、複数の処理を同時に
並行して実行する処理、いわゆる並列分岐を表現でき、
分岐したリンクを二重線で記す。並列分岐では、分岐し
た先の全てのステップが同時に活性状態になり、次に続
く複数の処理が並行して実行される。例えば、図2の並
列分岐206では、ステップS3が活性状態で、かつト
ランジションT4の条件が成立すれば、ステップS5と
ステップS6がともに活性状態になり、それぞれのステ
ップに続く処理が並行して実行される。並行処理が終了
する際には、並列結合を用い、そのリンクは並列分岐の
表記に合わせて二重線で記す。図2の並列結合207で
は、ステップS8とステップS9がともに活性状態で、
かつトランジションT9の条件が成立すれば、ステップ
S10が活性状態になる。
【0017】さらに、図2で示したようなSFCプログ
ラム101全体を複数個作成し、これらを並行して実行
することもある。この場合、SFCプログラム101の
それぞれの初期ステップから実行が開始される。
【0018】SFCプログラム101における並列プロ
セス、すなわち並列分岐により生じる並列プロセスのそ
れぞれを異なったスレッドとして扱う。1個のSFCプ
ログラム101は、初期ステップから実行を開始する時
点では、1個のスレッドとして扱われ、並列分岐により
増えたプロセスは別のスレッドとして扱われる。そし
て、並列結合により完了したプロセスのスレッドは消滅
する。例えば、図2では、並列分岐206の前までは1
個のスレッドであり、並列分岐206の後はステップS
5、S8と続くスレッドと、ステップS6、S9と続く
スレッドの2個のスレッドになり、並列結合207の後
は再び1個のスレッドとなる。各スレッドにおいて活性
状態となるステップは1個だけとなるため、プログラム
実行時にスレッド毎のステップ遷移の管理が容易とな
る。
【0019】図3は、図2に示したSFCプログラム1
01のステップとトランジションの接続関係を表すSF
C構造情報101aを示し、図3に示すような初期ステ
ップテーブル301、ステップテーブル302、トラン
ジションテーブル303の3種類のデータから構成され
る。初期ステップテーブル301には、SFCプログラ
ムの初期ステップのステップ番号が格納され、SFCプ
ログラム101が複数個ある場合には、それぞれの初期
ステップのステップ番号が、この初期ステップテーブル
301に格納される。ステップテーブル302には、S
FCプログラム101に含まれる各ステップの出力とな
るトランジション(以下、次トランジション)のトラン
ジション番号が格納される。次に選択分岐があるステッ
プの場合、すなわち次トランジションが複数個あるステ
ップの場合、ステップテーブル302の各要素に複数の
トランジション番号が格納される。例えば、図3では、
初期ステップS1の次トランジションとして、T1とT
2が格納されている。トランジションテーブル303に
は、SFCプログラム101に含まれる各トランジショ
ンの入力となるステップ(以下、前ステップ)と出力と
なるステップ(以下、次ステップ)のステップ番号が格
納される。トランジションの前後で並列分岐、並列結合
がある場合、すなわち前ステップ、次ステップがそれぞ
れ複数個ある場合、トランジションテーブル303の各
要素に複数のステップ番号が格納される。例えば、図3
では、トランジションT4の次ステップとしてS5とS
6、トランジションT9の前ステップとしてS8とS9
が格納されている。ステップテーブル302の内容は、
トランジションテーブル303から生成することが可能
であり、これをSFC構造情報101aとして持たせて
おくことは冗長であるが、後述するステップ遷移関数生
成手段102の処理において有利となる。また、SFC
構造情報101aが上記と異なる形式の場合でも、この
ような形式から上記の形式の情報を生成することができ
る。
【0020】図3に示したSFC構造情報101aは、
図2に示したSFCプログラム101をSFCプログラ
ム編集手段(図示せず)を用いて編集した際に自動的に
生成される。SFCプログラム編集手段では、図2に示
したような図形形式でSFCプログラム101を編集で
きるようになっており、図3に示したようなSFC構造
情報101aの構成をユーザに意識させることはない。
同様に、図1に示したステップ処理情報101bとトラ
ンジション条件情報101cも、SFCプログラム10
1を編集時に自動的に生成され、ステップ処理情報10
1bには、各ステップのアクションが格納され、ステッ
プ番号に対応してアクションの記述を参照できる。同様
に、トランジション条件情報101cには、各トランジ
ションの条件が格納され、トランジション番号に対応し
て条件を参照できる。以上のSFC構造情報101a、
ステップ処理情報101b、トランジション条件情報1
01cがSFCプログラム101のソースコードとな
り、SFCプログラム101を制御装置で実行するため
には、これらの情報を用いて実行形式プログラムを生成
する必要がある。以下、ステップ遷移関数106a、ス
テップ遷移関数ポインタテーブル106b、初期化関数
106c、メイン関数106dを生成する手順を説明す
る。
【0021】図4は、ステップ遷移関数生成手段102
の概略処理を示すフローチャート、図5、図6、図7
は、その処理によって生成されたステップ遷移関数10
6aの例である。ステップ遷移関数生成手段102は、
ステップテーブル302からSFC中のステップ番号の
一つ(Siとする)を取得し、このステップSiに対応
したステップ遷移関数106aの最初の部分(戻り値の
型、関数名、引数の定義など)を生成する(処理40
1)。ステップテーブル302からステップSiの次と
なるトランジション番号の一つ(Tjとする)を取得
し、トランジションテーブル303からトランジション
Tjの前ステップのステップ番号を全て取得する(処理
402)。前ステップ中、ステップSi以外のステップ
が活性状態(図中、ACTIVE)であることを示す条
件式を生成する(処理403)。トランジションTjの
前に並列結合がある場合、ステップSi以外に前ステッ
プが存在し、処理403が必要となる。トランジション
Tjの条件を表す条件式を生成し(処理404)、上記
のステップに関する条件式とAND結合し、if文の条
件部を生成する(処理405)。if文の実行部とし
て、トランジションTjの前ステップの全てを不活性状
態(図中、INACTIVE)にする文を生成する(処
理406)。トランジションテーブル303からトラン
ジションTjの次ステップのステップ番号を全て取得し
(処理407)、次ステップのステップ番号の一つ(S
kとする)を取得し、ステップSkを活性状態にする文
を生成し(処理408)、ステップSkのアクションを
実行する文を生成する(処理409)。スレッドの現在
のステップをステップSkに更新する文を生成する(処
理410)。トランジションTjの次ステップがステッ
プSkの他にあるかどうかをチェックし、他に次ステッ
プがあれば(処理411でYES)、トランジションT
jの後に並列分岐が存在するので、この分岐で増えるプ
ロセスのために未使用のスレッド番号を一つ取得し(処
理412)、処理408に戻って、処理408から処理
411を繰り返す。トランジションTjの次ステップが
ステップSkの他になければ(処理411でNO)、ス
テップSiの次トランジションがトランジションTjの
他にあるかどうかをチェックし、他に次トランジション
があれば(処理413でYES)、else文を生成し
(処理414)、処理402に戻って、処理402から
処理413を繰り返す。ステップSiの次トランジショ
ンが他になければ(処理413でNO)、ステップSi
に対応したステップ遷移関数106aの最後の部分を生
成する(処理415)。SFC中のステップがステップ
Siの他にあるかどうかをチェックし、他にステップが
あれば(処理416でYES)、処理401に戻り、以
上の処理を繰り返す。SFC中のステップが他になけれ
ば(処理416でNO)、ステップ遷移関数の生成を終
了する。
【0022】図5は、図2に示したステップS1に対応
するステップ遷移関数106a(図中、step1()
と記す)を、図4の処理により生成した例である。(ス
テップ遷移関数106aの表記はC言語による) ステップ遷移関数106aの関数名(step1)は、
ステップ番号(S1)に対応した名称となる。この関数
には、ステップS1の後にトランジションT1とT2に
よる選択分岐があるため、二通りのステップ遷移に関す
る処理がトランジションT1の条件(conditio
n_T1)をチェックするif文と、トランジションT
2の条件(condition_T2)をチェックする
elseif文として記述されている。トランジション
T1の条件が成立すれば、ステップS1を不活性状態、
次のステップS2を活性状態にし、さらにステップS2
のアクション(action_S2)を実行し、スレッ
ドの現在の(活性状態の)ステップをS2とする。トラ
ンジションT1の条件が成立せず、トランジションT2
の条件が成立すれば、前のステップS1を不活性状態、
次のステップS3を活性状態にし、さらにステップS3
のアクション(action_S3と記す)を実行し、
最後にスレッドの現在の(活性状態の)ステップをS3
とする。
【0023】図6は、図2に示したステップS3に対応
するステップ遷移関数106a(図中、step3()
と記す)を生成した例である。ステップS3の出力とな
るトランジションT4の後には並列分岐があるため、ト
ランジションT4の条件をチェックするif文の実行部
では、ステップS3を不活性状態にした後、次のステッ
プS5を活性状態にして、そのアクションを実行し、ス
レッドの現在のステップをS5とする。次のステップS
6を活性状態にして、そのアクションを実行し、未使用
のスレッド番号をGetFreeThNo()と記す関
数によって探して、そのスレッドの現在のステップをS
6とする。
【0024】図7は、図2に示したステップS8に対応
するステップ遷移関数106a(step8())を生
成した例である。ステップS8はトランジションT9へ
の入力となる並列結合のステップであり、ステップS9
が活性状態であることと、トランジションT9の条件が
if文の条件となる。if文の実行部では、ステップS
8とS9を不活性状態、次のステップS10を活性状態
にし、さらにステップS10のアクションを実行し、最
後にスレッドの現在のステップをS10とする処理が記
述されている。並列結合によりスレッドが消滅し、スレ
ッド数が減ることになるが、スレッド数の管理はメイン
関数106dの中で行う。
【0025】図8は、ステップのアクションの表記例8
01と、このアクションのC言語への変換例802を示
す。表記例801はアクションを先に述べたST(構造
化テキスト)で表したものであり、”ACTION A
CTION_S1”と”END_ACTION”で囲ま
れた部分がその内容となる。外部入力IX1と内部出力
MX2のANDをとった結果を外部出力QX4に出力す
る処理が記述されている。変換例802は、このST表
記と等価なC言語表記に変換した例であり、図4の説明
で述べたアクションを実行する文(図6に示したact
ion_S2など)に相当する。
【0026】図9は、トランジションの条件の表記例9
01と、この条件のC言語への変換例902を示す。表
記例901は条件をSTで表したものであり、”TRA
NSITION T1”と”END_TRANSITI
ON”で囲まれた部分がその内容となる。外部入力IX
2がON、かつ外部出力QX3がONという条件が記述
されている。変換例902は、このST表記を等価なC
言語表記に変換した例であり、図4の説明で述べたトラ
ンジションの条件式(図6に示したcondition
_T1など)に相当する。
【0027】図8及び図9では、ステップのアクション
及びトランジションの条件をSTで表記した例を示した
が、これらを他の言語、例えば、ILやLDなどで記述
した場合でも、同様にしてC言語表記に変換すれば良
い。
【0028】図10は、図6に示した未使用のスレッド
を探す関数(GetFreeThNo())の概略処理
を示すフローチャートである。仮のスレッド番号iを0
(処理1001)とし、スレッド番号iを現在のスレッ
ド数と比較し、iの方が小さければ(処理1002でY
ES)、スレッドiの現在のステップ番号を取得する。
ステップ番号が0であれば(処理1004でYES)、
iを未使用のスレッド番号とする(処理1005)。i
が現在のスレッド数と等しければ(処理1002でN
O)、現在のスレッド数を1増やし(処理1003)、
iを未使用のスレッド番号とする(処理1005)。ス
レッドiの現在のステップ番号が0でなければ(処理1
004でNO)、iに1を加算し(処理1006)、処
理1002に戻って、以上の処理を未使用のスレッド番
号が見つかるまで繰り返す。未使用のスレッド番号が見
つかれば、これを関数の戻り値として(処理100
5)、処理を終了する。
【0029】図11は、ステップ遷移関数ポインタテー
ブル生成手段103の概略処理を示すフローチャート、
図12は、その処理によって生成されたステップ遷移関
数ポインタテーブル106bの例である。ステップ遷移
関数ポインタテーブル106bは、ステップ遷移関数1
06aのそれぞれのエントリアドレスをステップ番号に
対応させて格納した1次元配列であるため、関数のポイ
ンタ配列を宣言し(処理1101)、仮のステップ番号
iを0とする(処理1102)。ステップiがSFC中
に存在するかどうかチェックし、存在すれば(処理11
03でYES)、配列要素の初期値として、ステップi
に対応したステップ遷移関数106aのエントリアドレ
ス、すなわちステップ遷移関数106aの関数名を代入
する(処理1104)。ステップiが存在しなければ
(処理1103でNO)、配列要素の初期値としてNU
LLを代入する(処理1105)。 iに1を加算し
(処理1106)、iが予め決められたステップ番号の
上限値以下であれば(処理1107でNO)、処理11
03に戻り、以上の処理を繰り返す。iがステップ番号
の上限値よりも大きければ(処理1107でYES)、
処理を終了する。図12は、ステップ遷移関数ポインタ
テーブル106bのC言語表記例であり、i番目の要素
としては、ステップiがSFC中に存在すれば、ステッ
プiに対応したステップ遷移関数106aの関数名(例
えば、図5に示したステップ1に対応したstep1)
が格納され、ステップiが存在しなければ、NULLが
格納される。
【0030】図13は、初期化関数生成手段104の概
略処理を示すフローチャート、図14は、その処理によ
って生成された初期化関数106cの例である。初期化
関数106cの最初の部分(関数の型、関数名、引数の
定義など)を生成し(処理1301)、全てのステップ
を不活性状態にする文を生成し(処理1302)、さら
に全てのスレッドの現在ステップ番号を0とする文を生
成する(処理1303)。以下、各スレッドの初期化を
行う。仮のスレッド番号iを0(処理1304)とし、
SFC構造情報101aの初期ステップテーブル301
から初期ステップの一つ(Snとする)を取得し(処理
1305)、ステップSnを活性状態にする文を生成
(処理1306)する。さらに、そのアクションを実行
する文を生成して(処理1307)、スレッドiの現在
のステップ番号をSnにする文を生成する(処理130
8)。iに1を加算し(処理1309)、初期ステップ
がSnの他にあるどうかをチェックし、他にあれば(処
理1310でYES)、処理1305に戻って、次のス
レッドiの初期化を同様に行う。初期ステップがSnの
他になければ(処理1310でNO)、現在のスレッド
数をi個とする文を生成し(処理1311)、関数の終
わりの部分を生成して(処理1312)、処理を終了す
る。図14は、初期化関数106c(図中、ScanI
nit())のC言語表記の例であり、初期ステップが
S1一つだけの場合、すなわちプログラム実行開始時の
スレッド数(図中、ThCnt)が1個の場合の処理を
示す。
【0031】図15は、メイン関数生成手段105によ
り生成されるメイン関数106dの例、図16は、図1
5に示したメイン関数106dの処理概略を示すフロー
チャートである。図15に示したメイン関数106d
(図中、ScanMain())は常に同じソースコー
ドとなり、メイン関数生成手段105では、予め用意さ
れたメイン関数106dのソースコードをコピーするだ
けである。メイン関数106dでは、仮のスレッド番号
iを0(処理1601)とし、iを現在のスレッド数を
比較し、iの方が小さければ(処理1602でYE
S)、スレッドiの現在のステップ番号(Snとする)
を取得し(処理1603)、ステップSnが活性状態か
どうかをチェックする。スレッドSnが活性状態であれ
ば(処理1604でYES)、ステップSnのステップ
遷移関数106aのエントリアドレスをステップ遷移関
数ポインタテーブル106bから取得し(処理160
5)、ステップSnのステップ遷移関数106aを呼び
出す(処理1606)。ステップSnが活性状態でなけ
れば(処理1604でNO)、スレッドiの現在のステ
ップ番号を0とし(処理1607)、iが現在のスレッ
ド番号の最大値(スレッド数から1減らした値)と等し
ければ(処理1608でYES)、現在のステップ数を
1減らす(処理1609)。iに1加算し(処理161
0)、処理1602に戻り、以上の処理を現在のスレッ
ド数と同じ回数だけ繰り返し、iが現在のスレッド数に
到達すれば(処理106でNO)、処理を終了する。メ
イン関数106dでは、SFCプログラム101の各ス
レッドの処理を一巡して終了するようになっており、こ
の関数を繰り返して実行することにより、SFCプログ
ラム101の処理を進めていく。一巡の処理をスキャン
処理、1回のスキャン処理を実行するのに要する時間を
スキャンタイムと呼ぶ。スキャンタイムが短ければ、制
御装置の応答性が高いことになる。生成された汎用言語
ソースコード106を、制御装置のハードウェアに応じ
た機械語変換手段107により機械語プログラム108
に変換すれば、プログラムの実行効率が良いため、スキ
ャンタイムは短くなり、制御装置の応答性も高くなる。
【0032】以上のように、SFCプログラム101を
汎用言語ソースコード106に変換し、さらにこれを機
械語プログラム108に変換することにより、SFCプ
ログラム101の内容を任意の実行環境において実行す
ることが可能となり、処理時間を短縮し、制御装置の応
答性を向上することが可能となる。
【0033】本実施例では、汎用言語ソースコード10
6を記述するためにC言語を用いた例を示したが、別の
汎用言語(例えば、C++など)を用いて同様の制御プ
ログラムの作成装置及びその方法を実現しても良い。ま
た、SFCプログラム101におけるステップ201の
アクション及びトランジション202の条件を、IEC
61131−3で定義された言語により記述した例を示
したが、これらを別の言語(例えば、C言語など)によ
り記述しても良い。さらに、制御プログラムをSFC以
外のグラフ手法、例えば、ペトリネットあるいは状態遷
移図を用いて記述した場合でも、上記説明と同様に行え
ば良い。
【0034】
【発明の効果】本発明によれば、SFCプログラムの内
容を実行するために必要な全ての情報及び処理を汎用言
語ソースコードに変換し、実行環境となる制御装置のハ
ードウェアに応じた機械語プログラムに変換することが
できるので、記述が複雑なSFCプログラムにおいて
も、その処理時間を短縮し、制御装置の応答性を向上す
ると共に、そのプログラムの実行が制御装置の機種等ハ
ードウェアに依存しないようにするができる。
【図面の簡単な説明】
【図1】本発明による一実施の形態である制御プログラ
ムの作成の処理手順を示すブロック図。
【図2】SFCプログラムの一例を示すシーケンシャル
・ファンクション・チャート図。
【図3】図2に示したSFCプログラムのSFC構造情
報をテーブルで示した図。
【図4】一実施の形態によるステップ遷移関数生成手段
のフローチャート。
【図5】一実施の形態により、図2に示したステップS
1に対応したステップ遷移関数を生成した例を示すC言
語による表記。
【図6】一実施の形態により、図2に示したステップS
3に対応したステップ遷移関数を生成した例を示すC言
語による表記。
【図7】一実施の形態により、図2に示したステップS
8に対応したステップ遷移関数を生成した例を示すC言
語による表記。
【図8】SFCプログラムの一例によるステップにおけ
るアクションのST表記と、そのC言語への変換例を示
す表記。
【図9】SFCプログラムの一例によるトランジション
の条件のST表記と、この条件のC言語への変換例を示
す表記。
【図10】一実施の形態により、図6に示した未使用の
スレッドを探す関数のフローチャート。
【図11】一実施の形態により、ステップ遷移関数ポイ
ンタテーブル生成手段のフローチャート。
【図12】一実施の形態によるステップ遷移関数ポイン
タテーブルのC言語による表記。
【図13】一実施の形態による初期化関数生成手段のフ
ローチャート。
【図14】一実施の形態による初期化関数を示すC言語
による表記。
【図15】一実施の形態によるメイン関数を示すC言語
による表記。
【図16】一実施の形態によるメイン関数のフローチャ
ート。
【符号の説明】 101…SFCプログラム、101a…SFC構造情
報、101b…ステップ処理情報、101c…トランジ
ション条件情報、106…汎用言語ソースコード、10
6a…ステップ遷移関数、106b…ステップ遷移関数
ポインタテーブル、106c…初期化関数、106d…
メイン関数、106e…ハードウェア依存情報、107
…機械語変換手段、108…機械語プログラム。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 松下 鶴正 千葉県習志野市東習志野七丁目1番1号 株式会社日立製作所産業機器グループ内 Fターム(参考) 5H220 BB12 CX02 DD01 DD07 JJ24 JJ57

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】制御装置に対する制御処理の実行順序が記
    述されたSFCプログラムを前記制御装置において実行
    可能なプログラムに変換するSFC変換プログラムであ
    って、各ステップとトランジションの接続関係を表す情
    報と、各ステップのアクションを示す情報と、各トラン
    ジションの条件を示す情報を有した前記SFCプログラ
    ムのソースコードから、それぞれのステップについて、
    その出力におけるトランジションの条件が成立している
    かどうかを判定し、前記条件が成立していればそのステ
    ップを不活性状態、次のステップを活性状態にし、次の
    ステップのアクションを実行させるステップ遷移関数を
    生成する機能と、活性状態にあるステップに対応した前
    記ステップ遷移関数を呼び出すメイン関数を生成する機
    能と、初期ステップを活性状態にし、そのアクションを
    実行させる初期化関数を生成する機能と、を実現させる
    ためのSFC変換プログラム。
  2. 【請求項2】請求項1に記載のものにおいて、各ステッ
    プとトランジションの接続関係を表す情報は、初期ステ
    ップの番号を格納したテーブルと、各ステップの出力と
    なるトランジションの番号を格納したテーブルと、各ト
    ランジションの入力となるステップと出力となるステッ
    プの番号を格納したトランジションテーブルを備えたこ
    とを特徴とするSFC変換プログラム。
  3. 【請求項3】請求項1に記載のものにおいて、前記メイ
    ン関数は前記SFCプログラムにおける並行プロセスを
    複数のスレッドとして管理し、前記スレッドのそれぞれ
    で活性状態にあるステップに対応した前記ステップ遷移
    関数を呼び出すことを特徴とするSFC変換プログラ
    ム。
  4. 【請求項4】請求項1に記載のものにおいて、前記ステ
    ップ遷移関数は前記SFCプログラムにおける並列分岐
    の際にスレッドを増加させ、前記メイン関数は前記SF
    Cプログラムにおける並列結合の際にスレッドを減少さ
    せることを特徴とするSFC変換プログラム。
  5. 【請求項5】制御装置に対する制御処理の実行順序が記
    述された制御プログラムの作成方法であって、各ステッ
    プとトランジションの接続関係を表す情報と、各ステッ
    プのアクションを示す情報と、各トランジションの情報
    を有したSFCプログラムのソースコードを作成し、作
    成されたソースコードからそれぞれのステップについ
    て、その出力におけるトランジションの条件が成立して
    いるかどうかを判定し、前記条件が成立していればその
    ステップを不活性状態、次のステップを活性状態にし、
    次のステップのアクションを実行させるステップ遷移関
    数を生成し、初期ステップを活性状態にし、それ以降、
    活性状態にあるステップに対応した前記ステップ遷移関
    数を順次前記制御装置において実行させるプログラムに
    変換することを特徴とする制御プログラムの作成方法。
  6. 【請求項6】請求項5に記載のものにおいて、各ステッ
    プとトランジションの接続関係を表す情報は、初期ステ
    ップの番号を格納したテーブルと、各ステップの出力と
    なるトランジションの番号を格納したテーブルと、各ト
    ランジションの入力となるステップと出力となるステッ
    プの番号を格納したトランジションテーブルと、活性状
    態にあるステップに対応した前記ステップ遷移関数を呼
    び出すメイン関数と、を前記制御装置において実行させ
    るプログラムに変換することを特徴とする制御プログラ
    ムの作成方法。
  7. 【請求項7】請求項5に記載のものにおいて、前記ステ
    ップ遷移関数はC言語で記述され、前記実行させるプロ
    グラムは前記制御装置に搭載されるマイクロプロセッサ
    に対応したCクロスコンパイラで機械語に変換されるこ
    とを特徴とする制御プログラムの作成方法。
  8. 【請求項8】各ステップとトランジションの接続関係を
    表す情報と、各ステップのアクションを示す情報と、各
    トランジションの条件を示す情報を有したSFCプログ
    ラムを実行するプログラマブルロジックコントローラに
    おいて、それぞれのステップについて、その出力におけ
    るトランジションの条件が成立しているかどうかを判定
    し、前記条件が成立していればそのステップを不活性状
    態、次のステップを活性状態にし、次のステップのアク
    ションを実行させるステップ遷移関数に基づいて、制御
    処理されることを特徴とするプログラマブルロジックコ
    ントローラ。
JP2001233015A 2001-08-01 2001-08-01 Sfc変換プログラム、制御プログラムの作成方法及びプログラマブルロジックコントローラ Pending JP2003044106A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001233015A JP2003044106A (ja) 2001-08-01 2001-08-01 Sfc変換プログラム、制御プログラムの作成方法及びプログラマブルロジックコントローラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001233015A JP2003044106A (ja) 2001-08-01 2001-08-01 Sfc変換プログラム、制御プログラムの作成方法及びプログラマブルロジックコントローラ

Publications (1)

Publication Number Publication Date
JP2003044106A true JP2003044106A (ja) 2003-02-14

Family

ID=19064842

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001233015A Pending JP2003044106A (ja) 2001-08-01 2001-08-01 Sfc変換プログラム、制御プログラムの作成方法及びプログラマブルロジックコントローラ

Country Status (1)

Country Link
JP (1) JP2003044106A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007280379A (ja) * 2006-03-15 2007-10-25 Omron Corp プログラマブルコントローラのプログラムモニタ装置
JP2010250819A (ja) * 2009-04-14 2010-11-04 General Electric Co <Ge> シーケンシャル・ファンクション・チャートを制御システムにおける機能ブロックとして実行するための方法
JP5025833B1 (ja) * 2011-09-16 2012-09-12 三菱電機株式会社 シーケンスプログラム作成装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007280379A (ja) * 2006-03-15 2007-10-25 Omron Corp プログラマブルコントローラのプログラムモニタ装置
JP4662077B2 (ja) * 2006-03-15 2011-03-30 オムロン株式会社 プログラマブルコントローラのプログラムモニタ装置
JP2010250819A (ja) * 2009-04-14 2010-11-04 General Electric Co <Ge> シーケンシャル・ファンクション・チャートを制御システムにおける機能ブロックとして実行するための方法
JP5025833B1 (ja) * 2011-09-16 2012-09-12 三菱電機株式会社 シーケンスプログラム作成装置
CN103119525A (zh) * 2011-09-16 2013-05-22 三菱电机株式会社 顺序程序生成装置

Similar Documents

Publication Publication Date Title
JP2666847B2 (ja) 異種言語間連絡方式
US5291427A (en) Method for assisting the development of a set of communicating automata
JP5147240B2 (ja) リバーシブルなデザイン・ツリーの変換のための方法とシステム
CN115220709A (zh) 一种vue页面编辑方法、系统以及计算机可读存储介质
JP2003044106A (ja) Sfc変換プログラム、制御プログラムの作成方法及びプログラマブルロジックコントローラ
JP2002268896A (ja) 制御プログラム作成方法とその装置
JP2526686B2 (ja) プログラマブルコントロ―ラの制御プログラムにおけるプログラム内容の修正方法
CN111596923B (zh) Haxe静态链接库构建方法、装置和电子设备
CN117280319A (zh) 用于适应在自动化系统中使用的能重新配置的运行时系统的系统和方法
JP4443436B2 (ja) 制御システムおよび制御方法
JP4877257B2 (ja) プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
CN113157352B (zh) 一种可编排的前端控制器实现方法、装置、设备及介质
JP5966801B2 (ja) 言語変換装置、プログラム
JP2014071862A (ja) プログラマブルコントローラの周辺装置
KR100423742B1 (ko) 순차기능챠트에 의한 전용 제어 시스템
JP2002230062A (ja) 設計支援装置及び設計支援方法並びにシステム設計支援装置
CN110262802A (zh) 一种取出机Sequence数据的新型执行方法
JP2002073120A (ja) プログラマブルコントローラのプログラミング装置とその方法
JP2003076558A (ja) プログラム実行制御方法及びプログラム実行制御プログラム
Ross et al. Verbal and graphical language for the AED system: A progress report
JP3327640B2 (ja) 命令コード選択装置
JP2005250593A (ja) オブジェクト情報生成装置
CN118466972A (zh) 将plc编程语言中的梯形图转化为结构化文本的方法及系统
JPH11167409A (ja) 並列実行言語で動作するプログラマブルコントローラ
JPH1185518A (ja) 制御装置