(58)【調査した分野】(Int.Cl.,DB名)
CPUユニットと一つ以上の拡張ユニットとを有し、ユーザプログラムにしたがって同期制御を実行するプログラマブル・ロジック・コントローラに接続され、ユーザプログラムの作成を支援するプログラム作成支援装置であって、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続され、それぞれの入力軸の位置を出力軸の位置へ変換する変換動作を行う複数の仮想的な機構部品を表示する表示部と、
前記複数の仮想的な機構部品のそれぞれには、各機構部品の変換動作を規定する演算処理が予め用意されており、予め用意された前記演算処理に使用され、前記機構部品それぞれの変換動作を定義するパラメータを設定する設定部と、
前記表示部において表示された前記複数の仮想的な機構部品のうち、前記予め用意された演算処理により規定される変換動作を汎用言語のユーザプログラムに従う変換動作に変更設定される機構部品を指定する指定部と、
前記指定部により指定された前記機構部品が実行する変換動作を、当該機構部品の入力軸と出力軸を変数とし、当該入力軸の位置を当該出力軸の位置へ変換する演算式により規定する汎用言語のユーザプログラムの編集を受け付ける受付部と、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続された前記複数の仮想的な機構部品のうち、前記指定部により指定されていない機構部品については前記設定部により設定されたパラメータと前記予め用意された演算処理とにより規定された変換動作を前記拡張ユニットに実行させ、前記複数の仮想的な機構部品のうち前記指定部により指定された機構部品については前記予め用意された演算処理により定義される変換動作に代えて、前記受付部を介して編集された前記汎用言語のユーザプログラムに従う変換動作を前記拡張ユニットに実行させるために、前記パラメータと、前記ユーザプログラムと、を前記拡張ユニットへ転送する転送部と、
を有することを特徴とするプログラム作成支援装置。
前記差動ギアの一つである第一差動ギアの出力軸に前記可変ギアの入力軸が連結されており、前記可変ギアの出力軸に前記クラッチの一つである第一クラッチの入力軸が連結されており、前記第一クラッチの出力軸に前記差動ギアの一つである第二差動ギアの第一入力軸が連結されており、前記第二差動ギアの出力軸に前記クラッチの一つである第二クラッチの入力軸が連結されており、前記第二クラッチの出力軸に、前記カムの応答遅れを補正する進角補正部の入力軸が接続されており、前記進角補正部の出力軸に前記カムの入力軸が接続されており、前記カムの出力軸には周波数変動を低減する出力フィルタの入力軸に接続されており、前記第二差動ギアの第二入力軸に第三クラッチを介して補助軸が接続されていることを特徴とする請求項2に記載のプログラム作成支援装置。
前記ユーザプログラムにより記述される関数の名称を入力する関数名入力部をさらに有することを特徴とする請求項1ないし3のいずれか一項に記載のプログラム作成支援装置。
前記コンパイラは、前記ユーザプログラムにより記述された関数の型が前記プログラマブル・ロジック・コントローラによって要求されている型と一致しているかどうかをチェックすることを特徴とする請求項5に記載のプログラム作成支援装置。
CPUユニットと一つ以上の拡張ユニットとを有し、ユーザプログラムにしたがって同期制御を実行するプログラマブル・ロジック・コントローラに接続されたコンピュータにおいて実行され、ユーザプログラムの作成を支援するプログラム作成支援方法であって、
前記同期制御の同期主軸から前記同期制御の同期従軸まで順番に接続され、それぞれの入力軸の位置を出力軸の位置へ変換する変換動作を行う複数の仮想的な機構部品を表示部に表示する表示工程と、
前記複数の仮想的な機構部品のそれぞれには、各機構部品の変換動作を規定する演算処理が予め用意されており、予め用意された前記演算処理に使用され、前記機構部品それぞれの変換動作を定義するパラメータを設定する設定工程と、
前記表示部に表示された前記複数の仮想的な機構部品のうち、前記予め用意された演算処理により規定される変換動作を汎用言語のユーザプログラムに従う変換動作に変更設定される機構部品の指定を受け付ける指定工程と、
前記指定工程において指定された前記機構部品が実行する変換動作を、当該機構部品の入力軸と出力軸を変数とし、当該入力軸の位置を当該出力軸の位置へ変換する演算式により規定する汎用言語のユーザプログラムの編集を受け付ける工程と、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続された前記複数の仮想的な機構部品のうち、前記指定工程で指定されていない機構部品については前記設定工程で設定されたパラメータと前記予め用意された演算処理とにより規定された変換動作を前記拡張ユニットに実行させ、前記複数の仮想的な機構部品のうち前記指定工程で指定された機構部品については前記予め用意された演算処理により定義される変換動作に代えて、前記受け付ける工程において編集された前記汎用言語のユーザプログラムに従う変換動作を前記拡張ユニットに実行させるために、前記パラメータと、前記ユーザプログラムと、を前記拡張ユニットへ転送する転送工程と、
を有することを特徴とするプログラム作成支援方法。
CPUユニットと、一つ以上の拡張ユニットと、当該CPUユニットまたは一つ以上の拡張ユニットのいずれかに接続されてユーザプログラムの作成を支援するプログラム作成支援装置とを有し、ユーザプログラムにしたがって同期制御を実行するプログラマブル・ロジック・コントローラであって、
前記プログラム作成支援装置であって、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続され、それぞれの入力軸の位置を出力軸の位置へ変換する変換動作を行う複数の仮想的な機構部品を表示する表示部と、
前記複数の仮想的な機構部品のそれぞれには、各機構部品の変換動作を規定する演算処理が予め用意されており、予め用意された前記演算処理に使用され、前記機構部品それぞれの変換動作を定義するパラメータを設定する設定部と、
前記表示部において表示された前記複数の仮想的な機構部品のうち、前記予め用意された演算処理により規定される変換動作を汎用言語のユーザプログラムに従う変換動作に変更設定される機構部品を指定する指定部と、
前記指定部により指定された前記機構部品が実行する変換動作を、当該機構部品の入力軸と出力軸を変数とし、当該入力軸の位置を当該出力軸の位置へ変換する演算式により規定する汎用言語のユーザプログラムの編集を受け付ける受付部と、
前記同期制御の同期主軸から前記同期制御の同期従軸まで固定的に定められた順番に接続された前記複数の仮想的な機構部品のうち、前記指定部により指定されていない機構部品については前記設定部により設定されたパラメータと前記予め用意された演算処理とにより規定された変換動作を前記拡張ユニットに実行させ、前記複数の仮想的な機構部品のうち前記指定部により指定された機構部品については前記予め用意された演算処理により定義される変換動作に代えて、前記受付部を介して編集された前記汎用言語のユーザプログラムに従う変換動作を前記拡張ユニットに実行させるために、前記パラメータと、前記ユーザプログラムと、を前記拡張ユニットへ転送する転送部と、
を有し、
前記拡張ユニットは、
前記転送部から転送されてきた前記ユーザプログラムのオブジェクトコードと前記パラメータを保持する保持部と、
前記複数の仮想的な機構部品のうち前記指定部により指定された機構部品については当該機構部品に対応した前記ユーザプログラムにしたがって当該機構部品の出力軸の位置を算出し、前記指定部により指定されていない機構部品について前記設定部により設定されたパラメータにしたがって入力軸の位置に対応する出力軸の位置を算出する同期制御部と
を有することを特徴とするプログラマブル・ロジック・コントローラ。
【発明を実施するための形態】
【0010】
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念および下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【0011】
はじめにプログラマブル・ロジック・コントローラ(PLC、単にプログラマブルコントローラと呼ばれてもよい)を当業者にとってよりよく理解できるようにするために、一般的なPLCの構成とその動作について説明する。
【0012】
図1は、本発明の実施の形態によるプログラマブル・ロジック・コントローラシステムの一構成例を示す概念図である。
図1に示すように、このシステムは、ラダープログラムなどのユーザプログラムの編集を行うためのプログラム作成支援装置1と、工場等に設置される各種制御装置を統括的に制御するためのPLC(プログラマブル・ロジック・コントローラ)2とを備えている。ユーザプログラムは、ラダー言語やモーションフローなどのグラフィカルプログラミング言語を用いて作成されてもよいし、C言語などの高級プログラミング言語を用いて作成されてもよい。以下では、説明の便宜上、ユーザプログラムはラダープログラムとする。PLC2は、CPUが内蔵された基本ユニット3と1つないし複数の拡張ユニット4を備えている。基本ユニット3に対して1つないし複数の拡張ユニット4が着脱可能となっている。基本ユニット3はCPUユニットと呼ばれることもある。
【0013】
基本ユニット3には、表示部5及び操作部6が備えられている。表示部5には、基本ユニット3に取り付けられている各拡張ユニット4の動作状況などを表示することができ、表示部5の表示内容は、操作部6を操作することにより切り替えることができる。表示部5には、通常、PLC2内のデバイスの現在値(デバイス値)やPLC2内で生じたエラー情報などが表示される。なお、デバイスとは、デバイス値を格納するために設けられたメモリ上の領域を指す名称であり、デバイスメモリと呼ばれてもよい。デバイス値とは、入力機器からの入力状態、出力機器への出力状態およびユーザプログラム上で設定される内部リレー(補助リレー)、タイマー、カウンタ、データメモリ等の状態を示す情報である。
【0014】
拡張ユニット4は、PLC2の機能を拡張するために用意されており、基本ユニット3に対して側方から取り付けられる。1つ目の拡張ユニット4は、基本ユニット3に対して側方から直接的に取り付けられる。2つ目以降の拡張ユニット4は、既に取り付けられている拡張ユニット4に対して、側方から直列的に取り付けられる。たとえば、基本ユニット3の右側面と拡張ユニット4の左側面とが連結面になっている。同様に、1つ目の拡張ユニット4の右側面の形状等は基本ユニット3の右側面とほぼ同じであるため、1つ目の拡張ユニット4の右側面に2つ目の拡張ユニット4の左側面が連結される。このような連結方式は、数珠つなぎ方式とかデイジーチェーン方式と呼ばれてもよい。各連結面にはコネクタが設けられており、通信や電力供給を行うためのバスもコネクタを介して連結される。このようにして、基本ユニット3と複数の拡張ユニット4が直列的に取り付けられると、各拡張ユニット4内に備えられた配線(例:バス)を介して、各拡張ユニット4が基本ユニット3に対して通信可能に接続される。各拡張ユニット4には、その拡張ユニット4の機能に対応する被制御装置16(
図4)が接続され、これにより、各被制御装置16が拡張ユニット4を介して基本ユニット3に接続される。被制御装置16には、センサなどの入力装置や、アクチュエータなどの出力装置が含まれる。
【0015】
プログラム作成支援装置1は、たとえば、携帯可能ないわゆるノートタイプやタブレットタイプのパーソナルコンピュータであって、表示部7及び操作部8を備えている。PLC2を制御するためのユーザプログラムの一例であるラダープログラムは、プログラム作成支援装置1を用いて作成され、その作成されたラダープログラムは、プログラム作成支援装置1内でニモニックコードに変換される。そして、プログラム作成支援装置1を、USB(Universal Serial Bus)などの通信ケーブル9を介してPLC2の基本ユニット3に接続し、ニモニックコードに変換されたラダープログラムをプログラム作成支援装置1から基本ユニット3に送ると、そのラダープログラムが基本ユニット3内でマシンコードに変換され、基本ユニット3に備えられたメモリ内に記憶される。なお、ここではニモニックコードを基本ユニット3に送信するようにしているが、本発明はこれに限られず、例えばニモニックコードを更に中間コードに変換し、中間コードを基本ユニット3に送信するようにしてもよい。
【0016】
なお、
図1では示していないが、プログラム作成支援装置1の操作部8には、プログラム作成支援装置1に接続されたマウスなどのポインティングデバイスが含まれていてもよい。また、プログラム作成支援装置1は、USB以外の他の通信ケーブル9を介して、PLC2の基本ユニット3に対して着脱可能に接続されるような構成であってもよい。
【0017】
図2は、ラダープログラムの作成時にプログラム作成支援装置1の表示部7に表示されるラダー
図Ldの一例を示す図である。
図2に示すように、PLC2を制御するためのラダープログラムは、プログラム作成支援装置1の表示部7にマトリックス状に表示される複数のセル18内に仮想デバイスのシンボル19を適宜配置して、視覚的なリレー回路を表すラダー
図Ldを構築することにより作成される。
【0018】
ラダー
図Ldには、たとえば、10列×N行(Nは任意の自然数)のセル18が配置されている。そして、各行のセル18内に、
図2に示す左側から右側に向かって、時系列的に仮想デバイスのシンボル19を適宜配置することにより、視覚的なリレー回路を作成することができる。作成されるリレー回路は、1行で表される直列的なリレー回路であってもよいし、複数行に並列的に表されたリレー回路を互いに結合することにより作成された、並列的なリレー回路であってもよい。
【0019】
図2に示すリレー回路は、入力装置からの入力信号に基づいてオン/オフされる3つの仮想デバイス(以下、「入力デバイス」と呼ぶ。)のシンボル19a,19b,19cと、出力装置の動作を制御するためにオン/オフされる仮想デバイス(以下、「出力デバイス」と呼ぶ。)のシンボル19dとが適宜結合されることにより構成されている。
【0020】
各入力デバイスのシンボル19a,19b,19cの上方に表示されている文字(「R0001」、「R0002」及び「R0003」)は、その入力デバイスのデバイス名(アドレス名)21を表している。各入力デバイスのシンボル19a,19b,19cの下方に表示されている文字(「フラグ1」、「フラグ2」及び「フラグ3」)は、その入力デバイスに対応付けられたデバイスコメント22を表している。出力デバイスのシンボル19dの上方に表示されている文字(「原点復帰」)は、その出力デバイスの機能を表す文字列からなるラベル23である。
【0021】
図2に示す例では、デバイス名「R0001」及び「R0002」にそれぞれ対応する2つの入力デバイスのシンボル19a,19bが直列的に結合されることにより、AND回路が構成されている。また、これらの2つの入力デバイスのシンボル19a,19bからなるAND回路に対して、デバイス名「R0003」に対応する入力デバイスのシンボル19cが並列的に結合されることにより、OR回路が構成されている。すなわち、このリレー回路では、2つのシンボル19a,19bに対応する入力デバイスがいずれもオンした場合、又は、シンボル19cに対応する入力デバイスがオンした場合にのみ、シンボル19dに対応する出力デバイスがオンされるようになっている。
【0022】
図3は、
図1のプログラム作成支援装置1の電気的構成について説明するためのブロック図である。
図3に示すように、プログラム作成支援装置1には、CPU24、表示部7、操作部8、記憶装置25及び通信部26が備えられている。表示部7、操作部8、記憶装置25及び通信部26は、それぞれCPU24に対して電気的に接続されている。記憶装置25は、少なくともRAMを含む構成であり、プログラム記憶部27と、編集ソフト記憶部28とを備えている。
【0023】
ユーザは、編集ソフト記憶部28に記憶されている編集ソフトをCPU24に実行させて、操作部8を通じてラダープログラムを編集する。ここで、ラダープログラムの編集には、ラダープログラムの作成及び変更が含まれる。編集ソフトを用いて作成されたラダープログラムは、プログラム記憶部27に記憶される。また、ユーザは、必要に応じてプログラム記憶部27に記憶されているラダープログラムを読み出し、そのラダープログラムを、編集ソフトを用いて変更することができる。通信部26は、通信ケーブル9を介してプログラム作成支援装置1を基本ユニット3に通信可能に接続するためのものである。
【0024】
図4は、PLC2の電気的構成について説明するためのブロック図である。
図4に示すように、基本ユニット3には、CPU10、表示部5、操作部6、記憶装置12及び通信部14が備えられている。表示部5、操作部6、記憶装置12、及び通信部14は、それぞれCPU10に電気的に接続されている。記憶装置12は、RAMやROM、メモリカードなどを含んでもよく、ラダープログラムなどを記憶する。記憶装置12には、プログラム作成支援装置1から入力されたラダープログラムやユーザデータが上書きして記憶される。また、記憶装置12には基本ユニット用の制御プログラムも格納されている。
図4が示すように基本ユニット3と拡張ユニット4とは拡張バスの一種であるユニット外部バス90を介して接続されている。なお、ユニット外部バス90に関する通信機能は通信部14の一部として実装されてもよい。
【0025】
図5は、本発明の実施の形態に係るプログラマブルコントローラの基本ユニット3でのスキャンの構成を示す模式図である。
図5が示すように1つのスキャンTは、入出力のリフレッシュを行うためのユニット間通信201、プログラム実行202、END処理204により構成されている。ユニット間通信201で、基本ユニット3は、ラダープログラムを実行して得られた出力データを基本ユニット3内の記憶装置12から外部機器などに送信するとともに、受信データを含めた入力データを基本ユニット3内の記憶装置12に取り込む。たとえば、基本ユニット3のデバイスに記憶されているデバイス値は出力リフレッシュによって拡張ユニット4のデバイスに反映される。同様に、拡張ユニット4のデバイスに記憶されているデバイス値は入力リフレッシュによって基本ユニット3のデバイスに反映される。なお、リフレッシュ以外のタイミングでデバイス値をユニット間で更新する仕組みが採用されてもよい。ただし、基本ユニット3のデバイスは基本ユニット3が随時書き換えており、同様に、拡張ユニット4のデバイスは拡張ユニット4が随時書き換えている。つまり、基本ユニット3のデバイスは基本ユニット3の内部の装置によって随時アクセス可能であり、同様に、拡張ユニット4のデバイスは拡張ユニット4の内部の装置によって随時アクセス可能になっている。基本ユニット3と拡張ユニット4との間では基本的にリフレッシュのタイミングにおいて相互にデバイス値を更新して同期する。プログラム実行202で、基本ユニット3は、更新された入力データを用いてプログラムを実行(演算)する。基本ユニット3はプログラムの実行によりデータを演算処理する。なお、END処理とは、プログラム作成支援装置1や基本ユニット3に接続された表示器(図示せず)等の外部機器とのデータ通信、システムのエラーチェック等の周辺サービスに関する処理全般を意味する。
【0026】
このように、プログラム作成支援装置1はユーザの操作に応じたラダープログラムを作成し、作成したラダープログラムをPLC2に転送する。PLC2は、入出力リフレッシュ、ラダープログラムの実行およびEND処理を1サイクル(1スキャン)として、このサイクルを周期的、すなわちサイクリックに繰り返し実行する。これにより、各種入力機器(センサ等)からのタイミング信号に基づいて、各種出力機器(モータ等)を制御する。よって、PLC2は汎用のパーソナルコンピュータ(PC)とは全く異なる動きをする。
【0027】
<プログラム作成支援装置の機能>
図6はプログラムの編集とパラメータの設定とを支援するプログラム作成支援装置1の機能を示す図である。CPU24は記憶装置25のROM(EEPROM,HDD,SSDなど)に記憶されている編集ソフトウエア29を実行することで編集部31、設定部32、コンパイラ33、描画部34、指定部35、関数名入力部36、転送部37およびプログラム受付部45として機能する。なお、設定部32、描画部34、指定部35、関数名入力部36およびプログラム受付部45は編集部31の一機能と理解されてもよい。編集部31の描画部34は表示部7にラダープログラム38を編集するためのUI(ユーザインタフェース)を表示させる。さらに、編集部31のプログラム受付部45は操作部8を通じて入力された指示に従ってラダープログラム38を作成し、記憶装置25に格納する。編集部31の描画部34は、主軸(入力軸)から出力軸までの間に連結される仮想的な機構部品の画像を表示する機能表現UIを表示部7に表示する。なお、同期制御において主軸は同期主軸とよばれ、出力軸は同期従軸と呼ばれることもある。したがって、描画部34および表示部7は、同期制御の同期主軸から同期制御の同期従軸まで順番に接続され、それぞれの入力軸の位置を出力軸の位置へ変換する複数の仮想的な機構部品を表示する表示部として機能する。また、描画部34および設定部32は、各機構部品に対応する演算処理で使用される機構部品パラメータ41の入力を受け付けるためのパラメータ入力UIを表示部7に表示する。設定部32は複数の仮想的な機構部品のそれぞれの変換動作(演算処理)を定義するパラメータを設定する設定部として機能する。
【0028】
図7は、編集ソフトウエア29のユーザインタフェースの一例を示す図である。ユーザインタフェースの描画処理は描画部34が担当する。編集ソフトウエア29のユーザインタフェース50は、機能表現UI51とパラメータ入力UI52とを有している。オペレータは操作部8を通じてポインタ30を操作し、編集対象のパラメータや機構部品を指定ないしは選択する。機能表現UI51に示された機能表現によれば、主軸1、主軸2、補助軸および出力軸の間に各種の機構部品が連結されている。これらの軸は外部機器である被制御装置16を同期制御するための軸に対応している。PLCの分野において同期制御とは入力軸の位置(座標)に連動して出力軸の位置を制御することをいう。
【0029】
本実施形態では、指定部35は、機能表現UI51に表示された複数の仮想的な機構部品のうち予め用意された変換動作(演算処理)とは異なる変換動作を行う機構部品を指定するために、ポインタ30による指定入力を受け付ける。編集部31のプログラム受付部45は指定部35により指定された機構部品が実行する変換動作を規定する汎用言語のユーザプログラム(ソースコード39)の入力を受け付ける。このように本実施形態では、機能表現UI51に表示された複数の仮想的な機構部品のうち一部の機構部品の演算処理をユーザプログラムに置換することが可能となり、ユーザは自由に一部の機構部品の演算処理を定義できるようになる。なお、一部の機構部品の演算処理を代行するソースコード39はコンパイラ33によってユーザプログラムのオブジェクトコード40に変換される。関数名入力部36は一部の機構部品の演算処理を代行する関数の名称の入力を受け付ける機能である。このような関数はソースコード39において定義される。転送部37はラダープログラム38を基本ユニット3に転送する。また、転送部37はユーザプログラム(オブジェクトコード40)、パラメータ入力UI52を通じて設定された機構部品パラメータ41および機構部品パラメータ41を用いて所定の演算処理を実行する機構部品模擬モジュール42を拡張ユニット4に転送する。機構部品模擬モジュール42は、拡張ユニット4や被制御装置16について予め用意された演算処理を実行するためのオブジェクトコードである。なお、機構部品模擬モジュール42は予め拡張ユニット4のファームウエアとして実装されてもよい。複数の仮想的な機構部品の予め用意された変換動作では、パラメータを指定することにより、出力=入力とする変換動作も可能である。また、機能表現UI51に表示された複数の仮想的な機構部品のうち一部の機構部品の演算処理がユーザプログラムに置換される場合においても、ユーザプログラム出力=入力とする変換動作ももちろん採用可能である。これらのように、実質的には変換を行うことなく、入力をそのまま出力するような(たとえば、入力軸の位置をそのまま出力軸に出力するような)予め用意された変換動作が採用されてもよい。
【0030】
機能表現UI51に示されている機能表現についてさらに詳しく説明する。複数の仮想的な機構部品は、差動ギア、可変ギア、クラッチおよびカムなどを含む。差動ギアは、一般に、第一入力軸、第二入力軸および出力軸を有し、第一入力軸の位置と第二入力軸の位置との差分を当該出力軸の位置として出力する機構部品である。可変ギアは、一般に、入力軸と、当該入力軸の回転速度に相関した異なる回転速度で回転する出力軸とを有する機構部品である。クラッチは、一般に、入力軸と出力軸とを有し、当該入力軸の回転を当該出力軸へ伝達する伝達状態と、伝達しない非伝達とを切り替える機構部品である。カムは、一般に、入力軸と出力軸とを有し、当該入力軸の位相を前記出力軸の相対座標に変換する機構部品である。
【0031】
図7によれば、差動ギアの一つである第一差動ギアの出力軸に可変ギアの入力軸が連結されている。可変ギアの出力軸にクラッチの一つである第一クラッチの入力軸が連結されている。第一クラッチの出力軸に差動ギアの一つである第二差動ギアの第一入力軸が連結されている。第二差動ギアの出力軸にクラッチの一つである第二クラッチの入力軸が連結されている。第二クラッチの出力軸に、カムの応答遅れを補正する進角補正部の入力軸が接続されている。進角補正部の出力軸にカムの入力軸が接続されている。カムの出力軸には周波数変動を低減する出力フィルタの入力軸に接続されている。第二差動ギアの第二入力軸に第三クラッチを介して補助軸が接続されている。なお、第三クラッチと補助軸との間には補助軸の位相を補正する補助軸位相補正部が連結されていてもよい。各機構部品の模擬動作(演算処理)を定義するためのパラメータは、パラメータ入力UI52において入力される。オペレータは、たとえば、可変ギアのギア比を設定したり、クラッチの動作条件などを設定したりする。
【0032】
図8は可変ギアを表現する模擬画像53、可変ギアのパラメータ設定UI54、主クラッチを表現する模擬画像55および主クラッチのパラメータ設定UI56の一例を示している。
図8が示すように可変ギアのパラメータとしては、可変ギア比分子や可変ギア比分母などが含まれている。機構部品模擬モジュール42は、可変ギアの入力軸の回転速度に、可変ギア比分子と可変ギア比分母とで定まるギア比を乗算して出力軸の回転速度を演算するモジュールを含んでいる。
図8が示すように主クラッチのパラメータとしてはクラッチON要因やクラッチOFF要因などのパラメータが存在する。クラッチON要因とは、主クラッチがオン(入力軸と出力軸とを接続すること)となる条件である。クラッチOFF要因とは、主クラッチがオフ(入力軸と出力軸との接続を解放すること)となる条件である。その他の様々なパラメータが予め用意されうる。なお、可変ギアの模擬画像53と主クラッチの模擬画像55は機能表現UI51に表示されるアイコンである。また、可変ギアのパラメータ設定UI54と主クラッチのパラメータ設定UI56はパラメータ入力UI52の一部である。
【0033】
図9は、主クラッチのパラメータ設定UI56の他の例を示す図である。この例では、主クラッチの動作として、機構部品模擬モジュール42により定義された動作とオペレータが汎用言語で記述した動作とのうちどちらかを選択するための選択UI58が追加されている。さらに、オペレータが汎用言語で記述した動作(関数)の名称(関数名)を入力するためのテキスト入力部59が設けられている。関数名入力部36は、テキスト入力部59を通じて入力された関数名を主クラッチの動作を定義する関数の名称として受け付ける。なお、選択UI58によりオペレータが汎用言語で記述した動作が選択されたことや関数名は機構部品パラメータ41の一部として転送部37により拡張ユニット4に転送される。
【0034】
図10は機構部品の動作を定義するユーザプログラム(関数)を編集するための編集UI60を示す図である。編集UI60は編集部31が表示部7に表示するUIである。この例ではユーザプログラム(関数)がC言語により記述されているが、他の高級言語を用いて記述されてもよい。また、この例では、主クラッチの入力軸を示す変数としてlInputMovingDistと、主クラッチの出力軸を示す変数として*plOutputMovingDistとが定義されている。オペレータは関数MyClutch1において入力軸の座標に対する出力軸の座標を求めるための演算式を自由に定義することができる。
【0035】
<基本ユニットと拡張ユニットの機能>
図11は基本ユニット3の機能と拡張ユニット4の機能を説明する図である。基本ユニット3のCPU10は記憶装置12に記憶されている制御プログラム43を実行することで様々な機能を実現する。CPU10においてラダー実行部11はユーザプログラムであるラダープログラム38を実行する演算ユニットである。ユーザプログラムの一例としてラダープログラム38を採用するが、ユーザプログラムは他のグラフィカルプログラミング言語や高級言語で記述されてもよい。ラダー実行部11は、ラダープログラム(中間コード)38を実行形式のコードに変換する機能を備えていてもよい。CPU10はラダー実行部11に相当する演算部を、制御プログラム43を実行するCPUコアとは別のCPUコアやASICとして備えていてもよい。記憶装置12には、基本ユニット3のシステムプログラム(ファームウエア)である制御プログラム43と、プログラム作成支援装置1の転送部37により転送されてきたラダープログラム38などが含まれている。
【0036】
拡張ユニット4はCPU110を備えている。CPU110は被制御装置16を同期制御する同期制御部111を有している。記憶装置112はRAMやROMなどを含む。とりわけ、RAMにはプログラム作成支援装置1の転送部37により転送されてきたユーザプログラム(オブジェクトコード40)、機構部品パラメータ41および機構部品模擬モジュール42が記憶される。同期制御部111は、機構部品パラメータ41にしたがって被制御装置16を同期制御する。たとえば、同期制御部111は、機構部品パラメータ41によって機構部品模擬モジュール42が使用されるように指定されている機構部品については機構部品パラメータ41に含まれているパラメータが演算処理に入力される。この演算処理は機構部品模擬モジュール42により定義されている。また、同期制御部111は、機構部品パラメータ41によってユーザプログラム(オブジェクトコード40)に置換されている機構部品についてはユーザプログラム(オブジェクトコード40)を実行することで機構部品に対応する演算処理を実行する。このように、被制御装置16の同期制御を実現するための複数の機構部品のうち一部の機構部品に対応する演算処理についてはユーザプログラム(オブジェクトコード40)によって定義されている関数に置換されて実行される。
【0037】
<フローチャート>
図12はプログラム作成支援装置1のCPU24が編集ソフトウエア29にしたがって実行するプログラム作成支援方法を示すフローチャートである。S11においてCPU24(編集部31の描画部34)は機能表現UI51とパラメータ入力UI52とを表示部7に表示する。上述したように、機能表現UI51には、同期制御の同期主軸から同期制御の同期従軸まで順番に接続された複数の仮想的な機構部品のアイコンが表示される。
【0038】
S12でCPU24(編集部31の設定部32)はパラメータ入力UI52に対して操作部8を通じて入力された指示に基づき複数の仮想的な機構部品のそれぞれの変換動作(演算処理)を定義するパラメータを設定する。つまり、演算処理に使用されるパラメータが入力される。
【0039】
S13でCPU24(編集部31の指定部35)は機能表現UI51またはパラメータ入力UI52に対して操作部8を通じて入力された指示に基づき複数の仮想的な機構部品のうち予め用意された(デフォルトの)変換動作とは異なる変換動作を行う機構部品を指定する。この指定は、機能表現UI51に表示された機構部品のアイコンをポインタ30によりクリックすること、または、パラメータ入力UI52において機構部品のパラメータを設定するエリアをポインタ30により選択することにより実現されてもよい。また、
図9に示したように、ある機構部品のパラメータ設定UI56に含まれている選択UI58において動作を汎用言語で記述することをポインタ30により選択することによって、デフォルトの変換動作とは異なる変換動作を行う機構部品が指定されてもよい。
【0040】
S14でCPU24(編集部31の関数名入力部36)はパラメータ設定UI56のテキスト入力部59に対して操作部8を通じて入力された指示に基づきユーザプログラムの名称(関数名)の入力を受け付ける。なお、CPU24が自動的に関数名を付与する場合は、関数名の入力ステップは省略されてもよい。
【0041】
S15でCPU24(編集部31のプログラム受付部45)は編集UI60に対して操作部8を通じて入力された指示に基づき機構部品が実行する変換動作を規定する汎用言語のユーザプログラム(ソースコード39)の入力を受け付ける。
【0042】
S16でCPU24(コンパイラ33)は操作部8を通じてコンパイルが指示されると、ユーザプログラムのソースコード39をコンパイルし、ユーザプログラムのオブジェクトコード40を生成して記憶装置25に記憶する。S17でCPU24(コンパイラ33)はユーザプログラムにより記述された関数の型がPLC2によって要求されている型と一致しているかどうかをチェックし、両者が一致していなければS15に戻り、ユーザプログラムの修正を受け付ける。一方で、関数の型が一致するなどシンタックスエラーが解消すると、S18に進む。S18でCPU24(転送部37)はユーザプログラム(オブジェクトコード)40、機構部品パラメータ41および機構部品模擬モジュール42を含むプロジェクトデータを拡張ユニット4に転送する。なお、プロジェクトデータにはソースコード39が含まれてもよい。この場合、プログラム作成支援装置1は、拡張ユニット4からソースコード39を読み出して編集し、再びコンパイルして拡張ユニット4に転送してもよい。これは、PLC2が設置された工場内でソースコード39を修正する際に便利であろう。
【0043】
図13は拡張ユニット4のCPU110(同期制御部111)がファームウエアなどにしたがって実行する同期制御を示すフローチャートである。S21でCPU110は、ユーザプログラムのオブジェクトコード40、機構部品パラメータ41および機構部品模擬モジュール42を記憶装置25に保持する。記憶装置25はプログラムやデータの保持部として機能する。S22でCPU110は基本ユニット3によって同期制御の開始を指示されることを待つ。基本ユニット3のラダー実行部11はラダープログラム38にしたがって同期制御の開始を拡張ユニット4に指示する。基本ユニット3によって同期制御の開始を指示されると、CPU110はS23に進む。S23でCPU110は同期制御を開始する。
【0044】
S24でCPU110は複数の機構部品について連結された順番にしたがって演算対象となる機構部品を選択し、選択した機構部品の演算処理がユーザプログラム(オブジェクトコード40)により記述されているかどうかを判定する。なお、この判定は、選択した機構部品の演算処理が機構部品模擬モジュール42に含まれているデフォルトの(あらかじめ用意された)演算モジュールによって実行されることが指定されているかどうかを判定する処理であってもよい。各機構部品の演算処理は、ユーザプログラム(オブジェクトコード40)内の関数または機構部品模擬モジュール42内の演算モジュールのどちらかによって実行されるからである。なお、どちらが適用されるかは機構部品パラメータ41に記述されている。つまり、CPU110は機構部品パラメータ41を参照することで判定処理を実行する。機構部品の演算処理がユーザプログラム(オブジェクトコード40)により記述されているのであれば、CPU110はS25に進む。S25でCPU110はユーザプログラムにしたがって機構部品の入力軸の座標から出力軸の座標を演算する。一方で、機構部品の演算処理が機構部品模擬モジュール42内の演算モジュールにより定義されているのであれば、CPU110はS26に進む。S26でCPU110は機構部品模擬モジュール42内の演算モジュールを実行することで、機構部品の入力軸の座標から出力軸の座標を演算する。
【0045】
このようにCPU110は、同期制御の同期主軸から同期従軸まで順番に接続されている複数の仮想的な機構部品について接続された順番にしたがって入力軸の座標から出力軸の座標を演算して行く。たとえば、i番目の機構部品の出力軸の座標はi番目の機構部品に接続されているi+1番目の機構部品の入力軸の座標となる。この一連の演算処理は最後に接続されている機構部品に至るまで順番に実行される。なお、1番目の機構部品の入力軸は同期制御系の全体における同期主軸となる。また、最後の機構部品の出力軸は同期制御系の全体における同期従軸(出力軸)となる。
【0046】
<まとめ>
図1を用いて説明したように、本実施形態によれば、PLC2は基本ユニット3と一つ以上の拡張ユニット4とを有し、ユーザプログラムにしたがって同期制御を実行する。プログラム作成支援装置1はPLC2に接続され、ユーザプログラムの作成を支援する。
図6を用いて説明したように、表示部7は、同期制御の同期主軸から同期制御の同期従軸まで順番に接続され、それぞれの入力軸の位置を出力軸の位置へ変換する複数の仮想的な機構部品を表示する。設定部32は複数の仮想的な機構部品のそれぞれの変換動作を定義するパラメータを設定する。指定部35は、表示部7に表示された複数の仮想的な機構部品のうち予め用意された変換動作とは異なる変換動作を行う機構部品を指定する。プログラム受付部45は、指定部35により指定された機構部品が実行する変換動作を規定する汎用言語のユーザプログラムの入力を受け付ける。転送部37は、ユーザプログラムを拡張ユニット4に実行させるためにユーザプログラムを拡張ユニット4へ転送する。上述したように、同期制御の同期主軸から同期制御の同期従軸までに接続されるすべての機構部品の動作をラダープログラムでフルプログラミングすることはユーザにとって極めて困難である。したがって、原則としては、すべての機構部品についてのデフォルトの演算動作が機構部品模擬モジュール42によって実現される。機構部品模擬モジュール42は、ソフトウエアの開発環境としてPLC2の製造メーカによって提供される。そのため、ユーザは各機構部品のパラメータを指定するだけで、同期制御を実現できる。また、複数の機構部品のうちの一部の機構部品についてはユーザがユーザプログラムを作成することで、自由に変換動作を定義できるようになる。つまり、本実施形態により、同期制御の自由度を増加させることが可能となる。なお、一部の機構部品について機構部品模擬モジュール42に含まれている演算モジュールはユーザが作成したユーザプログラムに置換されることになる。なお、演算モジュールとユーザプログラムとの互換性を維持するために、演算モジュールにおけるインターフェース(入力軸や出力軸を示す引数の型と名称など)はユーザプログラムにも踏襲される。編集部31は指定部35により指定された機構部品用のソースコードテンプレートを記憶装置25から読み出して、編集UI60に表示してもよい。これによりユーザの作業量が減少しよう。
【0047】
図7や
図8を用いて説明したように、複数の仮想的な機構部品は、差動ギア、可変ギア、クラッチ、カムなどから選択されうる。たとえば、
図7に示したように、差動ギアの一つである第一差動ギアの出力軸に可変ギアの入力軸が連結されてもよい。可変ギアの出力軸にクラッチの一つである第一クラッチの入力軸が連結されてもよい。第一クラッチの出力軸に差動ギアの一つである第二差動ギアの第一入力軸が連結されてもよい。第二差動ギアの出力軸にクラッチの一つである第二クラッチの入力軸が連結されてもよい。第二クラッチの出力軸に、カムの応答遅れを補正する進角補正部の入力軸が接続されてもよい。進角補正部の出力軸にカムの入力軸が接続されてもよい。カムの出力軸には周波数変動を低減する出力フィルタの入力軸に接続されてもよい。第二差動ギアの第二入力軸に第三クラッチを介して補助軸が接続されてもよい。どのような連結パターンを選択するかは被制御装置16の種類(アプリケーション)に依存する。
【0048】
なお、複数の仮想的な機構部品のうち一部の機構部品の変換動作がユーザプログラムによって定義されても、同期制御の同期主軸から同期制御の同期従軸までにおける複数の仮想的な機構部品の接続位置は維持される。つまり、複数の仮想的な機構部品の連結関係は基本的に変更されることはない。
【0049】
図6や
図9を用いて説明したように、ユーザプログラムにより記述される関数の名称を入力する関数名入力部36が設けられてもよい。これにより、機構部品の変換動作(演算処理)を規定する関数の名称についてもユーザが自由に決定できるようになる。
【0050】
ユーザプログラを記述する言語によってはコンパイル処理が必要となる。たとえば、C言語などの高級言語では、ユーザプログラムのソースコード39をコンパイルとしてオブジェクトコード40を生成するコンパイラ33が必要となる。転送部37は、ユーザプログラムとしてオブジェクトコード40を拡張ユニット4に転送する。これにより、拡張ユニット4においてコンパイルやインタープリトする手間を省けるようになろう。コンパイラ33は、ユーザプログラムのソースコード39により記述された関数の型がPLC2によって要求されている型と一致しているかどうかをチェックしてもよい。これは、PLC2によって要求されている型の関数でなければPLC2において正しく関数が機能しないからである。したがって、このようなチェックによってプログラミングエラーが解消してからオブジェクトコード40が拡張ユニット4に転送されることになろう。
【0051】
拡張ユニット4の記憶装置112は、転送部37から転送されてきたユーザプログラムのオブジェクトコード40とパラメータを保持する保持部として機能する。同期制御部111は、複数の仮想的な機構部品のうち指定部35により指定された機構部品については当該機構部品に対応したユーザプログラムにしたがって当該機構部品の出力軸の位置を算出する。また、同期制御部111は、指定部35により指定されていない機構部品について設定部32により設定されたパラメータにしたがって入力軸の位置に対応する出力軸の位置を算出する。このように、ほとんどの機構部品の動作に関してはユーザがパラメータを設定するだけで所望の動作を達成できるようになる。また、一部の機構部品の動作についてはユーザプログラムによって自由に定義できるため、同期制御の自由度が増すであろう。
【0052】
なお、
図12に示したプログラム作成支援方法はCPU24が編集ソフトウエア29を実行することで実現される。つまり、本実施形態によれば、プログラム作成支援装置1に加え、プログラム作成支援方法やプログラムも提供される。