(57)【特許請求の範囲】
【請求項１】
装置を制御するコントローラと、
前記コントローラが前記装置の制御に用いるプログラムの作成を支援するプログラム作成支援装置と、
を有し、
前記プログラムは、前記装置への正式な制御を行う制御プログラムと、前記装置への補助処理を制御する補助プログラムとを含み、
前記プログラム作成支援装置は、
前記制御プログラムの実行コードである本体実行コードを作成する本体実行コード作成部と、
前記補助プログラムの実行コードである補助実行コードを作成する補助実行コード作成部と、
前記補助実行コードを実行する条件である補助実行条件を作成する補助実行条件作成部と、
を備え、
前記本体実行コードと前記補助実行コードとを、別々のファイルとして作成し、
前記コントローラは、
前記本体実行コード、前記補助実行コード、および前記補助実行条件を用いて前記装置を制御する、
ことを特徴とする制御システム。
【請求項２】
前記コントローラは、
前記本体実行コードを記憶する本体実行コード記憶装置と、
前記補助実行コードを記憶する補助実行コード記憶装置と、
を備え、
前記本体実行コード記憶装置と、前記補助実行コード記憶装置とは、別構成の記憶装置である、
ことを特徴とする請求項１に記載の制御システム。
【請求項３】
前記補助実行コード記憶装置は、前記コントローラから着脱可能な記憶装置である、
ことを特徴とする請求項２に記載の制御システム。
【請求項４】
装置への正式な制御を行う制御プログラムの実行コードである本体実行コードを作成する本体実行コード作成部と、
前記装置への補助処理を制御する補助プログラムの実行コードである補助実行コードを作成する補助実行コード作成部と、
前記補助実行コードを実行する条件である補助実行条件を作成する補助実行条件作成部と、
を備え、
前記本体実行コードと前記補助実行コードとを、別々のファイルとして作成する、
ことを特徴とするプログラム作成支援装置。
【請求項５】
前記本体実行コードを実行する条件である本体実行条件を作成する本体実行条件作成部をさらに備える、
ことを特徴とする請求項４に記載のプログラム作成支援装置。
【請求項６】
前記制御プログラムのソースコードである本体ソースコードを編集する本体ソースコード編集部と、
前記補助プログラムのソースコードである補助ソースコードを編集する補助ソースコード編集部と、
をさらに備え、
前記本体実行コード作成部は、前記本体ソースコードから前記本体実行コードを作成し、
前記補助実行コード作成部は、前記補助ソースコードから前記補助実行コードを作成する、
ことを特徴とする請求項４または５に記載のプログラム作成支援装置。
【請求項７】
前記制御プログラムに含まれるモーション制御における指令値の演算用データに基づいて、前記補助ソースコードを作成する補助ソースコード作成部をさらに備える、
ことを特徴とする請求項６に記載のプログラム作成支援装置。
【請求項８】
コンピュータが、装置への正式な制御を行う制御プログラムの実行コードである本体実行コードを作成する本体実行コード作成ステップと、
前記コンピュータが、前記装置への補助処理を制御する補助プログラムの実行コードである補助実行コードを作成する補助実行コード作成ステップと、
前記コンピュータが、前記補助実行コードを実行する条件である補助実行条件を作成する補助実行条件作成ステップと、
を含み、
前記コンピュータは、前記本体実行コードと前記補助実行コードとを、別々のファイルとして作成する、
ことを特徴とするプログラム作成支援方法。
【請求項９】
装置への正式な制御を行う制御プログラムの実行コードである本体実行コードを作成する本体実行コード作成ステップと、
前記装置への補助処理を制御する補助プログラムの実行コードである補助実行コードを作成する補助実行コード作成ステップと、
前記補助実行コードを実行する条件である補助実行条件を作成する補助実行条件作成ステップと、
をコンピュータに実行させ、
前記本体実行コードと前記補助実行コードとを、別々のファイルとして作成する、
ことを特徴とするプログラム作成支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、制御プログラムの作成を支援する制御システム、プログラム作成支援装置、プログラム作成支援方法、およびプログラム作成支援プログラムに関する。
【背景技術】
【０００２】
従来、サーボモータなどの駆動機器を制御するコントローラが所望の制御動作を行うことができるか否かが確認される際には、駆動機器の動作を制御する制御プログラムのテストなどが行われる。テストなどが行われる際には、駆動機器の制御を行う本体部のソースコードと、テストなどの補助処理を行う補助部のソースコードとが一体化され、一体化されたソースコードから実行コードが作成される。そして、作成された実行コードがコントローラへ書込まれ、コントローラが、実行コードを実行することでテストなどが行われる。【０００３】
特許文献１に記載のコントローラサポート装置は、制御プログラムに入れられたデバッグ用のプログラムを用いて制御プログラムのシミュレーションを実行している。すなわち、特許文献１に記載のコントローラサポート装置が、補助処理を行う場合、制御プログラムに入れられた補助部のプログラムを用いて制御プログラムの補助処理を実行することとなる。このコントローラサポート装置の場合、例えばテスト条件の変更が必要になると、変更後のテスト条件に即して補助部のソースコードを編集し、本体部のソースコードと、編集された補助部のソースコードとを一体化したソースコードから実行コードを再作成する。そして、コントローラが、再作成された実行コードを実行することで、再テストなどが行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５２４６１８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１のコントローラサポート装置では、制御プログラムのテストなどが完了した後、不要となった補助部の実行コードを制御プログラムから除去しておかないと、制御プログラムの本体部の実行コードのみを実行したい場合に補助部の実行コードが誤って実行されてしまう場合がある。また、補助部の実行コードを制御プログラムから正確に除去するには多大な手間を要する。【０００６】
本開示は、上記に鑑みてなされたものであって、本体部の実行コードが実行される際に補助部の実行コードが誤って実行されることを容易に防止できる制御システムを得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本開示の制御システムは、装置を制御するコントローラと、コントローラが装置の制御に用いるプログラムの作成を支援するプログラム作成支援装置と、を有する。プログラムは、装置への正式な制御を行う制御プログラムと、装置への補助処理を制御する補助プログラムとを含む。プログラム作成支援装置は、制御プログラムの実行コードである本体実行コードを作成する本体実行コード作成部と、補助プログラムの実行コードである補助実行コードを作成する補助実行コード作成部と、補助実行コードを実行する条件である補助実行条件を作成する補助実行条件作成部と、を備えている。また、プログラム作成支援装置は、本体実行コードと補助実行コードとを、別々のファイルとして作成する。コントローラは、本体実行コード、補助実行コード、および補助実行条件を用いて装置を制御する。
【発明の効果】
【０００８】
本開示にかかる制御システムは、本体部の実行コードが実行される際に補助部の実行コードが誤って実行されることを容易に防止できるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる制御システムの構成を示す図
【図２】実施の形態１にかかる制御システムによる制御処理の手順を示すフローチャート
【図３】実施の形態１にかかるプログラム作成支援装置によるデータ作成処理の手順を示すシーケンス図
【図４】実施の形態１にかかる制御システムによるデータ送信処理およびデータ保存処理の手順を示すシーケンス図
【図５】実施の形態１にかかる制御システムによる制御プログラムの実行処理の手順を示すシーケンス図
【図６】実施の形態２にかかる制御システムの構成を示す図
【図７】実施の形態２にかかる制御システムが制御するモータに接続された機構部を説明するための図
【図８】実施の形態２にかかる制御システムに対して設定される制御用パラメータの第１例を示す図
【図９】実施の形態２にかかる制御システムが用いる運転パターンの第１例を示す図
【図１０】実施の形態２にかかる制御システムに対して設定される制御用パラメータの第２例を示す図
【図１１】実施の形態２にかかる制御システムが用いる運転パターンの第２例を示す図
【図１２】実施の形態１，２にかかるプログラム作成支援装置を実現するハードウェア構成例を示す図
【発明を実施するための形態】
【００１０】
以下に、本開示の実施の形態にかかる制御システム、プログラム作成支援装置、プログラム作成支援方法、およびプログラム作成支援プログラムを図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの開示が限定されるものではない。
【００１１】
実施の形態１．
図１は、実施の形態１にかかる制御システムの構成を示す図である。制御システム１Ａは、プログラム作成支援装置１０と、コントローラ３０とを備えている。プログラム作成支援装置１０は、表示装置３に接続され、コントローラ３０は、アンプ４を介してモータ２に接続されている。
【００１２】
コントローラ３０は、駆動機器であるモータ２を制御するコンピュータである。プログラム作成支援装置１０は、コントローラ３０がモータ２を制御する際に用いる制御プログラムを作成するコンピュータである。
【００１３】
プログラム作成支援装置１０は、ユーザからの指示に従って、制御プログラムを作成する。また、プログラム作成支援装置１０は、ユーザからの指示に従って、制御プログラムを実行する条件である実行条件を作成する。例えば、制御プログラムが制御プログラムＰＡ，ＰＢ，ＰＣを含んでいる場合がある。この場合において、制御プログラムＰＡだけを実行させたい場合、制御プログラムＰＢをスキップさせたい場合、制御プログラムＰＣの実行を特定回数（例えば、１０回）だけ繰り返したい場合などがある。これらの処理を実行させるための条件が実行条件である。例えば、実行条件において、「制御プログラムＰＡが存在する場合には、制御プログラムＰＡをスキップさせる」ということが規定されている場合、コントローラ３０は、制御プログラムＰＡが存在する場合に、制御プログラムＰＡをスキップさせる。
【００１４】
本実施の形態のプログラム作成支援装置１０は、モータ２の制御を行う際に用いられる本体部のソースコードと、本体部以外のソースコードとを別々に作成し、別々にコンパイルすることで、別々の実行コードを作成する。本体部以外のソースコードは、補助処理を制御するためのソースコードである。補助処理を制御するためのソースコードの例は、本体部のテストおよび調整（以下、テスト調整という）を行うソースコードである。なお、本体部のテスト結果によっては、本体部の調整が省略される場合もある。
【００１５】
プログラム作成支援装置１０は、本体部のソースコードから本体部の実行コードを作成し、テスト調整用のソースコードからテスト調整用の実行コードを作成する。以下の説明では、本体部のソースコードを本体ソースコードといい、テスト調整用のソースコードをテストソースコードという。また、本体部の実行コードを本体実行コードといい、テスト調整用の実行コードをテスト実行コードという。
【００１６】
プログラム作成支援装置１０は、制御プログラムの本体ソースコードをコンパイルすることで、制御プログラムの本体実行コードを作成する。プログラム作成支援装置１０は、制御プログラムのテストソースコードをコンパイルすることで、制御プログラムのテスト実行コードを作成する。
【００１７】
このように、プログラム作成支援装置１０が作成する制御プログラムには、本体部となる制御プログラム（本体実行コード）と、テスト調整用の制御プログラム（テスト実行コード）との２本がある。本体部となる制御プログラムは、実際の製品として稼働する制御プログラムである。
【００１８】
本体部となる制御プログラムは、モータ２を含んだ装置の制御に直接関与する処理を行う。換言すると、本体部となる制御プログラムは、モータ２を含んだ装置への正式な制御を行うプログラムである。
【００１９】
テスト調整用の制御プログラムは、補助処理を制御する補助プログラムである。テスト調整用の制御プログラムは、テスト調整の際に必要であるが、テスト調整が完了した後には不要となる。
【００２０】
なお、以下の説明では、本体部となる制御プログラムを単に本体プログラムといい、テスト調整用の制御プログラムをテストプログラムという。また、本体プログラムおよびテストプログラムの両方のプログラムを指す場合には、制御プログラムという。本体プログラムは、モーション制御プログラムを含んでいる場合があり、この場合、テストプログラムは、モーション制御プログラムのテスト調整などを行う。
【００２１】
また、プログラム作成支援装置１０は、本体実行コードが実行される際に用いられる実行条件と、補助実行コードであるテスト実行コードが実行される際に用いられる実行条件とを別々に作成する。以下の説明では、本体部の実行条件、すなわち本体プログラムを実行するための条件を本体実行条件といい、テスト調整用の実行条件、すなわちテストプログラムを実行するための条件をテスト実行条件という。
【００２２】
本体実行条件では、特定の本体プログラムが存在する場合には、この特定の本体プログラムをスキップさせることなどが規定されている。補助実行条件であるテスト実行条件では、本体プログラムの前に実行させるテストプログラムが存在する場合、このテストプログラムを実行させることなどが規定されている。また、本体実行条件およびテスト実行条件では、特定の変数が特定の値になる場合に、特定の処理を実行することなどが規定されていてもよい。
【００２３】
プログラム作成支援装置１０は、本体実行コード、テスト実行コード、本体実行条件、およびテスト実行条件をコントローラ３０に送信する。
【００２４】
コントローラ３０は、テスト調整の際には、本体実行コード、本体実行条件、テスト実行コード、およびテスト実行条件を用いて、モータ２の動作を制御する。また、コントローラ３０は、テスト調整が完了した後は、本体実行コードおよび本体実行条件を用いて、モータ２の動作を制御する。コントローラ３０は、本体実行コードとテスト実行コードとを別々に管理する。また、コントローラ３０は、本体実行条件とテスト実行条件とを別々に管理する。
【００２５】
プログラム作成支援装置１０は、本体ソースコード編集部１１と、本体実行条件指定部１２と、本体実行コード作成部１３とを備えている。また、プログラム作成支援装置１０は、補助ソースコード編集部であるテストソースコード編集部２１と、補助実行条件作成部であるテスト実行条件指定部２２と、補助実行コード作成部であるテスト実行コード作成部２３と、通信部７１と、入力部７２とを備えている。
【００２６】
通信部７１は、本体送信部１４と、本体受信部１５と、テスト送信部２４と、テスト受信部２５とを有している。
【００２７】
コントローラ３０は、通信部８１と、本体実行コード記憶部３３と、テスト実行コード記憶部４３と、制御部８２と、出力部８３とを備えている。通信部８１は、通信部７１との間で通信可能となっている。通信部８１と通信部７１との間は、無線通信で接続されてもよいし、有線通信で接続されてもよい。
【００２８】
通信部８１は、本体受信部３１と、本体送信部３２と、テスト受信部４１と、テスト送信部４２とを有している。制御部８２は、本体実行制御部３４と、本体実行条件判定部３５と、テスト実行制御部４４と、テスト実行条件判定部４５とを有している。
【００２９】
以下、プログラム作成支援装置１０およびコントローラ３０の各構成要素について説明する。プログラム作成支援装置１０の入力部７２は、ユーザからの指示を受付ける。入力部７２がユーザから受付ける指示には、本体ソースコードを編集する指示、本体実行コードを作成する指示、本体実行条件を指定する指示、補助ソースコードであるテストソースコードを編集する指示、テスト実行コードを作成する指示、テスト実行条件を指定する指示などがある。
【００３０】
また、入力部７２がユーザから受付ける指示には、制御プログラムをコントローラ３０に送信する指示、実行条件をコントローラ３０に送信する指示、制御プログラムをコントローラ３０に実行させる指示（以下、プログラム実行指示という場合がある）などがある。制御プログラムをコントローラ３０に送信する指示には、本体プログラムを送信する指示（以下、本体プログラム送信指示という場合がある）と、テストプログラムを送信する指示（以下、テストプログラム送信指示という場合がある）とがある。
【００３１】
入力部７２は、本体ソースコードを編集する指示を受付けると、この指示を、本体ソースコード編集部１１に送信する。入力部７２は、テストソースコードを編集する指示を受付けると、この指示を、テストソースコード編集部２１に送信する。
【００３２】
入力部７２は、本体実行コードを作成する指示を受付けると、この指示を、本体ソースコード編集部１１を介して本体実行コード作成部１３に送信する。入力部７２は、テスト実行コードを作成する指示を受付けると、この指示を、テストソースコード編集部２１を介してテスト実行コード作成部２３に送信する。
【００３３】
入力部７２は、本体実行条件を指定する指示を受付けると、この指示を、本体ソースコード編集部１１を介して、本体実行条件指定部１２に送信する。入力部７２は、テスト実行条件を指定する指示を受付けると、この指示を、テストソースコード編集部２１を介して、テスト実行条件指定部２２に送信する。
【００３４】
なお、入力部７２は、本体実行条件を指定する指示を、直接本体実行条件指定部１２に送ってもよい。また、入力部７２は、テスト実行条件を指定する指示を、直接テスト実行条件指定部２２に送ってもよい。
【００３５】
入力部７２は、本体プログラム送信指示を受付けると、この指示を通信部７１に送信する。入力部７２は、テストプログラム送信指示を受付けると、この指示を通信部７１に送信する。入力部７２は、プログラム実行指示を受付けると、この指示を、通信部７１を介して、コントローラ３０の通信部８１に送信する。
【００３６】
本体ソースコード編集部１１は、編集対象のソースコードを液晶モニタなどの表示装置３に表示させる。本体ソースコード編集部１１は、表示装置３に表示中の情報に対して、本体ソースコードを編集する指示を受付ける。本体ソースコード編集部１１は、本体ソースコードを編集する指示に従って、本体ソースコードを編集する。本体ソースコード編集部１１は、本体実行コードを作成する指示を受付けると、本体ソースコードを本体実行コード作成部１３に送信する。
【００３７】
本体実行コード作成部１３は、本体実行コードを作成する指示を受付けると、本体ソースコードをコンパイルすることで、本体実行コードを作成する。本体実行コード作成部１３は、作成した本体実行コードを通信部７１に送信する。
【００３８】
本体実行条件指定部１２は、本体実行条件を指定する指示に従って、本体実行条件を作成する。本体実行条件指定部１２は、作成した本体実行条件を通信部７１に送信する。
【００３９】
通信部７１の本体送信部１４は、本体プログラム送信指示を受付けると、本体実行コードおよび本体実行条件をコントローラ３０の通信部８１に送信する。また、本体送信部１４は、プログラム実行指示を受付けるとプログラム実行指示をコントローラ３０の通信部８１に送信する。
【００４０】
通信部７１の本体受信部１５は、コントローラ３０からテスト調整の結果を示すデータ、本体実行コードなどを受信し、本体ソースコード編集部１１に送信する。
【００４１】
テストソースコード編集部２１は、編集対象のソースコードを表示装置３に表示させる。テストソースコード編集部２１は、表示装置３に表示中の情報に対して、テストソースコードを編集する指示を受付ける。テストソースコード編集部２１は、テストソースコードを編集する指示に従って、テストソースコードを編集する。テストソースコード編集部２１は、テスト実行コードを作成する指示を受付けると、テストソースコードをテスト実行コード作成部２３に送信する。
【００４２】
テスト実行コード作成部２３は、テスト実行コードを作成する指示を受付けると、テストソースコードをコンパイルすることで、テスト実行コードを作成する。テスト実行コード作成部２３は、作成したテスト実行コードを通信部７１に送信する。
【００４３】
テスト実行条件指定部２２は、テスト実行条件を指定する指示に従って、テスト実行条件を作成する。テスト実行条件指定部２２は、作成したテスト実行条件を通信部７１に送信する。
【００４４】
通信部７１のテスト送信部２４は、テストプログラム送信指示を受付けると、テスト実行コードおよびテスト実行条件をコントローラ３０の通信部８１に送信する。
【００４５】
通信部７１のテスト受信部２５は、コントローラ３０からテスト調整の結果を示すデータ、テスト実行コードなどを受信し、テストソースコード編集部２１に送信する。
【００４６】
コントローラ３０の通信部８１では、本体受信部３１が、本体送信部１４から情報を受信すると、受信した情報を本体実行コード記憶部３３に記憶させる。本体受信部３１が、本体送信部１４から受信する情報は、本体実行コード、本体実行条件、プログラム実行指示などである。
【００４７】
本体送信部３２は、プログラム作成支援装置１０から要求のあった情報を本体実行コード記憶部３３から読出して、プログラム作成支援装置１０の通信部７１に送信する。
【００４８】
本体実行コード記憶部３３は、通信部８１から送られてくる情報および制御部８２から送られてくる情報を記憶するメモリなどである。通信部８１から本体実行コード記憶部３３に送られてくる情報は、本体実行コード、本体実行条件、プログラム実行指示などであり、制御部８２から送られてくる情報は、テスト調整の結果を示すデータなどである。
【００４９】
コントローラ３０の通信部８１では、テスト受信部４１が、テスト送信部２４から情報を受信すると、受信した情報をテスト実行コード記憶部４３に記憶させる。テスト受信部４１が、テスト送信部２４から受信する情報は、テスト実行コード、テスト実行条件などである。
【００５０】
テスト送信部４２は、プログラム作成支援装置１０から要求のあった情報をテスト実行コード記憶部４３から読出して、プログラム作成支援装置１０の通信部７１に送信する。
【００５１】
テスト実行コード記憶部４３は、通信部８１から送られてくる情報を記憶するメモリなどである。通信部８１からテスト実行コード記憶部４３に送られてくる情報は、テスト実行コード、テスト実行条件などである。
【００５２】
制御部８２では、本体実行条件判定部３５と、本体実行制御部３４と、テスト実行制御部４４と、テスト実行条件判定部４５とが接続されている。制御部８２では、本体実行制御部３４と、本体実行条件判定部３５と、テスト実行制御部４４と、テスト実行条件判定部４５とが、互いに情報を共有しながら動作する。なお、制御部８２内の通信は、直接構成要素間で行われてもよいし、他の構成要素を介して行われてもよい。
【００５３】
本体実行制御部３４は、本体実行コード記憶部３３がプログラム実行指示を記憶すると、プログラム実行指示を読出す。なお、プログラム実行指示は、本体受信部３１から直接本体実行制御部３４に送られてもよい。
【００５４】
本体実行制御部３４は、プログラム実行指示を読出すと、本体実行コード記憶部３３で記憶されている本体実行コードを読出し、テスト実行制御部４４にテスト実行コードの読出し指示を送信する。
【００５５】
本体実行制御部３４は、本体実行条件判定部３５に、本体実行条件を満たすか否かの判定指示を送信する。本体実行制御部３４は、本体実行条件を満たす場合には、本体実行コードを実行し、本体実行条件を満たさない場合には、本体実行コードを実行しない（スキップする）。
【００５６】
本体実行条件判定部３５は、本体実行条件を満たすか否かを判定し、判定結果を本体実行制御部３４に送信する。本体実行条件を満たす場合、本体実行条件判定部３５は、テスト実行条件判定部４５に、テスト実行条件を満たすか否かの判定指示を送信する。
【００５７】
テスト実行制御部４４は、テスト実行条件判定部４５に、テスト実行条件を満たすか否かの判定指示を送信する。テスト実行制御部４４は、テスト実行条件を満たす場合には、テスト実行コードを実行し、テスト実行条件を満たさない場合には、テスト実行コードを実行しない。
【００５８】
テスト実行条件判定部４５は、テスト実行条件を満たすか否かを判定し、判定結果をテスト実行制御部４４に送信する。
【００５９】
制御部８２は、本体プログラムがＮ本（Ｎは自然数）である場合、Ｎ本分の本体プログラムに対してループ処理を実行する。
【００６０】
出力部８３は、本体実行制御部３４から送られてくる動作指令を、信号を増幅するアンプ４を介してモータ２に出力し、テスト実行制御部４４から送られてくる動作指令を、アンプ４を介してモータ２に出力する。モータ２は、アンプ４を介して送られてくる動作指令に従って動作する。
【００６１】
このように、プログラム作成支援装置１０は、本体ソースコードにテストソースコードを混在させることなく、制御プログラムの本体ソースコードとテストソースコードとを各々個別に作成することができる。
【００６２】
また、プログラム作成支援装置１０は、本体プログラムの本体ソースコードを変更することなく、テストプログラムのテストソースコードを変更することによって、テスト内容または調整内容を変更することができる。
【００６３】
また、コントローラ３０は、本体プログラムの本体実行コードとテストプログラムのテスト実行コードとを、それぞれ個別の記憶領域に保存しているので、プログラム作成支援装置１０は、本体実行コードを変更することなく、テスト実行コードの追加、削除といった変更を容易に行うことができる。
【００６４】
また、プログラム作成支援装置１０は、モータ２のテスト調整が完了した後に本体プログラムの本体実行コードを変更することなく、テストプログラムのテスト実行コードを容易に除去することができる。
【００６５】
図２は、実施の形態１にかかる制御システムによる制御処理の手順を示すフローチャートである。制御システム１Ａのコントローラ３０では、本体実行制御部３４が、プログラム実行指示を読出すと、制御部８２が初期化処理を実行する（ステップＳ１１０）。初期化処理が完了した後、制御部８２が、本体実行コード記憶部３３で記憶されている本体プログラムを読出して、読出した本体プログラムに対する反復処理を開始する。ここでは、本体プログラムＰ１、本体プログラムＰ２の順番で本体プログラムの処理手順が規定されている場合について説明する。
【００６６】
本体実行条件判定部３５は、本体プログラムＰ１に対し、本体実行条件を満たすか否かを判定する。ここでは、本体実行条件として、「本体実行条件が成立する時には、本体プログラムＰ１の実行をスキップすること」が規定されている場合について説明する。この場合、本体実行条件判定部３５は、本体実行条件が成立するか否かを判定することで、本体プログラムＰ１の実行をスキップするか否かを判定する（ステップＳ１２０）。
【００６７】
本体プログラムＰ１の実行をスキップする条件が成立しない場合（ステップＳ１２０、Ｎｏ）、テスト実行条件判定部４５は、テスト実行条件を満たすか否かを判定する。ここでは、テスト実行条件として、「本体プログラムＰ１の実行前に実行するテストプログラムＱ１が存在する時には、本体プログラムＰ１の実行前にテストプログラムＱ１を実行する」ことが規定されている場合について説明する。この場合、テスト実行条件判定部４５は、本体プログラムＰ１の実行前に実行するテストプログラムＱ１があるか否かを判定する（ステップＳ１３０）。
【００６８】
本体プログラムＰ１の実行前に実行するテストプログラムＱ１がある場合（ステップＳ１３０、Ｙｅｓ）、テスト実行条件判定部４５は、本体プログラムＰ１の実行前に対してテスト実行条件を満たすと判定する。この場合、テスト実行制御部４４は、本体プログラムＰ１のテストプログラムＱ１を実行する（ステップＳ１４０）。その後、本体実行制御部３４は、本体プログラムＰ１を実行する（ステップＳ１５０）。
【００６９】
一方、本体プログラムＰ１の実行前に実行するテストプログラムＱ１がない場合（ステップＳ１３０、Ｎｏ）、テスト実行条件判定部４５は、本体プログラムＰ１の実行前に対してテスト実行条件を満たさないと判定する。この場合、テスト実行制御部４４は、テストプログラムＱ１を実行せず、本体実行制御部３４は、本体プログラムＰ１を実行する（ステップＳ１５０）。
【００７０】
本体プログラムＰ１の実行が完了すると、テスト実行条件判定部４５は、本体プログラムＰ１の実行後に対してテスト実行条件を満たすか否かを判定する。ここでは、テスト実行条件として、「本体プログラムＰ１の実行後に実行するテストプログラムＱ２が存在する時には、本体プログラムＰ１の実行後にテストプログラムＱ２を実行する」ことが規定されている場合について説明する。この場合、テスト実行条件判定部４５は、本体プログラムＰ１の実行後に実行するテストプログラムＱ２があるか否かを判定する（ステップＳ１６０）。
【００７１】
本体プログラムＰ１の実行後に実行するテストプログラムＱ２がある場合（ステップＳ１６０、Ｙｅｓ）、テスト実行条件判定部４５は、本体プログラムＰ１の実行後に対してテスト実行条件を満たすと判定する。この場合、テスト実行制御部４４は、本体プログラムＰ１のテストプログラムＱ２を実行する（ステップＳ１７０）。
【００７２】
その後、本体実行条件判定部３５は、本体プログラムＰ２に対し本体実行条件を満たすか否かを判定する。ここでは、本体実行条件として、「本体実行条件が成立する時には、本体プログラムＰ２の実行をスキップすること」が規定されている場合について説明する。この場合、本体実行条件判定部３５は、本体実行条件が成立するか否かを判定することで、本体プログラムＰ２の実行をスキップするか否かを判定する（ステップＳ１８０）。
【００７３】
一方、本体プログラムＰ１の実行後に実行するテストプログラムＱ２がない場合（ステップＳ１６０、Ｎｏ）、テスト実行条件判定部４５は、テスト実行条件を満たさないと判定する。この場合、テスト実行制御部４４は、テストプログラムＱ２を実行せず、本体実行条件判定部３５は、本体プログラムＰ２の実行をスキップするか否かを判定する（ステップＳ１８０）。
【００７４】
ステップＳ１２０において、本体プログラムＰ１の実行をスキップする条件が成立する場合（ステップＳ１２０、Ｙｅｓ）、本体実行制御部３４は、本体プログラムＰ１の実行をスキップする。この場合、本体実行条件判定部３５は、本体プログラムＰ２の実行をスキップするか否かを判定する（ステップＳ１８０）。
【００７５】
本体プログラムＰ２の実行をスキップする条件が成立しない場合（ステップＳ１８０、Ｎｏ）、テスト実行条件判定部４５は、テスト実行条件を満たすか否かを判定する。ここでは、テスト実行条件として、「本体プログラムＰ２の実行前に実行するテストプログラムＱ３が存在する時には、本体プログラムＰ２の実行前にテストプログラムＱ３を実行する」ことが規定されている場合について説明する。この場合、テスト実行条件判定部４５は、本体プログラムＰ２の実行前に実行するテストプログラムＱ３があるか否かを判定する（ステップＳ１９０）。
【００７６】
本体プログラムＰ２の実行前に実行するテストプログラムＱ３がある場合（ステップＳ１９０、Ｙｅｓ）、テスト実行条件判定部４５は、本体プログラムＰ２の実行前に対してテスト実行条件を満たすと判定する。この場合、テスト実行制御部４４は、本体プログラムＰ２のテストプログラムＱ３を実行する（ステップＳ２００）。その後、本体実行制御部３４は、本体プログラムＰ２を実行する（ステップＳ２１０）。
【００７７】
一方、本体プログラムＰ２の実行前に実行するテストプログラムＱ３がない場合（ステップＳ１９０、Ｎｏ）、テスト実行条件判定部４５は、本体プログラムＰ２の実行前に対してテスト実行条件を満たさないと判定する。この場合、テスト実行制御部４４は、テストプログラムＱ３を実行せず、本体実行制御部３４は、本体プログラムＰ２を実行する（ステップＳ２１０）。
【００７８】
本体プログラムＰ２の実行が完了すると、テスト実行条件判定部４５は、本体プログラムＰ２の実行後に対してテスト実行条件を満たすか否かを判定する。ここでは、テスト実行条件として、「本体プログラムＰ２の実行後に実行するテストプログラムＱ４が存在する時には、本体プログラムＰ２の実行後にテストプログラムＱ４を実行する」ことが規定されている場合について説明する。この場合、テスト実行条件判定部４５は、本体プログラムＰ２の実行後に実行するテストプログラムＱ４があるか否かを判定する（ステップＳ２２０）。
【００７９】
本体プログラムＰ２の実行後に実行するテストプログラムＱ４がある場合（ステップＳ２２０、Ｙｅｓ）、テスト実行条件判定部４５は、本体プログラムＰ２の実行後に対してテスト実行条件を満たすと判定する。この場合、テスト実行制御部４４は、本体プログラムＰ２のテストプログラムＱ４を実行する（ステップＳ２３０）。
【００８０】
一方、本体プログラムＰ２の実行後に実行するテストプログラムＱ４がない場合（ステップＳ２２０、Ｎｏ）、テスト実行条件判定部４５は、テスト実行条件を満たさないと判定する。この場合、テスト実行制御部４４は、テストプログラムＱ４を実行しない。
【００８１】
ステップＳ１８０において、本体プログラムＰ２の実行をスキップする条件が成立する場合（ステップＳ１８０、Ｙｅｓ）、本体実行制御部３４は、本体プログラムＰ２の実行をスキップする。これにより、制御部８２が、本体実行コード記憶部３３から読出した本体プログラムに対する反復処理を終了する。
【００８２】
なお、コントローラ３０による反復処理は、図２で説明した方法に限らない。例えば、コントローラ３０は、ユーザによって予め設定された時間間隔で周期的にステップＳ１２０からステップＳ２３０までの反復処理を実行してもよい。また、コントローラ３０は、特定の外部信号（例えば緊急停止ボタンの押下を検出した際にコントローラ３０に入力される信号）の入力を契機に反復処理を実行してもよい。
【００８３】
制御システム１Ａでは、テスト調整時には、テストプログラムＱ１〜Ｑ４が存在するので、ステップＳ１４０，Ｓ１７０，Ｓ２００，Ｓ２３０の処理が実行される。一方、制御システム１Ａでは、実運用時には、テストプログラムＱ１〜Ｑ４がコントローラ３０において無効化または削除されるので、ステップＳ１４０，Ｓ１７０，Ｓ２００，Ｓ２３０の処理は実行されない。
【００８４】
なお、制御システム１Ａは、本体実行条件を用いなくてもよい。この場合、プログラム作成支援装置１０は、本体実行条件指定部１２を備えていなくてもよい。また、コントローラ３０は、本体実行条件判定部３５を備えていなくてもよい。そして、図２におけるステップＳ１２０，Ｓ１８０の処理が省略される。
【００８５】
制御システム１Ａでは、テスト実行条件指定部２２が、本体プログラムの実行前にテスト実行コードを実行する条件である事前条件を、ユーザからの指示に従って指定可能となっている。また、制御システム１Ａでは、テスト実行条件指定部２２が、本体プログラムの実行後にテスト実行コードを実行する条件である事後条件を、ユーザからの指示に従って指定可能となっている。
【００８６】
テスト実行条件判定部４５は、設定された事前条件および事後条件に従って、テストプログラムのテスト実行コードを実行できるので、本体プログラムを変更すること無く、テストプログラムを実行することができる。事前条件が成立した場合に実行されるテスト実行コードの例は、本体プログラムの初期化である。事後条件が成立した場合に実行されるテスト実行コードの例は、本体プログラムの実行結果を用いた演算処理である。
【００８７】
また、制御システム１Ａでは、テスト調整が完了した後にテスト実行コードを容易に無効化または削除できるので、本体実行コードが実行される際にテスト実行コードが誤って実行されることを容易に防止できる。
【００８８】
図３は、実施の形態１にかかるプログラム作成支援装置によるデータ作成処理の手順を示すシーケンス図である。ここでは、ソースコードの編集から実行条件の指定までの処理について説明する。プログラム作成支援装置１０が作成するデータには、本体ソースコード、本体実行コード、本体実行条件、テストソースコード、テスト実行コード、テスト実行条件などが含まれている。図３に示す、本体ソースコード編集部１１、テストソースコード編集部２１、本体実行コード作成部１３、テスト実行コード作成部２３、本体実行条件指定部１２、およびテスト実行条件指定部２２からなる構成要素群５１は、プログラム作成支援装置１０に配置されている。
【００８９】
ユーザによって本体ソースコードの編集指示が入力部７２に入力されると、この編集指示が本体ソースコード編集部１１に送られ（ｓｔ１）、本体ソースコード編集部１１が、編集指示に従って本体ソースコードを編集する。
【００９０】
また、ユーザによってテストソースコードの編集指示が入力部７２に入力されると、この編集指示がテストソースコード編集部２１に送られ（ｓｔ２）、テストソースコード編集部２１が、編集指示に従ってテストソースコードを編集する。なお、ｓｔ１の処理とｓｔ２の処理とは、何れが先に実行されてもよい。
【００９１】
ｓｔ１の処理の後、ユーザによって本体実行コードの作成指示が入力部７２に入力されると、この作成指示が本体ソースコード編集部１１に送られる（ｓｔ３）。これにより、本体ソースコード編集部１１が、本体実行コードの作成指示を本体実行コード作成部１３に送信し（ｓｔ４）、本体実行コード作成部１３が本体実行コードを作成する。
【００９２】
ｓｔ２の処理の後、ユーザによってテスト実行コードの作成指示が入力部７２に入力されると、この作成指示がテストソースコード編集部２１に送られる（ｓｔ５）。これにより、テストソースコード編集部２１が、テスト実行コードの作成指示をテスト実行コード作成部２３に送信し（ｓｔ６）、テスト実行コード作成部２３がテスト実行コードを作成する。なお、ｓｔ３の処理とｓｔ５の処理とは、何れが先に実行されてもよい。
【００９３】
以下で説明するｓｔ７〜ｓｔ９の処理においては、本体プログラムが図２で説明した本体プログラムＰ１である場合について説明する。
【００９４】
本体プログラムＰ１に対する本体実行条件を指定する指示が、ユーザによって入力部７２に入力されると、この指定指示が本体実行条件指定部１２に送られる（ｓｔ７）。これにより、本体実行条件指定部１２が、ユーザ指示に従って、本体プログラムＰ１に対する本体実行条件を作成する。ここでの本体実行条件は、図２のステップＳ１２０で用いられる本体実行条件である。
【００９５】
また、本体プログラムＰ１を実行する前の事前条件を指定する指示が、ユーザによって入力部７２に入力されると、この指定指示がテスト実行条件指定部２２に送られる（ｓｔ８）。これにより、テスト実行条件指定部２２が、ユーザ指示に従って、本体プログラムＰ１に対する事前条件を作成する。ここでの事前条件は、図２のステップＳ１３０で用いられるテスト実行条件である。
【００９６】
また、本体プログラムＰ１を実行した後の事後条件を指定する指示が、ユーザによって入力部７２に入力されると、この指定指示がテスト実行条件指定部２２に送られる（ｓｔ９）。これにより、テスト実行条件指定部２２が、ユーザ指示に従って、本体プログラムＰ１に対する事後条件を作成する。ここでの事後条件は、図２のステップＳ１６０で用いられるテスト実行条件である。
【００９７】
なお、ｓｔ７〜ｓｔ９の処理は、何れが先に実行されてもよい。すなわち、本体実行条件、事前条件、および事後条件は、何れの順番で作成されてもよい。また、ｓｔ７〜ｓｔ９の処理は、ｓｔ１〜ｓｔ６のうちの何れかの処理よりも先に実行されてもよい。また、入力部７２は、本体実行条件を指定した指示を、本体ソースコード編集部１１を介して、本体実行条件指定部１２に送ってもよい。また、入力部７２は、事前条件を指定した指示および事後条件を指定した指示を、テストソースコード編集部２１を介して、テスト実行条件指定部２２に送ってもよい。
【００９８】
このように、プログラム作成支援装置１０は、ｓｔ８の処理のように、本体プログラムを実行する前に実行するテストプログラムを事前条件として設定できる。すなわち、制御システム１Ａでは、本体プログラムの本体実行コードの動作確認および調整を行うための試験データの準備といった、本体実行コードの実行開始前に実行させたいテストプログラムのテスト実行コードを、ユーザ指示に従って、事前条件として指定できる。
【００９９】
また、プログラム作成支援装置１０は、ｓｔ９の処理のように、本体プログラムを実行した後に実行するテストプログラムを事後条件として設定できる。すなわち、制御システム１Ａでは、本体プログラムの本体実行コードの実行結果が所望の結果を得られているか否かを判定すること、実行結果を記録することといった、本体実行コードの実行完了後に実行させたいテストプログラムのテスト実行コードを、ユーザ指示に従って、事後条件として指定できる。
【０１００】
図４は、実施の形態１にかかる制御システムによるデータ送信処理およびデータ保存処理の手順を示すシーケンス図である。ここでは、実行コードの送信から実行コードの保存までの処理について説明する。プログラム作成支援装置１０がコントローラ３０に送信するデータには、本体実行コードおよびテスト実行コードが含まれている。図４に示す、通信部７１、本体送信部１４、およびテスト送信部２４からなる構成要素群５２は、プログラム作成支援装置１０に配置されている。また、図４に示す、通信部８１、本体受信部３１、テスト受信部４１、本体実行コード記憶部３３、およびテスト実行コード記憶部４３からなる構成要素群６１は、コントローラ３０に配置されている。
【０１０１】
ユーザによって、実行コードのコントローラ３０への送信指示が、プログラム作成支援装置１０の入力部７２に入力されると、この送信指示が通信部７１に送られる（ｓｔ１１）。
【０１０２】
通信部７１は、本体実行コードのコントローラ３０への送信指示である本体送信指示を、本体送信部１４に送信する（ｓｔ１２）。これにより、本体送信部１４が、本体実行コードをコントローラ３０の通信部８１に送信する処理である本体送信処理を実行する（ｓｔ１３）。
【０１０３】
コントローラ３０は、通信部８１が本体実行コードを受信すると、本体実行コードを受信したことを示す本体受信情報を本体受信部３１に送信する（ｓｔ１４）。本体受信部３１は、本体受信情報を受信すると、本体実行コードの保存指示を本体実行コード記憶部３３に送信する（ｓｔ１５）。本体実行コード記憶部３３は、本体実行コードを保存する。
【０１０４】
また、通信部７１は、ユーザから実行コードの送信指示を受信すると、テスト実行コードのコントローラ３０への送信指示であるテスト送信指示を、テスト送信部２４に送信する（ｓｔ１６）。これにより、テスト送信部２４が、テスト実行コードをコントローラ３０の通信部８１に送信する処理であるテスト送信処理を実行する（ｓｔ１７）。
【０１０５】
コントローラ３０は、通信部８１がテスト実行コードを受信すると、テスト実行コードを受信したことを示すテスト受信情報をテスト受信部４１に送信する（ｓｔ１８）。テスト受信部４１は、テスト受信情報を受信すると、テスト実行コードの保存指示をテスト実行コード記憶部４３に送信する（ｓｔ１９）。テスト実行コード記憶部４３は、テスト実行コードを保存する。
【０１０６】
ｓｔ１５の処理で保存された本体実行コードは、図２のステップＳ１５０、およびステップＳ２１０で用いられる本体プログラムＰ１，Ｐ２に対応している。ｓｔ１９の処理で保存されたテスト実行コードは、図２のステップＳ１４０，Ｓ１７０，Ｓ２００，Ｓ２３０で用いられるテストプログラムＱ１〜Ｑ４に対応している。
【０１０７】
なお、図４では図示していないが、本体実行条件についても、ｓｔ１１〜ｓｔ１５と同様の処理によって送信および保存が行われる。この処理で保存された本体実行条件は、図２のステップＳ１２０，Ｓ１８０で用いられる。
【０１０８】
また、テスト実行条件についても、ｓｔ１１，ｓｔ１６〜ｓｔ１９と同様の処理によって送信および保存が行われる。この処理で保存されたテスト実行条件は、図２のステップＳ１３０，Ｓ１６０，Ｓ１９０，Ｓ２２０で用いられる。
【０１０９】
このように、本体プログラムの本体実行コードと、テストプログラムのテスト実行コードとは、別々に作成されているので、コントローラ３０は、本体プログラムの本体実行コードと、テストプログラムのテスト実行コードとの各々を、別々の記憶部に格納することができる。これにより、制御システム１Ａは、本体実行コードおよびテスト実行コードの管理が容易となる。
【０１１０】
図５は、実施の形態１にかかる制御システムによる制御プログラムの実行処理の手順を示すシーケンス図である。ここでは、本体プログラムおよびテストプログラムの実行処理について説明する。図５に示す、通信部８１、本体実行制御部３４、本体実行条件判定部３５、テスト実行制御部４４、テスト実行条件判定部４５、本体実行コード記憶部３３、およびテスト実行コード記憶部４３からなる構成要素群６２は、コントローラ３０に配置されている。
【０１１１】
ユーザによって、制御プログラムの実行指示が、プログラム作成支援装置１０に入力されると、この実行指示がコントローラ３０の通信部８１に送信される（ｓｔ２１）。通信部８１は、制御プログラムの実行指示を、本体実行制御部３４に送信する（ｓｔ２２）。
【０１１２】
本体実行制御部３４は、本体プログラムの読出し処理を実行する（ｓｔ２３）。具体的には、本体実行制御部３４は、本体実行コード記憶部３３から、本体プログラムを読出す。
【０１１３】
また、本体実行制御部３４は、テストプログラムの読出し指示を、テスト実行制御部４４に送信する（ｓｔ２４）。テスト実行制御部４４は、テストプログラムの読出し処理を実行する（ｓｔ２５）。具体的には、テスト実行制御部４４は、テスト実行コード記憶部４３から、テストプログラムを読出す。
【０１１４】
この後、コントローラ３０では、本体プログラムの本数分のループ処理が実行される。１番目の本体プログラムに対し、コントローラ３０は、処理１０１を実行する。処理１０１では、本体実行制御部３４が、本体実行条件の判定指示を本体実行条件判定部３５に送信する（ｓｔ２６）。
【０１１５】
処理１０１に含まれる処理２０１は、本体実行条件が成立する場合の処理であり、処理１０１に含まれる処理２０２は、本体実行条件が成立しない場合の処理である。
【０１１６】
まず、本体実行条件が成立する場合の処理２０１について説明する。処理２０１では、本体実行条件判定部３５は、事前条件の判定指示をテスト実行制御部４４に送信する（ｓｔ２７）。
【０１１７】
処理２０１に含まれる処理３０１は、事前条件が成立する場合の処理であり、処理２０１に含まれる処理３０２は、事前条件が成立しない場合の処理である。事前条件が成立する場合の処理３０１では、テスト実行制御部４４は、事前条件の判定指示をテスト実行条件判定部４５に送信する（ｓｔ２８）。ここでのテスト実行条件判定部４５は、事前条件が成立すると判定する。そして、テスト実行条件判定部４５は、判定結果として、事前条件に対応するテストプログラムを実行させる指示をテスト実行制御部４４に送信する（ｓｔ２９）。これにより、テスト実行制御部４４は、事前条件が成立する場合のテストプログラムを実行する（ｓｔ３０）。なお、本体実行条件判定部３５は、事前条件の判定指示を、テスト実行制御部４４を介さずに、直接テスト実行条件判定部４５に送信してもよい。
【０１１８】
テスト実行制御部４４は、事前条件の判定結果として、テストプログラムを実行したことを示す判定結果（実行）を本体実行条件判定部３５に送信する（ｓｔ３１）。ｓｔ３１の処理は、ｓｔ２７に対する応答である。
【０１１９】
事前条件が成立しない場合の処理３０２でも、上述したｓｔ２８およびｓｔ２９の処理が実行される。この場合のテスト実行条件判定部４５は、事前条件が成立しないと判定し、判定結果として、事前条件に対応するテストプログラムを実行させない指示をテスト実行制御部４４に送信する。テスト実行制御部４４は、事前条件の判定結果として、テストプログラムを実行しなかったことを示す判定結果（非実行）を本体実行条件判定部３５に送信する（ｓｔ３２）。ｓｔ３２の処理は、ｓｔ２７に対する応答である。
【０１２０】
処理３０１または処理３０２が完了した後、本体実行条件判定部３５は、ｓｔ２７に対する判定結果を本体実行制御部３４に送信する。すなわち、本体実行条件判定部３５は、ｓｔ２７に対する応答として、処理３０１または処理３０２が実行されたことを示す判定結果（実行）を本体実行制御部３４に送信する（ｓｔ３３）。
【０１２１】
ｓｔ３３の処理の後、本体実行制御部３４は、１番目の本体プログラムを実行する（ｓｔ３４）。そして、本体実行制御部３４は、事後条件の判定指示を本体実行条件判定部３５に送信する（ｓｔ３５）。本体実行条件判定部３５は、事後条件の判定指示をテスト実行制御部４４に送信する（ｓｔ３６）。
【０１２２】
処理２０１に含まれる処理４０１は、事後条件が成立する場合の処理であり、処理２０１に含まれる処理４０２は、事後条件が成立しない場合の処理である。事後条件が成立する場合の処理４０１では、テスト実行制御部４４は、テスト実行条件判定部４５に事後条件の判定指示を送信する（ｓｔ３７）。ここでの、テスト実行条件判定部４５は、事後条件が成立すると判定する。そして、テスト実行条件判定部４５は、判定結果として、事後条件に対応するテストプログラムを実行させる指示をテスト実行制御部４４に送信する（ｓｔ３８）。これにより、テスト実行制御部４４は、事後条件が成立する場合のテストプログラムを実行する（ｓｔ３９）。なお、本体実行条件判定部３５は、事後条件の判定指示を、テスト実行制御部４４を介さずに、直接テスト実行条件判定部４５に送信してもよい。
【０１２３】
テスト実行制御部４４は、事後条件の判定結果として、テストプログラムを実行したことを示す判定結果（実行）を本体実行条件判定部３５に送信する（ｓｔ４０）。ｓｔ４０の処理は、ｓｔ３６に対する応答である。
【０１２４】
事後条件が成立しない場合の処理４０２でも、上述したｓｔ３７およびｓｔ３８の処理が実行される。この場合のテスト実行条件判定部４５は、事後条件が成立しないと判定し、判定結果として、事後条件に対応するテストプログラムを実行させない指示をテスト実行制御部４４に送信する。テスト実行制御部４４は、事後条件の判定結果として、テストプログラムを実行しなかったことを示す判定結果（非実行）を本体実行条件判定部３５に送信する（ｓｔ４１）。ｓｔ４１の処理は、ｓｔ３６に対する応答である。
【０１２５】
つぎに、本体実行条件が成立しない場合の処理２０２について説明する。処理２０２では、本体実行条件判定部３５は、本体実行条件の判定結果として、本体プログラムを実行しなかったことを示す判定結果（非実行）を本体実行制御部３４に送信する（ｓｔ４２）。ｓｔ４２の処理は、ｓｔ２６に対する応答である。
【０１２６】
ここで、比較例の実行コード（比較例の制御プログラム）について説明する。比較例の実行コードは、本体部のソースコードと、テスト調整部のソースコードとが一体化されたソースコードから作成された実行コードである。テスト調整部のソースコードは、テスト調査用の実行コードに対応するソースコードである。
【０１２７】
比較例の制御プログラムを用いた場合のテスト処理の手順について説明する。この場合の制御プログラムに対する反復処理では、１番目の制御プログラム、２番目の制御プログラムの順番で制御プログラムが実行される。
【０１２８】
１番目の制御プログラムが実行される際には、１番目の制御プログラムに含まれる本体部とテスト調査部とが実行される。そして、２番目の制御プログラムが実行される際には、２番目の制御プログラムに含まれる本体部とテスト調査部とが実行される。そして、テスト調査が完了した後に、１番目の制御プログラムのソースコードからテスト調査部が削除され、２番目の制御プログラムのソースコードからテスト調査部が削除される。このような比較例の制御プログラムでは、テスト調整を行う実行コードが、種々の論理和を用いている場合があるので、テスト調整の完了後にテスト調整を行う実行コードを削除することが困難である。
【０１２９】
ところで、ユーザの運用上、動作確認が完了した実行コードに対して変更が禁止される場合がある。この場合、比較例の制御プログラムでは、テスト調整を行う実行コードもコントローラの記憶領域に残存することになる。したがって、無駄な記憶領域を消費する。
【０１３０】
また、動作確認が完了した実行コードに対して変更が禁止されていない場合であっても、比較例の実行コードの場合、制御プログラムのテスト調整が完了した後、制御プログラムからテスト調整用の実行コードが除去されると実行コードに変更が生じる。このため、比較例の実行コードの場合、変更後の実行コードが所望の動作を行うか否かを改めて確認する必要がある。
【０１３１】
一方、本実施の形態の制御システム１Ａは、テスト実行コードと本体実行コードとを分離して別々に記憶させているので、本体実行コードを変更することなく、テスト実行コードのみを容易に無効化または削除することができる。これにより、テスト調整の完了したテスト実行コードが、コントローラ３０の記憶領域を無駄に消費することを回避できる。
【０１３２】
また、本実施の形態の制御システム１Ａでは、テスト実行コードが削除されても、本体実行コードには変更が生じないので、本体実行コードが所望の動作を行うか否かを改めて確認する必要がない。
【０１３３】
このように、実施の形態１によれば、本体実行コードとテスト実行コードとを、別々に作成しているので、本体実行コードが実行される際にテスト実行コードが誤って実行されることを容易に防止できる。
【０１３４】
また、制御システム１Ａは、テスト調整を実行するためのテスト実行コードを、本体実行コードから分離し、それぞれを独立させた状態で編集、実行、除去などを実行することが可能となる。これにより、制御システム１Ａは、テストプログラムの編集、実行、除去などを容易に実行することが可能となる。
【０１３５】
実施の形態２．
つぎに、図６から図９を用いて実施の形態２について説明する。実施の形態２では、モーション制御における指令値の演算用データ（例えば、後述する基準角度）に基づいて、テストソースコードを自動作成する。
【０１３６】
図６は、実施の形態２にかかる制御システムの構成を示す図である。図６の各構成要素のうち図１に示す実施の形態１の制御システム１Ａと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１３７】
制御システム１Ｂは、制御システム１Ａの構成要素に加えて、プログラム作成支援装置１０内に補助ソースコード作成部であるテストソースコード作成部２０を備えている。テストソースコード作成部２０は、テストソースコード編集部２１に接続されている。
【０１３８】
テストソースコード作成部２０は、モーション制御における指令値の演算用データに基づいて、モータ２のテスト調整に用いられるテストソースコードを自動作成する。モーション制御における指令は、コントローラ３０がアンプ４に出力する出力値である。モーション制御における指令の例は、移動量、速度、トルクなどの目標値である。
【０１３９】
テストソースコード作成部２０は、モーション制御における指令値に対して、コントローラ３０で実行する本体プログラムの本体実行コードが、所望の演算を実行しているか否かを判定するためのテストプログラムのソースコードを作成する。これにより、プログラム作成支援装置１０は、テストプログラムの作成に要するユーザの工数を削減することが可能になる。
【０１４０】
つぎに、テストソースコード作成部２０による、テストソースコードの作成処理例について説明する。図７は、実施の形態２にかかる制御システムが制御するモータに接続された機構部を説明するための図である。図８は、実施の形態２にかかる制御システムに対して設定される制御用パラメータの第１例を示す図である。図９は、実施の形態２にかかる制御システムが用いる運転パターンの第１例を示す図である。
【０１４１】
プログラム作成支援装置１０は、図８に示した制御用パラメータに基づいて、図９に示す運転パターンを作成する。なお、図７では、プログラム作成支援装置１０の図示を省略している。
【０１４２】
ワークを所定の位置に移動させるなどの用途で用いられるワーク搬送装置は、モータ軸（以下、制御軸６という）を有したモータ２と、制御軸６に接続された機構部分（以下、機構部５という）とを備えている。コントローラ３０は、制御対象であるモータ２の制御軸６を駆動することによって、機構部５の位置を制御する。このときの、機構部５の位置を示す運転パターンが、図９に示す運転パターンである。
【０１４３】
モーション制御を行わせる場合、コントローラ３０からアンプ４に対して指令を与える手段の一例として、図８に示すような、制御の基準とする回転軸の回転位置（基準角度）に対する機構部５の目標位置、および目標位置と目標位置との間の区間の補間方法を与える手段がある。制御の基準とする回転軸は、制御軸６以外の、（図７には示されていない）他のモータ軸であってもよい。あるいは、制御の基準とする回転軸は、コントローラ３０によって模擬される仮想的なモータ軸であってもよい。
【０１４４】
プログラム作成支援装置１０は、図８に示すような制御用パラメータが設定されると、この制御用パラメータに基づいて、図９に示す運転パターン（波形７１Ａ，７２Ａ）を算出する。この運転パターン（波形７１Ａ，７２Ａ）は、コントローラ３０で実行する制御プログラムの演算結果として算出される指令値と一致し、テストソースコード作成部２０に対する入力データとなる。
【０１４５】
図９に示すグラフの横軸は、制御軸６の基準角度であり、縦軸は制御軸６に接続された機構部５の目標位置である。波形７１Ａは、機構部５の目標位置の波形であり、波形７２Ａは、機構部５の目標速度である。テストソースコード作成部２０は、図９に示した波形７１Ａ，７２Ａに基づいて、テストソースコードを作成する。テストソースコードは、機構部５の目標位置と、実際の位置との差分が許容範囲内であるか否かを判定するソースコードである。
【０１４６】
図９では、例えば、基準角度が９０度である時の機構部５の目標位置は、中心位置（０ｍｍ）であり、基準角度が２１０度である時の機構部５の目標位置は、中心位置から順方向に１００ｍｍ離れた位置であることを示している。
【０１４７】
コントローラ３０は、基準角度および目標位置に基づいて、機構部５を目標位置に移動させることができるようにモータ２の回転方向および回転速度の指令値を演算し、演算結果としての指令値をアンプ４に出力する。
【０１４８】
ユーザが、プログラム作成支援装置１０を用いて作成する本体プログラムの本体ソースコードは、基準角度および目標位置を組とする制御用パラメータを入力とする。この本体ソースコードは、制御用パラメータを入力とし、モータ２の回転方向および回転速度といったモータ２の駆動を制御する指定値を演算して求める処理を実行する。
【０１４９】
制御用パラメータとしては、制御対象（図７の例では順方向または逆方向に直線移動する機構部５）が所望の動作を得られるように、任意の点数の目標位置が指定可能である。図９に示した例では（Ａ）、（Ｂ）、および（Ｃ）の３点の目標位置が、ユーザによって指定された場合を示している。
【０１５０】
図８に示す例では、区間Ａ−Ｂは、開始点が０度であり、終了点が９０度である。区間Ａ−Ｂにおける目標位置は０ｍｍであり、区間Ａ−Ｂはスプライン補間されている。また、区間Ｂ−Ｃは開始点が９０度であり、終了点が２１０度である。区間Ｂ−Ｃにおける目標位置は１００ｍｍであり、区間Ｂ−Ｃはスプライン補間されている。また、区間Ｃ−Ａにおける開始点が２１０度であり、終了点が３６０度である。区間Ｃ−Ａにおける目標位置は０ｍｍであり、区間Ｃ−Ａはスプライン補間されている。なお、機構部５の加減速を調整するために、目標位置は、ユーザによって追加されてもよい。
【０１５１】
図１０は、実施の形態２にかかる制御システムに対して設定される制御用パラメータの第２例を示す図である。図１１は、実施の形態２にかかる制御システムが用いる運転パターンの第２例を示す図である。図１０に示す制御用パラメータは、図８に示す制御用パラメータに、新たな目標位置を追加した場合の運転パターン例を示している。
【０１５２】
プログラム作成支援装置１０は、図１０に示した制御用パラメータに基づいて、図１１に示す運転パターンを作成する。ここでは、図９に示した目標位置の（Ｂ）から（Ｃ）までの間の機構部５の加減速を調整するために、図１１に示す（Ｄ）および（Ｅ）の２点の目標位置が追加された場合について説明する。波形７１Ｂは、機構部５の目標位置の波形であり、波形７２Ｂは、機構部５の目標速度である。
【０１５３】
図１０に示す例では、区間Ａ−Ｂおよび区間Ｃ−Ａは、図８で説明したとおりである。図１０に示す例では、区間Ｂ−Ｄは、開始点が９０度であり、終了点が１２０度である。区間Ｂ−Ｄにおける目標位置は１０ｍｍであり、区間Ｂ−Ｄはスプライン補間されている。また、区間Ｄ−Ｅは、開始点が１２０度であり、終了点が１８０度である。区間Ｄ−Ｅにおける目標位置は９０ｍｍであり、区間Ｄ−Ｅはスプライン補間されている。また、区間Ｅ−Ｃは、開始点が１８０度であり、終了点が２１０度である。区間Ｅ−Ｃにおける目標位置は１００ｍｍであり、区間Ｅ−Ｃはスプライン補間されている。
【０１５４】
プログラム作成支援装置１０は、ユーザが作成した本体プログラムおよび制御用パラメータによって制御対象が所望の動作を得られているか否かを確認する。プログラム作成支援装置１０は、制御対象が所望の動作を得られているか否かを確認するためには、ある基準角度における、機構部５の目標位置と実際の装置における機構部５の実際の位置との差分が、実際の装置で許容されている範囲内であることが確認できればよい。実際の装置は、機構部５およびモータ２を備えたワーク搬送装置などである。
【０１５５】
ここで、ある基準角度とは、プログラム作成支援装置１０を用いてユーザが指定した値（図１１では、（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）、（Ｅ）の５点の基準角度）に加えて、例えば、図９または図１１のグラフに示されている区間Ａ−Ｂ，Ｂ−Ｃ，Ｃ−Ａの何れかに含まれる任意の基準角度ω（０度≦ω≦３６０度）のことを指す。なお、図１１に示した例では、基準角度の最大値が３６０度の場合を示しているが、３６０度よりも大きな値が基準角度の最大値として設定されてもよい。
【０１５６】
各区間内の任意の基準角度ωに対する機構部５の目標位置は、図９または図１１の例では、ユーザによって目標位置の補間方法が「スプライン補間」と指定されているので、テストソースコード作成部２０は、演算によって目標値を算出することができる。
【０１５７】
テストソースコード作成部２０は、このような演算によって算出可能な任意の基準角度ωに対する機構部５の目標位置と、実際の装置における機構部５の実際の位置との差分が実際の装置で許容されている範囲内であるか否かを判定する処理を、テストプログラムのテストソースコードとして作成する。これにより、制御用パラメータの設定値の追加、変更、または削除が生じた場合に、実際の装置が所望の動作を得ているか否かを確認するためのテストソースコードを、ユーザが作成または修正する手間を省くことが可能となる。
【０１５８】
なお、本体実行コード記憶部３３とテスト実行コード記憶部４３とは、物理的に異なる記憶装置であってもよい。これにより、本体実行コードを格納する記憶装置の記憶容量を逼迫せずにテスト実行コードを一時的にコントローラ３０に書き込みながら、本体プログラムのテスト調整を実行することができる。また、テスト調整の完了後に制御プログラムの本体部以外のテスト実行コードの無効化または除去を行うためのユーザ操作を簡略化できる。
【０１５９】
本体実行コード記憶部３３とテスト実行コード記憶部４３とが、物理的に異なる別々の記憶装置である場合、本体実行コード記憶部３３が本体実行コード記憶装置となり、テスト実行コード記憶部４３がテスト実行コード記憶装置、すなわち補助実行コード記憶装置となる。
【０１６０】
また、本体実行コード記憶部３３とテスト実行コード記憶部４３とを物理的に異なる記憶装置とし、かつテスト実行コード記憶部４３となる記憶装置をコントローラ３０から着脱可能な記憶装置（例えば、可搬性の外部記憶装置）としてもよい。これにより、テスト実行コード記憶部４３となる記憶装置をコントローラ３０から取り外すだけで、テスト実行コードをコントローラ３０から除去することができる。
【０１６１】
また、制御部８２は、テスト実行コードのキャッシュメモリへのアクセスを無効としてもよい。これにより、キャッシュメモリへは、テスト実行コードが格納されず、本体実行コードが格納されることとなる。この結果、テスト実行コードが実行されても、本体実行コードのキャッシュメモリからのヒット率（キャッシュ性能）が低下することを防止できる。すなわち、テスト実行コードがある場合と、テスト実行コードが無い場合とで、キャッシュメモリから本体実行コードを読出すことができる確率を同じにすることができる。したがって、制御部８２は、実運用時と同じキャッシュメモリのヒット率で本体実行コードを実行させながら、本体プログラムのテスト調整を実行することができる。
【０１６２】
このように、実施の形態２では、テストソースコード作成部２０が、モーション制御における指令値の演算用データに基づいて、テストソースコードを自動作成している。これにより、制御用パラメータの設定値の追加、変更、または削除が生じた場合に、実際の装置が所望の動作を得ているか否かを確認するためのテストソースコードを、ユーザが作成または修正する手間を省くことが可能となる。
【０１６３】
ここで、実施の形態１，２で説明したプログラム作成支援装置１０のハードウェア構成について説明する。図１２は、実施の形態１，２にかかるプログラム作成支援装置を実現するハードウェア構成例を示す図である。
【０１６４】
プログラム作成支援装置１０は、図１２に示した入力装置１５１、プロセッサ１５２、メモリ１５３、通信装置１５５、および出力装置１５４により実現することができる。プロセッサ１５２の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、ＤＳＰ（Digital  Signal  Processor）ともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ１５３の例は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）である。
【０１６５】
プログラム作成支援装置１０は、プロセッサ１５２が、メモリ１５３で記憶されている、プログラム作成支援装置１０の動作を実行するための、コンピュータで実行可能なプログラム作成支援プログラムを読出して実行することにより実現される。プログラム作成支援装置１０の動作を実行するためのプログラムであるプログラム作成支援プログラムは、プログラム作成支援装置１０の手順または方法をコンピュータに実行させるものであるともいえる。
【０１６６】
プログラム作成支援装置１０で実行されるプログラム作成支援プログラムは、本体ソースコード編集部１１と、本体実行条件指定部１２と、本体実行コード作成部１３と、テストソースコード編集部２１と、テスト実行条件指定部２２と、テスト実行コード作成部２３とを含むモジュール構成となっており、これらが主記憶装置上にロードされ、これらが主記憶装置上に生成される。
【０１６７】
メモリ１５３は、プロセッサ１５２が各種処理を実行する際の一時メモリに使用される。メモリ１５３は、例えば、プログラム作成支援プログラム、本体実行コード、テスト実行コード、本体ソースコード、テストソースコード、本体実行条件、事前条件、事後条件などを記憶する。
【０１６８】
入力装置１５１は、入力部７２の機能を有している。入力装置１５１は、ユーザによって入力される情報を受付けるインタフェース装置であり、受付けた情報をプロセッサ１５２に送る。出力装置１５４は、プロセッサ１５２が作成した画面データを表示装置３などの外部装置に出力する。通信装置１５５は、通信部７１の機能を有している。通信装置１５５は、コントローラ３０との間で通信を実行する。
【０１６９】
制御プログラムの作成を支援するプログラム作成支援プログラムは、インストール可能な形式または実行可能な形式のファイルで、コンピュータが読み取り可能な記憶媒体に記憶されてコンピュータプログラムプロダクトとして提供されてもよい。また、プログラム作成支援プログラムは、インターネットなどのネットワーク経由でプログラム作成支援装置１０に提供されてもよい。
【０１７０】
なお、プログラム作成支援装置１０の機能について、一部を専用回路などの専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【０１７１】
コントローラ３０は、プログラム作成支援装置１０と同様のハードウェア構成を有している。コントローラ３０の機能について、一部を専用回路などの専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【０１７２】
以上の実施の形態に示した構成は、一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、実施の形態同士を組み合わせることも可能であるし、要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０１７３】
１Ａ，１Ｂ  制御システム、２  モータ、３  表示装置、４  アンプ、５  機構部、６  制御軸、１０  プログラム作成支援装置、１１  本体ソースコード編集部、１２  本体実行条件指定部、１３  本体実行コード作成部、１４，３２  本体送信部、１５，３１  本体受信部、２０  テストソースコード作成部、２１  テストソースコード編集部、２２  テスト実行条件指定部、２３  テスト実行コード作成部、２４，４２  テスト送信部、２５，４１  テスト受信部、３０  コントローラ、３３  本体実行コード記憶部、３４  本体実行制御部、３５  本体実行条件判定部、４３  テスト実行コード記憶部、４４  テスト実行制御部、４５  テスト実行条件判定部、７１，８１  通信部、７２  入力部、８２  制御部、８３  出力部、１５１  入力装置、１５２  プロセッサ、１５３  メモリ、１５４  出力装置、１５５  通信装置。
【要約】
制御システム（１Ａ）が、コントローラ（３０）と、コントローラ（３０）が装置の制御に用いるプログラムの作成を支援するプログラム作成支援装置（１０）とを有し、プログラムは、装置への正式な制御を行う制御プログラムと、装置へのテスト処理を制御するテストプログラムとを含み、プログラム作成支援装置（１０）は、制御プログラムの実行コードである本体実行コードを作成する本体実行コード作成部（１３）と、装置へのテスト調整処理を制御するテストプログラムの実行コードであるテスト実行コードを作成するテスト実行コード作成部（２３）と、テスト実行コードを実行する条件であるテスト実行条件を作成するテスト実行条件指定部（２２）と、を備え、本体実行コードとテスト実行コードとを、別々に作成し、コントローラ（３０）は、本体実行コード、テスト実行コード、およびテスト実行条件を用いて装置を制御する。【図１】
0006808102.tif 000002
【図２】
0006808102.tif 000003
【図３】
0006808102.tif 000004
【図４】
0006808102.tif 000005
【図５】
0006808102.tif 000006
【図６】
0006808102.tif 000007
【図７】
0006808102.tif 000008
【図８】
0006808102.tif 000009
【図９】
0006808102.tif 000010
【図１０】
0006808102.tif 000011
【図１１】
0006808102.tif 000012
【図１２】
0006808102.tif 000013