(57)【要約】【課題】モータ制御プログラムの作成および実行の簡便化を図る技術を提供する。【解決手段】モータ制御プログラミングソフトによって、コンピュータをモータ制御に係るプログラムの作成および実行が可能なプログラム処理部として機能させる。プログラム処理部は、プログラム作成時に、各列にプログラムコマンド、各行にステップ番号が割り当てられた表形式のプログラム画面を表示部に表示する。ユーザは、プログラム画面のセルに、プログラムコマンドに対するオペランドを設定可能である。プログラム実行時、プログラム処理部は、各セルを順番に調べ、オペランドが設定されている場合にそのオペランドを用いて当該列に割り当てられたプログラムコマンドを実行する。【選択図】　図１０
2004046711.tif 000002
【特許請求の範囲】
【請求項１】
制御対象機器が具備する１つ又は複数のモータをプログラム制御するモータ制御プログラミングソフトであって、
表示手段を有するコンピュータをモータ制御に係るプログラムの作成および実行が可能なプログラム処理手段として機能させ、
前記プログラム処理手段は、
プログラム作成時に、
各列にプログラムコマンド、各行にステップ番号が割り当てられた表形式のプログラム画面を前記表示手段に表示するとともに、
前記表形式のプログラム画面のセルに、該セルの列に割り当てられたプログラムコマンドに対するオペランドを設定可能とし、
プログラム実行時に、
前記表形式のプログラム画面の各セルを順番に調べ、前記オペランドが設定されている場合に該オペランドを用いて当該列に割り当てられたプログラムコマンドを実行するモータ制御プログラミングソフト。
【請求項２】
前記プログラムコマンドは、
前記オペランドとして少なくとも入力の番号およびその入力値に基づくロジックを設定可能であって、前記設定された入力の番号の入力値に基づいて前記設定されたロジックを実行する入力処理コマンドを含む請求項１に記載のモータ制御プログラミングソフト。
【請求項３】
前記ロジックは、前記入力値が設定された値になるまでプログラムの処理を待機するウェイト処理を含む請求項２に記載のモータ制御プログラミングソフト。
【請求項４】
前記ロジックは、前記入力値に応じてプログラムの処理を分岐する分岐処理を含む請求項２または３に記載のモータ制御プログラミングソフト。
【請求項５】
前記プログラムコマンドは、
前記オペランドとして少なくとも前記モータの動作を定義したモーション定義データを設定可能であって、前記設定されたモーション定義データに基づいてモータを動作させるモータ動作コマンドを含む請求項１〜４のうちいずれか１項に記載のモータ制御プログラミングソフト。
【請求項６】
前記プログラムコマンドは、
前記オペランドとして少なくともループ開始行であることを示すマークまたはループ終了行であることを示すマークを設定可能であって、前記設定されたループ開始行からループ終了行までの処理を繰り返し実行するループ処理コマンドを含む請求項１〜５のうちいずれか１項に記載のモータ制御プログラミングソフト。
【請求項７】
前記プログラムが制御要素とする入力および出力は、
前記制御対象機器との間で入出力される外部入力および外部出力と、記憶手段に保持される内部データとの間で入出力される内部入力および内部出力と、を含む請求項１〜６のうちいずれか１項に記載のモータ制御プログラミングソフト。
【請求項８】
前記コンピュータを、
複数の入力を組み合わせた入力条件と該入力条件に対応付けた１つの出力結果とを設定可能であって、
前記入力を監視し、前記入力条件に合致した場合に対応する出力結果を前記制御対象機器または前記内部データに出力する
Ｉ／Ｏ監視処理手段として機能させる請求項７に記載のモータ制御プログラミングソフト。
【請求項９】
前記コンピュータを、
前記内部データの内容を前記表示手段に表示するとともに、その内容を変更可能とする内部データ操作手段として機能させる請求項７または８に記載のモータ制御プログラミングソフト。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、制御対象機器が具備する１つ又は複数のモータをプログラム制御するためのモータ制御プログラムを作成・実行するモータ制御プログラミングソフトに関するものである。
【０００２】
【従来の技術】
従来から、制御対象機器が具備するモータをプログラムによって制御する方法が広く知られている。この場合、図１３に示すように、まずコンピュータ１０１でプログラムリストの作成を行った後、それをコンパイルし機械語に翻訳するなどして、モータ制御プログラムを生成する。モータ制御プログラムは磁気ディスクやＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）などの記録媒体を利用して、専用のコントロール装置１０２にロードされる。そして、コントロール装置１０２がモータ制御プログラムを実行し、制御対象機器１０３のモータ１０４のコントロールを行うのである。
【０００３】
図１４は、コンピュータ１０１で動作するプログラミングソフトの一般的な操作画面である。各行にプログラムのステップ番号が付されており、１行に１つのプログラムコマンドとそのコマンドに引き渡すオペランドを設定することが可能となっている。プログラム作成時には、各行に、モータの動作や入出力に基づく処理を記述することになる。
【０００４】
【発明が解決しようとする課題】
しかしながら、上記のような従来技術の場合には、下記のような問題が生じていた。
【０００５】
コンピュータ１０１で作成したモータ制御プログラムは、専用のコントロール装置１０２にロードしなければ動作させることができない。それゆえ、動作テストやデバッグ等の作業が煩雑となり、開発効率の低下を招いていた。
【０００６】
また、従来のプログラミングソフトは、１行につき１つのプログラムコマンドを設定するものであるため、いきおいプログラム全体の行数が増えてしまい、プログラム作成時やデバッグ時にプログラム全体の処理の流れを把握することが困難であった。
【０００７】
特に最近では、プログラムの複雑化・大規模化が進んでいることもあり、上記のような問題はより深刻となってきている。
【０００８】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、モータ制御プログラムの作成および実行の簡便化を図る技術を提供することにある。
【０００９】
【課題を解決するための手段】
上記目的を達成するために本発明のモータ制御プログラミングソフトは、制御対象機器が具備する１つ又は複数のモータをプログラム制御するモータ制御プログラミングソフトであって、表示手段を有するコンピュータをモータ制御に係るプログラムの作成および実行が可能なプログラム処理手段として機能させ、前記プログラム処理手段は、プログラム作成時に、各列にプログラムコマンド、各行にステップ番号が割り当てられた表形式のプログラム画面を前記表示手段に表示するとともに、前記表形式のプログラム画面のセルに、該セルの列に割り当てられたプログラムコマンドに対するオペランドを設定可能とし、プログラム実行時に、前記表形式のプログラム画面の各セルを順番に調べ、前記オペランドが設定されている場合に該オペランドを用いて当該列に割り当てられたプログラムコマンドを実行することを特徴とする。
【００１０】
このモータ制御プログラミングソフトは、プログラム処理手段によりプログラムの作成と実行が可能であるため、従来のように専用のコントロール装置を設けたり、作成したプログラムを記録媒体を介してロードする必要がない。したがって、プログラムの動作テストやデバッグ等の作業が簡便になり、開発効率の向上を図ることができる。
【００１１】
また、プログラム作成時にあっては、表形式のプログラム画面の各列にプログラムコマンドが割り当てられ、かつ、セルにオペランドを設定するようになっているので、１行に複数のプログラムコマンドによる処理を設定することができる。したがって、従来に比べてプログラム全体の行数を大幅に減少させることができ、プログラム作成時やデバッグ時にプログラム全体の処理の流れを把握することが容易となり、開発効率の向上を図ることができる。
【００１２】
ここで各列には、モータ制御において汎用的に用いられ、かつ多用されるプログラムコマンドを割り当てることが好ましい。たとえば、入力、出力などの制御要素を扱うプログラムコマンドや、ループ処理、タイマ処理などのプログラムコマンドや、モータを動作させるプログラムコマンドなどが好適である。
【００１３】
具体的には、前記プログラムコマンドは、前記オペランドとして少なくとも入力の番号およびその入力値に基づくロジックを設定可能であって、前記設定された入力の番号の入力値に基づいて前記設定されたロジックを実行する入力処理コマンドを含むとよい。
【００１４】
この構成では、入力値に基づくロジックをもコマンドのオペランドとして設定可能であるため、入力処理コマンド自体の汎用性および多様性を高めることができる。また、従来では入力値に基づくロジックは数行を用いて記述する必要があったところ、上記構成にあっては、入力の番号やロジックなどのオペランドは、入力処理コマンドに係るセル内に表示されるので、行数の一層の削減を図ることができるとともに、処理内容の把握も容易となる。
【００１５】
ここで、前記ロジックは、前記入力値が設定された値になるまでプログラムの処理を待機するウェイト処理や、前記入力値に応じてプログラムの処理を分岐する分岐処理などを含むことが好適である。
【００１６】
また、前記プログラムコマンドは、前記オペランドとして少なくとも前記モータの動作を定義したモーション定義データを設定可能であって、前記設定されたモーション定義データに基づいてモータを動作させるモータ動作コマンドを含むことも好ましい。
【００１７】
これにより、プログラム画面にモータの一連の動作を逐一記述する必要がなくなるので、行数の大幅な削減が可能となる。また、プログラム中で同一のモーション定義データを参照したり、モーション定義データを他のプログラムに再利用したりすることもできるので、開発効率の向上を図ることもできる。
【００１８】
また、前記プログラムコマンドは、前記オペランドとして少なくともループ開始行であることを示すマークまたはループ終了行であることを示すマークを設定可能であって、前記設定されたループ開始行からループ終了行までの処理を繰り返し実行するループ処理コマンドを含むことも好ましい。
【００１９】
プログラム画面には、ループ開始行と終了行にそれぞれマークが表示されるので、ループ単位を直感的かつ容易に把握することができる。また、ループ開始行やループ終了行の設定にあたり行のステップ番号の指定が不要であるため、行の追加や削除を行うことでループ開始行やループ終了行のステップ番号がずれた場合であっても、それを考慮する必要がないという利点もある。
【００２０】
前記プログラムが制御要素とする入力および出力は、前記制御対象機器との間で入出力される外部入力および外部出力と、記憶手段に保持される内部データとの間で入出力される内部入力および内部出力と、を含むことが好適である。
【００２１】
このように内部入力および内部出力を設けたことにより、プログラムの汎用性を高め、その使い方により様々な機能を実現することが可能となる。
【００２２】
たとえば、複数の入力を組み合わせた入力条件と該入力条件に対応付けた１つの出力結果とを設定可能であって、前記入力を監視し、前記入力条件に合致した場合に対応する出力結果を前記制御対象機器または前記内部データに出力するＩ／Ｏ監視処理手段を設け、上記プログラム処理手段と協働させることができる。
【００２３】
Ｉ／Ｏ監視処理手段は外部入力および内部入力を監視しているので、リアルタイム性や緊急性が要求される処理を実現することができる。このとき、出力を内部データに対して行えば、上記プログラム処理手段側で内部入力という形で取得可能となるので、両手段を協働させることができるようになる。これにより、プログラム処理手段側で、エラー処理などの緊急性が要求される処理を作成することができるようになる。
【００２４】
上記Ｉ／Ｏ監視処理手段は複数の入力の条件判断を１つの出力に代替することができるという利点もある。これにより、プログラム画面で複数行を用いて記述する必要のあった複数入力の条件判断を、１つの内部入力の条件判断に置き換えることができ、プログラムの行数を一層減少させることが可能となる。
【００２５】
また、前記内部データの内容を前記表示手段に表示するとともに、その内容を変更可能とする内部データ操作手段を設けることも好適である。
【００２６】
従来のモータ制御システムにあっては、ユーザからの入出力をスイッチやボタンやランプなどの操作パネル（ハードウェア）で行っていたが、本プログラミングソフトによれば上記内部データ操作手段により内部データの入出力をそれぞれスイッチやボタンやランプなどの機能に割り当てて、ソフトウェア上で操作パネルのような機能を実現することが可能となる。これにより、操作パネルの設計変更などが容易になるとともに、操作性も向上する。
【００２７】
以上、本発明の技術思想をモータ制御プログラミングソフトとして具現化した場合の構成を述べたが、本発明の技術思想は、上記モータ制御プログラミングソフトを記録した記録媒体、モータをプログラム制御するモータ制御装置、モータ制御プログラムの作成方法、または、モータ制御システムとして具現化することもできる。
【００２８】
すなわち、本発明の記録媒体は、上記モータ制御プログラミングソフトをコンピュータ読み取り可能な記録媒体に記録したことを特徴とする。
【００２９】
また、本発明のモータ制御装置は、制御対象機器が具備する１つ又は複数のモータをプログラム制御するモータ制御装置であって、表示手段と、モータ制御に係るプログラムの作成および実行が可能なプログラム処理手段と、を有し、前記プログラム処理手段は、プログラム作成時に、各列にプログラムコマンド、各行にステップ番号が割り当てられた表形式のプログラム画面を前記表示手段に表示するとともに、前記表形式のプログラム画面のセルに、該セルの列に割り当てられたプログラムコマンドに対するオペランドを設定可能とし、プログラム実行時に、前記表形式のプログラム画面の各セルを順番に調べ、前記オペランドが設定されている場合に該オペランドを用いて当該列に割り当てられたプログラムコマンドを実行することを特徴とする。
【００３０】
上記モータ制御装置において、必要に応じて以下の構成を組み合わせることも好ましいものである。
【００３１】
前記プログラムコマンドは、前記オペランドとして少なくとも入力の番号およびその入力値に基づくロジックを設定可能であって、前記設定された入力の番号の入力値に基づいて前記設定されたロジックを実行する入力処理コマンドを含むとよい。
【００３２】
ここで、前記ロジックは、前記入力値が設定された値になるまでプログラムの処理を待機するウェイト処理や、前記入力値に応じてプログラムの処理を分岐する分岐処理を含むことが好適である。
【００３３】
また、前記プログラムコマンドは、前記オペランドとして少なくとも前記モータの動作を定義したモーション定義データを設定可能であって、前記設定されたモーション定義データに基づいてモータを動作させるモータ動作コマンドを含むことも好ましい。
【００３４】
また、前記プログラムコマンドは、前記オペランドとして少なくともループ開始行であることを示すマークまたはループ終了行であることを示すマークを設定可能であって、前記設定されたループ開始行からループ終了行までの処理を繰り返し実行するループ処理コマンドを含むことも好ましい。
【００３５】
前記プログラムが制御要素とする入力および出力は、前記制御対象機器との間で入出力される外部入力および外部出力と、記憶手段に保持される内部データとの間で入出力される内部入力および内部出力と、を含むことが好適である。
【００３６】
複数の入力を組み合わせた入力条件と該入力条件に対応付けた１つの出力結果とを設定可能であって、前記入力を監視し、前記入力条件に合致した場合に対応する出力結果を前記制御対象機器または前記内部データに出力するＩ／Ｏ監視処理手段を有することも好適であり、上記プログラム処理手段と協働させるとなおよい。
【００３７】
前記内部データの内容を前記表示手段に表示するとともに、その内容を変更可能とする内部データ操作手段を有することも好適である。
【００３８】
また、本発明のモータ制御プログラムの作成方法は、制御対象機器が具備する１つ又は複数のモータをプログラム制御するモータ制御プログラムの作成方法であって、プログラム作成時に、各列にプログラムコマンド、各行にステップ番号が割り当てられた表形式のプログラム画面を前記表示手段に表示するとともに、前記表形式のプログラム画面のセルに、該セルの列に割り当てられたプログラムコマンドに対するオペランドを設定可能とし、プログラム実行時に、前記表形式のプログラム画面の各セルを順番に調べ、前記オペランドが設定されている場合に該オペランドを用いて当該列に割り当てられたプログラムコマンドを実行するものである。さらにこの構成に上述した各構成を適宜組み合わせることも好適である。
【００３９】
また、本発明のモータ制御システムは、１つ又は複数のモータを具備する制御対象機器と、表示手段と、モータ制御に係るプログラムの作成および実行が可能なプログラム処理手段と、を有し、前記プログラム処理手段は、プログラム作成時に、各列にプログラムコマンド、各行にステップ番号が割り当てられた表形式のプログラム画面を前記表示手段に表示するとともに、前記表形式のプログラム画面のセルに、該セルの列に割り当てられたプログラムコマンドに対するオペランドを設定可能とし、プログラム実行時に、前記表形式のプログラム画面の各セルを順番に調べ、前記オペランドが設定されている場合に該オペランドを用いて当該列に割り当てられたプログラムコマンドを実行するものである。さらにこの構成に上述した各構成を適宜組み合わせることも好適である。
【００４０】
【発明の実施の形態】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【００４１】
（システム構成）
図１は、本発明の実施形態に係るモータ制御システムのシステム構成図である。
【００４２】
同図に示すように、モータ制御システムは、モータを具備する制御対象機器としてのプロッタ装置１と、そのモータの制御を行うモータ制御装置としてのコンピュータ２から構成される。プロッタ装置１とコンピュータ２はそれぞれ別体構成にしてもよいし、一体構成にしてもよい。
【００４３】
プロッタ装置１は、平面プロッタであり、Ｘ軸ガイド装置１０を駆動するＸ軸モータ１１とＹ軸ガイド装置１２を駆動するＹ軸モータ１３とペン用ガイド装置１４を駆動するペン用モータ１５の３つのモータを備える。それぞれのモータは、モータドライバ１６を介してハブ１７に接続されている。
【００４４】
また、プロッタ装置１は入出力部１８を有している。入出力部１８は、プロッタ装置１の電源スイッチ・ランプ・アラーム・センサ等（いずれも不図示）の入出力デバイスである。この入出力部１８もハブ１７に接続されている。
【００４５】
一方、コンピュータ２は、ＣＰＵ（中央演算処理装置）や記憶手段（メモリ、ハードディスク等）などを備えた情報処理部２０、ディスプレイなどの表示部（表示手段）２１、キーボードやマウスなどの設定入力部（設定入力手段）２２などを備えた汎用のパーソナルコンピュータにより構成される。コンピュータ２は、ＵＳＢケーブルによってプロッタ装置１のハブ１７に接続される。
【００４６】
なお、ここでは、制御対象機器の一例としてプロッタ装置を挙げたが、本実施形態のモータ制御装置（コンピュータ２）はモータを備えた種々の装置を制御対象とすることが可能である。また、モータの数も３つに限るものではなく、１つ又は複数のモータを制御することができる。
【００４７】
上記構成において、コンピュータ２からモータ制御用のコントロールデータがハブ１７に送信されると、ハブ１７が制御対象となるモータを特定し、そのモータのモータドライバ１６にコントロールデータを送信する。モータドライバ１６は、コントロールデータに基づいてモータを回転駆動させる。
【００４８】
Ｘ軸モータ１１は、Ｘ軸ガイド装置１０を駆動し、ペン（不図示）のＸ軸方向の位置をコントロールする。同様にしてＹ軸モータ１３はペンのＹ軸方向の位置をコントロールする。そして、ペン用モータ１５は、ペン用ガイド装置１４を駆動して、ペンの上げ下げ等をコントロールする。
【００４９】
また、コンピュータ２はハブ１７を介してプロッタ装置１の入出力部１８との間で情報（信号）を送受信することができる。以下、入出力部１８との間での情報の送受信を「外部Ｉ／Ｏ（入力／出力）」と称する。この外部Ｉ／Ｏにより、コンピュータ２は、プロッタ装置１の電源スイッチのＯＮ／ＯＦＦ状態やセンサによるオーバートラベル検知信号などを取得することができるとともに、逆に、プロッタ装置１に対して電源スイッチ切換やランプ点灯やアラーム警告などを実行させることができる。
【００５０】
（モータ制御プログラミングソフト）
以上述べたモータ制御に係る処理は、コンピュータ２で実行されるモータ制御プログラミングソフトによって実現されている。
【００５１】
図２は、モータ制御プログラミングソフトの構成を模式的に示した機能ブロック図である。
【００５２】
モータ制御プログラミングソフト３は、大きく分けて、プログラム処理部（プログラム処理手段）３０と、Ｉ／Ｏ監視処理部（Ｉ／Ｏ監視処理手段）３１の２つの機能ブロックから構成される。プログラム処理部３０は、モータ制御に係るプログラムの作成および実行を可能とする部分であり、ステップ実行型の制御によりモータコントロールを行う。一方、Ｉ／Ｏ監視処理部３１は、入力を絶えず監視していて入力値が所定の条件に合致したときに該当する処理を実行する部分である。
【００５３】
プログラム処理部３０とＩ／Ｏ監視処理部３１は共に内部データ３３の内容を取得し又は変更することができる。
【００５４】
内部データ３３は、実際にはメモリまたはハードディスクなどの記憶手段に保持されたデータであって、１番からｎ番（ｎ：自然数）までの複数の変数の集合体である。モータ制御プログラミングソフト３は、外部機器（制御対象機器の入出力部１８）との間の入出力（外部Ｉ／Ｏ）と、内部データ３３との間の入出力とを同列に扱い、共に制御要素としている。そこで、便宜的に内部データ３３との間の入出力を「内部Ｉ／Ｏ（入力／出力）」と称す。なお、外部Ｉ／Ｏに関しては入力先と出力先が別個であり、「入力１」と「出力１」とは異なるものであるが、内部Ｉ／Ｏに関しては入力先と出力先は同じ変数をさすことになる。
【００５５】
本実施形態では、このように内部Ｉ／Ｏを設けたことにより、プログラムの汎用性を高め、その使い方により様々な機能を実現している。
【００５６】
たとえば、プログラム処理部３０とＩ／Ｏ監視処理部３１は、内部データ３３を介して情報交換をしたり、互いに相手の処理に影響を与えたりすることが可能である。この点については後述する。
【００５７】
また、内部Ｉ／Ｏの利用例として、本実施形態のモータ制御プログラミングソフト３は、内部データ３３の内容を表示部２１に表示するとともに、その内容を変更可能とする内部データ操作部（内部データ操作手段）３２を備える。図３は、内部データ操作部３２の操作画面の一例である。「内部Ｉ／Ｏ　１」というラベルの左側にあるチェックボックスで、ＯＮ／ＯＦＦの切り換えおよびＯＮ／ＯＦＦ状態の確認を行う。また、ラベルの右側にあるテキストボックスは変数名を表示または入力する部分である。
【００５８】
この内部データ操作部３２は、たとえば従来の操作パネルと同様の働きをする。すなわち、従来のモータ制御装置にあっては、ユーザからの入出力をスイッチやボタンやランプなどの操作パネル（ハードウェア）で行っていたが、上記内部データによる内部Ｉ／Ｏをそれぞれスイッチやボタンやランプなどの機能に割り当てて、ソフトウェア上（表示部上）でユーザからの入力を受け取ったり、ユーザに対して警告メッセージなどの出力を行うことが可能となる。これにより、操作パネルの設計変更などが容易になるとともに、操作性の向上も図ることができる。
【００５９】
（プログラム処理部）
プログラム処理部３０の操作画面の一例を図４に示す。この操作画面は、モータ制御プログラム（以下、単に「プログラム」という。）を作成するためのプログラム画面である。
【００６０】
プログラム画面は、表形式の画面構成となっており、各行に処理のステップ番号、各列にプログラムコマンドが割り当てられている。モータ制御において汎用的に用いられ、かつ多用されるプログラムコマンドを各列に割り当てるとよい。本例では、図中左から順に、入力処理コマンド「Ｉｎｐｕｔ」、モータ動作コマンド「Ａｃｔｉｏｎ」、出力処理コマンド「Ｏｕｔｐｕｔ」、タイマ処理コマンド「Ｔｉｍｅｒ」、ループ処理コマンド「Ｌｏｏｐ」を割り当てている。
【００６１】
それぞれのプログラムコマンドは、ユーザにより設定されるオペランドを引数として用いて所定の処理を実行するものである。オペランドの設定は、いずれもプログラムコマンドの名称が付されたボタンを押下し、設定入力補助手段としての入力ダイアログを表示して行う。本実施形態では、各コマンドに応じて入力ダイアログを設け、設定すべきオペランド以外の入力が行われないように、かつ、オペランドの入力を簡便に行えるようにしている。これにより、プログラム作成の労力が軽減される。以下、それぞれのコマンドについて具体的に述べる。
【００６２】
「Ｉｎｐｕｔ」は、オペランドとして入力の番号およびその入力値に基づくロジックをとり、設定された入力の番号の入力値に基づいて設定されたロジックを実行するコマンドである。
【００６３】
「Ｉｎｐｕｔ」と表示されたボタンを押下すると、図５に示す入力ダイアログが表示される。ここでは、入力の番号と、その入力値に基づくロジックを設定する。入力の番号としては、内部入力と外部入力のいずれも設定可能である。ロジックとしては、ウェイト処理と分岐処理があり、ウェイト処理を設定する場合はＯＮまたはＯＦＦボタンを押下し、分岐処理を設定する場合はＯＮまたはＯＦＦボタンを押下するとともに、分岐先となるステップ番号を入力する。
【００６４】
ウェイト処理とは、設定した番号の入力がＯＮまたはＯＦＦになるまで、プログラムの処理を待機する処理である。分岐処理とは、設定した番号の入力がＯＮまたはＯＦＦの場合に設定したステップ番号にジャンプする処理である。
【００６５】
ここで設定したオペランドは、たとえば、「内部１　ｉｆ　ＯＮ　ｔｏ　１０」（内部Ｉ／Ｏの１番がＯＮの場合は、１０行目にジャンプする。）や、「２　ＯＦＦ　ｗａｉｔ」（外部Ｉ／Ｏの入力２がＯＦＦになるまで待機する。）などの書式で、表のセル内に表示される。
【００６６】
本実施形態では、入力値に基づくロジックをもコマンドのオペランドとして設定可能であるため、「Ｉｎｐｕｔ」コマンド自体の汎用性および多様性を高めることができる。また、従来は分岐処理などのロジックは数行を用いて記述する必要があったところ、ここでは上記のようにすべてのオペランドが「Ｉｎｐｕｔ」コマンドに係るセル内に表示されるので、行数の削減を図ることができるとともに、処理内容の把握も容易となる。
【００６７】
「Ａｃｔｉｏｎ」は、オペランドとしてモータの動作を定義したモーション定義データをとり、設定されたモーション定義データに基づいてモータを動作させるコマンドである。
【００６８】
モーション定義データとは、各モータの移動量を記述したデータである。その一例を図６に示す。モーション定義データは、ＣＳＶファイル形式で作成されてあり、１行のデータが各モータの２ｍｓｅｃごとのモータ移動量を表している。
【００６９】
「Ａｃｔｉｏｎ」ボタンを押下すると、いわゆるファイル選択ダイアログが表示されるので、予め作成されハードディスク内に格納されたモーション定義データを選択する。ここで選択したファイル名が、表のセル内に表示される。
【００７０】
このように、オペランドとしてモーション定義データを設定するだけで足りるので、プログラム画面にモータの一連の動作を逐一記述する必要がなくなり、行数の大幅な削減が可能となる。また、プログラム中で同一のモーション定義データを参照したり、モーション定義データを他のプログラムに再利用したりすることも容易である。
【００７１】
「Ｏｕｔｐｕｔ」は、オペランドとして出力の番号およびその出力値に基づくロジックをとり、設定された出力の番号に設定されたロジックを実行するコマンドである。
【００７２】
「Ｏｕｔｐｕｔ」ボタンを押下すると、図７に示す入力ダイアログが表示される。ここでは、出力の番号と、そこに出力するロジックを設定する。出力の番号としては、内部出力と外部出力のいずれも設定可能である。ロジックとしては、ＯＮまたはＯＦＦの出力値を指定できる。
【００７３】
ここで設定したオペランドは、たとえば、「内部３　ＯＮ」（内部Ｉ／Ｏの３番をＯＮにする。）や、「４　ＯＦＦ」（外部Ｉ／Ｏの出力４をＯＦＦにする。）などの書式で、表のセル内に表示される。
【００７４】
「Ｔｉｍｅｒ」は、オペランドとしてウェイト時間をとり、設定されたウェイト時間の間、プログラムの処理を停止するコマンドである。
【００７５】
「Ｔｉｍｅｒ」ボタンを押下すると、図８に示す入力ダイアログが表示される。ここでは、ウェイト時間をｍｓｅｃ単位で入力する。ここで設定したウェイト時間が、表のセル内に表示される。
【００７６】
「Ｌｏｏｐ」は、オペランドとしてループ開始行であることを示すマーク、または、ループ終了行であることを示すマークおよびループ回数をとり、設定されたループ開始行からループ終了行までの処理をループ回数分繰り返し実行するコマンドである。
【００７７】
「Ｌｏｏｐ」ボタンを押下すると、図９に示す入力ダイアログが表示される。ループ番号は、図に示すように、「↓１」、「↑１」、「↓２」、「↑２」、・・・というマークが表示されたプルダウンメニューから選択することにより設定する。このマークのうち下矢印「↓」は、当該行がループの開始行であることを示し、上矢印「↑」は、当該行がループの終了行であることを示す。矢印の右側に付された数字は、ループ番号を示すものであって、同一ループ番号の下矢印と上矢印の間を繰り返し処理することを意味する。ループ回数は、終了行を設定するときに併せて設定する。
【００７８】
ここで設定したオペランドは、たとえば、「↓１」や「↑１　１０」などの書式で、表のセル内に表示される。このように、ループ開始行と終了行にそれぞれマークが表示されるので、ループ単位を直感的かつ容易に把握することができる。また、ループ開始行やループ終了行の設定にあたり行のステップ番号の指定が不要であるため、行の追加や削除を行うことでループ開始行や終了行のステップ番号がずれた場合であっても、それがループ処理に影響を及ぼすことがない。
【００７９】
プログラム画面の表の下には、「ＥＮＤ」ボタンが配されている。「ＥＮＤ」ボタンを押下すると、表のセル内に「ＥＮＤ」が設定される。
【００８０】
以上のようにして表形式のプログラム画面上で作成したプログラムの一例を図１０に示す。
【００８１】
このプログラムは、１０行のステップからなるプログラムである。プログラム処理部３０は、１行目の第１セル（１行目のＩｎｐｕｔ）から開始し、順次右側のセルに移り（１行目のＡｃｔｉｏｎ→Ｏｕｔｐｕｔ→Ｔｉｍｅｒ→Ｌｏｏｐ）、当該行の最終セル（Ｌｏｏｐ）に到達したら、次の行の第１セルに移る、という順番で各セルを調べる。空白のセル（オペランドが設定されていないセル）はスキップし、オペランドが設定されている場合には、そのオペランドを用いて当該列に割り当てられたプログラムコマンドを実行する。そして、「ＥＮＤ」に設定されたセルに到達したらプログラムを終了する。
【００８２】
図１０のプログラムを実行した場合の処理の流れを図１１のフローチャートに示す。
【００８３】
まず、１行目の第１セルでは、外部Ｉ／Ｏの入力１がＯＮになるまで待機する（ステップＳ１００）。たとえば、外部Ｉ／Ｏの入力１がプロッタ装置の電源スイッチに対応付けられている場合には、このセルの処理は、プロッタ装置の電源スイッチがＯＮになるまでプログラムの処理を待機する処理となる。
【００８４】
次に、１行目の第３セルでは、外部Ｉ／Ｏの出力１をＯＮにする（ステップＳ１０１）。たとえば、外部Ｉ／Ｏの出力１がプロッタ装置の表示ランプに対応付けられている場合には、このセルの処理は、表示ランプを点灯し、プログラムによる処理が開始されたことをユーザに通知する処理となる。
【００８５】
続いて、２行目の第１セルでは、外部Ｉ／Ｏの入力２の状態を調べ、それがＯＮであったならば７行目（の第１セル）にジャンプし、ＯＦＦであったならば次のセルに移る（ステップＳ１０２）。たとえば、外部Ｉ／Ｏの入力２がプロッタ装置の操作ボタンに対応付けられている場合には、このセルの処理は、操作ボタンの状態によってモータ制御を異ならせる分岐処理となる。
【００８６】
最初に入力２がＯＦＦの場合の処理を述べる。３行目の第２セルでは、モーション定義データ「Ｃ：￥Ｃｏｎｄｏｒ．ｃｓｖ」がハードディスク等から読み込まれ、実行される（ステップＳ１０３）。具体的には、プログラムがこのＣＳＶファイルのデータを３００ＫＢｙｔｅずつハブ１７に送信する。ハブ１７は、受信したデータに基づいて制御対象となるモータを特定し、モータドライバ１６にコントロールデータを送信する。これにより各モータが駆動され、上記モーション定義データの内容に基づき「コンドル」の線画が描画される。
【００８７】
プログラムは、ＣＳＶファイルのデータの送信を終えると、３行目の第４セルに移り、０．５秒間待機する（ステップＳ１０４）。
【００８８】
３行目の第５セルは、ループ番号１のループ開始行であることを示している。
【００８９】
４行目に移り、第３セルでは、外部Ｉ／Ｏの出力２をＯＮにする（ステップＳ１０５）。たとえば、外部Ｉ／Ｏの出力２がプロッタ装置のアラームに対応付けられている場合には、このセルの処理は、アラームを鳴らし、１つの描画処理が完了したことをユーザに通知する処理となる。
【００９０】
４行目の第５セルは、ループ番号１のループ終了行であることを示している。ここでは、ループカウンタをインクリメントし、カウンタの値とループ回数との比較を行う。カウンタの値が１０に満たなければ、ループ開始行である３行目（の第１セル）に戻り、カウンタの値が１０と等しければ、５行目に移る（ステップＳ１０６）。したがって、この処理ではコンドルの線画が１０回描画されることになる。
【００９１】
５行目の第３セルでは、外部Ｉ／Ｏの出力１をＯＦＦにする（ステップＳ１０７）。たとえば、上記と同様、外部Ｉ／Ｏの出力１がプロッタ装置の表示ランプに対応付けられている場合には、このセルの処理は、表示ランプを消灯し、プログラムによる処理が終了したことをユーザに通知する処理となる。
【００９２】
一方、２行目の第１セルにおける処理（ステップＳ１０２）で、外部Ｉ／Ｏの入力２がＯＮだった場合には、７行目の第２セルの処理が実行される。ここでは、モーション定義データ「Ｃ：￥Ｆｌｏｗｅｒ．ｃｓｖ」がハードディスク等から読み込まれ、実行される（ステップＳ１０８）。
【００９３】
プログラムは、ＣＳＶファイルのデータの送信を終えると、７行目の第４セルに移り、１秒間待機する（ステップＳ１０９）。
【００９４】
７行目の第５セルは、ループ番号２のループ開始行であることを示している。８行目および９行目の処理（ステップＳ１１０〜Ｓ１１２）は、上記４行目および５行目の処理（ステップＳ１０５〜Ｓ１０７）とほぼ同じである。ただし、ここではループ回数が５回となっている。
【００９５】
以上述べたように、本実施形態のモータ制御装置（コンピュータ２）は、プログラム処理部３０によりモータ制御プログラムの作成と実行が可能であるため、従来のように専用のコントロール装置を設けたり、作成したプログラムをＲＯＭなどの記録媒体を介してロードする必要がない。したがって、プログラムの動作テストやデバッグ等の作業が簡便になり、開発効率の向上を図ることができる。
【００９６】
また、表形式のプログラム画面を採用したので、１行に複数のプログラムコマンドによる処理を設定することができる。したがって、従来に比べてプログラム全体の行数を大幅に減少させることができ、プログラム作成時やデバッグ時にプログラム全体の処理の流れを把握することが容易となる。
【００９７】
なお、図１０では、１０行のプログラムしか表示されていないが、これよりも行数が増えた場合には、プログラム画面自体を拡大したり、右端のスクロールバーを操作することで、１１行目以降を表示することができる。
【００９８】
（Ｉ／Ｏ監視処理部）
Ｉ／Ｏ監視処理部３１の操作画面の一例を図１２に示す。
【００９９】
ここでは、１つまたは複数の入力を組み合わせた入力条件と、その入力条件に対応付けた１つの出力結果とを設定可能である。入力条件には、外部入力または内部入力を設定することができる。出力条件には、外部出力または内部出力を設定することができる。
【０１００】
図示の例では、１行目は、「外部Ｉ／Ｏの入力１がＯＮであれば外部Ｉ／Ｏの出力１をＯＮにする」という条件式を表している。２行目は、「外部Ｉ／Ｏの入力４と入力５がＯＮであれば、内部Ｉ／Ｏの１０番をＯＮにする」という条件式を表している。３行目は、「外部Ｉ／Ｏの入力１がＯＮであり、かつ、外部Ｉ／Ｏの入力２がＯＦＦであり、かつ、内部Ｉ／Ｏの３番がＯＮであれば、外部Ｉ／Ｏの出力３をＯＦＦにする」という条件式を表している。４行目は、「内部Ｉ／Ｏの１番，５番，６番がＯＦＦであれば、内部Ｉ／Ｏの９番をＯＮにする」という条件式を表している。
【０１０１】
Ｉ／Ｏ監視処理部３１は、外部入力および内部入力の状態を絶えず監視しており、設定された入力条件に入力値が合致した場合に対応する出力結果をプロッタ装置１または内部データ３３に出力する。
【０１０２】
このＩ／Ｏ監視処理は、上記プログラム処理に比べて複雑な制御はできないものの、リアルタイム性や緊急性が要求される処理や論理式的な単純な処理に好適である。たとえば、外部Ｉ／Ｏの入力７と入力８に対応付けられた２つのセンサがＯＮになった場合に、外部Ｉ／Ｏの出力９に対応付けられた警告ランプを点灯する、というような処理などである。
【０１０３】
また、本実施形態では、内部Ｉ／Ｏを利用して、Ｉ／Ｏ監視処理部３１とプログラム処理部３０とを協働させることができる。これは、以下のような処理を行う場合に有効である。
【０１０４】
たとえば、プログラムの実行開始条件として、プロッタ装置の電源、プロッタ用紙の有無、モータの状態などの複数の外部Ｉ／Ｏの状態を調べる必要がある場合である。この場合には、Ｉ／Ｏ監視処理部３１で、複数の入力条件がそろったときに内部Ｉ／Ｏの１つがＯＮになるよう設定し、プログラム処理部３０では、その内部Ｉ／ＯがＯＮになるまで待機するような設定にしておく。複数の入力条件を判断する処理をプログラム処理だけで行おうとすると、１つの条件判断で１ステップ（１行）必要となるため、行数が増えてプログラムが煩雑となる。しかし、Ｉ／Ｏ監視処理によって複数の入力の条件判断を１つの入力に代替させることで、プログラムの行数が少なくなり、プログラムの作成・確認を容易にすることができるのである。
【０１０５】
また、エラー処理を行う場合にも有効である。たとえば、外部Ｉ／Ｏの入力１〜１０のうちいずれか１つがＯＦＦとなった場合に、プログラム処理を中断する必要があるならば、プログラムの各所に外部Ｉ／Ｏの入力１〜１０のそれぞれの状態を調べるエラー処理を用意しなければならない。これでは、いたずらにステップ数が増えるばかりでなく、プログラムの処理の流れが把握しづらくなる。そこで、Ｉ／Ｏ監視処理にて外部Ｉ／Ｏの入力１〜１０のいずれかがＯＦＦになったときに内部Ｉ／Ｏの１つがＯＦＦになるように設定しておく。これにより、プログラム側では１つの内部Ｉ／Ｏの状態を調べれば、エラーの有無を判断できることになり、プログラムの作成・確認が容易となる。
【０１０６】
【発明の効果】
以上説明したように、本発明によれば、モータ制御プログラムの作成および実行の簡便化を図ることができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るモータ制御システムのシステム構成図である。
【図２】本発明の実施形態に係るモータ制御プログラミングソフトの構成を模式的に示した機能ブロック図である。
【図３】内部データ操作部の操作画面の一例である。
【図４】プログラム処理部の表形式のプログラム画面の一例である。
【図５】入力処理コマンドのオペランド入力ダイアログの一例である。
【図６】モーション定義データの一例である。
【図７】出力処理コマンドのオペランド入力ダイアログの一例である。
【図８】タイマ処理コマンドのオペランド入力ダイアログの一例である。
【図９】ループ処理コマンドのオペランド入力ダイアログの一例である。
【図１０】モータ制御プログラムの一例である。
【図１１】図１０のプログラムを実行した場合の処理の流れを示すフローチャートである。
【図１２】Ｉ／Ｏ監視処理部の操作画面の一例である。
【図１３】従来のモータ制御システムのシステム構成図である。
【図１４】従来のモータ制御プログラミングソフトのプログラム画面の一例である。
【符号の説明】
１　　　プロッタ装置（制御対象機器）
１０　Ｘ軸ガイド装置
１１　Ｘ軸モータ
１２　Ｙ軸ガイド装置
１３　Ｙ軸モータ
１４　ペン用ガイド装置
１５　ペン用モータ
１６　モータドライバ
１７　ハブ
１８　入出力部
２　　　コンピュータ（モータ制御装置）
２０　情報処理部
２１　表示部
２２　設定入力部
３　　　モータ制御プログラミングソフト
３０　プログラム処理部
３１　Ｉ／Ｏ監視処理部
３２　内部データ操作部
３３　内部データ
【図１】
2004046711.tif 000003
【図２】
2004046711.tif 000004
【図３】
2004046711.tif 000005
【図４】
2004046711.tif 000006
【図５】
2004046711.tif 000007
【図６】
2004046711.tif 000008
【図７】
2004046711.tif 000009
【図８】
2004046711.tif 000010
【図９】
2004046711.tif 000011
【図１０】
2004046711.tif 000012
【図１１】
2004046711.tif 000013
【図１２】
2004046711.tif 000014
【図１３】
2004046711.tif 000015
【図１４】
2004046711.tif 000016