(57)【要約】【課題】ＳＦＣプログラムを停止またはイニシャルステップから再実行させることなく変更するプログラマブルコントローラを得ること。【解決手段】ステップと移行条件を組み合わせてなるブロックを１〜複数有するＳＦＣプログラムを実行するプログラマブルコントローラ２００において、実行するＳＦＣプログラムのステップと移行条件を格納するワークメモリ部２５と、ＳＦＣプログラムを変更する際、変更前のＳＦＣプログラムおよび変更後のＳＦＣプログラムに関する変更情報に基づいて、ワークメモリ部２５のステップと移行条件を変更させるＳＦＣプログラム制御実行部２２と、ＳＦＣプログラム制御実行部２２によって変更されたワークメモリ部２５のステップと移行条件に基づいて、変更後のＳＦＣプログラムを実行するＳＦＣプログラム制御実行部２２およびシーケンスプログラム制御実行部２３と、を備える。【選択図】        図１
2005309916.tif 000002
【特許請求の範囲】
【請求項１】
動作単位であるステップと該ステップ間の移行条件とからなる動作処理要素を組み合わせてなる動作処理ブロックを１〜複数有するＳＦＣプログラムを実行するプログラマブルコントローラにおいて、
実行するＳＦＣプログラムの前記動作処理要素を格納する実行情報格納部と、
ＳＦＣプログラムを変更する際、変更前のＳＦＣプログラムおよび変更後のＳＦＣプログラムに関する変更情報に基づいて、前記実行情報格納部の前記動作処理要素を変更させるプログラム変更部と、
前記プログラム変更部によって変更された前記実行情報格納部の動作処理要素に基づいて、変更後のＳＦＣプログラムを実行するプログラム実行部と、
を備えることを特徴とするプログラマブルコントローラ。
【請求項２】
前記ＳＦＣプログラムの変更が前記変更前のＳＦＣプログラムにおける前記動作処理ブロックと同一の動作処理ブロック内での動作処理要素の削除である場合、
前記変更情報は、プログラム実行部によって変更後に実行されなくなる前記削除された動作処理要素と、変更後にプログラム実行部に実行させる前記削除された動作処理要素の次の動作処理要素とに関する情報を含むことを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記ＳＦＣプログラムの変更が前記変更前のＳＦＣプログラムにおける前記動作処理ブロックと同一の動作処理ブロック内での動作処理要素に対して並列的な動作処理要素の追加である場合、
前記変更情報は、プログラム実行部によって変更後も実行が継続される前記変更前のＳＦＣプログラムの動作処理要素と、変更後にプログラム実行部に実行させる前記追加された並列的な動作処理要素とに関する情報を含むことを特徴とする請求項１または２に記載のプログラマブルコントローラ。
【請求項４】
前記ＳＦＣプログラムの変更が前記変更前のＳＦＣプログラムにおける動作処理ブロックの削除である場合、
前記変更情報は、プログラム実行部によって変更後に実行されなくなる前記削除された動作処理ブロックに関する情報を含むことを特徴とする請求項１〜３のいずれか１つに記載のプログラマブルコントローラ。
【請求項５】
動作単位であるステップと該ステップ間の移行条件とからなる動作処理要素を組み合わせてなる動作処理ブロックを１〜複数有するＳＦＣプログラムを作成するプログラミング装置において、
接続されたプログラマブルコントローラのＳＦＣプログラムを変更するプログラム変更部と、
前記プログラム変更部がＳＦＣプログラムを変更する際、変更前のＳＦＣプログラムおよび変更後のＳＦＣプログラムに関する変更情報を作成する変更情報作成部と、
を備えることを特徴とするプログラミング装置。
【請求項６】
前記変更情報は、前記ＳＦＣプログラムの変更内容、前記変更前のＳＦＣプログラムの動作処理ブロックおよび前記変更後ＳＦＣプログラムの動作処理ブロックに関する情報を含むことを特徴とする請求項５に記載のプログラミング装置。
【請求項７】
前記変更情報は、前記変更前のＳＦＣプログラムの動作処理要素および前記変更後のＳＦＣプログラムの動作処理要素に関する情報をさらに含むことを特徴とする請求項５または６に記載のプログラミング装置。
【請求項８】
前記プログラム変更部が変更したＳＦＣプログラムおよび前記変更情報作成部が作成した変更情報を前記プログラマブルコントローラに送信する送信部を備えることを特徴とする請求項５〜７のいずれか１つに記載のプログラミング装置。
【請求項９】
動作単位であるステップと該ステップ間の移行条件とからなる動作要素を組み合わせてなるＳＦＣプログラムを実行するプログラマブルコントローラと、前記ＳＦＣプログラムを作成するプログラミング装置とからなるプログラム変更システムにおいて、
前記プログラミング装置は、
前記プログラマブルコントローラのＳＦＣプログラムを変更するプログラム変更部と、
前記プログラム変更部がＳＦＣプログラムを変更する際、変更前のＳＦＣプログラムおよび変更後のＳＦＣプログラムに関する情報を作成する変更情報作成部と、
前記プログラム変更部が変更したＳＦＣプログラムおよび前記変更情報作成部が作成した変更情報を前記プログラマブルコントローラに送信する送信部と、
を備え、
前記プログラマブルコントローラは、
前記送信部からのＳＦＣプログラムおよび変更情報を受信する受信部と、
実行するＳＦＣプログラムの前記動作要素を格納する実行情報格納部と、
前記変更情報に基づいて前記実行情報格納部の前記動作要素を変更させるプログラム変更部と、
前記プログラム変更部によって変更された前記実行情報格納部の動作処理要素に基づいて、変更後のＳＦＣプログラムを実行するプログラム実行部と、
を備えることを特徴とするプログラム変更システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＦＣプログラムを変更するプログラマブルコントローラ、プログラミング装置およびプログラム変更システムに関するものである。
【背景技術】
【０００２】
プログラマブルコントローラで実行されるプログラムの記述言語として、ＳＦＣ（Sequencial Function Chart）プログラムがある。ＳＦＣプログラムは、プログラマブルコントローラが制御する装置の一連の動作における各動作単位を１つの「ステップ」として表し、各ステップを「移行条件」によって連結することにより、各動作の実行順序をフロー形式で記述する。ＳＦＣプログラムでは複数のブロックを構成することができ、各ブロックはブロックの開始ステップ（イニシャルステップ）から始まり、各種動作パターンをもったステップ及び移行条件で構成されている。そして、各ステップおよび移行条件は、リスト記述やラダー回路によって記述されている。
【０００３】
プログラマブルコントローラは、メモリエリアに格納されているＳＦＣプログラムを読み出してＳＦＣプログラムの若番ブロックから順に実行していき、ブロックの開始ステップから終了ステップまでを移行条件の状態に従い順に実行している。プログラマブルコントローラは、ブロック内のイニシャルステップを実行後、次のステップへ移行するための条件が成立しているか否かを判断しながら各ステップの処理を行っている。そして、次のステップへ移行するための条件が成立している場合は、次のステップの処理を行う。例えば、１つのブロックの処理を行う場合、次のステップへ移行するための条件が成立していない場合は、このブロックの処理を終了する。そして、終了したブロックのイニシャルステップの次の若番ブロックから順にＳＦＣプログラムを実行する処理を繰り返す。これらの処理は運転モードの変更やプログラミングツールよるＳＦＣプログラムの書き込みが行われるまで繰り返し行われる。
【０００４】
ところで、プログラマブルコントローラのＳＦＣプログラムの変更はプログラマブルコントローラの周辺装置（プログラミングツール）によって行われている。そして、プログラミングツールによって変更されたＳＦＣプログラムはプログラマブルコントローラのメモリエリアに書き込まれ、プログラマブルコントローラは変更後のＳＦＣプログラムを実行していた。
【０００５】
特許文献１に記載の自動プログラミング装置は、表示画面上に区切られた１つのブロック内に複数の図形要素を表示できるシーケンシャル・ファンクション・チャート方式によるシーケンス・プログラムの編集方式において、ブロック内の１つの図形要素を指定して削除指令を出力する削除指令手段と、削除指令によって指定された図形要素を削除する削除手段と、ブロックを指定して図形要素の追加指令を出力する追加指令手段と、追加指令を受けると指定されたブロック内に図形要素を追加して表示する追加表示手段と、を備えている。そして、削除手段は削除指令によって指定された図形要素を削除し、追加表示手段は追加指令を受けると指定されたブロック内に図形要素を追加して表示している。
【０００６】
【特許文献１】特開平７−２８７６１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来の技術によれば、プログラマブルコントローラが実行するＳＦＣプログラムがプログラミングツールによって変更（置き換え）された場合、プログラマブルコントローラはＳＦＣプログラムの変更によって削除等されたステップを次のスキャンで実行することができない。そして、削除されたステップに対応する変更後のステップをこの時点では判断できないため、ＳＦＣプログラムの継続実行が不可能となる。このため、プログラマブルコントローラは最若番ブロックのイニシャルステップからのＳＦＣプログラムの実行をしなければならないといった問題があった。
【０００８】
本発明は、上記に鑑みてなされたものであって、ＳＦＣプログラムを停止またはイニシャルステップから再実行させることなく変更することができるプログラマブルコントローラ、プログラミング装置およびプログラム変更システムを得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、動作単位であるステップと該ステップ間の移行条件とからなる動作処理要素を組み合わせてなる動作処理ブロックを１〜複数有するＳＦＣプログラムを実行するプログラマブルコントローラにおいて、実行するＳＦＣプログラムの前記動作処理要素を格納する実行情報格納部と、ＳＦＣプログラムを変更する際、変更前のＳＦＣプログラムおよび変更後のＳＦＣプログラムに関する変更情報に基づいて、前記実行情報格納部の前記動作処理要素を変更させるプログラム変更部と、前記プログラム変更部によって変更された前記実行情報格納部の動作処理要素に基づいて、変更後のＳＦＣプログラムを実行するプログラム実行部と、を備えることを特徴とする。
【００１０】
この発明によれば、変更前のＳＦＣプログラムと変更後のＳＦＣプログラムに関する情報に基づいて変更後のＳＦＣプログラムを実行させるので、ＳＦＣプログラムを停止させることなく、またイニシャルステップから再実行させることなく変更後のＳＦＣプログラムを実行させることができる。
【発明の効果】
【００１１】
この発明によれば、変更前のＳＦＣプログラムと変更後のＳＦＣプログラムに関する情報に基づいて変更後のＳＦＣプログラムを実行させるので、ＳＦＣプログラムを停止させることなく、またイニシャルステップから再実行させることなく変更後のＳＦＣプログラムを実行させることができる。したがって、ＳＦＣプログラムを変更する際の動作効率が向上するという効果を奏する。
【発明を実施するための最良の形態】
【００１２】
以下に、本発明にかかるプログラム変更システムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１３】
実施の形態
図１は、本発明の実施の形態にかかるプログラム変更システムの構成を示すブロック図である。プログラム変更システムは、実行中のＳＦＣ（Sequencial Function Chart）プログラムを変更するシステムであり、プログラミング装置１００、プログラマブルコントローラ（ＰＬＣ（Programmable Logic Controller））２００からなる。
【００１４】
プログラミング装置１００は、ＳＦＣプログラムの作成や変更（編集）を行うプログラマブルコントローラ２００の周辺装置（プログラミングツール）であり、入出力部１１、ＳＦＣプログラム作成部（プログラム変更部）１２、ＳＦＣプログラム情報作成部（変更情報作成部）１３、通信Ｉ／Ｆ部１４、記憶部１５からなる。
【００１５】
ＳＦＣ（Sequencial Function Chart）プログラムは、プログラマブルコントローラ２００で実行されるプログラムの記述言語であり、プログラマブルコントローラ２００が制御する装置の一連の動作における各動作単位を１つの「ステップ」（動作処理要素）として表す。ＳＦＣプログラムは、各ステップを「移行条件」（動作処理要素）によって連結することにより、各動作の実行順序をフロー形式で記述する。ＳＦＣプログラムでは複数のブロック（動作処理ブロック）を構成することができ、各ブロックはブロックの開始ステップ（イニシャルステップ）から始まり、各種動作パターンをもったステップ及び移行条件で構成されている。そして、各ステップおよび移行条件は、リスト記述やラダー回路によって記述される。
【００１６】
入出力部１１は、ＳＦＣプログラムの作成や変更をする際の指示情報を入力するとともに、作成や変更されたＳＦＣプログラムを出力する。入出力部１１は、例えば液晶パネル、マウス、キーボード等を備えて構成されている。ＳＦＣプログラムの作成や変更をする際の指示情報はマウスやキーボードから入力し、作成や変更されたＳＦＣプログラムや注意メッセージは液晶パネル等に表示することによって出力する。
【００１７】
ＳＦＣプログラム作成部１２は、入出力部１１からの指示情報に基づいてＳＦＣプログラム等の作成や変更を行う。ＳＦＣプログラム作成部１２は、ＳＦＣプログラムの変更を行う際、変更内容に応じて所定の注意メッセージを作成する。
【００１８】
ＳＦＣプログラム情報作成部１３は、ＳＦＣプログラム内の変更前後のブロックやステップに関する情報（後述するプログラム変更情報４１）を作成する。ＳＦＣプログラム情報作成部１３は、プログラミング装置１００の使用者によってＳＦＣプログラムを変更する際、記憶部１５を使用してプログラム変更情報を作成する。
【００１９】
通信Ｉ／Ｆ部（送信部）１４は、プログラマブルコントローラ２００と接続されてプログラマブルコントローラ２００とＳＦＣプログラム等の情報の送受信（通信）を行うインタフェースである。記憶部１５は、ＳＦＣプログラムの作成や変更を行う際に使用するメモリ（メモリエリア）であり、ＳＦＣプログラム等を記憶する。
【００２０】
プログラマブルコントローラ２００は、ＳＦＣプログラムを実行するコントローラであり、通信Ｉ／Ｆ部（受信部）２１、ＳＦＣプログラム制御実行部（プログラム変更部、プログラム実行部）２２、シーケンスプログラム制御実行部２３、プログラム記憶部２４、ワークメモリ部（実行情報格納部）２５からなる。通信Ｉ／Ｆ部２１は、プログラミング装置１００の通信Ｉ／Ｆ部１４と接続されてＳＦＣプログラム等の情報の送受信を行う。
【００２１】
ＳＦＣプログラム制御実行部２２は、ＳＦＣプログラムの制御及び実行を行う。ＳＦＣプログラム制御実行部２２は、プログラム記憶部２４に格納されているＳＦＣプログラムを読み出してＳＦＣプログラムの若番ブロックから順に実行していき、ブロックのイニシャルステップからエンドステップまでを移行条件の状態に従い順に実行する。ＳＦＣプログラム制御実行部２２は、例えば実行中のＳＦＣプログラムが変更されるとワークメモリ部２５に格納されているプログラム変更情報に基づいて削除されたステップの実行を終了し、次のステップを実行する。また、ＳＦＣプログラム制御実行部２２は、ＳＦＣプログラムの変更が行われた際に、ＳＦＣプログラムの変更に関する情報を解析し、変更前のＳＦＣプログラムの実行から変更後のＳＦＣプログラムの実行に切り替える。
【００２２】
シーケンスプログラム制御実行部２３は、ＳＦＣプログラム内に記述されたステップや移行条件のシーケンスプログラムの制御や実行を行う。プログラム記憶部２４は、プログラミング装置１００から送られるＳＦＣプログラムを格納する。ワークメモリ部２５は、ＳＦＣプログラムを実行する際に使用するワークエリアである。ワークメモリ部２５は、プログラマブルコントローラ２００で実行中のＳＦＣプログラムのプログラム変更情報４１やＳＦＣプログラム制御実行部２２が実行中のＳＦＣに関する情報（後述する実行中情報６１）を記憶する。
【００２３】
つぎに、図１に示した各構成要素の動作を詳細に説明する。図２は、ＳＦＣプログラムの変更の処理手順を示すフローチャートである。プログラム変更システムの使用者（ユーザ）は、入出力部１１からＳＦＣプログラムを作成するための指示情報を入力するとＳＦＣプログラム作成部１２は記憶部１５のメモリエリアを使用してＳＦＣプログラムを作成する。ＳＦＣプログラム作成部１２によって作成されたＳＦＣプログラム（変更前のＳＦＣプログラム）は、通信Ｉ／Ｆ部１４と通信Ｉ／Ｆ部２１を介してプログラマブルコントローラ２００のプログラム記憶部２４に書き込まれる。
【００２４】
図３は、変更前のＳＦＣプログラムの一例を示す図である。図３のプログラムはブロック０の処理手順を示しており、ブロック０は、開始ステップである「ブロック０のイニシャルステップＳＴ０」、次のステップに移行するための移行条件「ブロック０の移行条件０」、「ブロック０のステップＳＴ１」、次のステップに移行するための移行条件「ブロック０の移行条件１」、「ブロック０のステップＳＴ２」、終了ステップである「ブロック０のエンドステップ」からなる。
【００２５】
ここでは、「ブロック０の移行条件０」の移行条件が成立しており、「ブロック０の移行条件１」の移行条件が成立していない場合を示している。このため、「ブロック０のステップＳＴ１」が現在実行中のステップとなる。プログラマブルコントローラ２００が起動していなければ（ステップＳ１００、停止）、このままＳＦＣプログラムの実行を行わず処理が終了される。
【００２６】
ユーザがプログラマブルコントローラ２００の運転モードを「運転（実行）」にするよう図示しない入力部から指示情報を入力すると、プログラマブルコントローラ２００は起動する（ステップＳ１００、運転）。プログラマブルコントローラ２００が起動すると、ＳＦＣプログラム制御実行部２２は、ＳＦＣプログラムの最若番ブロックの実行準備（初期実行準備）としてワークメモリ部２５の更新や処理を行うステップ番号の算出等を行う（ステップＳ１１０）。
【００２７】
ＳＦＣプログラム制御実行部２２はプログラム記憶部２４に格納されている変更前のＳＦＣプログラムを実行し、シーケンスプログラム制御実行部２３はＳＦＣプログラムのステップおよび移行条件内のリスト記述やラダー回路を実行する（ステップＳ１２０）。このとき、ＳＦＣプログラム制御実行部２２、シーケンスプログラム制御実行部２３はＳＦＣプログラムの若番ブロックから順に実行していき、イニシャルステップからエンドステップまでを移行条件の状態に従い順に実行する。ワークメモリ部２５は、ＳＦＣプログラム制御実行部２２が実行するＳＦＣプログラムに関する情報を実行中情報６１として格納しておく。
【００２８】
図４は、実行中情報の構成を示す図である。実行中情報６１は、ワークメモリ部２５の所定のエリアに格納されている。実行中情報６１には、プログラマブルコントローラ２００が実行する（実行中の）ＳＦＣプログラムに関する情報として「ブロック情報」、「ステップ情報」、「ステップ総数」が含まれる。
【００２９】
「ブロック情報」のエリアには、プログラマブルコントローラ２００が実行するステップが存在するブロックナンバが格納される。「ステップ情報」のエリアには、プログラマブルコントローラ２００が実行するステップのステップナンバが格納される。「ステップ総数」のエリアには、プログラマブルコントローラ２００が実行するステップの総数が格納される。「ステップ総数」の値が１つ増加するごとに「ブロック情報」のエリアと「ステップ情報」のエリアを１つずつ増加させる。例えば、ＳＦＣプログラム制御実行部２２が図３に示す変更前のＳＦＣプログラムを実行する場合、１スキャン目（１サイクル処理目）に「ブロック０のイニシャルステップＳＴ０」を実行する。このとき、ワークメモリ部２５には、実行中情報６１として「ブロック情報」のエリアにブロックナンバとして「ブロック０」が格納され、「ステップ情報」のエリアにステップナンバとして「イニシャルステップＳＴ０」が格納され、「ステップ総数」のエリアにステップの総数「１」が格納されている。
【００３０】
ＳＦＣプログラム制御実行部２２が「ブロック０のイニシャルステップＳＴ０」を実行した後、ＳＦＣプログラム制御実行部２２は「ブロック０の移行条件０」の実行条件が成立しているか否かを判断する。ここでは、「ブロック０の移行条件０」の実行条件が成立しているため、ＳＦＣプログラム制御実行部２２は、「ブロック０のステップＳＴ１」を実行する準備としてワークメモリ部２５の更新や次に実行処理を行うステップ番号の算出等を行う。ワークメモリ部２５には、この次に実行する「ブロック０のステップＳＴ１」に関する情報が格納される。
【００３１】
実行するステップの総数は変化しないため、実行中情報６１の「ステップ総数」と「ブロック情報」の変更は行わず、「ステップ情報」のエリアに次に実行する「ブロック０のステップＳＴ１」を格納する。
【００３２】
ＳＦＣプログラム制御実行部２２が「ブロック０のステップＳＴ１」を実行した後、ＳＦＣプログラム制御実行部２２は「ブロック０の移行条件１」の実行条件が成立しているか否かを判断する。ここでは、「ブロック０の移行条件１」の実行条件が成立していないため、ＳＦＣプログラム制御実行部２２は、「ブロック０のステップＳＴ２」を実行せず「ブロック０」の処理を終了する。
【００３３】
現在実行中のＳＦＣプログラムとして他のブロックが存在する場合（「ブロック０」が最終ブロックでない場合）（ステップＳ１３０、未終了）、他のブロックの実行を行う（ステップＳ１２０）。ここでは、現在実行中のＳＦＣプログラムは「ブロック０」のみであるため、ＳＦＣプログラムの１サイクル処理を終了する（ステップＳ１３０、終了）。
【００３４】
プログラマブルコントローラ２００がユーザによって停止させられた場合のように、プログラマブルコントローラ２００が起動していなければ（ステップＳ１４０、停止）、このままＳＦＣプログラムの実行を行わず処理が終了される。ここでは、プログラマブルコントローラ２００は起動しているので（ステップＳ１４０、運転）、プログラム記憶部２４は、プログラム記憶部２４へＳＦＣプログラムの新たな書込みが行われているかを確認する（ステップＳ１５０）。
【００３５】
プログラム記憶部２４へＳＦＣプログラムの新たな書込みが行われていない場合（ステップＳ１５０、Ｎｏ）、ワークメモリ部２５の実行中情報６１に格納している情報から２スキャン目に実行する「ブロック０のステップＳＴ１」の実行準備を行う（ステップＳ１６０）。そして、ＳＦＣプログラム制御実行部２２が「ブロック０のステップＳＴ１」を実行した後、ＳＦＣプログラム制御実行部２２は「ブロック０の移行条件１」の実行条件が成立しているか否かを判断する。「ブロック０の移行条件１」の実行条件が成立していないため、ＳＦＣプログラム制御実行部２２は、「ブロック０のステップＳＴ２」を実行することなく「ブロック０」の処理を終了し、ＳＦＣプログラムの１サイクル処理を終了する（ステップＳ１２０、Ｓ１３０）。
【００３６】
ＳＦＣプログラム制御実行部２２は、プログラマブルコントローラ２００の運転モードの変更やプログラム記憶部２４へＳＦＣプログラムの書込みが行われるまで、「ブロック０のステップＳＴ１」の実行を繰り返す（ステップＳ１２０〜Ｓ１６０）。
【００３７】
ここで、ＳＦＣプログラムの変更について説明する。変更後のＳＦＣプログラムは、プログラミング装置１００によって作成される。ＳＦＣプログラムを変更する際、ユーザは入出力部１１からプログラマブルコントローラ２００で現在実行中（変更前）のＳＦＣプログラムを取得するよう指示情報を入力する。
【００３８】
通信Ｉ／Ｆ部１４は、プログラマブルコントローラ２００から現在実行中のＳＦＣプログラムを読み出し、このＳＦＣプログラムを記憶部１５に記憶させる。ユーザが、入出力部１１からＳＦＣプログラムを変更（ステップや移行条件の追加や削除）するための指示情報を入力するとＳＦＣプログラム作成部１２は記憶部１５のメモリエリアを使用してＳＦＣプログラムを作成（変更）する。
【００３９】
図５は、変更後のＳＦＣプログラムの一例を示す図である。図５に示すＳＦＣプログラムは、図３に示したＳＦＣプログラムを変更したものである。ここでは、図３に示したＳＦＣプログラムの「ブロック０のステップＳＴ１」と「ブロック０の移行条件１」を削除した場合（後述する「変更」）を示している。
【００４０】
ＳＦＣプログラム作成部１２によって「ブロック０のステップＳＴ１」と「ブロック０の移行条件１」を削除する際、入出力部１１は注意情報３１を表示してユーザに注意を促す。
【００４１】
図６は、注意情報の一例を示す図である。注意情報３１は、ＳＦＣプログラムの変更処理を行う際に入出力部１１に表示される情報（メッセージ）であり、ＳＦＣプログラム情報作成部１３で作成される。注意情報３１としては、プログラマブルコントローラ２００で実行中のステップが削除されるとこのステップの実行を終了し、次のステップが実行になる旨を表示する。ここでは、プログラマブルコントローラ２００で現在実行中ステップが「ブロック０のステップＳＴ１」である場合を考慮し、例えば「ステップＳＴ１、移行条件１を削除します。実行中のステップが削除された場合、該当ステップの実行を終了し、次のステップが実行となります。」といったメッセージを表示する。
【００４２】
このようにしてＳＦＣプログラム作成部１２で作成された変更後のＳＦＣプログラムは「ブロック０のイニシャルステップＳＴ０」、次のステップに移行するための移行条件「ブロック０の移行条件０」、「ブロック０のステップＳＴ２」、次のステップに移行するための移行条件「ブロック０の移行条件２」、「ブロック０のエンドステップ」からなる。ここでは、「ブロック０の移行条件０」は次のステップに移行するための条件が成立しており、「ブロック０の移行条件２」は次のステップに移行するための条件が成立していないこととする。
【００４３】
また、ＳＦＣプログラム情報作成部１３はＳＦＣプログラムの変更に関する情報としてプログラム変更情報４１を作成する。プログラム変更情報４１は、プログラマブルコントローラ２００に送られる情報であり、プログラマブルコントローラ２００はプログラム変更情報４１に基づいて実行するＳＦＣプログラムの変更を行う。例えば、「ブロック０のステップＳＴ１」を削除した場合、「ブロック０のステップＳＴ１」の次のステップが「ブロック０のステップＳＴ２」であるため、ＳＦＣプログラムの変更後はＳＦＣプログラム制御実行部２２に「ブロック０のステップＳＴ２」の処理を実行させる。
【００４４】
図７は、プログラム変更情報の一例を示す図である。プログラム変更情報４１は、ＳＦＣプログラムの変更に関する情報として「変更前ブロック情報」、「変更前ステップ情報」、「変更後ブロック情報」、「変更後ステップ情報」、「変更情報登録数」、「変更情報」を含んでいる。「変更前ブロック情報」と「変更前ステップ情報」がＳＦＣプログラムの変更前情報であり、「変更後ブロック情報」と「変更後ステップ情報」がＳＦＣプログラムの変更後情報である。
【００４５】
変更前情報にはＳＦＣプログラムの変更前のブロックとステップに関する情報が格納され、変更後情報にはＳＦＣプログラムの変更後のブロックとステップに関する情報が格納される。
【００４６】
「変更前ブロック情報」のエリアには、ＳＦＣプログラムの変更前のブロックナンバが格納される。ここでは、ＳＦＣプログラムのブロック０を変更しているので「変更前ブロック情報」のエリアにはブロックナンバとして「ブロック０」が格納される。
【００４７】
「変更前ステップ情報」のエリアには、ＳＦＣプログラムの変更前のステップナンバが格納される。ここでは、ＳＦＣプログラムのブロック０のステップＳＴ１を変更しているので、「変更前ステップ情報」のエリアにはステップナンバとして「ステップＳＴ１」が格納される。
【００４８】
「変更後ブロック情報」のエリアには、ＳＦＣプログラムの変更後のブロックナンバが格納される。ここでは、ＳＦＣプログラムのブロック０を変更したので、ＳＦＣプログラム作成部１２によって「変更後ブロック情報」のエリアにはブロックナンバとして「ブロック０」が格納される。
【００４９】
「変更後ステップ情報」のエリアには、ＳＦＣプログラムの変更後のステップナンバが格納される。ここでは、ＳＦＣプログラムのブロック０のステップＳＴ２がＳＦＣプログラムの変更前のブロック０のステップＳＴ１に相当するので、「変更後ステップ情報」のエリアにはステップナンバとして「ステップＳＴ２」が格納される。
【００５０】
「変更情報」のエリアには、実行中情報６１の変更の態様を識別するための情報として「変更」、「追加」、「削除」のいずれかの情報が格納される。「変更」は、ＳＦＣプログラムにおいて同一ブロック内におけるステップや移行条件が変更されて実行中情報６１の内容を新たな内容に変更させることを示す。「追加」は、ＳＦＣプログラムにおいて同一ブロック内における新たなステップが追加されて実行中情報６１の内容に新たな内容を追加させることを示す。「削除」は、ＳＦＣプログラムにおいてブロックが削除されて実行中情報６１の内容から削除されたブロックの情報を削除させることを示す。
【００５１】
ここでは、ブロック０においてステップＳＴ１と移行条件０を削除する変更であり、変更前のＳＦＣプログラムにおいてブロック０のステップＳＴ１が実行中であったならば、実行中情報６１の内容を新たな内容に変更させる必要があるため、ＳＦＣプログラム制御実行部２２は「変更情報」のエリアに実行中情報６１の変更の態様として「変更」を格納させる。
【００５２】
「変更情報登録数」のエリアには、１つの「変更前ブロック情報」、１つの「変更前ステップ情報」、１つの「変更後ブロック情報」、１つの「変更後ステップ情報」、１つの「変更情報登録数」からなる一組の情報を１つの情報とした場合の情報数が格納される。ここでは、「ブロック０のステップＳＴ１」が削除され、「ブロック０のステップＳＴ１」が実行中であった場合に次のステップ「ブロック０のステップＳＴ２」を実行中とさせる変更が１つであるため、ＳＦＣプログラム作成部１２は「変更情報登録数」のエリアに「１」を格納させる。
【００５３】
ユーザが、変更後のＳＦＣプログラムとプログラム変更情報４１をプログラマブルコントローラ２００のワークメモリ部２５に送信するよう入出力部１１に指示情報を入力すると、通信Ｉ／Ｆ部１４から通信Ｉ／Ｆ部２１へ変更後のＳＦＣプログラムとプログラム変更情報４１が送られる。
【００５４】
プログラマブルコントローラ２００に送られた変更後のＳＦＣプログラムは、プログラム記憶部２４で記憶する。また、プログラマブルコントローラ２００に送られたプログラム変更情報４１は、ワークメモリ部２５に書き込まれる。
【００５５】
ＳＦＣプログラム制御実行部２２は、「ブロック０のステップＳＴ１」の実行を繰り返しており（ステップＳ１２０〜Ｓ１６０）、ＳＦＣプログラム制御実行部２２による１スキャンの実行が終了する度に、プログラミング装置１００からプログラマブルコントローラ２００へ変更後のＳＦＣプログラムの書込みが行われたか否かを確認する（ステップＳ１５０）。
【００５６】
プログラム記憶部２４へＳＦＣプログラムの書込みがあったと判断された場合（ステップＳ１５０、Ｙｅｓ）、ＳＦＣプログラム制御実行部２２がプログラム記憶部２４から読み出して実行するＳＦＣプログラムを変更後のＳＦＣプログラムに変更（置換）する（ステップＳ１７０）。
【００５７】
ＳＦＣプログラム制御実行部２２は、ワークメモリ部２５に格納されたプログラム変更情報４１の「変更情報登録数」を読み出す（ステップＳ１８０）。そして、ＳＦＣプログラム制御実行部２２は、「変更情報登録数」に格納されている値の回数だけ、実行中情報６１に登録されている内容を置き換える処理が終了したか否かを確認する（ステップＳ１９０）。ここでは、「変更情報登録数」は「１」であり、まだ実行中情報６１の変更処理が１つも終了していないため、ＳＦＣプログラム制御実行部２２によって、「変更情報登録数」に格納されている値だけ、実行中情報６１の変更処理が終了していないと判断される（ステップＳ１９０、Ｎｏ）。
【００５８】
ＳＦＣプログラム制御実行部２２は、プログラム変更情報４１の変更前情報である「変更前ブロック情報」と「変更前ステップ情報」を読み出す。ＳＦＣプログラム制御実行部２２は、読み出した「変更前ブロック情報」と「変更前ステップ情報」に対応するブロックのステップがワークメモリ部２５の実行中情報６１の「ブロック情報」と「ステップ情報」に存在するか否かを判断する（ステップＳ２００）。ここでは、プログラム変更情報４１の「変更前ブロック情報」は「ブロック０」であり、「変更前ステップ情報」は「ＳＴ１」である。また、実行中情報６１の「ブロック情報」は「ブロック０」であり、「ステップ情報」は「ＳＴ１」である。したがって、ＳＦＣプログラム制御実行部２２は、読み出したプログラム変更情報４１のブロックのステップが実行中情報６１に存在すると判断する（ステップＳ２１０、Ｙｅｓ）。
【００５９】
プログラム制御実行部２２は、プログラム変更情報４１の「変更情報」を読み出し、実行中情報６１の変更の態様を判断する（ステップＳ２２０）。ここでは、「変更情報」が「変更」であるため、プログラム制御実行部２２は実行中情報６１の変更の態様が「変更」であると判断する。
【００６０】
プログラム制御実行部２２が実行中情報６１の変更の態様が「変更」であると判断すると、ワークメモリ部２５は、実行中情報６１に登録されている内容をプログラム変更情報４１の変更後情報である「変更後ブロック情報」と「変更後ステップ情報」の内容に置き換える（ステップＳ２３０）。ここでは、実行中情報６１に登録されている「ブロック０のステップＳＴ１」が「ブロック０のステップＳＴ２」に変更される。
【００６１】
プログラム制御実行部２２は、プログラム変更情報４１の「変更情報登録数」の値から−１を行うことによって（ステップＳ２４０）、「変更情報登録数」を「１」から「０」にする。プログラム制御実行部２２は、この「変更情報登録数」を読み出す（ステップＳ１８０）。ここでは、「変更情報登録数」は「０」となっているため、実行中情報６１の変更処理が全て終了しており、ＳＦＣプログラム制御実行部２２によって「変更情報登録数」に格納されている値だけ、実行中情報６１の変更処理が終了したと判断される（ステップＳ１９０、Ｙｅｓ）。
【００６２】
そして、ＳＦＣプログラム制御実行部２２は、ワークメモリ部２５の実行中情報６１に格納している情報から「ブロック０のステップＳＴ２」の実行準備を行う（ステップＳ１６０）。この後、ＳＦＣプログラム制御実行部２２は変更後のＳＦＣプログラムを実行する。変更後のＳＦＣプログラムにおいて「ブロック０の移行条件２」の移行条件が成立していないため「ブロック０のステップＳＴ２」の処理が繰り返される（ステップＳ１２０〜Ｓ１６０）。
【００６３】
つぎに、ＳＦＣプログラムの変更がステップの追加である場合について説明する。ＳＦＣプログラム制御実行部２２は、プログラマブルコントローラ２００の運転モードの変更やプログラム記憶部２４へＳＦＣプログラムの書込みが行われるまで、「ブロック０のステップＳＴ１」の実行を繰り返している（ステップＳ１２０〜Ｓ１６０）。
【００６４】
ＳＦＣプログラムを変更する際、ユーザは入出力部１１からプログラマブルコントローラ２００で現在実行中（変更前）のＳＦＣプログラムを取得するよう指示情報を入力する。通信Ｉ／Ｆ部１４は、プログラマブルコントローラ２００から現在実行中のＳＦＣプログラムを読み出し、このＳＦＣプログラムを記憶部１５に記憶させる。ユーザが、入出力部１１からＳＦＣプログラムを変更するための指示情報を入力するとＳＦＣプログラム作成部１２は記憶部１５のメモリエリアを使用してＳＦＣプログラムを作成する。
【００６５】
図８は、変更後のＳＦＣプログラムの一例を示す図である。図８に示すＳＦＣプログラムは、図３に示したＳＦＣプログラムを変更したものである。ここでは、図３に示したＳＦＣプログラムの「ブロック０の移行条件０」を複数のステップを同時に実行させることができる「ブロック０の並列分岐移行条件０」に変更し、「ブロック０のステップＳＴ１」と同時に実行するステップとして「ブロック０のステップＳＴ１０」および「ブロック０のステップＳＴ１１」を追加し、「ブロック０の移行条件１」を複数の同時に実行しているステップをまとめる「ブロックの並列結合移行条件１」に変更した場合を示している。ここでは、「ブロック０の並列移行条件１」は次のステップに移行するための条件が成立していないこととする。ＳＦＣプログラム作成部１２によってステップを追加する際、入出力部１１は注意情報３２を表示してユーザに注意を促す。
【００６６】
図９は、注意情報の一例を示す図である。注意情報３２としては、プログラマブルコントローラ２００で実行中のステップに接続する移行条件が変更されるとこの移行条件で接続しているこれら追加されたステップも実行中となる旨を表示する。ここでは、プログラマブルコントローラ２００で現在実行中のステップが「ブロック０のステップＳＴ１」であれば、このステップを接続している「ブロック０の移行条件０」を「ブロック０の並列分岐移行条件０」に変更されて「ブロック０のステップＳＴ１０」および「ブロック０のステップＳＴ１１」が追加されるので、例えば「移行条件０を変更します。並列分岐先のステップが実行中の場合、追加されたステップも実行中となります。」といったメッセージを表示する。
【００６７】
このようにしてＳＦＣプログラム作成部１２によって作成された変更後のＳＦＣプログラムは、「ブロック０のイニシャルステップＳＴ０」、「ブロック０の並列分岐移行条件０」、「ブロック０のステップＳＴ１」、「ブロック０のステップＳＴ１０」、「ブロック０のステップＳＴ１１」、「ブロック０の並列結合移行条件１」、「ブロック０のステップＳＴ２」、「ブロック０の移行条件２」、「ブロック０のエンドステップ」からなる。また、ＳＦＣプログラム情報作成部１３はＳＦＣプログラムの変更に関する情報としてプログラム変更情報４２を作成する。
【００６８】
図１０は、プログラム変更情報の一例を示す図である。プログラム変更情報４２は、ＳＦＣプログラムの変更に関する情報として「変更前ブロック情報」、「変更前ステップ情報」、「変更後ブロック情報」、「変更後ステップ情報」、「変更情報登録数」、「変更情報」を含んでいる。ここでは、２つのステップが追加されるため、「変更前ブロック情報」、「変更前ステップ情報」、「変更後ブロック情報」、「変更後ステップ情報」、「変更情報」、はプログラム変更情報４２に２つずつ含まれている。
【００６９】
ＳＦＣプログラム作成部１２によって「変更前ブロック情報」の２つのエリアにはブロックナンバとして「ブロック０」がそれぞれ格納される。また、「変更前ステップ情報」の２つのエリアにはステップナンバとして「ステップＳＴ１」がそれぞれ格納される。また、「変更後ブロック情報」の２つのエリアにはブロックナンバとして「ブロック０」が格納される。また、「変更後ステップ情報」のエリアにはステップナンバとして「ステップＳＴ１０」と「ステップＳＴ１１」がそれぞれ格納される。また、ブロック０においてステップＳＴ１０とステップＳＴ１１を追加する変更であるため、ＳＦＣプログラム制御実行部２２は「変更情報」のエリアに実行中情報６１の変更の態様として「追加」をそれぞれ格納させる。また、「ブロック０のステップＳＴ１」が実行中であった場合に「ブロック０のステップＳＴ１０」と「ブロック０のステップＳＴ１１」を実行とさせる変更が２つがあるため、ＳＦＣプログラム作成部１２は「変更情報登録数」のエリアに「２」を格納させる。
【００７０】
ユーザが、変更後のＳＦＣプログラムとプログラム変更情報４２をプログラマブルコントローラ２００のワークメモリ部２５に送信するよう入出力部１１に指示情報を入力すると、通信Ｉ／Ｆ部１４から通信Ｉ／Ｆ部２１へ変更後のＳＦＣプログラムとプログラム変更情報４２が送られる。
【００７１】
プログラマブルコントローラ２００に送られた変更後のＳＦＣプログラムは、プログラム記憶部２４で記憶する。また、プログラマブルコントローラ２００に送られたプログラム変更情報４２は、ワークメモリ部２５に書き込まれる。
【００７２】
この後、ステップＳ１５０、Ｓ１７０〜Ｓ１９０の処理が行われる。すなわち、ＳＦＣプログラム制御実行部２２による１スキャンの実行が終了する度に、プログラミング装置１００からプログラマブルコントローラ２００へ変更後のＳＦＣプログラムの書込みが行われたか否かを確認し（ステップＳ１５０）、プログラム記憶部２４へＳＦＣプログラムの書込みがあったと判断された場合、ＳＦＣプログラム制御実行部２２がプログラム記憶部２４から読み出して実行するＳＦＣプログラムを変更後のＳＦＣプログラムに変更（置換）する（ステップＳ１７０）。
【００７３】
ＳＦＣプログラム制御実行部２２は、ワークメモリ部２５に格納されたプログラム変更情報４２の「変更情報登録数」を読み出す（ステップＳ１８０）。そして、ＳＦＣプログラム制御実行部２２は、「変更情報登録数」に格納されている値の回数だけ、実行中情報６１に登録されている内容を置き換える処理が終了したか否かを確認する（ステップＳ１９０）。
【００７４】
ＳＦＣプログラム制御実行部２２は、プログラム変更情報４２から１つ目の「変更前ブロック情報」と「変更前ステップ情報」を読み出す。ＳＦＣプログラム制御実行部２２は、読み出した１つ目の「変更前ブロック情報」と「変更前ステップ情報」に対応するブロックのステップがワークメモリ部２５の実行中情報６１の「ブロック情報」と「ステップ情報」に存在するか否かを判断する（ステップＳ２００）。
【００７５】
ここでは、プログラム変更情報４２の「変更前ブロック情報」は「ブロック０」であり、「変更前ステップ情報」は「ＳＴ１」である。また、実行中情報６１の「ブロック情報」は「ブロック０」であり、「ステップ情報」は「ＳＴ１」である。したがって、ＳＦＣプログラム制御実行部２２は、読み出したプログラム変更情報４２のブロックとステップが実行中情報６１に存在すると判断する（ステップＳ２１０、Ｙｅｓ）。
【００７６】
プログラム制御実行部２２は、プログラム変更情報４２の「変更情報」を読み出し、実行中情報６１の変更の態様を判断する（ステップＳ２２０）。ここでは、「変更情報」が「追加」であるため、プログラム制御実行部２２は実行中情報６１の変更の態様が「追加」であると判断する。
【００７７】
プログラム制御実行部２２が実行中情報６１の変更の態様が「追加」であると判断すると、ワークメモリ部２５は、実行中情報６１に登録されている内容にプログラム変更情報４２の「変更後ブロック情報」と「変更後ステップ情報」の内容を追加登録する（ステップＳ２５０）。ここでは、実行中情報６１に登録されている「ブロック０のステップＳＴ１」にプログラム変更情報４２の１つ目の情報である「ブロック０のステップＳＴ１０」を追加登録する。
【００７８】
プログラム制御実行部２２は、実行中情報６１の「ステップ総数」の値を＋１することによって（ステップＳ２４０）、実行中情報６１の「ステップ総数」の値を「２」に変更する。
【００７９】
プログラム制御実行部２２は、プログラム変更情報４２の「変更情報登録数」の値から−１を行うことによって（ステップＳ２４０）、「変更情報登録数」を「２」から「１」に変更する。プログラム制御実行部２２は、この「変更情報登録数」を読み出す（ステップＳ１８０）。「変更情報登録数」は「１」であるため、ステップ１９０〜Ｓ２２０、Ｓ２５０、Ｓ２４０の処理を行う。すなわち、ＳＦＣプログラム制御実行部２２は、「変更情報登録数」に格納されている値の回数だけ、実行中情報６１に登録されている内容を置き換える処理が終了したか否かを確認する（ステップＳ１９０）。
【００８０】
ＳＦＣプログラム制御実行部２２は、プログラム変更情報４２から２つ目の「変更前ブロック情報」と「変更前ステップ情報」を読み出す。ＳＦＣプログラム制御実行部２２は、読み出した２つ目の「変更前ブロック情報」と「変更前ステップ情報」に対応するブロックのステップがワークメモリ部２５の実行中情報６１の「ブロック情報」と「ステップ情報」に存在するか否かを判断する（ステップＳ２００）。
【００８１】
ここでは、プログラム変更情報４２の「変更前ブロック情報」は「ブロック０」であり、「変更前ステップ情報」は「ＳＴ１」である。また、実行中情報６１の「ブロック情報」は「ブロック０」であり、「ステップ情報」は「ＳＴ１」である。したがって、ＳＦＣプログラム制御実行部２２は、読み出したプログラム変更情報４２のブロックのステップが実行中情報６１に存在すると判断する（ステップＳ２１０、Ｙｅｓ）。
【００８２】
プログラム制御実行部２２は、プログラム変更情報４２の「変更情報」を読み出し、実行中情報６１の変更の態様を判断する（ステップＳ２２０）。プログラム制御実行部２２が実行中情報６１の変更の態様が「追加」であると判断すると、ワークメモリ部２５は、実行中情報６１に登録されている内容にプログラム変更情報４２の「変更後ブロック情報」と「変更後ステップ情報」の内容を追加登録する（ステップＳ２５０）。ここでは、実行中情報６１に登録されている「ブロック０のステップＳＴ１」と「ブロック０のステップＳＴ１０」にプログラム変更情報４２の２つ目の情報である「ブロック０のステップＳＴ１１」を追加登録する。
【００８３】
プログラム制御実行部２２は、実行中情報６１の「ステップ総数」の値を＋１することによって（ステップＳ２４０）、実行中情報６１の「ステップ総数」の値を「３」に変更する。
【００８４】
プログラム制御実行部２２は、プログラム変更情報４２の「変更情報登録数」の値から−１を行うことによって（ステップＳ２４０）、「変更情報登録数」を「１」から「０」に変更する。プログラム制御実行部２２は、この「変更情報登録数」を読み出す（ステップＳ１８０）。「変更情報登録数」は「０」となっているため、実行中情報６１の変更処理が全て終了しており、ＳＦＣプログラム制御実行部２２によって「変更情報登録数」に格納されている値だけ、実行中情報６１の変更処理が終了したと判断される（ステップＳ１９０、Ｙｅｓ）。そして、ＳＦＣプログラム制御実行部２２は、ワークメモリ部２５の実行中情報６１に格納している情報から「ブロック０のステップＳＴ１」、「ブロック０のステップＳＴ１０」、「ブロック０のステップＳＴ１１」の実行準備を行う（ステップＳ１６０）。この後、ＳＦＣプログラム制御実行部２２は変更後のＳＦＣプログラムを実行する。変更後のＳＦＣプログラムにおいて「ブロック０の移行条件１」の移行条件が成立していないため「ブロック０のステップＳＴ１」、「ブロック０のステップＳＴ１０」、「ブロック０のステップＳＴ１１」の処理が繰り返される（ステップＳ１２０〜Ｓ１６０）。
【００８５】
つぎに、ＳＦＣプログラムの変更がブロックの追加である場合について説明する。ＳＦＣプログラム制御実行部２２は、プログラマブルコントローラ２００の運転モードの変更やプログラム記憶部２４へＳＦＣプログラムの書込みが行われるまで、「ブロック０のステップＳＴ１」の実行を繰り返している（ステップＳ１２０〜Ｓ１６０）。
【００８６】
ＳＦＣプログラムを変更する際、ユーザは入出力部１１からプログラマブルコントローラ２００で現在実行中（変更前）のＳＦＣプログラムを取得するよう指示情報を入力する。通信Ｉ／Ｆ部１４は、プログラマブルコントローラ２００から現在実行中のＳＦＣプログラムを読み出し、このＳＦＣプログラムを記憶部１５に記憶させる。ユーザが、入出力部１１からＳＦＣプログラムを変更するための指示情報を入力するとＳＦＣプログラム作成部１２は記憶部１５のメモリエリアを使用してＳＦＣプログラムを作成する。
【００８７】
図１１は、変更後のＳＦＣプログラムの一例を示す図である。図１１に示すＳＦＣプログラムは、図３に示したＳＦＣプログラムに追加したブロックを示したものである。ここでは、図３に示したＳＦＣプログラムに「ブロック１のイニシャルステップＳＴ０」、「ブロック１の移行条件０」、「ブロック１のステップＳＴ１」、「ブロック１の移行条件１」、「ブロック１のエンドステップ」を追加した場合を示している。ＳＦＣプログラム作成部１２によってブロックを追加する際、入出力部１１は注意情報３３を表示してユーザに注意を促す。
【００８８】
図１２は、注意情報の一例を示す図である。注意情報３３としては、プログラマブルコントローラ２００で実行中のＳＦＣプログラムに新たなブロックが追加されると、この追加されたブロックは起動ステップを追加しないと起動しない旨を表示する。ここでは、プログラマブルコントローラ２００で実行中のブロック０からなるＳＦＣプログラムにブロック１が追加されるので、例えば「ブロック１を追加します。ブロック１を追加しますがブロック１の起動ステップを追加しないとブロック１は起動しません」といったメッセージを表示する。
【００８９】
このようにしてＳＦＣプログラム作成部１２によって作成された変更後のＳＦＣプログラムは、ブロック０と「ブロック１のイニシャルステップＳＴ０」、「ブロック１の移行条件０」、「ブロック１のステップＳＴ１」、「ブロック１の移行条件１」、「ブロック１のエンドステップ」からなるブロック１で構成されている。ここでは、「ブロック１の移行条件０」は次のステップに移行するための条件が成立しており、「ブロック１の移行条件１」は次のステップに移行するための条件が成立していないこととする。また、ＳＦＣプログラム情報作成部１３はＳＦＣプログラムの変更に関する情報としてプログラム変更情報４３を作成する。
【００９０】
図１３は、プログラム変更情報の一例を示す図である。プログラム変更情報４３は、ＳＦＣプログラムの変更に関する情報として「変更情報登録数」を含んでいる。ここでは、実行中情報６１の内容を変更しないため、ＳＦＣプログラム作成部１２は「変更情報登録数」のエリアに「０」を格納させる。
【００９１】
ユーザが、変更後のＳＦＣプログラムとプログラム変更情報４３をプログラマブルコントローラ２００のワークメモリ部２５に送信するよう入出力部１１に指示情報を入力すると、通信Ｉ／Ｆ部１４から通信Ｉ／Ｆ部２１へ変更後のＳＦＣプログラムとプログラム変更情報４３が送られる。
【００９２】
プログラマブルコントローラ２００に送られた変更後のＳＦＣプログラムは、プログラム記憶部２４で記憶する。また、プログラマブルコントローラ２００に送られたプログラム変更情報４３は、ワークメモリ部２５に書き込まれる。
【００９３】
この後、ステップＳ１５０、Ｓ１７０〜Ｓ１９０の処理が行われる。すなわち、ＳＦＣプログラム制御実行部２２による１スキャンの実行が終了する度に、プログラミング装置１００からプログラマブルコントローラ２００へ変更後のＳＦＣプログラムの書込みが行われたか否かを確認し（ステップＳ１５０）、プログラム記憶部２４へＳＦＣプログラムの書込みがあったと判断された場合、ＳＦＣプログラム制御実行部２２がプログラム記憶部２４から読み出して実行するＳＦＣプログラムを変更後のＳＦＣプログラムに変更（置換）する（ステップＳ１７０）。
【００９４】
ＳＦＣプログラム制御実行部２２は、ワークメモリ部２５に格納されたプログラム変更情報４３の「変更情報登録数」を読み出す（ステップＳ１８０）。ここでは、「変更情報登録数」が「０」であるため、ＳＦＣプログラム制御実行部２２は、実行中情報６１に登録されている内容を置き換える処理が終了したと判断する（ステップＳ１９０、Ｙｅｓ）。
【００９５】
実行中情報６１に格納されている情報に変更がないためＳＦＣプログラム制御実行部２２は、実行中情報６１に格納されている情報に基づいて次のスキャンで実行する「ブロック０のステップＳＴ１」の実行準備を行う（ステップＳ１６０）。この後、ＳＦＣプログラム制御実行部２２は変更後のＳＦＣプログラムを実行する。ＳＦＣプログラム制御実行部２２は、「ブロック１」の実行を行わず、変更後のＳＦＣプログラムにおいて「ブロック０の移行条件１」の移行条件が成立していないため「ブロック０のステップＳＴ１」の処理を繰り返す（ステップＳ１２０〜Ｓ１６０）。
【００９６】
なお、追加した「ブロック１」を起動させたい場合、ユーザは、「ブロック１」の追加を行うと同時に現在実行中のＳＦＣプログラムの「ブロック０のステップＳＴ１」を、ブロック１を起動させることができるステップである「ブロック０のブロック起動ステップＳＴ１」に変更する必要がある。この場合、ＳＦＣプログラム作成部１２は、プログラム変更情報４３に、変更前情報として「ブロック０のステップＳＴ１」、変更後情報として「ブロック１のステップＳＴ１」、「変更情報」として「追加」を格納させる。そして、ＳＦＣプログラム制御実行部２２が、ステップＳ２５０で、実行中情報６１に「ブロック１のイニシャルステップＳＴ０」を登録し、ステップＳ１６０で、「ブロック０のステップＳＴ１」、「ブロック１のイニシャルステップＳＴ０」の実行準備を行うことによって、次のスキャンで「ブロック１」の実行を行うことが可能となる。
【００９７】
つぎに、ＳＦＣプログラムの変更がブロックの削除である場合について説明する。ＳＦＣプログラム制御実行部２２は、プログラマブルコントローラ２００の運転モードの変更やプログラム記憶部２４へＳＦＣプログラムの書込みが行われるまで、図３に示す「ブロック０」と図１１に示す「ブロック１」を実行している。
【００９８】
実行中情報６１には、「ブロック０のステップＳＴ１」と「ブロック１のステップＳＴ１」が登録されている。ＳＦＣプログラム制御実行部２２は、「ブロック０のステップＳＴ１」を実行するとともに「ブロック０の移行条件１」の実行条件が成立しているか否かのチェックを行っている。現在「ブロック０の移行条件１」の実行条件が成立していないため、ＳＦＣプログラム制御実行部２２は、「ブロック０のステップＳＴ２」を実行することなく「ブロック０」の処理を終了している。
【００９９】
また、ＳＦＣプログラム制御実行部２２は、「ブロック１のステップＳＴ１」を実行するとともに「ブロック１の移行条件１」の実行条件が成立しているか否かのチェックを行っている。現在「ブロック１の移行条件１」の実行条件が成立していないため、ＳＦＣプログラム制御実行部２２は、「ブロック１のエンドステップ」を実行することなく「ブロック１」の処理を終了するといった処理を繰り返し行っている。
【０１００】
ＳＦＣプログラムを変更する際、ユーザは入出力部１１からプログラマブルコントローラ２００で現在実行中（変更前）のＳＦＣプログラムを取得するよう指示情報を入力する。通信Ｉ／Ｆ部１４は、プログラマブルコントローラ２００から現在実行中のＳＦＣプログラムを読み出し、このＳＦＣプログラムを記憶部１５に記憶させる。ユーザが、入出力部１１からＳＦＣプログラムを変更するための指示情報を入力するとＳＦＣプログラム作成部１２は記憶部１５のメモリエリアを使用してＳＦＣプログラムを作成する。ここでは、「ブロック０」と「ブロック１」からなるＳＦＣプログラムから「ブロック１」を削除し、「ブロック０」からなるＳＦＣプログラムに変更する。ＳＦＣプログラム作成部１２によってブロックを追加する際、入出力部１１は注意情報３４を表示してユーザに注意を促す。
【０１０１】
図１４は、注意情報の一例を示す図である。注意情報３４としては、プログラマブルコントローラ２００で実行中のブロックが削除されると、削除されたブロックの処理が終了される旨を表示する。ここでは、プログラマブルコントローラ２００で現在実行中のブロックが「ブロック１」であれば、「ブロック１」の実行を終了するので、例えば「ブロック１を削除します。実行中のブロックが削除された場合、該当ブロックの実行を終了します。」といったメッセージを表示する。
【０１０２】
このようにＳＦＣプログラム作成部１２によって作成された変更後のＳＦＣプログラムは、図３に示す「ブロック０」からなるＳＦＣプログラムと同一のＳＦＣプログラムとなる。また、ＳＦＣプログラム情報作成部１３はＳＦＣプログラムの変更に関する情報としてプログラム変更情報４４を作成する。
【０１０３】
図１５は、プログラム変更情報の一例を示す図である。プログラム変更情報４４は、ＳＦＣプログラムの変更に関する情報として「変更前ブロック情報」、「変更前ステップ情報」、「変更後ブロック情報」、「変更後ステップ情報」、「変更情報」を含んでいる。ここでは、ブロック１の２つのステップが削除されるため、「変更前ブロック情報」、「変更前ステップ情報」、「変更後ブロック情報」、「変更後ステップ情報」、「変更情報」はプログラム変更情報４４に２つずつ含まれている。
【０１０４】
ここでは、ＳＦＣプログラム作成部１２によって「変更前ブロック情報」の２つのエリアにはブロックナンバとして「ブロック１」がそれぞれ格納される。また、「変更前ステップ情報」の２つのエリアにはステップナンバとして「ＳＴ０」と「ＳＴ１」がそれぞれ格納される。また、「変更後ブロック情報」の２つのエリアにはブロック１は削除されているので「なし」の情報が格納される。同様に、ブロック１の「ステップＳＴ０」とブロック１の「ステップＳＴ１」が削除されるので「変更後ステップ情報」のエリアにはステップナンバが無いことを示す「なし」の情報が格納される。また、ブロック１を削除する変更であるため、ＳＦＣプログラム作成部１２は「変更情報」のエリアに実行中情報６１の変更の態様として「削除」をそれぞれ格納させる。また、「ブロック１のステップＳＴ０」と「ブロック１のステップＳＴ１」が２つ削除されるため、ＳＦＣプログラム制御実行部２２は「変更情報登録数」のエリアに「２」を格納させる。
【０１０５】
ユーザが、変更後のＳＦＣプログラムとプログラム変更情報４４をプログラマブルコントローラ２００のワークメモリ部２５に送信するよう入出力部１１に指示情報を入力すると、通信Ｉ／Ｆ部１４から通信Ｉ／Ｆ部２１へ変更後のＳＦＣプログラムとプログラム変更情報４４が送られる。
【０１０６】
プログラマブルコントローラ２００に送られた変更後のＳＦＣプログラムは、プログラム記憶部２４で記憶する。また、プログラマブルコントローラ２００に送られたプログラム変更情報４４は、ワークメモリ部２５に書き込まれる。
【０１０７】
この後、ステップＳ１５０、Ｓ１７０〜Ｓ１９０の処理が行われる。すなわち、ＳＦＣプログラム制御実行部２２による１スキャンの実行が終了する度に、プログラミング装置１００からプログラマブルコントローラ２００へ変更後のＳＦＣプログラムの書込みが行われたか否かを確認し（ステップＳ１５０）、プログラム記憶部２４へＳＦＣプログラムの書込みがあったと判断された場合、ＳＦＣプログラム制御実行部２２がプログラム記憶部２４から読み出して実行するＳＦＣプログラムを変更後のＳＦＣプログラムに変更（置換）する（ステップＳ１７０）。
【０１０８】
ＳＦＣプログラム制御実行部２２は、ワークメモリ部２５に格納されたプログラム変更情報４４の「変更情報登録数」を読み出す（ステップＳ１８０）。そして、ＳＦＣプログラム制御実行部２２は、「変更情報登録数」に格納されている値の回数だけ、実行中情報６１に登録されている内容を置き換える処理が終了したか否かを確認する（ステップＳ１９０）。
【０１０９】
ＳＦＣプログラム制御実行部２２は、プログラム変更情報４４から１つ目の「変更前ブロック情報」と「変更前ステップ情報」を読み出す。ＳＦＣプログラム制御実行部２２は、読み出した１つ目の「変更前ブロック情報」と「変更前ステップ情報」に対応するブロックのステップがワークメモリ部２５の実行中情報６１の「ブロック情報」と「ステップ情報」に存在するか否かを判断する（ステップＳ２００）。
【０１１０】
ここでは、プログラム変更情報４４の「変更前ブロック情報」は「ブロック１のステップＳＴ０」であり、実行中情報６１の「ブロック１」に対応するステップは「ＳＴ１」である。したがって、ＳＦＣプログラム制御実行部２２は、読み出したプログラム変更情報４４のブロックが実行中情報６１に存在しないと判断する（ステップＳ２１０、Ｙｅｓ）。
【０１１１】
プログラム制御実行部２２は、プログラム変更情報４４の「変更情報登録数」の値から−１を行い（ステップＳ２４０）、「変更情報登録数」を「２」から「１」に変更する。プログラム制御実行部２２は、この「変更情報登録数」を読み出す（ステップＳ１８０）。「変更情報登録数」は「１」であるため、ステップ１９０〜Ｓ２２０の処理を行う。すなわち、ＳＦＣプログラム制御実行部２２は、「変更情報登録数」に格納されている値の回数だけ、実行中情報６１に登録されている内容を置き換える処理が終了したか否かを確認する（ステップＳ１９０）。
【０１１２】
ＳＦＣプログラム制御実行部２２は、プログラム変更情報４４から２つ目の「変更前ブロック情報」と「変更前ステップ情報」を読み出す。ＳＦＣプログラム制御実行部２２は、読み出した２つ目の「変更前ブロック情報」と「変更前ステップ情報」に対応するブロックのステップがワークメモリ部２５の実行中情報６１の「ブロック情報」と「ステップ情報」に存在するか否かを判断する（ステップＳ２００）。
【０１１３】
ここでは、プログラム変更情報４４の「変更前ブロック情報」は「ブロック１のステップＳＴ１」であり、実行中情報６１の「ブロック１」に対応するステップは「ＳＴ１」である。したがって、ＳＦＣプログラム制御実行部２２は、読み出したプログラム変更情報４４のブロックが実行中情報６１に存在すると判断する（ステップＳ２１０、Ｙｅｓ）。
【０１１４】
プログラム制御実行部２２は、プログラム変更情報４４の「変更情報」を読み出し、実行中情報６１の変更の態様を判断する（ステップＳ２２０）。ここでは、「変更情報」が「削除」であるため、プログラム制御実行部２２は実行中情報６１の変更の態様が「削除」であると判断する。
【０１１５】
プログラム制御実行部２２が実行中情報６１の変更の態様が「削除」であると判断すると、ワークメモリ部２５は、実行中情報６１に登録されている内容から「ブロック１」に関する情報を削除する。
【０１１６】
そして、プログラム制御実行部２２は、実行中情報６１の「ステップ総数」から削除したステップ数の値を減算し（ステップＳ２６０）、実行中情報６１の「ステップ総数」の値を「２」から「１」に変更する。
【０１１７】
プログラム制御実行部２２は、プログラム変更情報４４の「変更情報登録数」の値から−１を行い（ステップＳ２４０）、「変更情報登録数」を「１」から「０」に変更する。
プログラム制御実行部２２は、この「変更情報登録数」を読み出す（ステップＳ１８０）。「変更情報登録数」は「０」となっているため、実行中情報６１の変更処理が全て終了しており、ＳＦＣプログラム制御実行部２２によって「変更情報登録数」に格納されている値だけ、実行中情報６１の変更処理が終了したと判断される（ステップＳ１９０、Ｙｅｓ）。
【０１１８】
そして、ＳＦＣプログラム制御実行部２２は、ワークメモリ部２５の実行中情報６１に格納している情報から「ブロック０のステップＳＴ１」の実行準備を行う（ステップＳ１６０）。この後、ＳＦＣプログラム制御実行部２２は変更後のＳＦＣプログラムを実行する。変更後のＳＦＣプログラムにおいて「ブロック０の移行条件１」の移行条件が成立していないため「ブロック０のステップＳＴ１」の処理が繰り返される（ステップＳ１２０〜Ｓ１６０）。
【０１１９】
なお、本実施の形態においては、プログラマブルコントローラ２００で実行中のＳＦＣプログラムをプログラミング装置１００で変更（編集）することとしたが、プログラミング装置１００で変更するＳＦＣプログラムはプログラマブルコントローラ２００で実行中のものに限られず、プログラマブルコントローラ２００で実行していないＳＦＣプログラムをプログラミング装置１００で変更してもよい。また、プログラミング装置１００においても、実行中のＳＦＣプログラムを変更（置換）する場合に限られず、実行していないＳＦＣプログラムを変更するようにしてもよい。
【０１２０】
このように、プログラミング装置１００は、プログラマブルコントローラ２００が実行しているブロックとステップを把握することなく、ＳＦＣプログラムの実行中の変更を可能としている。そして、ＳＦＣプログラム内のステップや移行条件を削除する場合であっても、プログラマブルコントローラ２００は削除される実行中のステップの次のステップに関する情報を取得することが可能となる。また、ＳＦＣプログラム内のステップや移行条件を追加や変更する場合であっても、プログラマブルコントローラ２００は追加されるステップに関する情報を取得することが可能となる。また、ＳＦＣプログラムに新たなブロックを追加する場合であっても、プログラマブルコントローラ２００は追加されるブロックに関する情報を取得することが可能となる。また、ＳＦＣプログラムからブロックを削除する場合であっても、プログラマブルコントローラ２００は削除されるブロックに関する情報を取得することが可能となる。
【０１２１】
このように実施の形態によれば、ＳＦＣプログラム内のステップや移行条件を削除する場合であっても、プログラマブルコントローラ２００が削除される実行中のステップの次のステップに関する情報を取得することができるので、プログラマブルコントローラ２００はＳＦＣプログラムを変更する際、次のステップの実行を行うことができる。したがって、実行中のＳＦＣプログラムを停止させることやイニシャルステップから再実行させる必要がなく、ＳＦＣプログラムの実行を継続しながらプログラマブルコントローラ２００のＳＦＣプログラムを変更させることが可能となる。
【０１２２】
また、ＳＦＣプログラム内のステップや移行条件を追加や変更する場合であっても、プログラマブルコントローラ２００は追加されるステップに関する情報を取得することができるので、プログラマブルコントローラ２００はＳＦＣプログラムを変更する際、追加されるステップの実行を行うことができる。したがって、実行中のＳＦＣプログラムを停止させることやイニシャルステップから再実行させる必要がなく、ＳＦＣプログラムの実行を継続しながらプログラマブルコントローラ２００のＳＦＣプログラムを変更させることが可能となる。
【０１２３】
また、ＳＦＣプログラムからブロックを削除する場合であっても、プログラマブルコントローラ２００は削除されるブロックに関する情報を取得することができるので、プログラマブルコントローラ２００はＳＦＣプログラムを変更する際、削除されていないブロックを実行することができる。したがって、実行中のＳＦＣプログラムを停止させることやイニシャルステップから再実行させる必要がなく、ＳＦＣプログラムの実行を継続しながらプログラマブルコントローラ２００のＳＦＣプログラムを変更させることが可能となる。
【０１２４】
また、ＳＦＣプログラム内のステップや移行条件を削除する場合、ＳＦＣプログラム内のステップや移行条件を追加や変更する場合、ＳＦＣプログラムに新たなブロックを追加する場合、ＳＦＣプログラムからブロックを削除する場合であっても、プログラミング装置１００は追加されるブロックに関する情報を取得することができるので、ＳＦＣプログラムを変更させる際に、注意情報を表示させることができる。したがって、ＳＦＣプログラムを変更する際の動作効率が向上する。
【産業上の利用可能性】
【０１２５】
以上のように、本発明にかかるプログラマブルコントローラ、プログラミング装置およびプログラム変更システムは、ＳＦＣプログラムの変更を行うプログラマブルコントローラ、プログラミング装置およびプログラム変更システムに適している。
【図面の簡単な説明】
【０１２６】
【図１】本発明の実施の形態にかかるプログラム変更システムの構成を示すブロック図である。
【図２】ＳＦＣプログラムの変更の処理手順を示すフローチャートである。
【図３】変更前のＳＦＣプログラムの一例を示す図である。
【図４】実行中情報の構成を示す図である。
【図５】変更後のＳＦＣプログラムの一例を示す図（１）である。
【図６】注意情報の一例を示す図（１）である。
【図７】プログラム変更情報の一例を示す図（１）である。
【図８】変更後のＳＦＣプログラムの一例を示す図（２）である。
【図９】注意情報の一例を示す図（２）である。
【図１０】プログラム変更情報の一例を示す図（２）である。
【図１１】変更後のＳＦＣプログラムの一例を示す図（３）である。
【図１２】注意情報の一例を示す図（３）である。
【図１３】プログラム変更情報の一例を示す図（３）である。
【図１４】注意情報の一例を示す図（４）である。
【図１５】プログラム変更情報の一例を示す図（４）である。
【符号の説明】
【０１２７】
１１  入出力部
１２  ＳＦＣプログラム作成部
１３  ＳＦＣプログラム情報作成部
１４，２１  通信Ｉ／Ｆ部
１５  記憶部
２２  ＳＦＣプログラム制御実行部
２３  シーケンスプログラム制御実行部
２４  プログラム記憶部
２５  ワークメモリ部
３１〜３４  注意情報
４１〜４４  プログラム変更情報
６１  実行中情報
１００  プログラミング装置
２００  プログラマブルコントローラ
【図１】
2005309916.tif 000003
【図２】
2005309916.tif 000004
【図３】
2005309916.tif 000005
【図４】
2005309916.tif 000006
【図５】
2005309916.tif 000007
【図６】
2005309916.tif 000008
【図７】
2005309916.tif 000009
【図８】
2005309916.tif 000010
【図９】
2005309916.tif 000011
【図１０】
2005309916.tif 000012
【図１１】
2005309916.tif 000013
【図１２】
2005309916.tif 000014
【図１３】
2005309916.tif 000015
【図１４】
2005309916.tif 000016
【図１５】
2005309916.tif 000017