(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024041329
(43)【公開日】2024-03-27
(54)【発明の名称】編集装置及び編集方法
(51)【国際特許分類】
G05B 19/042 20060101AFI20240319BHJP
【FI】
G05B19/042
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022146076
(22)【出願日】2022-09-14
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り [1] 販売・納入日(公開日) 令和4年6月17日 販売・納入先 シンフォニアテクノロジー株式会社 伊勢製作所(三重県伊勢市竹ケ鼻町100) [2] 貸し出し日(公開日) 令和4年8月5日 貸し出し先 東京女子医科大学(東京都新宿区河田町8-1) [3] 販売・納入日(公開日) 令和4年8月7日 販売・納入先 日本電気株式会社 関西支社(大阪市中央区城見一丁目4―24) [4] 販売・納入日(公開日) 令和4年9月1日 販売・納入先 東京女子医科大学(東京都新宿区河田町8-1) [5] 開催日 令和4年9月1日 開催場所 ロボットアーム説明会 主催 THK株式会社 東京都大田区東糀谷4丁目9-16 THK(株)テクノセンター
(71)【出願人】
【識別番号】390029805
【氏名又は名称】THK株式会社
(74)【代理人】
【識別番号】100141139
【弁理士】
【氏名又は名称】及川 周
(74)【代理人】
【識別番号】100161506
【弁理士】
【氏名又は名称】川渕 健一
(74)【代理人】
【識別番号】100188891
【弁理士】
【氏名又は名称】丹野 拓人
(72)【発明者】
【氏名】奥 成郁
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220AA05
5H220BB12
5H220CC06
5H220CX02
5H220DD04
5H220HH08
5H220JJ12
5H220JJ24
5H220JJ42
5H220JJ53
(57)【要約】
【課題】プログラミング言語の知識がない者であっても、容易にプログラムを編集する。
【解決手段】編集装置は、ユーザの操作に基づき、プログラムを構成するタスクの始点又は終点を示す2つの母線間に複数の要素を配置し、前記要素を介して前記母線間を接続することにより、コンピュータに実行させる処理を記載する編集装置であって、前記ユーザにより選択された前記要素を識別する識別情報を取得する識別情報取得部と、前記ユーザにより操作されるカーソルの位置を取得するカーソル位置取得部と、選択された前記要素に対する前記ユーザの操作を取得する操作取得部と、取得した前記カーソルの位置と、取得した前記ユーザの操作とに基づき、前記要素を前記カーソルの位置に配置可能であるか否かを判定する判定部と、判定された結果に応じた表示を行う制御をする表示制御部とを備える。
【選択図】
図5
【特許請求の範囲】
【請求項1】
ユーザの操作に基づき、プログラムを構成するタスクの始点又は終点を示す2つの母線間に複数の要素を配置し、前記要素を介して前記母線間を接続することにより、コンピュータに実行させる処理を記載する編集装置であって、
前記ユーザにより選択された前記要素を識別する識別情報を取得する識別情報取得部と、
前記ユーザにより操作されるカーソルの位置を取得するカーソル位置取得部と、
選択された前記要素に対する前記ユーザの操作を取得する操作取得部と、
取得した前記カーソルの位置と、取得した前記ユーザの操作とに基づき、前記要素を前記カーソルの位置に配置可能であるか否かを判定する判定部と、
判定された結果に応じた表示を行う制御をする表示制御部と
を備える編集装置。
【請求項2】
前記判定部は、前記カーソルの位置が、前記要素の種類ごとに設定された領域情報に応じた位置にある場合に前記要素を前記カーソルの位置に配置可能であると判定する
請求項1に記載の編集装置。
【請求項3】
前記領域情報には、前記要素の種類ごとに複数の領域が設定され
前記表示制御部は、前記要素の種類ごとに設定された複数の領域それぞれに応じて異なる表示をする
請求項2に記載の編集装置。
【請求項4】
前記領域情報は、更に前記要素の集合ごとに設定され、
前記判定部は、更に前記要素の集合が、取得した前記カーソルの位置に配置可能であるか否かを判定する
請求項2に記載の編集装置。
【請求項5】
前記操作取得部により前記要素の配置操作を取得した場合であっても、前記判定部により、前記要素を前記カーソルの位置に配置可能でないと判定された場合は、前記要素を配置せず、前記要素の選択をキャンセルする
請求項1から請求項4のいずれか一項に記載の編集装置。
【請求項6】
ユーザの操作に基づき、プログラムを構成するタスクの始点又は終点を示す2つの母線間に複数の要素を配置し、前記要素を介して前記母線間を接続することにより、コンピュータに実行させる処理を記載する編集方法であって、
前記ユーザにより選択された前記要素を識別する識別情報を取得する識別情報取得工程と、
前記ユーザにより操作されるカーソルの位置を取得するカーソル位置取得工程と、
選択された前記要素に対する前記ユーザの操作を取得する操作取得工程と、
取得した前記カーソルの位置と、取得した前記ユーザの操作とに基づき、前記要素を前記カーソルの位置に配置可能であるか否かを判定する判定工程と、
判定された結果に応じた表示を行う制御をする表示制御工程と
を有する編集方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、編集装置及び編集方法に関する。
【背景技術】
【0002】
従来、プログラマブルロジックコントローラ(PLC:Programmable Logic Controller)を制御するための制御プログラムとして、ラダー言語、SFC(シーケンシャル・ファンクション・チャート)言語、ST(ストラクチャード・テキスト)言語、FB(ファンクション・ブロック)言語等が知られている。一例として、ラダー言語の規則に則って作成された図面(以下、ラダープログラム等と記載する場合がある。)を編集するソフトウェアが知られている。ラダープログラムの編集ソフトウェアによれば、ユーザの操作によりラダープログラムを構成する要素や接続線等が入力される。しかしながら、要素の入力や各要素間の接続は手間であり、ラダープログラムの作成に時間を要する場合がある。したがって、ラダープログラムの編集を支援するための技術が知られている(例えば、特許文献1を参照。)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述したような技術によれば、既に入力された要素間に接点を挿入する等の操作が容易になるかもしれない。しかしながら、当該操作はラダー図の入力規則を熟知している者でなければ容易でない。また、間違えた接続をしてしまった場合にエラー表示されるのは、ラダー図の入力時ではなく、実行時(コンパイル時)であるため、ユーザはエラーが存在するか否かについて実行時まで気が付かないといった問題があった。
【0005】
そこで本発明は、プログラミング言語の知識がない者であっても、容易にプログラムを編集可能な技術を提供しようとするものである。
【課題を解決するための手段】
【0006】
上記の課題を解決するため、本発明の一態様は、ユーザの操作に基づき、プログラムを構成するタスクの始点又は終点を示す2つの母線間に複数の要素を配置し、前記要素を介して前記母線間を接続することにより、コンピュータに実行させる処理を記載する編集装置であって、前記ユーザにより選択された前記要素を識別する識別情報を取得する識別情報取得部と、前記ユーザにより操作されるカーソルの位置を取得するカーソル位置取得部と、選択された前記要素に対する前記ユーザの操作を取得する操作取得部と、取得した前記カーソルの位置と、取得した前記ユーザの操作とに基づき、前記要素を前記カーソルの位置に配置可能であるか否かを判定する判定部と、判定された結果に応じた表示を行う制御をする表示制御部とを備える編集装置である。
【0007】
また、上記の課題を解決するため、本発明の一態様は、ユーザの操作に基づき、プログラムを構成するタスクの始点又は終点を示す2つの母線間に複数の要素を配置し、前記要素を介して前記母線間を接続することにより、コンピュータに実行させる処理を記載する編集方法であって、前記ユーザにより選択された前記要素を識別する識別情報を取得する識別情報取得工程と、前記ユーザにより操作されるカーソルの位置を取得するカーソル位置取得工程と、選択された前記要素に対する前記ユーザの操作を取得する操作取得工程と、取得した前記カーソルの位置と、取得した前記ユーザの操作とに基づき、前記要素を前記カーソルの位置に配置可能であるか否かを判定する判定工程と、判定された結果に応じた表示を行う制御をする表示制御工程とを有する編集方法である。
【発明の効果】
【0008】
本発明によれば、プログラミング言語の知識がない者であっても、容易にプログラムを編集することができる。
【図面の簡単な説明】
【0009】
【
図1】第1の実施形態に係るロボットシステムの概要について説明するための図である。
【
図2】第1の実施形態に係る情報処理装置の機能構成の一例を示す図である。
【
図3】第1の実施形態に係るロボットの機能構成の一例を示す図である。
【
図4】第1の実施形態に係る編集ソフト操作画面の一例を示す図である。
【
図5】第1の実施形態に係る編集装置の機能構成の一例を示す図である。
【
図6】第1の実施形態に係る編集装置の一連の動作の一例を示すフローチャートである。
【
図7】第1の実施形態に係る各要素の周辺に定義された領域について説明するための図である。
【
図8】第1の実施形態に係る要素が第1領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
【
図9】第1の実施形態に係る要素が第2領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
【
図10】第1の実施形態に係る要素が第3領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
【
図11】第1の実施形態に係る要素が第4領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
【
図12】第1の実施形態に係る要素が第5領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
【
図13】第1の実施形態に係る要素が第6領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
【
図14】第1の実施形態に係る要素が第7領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
【
図15】第1の実施形態に係る各要素の集合に対し定義された領域について説明するための図である。
【
図16】第1の実施形態に係る要素が第8領域又は第9領域のいずれかにドロップされた場合の挙動について説明するための図である。
【
図17】第2の実施形態に係る要素であって、特定の領域にのみドロップすることが許可された要素について説明するための図である。
【
図18】第2の実施形態に係る編集装置により要素を配置しない方がよいと判断される場合の第1の例である。
【
図19】第2の実施形態に係る編集装置により要素を配置しない方がよいと判断される場合の第2の例である。
【
図20】第2の実施形態に係る編集装置の一連の動作の一例を示すフローチャートである。
【
図21】第3の実施形態に係る把持領域について説明するための図である。
【
図22】第3の実施形態に係る編集装置の一連の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について図面を参照して説明する。以下に示す実施形態は、発明の趣旨をより良く理解させるために、例を挙げて説明するものであり、特に指定のない限り、本発明を限定するものではない。
【0011】
[実施形態]
まず、実施形態の前提となる事項を説明する。
【0012】
本実施形態に係るロボットシステム1は、所定の制御プログラムに基づいてロボットを制御する。本実施形態に係るロボットには、サービスロボットや産業用ロボット等、所定の制御プログラムに基づいた処理を行うロボットが広く含まれる。以下に説明する実施形態においては、ロボットシステム1が自律的に移動し、物体を把持して移動させるサービスロボットを制御する場合の一例について説明する。
また、本実施形態に係る所定の制御プログラムとは、ラダー図(LD言語、又はラダー言語)、FB(ファンクション・ブロック)言語、SFC(シーケンシャル・ファンクション・チャート)言語、及びこれらに類似した言語等を用いて作成された制御プログラムを広く含む。これらに類似した言語とは、例えば、ラダー図に似た図を用いたものであってもよく、ユーザの操作に基づき2つの母線間に複数の要素を配置し、配置された要素を介して母線間が接続されることにより、ロボットに実行させる処理が記載されるものであってもよい。2つの母線とは、ラダー図の場合と同様の役割を有する。一方の母線はプログラムを構成するタスクの始点を示し、他方の母線はタスクの終点を示すものである。また、本実施形態に係る所定の制御プログラムは、ロボットに実行させる処理が記載されるものに限定されず、コンピュータに実行させる処理が記載されたものであってもよい。以下の説明においては、一例として、本実施形態に係る所定の制御プログラムがラダー図である場合について説明する。
【0013】
[第1の実施形態]
まず、第1の実施形態について説明する。
図1は、第1の実施形態に係るロボットシステムの概要について説明するための図である。同図を参照しながら、ロボットシステム1の概要について説明する。ロボットシステム1は、情報処理装置10と、ロボット30とを備える。ロボットシステム1は、情報処理装置10とロボット30とを備えることにより、ユーザからの操作に基づいてロボット30に所定の処理を行わせる。ここで、ユーザからの操作とは、ロボット30が駆動している最中に行われる操作(リアルタイム操作)であってもよいし、ロボット30が駆動する前に予め行われる制御プログラム作成等の操作であってもよい。ユーザとは、ロボット30を最終的に使用するエンドユーザであってもよいし、ロボット30が工場から出荷される前に作業する作業員であってもよい。
【0014】
情報処理装置10は、編集ソフト11を有する。編集ソフト11は、情報処理装置10にインストールされて動作するアプリケーションである。情報処理装置10は、インターネット上で動作するWebアプリケーションであってもよい。編集ソフト11は、ユーザからの操作に基づき制御プログラム20を生成する。具体的には、編集ソフト11は、情報処理装置10に備えられた不図示のキーボード等の入力デバイスにより、ユーザの操作を取得し、取得した操作に基づいた制御プログラム20を生成する。例えば制御プログラム20は、編集ソフト11によりコンパイルが行われた結果として生成される。生成された制御プログラム20は、ロボット30に出力される。
なお、情報処理装置10は、例えば、パーソナルコンピュータや、タブレット端末、スマートフォン等の一般に用いられるコンピュータであってもよい。
【0015】
ロボット30は、記憶部31を備える。情報処理装置10により出力された制御プログラム20は、所定の通信方式によりロボット30に送信され、記憶部31に記憶される。ロボット30は、不図示の制御部により記憶部31に記憶された制御プログラム20を実行することにより、制御プログラム20にしたがってシーケンス制御される。所定の処理とは、例えばロボット30の移動や、周囲の状況の撮像、物体の把持、物体の移動等であってもよい。
【0016】
なお、ロボット30は、予め記憶部31に記憶された制御プログラム20を実行することにより所定の処理を行ってもよいし、記憶部31に記憶された制御プログラム20のうち変数部分がリアルタイムで書き換えられることによりリアルタイムで制御されてもよい。ロボット30がリアルタイムで制御される場合、制御プログラム20がロボット30の記憶部31に記憶される場合の一例に代えて、制御プログラム20が情報処理装置10に備えられた不図示の記憶部に記憶されてもよい。この場合、情報処理装置10は、自身に備えられた記憶部に記憶された制御プログラム20を実行することにより、ロボット30を制御する。情報処理装置10とロボット30とは、所定の有線又は無線による通信方式により双方向通信を行う。所定の通信方式とは、ブルートゥース(登録商標)(Bluetooth)又はWi-Fi(登録商標)等であってもよい。
【0017】
図2は、第1の実施形態に係る情報処理装置の機能構成の一例を示す図である。同図を参照しながら、情報処理装置10の機能構成の一例について説明する。情報処理装置10は、編集ソフト11と、OS(Operating System)12と、ハードウェア13とを備える。
ハードウェア13は、バスで接続された中央処理装置(CPU:Central Processing Unit)、RAM(Random Access Memory)、ROM(Read Only Memory)、入出力ポート、及び入出力デバイス等を含む。
OS12は、ハードウェア13と編集ソフト11との間に位置し、ハードウェア13の上で動作する。OS12は、プログラムに対して標準的なインターフェイスを提供する。OS12は、ハードウェア13に含まれる各リソースの使用状況について効率的な管理を行う。
編集ソフト11は、情報処理装置10に予めインストールされるソフトウェアである。編集ソフト11は、ユーザからの操作に基づいて制御プログラム20を生成する。
なお、以下の説明において、編集ソフト11を実行する情報処理装置10を、編集装置40と記載する場合がある。
【0018】
図3は、第1の実施形態に係るロボットの機能構成の一例を示す図である。同図を参照しながら、ロボット30の機能構成の一例について説明する。ロボット30は、記憶部31と、制御部32と、入力デバイス33と、出力デバイス34とを備える。
記憶部31は、RAM又はROMを少なくとも含んで構成される。記憶部31は、制御プログラム20を記憶する。記憶部31は、その他、ロボット30の制御に必要な情報等を記憶する。
制御部32は、CPUを少なくとも含んで構成される。制御部32は、ASIC(Application Specific Integrated Circuit)又はFPGA(Field-Programmable Gate Array)等のハードウェア資源を含んで構成されていてもよい。
【0019】
入力デバイス33は、ロボット30の外部環境から情報を取得し、取得した情報を制御部32に提供する。入力デバイス33は、ロボット30のアプリケーションに応じた複数のセンサやエンコーダ等を含む。入力デバイス33に含まれる要素としては、カメラ、位置センサ(GPSセンサ:Global Positioning System Sensor)、加速度センサ、光センサ、温度センサ、湿度センサ、磁気センサ、触覚センサ、超音波センサ等を例示することができる。ロボット30が自律的に移動し、物体を把持して移動させるサービスロボットである場合、入力デバイス33の一例としては、カメラ、位置センサ、触覚センサ等を例示することができる。
【0020】
出力デバイス34は、制御部32の制御に基づいて駆動される。出力デバイス34は、ロボット30のアプリケーションに応じた複数のモータ等を含む。出力デバイス34に含まれる要素としては、ステッピングモータ、DCモータ、ソレノイド、クラッチ、発光ダイオード(LED:Light-Emitting Diode)ディスプレイ等を例示することができる。ロボット30が自律的に移動し、物体を把持して移動させるサービスロボットである場合、出力デバイス34の一例としては、車輪駆動用モータ、アーム駆動用モータ、状態表示用LED等を例示することができる。
【0021】
図4は、第1の実施形態に係る編集ソフト操作画面の一例を示す図である。同図を参照しながら、編集ソフト11の操作画面である編集ソフト操作画面D10の一例について説明する。編集ソフト操作画面D10は、情報処理装置10に備えられる不図示の表示部に表示される。なお、表示部は情報処理装置10に備えられなくてもよく、情報処理装置10により外部の表示部に出力されてもよい。
【0022】
編集ソフト操作画面D10は、ツールバーD11と回路入力ウィンドウD12とを少なくとも画面の構成要素として備える。編集ソフト操作画面D10は、ユーザに対し、サービスロボットに処理させるタスクを容易に編集可能な操作画面を提供する。一例として、編集ソフト操作画面D10は、ラダー図を編集可能な操作画面を提供する。
【0023】
ツールバーD11は、選択可能な要素を表示する。選択可能な要素としては、ラダー図における接点、又はタイマ等を例示することができる。図示する一例では、ツールバーD11は、第1要素D111乃至第7要素D117を画面の構成要素として備える。各要素は、それぞれ接点、タイマ、又はEND命令等であってもよい。また、各要素には、ユーザによりプログラミングされた処理等が含まれていてもよい。
【0024】
回路入力ウィンドウD12は、ユーザにより現在編集が行われている回路を表示する。ユーザにより現在編集が行われている回路とは、例えばラダー図である。ユーザはツールバーD11からいずれかの要素を選択し、選択した要素を回路入力ウィンドウD12に配置する。回路入力ウィンドウD12には、第1母線B1と、第2母線B2とが示されている。第1母線B1は、プログラムを構成するタスクの始点を示す。第2母線B2は、プログラムを構成するタスクの終点を示す。ユーザは、これら2つの母線間に複数の要素を配置する。図示する一例においては、要素E1乃至要素E6が配置されている。
ユーザによる操作の一例として、ユーザは情報処理装置10が備える入力デバイス33としてのマウスを操作することにより、カーソルCの位置を動かし、ツールバーD11に含まれるいずれかの要素をドラッグし、回路入力ウィンドウD12の領域内においてドロップすることにより要素を配置する操作を例示することができる。
【0025】
また、ユーザは選択した要素同士を接続する。図示する一例においては、要素E1乃至要素E4が直列に接続され、要素E2及び要素E3に対して並列に要素E5及び要素E6が接続されている。ユーザは、要素を介して母線間を接続することにより、コンピュータに実行させる処理を記載する。すなわち、これらの配置操作や接続操作等のユーザの操作により、ロボット30に処理させるタスクが記載されたラダー図が作成される。
編集ソフト操作画面D10は、その他、様々な画面の構成要素を有していてもよい。
【0026】
図5は、第1の実施形態に係る編集装置の機能構成の一例を示す図である。同図を参照しながら、編集装置40の機能構成の一例について説明する。編集装置40は、識別情報取得部41と、カーソル位置取得部42と、操作取得部43と、判定部44と、表示制御部45とを備える。これらの各機能部は、情報処理装置10により編集ソフト11を実行することにより実現されてもよい。また、各機能部は、例えば、電子回路を用いて実現されてもよい。また、各機能部は、必要に応じて、半導体メモリや磁気ハードディスク装置などといった記憶手段を内部に備えていてもよい。
【0027】
識別情報取得部41は、ユーザにより選択された要素を識別する情報である識別情報IIを取得する。識別情報取得部41は、ユーザによる操作がされたと認識されたタイミングにおいて、識別情報IIを取得してもよい。ユーザによる操作がされたと認識されたタイミングとは、例えば、ツールバーD11上の要素がクリックやドラッグ等されるタイミングであってもよい。識別情報取得部41は、取得した要素の識別情報IIを判定部44に出力する。
【0028】
カーソル位置取得部42は、ユーザにより操作されるカーソルCの位置情報を取得する。カーソル位置取得部42は、取得したカーソルCの位置情報をカーソル位置情報CIとして判定部44に出力する。カーソル位置情報CIには、カーソルCが存在する位置座標についての情報が含まれていてもよい。また、他の実施例として、カーソル位置情報CIには、カーソルCがツールバーD11上に存在するのか、回路入力ウィンドウD12上に存在するのか等の情報が含まれていてもよい。
【0029】
操作取得部43は、ユーザの操作を取得する。操作取得部43は、例えば、ユーザによる入力デバイス33としてのマウスやキーボード等の操作を取得する。ユーザは、マウスやキーボード等の入力デバイス33を操作することにより、要素を選択したり、選択した要素を回路入力ウィンドウD12に配置したり、選択を解除したりする。操作取得部43は、このようなユーザの操作を取得する。すなわち、操作取得部43は、選択された要素に対するユーザの操作を取得する。操作取得部43は、取得したユーザの操作に関する情報を、操作情報OIとして判定部44に出力する。
【0030】
判定部44は、識別情報取得部41から識別情報IIを取得し、カーソル位置取得部42からカーソル位置情報CIを取得し、操作取得部43から操作情報OIを取得する。判定部44は、これらの取得した情報に基づき、要素をカーソルCが存在する位置に配置可能であるか否かを判定する。すなわち、判定部44は、少なくとも取得したカーソルCの位置と、取得したユーザの操作とに基づき、要素をカーソルCの位置に配置可能であるか否かを判定する。判定部44は、判定した結果を判定情報JIとして表示制御部45に出力する。
【0031】
表示制御部45は、判定部44から判定情報JIを取得する。表示制御部45は、取得した判定情報JIに基づき、判定部44により判定された結果に応じた表示を行うよう制御する。判定部44により判定された結果に応じた表示とは、現在カーソルCが存在するカーソル位置に要素を配置した場合、どのような接続がされるかを示すような表示であってもよい。
また、判定部44により判定された結果に応じた表示とは、要素をカーソル位置に配置可能な場合は配置し、配置可能でない場合は配置しない(すなわち、ドラッグアンドドロップ操作をキャンセルする)ことであってもよい。
【0032】
図6は、第1の実施形態に係る編集装置の一連の動作の一例を示すフローチャートである。同図を参照しながら、第1の実施形態に係る編集装置40の一連の動作の一例について説明する。
【0033】
(ステップS110)まず、操作取得部43は、何らかの要素がドラッグされたことを検出すると、何らかの要素がドラッグされたことを示す情報を操作情報OIとして判定部44に出力する。判定部44は、操作取得部43から何らかの要素がドラッグされたことを示す情報を取得すると(すなわち、ステップS110;YES)、処理をステップS120に進める。判定部44は、操作取得部43から何らかの要素がドラッグされたことを示す情報を取得するまで、ステップS110を繰り返す(すなわち、ステップS110;NO)。
【0034】
(ステップS120)次に、判定部44は、カーソル位置取得部42から取得したカーソル位置情報CIに基づき、カーソル位置が予め定義された領域内であるか否かを判定する。ここで、予め定義された領域とは、要素ごとに定義される領域であってもよいし、要素の集合ごとに定義される領域であってもよい。各要素又は要素の集合には、複数の領域が定義されていてもよい。判定部44は、カーソル位置が予め定義された領域である場合(すなわち、ステップS120;YES)、処理をステップS130に進める。判定部44は、カーソル位置が予め定義された領域でない場合(すなわち、ステップS120;NO)、ステップS120を繰り返す。
【0035】
(ステップS130)次に、表示制御部45は、ユーザにより選択された要素の種類と、カーソルCが存在する位置に対応する領域に応じた表示を行う。例えば、表示制御部45は、現在カーソルCが存在するカーソル位置に要素を配置した場合、どのような接続がされるかを示すような表示を行う。
【0036】
次に、
図7乃至
図14を参照しながら、要素ごとに予め定義される領域の一例と、要素ごとに定義された領域に対応する表示及び要素が当該領域にドロップされた場合の接続の一例等について説明する。
なお、予め定義される領域の数や境界等は、要素又は要素の集合ごとに異なっていてもよい。したがって、これらの図を参照しながら説明する一例は、本実施形態を限定するものではない。以下の説明において、要素の種類ごと又は要素の集合ごとに定義された領域に関する情報を領域情報とも記載する場合がある。領域情報には、要素の種類ごと又は要素の集合ごとに設定された複数の領域に関する情報が含まれる。領域に関する情報とは、領域を特定するための位置座標等であってもよい。
【0037】
図7は、第1の実施形態に係る各要素の周辺に定義された領域の一例について説明するための図である。まず、同図を参照しながら、要素Eの周辺に定義された領域の一例について説明する。同図を参照しながら行う説明において、図中x方向を横方向または左右方向、y方向を縦方向または上下方向と記載する場合がある。
【0038】
要素Eの近傍には、第1領域AR1乃至第7領域AR7が定義される。第1領域AR1乃至第7領域AR7を区別しない場合は、単に領域ARと記載する場合がある。第1領域AR1は要素Eの左上方側に定義される。第2領域AR2は要素Eの左側に定義される。
第3領域AR3は要素Eの右側に定義される。第4領域AR4は要素Eの左下方側に定義される。第5領域AR5は要素Eの右上方側に定義される。第6領域AR6は要素Eの右下方側に定義される。第7領域AR7は要素Eの中心部に定義される。
【0039】
y方向における第1領域AR1及び第5領域AR5の長さL11、第2領域AR2、第7領域AR7及び第3領域AR3の長さL12、並びに第4領域AR4及び第6領域AR6の長さL13は、それぞれ異なっていてもよいし、同一であってもよい。図示する一例においては長さL11と長さL13とが同一である。また、長さL12は、長さL11及び長さL13より長い。これらの長さは、要素の種類に応じて異なっていてもよい。
【0040】
x方向における第1領域AR1及び第4領域AR4の長さL21と、第5領域AR5及び第6領域AR6の長さL22とは、異なっていてもよいし、同一であってもよい。図示する一例において長さL21は、長さL22より長い。長さL21を長さL22より長くすることにより、ユーザは、第1領域AR1及び第4領域AR4が原則的な配置であり、第5領域AR5及び第6領域AR6が例外的な配置であることを直感的に理解することができる。
【0041】
なお、第1領域AR1乃至第7領域AR7が視認可能な場合、ラダー図の視認性が悪くなってしまう場合がある。したがって、これら領域は、ユーザにより視認できないよう構成されていてもよい。
【0042】
次に、
図8乃至
図14を参照しながら、本実施形態に係る要素ごとに定義された領域に対応する表示について説明する。以下の説明においては、特に
図7を参照して説明した第1領域AR1乃至第7領域AR7に要素がドラッグされた場合の表示の一例と、ドロップされた場合の接続の一例について説明する。
【0043】
図8は、第1の実施形態に係る要素が第1領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
図8(A)は、カーソルCによりドラッグされた要素Eが、要素E12の第1領域AR1にドロップされる前の状態を示す図である。
図8(B)は、カーソルCによりドラッグされた要素Eが、第1領域AR1に移動された状態であって、ドロップされる前の状態を示す図である。
図8(C)は、カーソルCによりドラッグされた要素Eが、第1領域AR1にドロップされた後の状態を示す図である。
【0044】
図8(B)に示すようにカーソルCによりドラッグされた要素Eが、要素E12の第1領域AR1に移動されると、矢印Aが表示される。矢印Aが表示されている状態は、要素Eを配置可能な状態であることを示している。要素Eを配置可能であるかの判定は、判定部44により行われる。すなわち判定部44は、カーソルCの位置が、要素Eの種類ごとに設定された領域情報に応じた位置にある場合に、要素EをカーソルCの位置に配置可能であると判定する。
【0045】
図8(B)に図示する一例において矢印Aは上側を向いている。矢印Aが表示されることにより、ユーザは、現在カーソルCが存在する場所に要素Eをドロップした場合、どのような接続がされるかを認識することができる。図示する一例では、矢印Aが上側を向いているため、ユーザは要素Eが要素E12の上側に挿入されることを認識することができる。
図8(C)に示すように、要素E12の第1領域AR1に要素Eがドロップされると、要素E12の上側に要素Eが挿入される。また、図示するように要素Eが要素E12と並列接続されるような接続線が挿入される。したがって、本実施形態において、ユーザは接続線を挿入する操作を行うことを要しない。
【0046】
図9は、第1の実施形態に係る要素が第2領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
図9(A)は、カーソルCによりドラッグされた要素Eが、要素E12の第2領域AR2にドロップされる前の状態を示す図である。
図9(B)は、カーソルCによりドラッグされた要素Eが、第2領域AR2に移動された状態であって、ドロップされる前の状態を示す図である。
図9(C)は、カーソルCによりドラッグされた要素Eが、第2領域AR2にドロップされた後の状態を示す図である。
【0047】
図9(B)に示すようにカーソルCによりドラッグされた要素Eが、要素E12の第2領域AR2に移動されると、矢印Aが表示される。図示する一例において矢印Aは左側を向いている。同図に示す一例において矢印Aの向く方向は、
図8(B)に示した一例とは異なる。すなわち表示制御部45は、要素Eの種類ごとに設定された複数の領域それぞれに応じて異なる表示をする。要素Eの種類ごとに設定された複数の領域とカーソルCの位置とに応じて、矢印Aが表示されることにより、ユーザは、現在カーソルCが存在する場所に要素Eをドロップした場合、どのような接続がされるかを認識することができる。図示する一例では、矢印Aが左側を向いているため、ユーザは要素Eが要素E12の左側に挿入されることを認識することができる。
【0048】
図9(C)に示すように、要素E12の第2領域AR2に要素Eがドロップされると、要素E12の左側に要素Eが挿入される。また、図示するように要素Eは、要素E11と要素E12との間に直列接続されるような接続線が挿入される。したがって、本実施形態において、ユーザは接続線を挿入する操作を行うことを要しない。
【0049】
図10は、第1の実施形態に係る要素が第3領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
図10(A)は、カーソルCによりドラッグされた要素Eが、要素E12の第3領域AR3にドロップされる前の状態を示す図である。
図10(B)は、カーソルCによりドラッグされた要素Eが、第3領域AR3に移動された状態であって、ドロップされる前の状態を示す図である。
図10(C)は、カーソルCによりドラッグされた要素Eが、第3領域AR3にドロップされた後の状態を示す図である。
【0050】
図10(B)に示すようにカーソルCによりドラッグされた要素Eが、要素E12の第3領域AR3に移動されると、矢印Aが表示される。図示する一例において矢印Aは右側を向いている。矢印Aが表示されることにより、ユーザは、現在カーソルCが存在する場所に要素Eをドロップした場合、どのような接続がされるかを認識することができる。図示する一例では、矢印Aが右側を向いているため、ユーザは要素Eが要素E12の右側に挿入されることを認識することができる。
図10(C)に示すように、要素E12の第3領域AR3に要素Eがドロップされると、要素E12の右側に要素Eが挿入される。また、図示するように要素Eは、要素E12と要素E13との間に直列接続されるような接続線が挿入される。したがって、本実施形態において、ユーザは接続線を挿入する操作を行うことを要しない。
【0051】
図11は、第1の実施形態に係る要素が第4領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
図11(A)は、カーソルCによりドラッグされた要素Eが、要素E12の第4領域AR4にドロップされる前の状態を示す図である。
図11(B)は、カーソルCによりドラッグされた要素Eが、第4領域AR4に移動された状態であって、ドロップされる前の状態を示す図である。
図11(C)は、カーソルCによりドラッグされた要素Eが、第4領域AR4にドロップされた後の状態を示す図である。
【0052】
図11(B)に示すようにカーソルCによりドラッグされた要素Eが、要素E12の第4領域AR4に移動されると、矢印Aが表示される。図示する一例において矢印Aは下側を向いている。矢印Aが表示されることにより、ユーザは、現在カーソルCが存在する場所に要素Eをドロップした場合、どのような接続がされるかを認識することができる。図示する一例では、矢印Aが下側を向いているため、ユーザは要素Eが要素E12の下側に挿入されることを認識することができる。
図11(C)に示すように、要素E12の第4領域AR4に要素Eがドロップされると、要素E12の下側に要素Eが挿入される。また、図示するように要素Eが要素E12と並列接続されるような接続線が挿入される。したがって、本実施形態において、ユーザは接続線を挿入する操作を行うことを要しない。
【0053】
図12は、第1の実施形態に係る要素が第5領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
図12(A)は、カーソルCによりドラッグされた要素Eが、要素E12の第5領域AR5にドロップされる前の状態を示す図である。
図12(B)は、カーソルCによりドラッグされた要素Eが、第5領域AR5に移動された状態であって、ドロップされる前の状態を示す図である。
図12(C)は、カーソルCによりドラッグされた要素Eが、第5領域AR5にドロップされた後の状態を示す図である。
【0054】
図12(B)に示すようにカーソルCによりドラッグされた要素Eが、要素E12の第5領域AR5に移動されると、矢印Aが表示される。図示する一例において矢印Aは下側から上側に延び、次に右側に曲がる形状を有している。
図12(B)に示される矢印Aの形は、
図8(B)や
図10(B)に示した場合と異なる。矢印Aが表示されることにより、ユーザは、現在カーソルCが存在する場所に要素Eをドロップした場合、どのような接続がされるかを認識することができる。図示する一例では、矢印Aが下側から上側に延び、次に右側に曲がる形状を有しているため、ユーザは要素Eが要素E12の上側に挿入され、右側の母線まで他の要素と接続されることなく、接続されることを認識することができる。
図12(C)に示すように、要素E12の第5領域AR5に要素Eがドロップされると、要素E12の上側に要素Eが挿入される。第5領域AR5に要素Eをドロップした場合、第3領域AR3にドロップした場合と異なり、右側の母線まで、他の要素と接続されることなく、接続される。すなわち、要素E12、要素E13及び要素E14を含む要素の集合は、要素Eと並列に接続されることとなる。この場合、図示するように要素Eと、要素E12、要素E13及び要素E14を含む要素の集合とが並列接続されるような接続線が挿入される。したがって、本実施形態において、ユーザは接続線を挿入する操作を行うことを要しない。
【0055】
図13は、第1の実施形態に係る要素が第6領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
図13(A)は、カーソルCによりドラッグされた要素Eが、要素E12の第6領域AR6にドロップされる前の状態を示す図である。
図13(B)は、カーソルCによりドラッグされた要素Eが、第6領域AR6に移動された状態であって、ドロップされる前の状態を示す図である。
図13(C)は、カーソルCによりドラッグされた要素Eが、第6領域AR6にドロップされた後の状態を示す図である。
【0056】
図13(B)に示すようにカーソルCによりドラッグされた要素Eが、要素E12の第6領域AR6に移動されると、矢印Aが表示される。図示する一例において矢印Aは上側から下側に延び、次に右側に曲がる形状を有している。
図13(B)に示される矢印Aの形は、
図10(B)、
図11(B)及び
図12(B)に示した場合と異なる。矢印Aが表示されることにより、ユーザは、現在カーソルCが存在する場所に要素Eをドロップした場合、どのような接続がされるかを認識することができる。図示する一例では、矢印Aが上側から下側に延び、次に右側に曲がる形状を有しているため、ユーザは要素Eが要素E12の下側に挿入され、右側の母線まで他の要素と接続されることなく、接続されることを認識することができる。
図13(C)に示すように、要素E12の第6領域AR6に要素Eがドロップされると、要素E12の下側に要素Eが挿入される。第6領域AR6に要素Eをドロップした場合、第3領域AR3にドロップした場合と異なり、右側の母線まで、他の要素と接続されることなく、接続される。すなわち、要素E12、要素E13及び要素E14を含む要素の集合は、要素Eと並列に接続されることとなる。この場合、図示するように要素Eと、要素E12、要素E13及び要素E14を含む要素の集合とが並列接続されるような接続線が挿入される。したがって、本実施形態において、ユーザは接続線を挿入する操作を行うことを要しない。
【0057】
図14は、第1の実施形態に係る要素が第7領域にドラッグアンドドロップされた場合の挙動について説明するための図である。
図14(A)は、カーソルCによりドラッグされた要素Eが、要素E12の第7領域AR7にドロップされる前の状態を示す図である。
図14(B)は、カーソルCによりドラッグされた要素Eが、第7領域AR7に移動された状態であって、ドロップされる前の状態を示す図である。
図14(C)は、カーソルCによりドラッグされた要素Eが、第7領域AR7にドロップされた後の状態を示す図である。
【0058】
図14(B)に示すようにカーソルCによりドラッグされた要素Eが、要素E12の第7領域AR7に移動されると、
図8乃至
図13に示したような矢印Aは表示されない。第7領域AR7にドラッグされた場合は、矢印Aの表示に代えて、第7領域AR7にドロップされることにより要素Eが置き換わることを示唆するような表示が行われてもよい。このような表示により、ユーザは、現在カーソルCが存在する場所に要素Eをドロップした場合、要素E12に代えて、現在ドラッグしている要素に置き換わることを認識することができる。
図14(C)に示すように、要素E12の第7領域AR7に要素Eがドロップされると、要素E12が削除され、要素E12に代えて要素Eが挿入される。すなわち、要素Eは要素E12に置き換わる。したがって、本実施形態において、ユーザは要素E12を削除する操作と、新たに接続線を挿入する操作を行うことを要しない。
【0059】
次に、
図15及び
図16を参照しながら、要素の集合ごとに予め定義される領域の一例と、要素の集合ごとに定義された領域に対応する表示及び要素が当該領域にドロップされた場合の接続の一例について説明する。
【0060】
図15は、第1の実施形態に係る各要素の集合に対し定義された領域について説明するための図である。まず、
図15を参照しながら、要素の集合に対し定義された領域について説明する。図示する一例では、要素の集合として第1タスクT1と、第2タスクT2とが記載されている。第1タスクT1及び第2タスクT2は、ユーザの操作により入力されたものである。図示する一例では、要素の集合としての第1タスクT1に対し定義された領域について説明する。
【0061】
一例として、要素の集合に対しては、左側の母線の外側に領域が定義される。図示する一例では、左側の母線の外側に第8領域AR8と第9領域AR9とが定義される。第8領域AR8の縦方向の長さと、第9領域AR9の縦方向の長さとは同一であってもよく、例えば第1タスクT1の縦方向の長さの半分であってもよい。
【0062】
なお、要素ごとに定義される第1領域AR1乃至第7領域AR7は、少なくとも要素を領域にオーバーレイするまではユーザにより視認することができず、第8領域AR8及び第9領域AR9は、要素を領域にオーバーレイする前であってもユーザにより視認することができるよう構成されていてもよい。要素ごとに定義される領域を視認可能としてしまうと、ラダー図自体の視認性を損ねてしまう可能性があるが、母線の外側に定義される要素の集合ごとの領域であれば、視認可能に構成されていたとしてもラダー図自体の視認性を損ねないためである。
【0063】
図16は、第1の実施形態に係る要素が第8領域又は第9領域のいずれかにドロップされた場合の挙動について説明するための図である。同図を参照しながら、要素Eが第9領域AR9にドロップされた場合の挙動について説明する。
図16(A)は、カーソルCによりドラッグされた要素Eが、第1タスクT1の第9領域AR9にドロップされる前の状態を示す図である。
図16(B)は、カーソルCによりドラッグされた要素Eが、第9領域AR9に移動された状態であって、ドロップされる前の状態を示す図である。
図16(C)は、カーソルCによりドラッグされた要素Eが、第9領域AR9にドロップされた後の状態を示す図である。
【0064】
図16(B)に示すようにカーソルCによりドラッグされた要素Eが、第1タスクT1の第9領域AR9に移動されると、第9領域AR9を強調したり、挿入後の接続を薄い色で表示したりする等の表示が行われてもよい。このような表示がされることにより、ユーザは、現在カーソルCが存在する場所に要素Eをドロップした場合、どのような接続がされるかを容易に認識することができる。
図16(C)に示すように、第1タスクT1の第9領域AR9に要素Eがドロップされると、第1タスクT1の下側に要素Eが挿入される。第9領域AR9に要素Eをドロップした場合、第1タスクT1及び第2タスクT2のいずれにも属しないタスクとして、要素を挿入することができる。この場合、挿入した要素Eの両端は、それぞれ母線と接続されるような接続線が挿入される。したがって、本実施形態において、ユーザは接続線を挿入する操作を行うことを要しない。
【0065】
[第1の実施形態のまとめ]
以上説明した実施形態によれば、編集装置40は、ユーザの操作に基づき、プログラムを構成するタスクの始点又は終点を示す2つの母線間に複数の要素を配置し、配置された要素を介して母線間を接続することにより、コンピュータに実行させる処理を記載する。コンピュータに実行させる処理の一例としては、ラダープログラムであって、ロボット30を制御するものを例示することができる。編集装置40は、識別情報取得部41を備えることによりユーザにより選択された要素を識別する識別情報を取得し、カーソル位置取得部42を備えることによりユーザにより操作されるカーソルの位置を取得し、操作取得部43を備えることにより選択された要素に対するユーザの操作を取得し、判定部44を備えることにより取得したカーソルの位置とユーザの操作とに基づき要素をカーソルの位置に配置可能であるか否かを判定し、表示制御部45を備えることにより判定された結果に応じた表示を行う。すなわち、編集装置40によれば、第1の要素をドラッグして第2の要素の近傍に移動させた場合、第2の要素ごとに定められた領域に応じた表示がされるため、プログラミングの知識がない者であっても、要素を正しく接続することができる。したがって、本実施形態によれば、プログラミング言語の知識がない者であっても、容易にプログラムを編集することができる。
また、本実施形態によれば、ユーザは接続線を挿入することがないため、手作業により要素同士を接続するということを要しない。
【0066】
また、以上説明した実施形態によれば、判定部44は、カーソルの位置が領域情報に応じた位置にある場合に、要素をカーソルの位置に配置可能であると判定する。領域情報とは、要素の種類ごとに設定される情報である。すなわち、本実施形態によれば、領域情報を予め設定することにより、要素を当該箇所に配置できるか否かを容易に判定することができる。
【0067】
また、以上説明した実施形態によれば、領域情報には、要素の種類ごとに複数の領域が設定され、表示制御部45は、要素の種類ごとに設定された複数の領域それぞれに応じて異なる表示をする。すなわち、本実施形態によれば、ユーザは、ドロップしようとする位置に応じて、どのような接続がされるかを知ることができる。したがって、本実施形態によれば、プログラミング言語の知識がない者であっても、容易にプログラムを編集することができる。
【0068】
[第2の実施形態]
次に、第2の実施形態について説明する。まず、第2の実施形態における概略について説明する。ラダー図等を構成する要素によっては、規則により入力することができる箇所が限られている場合がある。また、要素を配置する箇所によっては、配置後のラダー図等が見づらくなり、当該箇所に配置しない方がよい場合もある。第2の実施形態においては、配置が禁止されている場合、及び配置しない方がよい場合については、配置を禁止しようとするものである。
【0069】
図17は、第2の実施形態に係る要素であって、特定の領域にのみドロップすることが許可された要素について説明するための図である。同図を参照しながら、特定の領域にのみドロップすることが許可された要素ESについて説明する。要素ESは、特定の領域にのみドロップすることが許可された要素である。要素ESをドロップすることが可能な領域を領域ARSとして記載する。領域ARSは、要素ESの領域情報として予め定められる。領域ARSは、ユーザにより選択された要素ごとに設定されるが、各要素の近傍に定義されるわけではなく、ラダー図全体の中で配置可能な位置が設定される点において第1の実施形態とは異なる。なお、図示した領域ARSは一例であり、任意に定められていてもよい。
【0070】
要素ESが領域ARS以外の場所でドロップされた場合、編集装置40は、要素ESを配置せず、当該要素ESの選択をキャンセルしてもよい。換言すれば、編集装置40は、操作取得部43により要素の配置操作を取得した場合であっても、判定部44により、要素をカーソルの位置に配置可能でないと判定された場合は、要素を配置せず、要素の選択をキャンセルしてもよい。例えば、ラダー図には、コイルのように、右端の母線に接続する形でしか配置できない要素も存在する。コイルのように配置可能な箇所が限定された要素については、特定の箇所にのみ要素が配置可能なように構成されていてもよい。換言すれば、第1領域AR1乃至第7領域AR7のいずれかに要素がドロップされた場合であっても、当該要素が配置不可能な接続は行わず、配置可能な接続をする又は要素の選択をキャンセルしてもよい。例えば、コイルのような要素については、第1領域AR1と第5領域AR5を、第5領域AR5のような動作をする領域として扱い、第4領域AR4と第6領域AR6を、第6領域AR6のような動作をする領域として扱ってもよい。また、第3領域AR3や第7領域AR7に関しては右端の母線に接続出来ない場合はドロップ出来ないようにしてもよい。また、第2領域AR2に関しては、ドロップできないようにしてもよい。このような要素特有の配置可能箇所の限定については、要素ごとに予め定められていてもよい。
【0071】
次に、
図18及び
図19を参照しながら、要素を配置しない方がよい場合の具体例について説明する。
図18は、第2の実施形態に係る編集装置40により要素を配置しない方がよいと判断される場合の第1の例である。
図18(A)は、要素が挿入される前の状態である。当該状態において、例えば要素E22の第5領域AR5に要素Eを挿入すると、
図18(B)のような接続となる。しかしながら
図18(B)に示したような接続をした場合、ラダープログラムの挙動が分かりづらくなるため、あまりおすすめできない。したがって、編集装置40は、このような接続になる場合、要素を配置しない方がよいと判断する。編集装置40は、要素を配置しない方がよいと判断した位置でドロップされた場合、要素を配置せず、要素の選択をキャンセルする。
【0072】
図19は、第2の実施形態に係る編集装置40により要素を配置しない方がよいと判断される場合の第2の例である。
図19(A)は、要素が挿入される前の状態である。当該状態において、例えば要素E22の第6領域AR6に要素Eを挿入すると、
図19(B)のような接続となる。
図19(B)に示したような接続をした場合、交点Aにおいて接続線同士が交わり、ラダープログラムの挙動が分かりづらくなるため、あまりおすすめできない。したがって、編集装置40は、要素を配置した結果として
図19(B)に示したような接続になる場合、要素を配置しない方がよいと判断する。編集装置40は、要素を配置しない方がよいと判断した位置でドロップされた場合、要素を配置せず、要素の選択をキャンセルする。
【0073】
なお、
図18及び
図19を参照しながら説明した、要素を配置しない方がよいと判断されるパターンについては、予め設定されており、禁止パターンリストとして編集装置40に備えられた不図示の記憶部に記憶されていてもよい。判定部44は、要素がドロップされた位置において、禁止パターンリストに存在する接続であると判定された場合、要素を配置せず、要素の選択をキャンセルしてもよい。
【0074】
図20は、第2の実施形態に係る編集装置の一連の動作の一例を示すフローチャートである。同図を参照しながら、第2の実施形態に係る編集装置40の一連の動作の一例について説明する。第2の実施形態に係る編集装置40は、ステップS110乃至ステップS130の工程、及びステップS210乃至ステップS240の工程を有する。ステップS110乃至ステップS130をまとめて、ステップS100と記載する。また、ステップS210乃至ステップS240をまとめて、ステップS200と記載する。ステップS100については、
図6を参照しながら行った説明と同様であるため、説明を省略する。
【0075】
(ステップS210)まず、操作取得部43は、ユーザの操作により要素が回路入力ウィンドウD12内にドロップされたか否かを検知する。判定部44は、操作取得部43から要素がドロップされたことを示す情報を取得すると(すなわち、ステップS210;YES)、処理をステップS220に進める。判定部44は、操作取得部43から要素がドロップされたことを示す情報を取得するまで、ステップS120及びステップS130を繰り返す(すなわち、ステップS210;NO)。
【0076】
(ステップS220)次に、判定部44は、カーソル位置取得部42から取得したカーソル位置に関する情報に基づき、要素がドロップされた位置が配置可能領域内であるか否かを判定する。配置可能領域の位置座標の範囲は、所定のテーブルに定義されていてもよい。判定部44は、定義された位置座標の範囲内に、カーソルが存在するか否かを判定する。判定部44は、カーソル位置が配置可能領域内である場合(すなわち、ステップS220;YES)、処理をステップS230に進める。判定部44は、カーソル位置が配置可能領域内でない場合(すなわち、ステップS220;NO)、処理をステップS240に進める。
なお、要素がドロップされた位置が配置可能領域内であるか否かの判定は、ステップS130においてすでに行われていてもよい。その場合、ステップS220においては、ステップS130における判定結果を流用してもよい。
【0077】
(ステップS230)編集装置40は、要素がドロップされた位置に応じた位置に、要素を配置する。
(ステップS240)編集装置40は、要素を配置せず、要素の選択をキャンセルする。
【0078】
[第2の実施形態のまとめ]
以上説明した実施形態によれば、編集装置40は、操作取得部43により要素の配置操作(例えばドロップ動作)を取得した場合であっても、判定部44により、要素をカーソルの位置に配置可能でないと判定された場合は、要素を配置せず、要素の選択をキャンセルする。したがって、本実施形態によれば、実現不可能な接続を回避することにより、作成したラダープログラム等を実行した時に発生するエラーを防ぐことができる。また、本実施形態によれば、あまりおすすめできないような接続を回避することにより、より良いラダープログラムを、容易に作成することを支援することができる。
【0079】
[第3の実施形態]
次に、第3の実施形態について説明する。まず、第3の実施形態における概略について説明する。第1の実施形態及び第2の実施形態では、ユーザの操作により要素について配置、挿入、置換、移動又はコピー等を行うことが前提であった。第3の実施形態においては、要素の集合について移動やコピー等を行うことを目的とする。第3の実施形態においては、要素の集合ごとに把持領域ARGを定義し、ユーザは把持領域ARGをドラッグアンドドロップすることにより要素の集合を移動させる。
【0080】
図21は、第3の実施形態に係る把持領域について説明するための図である。
図21(A)に示されるラダープログラムには、第1タスクT1及び第2タスクT2が示されている。第1タスクT1には、要素E31乃至要素E33が含まれ、第2タスクT2には、要素E34乃至要素E36が含まれる。第1タスクT1及び第2タスクT2は、それぞれ別個独立している。
また、同図には、把持領域ARGとしての第1把持領域ARG1及び第2把持領域ARG2が示されている。把持領域ARGは、領域情報として要素の集合ごとに設定される、第1把持領域ARG1は要素の集合としての第1タスクT1に対応し、第2把持領域ARG2は要素の集合としての第2タスクT2に対応する。
【0081】
このようなラダープログラムが記載されている状態において、第2タスクT2を、第1タスクT1内における要素E32の右側に移動させる場合の一例について説明する。第2タスクT2を移動させるためには、第2タスクT2に対応する第2把持領域ARG2を、移動させたい位置にドラッグアンドドロップする。第2把持領域ARG2を、要素E32の右側に移動させる場合、例えば、要素E32の第3領域AR3に移動させる。
【0082】
図21(B)は、第2把持領域ARG2を、要素E32の第3領域AR3に移動させた場合の一例である。同図に示すように、第2タスクT2を構成していた要素E34乃至要素E36が、互いの接続状態を保ったまま、要素E32の右側に移動している。また、同図に示すように、別個独立していた第1タスクT1及び第2タスクT2が互いに結合している。
なお、図示する一例では、要素の集合としてのタスクを移動させる場合の一例について説明したが、例えばユーザから所定の操作を受け付けることにより、タスクがコピーされるように構成してもよい。
【0083】
図21に図示したように、本実施形態によれば、把持領域ARGをドラッグアンドドロップすることにより、要素の集合として移動又はコピーすることができる。ドラッグされた要素の集合が、カーソル位置においてドロップ可能であるか否かは、ドラッグした要素の集合の表示を変える等によりユーザに対して示されてもよい。すなわち、判定部44は、カーソル位置取得部42から取得したカーソルの位置に要素の集合を配置可能であるか否かを判定し、判定結果に応じて表示制御部45により表示を制御してもよい。また、第2の実施形態で説明したように、ドラッグされた要素の集合が、配置禁止領域等でドロップされた場合は、要素の配置を行わず、ドラッグアンドドロップ操作をキャンセルしてもよい。
【0084】
図22は、第3の実施形態に係る編集装置の一連の動作の一例を示すフローチャートである。同図を参照しながら、第3の実施形態に係る編集装置40の一連の動作の一例について説明する。
【0085】
(ステップS310)まず、操作取得部43は、何らかの要素の集合がドラッグされたことを検出すると、当該情報を操作情報OIとして判定部44に出力する。要素の集合がドラッグされたか否かは、把持領域ARGがドラッグされたか否かにより判定されてもよい。判定部44は、操作取得部43から何らかの要素の集合がドラッグされたことを示す情報を取得すると(すなわち、ステップS310;YES)、処理をステップS320に進める。判定部44は、操作取得部43から何らかの要素の集合がドラッグされたことを示す情報を取得するまで、ステップS310を繰り返す(すなわち、ステップS310;NO)。
【0086】
(ステップS320)次に、判定部44は、カーソル位置取得部42から取得したカーソル位置情報CIに基づき、カーソル位置が予め定義された領域内であるか否かを判定する。ここで、予め定義された領域とは、要素ごとに定義される領域であってもよいし、要素の集合ごとに定義される領域であってもよい。各要素又は要素の集合には、複数の領域が定義されていてもよい。判定部44は、カーソル位置が予め定義された領域である場合(すなわち、ステップS320;YES)、処理をステップS330に進める。判定部44は、カーソル位置が予め定義された領域でない場合(すなわち、ステップS320;NO)、ステップS320を繰り返す。
【0087】
(ステップS330)次に、表示制御部45は、ユーザにより選択された要素の種類と、カーソルCが存在する位置に対応する領域に応じた表示を行う。例えば、表示制御部45は、現在カーソルCが存在するカーソル位置に要素を配置した場合、どのような接続がされるかを示すような表示を行う。
【0088】
[第3の実施形態のまとめ]
以上説明した実施形態によれば、編集装置40に予め設定された領域情報は、要素ごとに設定されることに加えて、要素の集合ごとに設定される。また、判定部44は、更に要素の集合が、取得したカーソルの位置に配置可能であるか否かを判定する。すなわち、本実施形態によれば、ユーザは、要素の集合を移動又はコピーすることができる。これらの移動又はコピーする行為は、編集装置40を扱うユーザにプログラミングの知識がなくても、直感的に行うことができる。したがってプログラミング言語の知識がない者であっても、容易にプログラムを編集することができる。
【0089】
なお、上述した実施形態における編集装置40が備える各部の機能全体あるいはその一部は、これらの機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
【0090】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶部のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0091】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。また、本発明はこうした実施形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【符号の説明】
【0092】
1…ロボットシステム、10…情報処理装置、11…編集ソフト、12…OS、13…ハードウェア、20…制御プログラム、30…ロボット、31…記憶部、32…制御部、33…入力デバイス、34…出力デバイス、40…編集装置、41…識別情報取得部、42…カーソル位置取得部、43…操作取得部、44…判定部、45…表示制御部、D10…編集ソフト操作画面、D11…ツールバー、D12…回路入力ウィンドウ、C…カーソル、B1…第1母線、B2…第2母線、II…識別情報、CI…カーソル位置情報、OI…操作情報、JI…判定情報、AR…領域、E…要素、A…矢印