(58)【調査した分野】(Int.Cl.,DB名)
マスタ装置とスレーブ装置とを組み合わせて制御する制御システムの一部をなし、互いに制御軸数が異なる複数種類のスレーブ装置のうち或る制御軸数のスレーブ装置を、その制御軸数と同数の要素からなるスレーブ情報を用いて制御するスレーブ装置制御部であって、
上記制御システムは、
互いに制御軸数が異なる複数種類のマスタ装置のうち或る制御軸数のマスタ装置を、その制御軸数と同数の要素からなるマスタ情報を用いて制御するマスタ装置制御部と、
上記マスタ装置制御部から上記マスタ情報を逐次受信して、受信したマスタ情報の要素数に応じて予め定められた割り付けの仕方に基づいて、一定数の要素からなる抽象化マスタ情報を作成する抽象化マスタ情報作成部と、
互いに要素数が異なるスレーブ情報毎に、上記抽象化マスタ情報の上記一定数の要素からの上記スレーブ情報の要素数に応じた抽出の仕方を、予め定めて記憶している抽出設定記憶部とを備え、
上記スレーブ装置制御部は、
上記制御すべきスレーブ装置のためのスレーブ情報の要素数に応じて、上記抽出設定記憶部に記憶された抽出の仕方を選択し、
上記抽象化マスタ情報を逐次受信して、受信した抽象化マスタ情報に含まれた上記一定数の要素から、上記選択した抽出の仕方に基づいて、上記スレーブ情報の要素数に応じた数の要素を抽出する情報抽出部と、
上記情報抽出部が抽出した要素が示す値を用いて上記スレーブ情報を作成するスレーブ情報作成部とを備えたことを特徴とするスレーブ装置制御部。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、いずれの従来例でも、特定の制御軸数をもつマスタ装置と特定の制御軸数をもつスレーブ装置との組み合わせに限定した制御方法になっている。このため、マスタ装置の種類に依存してスレーブ装置の種類、可能な動作などが制限される。つまり、制御の汎用性に乏しいという問題がある。
【0006】
そこで、この発明の課題は、互いに制御軸数が異なる複数種類のマスタ装置と互いに制御軸数が異なる複数種類のスレーブ装置とを組み合わせて制御できる制御システムを提供することにある。また、この発明の課題は、そのような制御システムの一部をなし、互いに制御軸数が異なる複数種類のスレーブ装置を制御できるスレーブ装置制御部、そのような制御システムのための制御方法およびプログラムを提供することにある。
【課題を解決するための手段】
【0007】
上記課題を解決するため、この開示の制御システムは、
マスタ装置とスレーブ装置とを組み合わせて制御する制御システムであって、
互いに制御軸数が異なる複数種類のマスタ装置のうち或る制御軸数のマスタ装置を、その制御軸数と同数の要素からなるマスタ情報を用いて制御するマスタ装置制御部と、
互いに制御軸数が異なる複数種類のスレーブ装置のうち或る制御軸数のスレーブ装置を、その制御軸数と同数の要素からなるスレーブ情報を用いて制御するスレーブ装置制御部と、
上記マスタ装置制御部から上記マスタ情報を逐次受信して、受信したマスタ情報の要素数に応じて予め定められた割り付けの仕方に基づいて、一定数の要素からなる抽象化マスタ情報を作成する抽象化マスタ情報作成部と
、
互いに要素数が異なるスレーブ情報毎に、上記抽象化マスタ情報の上記一定数の要素からの上記スレーブ情報の要素数に応じた抽出の仕方を、予め定めて記憶している抽出設定記憶部とを備え、
上記スレーブ装置制御部は、
上記制御すべきスレーブ装置のためのスレーブ情報の要素数に応じて、上記抽出設定記憶部に記憶された抽出の仕方を選択し、
上記抽象化マスタ情報作成部から上記抽象化マスタ情報を逐次受信して、受信した抽象化マスタ情報に含まれた上記一定数の要素から、上記
選択した抽出の仕方に基づいて、上記スレーブ情報の要素数に応じた数の要素を抽出し、さらに、上記抽出した要素が示す値を用いて上記スレーブ情報を作成することを特徴とする。
【0008】
本明細書で、マスタ装置またはスレーブ装置の「種類」とは、制御軸数が互いに異なるものだけでなく、制御軸の属性(並進と回転)が互いに異なるものを含んでいる。
【0009】
また、予め定められた「割り付けの仕方」とは、或る要素数のマスタ情報に含まれたいずれの要素を、抽象化マスタ情報の一定数の要素(例えば、6要素)のうちのいずれに割り付けるか、を示す対応の仕方を意味する。この割り付けの仕方は、マスタ情報の要素数が例えば1、2、3、4、5または6のように異なれば、それに応じてそれぞれ異なって定められる。
【0010】
また、予め定められた「抽出の仕方」とは、抽象化マスタ情報に含まれた上記一定数の要素から、いずれの要素を抽出するか、を示す仕方を意味する。抽出される要素の数は、作成すべきスレーブ情報の要素数に応じた数となる。
【0011】
また、「マスタ情報」の各要素、「スレーブ情報」の各要素は、それぞれ逐次値が更新され、それによって、それぞれマスタ装置の各軸、スレーブ装置の各軸が駆動される。
【0012】
この開示の制御システムでは、マスタ装置制御部は、或る制御軸数(例えば1、2、3、4、5または6)のマスタ装置を、その制御軸数と同数の要素からなるマスタ情報を用いて制御する。抽象化マスタ情報作成部は、上記マスタ装置制御部から上記マスタ情報を逐次受信して、受信したマスタ情報の要素数に応じて予め定められた割り付けの仕方に基づいて、一定数の要素からなる抽象化マスタ情報を作成する。つまり、上記マスタ情報の要素(要素数は6以下の様々な自然数であり得る)から、共通に上記一定数の要素からなる抽象化マスタ情報を作成する。
抽出設定記憶部は、互いに要素数が異なるスレーブ情報毎に、上記抽象化マスタ情報の上記一定数の要素からの上記スレーブ情報の要素数に応じた抽出の仕方を、予め定めて記憶している。スレーブ装置制御部は、
上記制御すべきスレーブ装置のためのスレーブ情報の要素数に応じて、上記抽出設定記憶部に記憶された抽出の仕方を選択する。上記抽象化マスタ情報作成部から上記抽象化マスタ情報を逐次受信して、受信した抽象化マスタ情報に含まれた上記一定数の要素から、上記
選択した抽出の仕方に基づいて、上記スレーブ情報の要素数に応じた数の要素を抽出し、さらに、抽出した要素が示す値を用いて上記スレーブ情報を作成する。そして、上記スレーブ装置制御部は、作成したスレーブ情報を用いて上記スレーブ装置を制御する。すなわち、上記スレーブ装置制御部は、上記スレーブ装置を、その制御軸数と同数の要素からなるスレーブ情報を用いて制御する。
【0013】
上述の動作によれば、マスタ情報の要素数(すなわち、マスタ装置の制御軸数)にかかわらず、上記一定数の要素からなる抽象化マスタ情報が逐次作成される。また、スレーブ情報の要素数(すなわち、スレーブ装置の制御軸数)にかかわらず、上記抽象化マスタ情報から上記スレーブ装置を制御するためのスレーブ情報が逐次作成される。したがって、互いに制御軸数が異なる複数種類のマスタ装置と互いに制御軸数が異なる複数種類のスレーブ装置とを組み合わせて制御することができる。
【0014】
一実施形態の制御システムでは、互いに要素数が異なるマスタ情報毎に、上記マスタ情報の要素から上記抽象化マスタ情報の上記一定数の要素への割り付けの仕方を、それぞれ要素同士の対応表として格納している割付設定記憶部を備えたことを特徴とする。
【0015】
この一実施形態の制御システムでは、上記抽象化マスタ情報作成部は、上記割付設定記憶部が格納している上記要素同士の対応表を参照することによって、上記マスタ情報の要素から、上記抽象化マスタ情報を迅速に作成できる。
【0016】
一実施形態の制御システムでは、上記割付設定記憶部の上記対応表は、上記抽象化マスタ情報の上記一定数の要素のうち、上記マスタ情報の要素が割り付けられる要素毎に、その要素に関する倍率を対応付けて格納していることを特徴とする。
【0017】
この一実施形態の制御システムでは、例えば上記抽象化マスタ情報作成部が上記抽象化マスタ情報を作成する際に、上記抽象化マスタ情報の上記一定数の要素のうち、上記マスタ情報の要素が割り付けられた要素毎に、その要素の値にそれぞれ上記対応する倍率を乗算する。これによって、それぞれその要素の値を適切な単位で表し、その要素の値に物理的な意味を持たせることができる。
【0018】
一実施形態の制御システムでは、
上記対応表における上記抽象化マスタ情報の上記一定数の要素は、並進の自由度を表す要素と、回転の自由度を表す要素とを含み、
上記マスタ情報の要素が並進の自由度を表すとき、その要素は上記抽象化マスタ情報のうち並進の自由度を表す要素に割り付けられる一方、上記マスタ情報の要素が回転の自由度を表すとき、その要素は上記抽象化マスタ情報のうち回転の自由度を表す要素に割り付けられることを特徴とする。
【0019】
この一実施形態の制御システムでは、上記マスタ情報の要素を上記抽象化マスタ情報の上記一定数の要素に割り付ける割り付けの仕方が、比較的簡単に定められる。
【0020】
【0021】
【0022】
一実施形態の制御システムでは、上記抽出設定記憶部は、
上記互いに要素数が異なるスレーブ情報毎に、上記抽出の仕方をそれぞれリストとして格納していることを特徴とする。
【0023】
この一実施形態の制御システムでは、上記スレーブ装置制御部は、上記抽出設定記憶部が格納しているリストを参照することによって、上記抽象化マスタ情報の上記一定数の要素から、上記スレーブ情報の要素数に応じた数の要素を迅速に抽出できる。
【0024】
一実施形態の制御システムでは、上記スレーブ装置制御部は、上記抽象化マスタ情報の上記一定数の要素のうち、上記
選択した抽出の仕方に応じて抽出すべき要素を参照して、その要素に上記マスタ情報の要素が割り付けられていないとき、警告を発することを特徴とする。
【0025】
この一実施形態の制御システムでは、上記スレーブ装置制御部は、上記抽象化マスタ情報の上記一定数の要素のうち、上記
選択した抽出の仕方に応じて抽出すべき要素を参照する。ここで、上記参照した要素(抽出すべき要素)に上記マスタ情報の要素が割り付けられていないとき、何らかの異常が発生したと考えられる。そこで、上記スレーブ装置制御部は、上記参照した要素(抽出すべき要素)に上記マスタ情報の要素が割り付けられていないとき、警告を発する。これにより、制御システムの保守担当者等は、迅速に適切な対策をとることができる。
【0026】
別の局面では、この開示のスレーブ装置制御部は、
マスタ装置とスレーブ装置とを組み合わせて制御する制御システムの一部をなし、互いに制御軸数が異なる複数種類のスレーブ装置のうち或る制御軸数のスレーブ装置を、その制御軸数と同数の要素からなるスレーブ情報を用いて制御するスレーブ装置制御部であって、
上記制御システムは、
互いに制御軸数が異なる複数種類のマスタ装置のうち或る制御軸数のマスタ装置を、その制御軸数と同数の要素からなるマスタ情報を用いて制御するマスタ装置制御部
と、
上記マスタ装置制御部から上記マスタ情報を逐次受信して、受信したマスタ情報の要素数に応じて予め定められた割り付けの仕方に基づいて、一定数の要素からなる抽象化マスタ情報を作成する抽象化マスタ情報作成部と、
互いに要素数が異なるスレーブ情報毎に、上記抽象化マスタ情報の上記一定数の要素からの上記スレーブ情報の要素数に応じた抽出の仕方を、予め定めて記憶している抽出設定記憶部とを備え、
上記スレーブ装置制御部は、
上記制御すべきスレーブ装置のためのスレーブ情報の要素数に応じて、上記抽出設定記憶部に記憶された抽出の仕方を選択し、
上記抽象化マスタ情報を逐次受信して、受信した抽象化マスタ情報に含まれた上記一定数の要素から、上記
選択した抽出の仕方に基づいて、上記スレーブ情報の要素数に応じた数の要素を抽出する情報抽出部と、
上記情報抽出部が抽出した要素が示す値を用いて上記スレーブ情報を作成するスレーブ情報作成部とを備えたことを特徴とする。
【0027】
上述の制御システムでは、マスタ装置制御部は、或る制御軸数(例えば1、2、3、4、5または6)のマスタ装置を、その制御軸数と同数の要素からなるマスタ情報を用いて制御する。
抽象化マスタ情報作成部は、上記マスタ装置制御部から上記マスタ情報を逐次受信して、受信したマスタ情報の要素数に応じて予め定められた割り付けの仕方に基づいて、一定数の要素からなる抽象化マスタ情報を作成する。抽出設定記憶部は、互いに要素数が異なるスレーブ情報毎に、上記抽象化マスタ情報の上記一定数の要素からの上記スレーブ情報の要素数に応じた抽出の仕方を、予め定めて記憶している。ここで、この開示のスレーブ装置制御部では、
上記制御すべきスレーブ装置のためのスレーブ情報の要素数に応じて、上記抽出設定記憶部に記憶された抽出の仕方を選択する。情報抽出部は、
上記抽象化マスタ情報を逐次受信して、受信した抽象化マスタ情報に含まれた上記一定数の要素から、上記
選択した抽出の仕方に基づいて、上記スレーブ情報の要素数に応じた数の要素を抽出する。さらに、スレーブ情報作成部は、上記情報抽出部が抽出した要素が示す値を用いて上記スレーブ情報を作成する。そして、上記スレーブ装置制御部は、作成したスレーブ情報を用いて上記スレーブ装置を制御する。すなわち、上記スレーブ装置制御部は、上記スレーブ装置を、その制御軸数と同数の要素からなるスレーブ情報を用いて制御する。
【0028】
上述の動作によれば、スレーブ情報の要素数(すなわち、スレーブ装置の制御軸数)にかかわらず、上記抽象化マスタ情報から上記スレーブ装置を制御するためのスレーブ情報が逐次作成される。したがって、互いに制御軸数が異なる複数種類のスレーブ装置を制御することができる。
【0029】
【0030】
【0031】
一実施形態の制御システムでは、上記抽出設定記憶部は、
上記互いに要素数が異なるスレーブ情報毎に、上記抽出の仕方をそれぞれリストとして格納していることを特徴とする。
【0032】
この一実施形態の制御システムでは、上記スレーブ装置制御部は、上記抽出設定記憶部が格納しているリストを参照することによって、上記抽象化マスタ情報の上記一定数の要素から、上記スレーブ情報の要素数に応じた数の要素を迅速に抽出できる。
【0033】
一実施形態のスレーブ装置制御部では、上記情報抽出部は、上記抽象化マスタ情報の上記一定数の要素のうち、上記
選択した抽出の仕方に応じて抽出すべき要素を参照して、その要素に上記マスタ情報の要素が割り付けられていないとき、警告を発することを特徴とする。
【0034】
この一実施形態のスレーブ装置制御部では、上記情報抽出部は、上記抽象化マスタ情報の上記一定数の要素のうち、上記
選択した抽出の仕方に応じて抽出すべき要素を参照する。ここで、上記参照した要素(抽出すべき要素)に上記マスタ情報の要素が割り付けられていないとき、何らかの異常が発生したと考えられる。そこで、上記情報抽出部は、上記参照した要素(抽出すべき要素)に上記マスタ情報の要素が割り付けられていないとき、警告を発する。これにより、スレーブ装置制御部および/または制御システムの保守担当者等は、迅速に適切な対策をとることができる。
【0035】
さらに別の局面では、この開示の制御方法は、マスタ装置とスレーブ装置とを組み合わせて制御する制御システムのための制御方法であって、
上記制御システムは、
互いに制御軸数が異なる複数種類のマスタ装置のうち或る制御軸数のマスタ装置を、その制御軸数と同数の要素からなるマスタ情報を用いて制御するマスタ装置制御部と、
互いに制御軸数が異なる複数種類のスレーブ装置のうち或る制御軸数のスレーブ装置を、その制御軸数と同数の要素からなるスレーブ情報を用いて制御するスレーブ装置制御部と
、
互いに要素数が異なるスレーブ情報毎に、一定数の要素からなる抽象化マスタ情報の上記一定数の要素からの上記スレーブ情報の要素数に応じた抽出の仕方を、予め定めて記憶している抽出設定記憶部とを備え、
上記制御方法は、
上記マスタ装置制御部から上記マスタ情報を逐次受信し、
受信したマスタ情報の要素数に応じて予め定められた割り付けの仕方に基づいて、
上記一定数の要素からなる抽象化マスタ情報を作成し、
上記制御すべきスレーブ装置のためのスレーブ情報の要素数に応じて、上記抽出設定記憶部に記憶された抽出の仕方を選択し、
上記抽象化マスタ情報に含まれた上記一定数の要素から、上記
選択した抽出の仕方に基づいて、上記スレーブ情報の要素数に応じた数の要素を抽出し、さらに、
上記抽出した要素が示す値を用いて上記スレーブ情報を作成することを特徴とする。
【0036】
この開示の制御方法によれば、互いに制御軸数が異なる複数種類のマスタ装置と互いに制御軸数が異なる複数種類のスレーブ装置とを組み合わせて制御することができる。
【0037】
さらに別の局面では、この開示のプログラムは、上記制御方法をコンピュータに実行させるためのプログラムである。
【0038】
この開示のプログラムをコンピュータに実行させることによって、上記制御方法を実施することができる。
【発明の効果】
【0039】
以上より明らかなように、この開示の制御システム、制御方法およびプログラムによれば、互いに制御軸数が異なる複数種類のマスタ装置と互いに制御軸数が異なる複数種類のスレーブ装置とを組み合わせて制御することができる。また、この開示のスレーブ装置制御部によれば、互いに制御軸数が異なる複数種類のスレーブ装置を制御することができる。
【発明を実施するための形態】
【0041】
以下、この発明の実施の形態を、図面を参照しながら詳細に説明する。
【0042】
図1は、この発明の一実施形態のロボット制御システム10のブロック構成を示している。このロボット制御システム10は、マスタ装置101とスレーブ装置102とを組み合わせて制御するために工夫されたシステムである。以下では、簡単のため、マスタ装置101とスレーブ装置102に関して、「制御軸」を単に「軸」と呼び、「制御軸数」を単に「軸数」と呼ぶ。
【0043】
マスタ装置101としては、
図2(A)に示すような1軸の装置としてのベルトコンベア、
図2(B)に示すような2軸の装置としてのX−Yテーブル、
図2(C)に示すような6軸ロボットなど、互いに軸数が異なる複数種類の装置のうち或る軸数m(例えばm=1、2、3、4、5または6)の装置が対象となる。同様に、スレーブ装置102としても、互いに軸数が異なる複数種類の装置のうち或る軸数n(例えばn=1、2、3、4、5または6)の装置が対象となる。
【0044】
図1に示すように、このロボット制御システム10は、この例では、1つの筐体(1点鎖線で示す)10A内に搭載されたマスタ装置制御部20、中央制御装置としての中央制御部30、スレーブ装置制御部40、および、ユーザプログラム記憶部50を備えている。
【0045】
ユーザプログラム記憶部50には、マスタ装置101を制御するためのプログラムとしてマスタ装置制御命令51が格納されている。また、ユーザプログラム記憶部50には、スレーブ装置102をマスタ装置101と同期させるためのプログラムとしてスレーブ装置同期命令52が格納されている。
【0046】
マスタ装置制御部20は、マスタ装置制御命令51を制御指示MCCとして受けて、或る軸数mのマスタ装置101を、その軸数mと同数mの要素からなるマスタ情報Mmを用いて制御する。すなわち、マスタ装置制御部20は、マスタ装置101へマスタ情報Mmとしてm軸分の指令値CVmを送信し、マスタ装置101からm軸分の現在値CVm′を受信して、マスタ装置101を制御する。マスタ情報Mmの各要素は、それぞれ、この例では一定周期で逐次値が更新され、それによって、それぞれマスタ装置101の各軸が駆動される。
【0047】
スレーブ装置制御部40は、概略、スレーブ装置同期命令52を制御指示SCCとして受けて、後述の抽象化マスタ情報AM6に基づいて、或る軸数nのスレーブ装置102を制御するためのスレーブ情報Snを作成する(具体的な作成の仕方については後述する。)。スレーブ情報Snは、制御すべきスレーブ装置102の軸数nと同数nの要素、すなわち、n軸分の指令値CVnを含む。スレーブ装置制御部40は、そのスレーブ情報Snを用いてスレーブ装置102を制御する。
【0048】
中央制御部30は、抽象化マスタ情報作成部31をなす割付設定対応表選択部32、軸情報割付部33および倍率適用部34と、割付設定記憶部35とを備えている。
【0049】
抽象化マスタ情報作成部31は、概略、マスタ装置制御部20からマスタ情報Mm(特に、現在値CVm′)を逐次受信して、受信したマスタ情報Mmの要素数mに応じて予め定められた割り付けの仕方に基づいて、一定数の要素、この例では6要素からなる抽象化マスタ情報AM6を作成する。つまり、マスタ情報Mmの要素(要素数mは6以下の様々な自然数であり得る)から、共通に6要素からなる抽象化マスタ情報AM6を作成する。
図8(B)に例示するように、抽象化マスタ情報AM6は、並進の自由度を表す3要素であるX(X軸の位置)、Y(Y軸の位置)およびZ(Z軸の位置)と、回転の自由度を表す3要素であるYaw(ヨー角の値)、Pitch(ピッチ角の値)およびRoll(ロール角の値)とを含む。
【0050】
割付設定記憶部35は、
図3(A)に例示するように、互いに種類が異なるマスタ情報Mm毎に、マスタ情報Mmの要素から抽象化マスタ情報AM6の6要素への割り付けの仕方を、この例ではそれぞれ要素同士の割付設定対応表AST1,AST2,…,AST6(この例では、AST1,AST2,…,AST6を符号ASTで総称する。)として格納している。この例では、マスタ情報Mmの種類とは、要素数mが互いに異なるものだけでなく、その要素の属性(並進と回転)が互いに異なるものを含んでいる。各割付設定対応表ASTは、「抽象化マスタ情報内の要素」欄と、「マスタ装置内の軸番号」欄と、「倍率」欄とを含んでいる。「抽象化マスタ情報内の要素」欄は、抽象化マスタ情報AM6の6要素であるX,Y,Z,Yaw,Pitch,Rollを表している。「マスタ装置内の軸番号」欄は、それらの6要素にそれぞれ対応されるべきマスタ情報Mmの要素を軸番号で表している。「倍率」欄は、上記6要素のうち、マスタ情報Mmの要素が割り付けられる要素毎に、その要素に関する倍率を対応付けて格納している。これは、その要素の値を適切な単位で表し、その要素の値に物理的な意味を持たせるためである。なお、割付設定対応表ASTに、倍率に代えて、または、倍率に加えて、マスタ情報Mmの要素の値に対して加算または減算されるべきオフセット値(一定値)を格納しておいてもよい。
【0051】
例えば、割付設定対応表AST1は、
図4(A)に示すように、マスタ装置101が1軸(軸A0)の並進移動を行うベルトコンベア101−1である場合に、マスタ情報Mmの1要素から抽象化マスタ情報AM6の6要素への割り付けの仕方を定めている。すなわち、
図4(A)中の軸A0を、この例では
図4(B)中に示す抽象化マスタ情報AM6のX軸に対応させている。この理由は、「製造ラインの進行方向はX軸」のような統一ルールを決めることで、製造ライン全体の設計が簡素化されるからである。これにより、
図4(C)に示すように、抽象化マスタ情報AM6の要素Xに、軸A0が割り付けられている。この例では、抽象化マスタ情報AM6の残りの要素Y,Z,Yaw,Pitch,Rollは、値0に固定されている。また、この例では、
図4(D)に示すように、ベルトコンベア101−1の軸A0は100パルスで1mm移動する仕様、つまり、0.01mm/パルスになっている。これに応じて、抽象化マスタ情報AM6の要素Xに、倍率0.01が対応付けて格納されている。
【0052】
また、割付設定対応表AST2は、
図5(A)に示すように、マスタ装置101が2軸(軸A0と軸A1)の並進移動を行うX−Yテーブル101−2である場合に、マスタ情報Mmの2要素から抽象化マスタ情報AM6の6要素への割り付けの仕方を定めている。すなわち、
図5(A)中の軸A0,A1を、この例ではそれぞれ
図5(B)中に示す抽象化マスタ情報AM6のX軸,Y軸に対応させている。これにより、
図5(C)に示すように、抽象化マスタ情報AM6の要素X,Yに、それぞれ軸A0,A1が割り付けられている。この例では、抽象化マスタ情報AM6の残りの要素Z,Yaw,Pitch,Rollは、値0に固定されている。また、この例では、
図5(D)に示すように、X−Yテーブル101−2の軸A0は50パルスで1mm移動する仕様、つまり、0.02mm/パルスになっている。また、X−Yテーブル101−2の軸A1は100パルスで1mm移動する仕様、つまり、0.01mm/パルスになっている。これに応じて、抽象化マスタ情報AM6の要素X,Yに、それぞれ倍率0.02,0.01が対応付けて格納されている。
【0053】
また、割付設定対応表AST6は、
図6(A)に示すように、マスタ装置101が3軸(X,Y,Z)の並進と3軸(Yaw,Pitch,Roll)の回転を行う6軸ロボット101−6である場合に、マスタ情報Mmの6要素から抽象化マスタ情報AM6の6要素への割り付けの仕方を定めている。この例では、
図6(B)に示すように、抽象化マスタ情報AM6の6要素X,Y,Z,Yaw,Pitch,Rollに、それぞれマスタ情報Mmの6軸X,Y,Z,Yaw,Pitch,Rollをそのまま対応させている。抽象化マスタ情報AM6の各要素に関して、倍率は1.0が格納されている。マスタ装置101が6軸X,Y,Z,Yaw,Pitch,Rollを有する場合、この割り付けの仕方が最も簡単になる。
【0054】
上の各例から分かるように、マスタ情報Mmの要素X,Y,Zが並進の自由度を表すとき、その要素X,Y,Zは抽象化マスタ情報AM6のうち並進の自由度を表す3要素X,Y,Zのいずれかに割り付けられる一方、マスタ情報Mmの要素Yaw,Pitch,Rollが回転の自由度を表すとき、その要素Yaw,Pitch,Rollは抽象化マスタ情報AM6のうち回転の自由度を表す3要素Yaw,Pitch,Rollのいずれかに割り付けられる。これにより、割り付けの仕方が、比較的簡単に定められる。
【0055】
図7は、中央制御部30において、マスタ情報Mmの要素から抽象化マスタ情報AM6を作成する一実施形態の制御方法のフローを示している。
【0056】
まず、割付設定対応表選択部32によって、マスタ装置制御部20からマスタ情報Mm(特に、現在値CVm′)を取得して(
図7のステップS101)、マスタ情報Mmの種類に応じた割付設定対応表ASTを選択する(
図7のステップS102)。
【0057】
この例では、マスタ装置101が2軸(軸A0と軸A1)の並進移動を行うX−Yテーブル101−2であるのに応じて、
図8(A)に示すように、割付設定対応表AST2(
図5(C)に示したもの)を選択するものとする。
【0058】
次に、軸情報割付部33によって、
図8(B)に示すような抽象化マスタ情報AM6の6行分のループを開始する(
図7のステップS103)。そして、抽象化マスタ情報AM6の注目行について、
図8(A)に示す割付設定対応表AST2の該当行(注目行と同じ番号の行)を参照して(
図7のステップS104)、マスタ装置101の軸が割り付けられているか否かを判断する(
図7のステップS105)。ここで、マスタ装置101の軸が割り付けられていれば(
図7のステップS105でYES)、マスタ情報Mmから対応する要素の値を取得する(
図7のステップS106)。さらに、倍率適用部34によって、その要素の値に、割付設定対応表AST2の該当行に設定されている倍率を乗算する(
図7のステップS107)。続いて、その乗算後の値を、抽象化マスタ情報AM6の注目行にセットする(
図7のステップS109)。
【0059】
例えば、抽象化マスタ情報AM6の注目行が第1行であるとき、
図8(A)に示す割付設定対応表の該当行(第1行)を参照すると、マスタ装置101の軸A0が割り付けられている。そこで、マスタ情報Mmから対応する要素の値(軸A0の現在値)を取得する。さらに、その要素の値に、割付設定対応表AST2の該当行(第1行)に設定されている倍率(この例では、0.02)を乗算する。これにより、その要素の値に物理的な意味を持たせることができる。続いて、抽象化マスタ情報AM6の注目行(第1行)に、その乗算後の値(この例では、
図8(B)中に「○○○」で表されている。)をセットする。
【0060】
また、抽象化マスタ情報AM6の注目行が第2行であるとき、
図8(A)に示す割付設定対応表の該当行(第2行)を参照すると、マスタ装置101の軸A1が割り付けられている。そこで、マスタ情報Mmから対応する要素の値(軸A1の現在値)を取得する。さらに、その要素の値に、割付設定対応表AST2の該当行(第2行)に設定されている倍率(この例では、0.01)を乗算する。これにより、その要素の値に物理的な意味を持たせることができる。続いて、抽象化マスタ情報AM6の注目行(第2行)に、その乗算後の値(この例では、
図8(B)中に「△△△」で表されている。)をセットする。
【0061】
なお、予め割付設定対応表ASTに、倍率に代えて、または、倍率に加えて、オフセット値(一定値)を格納しておき、マスタ情報Mmの要素の値に対してそのオフセット値を加算または減算してもよい。
【0062】
一方、
図7のステップS105で、マスタ装置101の軸が割り付けられていなければ(
図7のステップS105でNO)、軸情報割付部33によって、割付設定対応表AST2の該当行に設定されている固定値を取得する(
図7のステップS108)。続いて、抽象化マスタ情報AM6の注目行に、その固定値をセットする(
図7のステップS109)。
【0063】
例えば、抽象化マスタ情報AM6の注目行が第3行であるとき、
図8(A)に示す割付設定対応表の該当行(第3行)を参照すると、マスタ装置101の軸が割り付けられていない。そこで、割付設定対応表AST2の該当行(第3行)に設定されている固定値「0」を取得する。続いて、抽象化マスタ情報AM6の注目行(第3行)に、その固定値「0」をセットする。
【0064】
このようにして、抽象化マスタ情報AM6の6行分のループを終了すると(
図7のステップS110)、
図8(B)に示すような抽象化マスタ情報AM6が作成される。
【0065】
この例では、抽象化マスタ情報AM6の6要素X,Y,Z,Yaw,Pitch,Rollの値は、それぞれ、「○○○」、「△△△」、「0」、「0」、「0」、「0」になっている。
【0066】
以下では、固定値「0」と区別するため、「○○○」、「△△△」のようなマスタ情報Mmに由来して取得された値(倍率が乗算された値、オフセット値が加算または減算された値などを含む。)を「取得値」と呼ぶ。なお、抽象化マスタ情報AM6の各行に、取得値がセットされているか否かを表すフラグを付しておいてもよい。
【0067】
上の例では、マスタ装置101が2軸(軸A0と軸A1)の並進移動を行うX−Yテーブル101−2であるのに応じて、割付設定対応表AST2(
図5(C)に示したもの)を選択するものとした。しかしながら、これに限られるものではない。マスタ装置101が1軸(軸A0)の並進移動を行うベルトコンベア101−1であるのに応じて、
図4(C)に示した割付設定対応表AST1を選択してもよい。また、マスタ装置101が3軸(X,Y,Z)の並進と3軸(Yaw,Pitch,Roll)の回転を行う6軸ロボット101−6であるのに応じて、
図6(B)に示した割付設定対応表AST6を選択してもよい。いずれの場合も、割付設定対応表ASTに基づいて、6要素からなる抽象化マスタ情報AM6を作成することができる。
【0068】
このようにして、中央制御部30(抽象化マスタ情報作成部31)は、マスタ情報Mmの要素(要素数mは6以下の様々な自然数であり得る)から、共通に6要素からなる抽象化マスタ情報AM6を作成する。抽象化マスタ情報作成部31は、割付設定対応表ASTを参照することによって、マスタ情報Mmの要素から、抽象化マスタ情報AM6を迅速に作成できる。中央制御部30は、作成した抽象化マスタ情報AM6を、スレーブ情報Snの作成のために
図1中に示すスレーブ装置制御部40へ提供する。
【0069】
図1中に示すように、スレーブ装置制御部40は、情報抽出部41と、スレーブ情報作成部42をなす軌跡更新部43および指令値計算部44と、抽出設定記憶部45と、抽出設定リスト選択部46とを備えている。
【0070】
情報抽出部41は、概略、抽象化マスタ情報作成部31から抽象化マスタ情報AM6を逐次受信して、受信した抽象化マスタ情報AM6に含まれた6要素から、後述の予め定められた抽出の仕方に基づいて、このスレーブ装置制御部40が制御すべきスレーブ装置102のためのスレーブ情報Snの要素数nに応じた数の要素を抽出する。
【0071】
抽出設定記憶部45は、
図3(B)に例示するように、互いに種類が異なるスレーブ情報Sn毎に、抽象化マスタ情報AM6の6要素からの、スレーブ情報Snの要素数nに応じた抽出の仕方を、それぞれ抽出設定リストEXL1,EXL2,…,EXL6(この例では、EXL1,EXL2,…,EXL6を符号EXLで総称する。)として格納している。この例では、スレーブ情報Snの種類とは、要素数nが互いに異なるものだけでなく、その要素の属性(並進と回転)が互いに異なるものを含んでいる。各抽出設定リストEXLは、「抽象化マスタ情報内の要素」欄と、「スレーブ装置で使用」欄と、「警告」欄とを含んでいる。「抽象化マスタ情報内の要素」欄は、抽象化マスタ情報AM6の6要素であるX,Y,Z,Yaw,Pitch,Rollを表している。「スレーブ装置で使用」欄は、それらの6要素がそれぞれ抽出すべき要素であるか否か、つまり、(このスレーブ装置制御部40が制御すべき)スレーブ装置102で使用すべきか否かを、「あり」または「なし」で表している。「警告」欄は、抽象化マスタ情報AM6の6要素のうち、上記「スレーブ装置で使用」欄が「あり」の要素について、何らかの異常によって、抽象化マスタ情報AM6のその要素(抽出すべき要素)にマスタ情報Mm由来の要素(取得値)が割り付けられていないとき、警告を発すべきか否かを、「あり」または「なし」で表している。「警告」欄の符号「−」は、警告を発すべきか否かが定められていないことを表している。
【0072】
例えば、抽出設定リストEXL1は、
図10に示すように、制御すべきスレーブ装置102が1軸のスレーブ装置102−1(例えば、1軸の電子カム若しくは電子ギア、または、
図2(A)に示したようなベルトコンベア)である場合のものであり、抽象化マスタ情報AM6の6要素であるX,Y,Z,Yaw,Pitch,Rollに対応する「スレーブ装置で使用」欄の設定は、それぞれ「あり」、「なし」、「なし」、「なし」、「なし」、「なし」になっている。また、「警告」欄の設定は、それぞれ「なし」、「−」、「−」、「−」、「−」、「−」になっている。
【0073】
また、抽出設定リストEXL2は、
図11に示すように、制御すべきスレーブ装置102が2軸のスレーブ装置102−2(例えば、
図2(B)に示したようなX−Yテーブル)である場合のものであり、抽象化マスタ情報AM6の6要素であるX,Y,Z,Yaw,Pitch,Rollに対応する「スレーブ装置で使用」欄の設定は、それぞれ「あり」、「あり」、「なし」、「なし」、「なし」、「なし」になっている。また、「警告」欄の設定は、それぞれ「なし」、「あり」、「−」、「−」、「−」、「−」になっている。
【0074】
また、抽出設定リストEXL6は、
図12に示すように、制御すべきスレーブ装置102が6軸のスレーブ装置102−6(例えば、
図2(C)に示したような6軸ロボット)である場合のものであり、抽象化マスタ情報AM6の6要素であるX,Y,Z,Yaw,Pitch,Rollに対応する「スレーブ装置で使用」欄の設定は、それぞれ「あり」、「あり」、「あり」、「あり」、「あり」、「あり」になっている。また、「警告」欄の設定は、それぞれ「あり」、「あり」、「あり」、「なし」、「なし」、「なし」になっている。
【0075】
図9は、スレーブ装置制御部40において、抽象化マスタ情報AM6からスレーブ情報Snを作成する一実施形態の制御方法のフローを示している。
【0076】
まず、抽出設定リスト選択部46によって、抽出設定記憶部45が格納している抽出設定リストEXL1,EXL2,…,EXL6のうち、このスレーブ装置制御部40が制御すべきスレーブ装置102のためのスレーブ情報Snの種類に応じた抽出設定リストEXLを選択する(
図9のステップS201)。
【0077】
例えば、制御すべきスレーブ装置102が1軸のスレーブ装置102−1(例えば、1軸の電子カム若しくは電子ギア、または、
図2(A)に示したようなベルトコンベア)である場合は、
図10中に示した抽出設定リストEXL1が選択される。また、制御すべきスレーブ装置102が2軸のスレーブ装置102−2(例えば、
図2(B)に示したようなX−Yテーブル)である場合は、
図11中に示した抽出設定リストEXL2が選択される。また、制御すべきスレーブ装置102が6軸のスレーブ装置102−6(例えば、
図2(C)に示したような6軸ロボット)である場合は、
図12中に示した抽出設定リストEXL6が選択される。
【0078】
次に、情報抽出部41によって、中央制御部30(抽象化マスタ情報作成部31)から抽象化マスタ情報AM6を受信して取得する(
図9のステップS202)。
【0079】
次に、情報抽出部41によって、
図8(B)に示すような抽象化マスタ情報AM6の6行分のループを開始する(
図9のステップS203)。そして、抽象化マスタ情報AM6における注目行について、抽出設定リストEXLの該当行(注目行と同じ番号の行)の「スレーブ装置で使用」欄を参照して、スレーブ装置102で使用すべき要素であるか否かを判断する(ステップS204)。ここで、スレーブ装置102で使用すべき要素であれば(ステップS204でYES)、さらに、抽象化マスタ情報AM6の注目行にマスタ情報Mm由来の取得値がセットされているか否かを判断する(ステップS205)。この判断は、例えば、抽象化マスタ情報AM6の注目行の値が取得値と固定値とのいずれであるかを識別することによって行う。なお、予め抽象化マスタ情報AM6の各行に取得値がセットされているか否かを表すフラグを付しておき、この判断の便宜を図ってもよい。ここで、抽象化マスタ情報AM6の注目行に取得値がセットされていれば(ステップS205でYES)、その注目行にセットされている取得値を必要情報として抽出する(ステップS206)。一方、抽象化マスタ情報AM6の注目行に取得値がセットされていなければ(ステップS205でNO)、抽出設定リストEXLの該当行の「警告」欄を参照して、警告を発すべきか否かを判断する(ステップS207)。ここで、警告を発すべきであれば(ステップS207でYES)、情報抽出部41は警告を発する(ステップS208)。警告を発する仕方としては、例えば、スレーブ装置102に設けられたLED(発光ダイオード)ランプを点滅させる、スレーブ装置102の処理を異常として停止させる、イベント履歴に残すなど、様々な仕方がある。これにより、中央制御部30、スレーブ装置制御部40および/またはロボット制御システム10の保守担当者等は、迅速に適切な対策をとることができる。なお、抽出設定リストEXLの該当行の「警告」欄を参照した結果、警告を発すべきでなければ(ステップS207でNO)、情報抽出部41は警告を発しない。その後、抽象化マスタ情報AM6における注目行を次の行に進める。このようにして、抽象化マスタ情報AM6の6行分のループを終了する(ステップS209)。
【0080】
すると、正常に終了した場合、例えば、
図10中に示した抽出設定リストEXL1を選択した例では、同図中に示すように、抽象化マスタ情報AM6の1つの要素Xに対応して、1つの要素からなる抽出情報En1が得られる。その要素の取得値は「X軸取得値」と表されている。また、
図11中に示した抽出設定リストEXL2を選択した例では、同図中に示すように、抽象化マスタ情報AM6の2つの要素X,Yに対応して、2つの要素からなる抽出情報En2が得られる。それらの要素の取得値は、それぞれ「X軸取得値」、「Y軸取得値」と表されている。また、
図12中に示した抽出設定リストEXL6を選択した例では、同図中に示すように、抽象化マスタ情報AM6の6つの要素X,Y,Z,Yaw,Pitch,Rollに対応して、6つの要素からなる抽出情報En6が得られる。それらの要素の取得値は、それぞれ「X軸取得値」、「Y軸取得値」、「Z軸取得値」、「Yaw軸取得値」、「Pitch軸取得値」、「Roll軸取得値」と表されている。
【0081】
このように、それぞれスレーブ情報Snの要素数nに応じた数の要素からなる抽出情報En1、En2、またはEn6(これらを抽出情報Enと総称する。)が得られる。つまり、スレーブ装置制御部40は、抽出設定記憶部45が格納している抽出設定リストEXLを参照することによって、抽象化マスタ情報AM6の6要素から、スレーブ情報Snの要素数nに応じた数の要素を迅速に抽出できる。
【0082】
この後、
図9のステップS210で、スレーブ情報作成部42をなす軌跡更新部43によって、抽出情報En(抽出した要素が示す値)を用いて、スレーブ装置102のための軌跡TR(スレーブ情報Snの要素数nに応じた数の要素からなる)を更新して求める。さらに、
図9のステップS211で、その軌跡TRに応じた指令値(スレーブ情報Snの要素数nに応じた数の要素からなる)を計算して出力する。このようにして、スレーブ情報作成部42は、この例ではマスタ情報Mmの更新に同期した一定周期で逐次、スレーブ情報Snを作成する。
【0083】
例えば、1要素からなる抽出情報En1の「X軸取得値」である変位T(現在位置をxとする。)に応じて、1軸のスレーブ装置102−1である電子カムの更新された指令値(位置)yを算出するものとする。カムプロファイル1周分のマスタ移動量をTとすると、カムの位相p=xmodTという関係がある(xmodTは、xをTで割り算した余りを意味している。)。予め、カム曲線を表す関数y=f(p)が設定されているものとする。その場合、スレーブ装置102−1の更新された指令値(位置)yを、y=f(p)によって算出する。算出に際しては、例えば
図13(A)に示すような、位相pと変位yとの対応関係を表すカムテーブルを用意し、指令値(位置)yを算出してもよい。このカムテーブルの行間に相当する指令値(位置)yは、線形補間で算出され得る。または、指令値(位置)yは、
図13(B)に示すような、カムの1周分にわたって定義されたカムプロファイル曲線y=f(p)を用いて算出してもよい。
【0084】
また、マスタ装置101が6軸ロボットである場合において、6要素からなる抽出情報En6に応じて、6軸のスレーブ装置102−6の更新された軌跡を指令値(位置と向き)として算出するものとする。ここで、抽出情報En6(抽象化マスタ情報AM6と同じ)の位置と向きを基準として、一定の相対的な位置と向きを保つようにスレーブ装置102−6を制御するものとする。この場合、
図14(A)に示すように、予め、その一定の相対的な位置と向きを行列Rで表現して設定しておく。ここで、
図14(B)に示すように、一定周期で逐次更新される抽出情報En6(抽象化マスタ情報AM6と同じ)を行列Mで表現する。すると、
図14(C)に示すように、スレーブ装置102−6のための指令値(位置と向き)は、行列S=M・Rとして、つまり、行列Mと行列Rとの積として算出される。これにより、スレーブ装置102−6は、マスタ装置101に対して、3次元空間での回転を含む追従を行うことができる。
【0085】
このようにして、スレーブ装置制御部40は、スレーブ情報Snの要素数nに応じた数の要素からなるスレーブ情報Snを作成し、作成したスレーブ情報Snを用いてスレーブ装置102を制御する。すなわち、スレーブ装置制御部40は、スレーブ装置102を、その軸数nと同数nの要素からなるスレーブ情報Snを用いて制御する。
【0086】
上述の動作によれば、マスタ情報Mmの要素数m(すなわち、マスタ装置101の軸数m)にかかわらず、6要素からなる抽象化マスタ情報AM6が逐次作成される。また、スレーブ情報Snの要素数n(すなわち、スレーブ装置102の軸数n)にかかわらず、抽象化マスタ情報AM6からスレーブ装置102を制御するためのスレーブ情報Snが逐次作成される。したがって、互いに軸数mが異なる複数種類のマスタ装置101と互いに軸数nが異なる複数種類のスレーブ装置102とを組み合わせて制御することができる。
【0087】
例えば、或る軸数mのマスタ装置101が別の軸数のマスタ装置に切り替えられた場合、および/または、或る軸数nのスレーブ装置102が別の軸数のスレーブ装置に切り替えられた場合に、このロボット制御システム10によれば、それらの切り替えられたマスタ装置および/またはスレーブ装置を組み合わせて直ちに制御することができる。
【0088】
このロボット制御システム10は、実質的にコンピュータ装置(例えば、プログラマブルロジックコントローラ(programmable logic controller;PLC)など)によって構成され得る。例えば、マスタ装置制御部20、中央制御部30の抽象化マスタ情報作成部31、スレーブ装置制御部40の情報抽出部41、スレーブ情報作成部42および抽出設定リスト選択部46は、プログラムに従って動作するプロセッサによって構成される。また、割付設定記憶部35、抽出設定記憶部45およびユーザプログラム記憶部50は、不揮発性半導体メモリなどの記憶装置によって構成される。したがって、
図7によって説明した中央制御部30における制御方法、
図9によって説明したスレーブ装置制御部40における制御方法は、それぞれ、コンピュータに実行させるためのプログラムとして構成されるのが望ましい。さらに、
図7によって説明した中央制御部30における制御方法と、
図9によって説明したスレーブ装置制御部40における制御方法とは、連続した一つのプログラムとして構成されてもよい。また、それらのプログラムは、それぞれコンピュータ読み取り可能な非一時的(non-transitory)な記録媒体に記録されるのが望ましい。その場合、記録媒体に記録されたそれらのプログラムをコンピュータ装置に読み取らせ、実行させることによって、上述の制御方法を実施することができる。
【0089】
上述の実施形態では、
図1に示したように、ロボット制御システム10をなすマスタ装置制御部20、中央制御装置としての中央制御部30、スレーブ装置制御部40、および、ユーザプログラム記憶部50が1つの筐体(1点鎖線で示す)10Aに搭載されているものとした。しかしながら、これに限られるものではない。
【0090】
例えば、
図15に示すように、ロボット制御システム10をなすマスタ装置制御部20と中央制御部30がともに一つの筐体11Aに収容され、スレーブ装置制御部40が別の筐体11Bに収容されていてもよい。この例では、筐体11Aにユーザプログラム記憶部50Aが設けられ、マスタ装置制御命令51とスレーブ装置同期命令52を格納している。筐体11A,11B間のスレーブ装置同期命令52、抽象化マスタ情報AM6の送受信は、それぞれの筐体11A,11Bに搭載された図示しない通信部によって例えばEtherCAT(登録商標)(Ethernet for Control Automation Technology)を介して行われる。この
図15の態様は、システムの規模を分散させるのに適する。特に、マスタ装置101の軸数mがスレーブ装置102の軸数nよりも小さい場合に適する。
【0091】
また、
図16に示すように、ロボット制御システム10をなすマスタ装置制御部20が一つの筐体12Aに収容され、中央制御部30とスレーブ装置制御部40がともに別の筐体12Bに収容されていてもよい。この例では、筐体12Bにユーザプログラム記憶部50Bが設けられ、マスタ装置制御命令51とスレーブ装置同期命令52を格納している。筐体12A,12B間のマスタ装置制御命令51、マスタ情報Mmの送受信は、それぞれの筐体12A,12Bに搭載された図示しない通信部によって行われる。この
図16の態様は、システムの規模を分散させるのに適する。特に、マスタ装置101の軸数mがスレーブ装置102の軸数nよりも大きい場合に適する。
【0092】
また、
図17に示すように、ロボット制御システム10をなすマスタ装置制御部20、中央制御部30、スレーブ装置制御部40がそれぞれ互いに別の筐体13A,13C,13Bに収容されていてもよい。この例では、筐体13Cにユーザプログラム記憶部50Cが設けられ、マスタ装置制御命令51とスレーブ装置同期命令52を格納している。筐体13A,13C間のマスタ装置制御命令51、マスタ情報Mmの送受信、および、筐体13C,13B間のスレーブ装置同期命令52、抽象化マスタ情報AM6の送受信は、それぞれの筐体13A,13C,13Bに搭載された図示しない通信部によって行われる。この
図17の態様は、さらにシステムの規模を分散させるのに適する。
【0093】
なお、上の例では、抽象化マスタ情報AM6は代表的に6要素からなるものとしたが、これに限られるものではない。例えば4軸の水平多関節ロボットを主に制御する場合、抽象化マスタ情報が4要素(X,Y,Z,Yaw)からなっていてもよい。
【0094】
また、この発明の制御システムは、いわゆるロボット(例えば
図2(C)に示したような6軸ロボット)を制御対象として含む場合に限られず、マスタ装置101が例えば
図2(A)に示したようなベルトコンベアであり、かつ、スレーブ装置102が例えば
図2(B)に示したようなX−Yテーブルである場合にも、適用され得る。
【0095】
以上の実施形態は例示であり、この発明の範囲から離れることなく様々な変形が可能である。上述した複数の実施の形態は、それぞれ単独で成立し得るものであるが、実施の形態同士の組みあわせも可能である。また、異なる実施の形態の中の種々の特徴も、それぞれ単独で成立し得るものであるが、異なる実施の形態の中の特徴同士の組みあわせも可能である。