以下に、本開示の実施の形態にかかる制御システム、プログラム作成支援装置、プログラム作成支援方法、およびプログラム作成支援プログラムを図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの開示が限定されるものではない。
実施の形態1.
図1は、実施の形態1にかかる制御システムの構成を示す図である。制御システム1Aは、プログラム作成支援装置10と、コントローラ30とを備えている。プログラム作成支援装置10は、表示装置3に接続され、コントローラ30は、アンプ4を介してモータ2に接続されている。
コントローラ30は、駆動機器であるモータ2を制御するコンピュータである。プログラム作成支援装置10は、コントローラ30がモータ2を制御する際に用いる制御プログラムを作成するコンピュータである。
プログラム作成支援装置10は、ユーザからの指示に従って、制御プログラムを作成する。また、プログラム作成支援装置10は、ユーザからの指示に従って、制御プログラムを実行する条件である実行条件を作成する。例えば、制御プログラムが制御プログラムPA,PB,PCを含んでいる場合がある。この場合において、制御プログラムPAだけを実行させたい場合、制御プログラムPBをスキップさせたい場合、制御プログラムPCの実行を特定回数(例えば、10回)だけ繰り返したい場合などがある。これらの処理を実行させるための条件が実行条件である。例えば、実行条件において、「制御プログラムPAが存在する場合には、制御プログラムPAをスキップさせる」ということが規定されている場合、コントローラ30は、制御プログラムPAが存在する場合に、制御プログラムPAをスキップさせる。
本実施の形態のプログラム作成支援装置10は、モータ2の制御を行う際に用いられる本体部のソースコードと、本体部以外のソースコードとを別々に作成し、別々にコンパイルすることで、別々の実行コードを作成する。本体部以外のソースコードは、補助処理を制御するためのソースコードである。補助処理を制御するためのソースコードの例は、本体部のテストおよび調整(以下、テスト調整という)を行うソースコードである。なお、本体部のテスト結果によっては、本体部の調整が省略される場合もある。
プログラム作成支援装置10は、本体部のソースコードから本体部の実行コードを作成し、テスト調整用のソースコードからテスト調整用の実行コードを作成する。以下の説明では、本体部のソースコードを本体ソースコードといい、テスト調整用のソースコードをテストソースコードという。また、本体部の実行コードを本体実行コードといい、テスト調整用の実行コードをテスト実行コードという。
プログラム作成支援装置10は、制御プログラムの本体ソースコードをコンパイルすることで、制御プログラムの本体実行コードを作成する。プログラム作成支援装置10は、制御プログラムのテストソースコードをコンパイルすることで、制御プログラムのテスト実行コードを作成する。
このように、プログラム作成支援装置10が作成する制御プログラムには、本体部となる制御プログラム(本体実行コード)と、テスト調整用の制御プログラム(テスト実行コード)との2本がある。本体部となる制御プログラムは、実際の製品として稼働する制御プログラムである。
本体部となる制御プログラムは、モータ2を含んだ装置の制御に直接関与する処理を行う。換言すると、本体部となる制御プログラムは、モータ2を含んだ装置への正式な制御を行うプログラムである。
テスト調整用の制御プログラムは、補助処理を制御する補助プログラムである。テスト調整用の制御プログラムは、テスト調整の際に必要であるが、テスト調整が完了した後には不要となる。
なお、以下の説明では、本体部となる制御プログラムを単に本体プログラムといい、テスト調整用の制御プログラムをテストプログラムという。また、本体プログラムおよびテストプログラムの両方のプログラムを指す場合には、制御プログラムという。本体プログラムは、モーション制御プログラムを含んでいる場合があり、この場合、テストプログラムは、モーション制御プログラムのテスト調整などを行う。
また、プログラム作成支援装置10は、本体実行コードが実行される際に用いられる実行条件と、補助実行コードであるテスト実行コードが実行される際に用いられる実行条件とを別々に作成する。以下の説明では、本体部の実行条件、すなわち本体プログラムを実行するための条件を本体実行条件といい、テスト調整用の実行条件、すなわちテストプログラムを実行するための条件をテスト実行条件という。
本体実行条件では、特定の本体プログラムが存在する場合には、この特定の本体プログラムをスキップさせることなどが規定されている。補助実行条件であるテスト実行条件では、本体プログラムの前に実行させるテストプログラムが存在する場合、このテストプログラムを実行させることなどが規定されている。また、本体実行条件およびテスト実行条件では、特定の変数が特定の値になる場合に、特定の処理を実行することなどが規定されていてもよい。
プログラム作成支援装置10は、本体実行コード、テスト実行コード、本体実行条件、およびテスト実行条件をコントローラ30に送信する。
コントローラ30は、テスト調整の際には、本体実行コード、本体実行条件、テスト実行コード、およびテスト実行条件を用いて、モータ2の動作を制御する。また、コントローラ30は、テスト調整が完了した後は、本体実行コードおよび本体実行条件を用いて、モータ2の動作を制御する。コントローラ30は、本体実行コードとテスト実行コードとを別々に管理する。また、コントローラ30は、本体実行条件とテスト実行条件とを別々に管理する。
プログラム作成支援装置10は、本体ソースコード編集部11と、本体実行条件指定部12と、本体実行コード作成部13とを備えている。また、プログラム作成支援装置10は、補助ソースコード編集部であるテストソースコード編集部21と、補助実行条件作成部であるテスト実行条件指定部22と、補助実行コード作成部であるテスト実行コード作成部23と、通信部71と、入力部72とを備えている。
通信部71は、本体送信部14と、本体受信部15と、テスト送信部24と、テスト受信部25とを有している。
コントローラ30は、通信部81と、本体実行コード記憶部33と、テスト実行コード記憶部43と、制御部82と、出力部83とを備えている。通信部81は、通信部71との間で通信可能となっている。通信部81と通信部71との間は、無線通信で接続されてもよいし、有線通信で接続されてもよい。
通信部81は、本体受信部31と、本体送信部32と、テスト受信部41と、テスト送信部42とを有している。制御部82は、本体実行制御部34と、本体実行条件判定部35と、テスト実行制御部44と、テスト実行条件判定部45とを有している。
以下、プログラム作成支援装置10およびコントローラ30の各構成要素について説明する。プログラム作成支援装置10の入力部72は、ユーザからの指示を受付ける。入力部72がユーザから受付ける指示には、本体ソースコードを編集する指示、本体実行コードを作成する指示、本体実行条件を指定する指示、補助ソースコードであるテストソースコードを編集する指示、テスト実行コードを作成する指示、テスト実行条件を指定する指示などがある。
また、入力部72がユーザから受付ける指示には、制御プログラムをコントローラ30に送信する指示、実行条件をコントローラ30に送信する指示、制御プログラムをコントローラ30に実行させる指示(以下、プログラム実行指示という場合がある)などがある。制御プログラムをコントローラ30に送信する指示には、本体プログラムを送信する指示(以下、本体プログラム送信指示という場合がある)と、テストプログラムを送信する指示(以下、テストプログラム送信指示という場合がある)とがある。
入力部72は、本体ソースコードを編集する指示を受付けると、この指示を、本体ソースコード編集部11に送信する。入力部72は、テストソースコードを編集する指示を受付けると、この指示を、テストソースコード編集部21に送信する。
入力部72は、本体実行コードを作成する指示を受付けると、この指示を、本体ソースコード編集部11を介して本体実行コード作成部13に送信する。入力部72は、テスト実行コードを作成する指示を受付けると、この指示を、テストソースコード編集部21を介してテスト実行コード作成部23に送信する。
入力部72は、本体実行条件を指定する指示を受付けると、この指示を、本体ソースコード編集部11を介して、本体実行条件指定部12に送信する。入力部72は、テスト実行条件を指定する指示を受付けると、この指示を、テストソースコード編集部21を介して、テスト実行条件指定部22に送信する。
なお、入力部72は、本体実行条件を指定する指示を、直接本体実行条件指定部12に送ってもよい。また、入力部72は、テスト実行条件を指定する指示を、直接テスト実行条件指定部22に送ってもよい。
入力部72は、本体プログラム送信指示を受付けると、この指示を通信部71に送信する。入力部72は、テストプログラム送信指示を受付けると、この指示を通信部71に送信する。入力部72は、プログラム実行指示を受付けると、この指示を、通信部71を介して、コントローラ30の通信部81に送信する。
本体ソースコード編集部11は、編集対象のソースコードを液晶モニタなどの表示装置3に表示させる。本体ソースコード編集部11は、表示装置3に表示中の情報に対して、本体ソースコードを編集する指示を受付ける。本体ソースコード編集部11は、本体ソースコードを編集する指示に従って、本体ソースコードを編集する。本体ソースコード編集部11は、本体実行コードを作成する指示を受付けると、本体ソースコードを本体実行コード作成部13に送信する。
本体実行コード作成部13は、本体実行コードを作成する指示を受付けると、本体ソースコードをコンパイルすることで、本体実行コードを作成する。本体実行コード作成部13は、作成した本体実行コードを通信部71に送信する。
本体実行条件指定部12は、本体実行条件を指定する指示に従って、本体実行条件を作成する。本体実行条件指定部12は、作成した本体実行条件を通信部71に送信する。
通信部71の本体送信部14は、本体プログラム送信指示を受付けると、本体実行コードおよび本体実行条件をコントローラ30の通信部81に送信する。また、本体送信部14は、プログラム実行指示を受付けるとプログラム実行指示をコントローラ30の通信部81に送信する。
通信部71の本体受信部15は、コントローラ30からテスト調整の結果を示すデータ、本体実行コードなどを受信し、本体ソースコード編集部11に送信する。
テストソースコード編集部21は、編集対象のソースコードを表示装置3に表示させる。テストソースコード編集部21は、表示装置3に表示中の情報に対して、テストソースコードを編集する指示を受付ける。テストソースコード編集部21は、テストソースコードを編集する指示に従って、テストソースコードを編集する。テストソースコード編集部21は、テスト実行コードを作成する指示を受付けると、テストソースコードをテスト実行コード作成部23に送信する。
テスト実行コード作成部23は、テスト実行コードを作成する指示を受付けると、テストソースコードをコンパイルすることで、テスト実行コードを作成する。テスト実行コード作成部23は、作成したテスト実行コードを通信部71に送信する。
テスト実行条件指定部22は、テスト実行条件を指定する指示に従って、テスト実行条件を作成する。テスト実行条件指定部22は、作成したテスト実行条件を通信部71に送信する。
通信部71のテスト送信部24は、テストプログラム送信指示を受付けると、テスト実行コードおよびテスト実行条件をコントローラ30の通信部81に送信する。
通信部71のテスト受信部25は、コントローラ30からテスト調整の結果を示すデータ、テスト実行コードなどを受信し、テストソースコード編集部21に送信する。
コントローラ30の通信部81では、本体受信部31が、本体送信部14から情報を受信すると、受信した情報を本体実行コード記憶部33に記憶させる。本体受信部31が、本体送信部14から受信する情報は、本体実行コード、本体実行条件、プログラム実行指示などである。
本体送信部32は、プログラム作成支援装置10から要求のあった情報を本体実行コード記憶部33から読出して、プログラム作成支援装置10の通信部71に送信する。
本体実行コード記憶部33は、通信部81から送られてくる情報および制御部82から送られてくる情報を記憶するメモリなどである。通信部81から本体実行コード記憶部33に送られてくる情報は、本体実行コード、本体実行条件、プログラム実行指示などであり、制御部82から送られてくる情報は、テスト調整の結果を示すデータなどである。
コントローラ30の通信部81では、テスト受信部41が、テスト送信部24から情報を受信すると、受信した情報をテスト実行コード記憶部43に記憶させる。テスト受信部41が、テスト送信部24から受信する情報は、テスト実行コード、テスト実行条件などである。
テスト送信部42は、プログラム作成支援装置10から要求のあった情報をテスト実行コード記憶部43から読出して、プログラム作成支援装置10の通信部71に送信する。
テスト実行コード記憶部43は、通信部81から送られてくる情報を記憶するメモリなどである。通信部81からテスト実行コード記憶部43に送られてくる情報は、テスト実行コード、テスト実行条件などである。
制御部82では、本体実行条件判定部35と、本体実行制御部34と、テスト実行制御部44と、テスト実行条件判定部45とが接続されている。制御部82では、本体実行制御部34と、本体実行条件判定部35と、テスト実行制御部44と、テスト実行条件判定部45とが、互いに情報を共有しながら動作する。なお、制御部82内の通信は、直接構成要素間で行われてもよいし、他の構成要素を介して行われてもよい。
本体実行制御部34は、本体実行コード記憶部33がプログラム実行指示を記憶すると、プログラム実行指示を読出す。なお、プログラム実行指示は、本体受信部31から直接本体実行制御部34に送られてもよい。
本体実行制御部34は、プログラム実行指示を読出すと、本体実行コード記憶部33で記憶されている本体実行コードを読出し、テスト実行制御部44にテスト実行コードの読出し指示を送信する。
本体実行制御部34は、本体実行条件判定部35に、本体実行条件を満たすか否かの判定指示を送信する。本体実行制御部34は、本体実行条件を満たす場合には、本体実行コードを実行し、本体実行条件を満たさない場合には、本体実行コードを実行しない(スキップする)。
本体実行条件判定部35は、本体実行条件を満たすか否かを判定し、判定結果を本体実行制御部34に送信する。本体実行条件を満たす場合、本体実行条件判定部35は、テスト実行条件判定部45に、テスト実行条件を満たすか否かの判定指示を送信する。
テスト実行制御部44は、テスト実行条件判定部45に、テスト実行条件を満たすか否かの判定指示を送信する。テスト実行制御部44は、テスト実行条件を満たす場合には、テスト実行コードを実行し、テスト実行条件を満たさない場合には、テスト実行コードを実行しない。
テスト実行条件判定部45は、テスト実行条件を満たすか否かを判定し、判定結果をテスト実行制御部44に送信する。
制御部82は、本体プログラムがN本(Nは自然数)である場合、N本分の本体プログラムに対してループ処理を実行する。
出力部83は、本体実行制御部34から送られてくる動作指令を、信号を増幅するアンプ4を介してモータ2に出力し、テスト実行制御部44から送られてくる動作指令を、アンプ4を介してモータ2に出力する。モータ2は、アンプ4を介して送られてくる動作指令に従って動作する。
このように、プログラム作成支援装置10は、本体ソースコードにテストソースコードを混在させることなく、制御プログラムの本体ソースコードとテストソースコードとを各々個別に作成することができる。
また、プログラム作成支援装置10は、本体プログラムの本体ソースコードを変更することなく、テストプログラムのテストソースコードを変更することによって、テスト内容または調整内容を変更することができる。
また、コントローラ30は、本体プログラムの本体実行コードとテストプログラムのテスト実行コードとを、それぞれ個別の記憶領域に保存しているので、プログラム作成支援装置10は、本体実行コードを変更することなく、テスト実行コードの追加、削除といった変更を容易に行うことができる。
また、プログラム作成支援装置10は、モータ2のテスト調整が完了した後に本体プログラムの本体実行コードを変更することなく、テストプログラムのテスト実行コードを容易に除去することができる。
図2は、実施の形態1にかかる制御システムによる制御処理の手順を示すフローチャートである。制御システム1Aのコントローラ30では、本体実行制御部34が、プログラム実行指示を読出すと、制御部82が初期化処理を実行する(ステップS110)。初期化処理が完了した後、制御部82が、本体実行コード記憶部33で記憶されている本体プログラムを読出して、読出した本体プログラムに対する反復処理を開始する。ここでは、本体プログラムP1、本体プログラムP2の順番で本体プログラムの処理手順が規定されている場合について説明する。
本体実行条件判定部35は、本体プログラムP1に対し、本体実行条件を満たすか否かを判定する。ここでは、本体実行条件として、「本体実行条件が成立する時には、本体プログラムP1の実行をスキップすること」が規定されている場合について説明する。この場合、本体実行条件判定部35は、本体実行条件が成立するか否かを判定することで、本体プログラムP1の実行をスキップするか否かを判定する(ステップS120)。
本体プログラムP1の実行をスキップする条件が成立しない場合(ステップS120、No)、テスト実行条件判定部45は、テスト実行条件を満たすか否かを判定する。ここでは、テスト実行条件として、「本体プログラムP1の実行前に実行するテストプログラムQ1が存在する時には、本体プログラムP1の実行前にテストプログラムQ1を実行する」ことが規定されている場合について説明する。この場合、テスト実行条件判定部45は、本体プログラムP1の実行前に実行するテストプログラムQ1があるか否かを判定する(ステップS130)。
本体プログラムP1の実行前に実行するテストプログラムQ1がある場合(ステップS130、Yes)、テスト実行条件判定部45は、本体プログラムP1の実行前に対してテスト実行条件を満たすと判定する。この場合、テスト実行制御部44は、本体プログラムP1のテストプログラムQ1を実行する(ステップS140)。その後、本体実行制御部34は、本体プログラムP1を実行する(ステップS150)。
一方、本体プログラムP1の実行前に実行するテストプログラムQ1がない場合(ステップS130、No)、テスト実行条件判定部45は、本体プログラムP1の実行前に対してテスト実行条件を満たさないと判定する。この場合、テスト実行制御部44は、テストプログラムQ1を実行せず、本体実行制御部34は、本体プログラムP1を実行する(ステップS150)。
本体プログラムP1の実行が完了すると、テスト実行条件判定部45は、本体プログラムP1の実行後に対してテスト実行条件を満たすか否かを判定する。ここでは、テスト実行条件として、「本体プログラムP1の実行後に実行するテストプログラムQ2が存在する時には、本体プログラムP1の実行後にテストプログラムQ2を実行する」ことが規定されている場合について説明する。この場合、テスト実行条件判定部45は、本体プログラムP1の実行後に実行するテストプログラムQ2があるか否かを判定する(ステップS160)。
本体プログラムP1の実行後に実行するテストプログラムQ2がある場合(ステップS160、Yes)、テスト実行条件判定部45は、本体プログラムP1の実行後に対してテスト実行条件を満たすと判定する。この場合、テスト実行制御部44は、本体プログラムP1のテストプログラムQ2を実行する(ステップS170)。
その後、本体実行条件判定部35は、本体プログラムP2に対し本体実行条件を満たすか否かを判定する。ここでは、本体実行条件として、「本体実行条件が成立する時には、本体プログラムP2の実行をスキップすること」が規定されている場合について説明する。この場合、本体実行条件判定部35は、本体実行条件が成立するか否かを判定することで、本体プログラムP2の実行をスキップするか否かを判定する(ステップS180)。
一方、本体プログラムP1の実行後に実行するテストプログラムQ2がない場合(ステップS160、No)、テスト実行条件判定部45は、テスト実行条件を満たさないと判定する。この場合、テスト実行制御部44は、テストプログラムQ2を実行せず、本体実行条件判定部35は、本体プログラムP2の実行をスキップするか否かを判定する(ステップS180)。
ステップS120において、本体プログラムP1の実行をスキップする条件が成立する場合(ステップS120、Yes)、本体実行制御部34は、本体プログラムP1の実行をスキップする。この場合、本体実行条件判定部35は、本体プログラムP2の実行をスキップするか否かを判定する(ステップS180)。
本体プログラムP2の実行をスキップする条件が成立しない場合(ステップS180、No)、テスト実行条件判定部45は、テスト実行条件を満たすか否かを判定する。ここでは、テスト実行条件として、「本体プログラムP2の実行前に実行するテストプログラムQ3が存在する時には、本体プログラムP2の実行前にテストプログラムQ3を実行する」ことが規定されている場合について説明する。この場合、テスト実行条件判定部45は、本体プログラムP2の実行前に実行するテストプログラムQ3があるか否かを判定する(ステップS190)。
本体プログラムP2の実行前に実行するテストプログラムQ3がある場合(ステップS190、Yes)、テスト実行条件判定部45は、本体プログラムP2の実行前に対してテスト実行条件を満たすと判定する。この場合、テスト実行制御部44は、本体プログラムP2のテストプログラムQ3を実行する(ステップS200)。その後、本体実行制御部34は、本体プログラムP2を実行する(ステップS210)。
一方、本体プログラムP2の実行前に実行するテストプログラムQ3がない場合(ステップS190、No)、テスト実行条件判定部45は、本体プログラムP2の実行前に対してテスト実行条件を満たさないと判定する。この場合、テスト実行制御部44は、テストプログラムQ3を実行せず、本体実行制御部34は、本体プログラムP2を実行する(ステップS210)。
本体プログラムP2の実行が完了すると、テスト実行条件判定部45は、本体プログラムP2の実行後に対してテスト実行条件を満たすか否かを判定する。ここでは、テスト実行条件として、「本体プログラムP2の実行後に実行するテストプログラムQ4が存在する時には、本体プログラムP2の実行後にテストプログラムQ4を実行する」ことが規定されている場合について説明する。この場合、テスト実行条件判定部45は、本体プログラムP2の実行後に実行するテストプログラムQ4があるか否かを判定する(ステップS220)。
本体プログラムP2の実行後に実行するテストプログラムQ4がある場合(ステップS220、Yes)、テスト実行条件判定部45は、本体プログラムP2の実行後に対してテスト実行条件を満たすと判定する。この場合、テスト実行制御部44は、本体プログラムP2のテストプログラムQ4を実行する(ステップS230)。
一方、本体プログラムP2の実行後に実行するテストプログラムQ4がない場合(ステップS220、No)、テスト実行条件判定部45は、テスト実行条件を満たさないと判定する。この場合、テスト実行制御部44は、テストプログラムQ4を実行しない。
ステップS180において、本体プログラムP2の実行をスキップする条件が成立する場合(ステップS180、Yes)、本体実行制御部34は、本体プログラムP2の実行をスキップする。これにより、制御部82が、本体実行コード記憶部33から読出した本体プログラムに対する反復処理を終了する。
なお、コントローラ30による反復処理は、図2で説明した方法に限らない。例えば、コントローラ30は、ユーザによって予め設定された時間間隔で周期的にステップS120からステップS230までの反復処理を実行してもよい。また、コントローラ30は、特定の外部信号(例えば緊急停止ボタンの押下を検出した際にコントローラ30に入力される信号)の入力を契機に反復処理を実行してもよい。
制御システム1Aでは、テスト調整時には、テストプログラムQ1〜Q4が存在するので、ステップS140,S170,S200,S230の処理が実行される。一方、制御システム1Aでは、実運用時には、テストプログラムQ1〜Q4がコントローラ30において無効化または削除されるので、ステップS140,S170,S200,S230の処理は実行されない。
なお、制御システム1Aは、本体実行条件を用いなくてもよい。この場合、プログラム作成支援装置10は、本体実行条件指定部12を備えていなくてもよい。また、コントローラ30は、本体実行条件判定部35を備えていなくてもよい。そして、図2におけるステップS120,S180の処理が省略される。
制御システム1Aでは、テスト実行条件指定部22が、本体プログラムの実行前にテスト実行コードを実行する条件である事前条件を、ユーザからの指示に従って指定可能となっている。また、制御システム1Aでは、テスト実行条件指定部22が、本体プログラムの実行後にテスト実行コードを実行する条件である事後条件を、ユーザからの指示に従って指定可能となっている。
テスト実行条件判定部45は、設定された事前条件および事後条件に従って、テストプログラムのテスト実行コードを実行できるので、本体プログラムを変更すること無く、テストプログラムを実行することができる。事前条件が成立した場合に実行されるテスト実行コードの例は、本体プログラムの初期化である。事後条件が成立した場合に実行されるテスト実行コードの例は、本体プログラムの実行結果を用いた演算処理である。
また、制御システム1Aでは、テスト調整が完了した後にテスト実行コードを容易に無効化または削除できるので、本体実行コードが実行される際にテスト実行コードが誤って実行されることを容易に防止できる。
図3は、実施の形態1にかかるプログラム作成支援装置によるデータ作成処理の手順を示すシーケンス図である。ここでは、ソースコードの編集から実行条件の指定までの処理について説明する。プログラム作成支援装置10が作成するデータには、本体ソースコード、本体実行コード、本体実行条件、テストソースコード、テスト実行コード、テスト実行条件などが含まれている。図3に示す、本体ソースコード編集部11、テストソースコード編集部21、本体実行コード作成部13、テスト実行コード作成部23、本体実行条件指定部12、およびテスト実行条件指定部22からなる構成要素群51は、プログラム作成支援装置10に配置されている。
ユーザによって本体ソースコードの編集指示が入力部72に入力されると、この編集指示が本体ソースコード編集部11に送られ(st1)、本体ソースコード編集部11が、編集指示に従って本体ソースコードを編集する。
また、ユーザによってテストソースコードの編集指示が入力部72に入力されると、この編集指示がテストソースコード編集部21に送られ(st2)、テストソースコード編集部21が、編集指示に従ってテストソースコードを編集する。なお、st1の処理とst2の処理とは、何れが先に実行されてもよい。
st1の処理の後、ユーザによって本体実行コードの作成指示が入力部72に入力されると、この作成指示が本体ソースコード編集部11に送られる(st3)。これにより、本体ソースコード編集部11が、本体実行コードの作成指示を本体実行コード作成部13に送信し(st4)、本体実行コード作成部13が本体実行コードを作成する。
st2の処理の後、ユーザによってテスト実行コードの作成指示が入力部72に入力されると、この作成指示がテストソースコード編集部21に送られる(st5)。これにより、テストソースコード編集部21が、テスト実行コードの作成指示をテスト実行コード作成部23に送信し(st6)、テスト実行コード作成部23がテスト実行コードを作成する。なお、st3の処理とst5の処理とは、何れが先に実行されてもよい。
以下で説明するst7〜st9の処理においては、本体プログラムが図2で説明した本体プログラムP1である場合について説明する。
本体プログラムP1に対する本体実行条件を指定する指示が、ユーザによって入力部72に入力されると、この指定指示が本体実行条件指定部12に送られる(st7)。これにより、本体実行条件指定部12が、ユーザ指示に従って、本体プログラムP1に対する本体実行条件を作成する。ここでの本体実行条件は、図2のステップS120で用いられる本体実行条件である。
また、本体プログラムP1を実行する前の事前条件を指定する指示が、ユーザによって入力部72に入力されると、この指定指示がテスト実行条件指定部22に送られる(st8)。これにより、テスト実行条件指定部22が、ユーザ指示に従って、本体プログラムP1に対する事前条件を作成する。ここでの事前条件は、図2のステップS130で用いられるテスト実行条件である。
また、本体プログラムP1を実行した後の事後条件を指定する指示が、ユーザによって入力部72に入力されると、この指定指示がテスト実行条件指定部22に送られる(st9)。これにより、テスト実行条件指定部22が、ユーザ指示に従って、本体プログラムP1に対する事後条件を作成する。ここでの事後条件は、図2のステップS160で用いられるテスト実行条件である。
なお、st7〜st9の処理は、何れが先に実行されてもよい。すなわち、本体実行条件、事前条件、および事後条件は、何れの順番で作成されてもよい。また、st7〜st9の処理は、st1〜st6のうちの何れかの処理よりも先に実行されてもよい。また、入力部72は、本体実行条件を指定した指示を、本体ソースコード編集部11を介して、本体実行条件指定部12に送ってもよい。また、入力部72は、事前条件を指定した指示および事後条件を指定した指示を、テストソースコード編集部21を介して、テスト実行条件指定部22に送ってもよい。
このように、プログラム作成支援装置10は、st8の処理のように、本体プログラムを実行する前に実行するテストプログラムを事前条件として設定できる。すなわち、制御システム1Aでは、本体プログラムの本体実行コードの動作確認および調整を行うための試験データの準備といった、本体実行コードの実行開始前に実行させたいテストプログラムのテスト実行コードを、ユーザ指示に従って、事前条件として指定できる。
また、プログラム作成支援装置10は、st9の処理のように、本体プログラムを実行した後に実行するテストプログラムを事後条件として設定できる。すなわち、制御システム1Aでは、本体プログラムの本体実行コードの実行結果が所望の結果を得られているか否かを判定すること、実行結果を記録することといった、本体実行コードの実行完了後に実行させたいテストプログラムのテスト実行コードを、ユーザ指示に従って、事後条件として指定できる。
図4は、実施の形態1にかかる制御システムによるデータ送信処理およびデータ保存処理の手順を示すシーケンス図である。ここでは、実行コードの送信から実行コードの保存までの処理について説明する。プログラム作成支援装置10がコントローラ30に送信するデータには、本体実行コードおよびテスト実行コードが含まれている。図4に示す、通信部71、本体送信部14、およびテスト送信部24からなる構成要素群52は、プログラム作成支援装置10に配置されている。また、図4に示す、通信部81、本体受信部31、テスト受信部41、本体実行コード記憶部33、およびテスト実行コード記憶部43からなる構成要素群61は、コントローラ30に配置されている。
ユーザによって、実行コードのコントローラ30への送信指示が、プログラム作成支援装置10の入力部72に入力されると、この送信指示が通信部71に送られる(st11)。
通信部71は、本体実行コードのコントローラ30への送信指示である本体送信指示を、本体送信部14に送信する(st12)。これにより、本体送信部14が、本体実行コードをコントローラ30の通信部81に送信する処理である本体送信処理を実行する(st13)。
コントローラ30は、通信部81が本体実行コードを受信すると、本体実行コードを受信したことを示す本体受信情報を本体受信部31に送信する(st14)。本体受信部31は、本体受信情報を受信すると、本体実行コードの保存指示を本体実行コード記憶部33に送信する(st15)。本体実行コード記憶部33は、本体実行コードを保存する。
また、通信部71は、ユーザから実行コードの送信指示を受信すると、テスト実行コードのコントローラ30への送信指示であるテスト送信指示を、テスト送信部24に送信する(st16)。これにより、テスト送信部24が、テスト実行コードをコントローラ30の通信部81に送信する処理であるテスト送信処理を実行する(st17)。
コントローラ30は、通信部81がテスト実行コードを受信すると、テスト実行コードを受信したことを示すテスト受信情報をテスト受信部41に送信する(st18)。テスト受信部41は、テスト受信情報を受信すると、テスト実行コードの保存指示をテスト実行コード記憶部43に送信する(st19)。テスト実行コード記憶部43は、テスト実行コードを保存する。
st15の処理で保存された本体実行コードは、図2のステップS150、およびステップS210で用いられる本体プログラムP1,P2に対応している。st19の処理で保存されたテスト実行コードは、図2のステップS140,S170,S200,S230で用いられるテストプログラムQ1〜Q4に対応している。
なお、図4では図示していないが、本体実行条件についても、st11〜st15と同様の処理によって送信および保存が行われる。この処理で保存された本体実行条件は、図2のステップS120,S180で用いられる。
また、テスト実行条件についても、st11,st16〜st19と同様の処理によって送信および保存が行われる。この処理で保存されたテスト実行条件は、図2のステップS130,S160,S190,S220で用いられる。
このように、本体プログラムの本体実行コードと、テストプログラムのテスト実行コードとは、別々に作成されているので、コントローラ30は、本体プログラムの本体実行コードと、テストプログラムのテスト実行コードとの各々を、別々の記憶部に格納することができる。これにより、制御システム1Aは、本体実行コードおよびテスト実行コードの管理が容易となる。
図5は、実施の形態1にかかる制御システムによる制御プログラムの実行処理の手順を示すシーケンス図である。ここでは、本体プログラムおよびテストプログラムの実行処理について説明する。図5に示す、通信部81、本体実行制御部34、本体実行条件判定部35、テスト実行制御部44、テスト実行条件判定部45、本体実行コード記憶部33、およびテスト実行コード記憶部43からなる構成要素群62は、コントローラ30に配置されている。
ユーザによって、制御プログラムの実行指示が、プログラム作成支援装置10に入力されると、この実行指示がコントローラ30の通信部81に送信される(st21)。通信部81は、制御プログラムの実行指示を、本体実行制御部34に送信する(st22)。
本体実行制御部34は、本体プログラムの読出し処理を実行する(st23)。具体的には、本体実行制御部34は、本体実行コード記憶部33から、本体プログラムを読出す。
また、本体実行制御部34は、テストプログラムの読出し指示を、テスト実行制御部44に送信する(st24)。テスト実行制御部44は、テストプログラムの読出し処理を実行する(st25)。具体的には、テスト実行制御部44は、テスト実行コード記憶部43から、テストプログラムを読出す。
この後、コントローラ30では、本体プログラムの本数分のループ処理が実行される。1番目の本体プログラムに対し、コントローラ30は、処理101を実行する。処理101では、本体実行制御部34が、本体実行条件の判定指示を本体実行条件判定部35に送信する(st26)。
処理101に含まれる処理201は、本体実行条件が成立する場合の処理であり、処理101に含まれる処理202は、本体実行条件が成立しない場合の処理である。
まず、本体実行条件が成立する場合の処理201について説明する。処理201では、本体実行条件判定部35は、事前条件の判定指示をテスト実行制御部44に送信する(st27)。
処理201に含まれる処理301は、事前条件が成立する場合の処理であり、処理201に含まれる処理302は、事前条件が成立しない場合の処理である。事前条件が成立する場合の処理301では、テスト実行制御部44は、事前条件の判定指示をテスト実行条件判定部45に送信する(st28)。ここでのテスト実行条件判定部45は、事前条件が成立すると判定する。そして、テスト実行条件判定部45は、判定結果として、事前条件に対応するテストプログラムを実行させる指示をテスト実行制御部44に送信する(st29)。これにより、テスト実行制御部44は、事前条件が成立する場合のテストプログラムを実行する(st30)。なお、本体実行条件判定部35は、事前条件の判定指示を、テスト実行制御部44を介さずに、直接テスト実行条件判定部45に送信してもよい。
テスト実行制御部44は、事前条件の判定結果として、テストプログラムを実行したことを示す判定結果(実行)を本体実行条件判定部35に送信する(st31)。st31の処理は、st27に対する応答である。
事前条件が成立しない場合の処理302でも、上述したst28およびst29の処理が実行される。この場合のテスト実行条件判定部45は、事前条件が成立しないと判定し、判定結果として、事前条件に対応するテストプログラムを実行させない指示をテスト実行制御部44に送信する。テスト実行制御部44は、事前条件の判定結果として、テストプログラムを実行しなかったことを示す判定結果(非実行)を本体実行条件判定部35に送信する(st32)。st32の処理は、st27に対する応答である。
処理301または処理302が完了した後、本体実行条件判定部35は、st27に対する判定結果を本体実行制御部34に送信する。すなわち、本体実行条件判定部35は、st27に対する応答として、処理301または処理302が実行されたことを示す判定結果(実行)を本体実行制御部34に送信する(st33)。
st33の処理の後、本体実行制御部34は、1番目の本体プログラムを実行する(st34)。そして、本体実行制御部34は、事後条件の判定指示を本体実行条件判定部35に送信する(st35)。本体実行条件判定部35は、事後条件の判定指示をテスト実行制御部44に送信する(st36)。
処理201に含まれる処理401は、事後条件が成立する場合の処理であり、処理201に含まれる処理402は、事後条件が成立しない場合の処理である。事後条件が成立する場合の処理401では、テスト実行制御部44は、テスト実行条件判定部45に事後条件の判定指示を送信する(st37)。ここでの、テスト実行条件判定部45は、事後条件が成立すると判定する。そして、テスト実行条件判定部45は、判定結果として、事後条件に対応するテストプログラムを実行させる指示をテスト実行制御部44に送信する(st38)。これにより、テスト実行制御部44は、事後条件が成立する場合のテストプログラムを実行する(st39)。なお、本体実行条件判定部35は、事後条件の判定指示を、テスト実行制御部44を介さずに、直接テスト実行条件判定部45に送信してもよい。
テスト実行制御部44は、事後条件の判定結果として、テストプログラムを実行したことを示す判定結果(実行)を本体実行条件判定部35に送信する(st40)。st40の処理は、st36に対する応答である。
事後条件が成立しない場合の処理402でも、上述したst37およびst38の処理が実行される。この場合のテスト実行条件判定部45は、事後条件が成立しないと判定し、判定結果として、事後条件に対応するテストプログラムを実行させない指示をテスト実行制御部44に送信する。テスト実行制御部44は、事後条件の判定結果として、テストプログラムを実行しなかったことを示す判定結果(非実行)を本体実行条件判定部35に送信する(st41)。st41の処理は、st36に対する応答である。
つぎに、本体実行条件が成立しない場合の処理202について説明する。処理202では、本体実行条件判定部35は、本体実行条件の判定結果として、本体プログラムを実行しなかったことを示す判定結果(非実行)を本体実行制御部34に送信する(st42)。st42の処理は、st26に対する応答である。
ここで、比較例の実行コード(比較例の制御プログラム)について説明する。比較例の実行コードは、本体部のソースコードと、テスト調整部のソースコードとが一体化されたソースコードから作成された実行コードである。テスト調整部のソースコードは、テスト調査用の実行コードに対応するソースコードである。
比較例の制御プログラムを用いた場合のテスト処理の手順について説明する。この場合の制御プログラムに対する反復処理では、1番目の制御プログラム、2番目の制御プログラムの順番で制御プログラムが実行される。
1番目の制御プログラムが実行される際には、1番目の制御プログラムに含まれる本体部とテスト調査部とが実行される。そして、2番目の制御プログラムが実行される際には、2番目の制御プログラムに含まれる本体部とテスト調査部とが実行される。そして、テスト調査が完了した後に、1番目の制御プログラムのソースコードからテスト調査部が削除され、2番目の制御プログラムのソースコードからテスト調査部が削除される。このような比較例の制御プログラムでは、テスト調整を行う実行コードが、種々の論理和を用いている場合があるので、テスト調整の完了後にテスト調整を行う実行コードを削除することが困難である。
ところで、ユーザの運用上、動作確認が完了した実行コードに対して変更が禁止される場合がある。この場合、比較例の制御プログラムでは、テスト調整を行う実行コードもコントローラの記憶領域に残存することになる。したがって、無駄な記憶領域を消費する。
また、動作確認が完了した実行コードに対して変更が禁止されていない場合であっても、比較例の実行コードの場合、制御プログラムのテスト調整が完了した後、制御プログラムからテスト調整用の実行コードが除去されると実行コードに変更が生じる。このため、比較例の実行コードの場合、変更後の実行コードが所望の動作を行うか否かを改めて確認する必要がある。
一方、本実施の形態の制御システム1Aは、テスト実行コードと本体実行コードとを分離して別々に記憶させているので、本体実行コードを変更することなく、テスト実行コードのみを容易に無効化または削除することができる。これにより、テスト調整の完了したテスト実行コードが、コントローラ30の記憶領域を無駄に消費することを回避できる。
また、本実施の形態の制御システム1Aでは、テスト実行コードが削除されても、本体実行コードには変更が生じないので、本体実行コードが所望の動作を行うか否かを改めて確認する必要がない。
このように、実施の形態1によれば、本体実行コードとテスト実行コードとを、別々に作成しているので、本体実行コードが実行される際にテスト実行コードが誤って実行されることを容易に防止できる。
また、制御システム1Aは、テスト調整を実行するためのテスト実行コードを、本体実行コードから分離し、それぞれを独立させた状態で編集、実行、除去などを実行することが可能となる。これにより、制御システム1Aは、テストプログラムの編集、実行、除去などを容易に実行することが可能となる。
実施の形態2.
つぎに、図6から図9を用いて実施の形態2について説明する。実施の形態2では、モーション制御における指令値の演算用データ(例えば、後述する基準角度)に基づいて、テストソースコードを自動作成する。
図6は、実施の形態2にかかる制御システムの構成を示す図である。図6の各構成要素のうち図1に示す実施の形態1の制御システム1Aと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
制御システム1Bは、制御システム1Aの構成要素に加えて、プログラム作成支援装置10内に補助ソースコード作成部であるテストソースコード作成部20を備えている。テストソースコード作成部20は、テストソースコード編集部21に接続されている。
テストソースコード作成部20は、モーション制御における指令値の演算用データに基づいて、モータ2のテスト調整に用いられるテストソースコードを自動作成する。モーション制御における指令は、コントローラ30がアンプ4に出力する出力値である。モーション制御における指令の例は、移動量、速度、トルクなどの目標値である。
テストソースコード作成部20は、モーション制御における指令値に対して、コントローラ30で実行する本体プログラムの本体実行コードが、所望の演算を実行しているか否かを判定するためのテストプログラムのソースコードを作成する。これにより、プログラム作成支援装置10は、テストプログラムの作成に要するユーザの工数を削減することが可能になる。
つぎに、テストソースコード作成部20による、テストソースコードの作成処理例について説明する。図7は、実施の形態2にかかる制御システムが制御するモータに接続された機構部を説明するための図である。図8は、実施の形態2にかかる制御システムに対して設定される制御用パラメータの第1例を示す図である。図9は、実施の形態2にかかる制御システムが用いる運転パターンの第1例を示す図である。
プログラム作成支援装置10は、図8に示した制御用パラメータに基づいて、図9に示す運転パターンを作成する。なお、図7では、プログラム作成支援装置10の図示を省略している。
ワークを所定の位置に移動させるなどの用途で用いられるワーク搬送装置は、モータ軸(以下、制御軸6という)を有したモータ2と、制御軸6に接続された機構部分(以下、機構部5という)とを備えている。コントローラ30は、制御対象であるモータ2の制御軸6を駆動することによって、機構部5の位置を制御する。このときの、機構部5の位置を示す運転パターンが、図9に示す運転パターンである。
モーション制御を行わせる場合、コントローラ30からアンプ4に対して指令を与える手段の一例として、図8に示すような、制御の基準とする回転軸の回転位置(基準角度)に対する機構部5の目標位置、および目標位置と目標位置との間の区間の補間方法を与える手段がある。制御の基準とする回転軸は、制御軸6以外の、(図7には示されていない)他のモータ軸であってもよい。あるいは、制御の基準とする回転軸は、コントローラ30によって模擬される仮想的なモータ軸であってもよい。
プログラム作成支援装置10は、図8に示すような制御用パラメータが設定されると、この制御用パラメータに基づいて、図9に示す運転パターン(波形71A,72A)を算出する。この運転パターン(波形71A,72A)は、コントローラ30で実行する制御プログラムの演算結果として算出される指令値と一致し、テストソースコード作成部20に対する入力データとなる。
図9に示すグラフの横軸は、制御軸6の基準角度であり、縦軸は制御軸6に接続された機構部5の目標位置である。波形71Aは、機構部5の目標位置の波形であり、波形72Aは、機構部5の目標速度である。テストソースコード作成部20は、図9に示した波形71A,72Aに基づいて、テストソースコードを作成する。テストソースコードは、機構部5の目標位置と、実際の位置との差分が許容範囲内であるか否かを判定するソースコードである。
図9では、例えば、基準角度が90度である時の機構部5の目標位置は、中心位置(0mm)であり、基準角度が210度である時の機構部5の目標位置は、中心位置から順方向に100mm離れた位置であることを示している。
コントローラ30は、基準角度および目標位置に基づいて、機構部5を目標位置に移動させることができるようにモータ2の回転方向および回転速度の指令値を演算し、演算結果としての指令値をアンプ4に出力する。
ユーザが、プログラム作成支援装置10を用いて作成する本体プログラムの本体ソースコードは、基準角度および目標位置を組とする制御用パラメータを入力とする。この本体ソースコードは、制御用パラメータを入力とし、モータ2の回転方向および回転速度といったモータ2の駆動を制御する指定値を演算して求める処理を実行する。
制御用パラメータとしては、制御対象(図7の例では順方向または逆方向に直線移動する機構部5)が所望の動作を得られるように、任意の点数の目標位置が指定可能である。図9に示した例では(A)、(B)、および(C)の3点の目標位置が、ユーザによって指定された場合を示している。
図8に示す例では、区間A−Bは、開始点が0度であり、終了点が90度である。区間A−Bにおける目標位置は0mmであり、区間A−Bはスプライン補間されている。また、区間B−Cは開始点が90度であり、終了点が210度である。区間B−Cにおける目標位置は100mmであり、区間B−Cはスプライン補間されている。また、区間C−Aにおける開始点が210度であり、終了点が360度である。区間C−Aにおける目標位置は0mmであり、区間C−Aはスプライン補間されている。なお、機構部5の加減速を調整するために、目標位置は、ユーザによって追加されてもよい。
図10は、実施の形態2にかかる制御システムに対して設定される制御用パラメータの第2例を示す図である。図11は、実施の形態2にかかる制御システムが用いる運転パターンの第2例を示す図である。図10に示す制御用パラメータは、図8に示す制御用パラメータに、新たな目標位置を追加した場合の運転パターン例を示している。
プログラム作成支援装置10は、図10に示した制御用パラメータに基づいて、図11に示す運転パターンを作成する。ここでは、図9に示した目標位置の(B)から(C)までの間の機構部5の加減速を調整するために、図11に示す(D)および(E)の2点の目標位置が追加された場合について説明する。波形71Bは、機構部5の目標位置の波形であり、波形72Bは、機構部5の目標速度である。
図10に示す例では、区間A−Bおよび区間C−Aは、図8で説明したとおりである。図10に示す例では、区間B−Dは、開始点が90度であり、終了点が120度である。区間B−Dにおける目標位置は10mmであり、区間B−Dはスプライン補間されている。また、区間D−Eは、開始点が120度であり、終了点が180度である。区間D−Eにおける目標位置は90mmであり、区間D−Eはスプライン補間されている。また、区間E−Cは、開始点が180度であり、終了点が210度である。区間E−Cにおける目標位置は100mmであり、区間E−Cはスプライン補間されている。
プログラム作成支援装置10は、ユーザが作成した本体プログラムおよび制御用パラメータによって制御対象が所望の動作を得られているか否かを確認する。プログラム作成支援装置10は、制御対象が所望の動作を得られているか否かを確認するためには、ある基準角度における、機構部5の目標位置と実際の装置における機構部5の実際の位置との差分が、実際の装置で許容されている範囲内であることが確認できればよい。実際の装置は、機構部5およびモータ2を備えたワーク搬送装置などである。
ここで、ある基準角度とは、プログラム作成支援装置10を用いてユーザが指定した値(図11では、(A)、(B)、(C)、(D)、(E)の5点の基準角度)に加えて、例えば、図9または図11のグラフに示されている区間A−B,B−C,C−Aの何れかに含まれる任意の基準角度ω(0度≦ω≦360度)のことを指す。なお、図11に示した例では、基準角度の最大値が360度の場合を示しているが、360度よりも大きな値が基準角度の最大値として設定されてもよい。
各区間内の任意の基準角度ωに対する機構部5の目標位置は、図9または図11の例では、ユーザによって目標位置の補間方法が「スプライン補間」と指定されているので、テストソースコード作成部20は、演算によって目標値を算出することができる。
テストソースコード作成部20は、このような演算によって算出可能な任意の基準角度ωに対する機構部5の目標位置と、実際の装置における機構部5の実際の位置との差分が実際の装置で許容されている範囲内であるか否かを判定する処理を、テストプログラムのテストソースコードとして作成する。これにより、制御用パラメータの設定値の追加、変更、または削除が生じた場合に、実際の装置が所望の動作を得ているか否かを確認するためのテストソースコードを、ユーザが作成または修正する手間を省くことが可能となる。
なお、本体実行コード記憶部33とテスト実行コード記憶部43とは、物理的に異なる記憶装置であってもよい。これにより、本体実行コードを格納する記憶装置の記憶容量を逼迫せずにテスト実行コードを一時的にコントローラ30に書き込みながら、本体プログラムのテスト調整を実行することができる。また、テスト調整の完了後に制御プログラムの本体部以外のテスト実行コードの無効化または除去を行うためのユーザ操作を簡略化できる。
本体実行コード記憶部33とテスト実行コード記憶部43とが、物理的に異なる別々の記憶装置である場合、本体実行コード記憶部33が本体実行コード記憶装置となり、テスト実行コード記憶部43がテスト実行コード記憶装置、すなわち補助実行コード記憶装置となる。
また、本体実行コード記憶部33とテスト実行コード記憶部43とを物理的に異なる記憶装置とし、かつテスト実行コード記憶部43となる記憶装置をコントローラ30から着脱可能な記憶装置(例えば、可搬性の外部記憶装置)としてもよい。これにより、テスト実行コード記憶部43となる記憶装置をコントローラ30から取り外すだけで、テスト実行コードをコントローラ30から除去することができる。
また、制御部82は、テスト実行コードのキャッシュメモリへのアクセスを無効としてもよい。これにより、キャッシュメモリへは、テスト実行コードが格納されず、本体実行コードが格納されることとなる。この結果、テスト実行コードが実行されても、本体実行コードのキャッシュメモリからのヒット率(キャッシュ性能)が低下することを防止できる。すなわち、テスト実行コードがある場合と、テスト実行コードが無い場合とで、キャッシュメモリから本体実行コードを読出すことができる確率を同じにすることができる。したがって、制御部82は、実運用時と同じキャッシュメモリのヒット率で本体実行コードを実行させながら、本体プログラムのテスト調整を実行することができる。
このように、実施の形態2では、テストソースコード作成部20が、モーション制御における指令値の演算用データに基づいて、テストソースコードを自動作成している。これにより、制御用パラメータの設定値の追加、変更、または削除が生じた場合に、実際の装置が所望の動作を得ているか否かを確認するためのテストソースコードを、ユーザが作成または修正する手間を省くことが可能となる。
ここで、実施の形態1,2で説明したプログラム作成支援装置10のハードウェア構成について説明する。図12は、実施の形態1,2にかかるプログラム作成支援装置を実現するハードウェア構成例を示す図である。
プログラム作成支援装置10は、図12に示した入力装置151、プロセッサ152、メモリ153、通信装置155、および出力装置154により実現することができる。プロセッサ152の例は、CPU(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、DSP(Digital Signal Processor)ともいう)またはシステムLSI(Large Scale Integration)である。メモリ153の例は、RAM(Random Access Memory)、ROM(Read Only Memory)である。
プログラム作成支援装置10は、プロセッサ152が、メモリ153で記憶されている、プログラム作成支援装置10の動作を実行するための、コンピュータで実行可能なプログラム作成支援プログラムを読出して実行することにより実現される。プログラム作成支援装置10の動作を実行するためのプログラムであるプログラム作成支援プログラムは、プログラム作成支援装置10の手順または方法をコンピュータに実行させるものであるともいえる。
プログラム作成支援装置10で実行されるプログラム作成支援プログラムは、本体ソースコード編集部11と、本体実行条件指定部12と、本体実行コード作成部13と、テストソースコード編集部21と、テスト実行条件指定部22と、テスト実行コード作成部23とを含むモジュール構成となっており、これらが主記憶装置上にロードされ、これらが主記憶装置上に生成される。
メモリ153は、プロセッサ152が各種処理を実行する際の一時メモリに使用される。メモリ153は、例えば、プログラム作成支援プログラム、本体実行コード、テスト実行コード、本体ソースコード、テストソースコード、本体実行条件、事前条件、事後条件などを記憶する。
入力装置151は、入力部72の機能を有している。入力装置151は、ユーザによって入力される情報を受付けるインタフェース装置であり、受付けた情報をプロセッサ152に送る。出力装置154は、プロセッサ152が作成した画面データを表示装置3などの外部装置に出力する。通信装置155は、通信部71の機能を有している。通信装置155は、コントローラ30との間で通信を実行する。
制御プログラムの作成を支援するプログラム作成支援プログラムは、インストール可能な形式または実行可能な形式のファイルで、コンピュータが読み取り可能な記憶媒体に記憶されてコンピュータプログラムプロダクトとして提供されてもよい。また、プログラム作成支援プログラムは、インターネットなどのネットワーク経由でプログラム作成支援装置10に提供されてもよい。
なお、プログラム作成支援装置10の機能について、一部を専用回路などの専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
コントローラ30は、プログラム作成支援装置10と同様のハードウェア構成を有している。コントローラ30の機能について、一部を専用回路などの専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
以上の実施の形態に示した構成は、一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、実施の形態同士を組み合わせることも可能であるし、要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。