(57)【要約】【課題】記憶領域を増大させることなく制御対象となる軸の組合せを変更することができる技術を提供する。【解決手段】制御装置１００は、特定プログラムにおけるファンクションブロック７００やファンクションブロック７５０を実行することで、指令値の演算対象である１つ以上の軸のそれぞれに対応する出力先を特定するための対応情報１４５に基づいて、演算された指令値の出力先を特定することができ、さらに、変更プログラムにおけるファンクションブロック６００やファンクションブロック６５０を実行することで、所定条件が成立したときに、対応情報１４５において、演算対象である１つ以上の軸のそれぞれに対応する出力先を変更する。【選択図】図２
2020013317.tif 000002
【特許請求の範囲】
【請求項１】
複数のモータを制御する制御装置であって、
座標系を構成する複数の軸のうちの少なくとも１つ以上の軸について指令値を演算する演算部と、
前記複数のモータのそれぞれに対応する出力先のうち、前記演算部における演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を特定するための対応情報を記憶する記憶部と、
前記記憶部によって記憶された前記対応情報に基づいて、前記演算部によって演算された前記指令値の前記出力先を特定する特定部と、
所定条件が成立したときに、前記記憶部によって記憶された前記対応情報において、前記演算部における演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を変更する変更部とを備える、制御装置。
【請求項２】
前記演算部、前記特定部、および前記変更部は、ファンクションブロックの形で規定される制御命令に従って動作する、請求項１に記載の制御装置。
【請求項３】
前記変更部は、前記特定部によって前記対応情報に基づいて前記出力先が特定されている間、当該対応情報を変更しない、請求項１または請求項２に記載の制御装置。
【請求項４】
前記対応情報に基づいて特定することができない前記出力先に対応する前記軸について前記演算部によって前記指令値が演算された場合、異常であると判断する第１異常判断部をさらに備える、請求項１〜請求項３のいずれか１項に記載の制御装置。
【請求項５】
前記対応情報において、一の前記出力先に対して前記複数の軸が対応する場合、異常であると判断する第２異常判断部をさらに備える、請求項１〜請求項４のいずれか１項に記載の制御装置。
【請求項６】
前記所定条件は、前記演算部、前記特定部、および前記変更部に対する制御命令の実行中に所定のイベントが発生したとき、または外部からの指令が入力されたときに成立する、請求項１〜請求項５のいずれか１項に記載の制御装置。
【請求項７】
複数のモータを制御する制御装置における制御方法であって、
座標系を構成する複数の軸のうちの少なくとも１つ以上の軸について指令値を演算するステップと、
前記複数のモータのそれぞれに対応する出力先のうち、前記演算するステップにおける演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を特定するための対応情報を記憶するステップと、
前記記憶するステップによって記憶された前記対応情報に基づいて、前記演算するステップによって演算された前記指令値の前記出力先を特定するステップと、
所定条件が成立したときに、前記記憶するステップによって記憶された前記対応情報において、前記演算するステップにおける演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を変更するステップとを含む、制御方法。
【請求項８】
複数のモータを制御する制御装置が実行する制御プログラムであって、
座標系を構成する複数の軸のうちの少なくとも１つ以上の軸について指令値を演算するステップと、
前記複数のモータのそれぞれに対応する出力先のうち、前記演算するステップにおける演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を特定するための対応情報に基づいて、前記演算するステップによって演算された前記指令値の前記出力先を特定するステップと、
所定条件が成立したときに、前記対応情報において、前記演算するステップにおける演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を変更するステップとを含む、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のモータを制御する制御装置、当該制御装置における制御方法、および当該制御装置が実行する制御プログラムに関する。
【背景技術】
【０００２】
生産現場においては、様々なＦＡ（Factory Automation）技術が広く普及している。このようなＦＡシステムは、ＰＬＣ（Programmable Logic Controller：プログラマブルロジックコントローラ）といった制御装置だけでなく、ＣＮＣ（Computer Numerical Control：コンピュータ数値制御）およびＣＮＣに従う工作機械（以下、「ＣＮＣ工作機械」とも称する。）なども含む。ＣＮＣ工作機械においては、各々が「軸」と称される機械構成を定義して、当該軸に対応するモータの制御を行うことがある。
【０００３】
たとえば、特許第３６６４９１０号公報（特許文献１）には、複数のロボットを制御する制御装置が開示されており、複数のロボットのそれぞれは、互いに異なる軸の組合せを有するように構成されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３６６４９１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の特許第３６６４９１０号公報に開示される制御装置のように、複数のロボットが互いに異なる軸の組合せを有するように構成すれば、工程の変化などによる状況変化に応じて、適切な軸の組合せごとにモータの制御を行うことが可能となる。たとえば、工程の変化に応じて使用する軸の組合せが変わると、変化後の軸に対応する出力先（モータに接続されたドライバのアドレスなど）に指令値が出力される。しかし、このように状況変化に応じて軸の組合せが変わることを考えると、制御対象となる全ての軸の組合せについて対応する出力先を特定するための情報を予め準備して記憶しておく必要がある。このため、制御対象となる軸の組合せの数が多くなればなるほど、記憶領域も増大する。
【０００６】
本発明は、記憶領域を増大させることなく制御対象となる軸の組合せを変更することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本開示の一例に従えば、複数のモータを制御する制御装置が提供される。制御装置は、座標系を構成する複数の軸のうちの少なくとも１つ以上の軸について指令値を演算する演算部と、複数のモータのそれぞれに対応する出力先のうち、演算部における演算対象である１つ以上の軸のそれぞれに対応する出力先を特定するための対応情報を記憶する記憶部と、記憶部によって記憶された対応情報に基づいて、演算部によって演算された指令値の出力先を特定する特定部と、所定条件が成立したときに、記憶部によって記憶された対応情報において、演算部における演算対象である１つ以上の軸のそれぞれに対応する出力先を変更する変更部とを備える。
【０００８】
この開示によれば、指令値の演算対象である１つ以上の軸のそれぞれに対応する出力先を特定するための対応情報に基づいて、演算された指令値の出力先を特定することができ、さらに、所定条件が成立したときに、対応情報において、演算対象である１つ以上の軸のそれぞれに対応する出力先が変更される。このため、制御対象となる全ての軸の組合せについて対応する出力先を特定するための対応情報を予め準備して記憶しておく必要がなく、所定条件が成立したときに、対応情報において、演算対象である１つ以上の軸のそれぞれに対応する出力先を動的に変更するだけで、出力先を適切に特定することができる。これにより、記憶領域を増大させることなく制御対象となる軸の組合せを変更することができる。
【０００９】
上述の開示において、演算部、特定部、および変更部は、ファンクションブロックの形で規定される制御命令に従って動作する。
【００１０】
この開示によれば、再利用性のある制御命令に従って、指令値の演算、出力先の特定、および対応情報の内容変更を実現することができる。
【００１１】
上述の開示において、変更部は、特定部によって対応情報に基づいて出力先が特定されている間、当該対応情報を変更しない。
【００１２】
この開示によれば、出力先の特定のために対応情報が使用されている間は、対応情報の内容が変更されないため、対応情報の内容変更が出力先の特定に影響を与えてしまうことがない。
【００１３】
上述の開示において、制御装置は、対応情報に基づいて特定することができない出力先に対応する軸について演算部によって指令値が演算された場合、異常であると判断する第１異常判断部をさらに備える。
【００１４】
この開示によれば、対応情報に基づいて特定することができない出力先に対応する軸について指令値が演算された場合に、異常であると判断することができる。
【００１５】
上述の開示において、制御装置は、対応情報において、一の出力先に対して複数の軸が対応する場合、異常であると判断する第２異常判断部をさらに備える。
【００１６】
この開示によれば、対応情報において、一の出力先に対して複数の軸が対応する場合に、異常であると判断することができる。
【００１７】
上述の開示において、所定条件は、演算部、特定部、および変更部に対する制御命令の実行中に所定のイベントが発生したとき、または外部からの指令が入力されたときに成立する。
【００１８】
この開示によれば、制御命令の実行中に所定のイベントが発生したとき、または外部からの指令が入力されたときに、対応情報の内容を動的に変更することができる。
【００１９】
本開示の別の一例に従えば、複数のモータを制御する制御装置における制御方法が提供される。制御方法は、座標系を構成する複数の軸のうちの少なくとも１つ以上の軸について指令値を演算するステップと、複数のモータのそれぞれに対応する出力先のうち、演算するステップにおける演算対象である１つ以上の軸のそれぞれに対応する出力先を特定するための対応情報を記憶するステップと、記憶するステップによって記憶された対応情報に基づいて、演算するステップによって演算された指令値の出力先を特定するステップと、所定条件が成立したときに、記憶するステップによって記憶された対応情報において、演算するステップにおける演算対象である１つ以上の軸のそれぞれに対応する出力先を変更するステップとを含む。
【００２０】
この開示によれば、指令値の演算対象である１つ以上の軸のそれぞれに対応する出力先を特定するための対応情報に基づいて、演算された指令値の出力先を特定することができ、さらに、所定条件が成立したときに、対応情報において、演算対象である１つ以上の軸のそれぞれに対応する出力先が変更される。このため、制御対象となる全ての軸の組合せについて対応する出力先を特定するための対応情報を予め準備して記憶しておく必要がなく、所定条件が成立したときに、対応情報において、演算対象である１つ以上の軸のそれぞれに対応する出力先を動的に変更するだけで、出力先を適切に特定することができる。これにより、記憶領域を増大させることなく制御対象となる軸の組合せを変更することができる。
【００２１】
本開示の別の一例に従えば、複数のモータを制御する制御装置が実行する制御プログラムが提供される。制御プログラムは、座標系を構成する複数の軸のうちの少なくとも１つ以上の軸について指令値を演算するステップと、複数のモータのそれぞれに対応する出力先のうち、演算するステップにおける演算対象である１つ以上の軸のそれぞれに対応する出力先を特定するための対応情報に基づいて、演算するステップによって演算された指令値の出力先を特定するステップと、所定条件が成立したときに、対応情報において、演算するステップにおける演算対象である１つ以上の軸のそれぞれに対応する出力先を変更するステップとを含む。
【００２２】
この開示によれば、指令値の演算対象である１つ以上の軸のそれぞれに対応する出力先を特定するための対応情報に基づいて、演算された指令値の出力先を特定することができ、さらに、所定条件が成立したときに、対応情報において、演算対象である１つ以上の軸のそれぞれに対応する出力先が変更される。このため、制御対象となる全ての軸の組合せについて対応する出力先を特定するための対応情報を予め準備して記憶しておく必要がなく、所定条件が成立したときに、対応情報において、演算対象である１つ以上の軸のそれぞれに対応する出力先を動的に変更するだけで、出力先を適切に特定することができる。これにより、記憶領域を増大させることなく制御対象となる軸の組合せを変更することができる。
【発明の効果】
【００２３】
本発明によれば、記憶領域を増大させることなく制御対象となる軸の組合せを変更することができる。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態に係る制御装置の第１工程（準備動作）における適用例を説明するための模式図である。
【図２】本実施の形態に係る制御装置の対応関係変更における適用例を説明するための模式図である。
【図３】本実施の形態に係る制御装置の第２工程（通常動作）における適用例を説明するための模式図である。
【図４】本実施の形態に係る制御システムの全体構成例を説明するための模式図である。
【図５】本実施の形態に係る制御装置のハードウェア構成例を説明するためのブロック図である。
【図６】本実施の形態に係る制御装置が実行する制御プログラムを規定するファンクションブロックを説明するための図である。
【図７】軸グループ構造体を説明するための図である。
【図８】対応情報が使用中の場合における対応情報の内容変更について説明するための図である。
【図９】本実施の形態に係る制御装置が実行する第１異常処理を説明するための模式図である。
【図１０】本実施の形態に係る制御装置が実行する第２異常処理を説明するための模式図である。
【発明を実施するための形態】
【００２５】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２６】
＜Ａ．適用例＞
まず、図１〜図３を参照して、本発明が適用される場面の一例について説明する。図１は、本実施の形態に係る制御装置１００の第１工程（準備動作）における適用例を説明するための模式図である。図２は、本実施の形態に係る制御装置１００の対応関係変更における適用例を説明するための模式図である。図３は、本実施の形態に係る制御装置１００の第２工程（通常動作）における適用例を説明するための模式図である。
【００２７】
図１に示されるように、本実施の形態に係る制御装置１００は、複数のモータを制御可能に構成されている。図１の適用例においては、モータの一例として、サーボモータ５２２＿１，５２２＿２，５２２＿３，５２２＿４，５２２＿５（以下、まとめて「サーボモータ５２２」とも称する。）が制御装置１００によって制御される。サーボモータ５２２＿１，５２２＿２，５２２＿３，５２２＿４，５２２＿５のそれぞれは、制御装置１００とフィールドネットワーク２を介して接続されるドライバ５２０＿１，５２０＿２，５２０＿３，５２０＿４，５２０＿５（以下、まとめて「ドライバ５２０」とも称する。）のそれぞれによって駆動される。制御装置１００は、フィールドネットワーク２を介して各ドライバ５２０に指令値を出力することで、各サーボモータ５２２を制御する。なお、説明の都合上、ドライバ５２０＿１は「ドライバ１」、ドライバ５２０＿２は「ドライバ２」、ドライバ５２０＿３は「ドライバ３」、ドライバ５２０＿４は「ドライバ４」、ドライバ５２０＿５は「搬送用ドライバ」と称することがある。
【００２８】
本発明の「モータ」は、サーボモータに限らず、同期モータおよび誘導モータを含む任意の駆動装置を包含する概念である。また、本発明の「モータ」は、たとえば、リニアモータのような、回転運動ではなく直線運動するような装置も含み得る。
【００２９】
産業用ロボットやＣＮＣ工作機械においては、ワークに対して何らかのアクションを行う場合に、複数のモータを連係させて駆動する必要がある。すなわち、複数のモータに対してそれぞれの指令値を同期して与える必要がある。本明細書において、それぞれの指令値を同期して与える必要がある複数のモータを「グループ」と称する。
【００３０】
図１に示す適用例においては、制御装置１００から各サーボドライバ５２０に対して、フィールドネットワーク２を介して、対応する指令値が出力（送信，通信）されるが、これに限らず、制御装置１００と各サーボドライバ５２０とを配線接続して、指令値を示す信号を直接伝送するようにしてもよい。
【００３１】
任意のグループに属する１つ以上のモータのそれぞれに対応する軸により規定される空間を「座標系」とも称する。たとえば、あるグループに属する複数のモータがＣＮＣ工作機械をＸ軸，Ｙ軸，Ｚ軸のそれぞれに沿って動作させるような場合、当該グループに属するモータは、「Ｘ−Ｙ−Ｚ座標系」に関連付けられる。このような各モータの軸方向に着目して、以下の説明においては、各グループを「軸グループ」と称することもある。
【００３２】
また、状況によっては、同じ軸方向において複数の軸が定義され得る。たとえば、本実施の形態においては、Ｘ軸方向について、互いの回転方向が異なる軸として、Ｘ’軸およびＸ”軸が定義され、それぞれの軸が異なるモータによって駆動される。
【００３３】
たとえば、後述する図４には、ＣＮＣ工作機械５４０が示されている。ＣＮＣ工作機械５４０は、搬送装置５５０によって搬送されるワークＷに対して部品を組み付けるガントリ型の組付装置である。具体的には、ＣＮＣ工作機械５４０は、土台５４５と、土台５４５に対してＹ軸方向に移動可能な本体５４４と、本体５４４に対してＺ軸方向に移動可能な前部５４３と、前部５４３に対してＸ軸方向に移動可能なアーム５４１およびアーム５４２とを備える。Ｘ軸、Ｙ軸、Ｚ軸は、互いに直交する軸である。Ｘ軸方向について、アーム５４１がアーム５４２とは独立して移動する際に用いられる軸としてＸ’軸が定義される。また、Ｘ軸方向について、アーム５４２がアーム５４１とは独立して移動する際に用いられる軸としてＸ”軸が定義される。
【００３４】
サーボモータ５２２＿１は、アーム５４１をＸ軸方向あるいはＸ’軸方向に動作させる。サーボモータ５２２＿２は、アーム５４２をＸ軸方向またはＸ”軸方向に動作させる。サーボモータ５２２＿３は、本体５４４をＹ軸方向に動作させる。サーボモータ５２２＿４は、前部５４３をＺ軸方向に動作させる。サーボモータ５２２＿５は、搬送装置５５０を搬送方向に動作させる。
【００３５】
このように構成されたＣＮＣ工作機械５４０は、搬送装置５５０によって搬送されたワークＷが作業台５５４の上に配置されると、まず、第１工程として準備動作を行う。第１工程においては、ワークＷに部品を取り付けるための準備として、アーム５４１およびアーム５４２のそれぞれが、互いに独立して移動し、通常動作のための位置に配置される。たとえば、アーム５４１およびアーム５４２のそれぞれは、Ｘ軸に沿って互いに向かい合う方向（前部５４３における外側から内側に向かう方向）に向かって移動する。これにより、アーム５４１およびアーム５４２は、互いに近接する位置にまで移動して準備動作を完了する。
【００３６】
次に、ＣＮＣ工作機械５４０は、第２工程として通常動作を行う。通常動作においては、アーム５４１およびアーム５４２がＸ軸に沿って同じ方向に向かって移動しながらワークＷに部品を取り付ける。たとえば、アーム５４１およびアーム５４２はともに、前部５４３の一端から他端に向かって移動しながらワークＷに部品を取り付ける。
【００３７】
このように、第１工程においては、アーム５４１とアーム５４２とで、移動方向が互いに異なり、かつ互いに独立して移動する。このため、アーム５４１およびアーム５４２は同時に制御されないため、Ｘ軸方向に沿った軸として、アーム５４１を移動させるサーボモータ５２２＿１に対してはＸ’軸、アーム５４２を移動させるサーボモータ５２２＿２に対してはＸ”軸が規定される。一方、第２工程においては、アーム５４１とアーム５４２とで、移動方向が同じであり、両者がともに移動する。このため、アーム５４１およびアーム５４２は同時に制御されるため、アーム５４１を移動させるサーボモータ５２２＿１およびアーム５４２を移動させるサーボモータ５２２＿２のそれぞれに対して共通のＸ軸が規定される。
【００３８】
なお、第１工程および第２工程のいずれにおいても、本体５４４をＹ軸方向に移動させるサーボモータ５２２＿３に対してはＹ軸、前部５４３をＺ軸方向に移動させるサーボモータ５２２＿４に対してはＺ軸が規定される。
【００３９】
図１に戻り、制御装置１００は、ストレージ１０８と、プログラム実行部１５０と、記憶部（メモリ）１９５と、入出力リフレッシュ部１８０とを含む。
【００４０】
ストレージ１０８には、制御プログラム３０が格納されている。プログラム実行部１５０は、制御プログラム３０を制御周期ごとに実行する。
【００４１】
「制御プログラム」は、所謂シーケンスプログラムであり、実行ごとに全体がスキャンされて、実行ごとに１または複数の指令値が算出されるプログラムを包含する概念である。「シーケンスプログラム」は、国際電気標準会議（International Electrotechnical Commission：ＩＥＣ）によって規定された国際規格ＩＥＣ６１１３１−３に従って記述された１または複数の命令からなるプログラムを包含する。「シーケンスプログラム」には、シーケンス命令および／またはモーション命令を含み得る。なお、「シーケンスプログラム」としては、国際規格ＩＥＣ６１１３１−３に従って記述された命令に限らず、ＰＬＣ（プログラマブルロジックコントローラ）の製造メーカまたはベンダーなどが独自に規定した命令を含むようにしてもよい。このように、「シーケンスプログラム」は、即時性および高速性が要求される制御に好適である。
【００４２】
「シーケンス命令」は、基本的には、入力値、出力値、内部値などを算出する１または複数の論理回路により記述される１または複数の命令である。基本的には、１回の制御周期において、「シーケンス命令」は、先頭から最終まで実行され、次の制御周期において、「シーケンス命令」は、先頭から最終までが再度実行される。
【００４３】
「モーション命令」は、サーボモータなどのアクチュエータに対して、位置（Position）、速度（Velocity）、加速度（Acceleration）、加加速度(Jerk）、角度、角速度、角加速度、角加加速度などの数値を指令値として算出するための１または複数の命令である。「モーション命令」についても、１回の制御周期において、ファンクションブロックや数値算出式などにより記述されるモーション命令のプログラム（モーションプログラム）の先頭から最終までが実行される。すなわち、制御周期ごとに指令値は算出（更新）されることになる。
【００４４】
プログラム実行部１５０は、制御命令解釈部１５２と、ライブラリ１５４と、演算部１５９と、変更部１５６と、特定部１５８とを含む。
【００４５】
制御命令解釈部１５２は、制御プログラム３０に含まれる制御命令を解釈し、指定されたシーケンス演算（論理演算）を実行する。ライブラリ１５４は、制御プログラム３０に含まれる単純なシーケンス以外の制御命令に対応するコードを提供する。たとえば、複合的な処理を可能とするファンクションブロックを用いて制御プログラム３０を記述することができるような場合には、制御プログラム３０を参照することで、当該ファンクションブロックを解釈して実行するために必要なコードが取得される。
【００４６】
演算部１５９は、制御プログラム３０に含まれるモーション命令に従って指令値１４１を算出する。モーション命令は、１つのコマンドによって複数の制御周期に亘って指令値１４１の算出を定義しており、演算部１５９は、このようなモーション命令を解釈して、指令値１４１を制御周期ごとに更新する。
【００４７】
演算部１５９により制御周期ごとに算出される１または複数の指令値１４１は、記憶部１９５に出力される。
【００４８】
記憶部１９５は、パラメータ１４３と、軸グループ構造体１４０と、指令値１４１，１４２とを記憶する。パラメータ１４３は、第１工程や第２工程といったような状況に応じてドライバ５２０に出力される指令値１４１を算出するための各種パラメータを含む。たとえば、パラメータ１４３は、位置（Position）、速度（Velocity）、加速度（Acceleration）、および加加速度(Jerk）などを含む。
【００４９】
軸グループ構造体１４０は、主にステータス１４４と対応情報１４５とを含むオブジェクトである。ステータス１４４は、軸グループ構造体１４０を実行中であるか否か、より具体的には対応情報１４５を用いて指令値の出力先を特定中であるか否かを示すデータである。対応情報１４５は、各軸（Ｘ軸，Ｙ軸，Ｚ軸，Ｘ’軸，Ｘ”軸）に対応する出力先のドライバ５２０を特定するためのデータである。
【００５０】
対応情報１４５においては、座標系を構成する全ての軸（Ｘ軸，Ｙ軸，Ｚ軸，Ｘ’軸，Ｘ”軸）が予め配列されており、当該全ての軸のいずれかに対して指令値の出力先であるドライバ１〜４のいずれかが対応付けられている。
【００５１】
たとえば、図１に示す例は第１工程（準備動作）における適用例であり、この場合、座標系を構成する全ての軸（Ｘ軸，Ｙ軸，Ｚ軸，Ｘ’軸，Ｘ”軸）のうち、Ｘ’軸、Ｘ”軸、Ｙ軸、およびＺ軸が使用される。そして、Ｘ’軸に対してはサーボモータ５２２＿１を駆動させるドライバ１、Ｘ”軸に対してはサーボモータ５２２＿２を駆動させるドライバ２、Ｙ軸に対してはサーボモータ５２２＿３を駆動させるドライバ３、Ｚ軸に対してはサーボモータ５２２＿４を駆動させるドライバ４が出力先として設定されている。なお、上述したように、第１工程においてはＸ軸が使用されないため、Ｘ軸に対してはいずれのドライバも出力先として設定されない。なお、図示は省略するが、図１〜図３に示す対応情報１４５において、空欄は“ＮＵＬＬ”である。
【００５２】
指令値１４１は、演算部１５９による演算によって算出される。第１工程においては、Ｘ’軸、Ｘ”軸、Ｙ軸、Ｚ軸が用いられるため、これら各軸に対する指令値１４１が記憶部１９５に記憶される。たとえば、Ｙ軸に対しては“ａ”、Ｚ軸に対しては“ｂ”、Ｘ’軸に対しては“ｃ”、Ｘ”軸に対しては“ｄ”が指令値として算出されている。なお、第１工程においてはＸ軸が使用されないため、Ｘ軸に対しては指令値が算出されない。
【００５３】
特定部１５８は、記憶部１９５によって記憶された対応情報１４５に基づいて、演算部１５９によって演算された指令値１４１の出力先を特定する。たとえば、図１に示す例においては、特定部１５８は、Ｘ’軸、Ｘ”軸、Ｙ軸、Ｚ軸のそれぞれに対応付けられた指令値１４１と、対応情報１４５によって特定可能なＸ’軸、Ｘ”軸、Ｙ軸、Ｚ軸のそれぞれに対応付けられた出力先のドライバとに基づき、Ｘ’軸、Ｘ”軸、Ｙ軸、Ｚ軸のそれぞれに対応付けられた指令値１４１の出力先を特定して、出力先に対応付けた指令値１４２を記憶部１９５に格納する。
【００５４】
なお、特定部１５８は、対応情報１４５を用いて指令値の出力先を特定中である間、ステータス１４４を実行中（Status=Executing）とする。これにより、軸グループ構造体１４０に対応する軸グループの命令に対してインターロックが掛かり、軸グループに対して対応情報１４５を変更する処理の実行が禁止される。
【００５５】
入出力リフレッシュ部１８０は、所定周期ごとに、指令値１４２を含む出力データをフィールド側へ送信する。これにより、制御装置１００は、制御対象である軸に対応するドライバ５２０に対して指令値を出力する。
【００５６】
ここで、上述したように、第１工程（準備動作）から第２工程（通常動作）へと状況が変化すると、サーボモータ５２２＿１に規定されるＸ’軸がＸ軸に切り替わり、かつサーボモータ５２２＿２に規定されるＸ”軸がＸ軸に切り替わる。そして、演算部１５９による指令値の演算対象となる軸も、Ｘ’軸、Ｘ”軸、Ｙ軸、Ｚ軸から、Ｘ軸、Ｙ軸、Ｚ軸へと変更される。よって、各指令値の出力先も、Ｘ’軸、Ｘ”軸、Ｙ軸、Ｚ軸のそれぞれに対応する出力先から、Ｘ軸、Ｙ軸、Ｚ軸のそれぞれに対応する出力先へと変更されなければならない。
【００５７】
しかし、仮に、第１工程用の出力先を特定する対応情報と第２工程用の出力先を特定する対応情報とを予め準備して記憶部１９５に記憶させた場合、制御対象となる軸の組合せ（軸グループ）の数が多くなればなるほど、記憶部１９５の記憶領域も増大する。すなわち、Ｘ’軸、Ｘ”軸、Ｙ軸、Ｚ軸で構成される軸グループ専用の対応情報と、Ｘ軸、Ｙ軸、Ｚ軸で構成される軸グループ専用の対応情報とを予め準備して記憶部１９５に記憶させると、記憶部１９５の記憶領域が増大する。また、パラメータ１４３についても、Ｘ’軸、Ｘ”軸、Ｙ軸、Ｚ軸で構成される軸グループ専用のパラメータと、Ｘ軸、Ｙ軸、Ｚ軸で構成される軸グループ専用のパラメータとを予め準備して記憶部１９５に記憶させると、記憶部１９５の記憶領域が増大する。
【００５８】
そこで、本実施の形態に係る制御装置１００では、一の軸グループについて、対応情報１４５において、工程の種類に関わらず座標系を構成する全ての軸（Ｘ軸，Ｙ軸，Ｚ軸，Ｘ’軸，Ｘ”軸）が予め規定され、当該全ての軸のいずれかに対して指令値の出力先であるドライバ１〜４のいずれかが対応付けられている。そして、変更部１５６は、所定条件が成立したときに、記憶部１９５によって記憶された同じ対応情報１４５において、演算部１５９における演算対象である１つ以上の軸のそれぞれに対応する出力先を変更する。なお、所定条件としては、制御プログラムの実行中に所定の内部イベントが発生したとき、または、たとえば、後述するサポート装置２００におけるユーザ操作など、外部からの指令が入力されたときに成立する。
【００５９】
たとえば、図２に示されるように、第１工程においては、Ｘ’軸に対してドライバ１、Ｘ”軸に対してドライバ２が出力先として設定される一方で、Ｘ軸に対しては出力先が設定されていなかったが（ＮＵＬＬ）、第２工程への移行に伴い、Ｘ’軸およびＸ”軸に対しては出力先が設定されない（ＮＵＬＬ）一方で、Ｘ軸に対してドライバ１およびドライバ２の両方が出力先として設定される。
【００６０】
そして、図３に示されるように、第２工程（通常動作）に移行した後では、再び演算部１５９によって１または複数の指令値１４６が算出される。たとえば、第２工程においては、Ｘ軸、Ｙ軸、Ｚ軸が用いられ、Ｘ軸に対しては“α”、Ｙ軸に対しては“β”、Ｚ軸に対しては“γ”が指令値１４６として算出される。なお、第２工程においてはＸ’軸およびＸ”が使用されないため、これらの軸に対しては指令値が算出されない。
【００６１】
次に、特定部１５８は、変更部１５６によって、各軸と出力先との対応関係が変更された後の対応情報１４５に基づいて、演算部１５９によって演算された指令値１４６の出力先を特定する。たとえば、図３に示す例においては、特定部１５８は、Ｘ軸、Ｙ軸、Ｚ軸のそれぞれに対応付けられた指令値１４６と、対応情報１４５によって特定可能なＸ軸、Ｙ軸、Ｚ軸のそれぞれに対応付けられたドライバの出力先とに基づき、Ｘ軸、Ｙ軸、Ｚ軸のそれぞれに対応付けられた指令値１４６の出力先を特定して、出力先に対応付けられた指令値１４７を記憶部１９５に格納する。
【００６２】
また、特定部１５８は、対応情報１４５を用いて指令値の出力先を特定中である間、ステータス１４４を実行中（Status=Executing）にするため、軸グループ構造体１４０に対応する軸グループの命令に対してインターロックが掛かり、軸グループに対して対応情報１４５を変更する処理の実行が禁止される。
【００６３】
その後、入出力リフレッシュ部１８０によって、指令値１４７を含む出力データがフィールド側へ送信されることで、制御対象である軸に対応するドライバ５２０に対して指令値が出力される。
【００６４】
このように、特定部１５８によって、指令値の演算対象である１つ以上の軸のそれぞれに対応する出力先を特定するための対応情報１４５に基づいて、指令値の出力先が特定される。さらに、変更部１５６によって、所定条件が成立したときに、対応情報１４５において、演算対象である１つ以上の軸のそれぞれに対応する出力先が変更される。このため、制御対象となる全ての軸の組合せについて対応する出力先を特定するための対応情報を予め準備して記憶しておく必要がなく、所定条件が成立したときに、対応情報１４５において、演算対象である１つ以上の軸のそれぞれに対応する出力先を動的に変更するだけで、出力先を適切に特定することができる。これにより、記憶領域を増大させることなく制御対象となる軸の組合せを変更することができる。
【００６５】
以上、本実施の形態に係る制御装置１００の適用例について説明した。以下では、より詳細に、本実施の形態に係る制御装置１００の構成および処理について説明する。
【００６６】
＜Ｂ．制御システムの全体構成例＞
次に、本実施の形態に係る制御装置１００を含む制御システム１の全体構成例について説明する。図４は、本実施の形態に係る制御システム１の全体構成例を説明するための模式図である。なお図４では、本実施の形態に係る制御装置１００を中心とした制御システム１を示す。
【００６７】
制御装置１００は、各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。制御装置１００は、制御演算を実行する一種のコンピュータであり、典型的には、ＰＬＣ（プログラマブルコントローラ）として具現化されている。制御装置１００は、フィールドネットワーク２を介して各種のフィールドデバイス５００と接続されている。制御装置１００は、フィールドネットワーク２などを介して、１または複数のフィールドデバイス５００との間でデータを遣り取りする。
【００６８】
制御装置１００において実行される制御演算は、フィールドデバイス５００において収集または生成されたデータ（入力データ）を収集する処理（入力処理）、フィールドデバイス５００に対する指令値などのデータ（出力データ）を生成する処理（演算処理）、生成した出力データを対象のフィールドデバイス５００へ送信する処理（出力処理）などを含む。
【００６９】
フィールドネットワーク２は、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。データの到達時間が保証される点において、ＥｔｈｅｒＣＡＴ（登録商標）が好ましい。
【００７０】
フィールドネットワーク２には、任意のフィールドデバイス５００を接続することができる。フィールドデバイス５００は、フィールド側にある製造装置や生産ラインなどに対して何らかの物理的な作用を与えるアクチュエータ、および、フィールドとの間で情報を遣り取りする入出力装置などを含む。
【００７１】
フィールドネットワーク２を介して、制御装置１００とフィールドデバイス５００との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数１００μｓｅｃオーダ〜数１０ｍｓｅｃオーダのごく短い周期で更新されることになる。
【００７２】
図４に示す構成例においては、制御装置１００は、ＣＮＣ工作機械５４０と、ＣＮＣ工作機械５４０に対してワークＷを供給する搬送装置５５０とを制御する。
【００７３】
ＣＮＣ工作機械５４０は、前述したように、搬送装置５５０によって搬送されるワークＷに対して部品を組み付けるガントリ型の組付装置である。なお、ＣＮＣ工作機械５４０としては、図示のものに限られず、旋盤加工、フライス盤、放電加工などの任意の加工装置に適用できる。
【００７４】
ＣＮＣ工作機械５４０および搬送装置５５０は、制御装置１００からの指令値に従って駆動される。搬送装置５５０により搬送されるワークＷは、作業台５５４の上に配置され、ＣＮＣ工作機械５４０により指定された加工が行われる。
【００７５】
図４に示す構成例においては、フィールドデバイス５００は、リモートＩ／Ｏ（Input/Output）装置５１０と、サーボドライバ５２０＿１，５２０＿２，５２０＿３，５２０＿４およびサーボモータ５２２＿１，５２２＿２，５２２＿３，５２２＿４と、サーボドライバ５３０とを含む。
【００７６】
リモートＩ／Ｏ装置５１０は、典型的には、フィールドネットワーク２を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部（以下、「Ｉ／Ｏユニット」とも称す。）とを含む。リモートＩ／Ｏ装置５１０には、入力リレーや各種センサ（たとえば、アナログセンサ、温度センサ、振動センサなど）などの入力データを収集する装置、および、出力リレー、コンタクタ、サーボドライバ、および、その他任意のアクチュエータなどのフィールドに対して何らかの作用を与える装置が接続される。
【００７７】
フィールドデバイス５００としては、これらに限られることなく、入力データを収集する任意のデバイス（たとえば、視覚センサなど）、出力データに従う何らかの作用を与える任意のデバイス（たとえば、インバータ装置など）、各種ロボットなどを採用することができる。
【００７８】
サーボモータ５２２＿１，５２２＿２，５２２＿３，５２２＿４は、ＣＮＣ工作機械５４０の一部として組み込まれており、サーボドライバ５３０は、搬送装置５５０のコンベアに連結されたサーボモータ５３２を駆動する。サーボドライバ５２０＿１〜５２０＿４，５３０は、制御装置１００からの指令値（たとえば、位置指令値や速度指令値など）に従って、対応するサーボモータ５２２を駆動する。
【００７９】
制御装置１００は、上位ネットワーク６を介して、他の装置にも接続されている。上位ネットワーク６には、一般的なネットワークプロトコルであるイーサネット（登録商標）やＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）が採用されてもよい。より具体的には、上位ネットワーク６には、１または複数のサーバ装置３００および１または複数の表示装置４００が接続されてもよい。
【００８０】
サーバ装置３００としては、データベースシステム、製造実行システム（ＭＥＳ：Manufacturing Execution System）などが想定される。製造実行システムは、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。これに限らず、情報系サービスを提供する装置を上位ネットワーク６に接続するようにしてもよい。情報系サービスとしては、制御対象の製造装置や設備からの情報を取得して、マクロ的またはミクロ的な分析などを行う処理が想定される。たとえば、制御対象の製造装置や設備からの情報に含まれる何らかの特徴的な傾向を抽出するデータマイニングや、制御対象の設備や機械からの情報に基づく機械学習を行うための機械学習ツールなどが想定される。
【００８１】
表示装置４００は、ユーザからの操作を受けて、制御装置１００に対してユーザ操作に応じたコマンドなどを出力するとともに、制御装置１００での演算結果などをグラフィカルに表示する。
【００８２】
制御装置１００には、サポート装置２００が接続可能になっている。サポート装置２００は、制御装置１００が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置２００は、制御装置１００で実行されるプログラム（たとえば、制御プログラム）の開発環境（プログラム作成編集ツール、パーサ、コンパイラなど）、制御装置１００および制御装置１００に接続される各種デバイスの構成情報（コンフィギュレーション）を設定するための設定環境、生成したユーザプログラム（たとえば、制御プログラム）を制御装置１００へ出力する機能、制御装置１００上で実行されるユーザプログラム（たとえば、制御プログラム）などをオンラインで修正・変更する機能などを提供する。
【００８３】
＜Ｃ．制御装置１００のハードウェア構成例＞
次に、本実施の形態に係る制御装置１００のハードウェア構成例について説明する。図５は、本実施の形態に係る制御装置１００のハードウェア構成例を説明するためのブロック図である。
【００８４】
図５に示されるように、制御装置１００は、ＣＰＵユニットと称される演算処理部であり、プロセッサ１０２と、チップセット１０４と、主メモリ１０６と、ストレージ１０８と、上位ネットワークコントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１１２と、メモリカードインターフェイス１１４と、内部バスコントローラ１２０と、フィールドネットワークコントローラ１３０とを含む。
【００８５】
プロセッサ１０２は、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＧＰＵ（Graphics Processing Unit）などで構成される。プロセッサ１０２としては、複数のコアを有する構成を採用してもよいし、プロセッサ１０２を複数配置してもよい。チップセット１０４は、プロセッサ１０２および周辺エレメントを制御することで、制御装置１００における全体としての処理を実現する。主メモリ１０６は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。図１に示された記憶部（メモリ）１９５は、典型的には、主メモリ１０６によって実現される。ストレージ１０８は、たとえば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性記憶装置などで構成される。
【００８６】
プロセッサ１０２は、ストレージ１０８に格納された各種プログラムを読み出して、主メモリ１０６に展開して実行することで、制御対象に応じた制御、および、各種処理を実現する。ストレージ１０８には、基本的な機能を実現するためのシステムプログラム３４に加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラム（たとえば、制御プログラム３０）が格納される。
【００８７】
上位ネットワークコントローラ１１０は、上位ネットワーク６を介して、サーバ装置３００や表示装置４００（図４参照）などとの間のデータの遣り取りを制御する。ＵＳＢコントローラ１１２は、ＵＳＢ接続を介してサポート装置２００との間のデータの遣り取りを制御する。なお、サポート装置２００は、ＵＳＢ接続を介して制御装置１００との間で通信可能であるものに限らず、ＥｔｈｅｒＮｅｔ（イーサネット）通信によって制御装置１００との間で通信可能であってもよい。
【００８８】
メモリカードインターフェイス１１４は、メモリカード１１６が着脱可能に構成されており、メモリカード１１６に対してデータを書込み、メモリカード１１６から各種データ（ユーザプログラムやトレースデータなど）を読み出すことが可能になっている。
【００８９】
内部バスコントローラ１２０は、制御装置１００に装着されるＩ／Ｏユニット１２２との間のデータの遣り取りを制御する。フィールドネットワークコントローラ１３０は、フィールドネットワーク２を介したフィールドデバイスとの間のデータの遣り取りを制御する。
【００９０】
図５には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、制御装置１００の主要部を、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００９１】
図４に示される制御システム１においては、制御装置１００、サポート装置２００および表示装置４００がそれぞれ別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
【００９２】
＜Ｄ．制御プログラム＞
次に、本実施の形態に係る制御装置１００が実行する制御プログラムについて説明する。図６は、本実施の形態に係る制御装置１００が実行する制御プログラムを規定するファンクションブロックを説明するための図である。
【００９３】
制御プログラムは、対応情報（図１〜図３で示した対応情報１４５）において各軸と出力先との対応関係を変更するための変更プログラムと、指令値を演算するとともに対応情報に基づいて当該指令値の出力先を特定するための特定プログラムとを含む。
【００９４】
図６に示されるように、変更プログラムは、「CNC_ChangeAxes」と称されるファンクションブロック６００，６５０の形で規定されてもよい。ファンクションブロック６００，６５０において、左側の端子は入力端子、右側の端子は出力端子である。なお、ファンクションブロック６００は、第１工程において用いられる変更プログラムであり、ファンクションブロック６５０は、第２工程において用いられる変更プログラムである。
【００９５】
特定プログラムは、「CNC_Move」と称されるファンクションブロック７００，７５０の形で規定されてもよい。ファンクションブロック７００，７５０において、左側の端子は入力端子、右側の端子は出力端子である。なお、ファンクションブロック７００は、第１工程において用いられる特定プログラムであり、ファンクションブロック７５０は、第２工程において用いられる特定プログラムである。
【００９６】
まず、第１工程におけるファンクションブロック６００の入力端子について説明する。ファンクションブロック６００の入力端子としては、「AxisGroup」、「Execute」、および「AxisComp．」が設けられている。
【００９７】
「AxisGroup」には、対応情報の変更対象となる軸グループを特定するための識別情報（たとえば、識別番号）が与えられる。図６に示す例では、軸グループ１を特定するための識別情報として“AxisGroup No.1”が「AxisGroup」に与えられている。
【００９８】
「Execute」には、ファンクションブロック６００を実行させるための指示が与えられる。ファンクションブロック６００は、制御プログラム３０（制御命令）の実行中に所定のイベントが発生したときに起動する。所定のイベントの発生例としては、ファンクションブロック６００の前に実行された図示しないファンクションブロックの出力において、「Done1」がＯＮになることで、ファンクションブロック６００の起動条件が成立する。なお、ファンクションブロック６００は、制御プログラム３０（制御命令）の実行中における内部イベントが発生したときに実行されるものに限らず、外部からの指令が入力されたときに実行されてもよい。たとえば、サポート装置２００や図示しない他のユーザ端末（たとえば、タッチパネルディスプレイ）におけるユーザ操作など、外部からの指令が入力されたときにファンクションブロック６００が実行されてもよい。
【００９９】
「AxisComp．」（「AxisComposition」の略称）には、ユーザによって指定された各軸のそれぞれに対応する出力先を特定するための軸構成が与えられる。たとえば、第１工程においては、Ｘ軸に対して“ＮＵＬＬ”、Ｙ軸に対して“Drive3”（ドライバ３）、Ｚ軸に対して“Drive4”（ドライバ４）、Ｘ’軸に対して“Drive1”（ドライバ１）、Ｘ”軸に対して“Drive2”（ドライバ２）の対応関係が示された軸構成が「AxisComp．」に与えられる。なお、「AxisComp．」は、制御プログラム中に記述されるものに限らず、外部からの指令の入力に基づき決定されてもよい。たとえば、図示しないユーザ端末（たとえば、タッチパネルディスプレイ）におけるユーザ操作など、外部からの指令の入力に基づき軸構成を変更してもよい。このようにすれば、ユーザ端末におけるユーザ操作によって、軸グループのパターンを増やすことができる。
【０１００】
次に、第１工程におけるファンクションブロック６００の出力端子について説明する。出力端子としては、「AxisGroup」、「Busy」、「Done」、「CommandAborted」、「Error」、および「ErrorID」が設けられている。
【０１０１】
「AxisGroup」は、入力側の「AxisGroup」に与えられた軸グループを特定するための識別情報（たとえば、識別番号）を出力する。図６に示す例では、軸グループ１を特定するための識別情報として“AxisGroup No.1”が「AxisGroup」から出力される。
【０１０２】
「Busy」は、「Execute」に指示が与えられてファンクションブロック６００が起動するとＯＮになり、ファンクションブロック６００の実行中にＯＮを維持する。
【０１０３】
「Done」は、ファンクションブロック６００の実行が完了すると、ＯＮになり、このとき、後続の「Done2」で示された変数もＯＮになる。
【０１０４】
「CommandAborted」は、ファンクションブロック６００の実行が中断すると、ＯＮになる。
【０１０５】
「Error」は、ファンクションブロック６００の実行において何らかのエラーが発生した場合に、ＯＮになる。
【０１０６】
「ErrorID」は、ファンクションブロック６００の実行において何らかのエラーが発生した場合に、エラーコードを出力する。
【０１０７】
次に、第１工程におけるファンクションブロック７００の入力端子について説明する。ファンクションブロック７００の入力端子としては、「Coord」、「Execute」、「LogicalMotorNo」、「Position」、「Velocity」、「Acceleration」、「Jerk」、および「MoveMode」が設けられている。
【０１０８】
「Coord」には、指令値の演算対象となる軸グループを特定するための識別情報（たとえば、識別番号）が与えられる。図６に示す例では、軸グループ１を特定するための識別情報として“AxisGroup No.1”が「Coord」に与えられている。
【０１０９】
「Execute」には、ファンクションブロック７００を実行させるための指示が与えられる。ファンクションブロック７００は、制御プログラム３０（制御命令）の実行中に所定のイベントが発生したときに起動する。所定のイベントの発生例としては、ファンクションブロック７００の前に実行されたファンクションブロック６００の出力において、「Error」がＯＦＦでありかつ「Done2」がＯＮになっていることで、ファンクションブロック７００の起動条件が成立する。なお、ファンクションブロック７００は、制御プログラム３０（制御命令）の実行中における内部イベントが発生したときに実行されるものに限らず、外部からの指令が入力されたときに実行されてもよい。たとえば、サポート装置２００や図示しない他のユーザ端末（たとえば、タッチパネルディスプレイ）におけるユーザ操作など、外部からの指令が入力されたときにファンクションブロック７００が実行されてもよい。
【０１１０】
「LogicalMotorNo」には、演算対象となる軸を特定するための対応情報が与えられる。たとえば、第１工程の場合、Ｘ軸に対して“ＮＵＬＬ”、Ｙ軸に対して“Drive3”（ドライバ３）、Ｚ軸に対して“Drive4”（ドライバ４）、Ｘ’軸に対して“Drive1”（ドライバ１）、Ｘ”軸に対して“Drive2”（ドライバ２）の対応関係が示された対応情報が「LogicalMotorNo」に与えられる。
【０１１１】
「Position」には、動作の目標位置が与えられる。「Velocity」には、動作の目標速度が与えられる。「Acceleration」には、動作の目標加速度が与えられる。「Jerk」には、動作の目標加加速度が与えられる。「MoveMode」には、絶対位置に基づく動作モード、あるいは相対位置に基づく動作モードなど、指定された動作モードが与えられる。
【０１１２】
次に、第１工程におけるファンクションブロック７００の出力端子について説明する。ファンクションブロック７００の出力端子としては、「AxisGroup」、「Busy」、「Done」、「CommandAborted」、「Error」、および「ErrorID」が設けられている。
【０１１３】
「AxisGroup」は、入力側の「Coord」に与えられた軸グループを特定するための識別情報（たとえば、識別番号）を出力する。図６に示す例では、軸グループ１を特定するための識別情報として“AxisGroup No.1”が「AxisGroup」から出力される。
【０１１４】
「Busy」は、「Execute」に指示が与えられてファンクションブロック７００が起動するとＯＮになり、ファンクションブロック７００の実行中にＯＮを維持する。
【０１１５】
「Done」は、ファンクションブロック７００の実行が完了すると、ＯＮになり、このとき、後続の「Done3」で示された変数もＯＮとなる。
【０１１６】
「CommandAborted」は、ファンクションブロック７００の実行が中断すると、ＯＮになる。
【０１１７】
「Error」は、ファンクションブロック７００の実行において何らかのエラーが発生した場合に、ＯＮになる。
【０１１８】
「ErrorID」は、ファンクションブロック７００の実行において何らかのエラーが発生した場合に、エラーコードを出力する。
【０１１９】
次に、第２工程におけるファンクションブロック６５０について説明する。第２工程におけるファンクションブロック６５０は、上述した第１工程におけるファンクションブロック６００と基本的には同じ機能を有する。但し、第２工程においては、第１工程における対応情報とは異なる内容の対応情報を得る。
【０１２０】
たとえば、ファンクションブロック６５０の「AxisComp．」には、ファンクションブロック６００の「AxisComp．」とは異なる軸構成が与えられる。たとえば、第２工程においては、Ｘ軸に対して“Drive1”（ドライバ１）および“Drive2”（ドライバ２）、Ｙ軸に対して“Drive3”（ドライバ３）、Ｚ軸に対して“Drive4”（ドライバ４）、Ｘ’軸に対して“ＮＵＬＬ”、Ｘ”軸に対して“ＮＵＬＬ”の対応関係が示された軸構成が「AxisComp．」に与えられる。なお、ファンクションブロック６５０においても、ファンクションブロック６００と同様に、「AxisComp．」が制御プログラム中に記述されるものに限らず、外部からの指令の入力に基づき決定されてもよい。たとえば、図示しないユーザ端末（たとえば、タッチパネルディスプレイ）におけるユーザ操作など、外部からの指令の入力に基づき軸構成を変更してもよい。このようにすれば、ユーザ端末におけるユーザ操作によって、軸グループのパターンを増やすことができる。
【０１２１】
「Execute」には、ファンクションブロック６５０を実行させるための指示が与えられる。ファンクションブロック６５０は、制御プログラム３０（制御命令）の実行中に所定のイベントが発生したときに起動する。所定のイベントの発生例としては、ファンクションブロック６５０の前に実行されたファンクションブロック７００の出力において、「Error」がＯＦＦでありかつ「Done3」がＯＮになっていることで、ファンクションブロック６５０の起動条件が成立する。なお、ファンクションブロック６５０は、制御プログラム３０（制御命令）の実行中における内部イベントが発生したときに実行されるものに限らず、外部からの指令が入力されたときに実行されてもよい。たとえば、サポート装置２００や図示しない他のユーザ端末（たとえば、タッチパネルディスプレイ）におけるユーザ操作など、外部からの指令が入力されたときにファンクションブロック６５０が実行されてもよい。
【０１２２】
ファンクションブロック６５０の実行が完了すると、「Done」がＯＮになり、このとき、後続の「Done4」で示された変数もＯＮになる。
【０１２３】
次に、第２工程におけるファンクションブロック７５０について説明する。第２工程におけるファンクションブロック７５０は、上述した第２工程におけるファンクションブロック７００と基本的には同じ機能を有する。
【０１２４】
「Coord」には、指令値の演算対象となる軸グループを特定するための識別情報（たとえば、識別番号）が与えられる。図６に示す例では、軸グループ１を特定するための識別情報として“AxisGroup No.1”が「Coord」に与えられている。
【０１２５】
「Execute」には、ファンクションブロック７５０を実行させるための指示が与えられる。ファンクションブロック７５０は、制御プログラム３０（制御命令）の実行中に所定のイベントが発生したときに起動する。所定のイベントの発生例としては、ファンクションブロック７５０の前に実行されたファンクションブロック６５０の出力において、「Error」がＯＦＦでありかつ「Done4」がＯＮになっていることで、ファンクションブロック７５０の起動条件が成立する。なお、ファンクションブロック７５０は、制御プログラム３０（制御命令）の実行中における内部イベントが発生したときに実行されるものに限らず、外部からの指令が入力されたときに実行されてもよい。たとえば、サポート装置２００や図示しない他のユーザ端末（たとえば、タッチパネルディスプレイ）におけるユーザ操作など、外部からの指令が入力されたときにファンクションブロック７５０が実行されてもよい。
【０１２６】
ファンクションブロック７５０の実行が完了すると、「Done」がＯＮになり、このとき、後続の「Done5」で示された変数もＯＮになる。
【０１２７】
制御装置１００は、上述したようなファンクションブロックを制御周期に基づいて順に実行することで、ファンクションブロック６００に従って一の軸グループについて第１工程用の対応情報（図１に示す対応情報１４５）を取得し、ファンクションブロック７００に従って第１工程用の対応情報に基づいて指令値を演算して出力先を指定する。これにより、第１工程用の対応情報に基づいて、適切な出力先に指令値が出力される。
【０１２８】
また、制御装置１００は、上述したようなファンクションブロックを制御周期に基づいて順に実行することで、ファンクションブロック６５０に従って当該一の軸グループについて第１工程用の対応情報を第２工程用の対応情報へと変更して第２工程用の対応情報（図３に示す対応情報１４５）を取得し、ファンクションブロック７５０に従って第２工程用の対応情報に基づいて指令値を演算して出力先を指定する。これにより、第２工程用の対応情報に基づいて、適切な出力先に指令値が出力される。
【０１２９】
このように、制御装置１００は、所定条件が成立したときに、対応情報において、演算対象である１つ以上の軸のそれぞれに対応する出力先を動的に変更するだけで、出力先を適切に特定することができる。これにより、記憶領域を増大させることなく制御対象となる軸の組合せを変更することができる。
【０１３０】
＜Ｅ．軸グループ構造体＞
次に、軸グループ構造体について説明する。図７は、軸グループ構造体を説明するための図である。本実施の形態においては、複数の軸グループ構造体が設けられている。各軸グループ構造体には、軸グループを特定するための識別情報（たとえば、識別番号）と、「Status」（図１〜図３で示したステータス１４４）と、「AxisComposition」とを含む。
【０１３１】
たとえば、軸グループ１に対応する軸グループ構造体においては、軸グループ１を特定するための識別情報として“AxisGroup No.1”が格納される。「Status」は、上述した特定プログラムであるファンクションブロック７００，７５０によって対応情報（AxisComposition）が参照されている場合に、“Executing”になる。これにより、軸グループ１の命令に対してインターロックが掛かり、軸グループ１に対して対応情報を変更する処理の実行が禁止される。「AxisComposition」は、対応情報に相当し、各軸（Ｘ軸，Ｙ軸，Ｚ軸，Ｘ’軸，Ｘ”軸）に対応するドライバ５２０の出力先を特定するためのデータである。たとえば、第１工程においては、Ｘ軸に対して“ＮＵＬＬ”、Ｙ軸に対して“Drive3”（ドライバ３）、Ｚ軸に対して“Drive4”（ドライバ４）、Ｘ’軸に対して“Drive1”（ドライバ１）、Ｘ”軸に対して“Drive2”（ドライバ２）といったような対応関係が「AxisComposition」で規定される。
【０１３２】
第１工程用の軸グループ構造体においては、上述した変更プログラムであるファンクションブロック６００が実行されることで、軸グループ１を特定するための識別情報として“AxisGroup No.1”が指定され、かつ「AxisComposition」が規定される。その後、特定プログラムであるファンクションブロック７００が実行されることで、「Status」が“Executing”となってインターロックが掛かる。
【０１３３】
第１工程から第２工程に移行すると、変更プログラムであるファンクションブロック６５０が実行される。このファンクションブロック６５０の実行によって、第１工程用の軸グループ構造体が第２工程用の軸グループ構造体に変更される。
【０１３４】
具体的には、第２工程用の変更プログラムであるファンクションブロック６５０が実行されることで、第２工程用の「AxisComposition」が規定される。たとえば、第２工程においては、Ｘ軸に対して“Drive1”（ドライバ１），“Drive2”（ドライバ２）、Ｙ軸に対して“Drive3”（ドライバ３）、Ｚ軸に対して“Drive4”（ドライバ４）、Ｘ’軸に対して“ＮＵＬＬ”、Ｘ”軸に対して“ＮＵＬＬ”といったような対応関係が「AxisComposition」で規定される。その後、特定プログラムであるファンクションブロック７５０が実行されることで、「Status」が“Executing”となってインターロックが掛かる。
【０１３５】
このように、本実施の形態に係る制御装置１００は、軸グループ１の軸グループ構造体において、軸グループ１という枠組みを変更することなく工程の種類に応じて対応情報の内容を変更することで、工程の種類に応じて適切な出力先に指令値を出力することができる。
【０１３６】
また、図８は、対応情報が使用中の場合における対応情報の内容変更について説明するための図である。図８に示されるように、たとえば、第１工程用の軸グループ構造体が実行中（Executing）の場合、第２工程用の変更プログラムであるファンクションブロック６５０が実行されないため、第１工程用の軸グループ構造体が第２工程用の軸グループ構造体に変更されることはない。
【０１３７】
＜Ｆ．異常処理＞
次に、制御装置１００が実行する異常処理について説明する。制御装置１００は、異常処理として、第１異常処理および第２異常処理を実行可能である。
【０１３８】
図９は、本実施の形態に係る制御装置１００が実行する第１異常処理を説明するための模式図である。第１異常処理とは、対応情報に基づいて特定することができない出力先に対応する軸について指令値が演算された場合に制御装置１００によって実行される異常処理である。
【０１３９】
たとえば、図９には、第２工程において指令値１４６が演算されたが、対応情報１４５が第１工程のまま変更されていないという異常を示す例である。具体的には、第２工程においては、Ｘ軸、Ｙ軸、Ｚ軸が用いられるため、演算部１５９によって、Ｘ軸に対しては“α”、Ｙ軸に対しては“β”、Ｚ軸に対しては“γ”が指令値１４６として算出される。一方、本来であれば、変更部１５６によって、第２工程に応じた内容に対応情報１４５が変更されるはずであるが、何らかの原因（たとえば、ユーザによるプログラミングの間違い、制御装置１００による処理異常など）により、第１工程に応じた内容で対応情報１４５が維持されている。
【０１４０】
具体的には、第２工程に従えば、Ｘ’軸およびＸ”軸に対して出力先が設定されない（ＮＵＬＬ）一方で、Ｘ軸に対してドライバ１およびドライバ２の両方が設定されるはずであるが、この例では、Ｘ’軸に対して“ドライバ１”、Ｘ”軸に対して“ドライバ２”が出力先として設定され、Ｘ軸に対しては出力先が設定されていない（ＮＵＬＬ）。このため、演算部１５９によって演算されたＸ軸に対する指令値“α”は、対応情報１４５に基づいて出力先が特定されないことになる。
【０１４１】
そこで、制御装置１００のプログラム実行部１５０は、さらに第１異常判断部１９１を含んでいてもよい。第１異常判断部１９１は、たとえば、特定プログラムにおけるファンクションブロック７００やファンクションブロック７５０によって規定され、対応情報１４５に基づいて特定することができない出力先に対応する軸について演算部１５９によって指令値が演算された場合、異常であると判断する。そして、第１異常判断部１９１によって異常であると判断された場合、特定プログラムや変更プログラムなどの制御プログラム、あるいは他のプログラムの実行が禁止されるとともに、図示しないＬＥＤによる点灯や点滅、あるいはサポート装置２００や表示装置４００による警告画像の表示などによって、ユーザに異常が報知される。
【０１４２】
なお、図９に示す例は、第２工程において指令値が演算されたが、対応情報１４５が第１工程のまま変更されていないという異常を示す例であるが、たとえば、第１工程において指令値が演算されたが、対応情報１４５が第２工程のまま変更されていないという異常についても、第１異常判断部１９１は、異常であると判断することができ、この場合であっても、プログラムの実行を禁止したり、警告を発したりするなどの第１異常処理が実行される。
【０１４３】
このように、制御装置１００は、対応情報１４５に基づいて特定することができない出力先に対応する軸について演算部１５９によって指令値１４６が演算された場合、異常であると判断するとともに、プログラムの実行を禁止したり、警告を発したりするなどの第１異常処理を実行してもよい。
【０１４４】
なお、第１異常判断部１９１は、特定プログラムにおけるファンクションブロック７００やファンクションブロック７５０によって規定されるものに限らず、特定プログラムとは別の図示しない監視プログラムによって規定されてもよい。すなわち、対応情報１４５に基づいて特定することができない出力先に対応する軸について指令値が出力されたか否かを、監視プログラムによって第三者的に監視するものであってもよい。
【０１４５】
図１０は、本実施の形態に係る制御装置１００が実行する第２異常処理を説明するための模式図である。第２異常処理とは、対応情報において、一の出力先に対して複数の軸が対応する場合に制御装置１００によって実行される異常処理である。
【０１４６】
たとえば、図１０には、第２工程において、対応情報１４５において一の出力先（ドライバ）に対して複数の軸が対応するという異常を示す例である。具体的には、本来、第２工程においては、Ｘ軸に対して“ドライバ１”および“ドライバ２”の両方が設定され、Ｙ軸に対して“ドライバ３”が設定され、Ｚ軸に対して“ドライバ４”が設定され、各ドライバ５２０はそれぞれ一の軸のみが対応する。しかし、この例では、何らかの原因（たとえば、ユーザによるプログラミングの間違い、制御装置１００による処理異常など）により、ドライバ２に対してＸ軸およびＸ”軸の両方が対応付けられている。このため、演算部１５９によって、Ｘ”軸に対応する指令値が演算されていないにも関わらず、出力先としてはＸ”軸が設定されることになる。
【０１４７】
そこで、制御装置１００のプログラム実行部１５０は、さらに第２異常判断部１９２を含んでいてもよい。第２異常判断部１９２は、たとえば、特定プログラムにおけるファンクションブロック７００やファンクションブロック７５０によって規定され、対応情報１４５において、一の出力先に対して複数の軸が対応する場合、異常であると判断する。そして、第２異常判断部１９２によって異常であると判断された場合、特定プログラムや変更プログラムなどの制御プログラム、あるいは他のプログラムの実行が禁止されるとともに、図示しないＬＥＤによる点灯や点滅、あるいはサポート装置２００や表示装置４００による警告画像の表示などによって、ユーザに異常が報知される。
【０１４８】
なお、図１０に示す例は、第２工程において、対応情報１４５において一の出力先（ドライバ）に対して複数の軸が対応するという異常を示す例であるが、たとえば、第１工程において、対応情報１４５において一の出力先（ドライバ）に対して複数の軸が対応するという異常についても、第２異常判断部１９２は、異常であると判断することができ、この場合であっても、プログラムの実行を禁止したり、警告を発したりするなどの第２異常処理が実行される。
【０１４９】
このように、制御装置１００は、対応情報１４５において、一の出力先に対して複数の軸が対応する場合、異常であると判断するとともに、プログラムの実行を禁止したり、警告を発したりするなどの第２異常処理を実行してもよい。
【０１５０】
なお、第２異常判断部１９２は、特定プログラムにおけるファンクションブロック７００やファンクションブロック７５０によって規定されるものに限らず、変更プログラムにおけるファンクションブロック６００やファンクションブロック６５０によって規定されてもよい。また、第２異常判断部１９２は、特定プログラムや変更プログラムとは別の図示しない監視プログラムによって規定されてもよい。すなわち、対応情報１４５において、一の出力先に対して複数の軸が対応するか否かを、監視プログラムによって第三者的に監視するものであってもよい。
【０１５１】
＜Ｇ．作用効果＞
以上のように、本実施の形態に係る制御装置１００は、特定プログラムにおけるファンクションブロック７００やファンクションブロック７５０を実行することで、指令値の演算対象である１つ以上の軸のそれぞれに対応する出力先を特定するための対応情報１４５に基づいて、演算された指令値の出力先を特定することができる。さらに、制御装置１００は、変更プログラムにおけるファンクションブロック６００やファンクションブロック６５０を実行することで、所定条件が成立したときに、対応情報１４５において、演算対象である１つ以上の軸のそれぞれに対応する出力先を変更する。このため、制御対象となる全ての軸の組合せについて対応する出力先を特定するための対応情報を予め準備して記憶しておく必要がなく、所定条件が成立したときに、対応情報において、演算対象である１つ以上の軸のそれぞれに対応する出力先を動的に変更するだけで、出力先を適切に特定することができる。これにより、記憶領域を増大させることなく制御対象となる軸の組合せを変更することができる。
【０１５２】
特定プログラムおよび変更プログラムは、ファンクションブロックで規定されているため、制御装置１００は、再利用性のある制御命令に従って、指令値の演算、出力先の特定、および対応情報の内容変更を実現することができる。
【０１５３】
制御装置１００は、対応情報１４５を用いて指令値の出力先を特定中である間、ステータス１４４(「Status」）のデータを実行中（Executing）に書き換え、軸グループの命令に対してインターロックを掛けて、軸グループに対して対応情報１４５を変更する処理の実行を禁止する。これにより、出力先の特定のために対応情報１４５が使用されている間は、対応情報１４５の内容が変更されないため、対応情報１４５の内容変更が出力先の特定に影響を与えてしまうことがない。
【０１５４】
制御装置１００は、対応情報１４５に基づいて特定することができない出力先に対応する軸について演算部１５９によって指令値が演算された場合、第１異常判断部１９１によって異常であると判断する。これにより、対応情報１４５に基づいて特定することができない出力先に対応する軸について指令値が演算された場合に、異常であると判断することができる。
【０１５５】
制御装置１００は、対応情報１４５において、一の出力先に対して複数の軸が対応する場合、第２異常判断部１９２によって異常であると判断する。これにより、対応情報１４５において、一の出力先に対して複数の軸が対応する場合に、異常であると判断することができる。
【０１５６】
制御装置１００は、演算部１５９、特定部１５８、および変更部１５６に対する制御命令の実行中に所定のイベントが発生したとき、または外部からの指令が入力されたときに、対応情報１４５において、演算対象である１つ以上の軸のそれぞれに対応する出力先を変更するため、対応情報の内容を動的に変更することができる。
【０１５７】
＜Ｈ．付記＞
以上のように、本実施の形態では以下のような開示を含む。
【０１５８】
（構成１）
複数のモータ（５２２＿１，５２２＿２，５２２＿３，５２２＿４）を制御する制御装置（１００）であって、
座標系を構成する複数の軸（Ｘ軸，Ｙ軸，Ｚ軸，Ｘ’軸，Ｘ”軸）のうちの少なくとも１つ以上の軸について指令値を演算する演算部（１５９）と、
前記複数のモータのそれぞれに対応する出力先（５２０＿１，５２０＿２，５２０＿３，５２０＿４）のうち、前記演算部における演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を特定するための対応情報（１４５）を記憶する記憶部（１９５）と、
前記記憶部によって記憶された前記対応情報に基づいて、前記演算部によって演算された前記指令値の前記出力先を特定する特定部（１５８）と、
所定条件が成立したときに、前記記憶部によって記憶された前記対応情報において、前記演算部における演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を変更する変更部（１５６）とを備える、制御装置。
【０１５９】
（構成２）
前記演算部（１５９）、前記特定部（１５８）、および前記変更部（１５６）は、ファンクションブロックの形で規定される制御命令に従って動作する、構成１に記載の制御装置。
【０１６０】
（構成３）
前記変更部（１５６）は、前記特定部（１５８）によって前記対応情報（１４５）に基づいて前記出力先が特定されている間、当該対応情報を変更しない、構成１または構成２に記載の制御装置。
【０１６１】
（構成４）
前記対応情報（１４５）に基づいて特定することができない前記出力先に対応する前記軸について前記演算部（１５９）によって前記指令値が演算された場合、異常であると判断する第１異常判断部（１９１）をさらに備える、構成１〜構成３のいずれかに記載の制御装置。
【０１６２】
（構成５）
前記対応情報（１４５）において、一の前記出力先に対して前記複数の軸が対応する場合、異常であると判断する第２異常判断部（１９２）をさらに備える、構成１〜構成４のいずれかに記載の制御装置。
【０１６３】
（構成６）
前記所定条件は、前記演算部（１５９）、前記特定部（１５８）、および前記変更部（１５６）に対する制御命令の実行中に所定のイベントが発生したとき、または外部からの指令が入力されたときに成立する、構成１〜構成５のいずれかに記載の制御装置。
【０１６４】
（構成７）
複数のモータ（５２２＿１，５２２＿２，５２２＿３，５２２＿４）を制御する制御装置（１００）における制御方法（制御プログラム３０で規定される制御方法）であって、
座標系を構成する複数の軸（Ｘ軸，Ｙ軸，Ｚ軸，Ｘ’軸，Ｘ”軸）のうちの少なくとも１つ以上の軸について指令値を演算するステップと、
前記複数のモータのそれぞれに対応する出力先（５２０＿１，５２０＿２，５２０＿３，５２０＿４）のうち、前記演算するステップにおける演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を特定するための対応情報（１４５）を記憶するステップと、
前記記憶するステップによって記憶された前記対応情報に基づいて、前記演算するステップによって演算された前記指令値の前記出力先を特定するステップと、
所定条件が成立したときに、前記記憶するステップによって記憶された前記対応情報において、前記演算するステップにおける演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を変更するステップとを含む、制御方法。
【０１６５】
（構成８）
複数のモータ（５２２＿１，５２２＿２，５２２＿３，５２２＿４）を制御する制御装置（１００）が実行する制御プログラム（３０）であって、
座標系を構成する複数の軸（Ｘ軸，Ｙ軸，Ｚ軸，Ｘ’軸，Ｘ”軸）のうちの少なくとも１つ以上の軸について指令値を演算するステップと、
前記複数のモータのそれぞれに対応する出力先（５２０＿１，５２０＿２，５２０＿３，５２０＿４）のうち、前記演算するステップにおける演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を特定するための対応情報（１４５）に基づいて、前記演算するステップによって演算された前記指令値の前記出力先を特定するステップと、
所定条件が成立したときに、前記対応情報において、前記演算するステップにおける演算対象である前記１つ以上の軸のそれぞれに対応する前記出力先を変更するステップとを含む、制御プログラム。
【０１６６】
今回開示された各実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組み合わせても、実施することが意図される。
【符号の説明】
【０１６７】
１  制御システム、２  フィールドネットワーク、６  上位ネットワーク、３０  制御プログラム、３４  システムプログラム、１００  制御装置、１０２  プロセッサ、１０４  チップセット、１０６  主メモリ、１０８  ストレージ、１１０  上位ネットワークコントローラ、１１２  コントローラ、１１４  メモリカードインターフェイス、１１６  メモリカード、１２０  内部バスコントローラ、１２２  ユニット、１３０  フィールドネットワークコントローラ、１４０  軸グループ構造体、１４１，１４２，１４６，１４７  指令値、１４３  パラメータ、１４４  ステータス、１４５  対応情報、１５０  プログラム実行部、１５２  制御命令解釈部、１５４  ライブラリ、１５６  変更部、１５８  特定部、１５９  演算部、１８０  入出力リフレッシュ部、１９１  第１異常判断部、１９２  第２異常判断部、１９５  記憶部、２００  サポート装置、３００  サーバ装置、４００  表示装置、５００  フィールドデバイス、５１０  リモートＩ／Ｏ装置、５２０，５３０  サーボドライバ、５２２，５３２  サーボモータ、５４０  工作機械、５４１，５４２  アーム、５４３  前部、５４４  本体、５４５  土台、５５０  搬送装置、５５４  作業台、６００，６５０，７００，７５０  ファンクションブロック。
【図１】
2020013317.tif 000003
【図２】
2020013317.tif 000004
【図３】
2020013317.tif 000005
【図４】
2020013317.tif 000006
【図５】
2020013317.tif 000007
【図６】
2020013317.tif 000008
【図７】
2020013317.tif 000009
【図８】
2020013317.tif 000010
【図９】
2020013317.tif 000011
【図１０】
2020013317.tif 000012