IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特許7124556プログラミング支援装置、プログラミング支援方法、およびプログラム
<>
  • 特許-プログラミング支援装置、プログラミング支援方法、およびプログラム 図1
  • 特許-プログラミング支援装置、プログラミング支援方法、およびプログラム 図2
  • 特許-プログラミング支援装置、プログラミング支援方法、およびプログラム 図3
  • 特許-プログラミング支援装置、プログラミング支援方法、およびプログラム 図4
  • 特許-プログラミング支援装置、プログラミング支援方法、およびプログラム 図5
  • 特許-プログラミング支援装置、プログラミング支援方法、およびプログラム 図6
  • 特許-プログラミング支援装置、プログラミング支援方法、およびプログラム 図7
  • 特許-プログラミング支援装置、プログラミング支援方法、およびプログラム 図8
  • 特許-プログラミング支援装置、プログラミング支援方法、およびプログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-16
(45)【発行日】2022-08-24
(54)【発明の名称】プログラミング支援装置、プログラミング支援方法、およびプログラム
(51)【国際特許分類】
   G05B 19/05 20060101AFI20220817BHJP
【FI】
G05B19/05 A
【請求項の数】 6
(21)【出願番号】P 2018155598
(22)【出願日】2018-08-22
(65)【公開番号】P2020030595
(43)【公開日】2020-02-27
【審査請求日】2020-12-14
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100101454
【弁理士】
【氏名又は名称】山田 卓二
(74)【代理人】
【識別番号】100122286
【弁理士】
【氏名又は名称】仲倉 幸典
(72)【発明者】
【氏名】丸野 良太
(72)【発明者】
【氏名】長谷川 直人
【審査官】山村 秀政
(56)【参考文献】
【文献】特開2000-132210(JP,A)
【文献】国際公開第01/061503(WO,A1)
【文献】特開2017-016312(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
複数のデバイスポートを含み、動作時に各デバイスポートが複数のプログラム言語によって参照されるようになっているシステムのための、上記複数のプログラム言語によるプログラム作成を支援するプログラミング支援装置であって、
上記複数のプログラム言語によるプログラムが作成される際に、表示画面上に、上記複数のデバイスポートをそれぞれ表す参照名欄と、上記各デバイスポートが上記システムの動作時に書き込み用のポートであるか又は読み取り用のポートであるかを示す読み出し/書き込み欄と、上記各デバイスポートのための設定値欄とを対応付けて、マップ情報テーブルとして一覧表示する表示処理部を備え
上記設定値欄は、第1のプログラムのための第1の設定値欄と、第2のプログラムのための第2の設定値欄とに区分されており、
第1のプログラム言語による上記第1のプログラムに関して、上記各デバイスポートについて上記第1の設定値欄への設定値の書き込みがなされたか否かを判断する書き込み判断部と、
上記第1のプログラム言語による上記第1のプログラムに関して、上記第1の設定値欄への設定値の書き込みがなされたと判断されたデバイスポートについて、上記読み出し/書き込み欄を参照して、上記デバイスポートが上記システムの動作時に書き込み用のポートであるとき、上記第1のプログラム言語とは異なる第2のプログラム言語による第2のプログラムに関して、上記第2の設定値欄への設定値の書き込みを禁止する一方、上記デバイスポートが上記システムの動作時に読み出し用のポートであるとき、上記第2のプログラム言語による上記第2のプログラムに関して、上記第2の設定値欄への設定値の書き込みを許容する上書き禁止部と
を備えたことを特徴とするプログラミング支援装置。
【請求項2】
請求項に記載のプログラミング支援装置において、
上記表示処理部は、上記設定値の書き込みが禁止された上記第2の設定値欄に、書き込み不能であることを表す書き込み不能表示を行うことを特徴とするプログラミング支援装置。
【請求項3】
請求項またはに記載のプログラミング支援装置において、
上記マップ情報テーブルは、さらに、上記各デバイスポートについて書き込まれるべき設定値のデータ型を示すデータ型欄を含むことを特徴とするプログラミング支援装置。
【請求項4】
請求項に記載のプログラミング支援装置において、
上記各デバイスポートについて上記データ型欄に示されたデータ型が、上記各プログラムに関して上記設定値の書き込みに使用可能であるか否かを判断するデータ型判断部を備え、
上記表示処理部は、上記各デバイスポートについての、上記データ型が上記設定値の書き込みに使用不可であると判断されたプログラムのための設定値欄に、書き込み不能であることを表す書き込み不能表示を行うことを特徴とするプログラミング支援装置。
【請求項5】
複数のデバイスポートを含み、動作時に各デバイスポートが複数のプログラム言語によって参照されるようになっているシステムのための、上記複数のプログラム言語によるプログラム作成を支援するプログラミング支援装方法であって、
上記複数のプログラム言語によるプログラムが作成される際に、表示画面上に、上記複数のデバイスポートをそれぞれ表す参照名欄と、上記各デバイスポートが上記システムの動作時に書き込み用のポートであるか又は読み取り用のポートであるかを示す読み出し/書き込み欄と、上記各デバイスポートのための設定値欄とを対応付けて、マップ情報テーブルとして一覧表示するステップを有し
上記設定値欄は、第1のプログラムのための第1の設定値欄と、第2のプログラムのための第2の設定値欄とに区分されており、
第1のプログラム言語による上記第1のプログラムに関して、上記デバイスポートについて上記第1の設定値欄への設定値の書き込みがなされたか否かを判断するステップと
上記第1のプログラム言語による上記第1のプログラムに関して、上記第1の設定値欄への設定値の書き込みがなされたと判断されたデバイスポートについて、上記読み出し/書き込み欄を参照して、上記デバイスポートが上記システムの動作時に書き込み用のポートであると判断したとき、上記第1のプログラム言語とは異なる第2のプログラム言語による第2のプログラムに関して、上記第2の設定値欄への設定値の書き込みを禁止する一方、上記デバイスポートが上記システムの動作時に読み出し用のポートであると判断したとき、上記第2のプログラム言語による上記第2のプログラムに関して、上記第2の設定値欄への設定値の書き込みを許容するステップと
を有することを特徴とするプログラミング支援方法。
【請求項6】
請求項に記載のプログラミング支援方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、プログラム言語によるプログラム作成を支援するプログラミング支援装置およびプログラミング支援方法に関する。また、この発明は、そのようなプログラミング支援方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【0002】
従来、この種のプログラミング支援装置としては、プログラム作成者がコンピュータ上で或るプログラム言語を用いてプログラムを作成する段階で、そのコンピュータの表示画面上に、例えば特許文献1(特開2000-132210号公報)に開示されているようなマップ情報テーブルを表示するものがある。同文献のマップ情報テーブルは、そのプログラムが参照する参照名(シンボル,タグ名)と、その参照名に対応する実際の物理メモリ、物理I/Oポート、並びにネットワーク共有メモリ上のアドレス(チャネル番号)とを関連付けて表示している。
【0003】
プログラム作成者は、表示画面上にこのマップ情報テーブルを表示した状態で、例えば或るシンボル名に対応する物理I/Oポートについての設定値を書き込む。すると、それ以降、その物理I/Oポートへの設定値の上書きは禁止され、その物理I/Oポートへの誤書き込みを防止するようになっている(ただし、上書き禁止を解除する特別の操作が行われた場合は、再び設定値の書き込みが可能となる。)。プログラム作成者は、このようにして設定値の書き込みがなされたマップ情報テーブルを適宜参照しながら、プログラムを作成する。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2000-132210号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来のプログラミング支援装置では、物理I/Oポートへの設定値の上書き禁止の機能は、そのプログラム言語によるプログラム作成にしか及ばない、という問題がある。
【0006】
例えば、近年、シーケンス制御プログラムを実行するプログラマブルロジックコントローラ(PLC)エンジンと、ロボット制御プログラムを実行してロボットを制御するモーションコントローラ(MC)エンジンとを統合してなるシステムが開発されている。このシステムは、複数の物理I/Oポートを含み、それらの物理I/Oポートに設定された設定値は、それぞれセンサ、モータ、ロボットなどを駆動するプログラムによって参照される。
【0007】
伝統的に、シーケンス制御プログラムの作成には、ラダー言語が用いられることが多い。一方、ロボット制御プログラムの作成には、C言語、C++、または各社独自のプログラム言語が用いられることが多い。そして、プログラム言語が異なれば、習熟度・作業効率の観点から、それぞれのプログラムの作成を互いに別のプログラム作成者が担当することが一般的に行われている。
【0008】
このため、上記シーケンス制御プログラムの作成段階、上記ロボット制御プログラムの作成段階で、各プログラム作成者が区々に同じ物理I/Oポートへ設定値を誤って書き込んでしまう可能性がある(先に書き込まれた設定値が、後に書き込まれた設定値によって上書きされてしまう。)。その場合、その物理I/Oポートの設定値は、先に設定値を書き込んだプログラム作成者の意図しない状態になる。
【0009】
そこで、この発明の課題は、デバイスポートへの設定値の上書き禁止の機能を、互いに異なる複数のプログラム言語によるプログラム作成へ及ぼすことができるプログラミング支援装置およびプログラミング支援方法を提供することにある。また、この発明の課題は、そのようなプログラミング支援方法をコンピュータに実行させるためのプログラムを提供することにある。
【課題を解決するための手段】
【0010】
上記課題を解決するため、この開示のプログラミング支援装置は、
複数のデバイスポートを含み、動作時に各デバイスポートが複数のプログラム言語によって参照されるようになっているシステムのための、上記複数のプログラム言語によるプログラム作成を支援するプログラミング支援装置であって、
上記複数のプログラム言語によるプログラムが作成される際に、表示画面上に、上記複数のデバイスポートをそれぞれ表す参照名欄と、上記各デバイスポートが上記システムの動作時に書き込み用のポートであるか又は読み取り用のポートであるかを示す読み出し/書き込み欄と、上記各デバイスポートのための設定値欄とを対応付けて、マップ情報テーブルとして一覧表示する表示処理部を備え
上記設定値欄は、第1のプログラムのための第1の設定値欄と、第2のプログラムのための第2の設定値欄とに区分されており、
第1のプログラム言語による上記第1のプログラムに関して、上記各デバイスポートについて上記第1の設定値欄への設定値の書き込みがなされたか否かを判断する書き込み判断部と、
上記第1のプログラム言語による上記第1のプログラムに関して、上記第1の設定値欄への設定値の書き込みがなされたと判断されたデバイスポートについて、上記読み出し/書き込み欄を参照して、上記デバイスポートが上記システムの動作時に書き込み用のポートであるとき、上記第1のプログラム言語とは異なる第2のプログラム言語による第2のプログラムに関して、上記第2の設定値欄への設定値の書き込みを禁止する一方、上記デバイスポートが上記システムの動作時に読み出し用のポートであるとき、上記第2のプログラム言語による上記第2のプログラムに関して、上記第2の設定値欄への設定値の書き込みを許容する上書き禁止部と
を備えたことを特徴とする。
【0011】
本明細書で、「デバイスポート」とは、物理I/O(入出力インタフェース)ポートなどの、プログラムの実行中に参照されるべき設定値が書き込まれる又は書き込まれたポートを広く指す。
【0012】
また、上記設定値欄への設定値の書き込みは、キーボード、マウスなどの操作部を介した入力によって行われ得る。
【0013】
この開示のプログラミング支援装置によって作成されたプログラムを用いるシステムでは、システムの動作時に、上記システムに含まれた各デバイスポートが複数のプログラム言語によって参照されることが予定されている。この開示のプログラミング支援装置では、上記複数のプログラム言語によるプログラムが作成される際に、表示処理部は、表示画面上に、上記複数のデバイスポートをそれぞれ表す参照名欄と、上記各デバイスポートが上記システムの動作時に書き込み用のポートであるか又は読み取り用のポートであるかを示す読み出し/書き込み欄と、上記各デバイスポートのための設定値欄とを対応付けて、マップ情報テーブルとして一覧表示する。上記設定値欄は、第1のプログラムのための第1の設定値欄と、第2のプログラムのための第2の設定値欄とに区分されている。書き込み判断部は、第1のプログラム言語による上記第1のプログラムに関して、上記各デバイスポートについて上記第1の設定値欄への設定値の書き込みがなされたか否かを判断する。上書き禁止部は、上記第1のプログラム言語による上記第1のプログラムに関して、上記第1の設定値欄への設定値の書き込みがなされたと判断されたデバイスポートについて、上記読み出し/書き込み欄を参照して、上記デバイスポートが上記システムの動作時に書き込み用のポートであるとき、上記第1のプログラム言語とは異なる第2のプログラム言語による第2のプログラムに関して、上記第2の設定値欄への設定値の書き込みを禁止する一方、上記デバイスポートが上記システムの動作時に読み出し用のポートであるとき、上記第2のプログラム言語による上記第2のプログラムに関して、上記第2の設定値欄への設定値の書き込みを許容する。したがって、上記第1のプログラム言語による第1のプログラムに関して、上記第1の設定値欄への設定値の書き込みがなされたと判断されたデバイスポートについて、プログラム作成者が、上記第2のプログラム言語による第2のプログラムに関して、上記第1の設定値欄への設定値の書き込み(上書き)を誤って行うことが無い。つまり、このプログラミング支援装置によれば、デバイスポートへの設定値の上書き禁止の機能を、互いに異なる複数のプログラム言語によるプログラム作成へ及ぼすことができる。したがって、それぞれのプログラムを作成するプログラム作成者は、このようにして適切に設定値の書き込みがなされたマップ情報テーブルを適宜参照しながら、プログラムを作成することができる。これにより、上記複数のデバイスポートについての設定値は、各プログラム作成者が意図した状態になる。この結果、上記システムの動作時に、上記第1のプログラム言語による第1のプログラムと上記第2のプログラム言語による第2のプログラムとの両方によって、各デバイスポートを参照して、有効利用できる。
【0014】
【0015】
また、このプログラミング支援装置では、第1のプログラム言語による第1のプログラムに関して、そのプログラムを作成するプログラム作成者は上記第1の設定値欄へ設定値の書き込みを行う。一方、第2のプログラム言語による第2のプログラムに関して、そのプログラムを作成するプログラム作成者は、許容されていれば(上記上書き禁止部によって禁止されていなければ)、上記第2の設定値欄へ設定値の書き込みを行う。したがって、上記第1、第2のプログラムの作成を互いに別のプログラム作成者が担当する場合であっても、各プログラム作成者が設定値の書き込みを行うべき欄を迷うことが無い。
【0016】
一実施形態のプログラミング支援装置では、上記表示処理部は、上記設定値の書き込みが禁止された上記第2の設定値欄に、書き込み不能であることを表す書き込み不能表示を行うことを特徴とする。
【0017】
この一実施形態のプログラミング支援装置では、上記表示処理部は、上記設定値の書き込みが禁止されたデバイスポートの上記第2の設定値欄に、書き込み不能であることを表す書き込み不能表示を行う。したがって、その書き込み不能表示を見たプログラム作成者は、上記設定値の書き込みが禁止された上記第2の設定値欄へ、設定値の書き込みを無駄に試みることが無い。
【0018】
一実施形態のプログラミング支援装置では、上記マップ情報テーブルは、さらに、上記各デバイスポートについて書き込まれるべき設定値のデータ型を示すデータ型欄を含むことを特徴とする。
【0019】
この一実施形態のプログラミング支援装置では、上記マップ情報テーブルのデータ型欄に、上記各デバイスポートに書き込まれるべき設定値のデータ型が示される。したがって、各プログラム作成者が書き込むべき設定値のデータ型を間違うことが無い。
【0020】
一実施形態のプログラミング支援装置では、
上記各デバイスポートについて上記データ型欄に示されたデータ型が、上記各プログラムに関して上記設定値の書き込みに使用可能であるか否かを判断するデータ型判断部を備え、
上記表示処理部は、上記各デバイスポートについての、上記データ型が上記設定値の書き込みに使用不可であると判断されたプログラムのための設定値欄に、書き込み不能であることを表す書き込み不能表示を行うことを特徴とするプログラミング支援装置。
【0021】
この一実施形態のプログラミング支援装置では、データ型判断部は、上記各デバイスポートについて上記データ型欄に示されたデータ型が、上記各プログラムに関して上記設定値の書き込みに使用可能であるか否かを判断する。上記表示処理部は、上記各デバイスポートについての、上記データ型が上記設定値の書き込みに使用不可であると判断されたプログラムのための設定値欄に、書き込み不能であることを表す書き込み不能表示を行う。したがって、その書き込み不能表示を見たプログラム作成者は、上記データ型が上記設定値の書き込みに使用不可であると判断されたプログラムのための設定値欄に、設定値の書き込みを無駄に試みることが無い。
【0022】
別の局面では、この開示のプログラミング支援方法は、
複数のデバイスポートを含み、動作時に各デバイスポートが複数のプログラム言語によって参照されるようになっているシステムのための、上記複数のプログラム言語によるプログラム作成を支援するプログラミング支援装方法であって、
上記複数のプログラム言語によるプログラムが作成される際に、表示画面上に、上記複数のデバイスポートをそれぞれ表す参照名欄と、上記各デバイスポートが上記システムの動作時に書き込み用のポートであるか又は読み取り用のポートであるかを示す読み出し/書き込み欄と、上記各デバイスポートのための設定値欄とを対応付けて、マップ情報テーブルとして一覧表示するステップを有し
上記設定値欄は、第1のプログラムのための第1の設定値欄と、第2のプログラムのための第2の設定値欄とに区分されており、
第1のプログラム言語による上記第1のプログラムに関して、上記デバイスポートについて上記第1の設定値欄への設定値の書き込みがなされたか否かを判断するステップと
上記第1のプログラム言語による上記第1のプログラムに関して、上記第1の設定値欄への設定値の書き込みがなされたと判断されたデバイスポートについて、上記読み出し/書き込み欄を参照して、上記デバイスポートが上記システムの動作時に書き込み用のポートであると判断したとき、上記第1のプログラム言語とは異なる第2のプログラム言語による第2のプログラムに関して、上記第2の設定値欄への設定値の書き込みを禁止する一方、上記デバイスポートが上記システムの動作時に読み出し用のポートであると判断したとき、上記第2のプログラム言語による上記第2のプログラムに関して、上記第2の設定値欄への設定値の書き込みを許容するステップと
を有することを特徴とする。
【0023】
この開示のプログラミング支援方法によれば、デバイスポートへの設定値の上書き禁止の機能を、互いに異なる複数のプログラム言語によるプログラム作成へ及ぼすことができる。したがって、それぞれのプログラムを作成するプログラム作成者は、このようにして適切に設定値の書き込みがなされたマップ情報テーブルを適宜参照しながら、プログラムを作成することができる。これにより、上記複数のデバイスポートについての設定値は、各プログラム作成者が意図した状態になる。この結果、上記システムの動作時に、上記第1のプログラム言語による第1のプログラムと上記第2のプログラム言語による第2のプログラムとの両方によって、各デバイスポートを参照して、有効利用できる。
【0024】
さらに別の局面では、この開示のプログラムは、上記プログラミング支援方法をコンピュータに実行させるためのプログラムである。
【0025】
この開示のプログラムをコンピュータに実行させることによって、上記プログラミング支援方法を実施することができる。
【発明の効果】
【0026】
以上より明らかなように、この開示のプログラミング支援装置およびプログラミング支援方法によれば、デバイスポートへの設定値の上書き禁止の機能を、互いに異なる複数のプログラム言語によるプログラム作成へ及ぼすことができる。また、この開示のプログラムによれば、そのようなプログラミング支援方法をコンピュータに実行させることができる。
【図面の簡単な説明】
【0027】
図1】この発明の一実施形態のプログラミング支援装置が適用されたシステムの概略的なブロック構成を示す図である。
図2】上記プログラミング支援装置をなすパーソナルコンピュータ(PC)のブロック構成を示す図である。
図3】上記システムの一部をなす第2ユニット(型番「NX-eeee」)に含まれたI/Oポート群を示す図である。
図4】上記プログラミング支援装置の表示画面に、マップ情報テーブルを最初に表示する初期表示処理のフローを示す図である。
図5】上記プログラミング支援装置によって、第1のプログラム言語(ラダー言語)による第1のプログラム(シーケンス制御プログラム)に関して、上記マップ情報テーブルの「Variable」欄にデバイス変数を書き込む処理のフローを示す図である。
図6】上記プログラミング支援装置によって、第2のプログラム言語(本出願人の独自開発による言語)による第2のプログラム(ロボット制御プログラム)に関して、上記マップ情報テーブルの「Digital I/O」欄にデジタルI/O設定値を書き込む処理のフローを示す図である。
図7】上記プログラミング支援装置の表示画面に、初期表示処理によって表示されるマップ情報テーブルを例示する図である。
図8】上記マップ情報テーブルへの設定値の書き込み前の状態を示す図である。
図9】上記マップ情報テーブルへの設定値の書き込み後の状態を示す図である。
【発明を実施するための形態】
【0028】
以下、この発明の実施の形態を、図面を参照しながら詳細に説明する。
【0029】
図1は、この発明の一実施形態のプログラミング支援装置が適用されたシステム400の概略的なブロック構成を示している。このシステム400は、大別して、プログラミング支援装置をなすパーソナルコンピュータ(PC)10と、このPC10に通信ケーブル19を介して通信可能に接続されたプログラマブルロジックコントローラ(PLC)100と、このPLC100に通信ケーブル119を介して通信(この例では、EtherCAT(登録商標)通信)可能に接続されたデバイス群200とを含んでいる。
【0030】
デバイス群200は、この例では、第1ノード201(参照名「Node1」、型番「GX-aaaa」)と、第2ノード202(参照名「Node2」、型番「GX-bbbb」)と、第3ノード203(参照名「Node3」、型番「NX-cccc」)と、この第3ノード203に通信(この例では、EtherCAT(登録商標)通信)可能に接続された第1ユニット204(参照名「Unit1」、型番「NX-dddd」)および第2ユニット205(参照名「Unit2」、型番「NX-eeee」)を含んでいる。これらのデバイス201~205は、それぞれデバイスポートとしての物理I/Oポート(以下、単に「I/Oポート」という。)を複数含んでいる。それらのI/Oポートに設定された設定値は、それぞれ図示しないセンサ、モータ、ロボットなどを駆動するプログラムによって参照される。
【0031】
例えば、第2ユニット205(型番「NX-eeee」)は、図3に示すように、I/Oポート群206として6個のI/Oポート211~216を含んでいる。これらのI/Oポート211~216には、それぞれ参照名「Output Bit 00」、「Output Bit 00 Time Stamp」、「Output Bit 00 Output Status」、「Output Bit 01」、「Output Bit 01 Time Stamp」、「Output Bit 01 Output Status」が付されている。この例では、これらのI/Oポート211~216に設定された設定値は、図示しないロボットを駆動するプログラムによって参照される。
【0032】
図1中に示すPLC100は、制御部101と、マップ情報記憶部102と、シーケンス制御プログラム記憶部103と、ロボット制御プログラム記憶部104とを含んでいる。
【0033】
マップ情報記憶部102は、システム400に含まれた複数のI/Oポートに対応する参照名と、各I/Oポートのための設定値などとを対応付けて、それらのI/Oポート間の階層構造を含めて、マップ情報テーブルとして記憶する(後に図7図9を参照して詳述する。)。これにより、マップ情報テーブルは、複数のI/Oポート間の階層構造を、EtherCAT(登録商標)ネットワークの構成一覧として含むものとなっている。
【0034】
図1中に示すシーケンス制御プログラム記憶部103は、第1のプログラム言語(この例では、ラダー言語LD)による第1のプログラム(この例では、シーケンス制御プログラム)を記憶する。
【0035】
ロボット制御プログラム記憶部104は、第2のプログラム言語(この例では、本出願人の独自開発による言語)による第2のプログラム(この例では、ロボット制御プログラム)を記憶する。
【0036】
制御部101は、動作時に、シーケンス制御プログラム記憶部103に記憶された「シーケンス制御プログラム」に従って、マップ情報記憶部102に記憶されたマップ情報テーブルを参照しながら、例えば、このPLC100自体に接続されたセンサ、モータなどを制御する。それと並行して、制御部101は、ロボット制御プログラム記憶部104に記憶された「ロボット制御プログラム」に従って、マップ情報記憶部102に記憶されたマップ情報テーブル300を参照しながら、例えば、上述の第2ユニット205のI/Oポート211~216を介してロボットの動作(モーション)を制御する。このように、このPLC100は、シーケンス制御プログラムによるシーケンス制御と、ロボット制御プログラムによるロボット制御とを、統合した制御動作を行う。
【0037】
図1中に示すPC10は、この例では、主にプログラミング支援装置として、シーケンス制御プログラム記憶部103に記憶される「シーケンス制御プログラム」、および、ロボット制御プログラム記憶部104に記憶される「ロボット制御プログラム」の作成支援のために設けられている。
【0038】
この例では、PC10は、図2に示すように、CPU(Central Processing Unit;中央演算処理ユニット)11と、表示器12と、操作部13と、記憶部14と、通信部16とを備えている。
【0039】
CPU11は、ソフトウェア(コンピュータプログラム)によって動作し、後述のプログラミング支援方法に従う処理や、その他の各種処理を実行する。
【0040】
表示器12は、この例では、LCD(液晶表示素子)からなり、CPU11からの制御信号に従って、表示画面に画像表示を行う。この例では、表示器12は、マップ情報テーブル300を表示するために用いられる。
【0041】
操作部13は、この例では、キーボードとマウスからなり、ユーザ(操作者)からの指示およびデータなどを入力するために用いられる。
【0042】
記憶部14は、この例では、非一時的にデータを記憶し得るEEPROM(電気的に書き換え可能な不揮発性メモリ)、および、一時的にデータを記憶し得るRAM(ランダム・アクセス・メモリ)を含んでいる。この記憶部14には、CPU11を制御するためのソフトウェア(コンピュータプログラム)が格納されている。また、この例では、記憶部14には、上述のマップ情報テーブルの内容が記憶される。この記憶内容については、後に詳述する。
【0043】
通信部16は、CPU11によって制御されて所定の情報を外部の装置に送信したり、また、外部の装置からの情報を受信してCPU11に受け渡したりする。この例では、通信部16は、通信ケーブル19を介して、PLC100との通信を行うために働く。
【0044】
図4図6は、上述の「シーケンス制御プログラム」および「ロボット制御プログラム」の作成を支援するために、PC10のCPU11が実行するプログラミング支援方法の処理フローを示している。
【0045】
(初期表示処理)
図4に示す初期表示処理では、まずステップS1に示すように、CPU11は表示処理部として働いて、表示器12の表示画面に、図7に例示するようなマップ情報テーブル300(の表頭を含む外枠)を表示するとともに、ステップS2に示すように、PLC100のマップ情報記憶部102からマップ情報テーブルの内容(構成一覧)を読み出して、マップ情報テーブル300において複数のI/Oポート間の階層構造を展開して表示する。
【0046】
図7に示すように、マップ情報テーブル300は、左から順に、システム400における各デバイスの位置を示す「Position」欄301と、それぞれの参照名を示す参照名欄としての「Port」欄302と、各参照名に対応する説明を示す「Description」欄303と、各ポートの設定値がPLC100の動作時に書き込み用「W」であるか又は読み取り用「R」であるかを示す読み出し/書き込み欄としての「R/W」欄304と、各ポートについて書き込まれるべき設定値のデータ型を示すデータ型欄としての「Data Type」欄305と、シーケンス制御プログラムに関してデバイス変数が書き込まれるべき第1の設定値欄としての「Variable」欄306と、そのデバイス変数の型が書き込まれるべき「Variable Type」欄307と、ロボット制御プログラムに関してデジタルI/O設定値が書き込まれるべき第2の設定値欄としての「Digital I/O」欄308とを含んでいる。
【0047】
上述の「Position」欄301と「Port」欄302によって、システム400に含まれたデバイス群の、EtherCAT(登録商標)ネットワークにおける階層構造が表されている。この例では、「Port」欄302の最上段セル310に、EtherCAT(登録商標)ネットワークの構成であることを示す「EtherCAT Network Configuration」と表示されている。その下方で、「Position」欄301のセル311,312,313に上から下へ向かって順に、それぞれ第1ノード201の参照名「Node1」、第2ノード202の参照名「Node2」、第3ノード203の参照名「Node3」が表示されている。それらのセル311,312,313に対応して、「Port」欄302には、それぞれのノードの型番「GX-aaaa」、「GX-bbbb」、「NX-cccc」が表示されている。さらに、その下方で、「Position」欄301のセル314,315に上から下へ向かって順に、それぞれ第1ユニット204の参照名「Unit1」、第2ユニット205の参照名「Unit2」が表示されている。それらのセル314,315に対応して、「Port」欄302には、それぞれのユニットの型番「NX-dddd」、「NX-eeee」が表示されている。
【0048】
さらに、その下方で、「Port」欄302のセル321,322,323,324,325,326に上から下へ向かって順に、それぞれ第2ユニット205(型番「NX-eeee」)に含まれたI/Oポート211,212,213,214,215,216の参照名「Output Bit 00」、「Output Bit 00 Time Stamp」、「Output Bit 00 Output Status」、「Output Bit 01」、「Output Bit 01 Time Stamp」、「Output Bit 01 Output Status」が表示されている。図7中に破線390で囲んで示すように、この例では、第2ユニット205(型番「NX-eeee」)に含まれたI/Oポート211~216に注目している。
【0049】
この例では、「R/W」欄304に示すように、I/Oポート211(参照名「Output Bit 00」)、I/Oポート212(参照名「Output Bit 00 Time Stamp」)、I/Oポート214(参照名「Output Bit 01」)、および、I/Oポート215(参照名「Output Bit 01 Time Stamp」)の設定値は、それぞれ書き込み用「W」になっている。一方、I/Oポート213(参照名「Output Bit 00 Output Status」)、および、I/Oポート216(参照名「Output Bit 01 Output Status」)の設定値は、それぞれ読み取り用「R」になっている。
【0050】
また、この例では、「Data Type」欄305に示すように、I/Oポート211(参照名「Output Bit 00」)、I/Oポート213(参照名「Output Bit 00 Output Status」)、I/Oポート214(参照名「Output Bit 01」)、および、I/Oポート216(参照名「Output Bit 01 Output Status」)のデータ型は、それぞれBOOL型になっている。一方、I/Oポート212(参照名「Output Bit 00 Time Stamp」)、および、I/Oポート215(参照名「Output Bit 01 Time Stamp」)のデータ型は、それぞれULINT型になっている。ここで、BOOL型とは、真理値の「真=true」と「偽=false」という2値をとるデータ型を指す。BOOL型であれば、シーケンス制御プログラムとロボット制御プログラムとの両方に使用可能である。ULINT型とは、符号なしの、64ビットの整数値をとるデータ型を指す。ULINT型であれば、シーケンス制御プログラムには使用可能であるが、ロボット制御プログラムには使用不可である。このように、このマップ情報テーブル300では、「Data Type」欄305に、各I/Oポート211~216に書き込まれるべき設定値のデータ型が示される。したがって、各プログラム作成者が書き込むべき設定値のデータ型を間違うことが無い。
【0051】
次に、図4のステップS3に進んで、CPU11はデータ型判断部として働いて、この例では第2ユニット205(型番「NX-eeee」)の各I/Oポート211~216のデータ型がBOOL型であるか否かを判断する。つまり、実質的に、各I/Oポート211~216のデータ型が各プログラムに関して設定値の書き込みに使用可能であるか否かを判断する。
【0052】
ここで、上述のようにI/Oポート211(参照名「Output Bit 00」)、I/Oポート213(参照名「Output Bit 00 Output Status」)、I/Oポート214(参照名「Output Bit 01」)、および、I/Oポート216(参照名「Output Bit 01 Output Status」)のデータ型はそれぞれBOOL型であることから(ステップS3でYES)、CPU11は、「Variable」欄306へのデバイス変数の書き込みと、「Digital I/O」欄308へのデジタルI/O設定値の書き込みとの両方に使用可能であると判断する。そして、図4のステップS4で、CPU11は表示処理部として働いて、それらのI/Oポート211,213,214,216について、図7中の「Variable」欄306の対応するセル331,333,334,336と、「Variable Type」欄307の対応するセル341,343,344,346と、「Digital I/O」欄308の対応するセル351,353,354,356とに、それぞれ書き込みに使用可能であることを表す書き込み可能表示を行う。この例では、書き込み可能表示は、図7中に示すように、それらのセル331,333,334,336;341,343,344,346;351,353,354,356を白色(または明色)にすることに相当する。
【0053】
一方、I/Oポート212(参照名「Output Bit 00 Time Stamp」)、および、I/Oポート215(参照名「Output Bit 01 Time Stamp」)のデータ型はそれぞれULINT型であることから(ステップS3でNO)、CPU11は、「Variable」欄306へのデバイス変数の書き込みには使用可能であるが、「Digital I/O」欄308へのデジタルI/O設定値の書き込みには使用不可と判断する。そして、図4のステップS5で、CPU11は表示処理部として働いて、それらのI/Oポート212,215について、図7中の「Variable」欄306の対応するセル332,335と、「Variable Type」欄307の対応するセル342,345とに、それぞれ書き込みに使用可能であることを表す書き込み可能表示を行う一方、「Digital I/O」欄308の対応するセル352,355に書き込み不能であることを表す書き込み不能表示を行う。この例では、この書き込み不能表示は、図7中に示すように、それらのセル352,355を暗色(上記白色または明色よりも暗い色を意味する。)にすることに相当する。なお、書き込み不能表示は、この態様の表示に限られるものではなく、例えば、各セルに斜めの罫線を付すなどの、他の態様の表示であってもよい(以下同様。)。つまり、書き込み不能表示は、ユーザがそれを見たとき、直感的に書き込み不能であることを認識できれば良い。
【0054】
CPU11は、このようにして初期表示処理(図4)を完了する。この例では、初期表示処理によって作成されたマップ情報テーブル300は、PC10の記憶部14に保存されるとともに、PLC100のマップ情報記憶部102に保存される。このマップ情報テーブル300は、次に述べる「Variable」欄306へのデバイス変数の書き込み処理(図5)、および/または、「Digital I/O」欄308へのデジタルI/O設定値の書き込み処理(図6)の際に参照される。
【0055】
ここで、図7に示したマップ情報テーブル300では、「Variable」欄306、「Variable Type」欄307、「Digital I/O」欄308の各セルに、書き込み可能表示または書き込み不能表示が行われている。したがって、プログラム作成者は、「Variable」欄306、「Digital I/O」欄308の各セルに設定値を書き込み可能であるか否かを、視覚を通して直感的に知ることができる。したがって、書き込み不能表示を見たプログラム作成者は、上記データ型が上記設定値の書き込みに使用不可であると判断されたプログラムのための設定値欄(上の例では、ロボット制御プログラムのためのセル352,355)に、設定値の書き込みを無駄に試みることが無い。
【0056】
また、上述のマップ情報テーブル300では、設定値欄は、シーケンス制御プログラムのための「Variable」欄306と、ロボット制御プログラムのための「Digital I/O」欄308とに区分されている。したがって、ラダー言語LDによるシーケンス制御プログラムに関して、そのプログラムを作成するプログラム作成者は「Variable」欄306へデバイス変数の書き込みを行うことを促される。一方、独自の言語によるロボット制御プログラムに関して、そのプログラムを作成するプログラム作成者は、許容されていれば、「Digital I/O」欄308へデジタルI/O設定値の書き込みを行うことを促される。したがって、シーケンス制御プログラムとロボット制御プログラムの作成を互いに別のプログラム作成者が担当する場合であっても、各プログラム作成者が設定値の書き込みを行うべき欄を迷うことが無い。
【0057】
(デバイス変数の書き込み処理)
図5に示すデバイス変数の書き込み処理では、まずステップS11に示すように、CPU11は表示処理部として働いて、この例では記憶部14から図8に例示するようなマップ情報テーブル300(この例では、図7に示したものと同じ)を読み出して、表示器12の表示画面に表示する。なお、PLC100のマップ情報記憶部102からマップ情報テーブルの内容(構成一覧)を読み出して、それが更新されていれば、マップ情報テーブル300を更新して表示してもよい。
【0058】
次に、ユーザが、操作部13を介して、シーケンス制御プログラムに関して、例えばI/Oポート211(参照名「Output Bit 00」)について、「Variable」欄306の対応するセル331にデバイス変数「N2_Output_Bit_00」を入力し、また、これに伴って「Variable Type」欄307の対応するセル341にそのデバイス変数の型「Global Variables」を入力したものとする。すると、図5のステップS12で、CPU11は書き込み判断部として働いて、図9中に示すように、I/Oポート211について設定値の書き込みがなされたと判断して、「Variable」欄306のセル331に、デバイス変数「N2_Output_Bit_00」を書き込んで表示する。これとともに、CPU11は、「Variable Type」欄307のセル341に、デバイス変数の型「Global Variables」を書き込んで表示する。
【0059】
次に、図5のステップS13で、CPU11は、図9中に示す「R/W」欄304を参照して、そのI/Oポート211が書き込み用のポートであるか否かを判断する。この例では、I/Oポート211は書き込み用「W」のポートであることから(ステップS13でYES)、図5のステップS14で、CPU11は上書き禁止部として働いて、そのI/Oポート211について、この例では「Digital I/O」欄308の対応するセル351への設定値の書き込みを禁止する。これとともに、CPU11は表示処理部として働いて、その「Digital I/O」欄308のセル351に、デジタルI/O設定値の書き込みが不可であることを表す書き込み不能表示を行う。この例では、この書き込み不能表示は、図9中に破線391で囲んで示すように、そのセル351を暗色にすることに相当する(図8中に破線391で囲んで示す元の白色または明色と比較されたい。)。
【0060】
したがって、その書き込み不能表示を見たプログラム作成者は、上記設定値の書き込みが禁止された設定値欄(上の例では、「Digital I/O」欄308のセル351)へ、設定値の書き込みを無駄に試みることが無い。
【0061】
なお、図5のステップS12で、設定値の書き込みがなされたセルが例えばI/Oポート213(参照名「Output Bit 00 Output Status」)に対応するセル333,343であれば、そのI/Oポート213は読み取り用「」のポートであることから(ステップS13でNO)、図9中に示すように、CPU11は、そのI/Oポート213について、「Digital I/O」欄308の対応するセル353への設定値の書き込みを許容する。したがって、そのセル353に、ロボット制御プログラムのための設定値の書き込みが可能になる。この例では、図9中に示すように、セル353に、4010という値が書き込まれている。
【0062】
(デジタルI/O設定値の書き込み処理)
図6に示すデジタルI/O設定値の書き込み処理では、まずステップS21に示すように、CPU11は表示処理部として働いて、この例では記憶部14から図8に例示するようなマップ情報テーブル300(この例では、図7に示したものと同じ)を読み出して、表示器12の表示画面に表示する。なお、図5中のステップS11に関して述べたのと同様に、PLC100のマップ情報記憶部102からマップ情報テーブルの内容(構成一覧)を読み出して、それが更新されていれば、マップ情報テーブル300を更新して表示してもよい。
【0063】
次に、ユーザが、操作部13を介して、ロボット制御プログラムに関して、例えばI/Oポート214(参照名「Output Bit 01」)について、「Digital I/O」欄308のセル354にデジタルI/O設定値(この例では、4009という値)を入力したものとする。すると、図5のステップS22で、CPU11は書き込み判断部として働いて、図9中に示すように、「Digital I/O」欄308のセル354に、デジタルI/O設定値(この例では、4009という値)を書き込んで表示する。
【0064】
次に、図6のステップS23で、CPU11は、図9中に示す「R/W」欄304を参照して、そのI/Oポート214が書き込み用のポートであるか否かを判断する。この例では、I/Oポート214は書き込み用「W」のポートであることから(ステップS23でYES)、図6のステップS24で、CPU11は上書き禁止部として働いて、そのI/Oポート214について、この例では「Variable」欄306の対応するセル334、および、「Variable Type」欄307の対応するセル344への設定値の書き込みを禁止する。これとともに、CPU11は表示処理部として働いて、その「Variable」欄306のセル334、および、「Variable Type」欄307のセル344に、書き込みが不可であることを表す書き込み不能表示を行う。この例では、それらの書き込み不能表示は、図9中に破線392で囲んで示すように、それらのセル334,344を暗色にすることに相当する(図8中に破線392で囲んで示す元の白色または明色と比較されたい。)。
【0065】
したがって、その書き込み不能表示を見たプログラム作成者は、上記設定値の書き込みが禁止された設定値欄(上の例では、「Variable」欄306のセル334,344)へ、設定値の書き込みを無駄に試みることが無い。
【0066】
なお、図6のステップS22で、設定値の書き込みがなされたセルが例えばI/Oポート213(参照名「Output Bit 00 Output Status」)に対応するセル353であれば、そのI/Oポート213は読み取り用「」のポートであることから(ステップS23でNO)、図9中に示すように、CPU11は、そのI/Oポート213について、「Variable」欄306の対応するセル334、および、「Variable Type」欄307の対応するセル344への設定値の書き込みを許容する。したがって、それらのセル334,344に、シーケンス制御プログラムのための設定値の書き込みが可能になる。この例では、図9中に示すように、セル333にデバイス変数「N2_Output_Bit_00」が書き込まれている。また、それに伴って、セル333に、デバイス変数の型「Global Variables」が書き込まれている。
【0067】
このように、このプログラミング支援方法によれば、デバイスポートへの設定値の上書き禁止の機能を、互いに異なる複数のプログラム言語によるプログラム作成へ及ぼすことができる。したがって、それぞれのプログラムを作成するプログラム作成者は、このようにして適切に設定値の書き込みがなされたマップ情報テーブル300を適宜参照しながら、プログラムを作成することができる。これにより、複数のデバイスポートについての設定値は、各プログラム作成者が意図した状態になる。
【0068】
なお、CPU11は、図5のステップS14で設定値の書き込みが禁止された設定値欄(図9中に示す「Digital I/O」欄308のセル351)、図6のステップS24で設定値の書き込みが禁止された設定値欄(図9中に示す「Variable」欄306のセル334、および、「Variable Type」欄307のセル344)について、操作部13を介したユーザの指示(書き込み禁止を解除する指示)があれば、上記設定値の書き込み禁止を解除し、書き込み不能表示を解消してもよい。これにより、プログラム作成の状況に応じて、ユーザの便宜を図ることができる。
【0069】
上述の実施形態では、第1のプログラム言語はラダー言語LDであり、第2のプログラム言語は本出願人の独自開発による言語であるものとしたが、これに限られるものではない。この発明は、互いに異なる複数のプログラム言語に広く適用することができる。
【0070】
上述のプログラミング支援方法を、ソフトウェア(コンピュータプログラム)として、CD(コンパクトディスク)、DVD(デジタル万能ディスク)、不揮発性メモリなどの非一時的(non-transitory)にデータを記憶可能な記録媒体に記録してもよい。このような記録媒体に記録されたソフトウェアを、パーソナルコンピュータ、PDA(パーソナル・デジタル・アシスタンツ)などの実質的なコンピュータ装置にインストールすることによって、それらのコンピュータ装置に、上述のプログラミング支援方法を実行させることができる。
【0071】
以上の実施形態は例示であり、この発明の範囲から離れることなく様々な変形が可能である。上述した複数の実施の形態は、それぞれ単独で成立し得るものであるが、実施の形態同士の組みあわせも可能である。また、異なる実施の形態の中の種々の特徴も、それぞれ単独で成立し得るものであるが、異なる実施の形態の中の特徴同士の組みあわせも可能である。
【符号の説明】
【0072】
10 PC
11 CPU
100 PLC
200 デバイス群
211~216 I/Oポート
図1
図2
図3
図4
図5
図6
図7
図8
図9