(57)【特許請求の範囲】
【請求項１】
ＣＰＵユニットと一つ以上の拡張ユニットとを有し、ユーザプログラムにしたがって同期制御を実行するプログラマブル・ロジック・コントローラに接続され、ユーザプログラムの作成を支援するプログラム作成支援装置であって、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続され、それぞれの入力軸の位置を出力軸の位置へ変換する変換動作を行う複数の仮想的な機構部品を表示する表示部と、
前記複数の仮想的な機構部品のそれぞれには、各機構部品の変換動作を規定する演算処理が予め用意されており、予め用意された前記演算処理に使用され、前記機構部品それぞれの変換動作を定義するパラメータを設定する設定部と、
前記表示部において表示された前記複数の仮想的な機構部品のうち、前記予め用意された演算処理により規定される変換動作を汎用言語のユーザプログラムに従う変換動作に変更設定される機構部品を指定する指定部と、
前記指定部により指定された前記機構部品が実行する変換動作を、当該機構部品の入力軸と出力軸を変数とし、当該入力軸の位置を当該出力軸の位置へ変換する演算式により規定する汎用言語のユーザプログラムの編集を受け付ける受付部と、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続された前記複数の仮想的な機構部品のうち、前記指定部により指定されていない機構部品については前記設定部により設定されたパラメータと前記予め用意された演算処理とにより規定された変換動作を前記拡張ユニットに実行させ、前記複数の仮想的な機構部品のうち前記指定部により指定された機構部品については前記予め用意された演算処理により定義される変換動作に代えて、前記受付部を介して編集された前記汎用言語のユーザプログラムに従う変換動作を前記拡張ユニットに実行させるために、前記パラメータと、前記ユーザプログラムと、を前記拡張ユニットへ転送する転送部と、
を有することを特徴とするプログラム作成支援装置。
【請求項２】
前記複数の仮想的な機構部品は、
第一入力軸、第二入力軸および出力軸を有し、前記第一入力軸の位置と前記第二入力軸の位置との差分を当該出力軸の位置として出力する差動ギアと、
入力軸と、当該入力軸の回転速度に相関した異なる回転速度で回転する出力軸とを有する可変ギアと、
入力軸と出力軸とを有し、当該入力軸の回転を当該出力軸へ伝達する伝達状態と、伝達しない非伝達とを切り替えるクラッチと、
入力軸と出力軸とを有し、当該入力軸の位相を前記出力軸の相対座標に変換するカムと
のうちから選択された機構部品であることを特徴とする請求項１に記載のプログラム作成支援装置。
【請求項３】
前記差動ギアの一つである第一差動ギアの出力軸に前記可変ギアの入力軸が連結されており、前記可変ギアの出力軸に前記クラッチの一つである第一クラッチの入力軸が連結されており、前記第一クラッチの出力軸に前記差動ギアの一つである第二差動ギアの第一入力軸が連結されており、前記第二差動ギアの出力軸に前記クラッチの一つである第二クラッチの入力軸が連結されており、前記第二クラッチの出力軸に、前記カムの応答遅れを補正する進角補正部の入力軸が接続されており、前記進角補正部の出力軸に前記カムの入力軸が接続されており、前記カムの出力軸には周波数変動を低減する出力フィルタの入力軸に接続されており、前記第二差動ギアの第二入力軸に第三クラッチを介して補助軸が接続されていることを特徴とする請求項２に記載のプログラム作成支援装置。
【請求項４】
前記ユーザプログラムにより記述される関数の名称を入力する関数名入力部をさらに有することを特徴とする請求項１ないし３のいずれか一項に記載のプログラム作成支援装置。
【請求項５】
前記ユーザプログラムをコンパイルとしてオブジェクトコードを生成するコンパイラをさらに有し、
前記転送部は前記ユーザプログラムとして前記オブジェクトコードを転送することを特徴とする請求項１ないし４のいずれか一項に記載のプログラム作成支援装置。
【請求項６】
前記コンパイラは、前記ユーザプログラムにより記述された関数の型が前記プログラマブル・ロジック・コントローラによって要求されている型と一致しているかどうかをチェックすることを特徴とする請求項５に記載のプログラム作成支援装置。
【請求項７】
前記拡張ユニットは、
前記転送部から転送されてきた前記ユーザプログラムのオブジェクトコードと前記パラメータを保持する保持部と、
前記複数の仮想的な機構部品のうち前記指定部により指定された機構部品については当該機構部品に対応した前記ユーザプログラムにしたがって当該機構部品の出力軸の位置を算出し、前記指定部により指定されていない機構部品について前記設定部により設定されたパラメータにしたがって入力軸の位置に対応する出力軸の位置を算出する同期制御部と
を有することを特徴とする請求項１ないし６のいずれか一項に記載のプログラム作成支援装置。
【請求項８】
ＣＰＵユニットと一つ以上の拡張ユニットとを有し、ユーザプログラムにしたがって同期制御を実行するプログラマブル・ロジック・コントローラに接続されたコンピュータにおいて実行され、ユーザプログラムの作成を支援するプログラム作成支援方法であって、
前記同期制御の同期主軸から前記同期制御の同期従軸まで順番に接続され、それぞれの入力軸の位置を出力軸の位置へ変換する変換動作を行う複数の仮想的な機構部品を表示部に表示する表示工程と、
前記複数の仮想的な機構部品のそれぞれには、各機構部品の変換動作を規定する演算処理が予め用意されており、予め用意された前記演算処理に使用され、前記機構部品それぞれの変換動作を定義するパラメータを設定する設定工程と、
前記表示部に表示された前記複数の仮想的な機構部品のうち、前記予め用意された演算処理により規定される変換動作を汎用言語のユーザプログラムに従う変換動作に変更設定される機構部品の指定を受け付ける指定工程と、
前記指定工程において指定された前記機構部品が実行する変換動作を、当該機構部品の入力軸と出力軸を変数とし、当該入力軸の位置を当該出力軸の位置へ変換する演算式により規定する汎用言語のユーザプログラムの編集を受け付ける工程と、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続された前記複数の仮想的な機構部品のうち、前記指定工程で指定されていない機構部品については前記設定工程で設定されたパラメータと前記予め用意された演算処理とにより規定された変換動作を前記拡張ユニットに実行させ、前記複数の仮想的な機構部品のうち前記指定工程で指定された機構部品については前記予め用意された演算処理により定義される変換動作に代えて、前記受け付ける工程において編集された前記汎用言語のユーザプログラムに従う変換動作を前記拡張ユニットに実行させるために、前記パラメータと、前記ユーザプログラムと、を前記拡張ユニットへ転送する転送工程と、
を有することを特徴とするプログラム作成支援方法。
【請求項９】
請求項８に記載のプログラム作成支援方法の各工程をコンピュータに実行させるプログラム。
【請求項１０】
ＣＰＵユニットと、一つ以上の拡張ユニットと、当該ＣＰＵユニットまたは一つ以上の拡張ユニットのいずれかに接続されてユーザプログラムの作成を支援するプログラム作成支援装置とを有し、ユーザプログラムにしたがって同期制御を実行するプログラマブル・ロジック・コントローラであって、
前記プログラム作成支援装置であって、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続され、それぞれの入力軸の位置を出力軸の位置へ変換する変換動作を行う複数の仮想的な機構部品を表示する表示部と、
前記複数の仮想的な機構部品のそれぞれには、各機構部品の変換動作を規定する演算処理が予め用意されており、予め用意された前記演算処理に使用され、前記機構部品それぞれの変換動作を定義するパラメータを設定する設定部と、
前記表示部において表示された前記複数の仮想的な機構部品のうち、前記予め用意された演算処理により規定される変換動作を汎用言語のユーザプログラムに従う変換動作に変更設定される機構部品を指定する指定部と、
前記指定部により指定された前記機構部品が実行する変換動作を、当該機構部品の入力軸と出力軸を変数とし、当該入力軸の位置を当該出力軸の位置へ変換する演算式により規定する汎用言語のユーザプログラムの編集を受け付ける受付部と、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続された前記複数の仮想的な機構部品のうち、前記指定部により指定されていない機構部品については前記設定部により設定されたパラメータと前記予め用意された演算処理とにより規定された変換動作を前記拡張ユニットに実行させ、前記複数の仮想的な機構部品のうち前記指定部により指定された機構部品については前記予め用意された演算処理により定義される変換動作に代えて、前記受付部を介して編集された前記汎用言語のユーザプログラムに従う変換動作を前記拡張ユニットに実行させるために、前記パラメータと、前記ユーザプログラムと、を前記拡張ユニットへ転送する転送部と、
を有し、
前記拡張ユニットは、
前記転送部から転送されてきた前記ユーザプログラムのオブジェクトコードと前記パラメータを保持する保持部と、
前記複数の仮想的な機構部品のうち前記指定部により指定された機構部品については当該機構部品に対応した前記ユーザプログラムにしたがって当該機構部品の出力軸の位置を算出し、前記指定部により指定されていない機構部品について前記設定部により設定されたパラメータにしたがって入力軸の位置に対応する出力軸の位置を算出する同期制御部と
を有することを特徴とするプログラマブル・ロジック・コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブル・ロジック・コントローラ、プログラム作成支援装置、プログラム作成支援方法およびプログラムに関する。
【背景技術】
【０００２】
プログラマブル・ロジック・コントローラ（以下、ＰＬＣと称す）は、ＦＡ（Factory Automation）制御システムにおいて広く使用されているシーケンス制御装置であり、ラダープログラムと呼ばれる専用プログラムにしたがって動作する。操作者（オペレータ）は、リミットスイッチ、センサ、温度計などの入力機器や、電磁開閉器、ソレノイド、モータ、アクチュエータ、シリンダ、リレー、位置決めシステムなどの出力機器をＰＬＣに接続し、ラダープログラムによってこれらの被制御機器を制御する。
【０００３】
オペレータ（ユーザ）は、パーソナルコンピュータ（以下、ＰＣと称す）などのプログラム作成支援装置上でラダープログラムを作成し、ＰＣとＰＬＣを接続し、ラダープログラムをＰＬＣの記憶部に記憶させる。ＰＬＣの記憶部にはデバイス情報等の各種データも記憶される。デバイス情報とは、入力機器からの入力状態、出力機器への出力状態およびラダープログラム上で設定される内部リレー（補助リレー）、タイマー、カウンタ、データメモリ等の状態を示す情報である。デバイスとは、デバイス情報を格納するために設けられたメモリ上の領域を指す名称である。ＰＬＣにプログラム作成支援装置を接続することで、ＰＬＣが保持しているデバイス情報（デバイスの値）をプログラム作成支援装置に表示させ、視認することもできる。
【０００４】
ところで、製品の工場においてカム機構やリンク機構のような機構を使用してある動きに連動して別の動きを制御する制御が存在した（機械的な同期制御）。旧来、同期制御は実際にカム機構やリンク機構、ギア等を組みあわせて実現されていた。このような実現方法では、例えばベルトコンベヤーの速度に回転カッターを同期させる場合にその速度の比率を変更するために実際に機構部品（ギア等）を交換して実現していた。機構部品の交換作業は大変面倒である。そこで、ＰＬＣを用いて減速ギアを電気的に実現する手法が考え出された。たとえば、ＰＬＣは、モータの回転数を可変させることで、減速ギアのギア比を変更したことと同様の効果を実現することができる。このように、ＰＬＣによって機構部品の動作を模擬することが可能になるものの、ＰＬＣによって模擬される機構部品が何であるかをＰＬＣのオペレータに理解しやすくすることも重要である。ＰＬＣは一般に基本ユニット（ＣＰＵユニット）と拡張ユニットにより構成される。特許文献１によれば、拡張ユニットに接続された外部機器の軸の動作を同期制御するために、プログラム作成支援装置において入力軸に対する出力軸の動作を演算するための各種のパラメータを設定する方法が記載されている。また、特許文献１には、入力軸に対する出力軸の動作を視覚的に理解しやすくするために、可変ギアの画像やカムの画像を表示して各パラメータの決定を補助することも提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１０２４７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１によれば、主軸から出力軸までの間に関与する複数の仮想的な機構部品の画像を表示することで、各機構部品ごとのパラメータをオペレータに入力させやすくしている。たとえば、可変ギアの画像を表示することで、入力軸と出力軸とのギア比などのパラメータを入力しやすくしている。モーションユニットなどの拡張ユニットは、設定されたパラメータにしたがって機構部品の動作を模擬した演算を実行することで外部機器を制御する。これにより、従来はカムやリンクなどの機構部品の機械的な連携により実現されていた動作を電気的に実現することが可能となっている。このような仮想的な機構部品に対応する演算処理は固定されており、オペレータは演算処理に使用されるパラメータを設定できるにすぎなかった。そのため、従来は、予め用意されていない仮想的な機構部品に対応する演算処理を実現することが困難であった。なお、外部機器の全ての動作を拡張ユニットで実行されるプログラムでフルプログラミングすることも考えられるが、これでは主軸から出力軸までの間に連結される機構部品を連想しにくいといった欠点がある。また、フルプログラミングを担当するプログラマーは各機構部品の動作タイミングや相互的な関係などを新たに考慮せねばならず、非常に負担が重くなる。そこで、本発明は、主軸から出力軸までの間に連結される複数の仮想的な機構部品のうちの一部をユーザがプログラミング可能とすることで同期制御の自由度を増加させることを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、たとえば、
ＣＰＵユニットと一つ以上の拡張ユニットとを有し、ユーザプログラムにしたがって同期制御を実行するプログラマブル・ロジック・コントローラに接続され、ユーザプログラムの作成を支援するプログラム作成支援装置であって、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続され、それぞれの入力軸の位置を出力軸の位置へ変換する変換動作を行う複数の仮想的な機構部品を表示する表示部と、
前記複数の仮想的な機構部品のそれぞれには、各機構部品の変換動作を規定する演算処理が予め用意されており、予め用意された前記演算処理に使用され、前記機構部品それぞれの変換動作を定義するパラメータを設定する設定部と、
前記表示部において表示された前記複数の仮想的な機構部品のうち、前記予め用意された演算処理により規定される変換動作を汎用言語のユーザプログラムに従う変換動作に変更設定される機構部品を指定する指定部と、
前記指定部により指定された前記機構部品が実行する変換動作を、当該機構部品の入力軸と出力軸を変数とし、当該入力軸の位置を当該出力軸の位置へ変換する演算式により規定する汎用言語のユーザプログラムの編集を受け付ける受付部と、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続された前記複数の仮想的な機構部品のうち、前記指定部により指定されていない機構部品については前記設定部により設定されたパラメータと前記予め用意された演算処理とにより規定された変換動作を前記拡張ユニットに実行させ、前記複数の仮想的な機構部品のうち前記指定部により指定された機構部品については前記予め用意された演算処理により定義される変換動作に代えて、前記受付部を介して編集された前記汎用言語のユーザプログラムに従う変換動作を前記拡張ユニットに実行させるために、前記パラメータと、前記ユーザプログラムと、を前記拡張ユニットへ転送する転送部と、
を有することを特徴とするプログラム作成支援装置を提供する。
【発明の効果】
【０００８】
本発明によればＰＬＣにおける同期制御の自由度を増加させるこが可能となる。
【図面の簡単な説明】
【０００９】
【図１】ＰＬＣシステムの一例を示す図
【図２】ユーザプログラムの一例を示す図
【図３】プログラム作成支援装置の一例を示す図
【図４】ＰＬＣの一例を示す図
【図５】スキャンタイムを説明するための図
【図６】プログラム作成支援装置の機能を示す図
【図７】ユーザインタフェースの一例を示す図
【図８】ユーザインタフェースの一例を示す図
【図９】ユーザインタフェースの一例を示す図
【図１０】ユーザインタフェースの一例を示す図
【図１１】基本ユニットや拡張ユニットの機能を示す図
【図１２】プログラム作成支援方法を示すフローチャート
【図１３】同期制御を示すフローチャート
【発明を実施するための形態】
【００１０】
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【００１１】
はじめにプログラマブル・ロジック・コントローラ（ＰＬＣ、単にプログラマブルコントローラと呼ばれてもよい）を当業者にとってよりよく理解できるようにするために、一般的なＰＬＣの構成とその動作について説明する。
【００１２】
図１は、本発明の実施の形態によるプログラマブル・ロジック・コントローラシステムの一構成例を示す概念図である。図１に示すように、このシステムは、ラダープログラムなどのユーザプログラムの編集を行うためのプログラム作成支援装置１と、工場等に設置される各種制御装置を統括的に制御するためのＰＬＣ（プログラマブル・ロジック・コントローラ）２とを備えている。ユーザプログラムは、ラダー言語やモーションフローなどのグラフィカルプログラミング言語を用いて作成されてもよいし、Ｃ言語などの高級プログラミング言語を用いて作成されてもよい。以下では、説明の便宜上、ユーザプログラムはラダープログラムとする。ＰＬＣ２は、ＣＰＵが内蔵された基本ユニット３と１つないし複数の拡張ユニット４を備えている。基本ユニット３に対して１つないし複数の拡張ユニット４が着脱可能となっている。基本ユニット３はＣＰＵユニットと呼ばれることもある。
【００１３】
基本ユニット３には、表示部５及び操作部６が備えられている。表示部５には、基本ユニット３に取り付けられている各拡張ユニット４の動作状況などを表示することができ、表示部５の表示内容は、操作部６を操作することにより切り替えることができる。表示部５には、通常、ＰＬＣ２内のデバイスの現在値（デバイス値）やＰＬＣ２内で生じたエラー情報などが表示される。なお、デバイスとは、デバイス値を格納するために設けられたメモリ上の領域を指す名称であり、デバイスメモリと呼ばれてもよい。デバイス値とは、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー（補助リレー）、タイマー、カウンタ、データメモリ等の状態を示す情報である。
【００１４】
拡張ユニット４は、ＰＬＣ２の機能を拡張するために用意されており、基本ユニット３に対して側方から取り付けられる。１つ目の拡張ユニット４は、基本ユニット３に対して側方から直接的に取り付けられる。２つ目以降の拡張ユニット４は、既に取り付けられている拡張ユニット４に対して、側方から直列的に取り付けられる。たとえば、基本ユニット３の右側面と拡張ユニット４の左側面とが連結面になっている。同様に、１つ目の拡張ユニット４の右側面の形状等は基本ユニット３の右側面とほぼ同じであるため、１つ目の拡張ユニット４の右側面に２つ目の拡張ユニット４の左側面が連結される。このような連結方式は、数珠つなぎ方式とかデイジーチェーン方式と呼ばれてもよい。各連結面にはコネクタが設けられており、通信や電力供給を行うためのバスもコネクタを介して連結される。このようにして、基本ユニット３と複数の拡張ユニット４が直列的に取り付けられると、各拡張ユニット４内に備えられた配線（例：バス）を介して、各拡張ユニット４が基本ユニット３に対して通信可能に接続される。各拡張ユニット４には、その拡張ユニット４の機能に対応する被制御装置１６（図４）が接続され、これにより、各被制御装置１６が拡張ユニット４を介して基本ユニット３に接続される。被制御装置１６には、センサなどの入力装置や、アクチュエータなどの出力装置が含まれる。
【００１５】
プログラム作成支援装置１は、たとえば、携帯可能ないわゆるノートタイプやタブレットタイプのパーソナルコンピュータであって、表示部７及び操作部８を備えている。ＰＬＣ２を制御するためのユーザプログラムの一例であるラダープログラムは、プログラム作成支援装置１を用いて作成され、その作成されたラダープログラムは、プログラム作成支援装置１内でニモニックコードに変換される。そして、プログラム作成支援装置１を、ＵＳＢ(Universal Serial Bus)などの通信ケーブル９を介してＰＬＣ２の基本ユニット３に接続し、ニモニックコードに変換されたラダープログラムをプログラム作成支援装置１から基本ユニット３に送ると、そのラダープログラムが基本ユニット３内でマシンコードに変換され、基本ユニット３に備えられたメモリ内に記憶される。なお、ここではニモニックコードを基本ユニット３に送信するようにしているが、本発明はこれに限られず、例えばニモニックコードを更に中間コードに変換し、中間コードを基本ユニット３に送信するようにしてもよい。
【００１６】
なお、図１では示していないが、プログラム作成支援装置１の操作部８には、プログラム作成支援装置１に接続されたマウスなどのポインティングデバイスが含まれていてもよい。また、プログラム作成支援装置１は、ＵＳＢ以外の他の通信ケーブル９を介して、ＰＬＣ２の基本ユニット３に対して着脱可能に接続されるような構成であってもよい。
【００１７】
図２は、ラダープログラムの作成時にプログラム作成支援装置１の表示部７に表示されるラダー図Ｌｄの一例を示す図である。図２に示すように、ＰＬＣ２を制御するためのラダープログラムは、プログラム作成支援装置１の表示部７にマトリックス状に表示される複数のセル１８内に仮想デバイスのシンボル１９を適宜配置して、視覚的なリレー回路を表すラダー図Ｌｄを構築することにより作成される。
【００１８】
ラダー図Ｌｄには、たとえば、１０列×Ｎ行（Ｎは任意の自然数）のセル１８が配置されている。そして、各行のセル１８内に、図２に示す左側から右側に向かって、時系列的に仮想デバイスのシンボル１９を適宜配置することにより、視覚的なリレー回路を作成することができる。作成されるリレー回路は、１行で表される直列的なリレー回路であってもよいし、複数行に並列的に表されたリレー回路を互いに結合することにより作成された、並列的なリレー回路であってもよい。
【００１９】
図２に示すリレー回路は、入力装置からの入力信号に基づいてオン／オフされる３つの仮想デバイス（以下、「入力デバイス」と呼ぶ。）のシンボル１９ａ，１９ｂ，１９ｃと、出力装置の動作を制御するためにオン／オフされる仮想デバイス（以下、「出力デバイス」と呼ぶ。）のシンボル１９ｄとが適宜結合されることにより構成されている。
【００２０】
各入力デバイスのシンボル１９ａ，１９ｂ，１９ｃの上方に表示されている文字（「Ｒ０００１」、「Ｒ０００２」及び「Ｒ０００３」）は、その入力デバイスのデバイス名（アドレス名）２１を表している。各入力デバイスのシンボル１９ａ，１９ｂ，１９ｃの下方に表示されている文字（「フラグ１」、「フラグ２」及び「フラグ３」）は、その入力デバイスに対応付けられたデバイスコメント２２を表している。出力デバイスのシンボル１９ｄの上方に表示されている文字（「原点復帰」）は、その出力デバイスの機能を表す文字列からなるラベル２３である。
【００２１】
図２に示す例では、デバイス名「Ｒ０００１」及び「Ｒ０００２」にそれぞれ対応する２つの入力デバイスのシンボル１９ａ，１９ｂが直列的に結合されることにより、ＡＮＤ回路が構成されている。また、これらの２つの入力デバイスのシンボル１９ａ，１９ｂからなるＡＮＤ回路に対して、デバイス名「Ｒ０００３」に対応する入力デバイスのシンボル１９ｃが並列的に結合されることにより、ＯＲ回路が構成されている。すなわち、このリレー回路では、２つのシンボル１９ａ，１９ｂに対応する入力デバイスがいずれもオンした場合、又は、シンボル１９ｃに対応する入力デバイスがオンした場合にのみ、シンボル１９ｄに対応する出力デバイスがオンされるようになっている。
【００２２】
図３は、図１のプログラム作成支援装置１の電気的構成について説明するためのブロック図である。図３に示すように、プログラム作成支援装置１には、ＣＰＵ２４、表示部７、操作部８、記憶装置２５及び通信部２６が備えられている。表示部７、操作部８、記憶装置２５及び通信部２６は、それぞれＣＰＵ２４に対して電気的に接続されている。記憶装置２５は、少なくともＲＡＭを含む構成であり、プログラム記憶部２７と、編集ソフト記憶部２８とを備えている。
【００２３】
ユーザは、編集ソフト記憶部２８に記憶されている編集ソフトをＣＰＵ２４に実行させて、操作部８を通じてラダープログラムを編集する。ここで、ラダープログラムの編集には、ラダープログラムの作成及び変更が含まれる。編集ソフトを用いて作成されたラダープログラムは、プログラム記憶部２７に記憶される。また、ユーザは、必要に応じてプログラム記憶部２７に記憶されているラダープログラムを読み出し、そのラダープログラムを、編集ソフトを用いて変更することができる。通信部２６は、通信ケーブル９を介してプログラム作成支援装置１を基本ユニット３に通信可能に接続するためのものである。
【００２４】
図４は、ＰＬＣ２の電気的構成について説明するためのブロック図である。図４に示すように、基本ユニット３には、ＣＰＵ１０、表示部５、操作部６、記憶装置１２及び通信部１４が備えられている。表示部５、操作部６、記憶装置１２、及び通信部１４は、それぞれＣＰＵ１０に電気的に接続されている。記憶装置１２は、ＲＡＭやＲＯＭ、メモリカードなどを含んでもよく、ラダープログラムなどを記憶する。記憶装置１２には、プログラム作成支援装置１から入力されたラダープログラムやユーザデータが上書きして記憶される。また、記憶装置１２には基本ユニット用の制御プログラムも格納されている。図４が示すように基本ユニット３と拡張ユニット４とは拡張バスの一種であるユニット外部バス９０を介して接続されている。なお、ユニット外部バス９０に関する通信機能は通信部１４の一部として実装されてもよい。
【００２５】
図５は、本発明の実施の形態に係るプログラマブルコントローラの基本ユニット３でのスキャンの構成を示す模式図である。図５が示すように１つのスキャンＴは、入出力のリフレッシュを行うためのユニット間通信２０１、プログラム実行２０２、ＥＮＤ処理２０４により構成されている。ユニット間通信２０１で、基本ユニット３は、ラダープログラムを実行して得られた出力データを基本ユニット３内の記憶装置１２から外部機器などに送信するとともに、受信データを含めた入力データを基本ユニット３内の記憶装置１２に取り込む。たとえば、基本ユニット３のデバイスに記憶されているデバイス値は出力リフレッシュによって拡張ユニット４のデバイスに反映される。同様に、拡張ユニット４のデバイスに記憶されているデバイス値は入力リフレッシュによって基本ユニット３のデバイスに反映される。なお、リフレッシュ以外のタイミングでデバイス値をユニット間で更新する仕組みが採用されてもよい。ただし、基本ユニット３のデバイスは基本ユニット３が随時書き換えており、同様に、拡張ユニット４のデバイスは拡張ユニット４が随時書き換えている。つまり、基本ユニット３のデバイスは基本ユニット３の内部の装置によって随時アクセス可能であり、同様に、拡張ユニット４のデバイスは拡張ユニット４の内部の装置によって随時アクセス可能になっている。基本ユニット３と拡張ユニット４との間では基本的にリフレッシュのタイミングにおいて相互にデバイス値を更新して同期する。プログラム実行２０２で、基本ユニット３は、更新された入力データを用いてプログラムを実行（演算）する。基本ユニット３はプログラムの実行によりデータを演算処理する。なお、ＥＮＤ処理とは、プログラム作成支援装置１や基本ユニット３に接続された表示器（図示せず）等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。
【００２６】
このように、プログラム作成支援装置１はユーザの操作に応じたラダープログラムを作成し、作成したラダープログラムをＰＬＣ２に転送する。ＰＬＣ２は、入出力リフレッシュ、ラダープログラムの実行およびＥＮＤ処理を１サイクル（１スキャン）として、このサイクルを周期的、すなわちサイクリックに繰り返し実行する。これにより、各種入力機器（センサ等）からのタイミング信号に基づいて、各種出力機器（モータ等）を制御する。よって、ＰＬＣ２は汎用のパーソナルコンピュータ（ＰＣ）とは全く異なる動きをする。
【００２７】
＜プログラム作成支援装置の機能＞
図６はプログラムの編集とパラメータの設定とを支援するプログラム作成支援装置１の機能を示す図である。ＣＰＵ２４は記憶装置２５のＲＯＭ（ＥＥＰＲＯＭ，ＨＤＤ，ＳＳＤなど）に記憶されている編集ソフトウエア２９を実行することで編集部３１、設定部３２、コンパイラ３３、描画部３４、指定部３５、関数名入力部３６、転送部３７およびプログラム受付部４５として機能する。なお、設定部３２、描画部３４、指定部３５、関数名入力部３６およびプログラム受付部４５は編集部３１の一機能と理解されてもよい。編集部３１の描画部３４は表示部７にラダープログラム３８を編集するためのＵＩ（ユーザインタフェース）を表示させる。さらに、編集部３１のプログラム受付部４５は操作部８を通じて入力された指示に従ってラダープログラム３８を作成し、記憶装置２５に格納する。編集部３１の描画部３４は、主軸（入力軸）から出力軸までの間に連結される仮想的な機構部品の画像を表示する機能表現ＵＩを表示部７に表示する。なお、同期制御において主軸は同期主軸とよばれ、出力軸は同期従軸と呼ばれることもある。したがって、描画部３４および表示部７は、同期制御の同期主軸から同期制御の同期従軸まで順番に接続され、それぞれの入力軸の位置を出力軸の位置へ変換する複数の仮想的な機構部品を表示する表示部として機能する。また、描画部３４および設定部３２は、各機構部品に対応する演算処理で使用される機構部品パラメータ４１の入力を受け付けるためのパラメータ入力ＵＩを表示部７に表示する。設定部３２は複数の仮想的な機構部品のそれぞれの変換動作（演算処理）を定義するパラメータを設定する設定部として機能する。
【００２８】
図７は、編集ソフトウエア２９のユーザインタフェースの一例を示す図である。ユーザインタフェースの描画処理は描画部３４が担当する。編集ソフトウエア２９のユーザインタフェース５０は、機能表現ＵＩ５１とパラメータ入力ＵＩ５２とを有している。オペレータは操作部８を通じてポインタ３０を操作し、編集対象のパラメータや機構部品を指定ないしは選択する。機能表現ＵＩ５１に示された機能表現によれば、主軸１、主軸２、補助軸および出力軸の間に各種の機構部品が連結されている。これらの軸は外部機器である被制御装置１６を同期制御するための軸に対応している。ＰＬＣの分野において同期制御とは入力軸の位置（座標）に連動して出力軸の位置を制御することをいう。
【００２９】
本実施形態では、指定部３５は、機能表現ＵＩ５１に表示された複数の仮想的な機構部品のうち予め用意された変換動作（演算処理）とは異なる変換動作を行う機構部品を指定するために、ポインタ３０による指定入力を受け付ける。編集部３１のプログラム受付部４５は指定部３５により指定された機構部品が実行する変換動作を規定する汎用言語のユーザプログラム（ソースコード３９）の入力を受け付ける。このように本実施形態では、機能表現ＵＩ５１に表示された複数の仮想的な機構部品のうち一部の機構部品の演算処理をユーザプログラムに置換することが可能となり、ユーザは自由に一部の機構部品の演算処理を定義できるようになる。なお、一部の機構部品の演算処理を代行するソースコード３９はコンパイラ３３によってユーザプログラムのオブジェクトコード４０に変換される。関数名入力部３６は一部の機構部品の演算処理を代行する関数の名称の入力を受け付ける機能である。このような関数はソースコード３９において定義される。転送部３７はラダープログラム３８を基本ユニット３に転送する。また、転送部３７はユーザプログラム（オブジェクトコード４０）、パラメータ入力ＵＩ５２を通じて設定された機構部品パラメータ４１および機構部品パラメータ４１を用いて所定の演算処理を実行する機構部品模擬モジュール４２を拡張ユニット４に転送する。機構部品模擬モジュール４２は、拡張ユニット４や被制御装置１６について予め用意された演算処理を実行するためのオブジェクトコードである。なお、機構部品模擬モジュール４２は予め拡張ユニット４のファームウエアとして実装されてもよい。複数の仮想的な機構部品の予め用意された変換動作では、パラメータを指定することにより、出力＝入力とする変換動作も可能である。また、機能表現ＵＩ５１に表示された複数の仮想的な機構部品のうち一部の機構部品の演算処理がユーザプログラムに置換される場合においても、ユーザプログラム出力=入力とする変換動作ももちろん採用可能である。これらのように、実質的には変換を行うことなく、入力をそのまま出力するような（たとえば、入力軸の位置をそのまま出力軸に出力するような）予め用意された変換動作が採用されてもよい。
【００３０】
機能表現ＵＩ５１に示されている機能表現についてさらに詳しく説明する。複数の仮想的な機構部品は、差動ギア、可変ギア、クラッチおよびカムなどを含む。差動ギアは、一般に、第一入力軸、第二入力軸および出力軸を有し、第一入力軸の位置と第二入力軸の位置との差分を当該出力軸の位置として出力する機構部品である。可変ギアは、一般に、入力軸と、当該入力軸の回転速度に相関した異なる回転速度で回転する出力軸とを有する機構部品である。クラッチは、一般に、入力軸と出力軸とを有し、当該入力軸の回転を当該出力軸へ伝達する伝達状態と、伝達しない非伝達とを切り替える機構部品である。カムは、一般に、入力軸と出力軸とを有し、当該入力軸の位相を前記出力軸の相対座標に変換する機構部品である。
【００３１】
図７によれば、差動ギアの一つである第一差動ギアの出力軸に可変ギアの入力軸が連結されている。可変ギアの出力軸にクラッチの一つである第一クラッチの入力軸が連結されている。第一クラッチの出力軸に差動ギアの一つである第二差動ギアの第一入力軸が連結されている。第二差動ギアの出力軸にクラッチの一つである第二クラッチの入力軸が連結されている。第二クラッチの出力軸に、カムの応答遅れを補正する進角補正部の入力軸が接続されている。進角補正部の出力軸にカムの入力軸が接続されている。カムの出力軸には周波数変動を低減する出力フィルタの入力軸に接続されている。第二差動ギアの第二入力軸に第三クラッチを介して補助軸が接続されている。なお、第三クラッチと補助軸との間には補助軸の位相を補正する補助軸位相補正部が連結されていてもよい。各機構部品の模擬動作（演算処理）を定義するためのパラメータは、パラメータ入力ＵＩ５２において入力される。オペレータは、たとえば、可変ギアのギア比を設定したり、クラッチの動作条件などを設定したりする。
【００３２】
図８は可変ギアを表現する模擬画像５３、可変ギアのパラメータ設定ＵＩ５４、主クラッチを表現する模擬画像５５および主クラッチのパラメータ設定ＵＩ５６の一例を示している。図８が示すように可変ギアのパラメータとしては、可変ギア比分子や可変ギア比分母などが含まれている。機構部品模擬モジュール４２は、可変ギアの入力軸の回転速度に、可変ギア比分子と可変ギア比分母とで定まるギア比を乗算して出力軸の回転速度を演算するモジュールを含んでいる。図８が示すように主クラッチのパラメータとしてはクラッチＯＮ要因やクラッチＯＦＦ要因などのパラメータが存在する。クラッチＯＮ要因とは、主クラッチがオン（入力軸と出力軸とを接続すること）となる条件である。クラッチＯＦＦ要因とは、主クラッチがオフ（入力軸と出力軸との接続を解放すること）となる条件である。その他の様々なパラメータが予め用意されうる。なお、可変ギアの模擬画像５３と主クラッチの模擬画像５５は機能表現ＵＩ５１に表示されるアイコンである。また、可変ギアのパラメータ設定ＵＩ５４と主クラッチのパラメータ設定ＵＩ５６はパラメータ入力ＵＩ５２の一部である。
【００３３】
図９は、主クラッチのパラメータ設定ＵＩ５６の他の例を示す図である。この例では、主クラッチの動作として、機構部品模擬モジュール４２により定義された動作とオペレータが汎用言語で記述した動作とのうちどちらかを選択するための選択ＵＩ５８が追加されている。さらに、オペレータが汎用言語で記述した動作（関数）の名称（関数名）を入力するためのテキスト入力部５９が設けられている。関数名入力部３６は、テキスト入力部５９を通じて入力された関数名を主クラッチの動作を定義する関数の名称として受け付ける。なお、選択ＵＩ５８によりオペレータが汎用言語で記述した動作が選択されたことや関数名は機構部品パラメータ４１の一部として転送部３７により拡張ユニット４に転送される。
【００３４】
図１０は機構部品の動作を定義するユーザプログラム（関数）を編集するための編集ＵＩ６０を示す図である。編集ＵＩ６０は編集部３１が表示部７に表示するＵＩである。この例ではユーザプログラム（関数）がＣ言語により記述されているが、他の高級言語を用いて記述されてもよい。また、この例では、主クラッチの入力軸を示す変数としてlInputMovingDistと、主クラッチの出力軸を示す変数として*plOutputMovingDistとが定義されている。オペレータは関数MyClutch1において入力軸の座標に対する出力軸の座標を求めるための演算式を自由に定義することができる。
【００３５】
＜基本ユニットと拡張ユニットの機能＞
図１１は基本ユニット３の機能と拡張ユニット４の機能を説明する図である。基本ユニット３のＣＰＵ１０は記憶装置１２に記憶されている制御プログラム４３を実行することで様々な機能を実現する。ＣＰＵ１０においてラダー実行部１１はユーザプログラムであるラダープログラム３８を実行する演算ユニットである。ユーザプログラムの一例としてラダープログラム３８を採用するが、ユーザプログラムは他のグラフィカルプログラミング言語や高級言語で記述されてもよい。ラダー実行部１１は、ラダープログラム（中間コード）３８を実行形式のコードに変換する機能を備えていてもよい。ＣＰＵ１０はラダー実行部１１に相当する演算部を、制御プログラム４３を実行するＣＰＵコアとは別のＣＰＵコアやＡＳＩＣとして備えていてもよい。記憶装置１２には、基本ユニット３のシステムプログラム（ファームウエア）である制御プログラム４３と、プログラム作成支援装置１の転送部３７により転送されてきたラダープログラム３８などが含まれている。
【００３６】
拡張ユニット４はＣＰＵ１１０を備えている。ＣＰＵ１１０は被制御装置１６を同期制御する同期制御部１１１を有している。記憶装置１１２はＲＡＭやＲＯＭなどを含む。とりわけ、ＲＡＭにはプログラム作成支援装置１の転送部３７により転送されてきたユーザプログラム（オブジェクトコード４０）、機構部品パラメータ４１および機構部品模擬モジュール４２が記憶される。同期制御部１１１は、機構部品パラメータ４１にしたがって被制御装置１６を同期制御する。たとえば、同期制御部１１１は、機構部品パラメータ４１によって機構部品模擬モジュール４２が使用されるように指定されている機構部品については機構部品パラメータ４１に含まれているパラメータが演算処理に入力される。この演算処理は機構部品模擬モジュール４２により定義されている。また、同期制御部１１１は、機構部品パラメータ４１によってユーザプログラム（オブジェクトコード４０）に置換されている機構部品についてはユーザプログラム（オブジェクトコード４０）を実行することで機構部品に対応する演算処理を実行する。このように、被制御装置１６の同期制御を実現するための複数の機構部品のうち一部の機構部品に対応する演算処理についてはユーザプログラム（オブジェクトコード４０）によって定義されている関数に置換されて実行される。
【００３７】
＜フローチャート＞
図１２はプログラム作成支援装置１のＣＰＵ２４が編集ソフトウエア２９にしたがって実行するプログラム作成支援方法を示すフローチャートである。Ｓ１１においてＣＰＵ２４（編集部３１の描画部３４）は機能表現ＵＩ５１とパラメータ入力ＵＩ５２とを表示部７に表示する。上述したように、機能表現ＵＩ５１には、同期制御の同期主軸から同期制御の同期従軸まで順番に接続された複数の仮想的な機構部品のアイコンが表示される。
【００３８】
Ｓ１２でＣＰＵ２４（編集部３１の設定部３２）はパラメータ入力ＵＩ５２に対して操作部８を通じて入力された指示に基づき複数の仮想的な機構部品のそれぞれの変換動作（演算処理）を定義するパラメータを設定する。つまり、演算処理に使用されるパラメータが入力される。
【００３９】
Ｓ１３でＣＰＵ２４（編集部３１の指定部３５）は機能表現ＵＩ５１またはパラメータ入力ＵＩ５２に対して操作部８を通じて入力された指示に基づき複数の仮想的な機構部品のうち予め用意された（デフォルトの）変換動作とは異なる変換動作を行う機構部品を指定する。この指定は、機能表現ＵＩ５１に表示された機構部品のアイコンをポインタ３０によりクリックすること、または、パラメータ入力ＵＩ５２において機構部品のパラメータを設定するエリアをポインタ３０により選択することにより実現されてもよい。また、図９に示したように、ある機構部品のパラメータ設定ＵＩ５６に含まれている選択ＵＩ５８において動作を汎用言語で記述することをポインタ３０により選択することによって、デフォルトの変換動作とは異なる変換動作を行う機構部品が指定されてもよい。
【００４０】
Ｓ１４でＣＰＵ２４（編集部３１の関数名入力部３６）はパラメータ設定ＵＩ５６のテキスト入力部５９に対して操作部８を通じて入力された指示に基づきユーザプログラムの名称（関数名）の入力を受け付ける。なお、ＣＰＵ２４が自動的に関数名を付与する場合は、関数名の入力ステップは省略されてもよい。
【００４１】
Ｓ１５でＣＰＵ２４（編集部３１のプログラム受付部４５）は編集ＵＩ６０に対して操作部８を通じて入力された指示に基づき機構部品が実行する変換動作を規定する汎用言語のユーザプログラム（ソースコード３９）の入力を受け付ける。
【００４２】
Ｓ１６でＣＰＵ２４（コンパイラ３３）は操作部８を通じてコンパイルが指示されると、ユーザプログラムのソースコード３９をコンパイルし、ユーザプログラムのオブジェクトコード４０を生成して記憶装置２５に記憶する。Ｓ１７でＣＰＵ２４（コンパイラ３３）はユーザプログラムにより記述された関数の型がＰＬＣ２によって要求されている型と一致しているかどうかをチェックし、両者が一致していなければＳ１５に戻り、ユーザプログラムの修正を受け付ける。一方で、関数の型が一致するなどシンタックスエラーが解消すると、Ｓ１８に進む。Ｓ１８でＣＰＵ２４（転送部３７）はユーザプログラム（オブジェクトコード）４０、機構部品パラメータ４１および機構部品模擬モジュール４２を含むプロジェクトデータを拡張ユニット４に転送する。なお、プロジェクトデータにはソースコード３９が含まれてもよい。この場合、プログラム作成支援装置１は、拡張ユニット４からソースコード３９を読み出して編集し、再びコンパイルして拡張ユニット４に転送してもよい。これは、ＰＬＣ２が設置された工場内でソースコード３９を修正する際に便利であろう。
【００４３】
図１３は拡張ユニット４のＣＰＵ１１０（同期制御部１１１）がファームウエアなどにしたがって実行する同期制御を示すフローチャートである。Ｓ２１でＣＰＵ１１０は、ユーザプログラムのオブジェクトコード４０、機構部品パラメータ４１および機構部品模擬モジュール４２を記憶装置２５に保持する。記憶装置２５はプログラムやデータの保持部として機能する。Ｓ２２でＣＰＵ１１０は基本ユニット３によって同期制御の開始を指示されることを待つ。基本ユニット３のラダー実行部１１はラダープログラム３８にしたがって同期制御の開始を拡張ユニット４に指示する。基本ユニット３によって同期制御の開始を指示されると、ＣＰＵ１１０はＳ２３に進む。Ｓ２３でＣＰＵ１１０は同期制御を開始する。
【００４４】
Ｓ２４でＣＰＵ１１０は複数の機構部品について連結された順番にしたがって演算対象となる機構部品を選択し、選択した機構部品の演算処理がユーザプログラム（オブジェクトコード４０）により記述されているかどうかを判定する。なお、この判定は、選択した機構部品の演算処理が機構部品模擬モジュール４２に含まれているデフォルトの（あらかじめ用意された）演算モジュールによって実行されることが指定されているかどうかを判定する処理であってもよい。各機構部品の演算処理は、ユーザプログラム（オブジェクトコード４０）内の関数または機構部品模擬モジュール４２内の演算モジュールのどちらかによって実行されるからである。なお、どちらが適用されるかは機構部品パラメータ４１に記述されている。つまり、ＣＰＵ１１０は機構部品パラメータ４１を参照することで判定処理を実行する。機構部品の演算処理がユーザプログラム（オブジェクトコード４０）により記述されているのであれば、ＣＰＵ１１０はＳ２５に進む。Ｓ２５でＣＰＵ１１０はユーザプログラムにしたがって機構部品の入力軸の座標から出力軸の座標を演算する。一方で、機構部品の演算処理が機構部品模擬モジュール４２内の演算モジュールにより定義されているのであれば、ＣＰＵ１１０はＳ２６に進む。Ｓ２６でＣＰＵ１１０は機構部品模擬モジュール４２内の演算モジュールを実行することで、機構部品の入力軸の座標から出力軸の座標を演算する。
【００４５】
このようにＣＰＵ１１０は、同期制御の同期主軸から同期従軸まで順番に接続されている複数の仮想的な機構部品について接続された順番にしたがって入力軸の座標から出力軸の座標を演算して行く。たとえば、ｉ番目の機構部品の出力軸の座標はｉ番目の機構部品に接続されているｉ＋１番目の機構部品の入力軸の座標となる。この一連の演算処理は最後に接続されている機構部品に至るまで順番に実行される。なお、１番目の機構部品の入力軸は同期制御系の全体における同期主軸となる。また、最後の機構部品の出力軸は同期制御系の全体における同期従軸（出力軸）となる。
【００４６】
＜まとめ＞
図１を用いて説明したように、本実施形態によれば、ＰＬＣ２は基本ユニット３と一つ以上の拡張ユニット４とを有し、ユーザプログラムにしたがって同期制御を実行する。プログラム作成支援装置１はＰＬＣ２に接続され、ユーザプログラムの作成を支援する。図６を用いて説明したように、表示部７は、同期制御の同期主軸から同期制御の同期従軸まで順番に接続され、それぞれの入力軸の位置を出力軸の位置へ変換する複数の仮想的な機構部品を表示する。設定部３２は複数の仮想的な機構部品のそれぞれの変換動作を定義するパラメータを設定する。指定部３５は、表示部７に表示された複数の仮想的な機構部品のうち予め用意された変換動作とは異なる変換動作を行う機構部品を指定する。プログラム受付部４５は、指定部３５により指定された機構部品が実行する変換動作を規定する汎用言語のユーザプログラムの入力を受け付ける。転送部３７は、ユーザプログラムを拡張ユニット４に実行させるためにユーザプログラムを拡張ユニット４へ転送する。上述したように、同期制御の同期主軸から同期制御の同期従軸までに接続されるすべての機構部品の動作をラダープログラムでフルプログラミングすることはユーザにとって極めて困難である。したがって、原則としては、すべての機構部品についてのデフォルトの演算動作が機構部品模擬モジュール４２によって実現される。機構部品模擬モジュール４２は、ソフトウエアの開発環境としてＰＬＣ２の製造メーカによって提供される。そのため、ユーザは各機構部品のパラメータを指定するだけで、同期制御を実現できる。また、複数の機構部品のうちの一部の機構部品についてはユーザがユーザプログラムを作成することで、自由に変換動作を定義できるようになる。つまり、本実施形態により、同期制御の自由度を増加させることが可能となる。なお、一部の機構部品について機構部品模擬モジュール４２に含まれている演算モジュールはユーザが作成したユーザプログラムに置換されることになる。なお、演算モジュールとユーザプログラムとの互換性を維持するために、演算モジュールにおけるインターフェース（入力軸や出力軸を示す引数の型と名称など）はユーザプログラムにも踏襲される。編集部３１は指定部３５により指定された機構部品用のソースコードテンプレートを記憶装置２５から読み出して、編集ＵＩ６０に表示してもよい。これによりユーザの作業量が減少しよう。
【００４７】
図７や図８を用いて説明したように、複数の仮想的な機構部品は、差動ギア、可変ギア、クラッチ、カムなどから選択されうる。たとえば、図７に示したように、差動ギアの一つである第一差動ギアの出力軸に可変ギアの入力軸が連結されてもよい。可変ギアの出力軸にクラッチの一つである第一クラッチの入力軸が連結されてもよい。第一クラッチの出力軸に差動ギアの一つである第二差動ギアの第一入力軸が連結されてもよい。第二差動ギアの出力軸にクラッチの一つである第二クラッチの入力軸が連結されてもよい。第二クラッチの出力軸に、カムの応答遅れを補正する進角補正部の入力軸が接続されてもよい。進角補正部の出力軸にカムの入力軸が接続されてもよい。カムの出力軸には周波数変動を低減する出力フィルタの入力軸に接続されてもよい。第二差動ギアの第二入力軸に第三クラッチを介して補助軸が接続されてもよい。どのような連結パターンを選択するかは被制御装置１６の種類（アプリケーション）に依存する。
【００４８】
なお、複数の仮想的な機構部品のうち一部の機構部品の変換動作がユーザプログラムによって定義されても、同期制御の同期主軸から同期制御の同期従軸までにおける複数の仮想的な機構部品の接続位置は維持される。つまり、複数の仮想的な機構部品の連結関係は基本的に変更されることはない。
【００４９】
図６や図９を用いて説明したように、ユーザプログラムにより記述される関数の名称を入力する関数名入力部３６が設けられてもよい。これにより、機構部品の変換動作（演算処理）を規定する関数の名称についてもユーザが自由に決定できるようになる。
【００５０】
ユーザプログラを記述する言語によってはコンパイル処理が必要となる。たとえば、Ｃ言語などの高級言語では、ユーザプログラムのソースコード３９をコンパイルとしてオブジェクトコード４０を生成するコンパイラ３３が必要となる。転送部３７は、ユーザプログラムとしてオブジェクトコード４０を拡張ユニット４に転送する。これにより、拡張ユニット４においてコンパイルやインタープリトする手間を省けるようになろう。コンパイラ３３は、ユーザプログラムのソースコード３９により記述された関数の型がＰＬＣ２によって要求されている型と一致しているかどうかをチェックしてもよい。これは、ＰＬＣ２によって要求されている型の関数でなければＰＬＣ２において正しく関数が機能しないからである。したがって、このようなチェックによってプログラミングエラーが解消してからオブジェクトコード４０が拡張ユニット４に転送されることになろう。
【００５１】
拡張ユニット４の記憶装置１１２は、転送部３７から転送されてきたユーザプログラムのオブジェクトコード４０とパラメータを保持する保持部として機能する。同期制御部１１１は、複数の仮想的な機構部品のうち指定部３５により指定された機構部品については当該機構部品に対応したユーザプログラムにしたがって当該機構部品の出力軸の位置を算出する。また、同期制御部１１１は、指定部３５により指定されていない機構部品について設定部３２により設定されたパラメータにしたがって入力軸の位置に対応する出力軸の位置を算出する。このように、ほとんどの機構部品の動作に関してはユーザがパラメータを設定するだけで所望の動作を達成できるようになる。また、一部の機構部品の動作についてはユーザプログラムによって自由に定義できるため、同期制御の自由度が増すであろう。
【００５２】
なお、図１２に示したプログラム作成支援方法はＣＰＵ２４が編集ソフトウエア２９を実行することで実現される。つまり、本実施形態によれば、プログラム作成支援装置１に加え、プログラム作成支援方法やプログラムも提供される。
【図１】
0006695679.tif 000002
【図２】
0006695679.tif 000003
【図３】
0006695679.tif 000004
【図４】
0006695679.tif 000005
【図５】
0006695679.tif 000006
【図６】
0006695679.tif 000007
【図７】
0006695679.tif 000008
【図８】
0006695679.tif 000009
【図９】
0006695679.tif 000010
【図１０】
0006695679.tif 000011
【図１１】
0006695679.tif 000012
【図１２】
0006695679.tif 000013
【図１３】
0006695679.tif 000014