以下に、実施の形態に係る数値制御システム、タスク割り当て変更装置及び数値制御方法を図面に基づいて詳細に説明する。
実施の形態1.
(実施の形態1の構成)
図1は、実施の形態1に係る数値制御システム1の構成の概略を示す図である。数値制御システム1は、少なくとも二つ以上の演算部を有する。実施の形態1の例では、数値制御システム1は、第1演算部4と、第2演算部5とを有する。第1演算部4及び第2演算部5は、複数の演算部の例である。実施の形態1では、二つの演算部を有する数値制御システム1を説明するが、数値制御システム1が三つ以上の演算部を有する場合に対しても、実施の形態1の概念は制限されることなく適用可能である。
演算部は、計算処理を行う能力を有していれば形態は問われず、CPU、マルチコアCPUのプロセッサコア、DSP(Digital Signal Processor)、又は各種集積回路などであってもよい。以下では、上記のプロセッサコアは単に「コア」と記載される。例えば、複数のコアを持つマルチコアCPUにおいては、ひとつのコアがひとつの演算部に相当し、複数のCPUを持つマルチCPU環境においては、ひとつのCPUがひとつの演算部に相当する。
数値制御システム1は、タスク割り当て変更装置2を更に有する。タスク割り当て変更装置2、第1演算部4及び第2演算部5の三つの構成要素の各々は、三つの構成要素のうちの他の構成要素と通信手段3を介して通信可能なように接続される。
タスク割り当て変更装置2は、通信手段3を介して第1演算部4及び第2演算部5の各々と通信を行い、後述するソフトウェアタスクの演算部への割り当て変更動作を制御する機能を有する。タスク割り当て変更装置2は、実施の形態1では第1演算部4及び第2演算部5とは独立して配置されているが、第1演算部4と第2演算部5とのうちのいずれかひとつの演算部で動作するように配置されてもよい。
通信手段3は、無線での通信を可能とする手段であってもよいし、有線での通信を可能とする手段であってもよい。通信手段3は、シリアル方式での通信を可能とする手段であってもよいし、パラレル方式での通信を可能とする手段であってもよい。通信手段3を介して行われる通信の実現手法に制限はない。例えば、通信手段3は、シリアルバスとして一般に用いられる、RS-232C(Recommended Standard 232C)、USB(Universal Serial Bus)、PCI(Peripheral Component Interconnect) Express、SATA(Serial AT Attachment)、IEEE(Institute of Electrical and Electronics Engineers)1394(FireWire)、1-Wire又はEthernet(登録商標)などの通信手段であってもよい。
通信手段3は、パラレルバスとして一般に用いられるGPIB(General Purpose Interface Bus)、SCSI(Small Computer System Interface)、PCI、ATA(AT Attachment)などの通信手段であってもよい。通信手段3は、一般的な無線通信方式であるWi-Fi(登録商標)又はBluetooth(登録商標)による通信手段であってもよい。
制御対象6は、数値制御システム1が制御を行う対象であり、モータによって軸を駆動させ、所定の動作を実現することで様々な機能を提供する。例えば、制御対象6は、各種の加工機であってもよい。加工機の具体例としては、切削加工、旋削加工及び研削加工の一部若しくは全部を行う工作機械、レーザ加工機、放電加工機、又はAM加工機などが挙げられる。制御対象6は、産業用ロボット、AGV又はドローンなどの、物品のハンドリング又は搬送を行う装置であってもよい。
第1演算部4は、制御対象6を制御するための数値制御を行う数値制御処理部10を有する。数値制御処理部10は、ひとつ以上のソフトウェアタスクから構成されており、加工プログラムの文字列を解析し、動作モードの設定及び指令に基づいた経路の始点及び終点の座標計算、並びに経路の補間計算などを行う。図1では、上記のソフトウェアタスクの例は、ソフトウェアタスクA及びソフトウェアタスクBである。加工プログラムとは、主に加工機に対して動作を指令するために、動作の内容がテキスト形式で記述されたプログラムである。制御対象6に対する動作指令手段は、加工プログラムに限定されない。
第1演算部4は、制御対象6の駆動軸に対する指令データを計算する軸制御部11を有する。軸制御部11は、ひとつ以上のソフトウェアタスクから構成されており、数値制御処理部10によって得られた計算結果を用いて、制御対象6の駆動軸に対する指令データを計算する。図1では、上記のソフトウェアタスクの例は、ソフトウェアタスクC及びソフトウェアタスクDである。軸制御部11が行う処理の一例としては、駆動軸に過大な加速度が発生して振動することがないように、各軸に滑らかに加速及び減速を行わせる速度指令を計算する加減速処理が挙げられる。
図1では数値制御処理部10及び軸制御部11は第1演算部4に割り当てられているが、数値制御処理部10と軸制御部11とうちの一方又は両方は第2演算部5に割り当てられてもよい。
第1演算部4及び第2演算部5の各々は、数値制御処理部10及び軸制御部11が処理を実行する場合の処理時間を測定する測定部12を有する。具体的には、測定部12は、各演算部で実行される数値制御処理部10及び軸制御部11を構成している各ソフトウェアタスクの処理時間を測定する。数値制御システム1では、あらかじめ定められた周期である規定周期で各ソフトウェアタスクの実行が開始され、規定周期内で必要な処理が行われ、制御対象6に出力される指令データが作成される。数値制御システム1は、指令データを作成することで制御対象6の制御を実現する。測定部12は、各周期について各ソフトウェアタスクの実行がいつ開始されていつ完了したかを数値制御システム1のクロックに基づいた時刻で記録し、規定周期内に占める各ソフトウェアタスクの処理時間をデータ化する。
ソフトウェアタスクの処理時間を正確に測定するためには、開始時刻及び終了時刻だけではなく、割込み及びOS(Operating Ssystem)によって実行を中断させられるプリエンプションの発生状況も加味する必要がある。これらの情報は、一般に普及しているリアルタイムOSなどによって提供されているAPI(Application Programming Interface)を用い、各タスクのイベント発生時刻を取得することによって利用可能である。以下では、リアルタイムOSはRTOSと記載される。
イベントの例としては、タスクが演算部において実行権を得たときに発生するstartイベント、タスクが割り込み及び他の優先度の高いタスクによって実行権を奪われたときに発生するpreemptedイベント、タスクが処理を完了して実行権を手放したときに発生するexitイベント、及び、タスクが他のタスクに対して実行権を開放したときに発生するrelease to xxxイベントなどがある。xxxには、対象となるタスク名が入る。
第1演算部4及び第2演算部5が有する処理時間推定部13は、数値制御処理部10が要する処理時間の推定値である処理負荷予測値の算出と、処理負荷予測値と閾値との比較判定とを行う。
数値制御処理部10の処理時間は、様々な要素から複合的に影響を受けるが、推定を行う上で特に重要となるのは主に二つの要素である。
ひとつ目の要素は、加工プログラムを構成するブロックの処理数である。加工プログラムは、1行ごとをブロックとしてひとまとまりの指令と扱い、ブロック単位で処理を実行させるものである。例えば、数値制御処理部10が一度に10ブロックを処理する必要がある場合、処理時間推定部13は、1ブロックの処理でよい場合に比べて10倍の処理時間を要すると推定することができる。
二つ目の要素は、加工プログラムによって指定される運転モードである。例えば、運転モードとして、指定された始点と終点との間をどのような経路で補間するかを指定する補間モード、又は、一度に複数のブロックをまとめて処理することで高速な移動を実現する高速モードなどが挙げられる。これらの運転モードのうちのどのモードが指定されるかによって、数値制御処理部10が1ブロックを処理するのに要する処理時間は変わる。
ここで、数値制御処理部10が一度に処理する必要があるブロックの数について説明する。指令された軸の移動速度である指令速度が大きい場合、1周期ごとに軸制御部11が制御対象6に出力する必要がある移動量も大きくなる。これに付随して、軸制御部11の前処理を行う数値制御処理部10もより長い移動距離を処理する必要がある。この時、加工プログラムの1ブロック当たりの距離である始点と終点とを結ぶ長さが長ければ、少ないブロックで長い移動距離を処理することができるが、1ブロック当たりの距離が短ければ、同じ距離を処理するために必要なブロックの数は多くなる。すなわち、数値制御処理部10が1周期当たりに処理する必要があるブロックの数は、指令速度と処理するブロックの移動距離とから算出することができる。
運転モードごとの処理時間については、例えば事前に各々の運転モードでの処理時間を測定しておき、平均的な処理時間をデータベース又はリストの形で保存しておき、実際に加工プログラムを処理する際には保存されたひとつ又は複数の候補の中からひとつの候補を選択することで推定を行うことが可能である。
(実施の形態1の動作)
数値制御システム1が取りうる状態の種類と定義とについて説明する。図2は、実施の形態1に係る数値制御システム1の状態遷移図である。図2に示された各状態と、状態間の遷移を行う条件である条件S1から条件S10までとについて説明する。
電源OFF状態は、数値制御システム1の電源が投入されていない状態である。
電源ON状態は、条件S1で数値制御システム1の電源が投入されることにより電源OFF状態から遷移した状態である。電源ON状態には、未起動状態、起動中状態及び起動完了状態の三つの状態が内包されている。
数値制御システム1の状態が電源ON状態に遷移すると、数値制御システム1の状態は、初期状態として未起動状態になり、条件S2で起動処理が開始されることで起動中状態に遷移する。起動処理には、例えば、各種ハードウェアの初期化処理、及び、数値制御システム1のソフトウェアモジュールのロード又はメモリ領域への展開などが含まれる。
起動中状態は、起動処理が完了していない状態である。
条件S3で起動処理が完了し、数値制御システム1のソフトウェア処理が開始されることで、数値制御システム1の状態は起動完了状態へ遷移する。
起動完了状態には、未運転状態と運転中状態との二つの状態が内包されている。
数値制御システム1の状態が起動完了状態に遷移すると、数値制御システム1の状態は、初期状態として未運転状態となり、条件S4で制御対象の制御が開始されることにより、運転中状態に遷移する。
運転中状態は、例えば、電源が投入された後、第1演算部4又は第2演算部5に割り当てられた軸制御部11から制御対象6に制御指令が出力されることにより制御対象6の制御が行われている状態であってもよい。運転中状態は、制御対象6の動作の内容が記述された加工プログラムが選択され、当該加工プログラムを用いた制御が開始されてから当該制御が完了するまでの状態であってもよい。
運転中状態では、タスク割り当て変更装置2が後述する割り当て変更動作を実行しても数値制御システム1の状態は運転中状態から遷移せず(S5)、運転中状態の解除が実行されることにより数値制御システム1の状態は未運転状態に遷移する(S6)。
運転中状態を解除する動作の例は、例えば軸制御部11から制御対象6に対して出力されていた制御指令を停止する動作である。運転中状態を解除する動作の例は、加工プログラムの実行が完了し、加工プログラムを実行していない状態に戻る動作であってもよい。
未起動、起動中、未運転及び運転中のいずれの状態においても、条件S7から条件S10までで電源が遮断されることにより、数値制御システム1の状態は電源OFF状態に遷移する。
次に、測定部12の動作について説明する。
測定部12は、各演算部が実行しているソフトウェアタスクの処理時間を測定し、測定データを作成して、測定データをタスク割り当て変更装置2に送信する役割を担っている。測定部12は、前述のようにRTOSが提供するAPIなどの機能を利用して、各タスクのイベントログ発生時刻を用いて測定データを作成する。測定部12は、数値制御システム1の規定周期の開始時刻を時刻0として、各タスクのイベントログの時刻を計算することにより測定データを作成する。測定部12は、規定周期の開始時刻も、特定のイベントの発生時刻として算出することができ、例えばタイマ割込みで起動するタスクを基準とした場合、当該タスクの開始イベントの時刻が規定周期の開始時刻となる。
図3は、実施の形態1に係る数値制御システム1が有する測定部12が行う動作の手順を示すフローチャートである。以降、当該フローチャートにしたがって測定部12の動作を説明する。測定部12は、動作が開始されると、まず性能測定を行う(S11)。次に、測定部12は、前述の計算方法で、周期内に実行された各タスクのイベントログ時刻を算出し、測定データを作成する(S12)。測定部12は、測定データを送信するか否かを判定し(S13)、測定データを送信すると判定した場合(S13でYes)、測定データをタスク割り当て変更装置2に送信する(S14)。測定部12は、測定データを送信しないと判定した場合(S13でNo)、測定データを蓄積し(S15)、次回以降の起動時に送信を行う際に併せて送信を行う。
測定データの送信頻度については、測定部12は、測定データを毎回送信してもよいし、あらかじめ定められた回数分の測定データを蓄積して蓄積した測定データをまとめて送信してもよい。
次に、処理時間推定部13の動作について説明する。
処理時間推定部13は、数値制御処理部10が処理を完了した後から、次以降の周期で数値制御処理部10が起動するまでに動作を行う。処理時間推定部13は、後述するように加工プログラムのブロックの内容のうち、指令速度、運転モード及び移動距離の情報のみを対象に処理を行うことで、数値制御処理部10よりもはるかに短時間で処理を行うことができる。
図4は、実施の形態1に係る数値制御システム1が有する処理時間推定部13が行う動作の手順を示すフローチャートである。
ステップS21では、処理時間推定部13は、数値制御処理部10が処理を完了した次のブロックからブロックの読み込みを行う。図4では、ステップS21の動作は「第1ブロック読み込み」という文言で表現されている。
ステップS22では、処理時間推定部13は、総移動距離の算出に用いる指令速度を決定する。処理時間推定部13は、ステップS21で読み込んだブロックで指令速度が指定されている場合、当該指令速度の値を用い、指令速度が指定されていなければ、数値制御処理部10が作成した前回までの速度情報に基づき指令速度を決定する。
ステップS23では、処理時間推定部13は、次回周期で数値制御処理部10が処理を完了すべき移動距離である総移動距離を算出する。処理時間推定部13は、ステップS22で決定した指令速度に規定周期を乗じることで総移動距離を算出する。
ステップS24では、処理時間推定部13は、現在処理中のブロックの運転モードの情報を取得し、当該情報を当該ブロックとの対応関係がわかるように保存する。運転モードの情報がない場合、処理時間推定部13は、数値制御処理部10が作成した前回までの運転モードの情報を保存する。
ステップS25では、処理時間推定部13は、現在処理中のブロックの移動距離を算出する。相対値で指令する運転モードでは、現在処理中のブロックに記載された各軸の指令値の二乗和の平方根が移動距離となる。絶対値で指令する運転モードでは、現在処理中のブロックに記載された各軸の指令値が終点となるため、数値制御処理部10が作成した前回の各軸の終点位置と現在処理中のブロックに記載された各軸の指令値との差の二乗和の平方根が移動距離となる。
ステップS26では、処理時間推定部13は、算出された移動距離を累積移動距離に積算する。
ステップS27では、処理時間推定部13は、累積移動距離が総移動距離以上であるか否かを判定し、累積移動距離が総移動距離以上であると判定した場合(S27でYes)、読み込みブロックの数が確定したと判断して(S29)、処理時間推定部13の動作はステップS30へ移行する。処理時間推定部13は、累積移動距離が総移動距離未満であると判定した場合(S27でNo)、ステップS28において、次のブロックを読み込み、ステップS24からステップS27までの動作を繰り返して実行する。処理時間推定部13は、動作を繰り返して実行する場合、数値制御処理部10が作成した前回までの情報ではなく、ひとつ前のブロックの情報を用いる。
次に、読み込みブロックの数が確定した後の処理時間推定部13の動作を説明する。
ステップS30では、処理時間推定部13は、先頭のブロックから再度読み込みを開始する。図4では、ステップS30の動作は「第1ブロック読み込み」という文言で表現されている。ステップS31では、処理時間推定部13は、ブロックの運転モードに対応する平均処理時間を選択する。
次に、処理時間推定部13は、運転モードに対応した平均的な処理時間の数値を、事前に測定しておくなどして用意されたひとつ又は複数の候補の中から選択し、選択された候補に読み込みブロックの数を乗算した値を処理負荷予測値とする。
実際には、読み込みが必要なブロックの範囲内で運転モードが変化する場合もある。この場合、例えば、処理時間推定部13は、複数の候補の中で最も処理時間の長い候補を選択し、選択された候補に読み込みブロックの数を乗算し、最悪値を処理負荷予測値としてもよい。処理時間推定部13は、運転モードに応じた処理時間と、対応するブロックとをひとつずつ乗じたものを積算して正確な値を算出し、算出結果を処理負荷予測値としてもよい。
ここでは処理時間推定部13がブロックごとの運転モードに対応した平均処理時間を選択する例を示すが、処理時間推定部13が、読み込み対象ブロックの運転モードの中から、平均処理時間が最も長いものを選び、選ばれた平均処理時間に読み込みブロックの数を乗ずるという算出方法が用いられてもよい。
ステップS32では、処理時間推定部13は、選択された平均処理時間を処理負荷予測値に積算する。
ステップS33では、処理時間推定部13は、読み込みを行うブロックが最終ブロックに到達したかを判定し、読み込みを行うブロックが最終ブロックに到達したと判定した場合(S33でYes)、処理負荷予測値が算出されたとして処理を終了する。処理時間推定部13は、読み込みを行うブロックが最終ブロックに到達していないと判定した場合(S33でNo)、ステップS34で次のブロックの情報を読み込み、ステップS31からステップS33までの動作を繰り返して実行する。
処理時間推定部13は、上述の動作を行うことによって算出された処理負荷予測値とあらかじめ定められた閾値とを比較し、処理負荷予測値が閾値を超えていれば、割り当て変更を行うため、タスク割り当て変更装置2へ通知する。
閾値が厳しく設定されれば、性能のわずかな低下も許さないように割り当て変更が行われ、閾値が緩く設定されれば、性能の深刻な低下が起きるまでは割り当て変更は行われない。
測定部12によって得られた測定結果と数値制御処理部10のこれまでの実際の処理時間との比較から、閾値は設定されてもよい。例えば、閾値は、これまでの処理時間の平均値に対して+x%などの増分比率で設定されてもよい。xは、実数である。
閾値超過に対する割り当て変更の実行頻度は、調整されてもよい。例えば、処理負荷予測値が閾値を超過すれば割り当て変更を必ず実行するように設定されれば、数値制御システム1は、性能の低下を確実に防ぐことができる。処理負荷予測値が閾値をn回連続で超過した場合に割り当て変更を実行するように設定されれば、数値制御システム1は、偶発的な超過の発生には対応せず、性能の深刻な低下が発生した場合にのみ割り当て変更を実行することができる。nは、2以上の整数である。折衷的な方法として、処理負荷予測値が閾値を累計m回超過したときに割り当て変更を実行し、累計値をリセットするように設定されてもよい。mは、2より大きく、nより小さい整数である。
割り当て変更の対象となるタスクの選定方法について説明する。数値制御処理部10がひとつのタスクから構成されている場合、当該タスクが割り当て変更の対象のタスクとなる。
数値制御処理部10が複数のタスクで構成されている場合、割り当て変更を行う対象のタスクの選定が必要になる。
選定方法に特に制限はないが、例えば、数値制御処理部10を構成するタスクごとに割り当て変更の優先順位を設定しておき、優先順位の高いタスクから割り当て変更の対象とするように設定されてもよい。数値制御処理部10の中でも、軸制御部11が用いるデータの作成に直接関連するタスクの重要度は相対的に高く、当該タスク以外のタスクの重要度は相対的に低いといえ、重要度が相対的に低いタスクを優先的に他の演算部に移動させることで重要度が相対的に高いタスクに演算部のリソースが集中するように設定されてもよい。
作成されたデータが直後の処理で使用されるようなタスクは、要求される応答性能が相対的に高いタスクといえ、反対に作成されたデータが保存領域に保存されて必要な場合に使用されるようなタスクは、要求される応答性能が相対的に低いタスクといえる。要求される応答性能が相対的に低いタスクを割り当て変更の対象の高優先度に設定することで、要求される応答性能が相対的に高いタスクに演算部のリソースが集中するように設定されてもよい。
次に、割り当て変更先の演算部の選定方法について説明する。
図1に示されるように演算部の個数が2である場合、現在割り当てられている演算部とは別の演算部はひとつしかないため、割り当て変更先の演算部は自動的に決定される。
三つ以上の演算部を有する数値制御システムでは、選択肢となる演算部のうちからどれを対象とするかを選ぶ必要がある。
割り当て変更先の演算部の選定方法については特に制限はないが、例えば、対象タスクごとに割り当て変更先となる演算部の優先順位があらかじめ設定されていてもよい。複数の演算部の各々がひとつのマルチコアCPUの各コアである場合を例にとると、SMP(Symmetric Multiprocessing)型であればすべてのコアは等価であるが、AMP(Asymmetric Multiprocessing)型であれば、特性の異なるコアも存在するため、割り当てに適さないコアもある。そのような場合、割り当てに適すコアの優先度が相対的に高く設定され、割り当てに適さないコアの優先度が相対的に低く設定され又は負に設定されるなどして、割り当てに適さないコアは割り当て変更の対象外とされてもよい。
割り当て変更先は、測定部12によって得られた測定データを用いて、処理の負荷が相対的に低い演算部から順に選定されてもよい。
タスク割り当て変更装置2の動作について説明する。まず、前提となる用語について説明する。RTOSはソフトウェアタスクの実行状態を管理することでシステムの動作を制御するが、少なくとも以下の四つのタスク状態を定義して管理するRTOSが一般的である。実行状態は、タスクが演算部によって実行されている状態である。実行可能状態は、タスクが演算部によって実行されてもよい条件が成立しているが、演算部が他の処理を実行中であるため、演算部の使用権を待っている状態である。待ち状態は、タスクが演算部によって実行されるための条件が成立しておらず、条件が成立することを待っている状態である。休止状態は、タスクが生成されておらず、RTOSの管理対象として登録されていない状態である。
実行可能状態のタスクに演算部の使用権を与え、タスク状態を実行状態に移行させる動作をディスパッチ、その逆をプリエンプションという。休止状態のタスクが生成され、タスクがRTOSの管理対象となることで、タスク状態は待ち状態に移行する。逆に、タスクを休止させると、タスクはRTOSの管理対象から削除され、タスク状態は休止状態へ移行する。上述のように、タスクの管理はRTOSによって行われるので、タスク割り当て変更装置2は、RTOSが用意しているAPIなどの機能を用いて、RTOSに対して指令する形態で動作を実現する。
図5は、実施の形態1に係る数値制御システム1が有するタスク割り当て変更装置2が行う動作の手順を示すフローチャートである。まず、ステップS41では、タスク割り当て変更装置2は、割り当て変更を行う対象タスクが決定済みか否かを判定する。タスク割り当て変更装置2は、測定部12からは測定データが送られてくるのみで、割り当て変更を行う対象タスクが決定されていないと判定した場合(S41でNo)、ステップS42で、対象タスクを選定する。
タスク割り当て変更装置2は、割り当て変更を行う対象タスクが決定済みであると判定した場合(S41でYes)、及びステップS42の動作を行った後、ステップS43の動作を行う。処理時間推定部13から、選定された対象タスクの情報が送られてくるので、ステップS43で、タスク割り当て変更装置2は、変更先の演算部が決定済みであるか否かを判定する。
変更先の演算部が決定されていない場合(S43でNo)、ステップS44において、タスク割り当て変更装置2は変更先の演算部を選定する。変更先の演算部が決定されている場合(S43でYes)、及びステップS44の動作を行った後、ステップS45において、タスク割り当て変更装置2は、割り当て変更実施条件が成立しているか否かを判定する。
変更先の演算部の選定方法は、処理時間推定部13を説明する際に述べたものと同様、特に制限はなく、例えば対象タスクごとにあらかじめ決められていてもよい。対象タスクごとに、割り当てる演算部の優先順位がリスト化されていて、変更先の演算部は優先度の順に選択されてもよい。測定データを使用して、処理の負荷の低い演算部から順に変更先の演算部が選定されてもよい。
次に、ステップS42の対象タスクを選定する際のタスク割り当て変更装置2の動作について、図6に基づき説明する。図6は、実施の形態1に係る数値制御システム1が有するタスク割り当て変更装置2が対象タスクを選定する際のタスク割り当て変更装置2の動作の手順を示すフローチャートである。
ステップS51では、タスク割り当て変更装置2は、デッドライン余裕度の算出対象タスクを選定する。当該算出対象タスクは、数値制御処理部10又は軸制御部11を構成するソフトウェアタスクである。デッドライン余裕度は、システムの制約上、規定周期内で処理を完了しなければならないタスクであるハードデッドラインタスクの終了時刻と、規定周期とを比較して算出される。ハードデッドラインタスクが複数存在する場合もあるが、最も終了時刻が遅いタスクが算出対象タスクとなる。
ステップS52では、タスク割り当て変更装置2は、測定データをもとにデッドライン余裕度を算出する。前述のように、測定データには規定周期の開始時刻を時刻0とした各タスクのイベントの時刻が格納されているので、タスク割り当て変更装置2は、デッドライン余裕度の対象タスクの終了時刻と、規定周期から算出されるデッドライン時刻とを比較することにより、デッドライン余裕度を算出する。
デッドライン時刻の算出方法は、数値制御システム1の動作の状態によって変更されてもよい。デッドライン時刻は、規定周期と同じ、すなわち規定周期の1倍である場合もあれば、規定周期の一定数倍である場合もある。デッドライン時刻は、規定周期の一定数倍である場合、あらかじめ決められた周期に対して演算処理を行うことによって算出される。
使用される測定データについては、タスク割り当て変更装置2は、測定データの一定期間又は全期間の平均値を用いてもよいし、一定期間又は全期間の中での最悪値を用いてもよい。平均値を用いる場合、タスク割り当て変更装置2は、測定データが増えるたびに平均値を更新してもよいし、一定量の測定データが蓄積されるまで平均値を更新しないようにしてもよい。
ステップS53では、タスク割り当て変更装置2は、割り当て変更を行うか否かを判定する。具体的には、タスク割り当て変更装置2は、デッドライン余裕度とあらかじめ設定された閾値とを比較し、デッドライン余裕度が閾値未満であれば(S53でYes)、タスク割り当て変更装置2の動作はステップS54に進む。デッドライン余裕度が閾値以上であれば(S53でNo)、タスク割り当て変更装置2は、割り当て変更の必要なしと判定して、ステップS55で割り当て変更の対象タスクなしと決定する。
閾値の設定については、調整及び変更が可能である。例えば、閾値が厳しく設定されれば、性能のわずかな低下も許さないように割り当て変更が行われ、閾値が緩く設定されれば、性能の深刻な低下が起きるまでは割り当て変更は行われない。
閾値未満の判定に対する割り当て変更を行う頻度は、調整可能に設定されてもよい。頻度が毎回に設定されれば、数値制御システム1は、性能の低下に対して割り当て変更を迅速に実行することができる。他方、複数回に1度割り当て変更を行うように設定されれば、数値制御システム1は、性能の多少の低下を許容して、性能の低下が頻発する時のみに割り当て変更を行うことができる。
ステップS54では、タスク割り当て変更装置2は、ハードデッドラインタスクの終了時刻と開始時刻との差分をとり、差分が閾値以内か否かを判定する。閾値は、タスクごとに、処理時間の測定を行うなどしてあらかじめ設定される。閾値は、割り込み又は上位タスクによる処理の中断がない場合の、対象タスクの純粋な処理時間の標準的な値である。差分が閾値以内であれば(S54でYes)、対象タスクの実行時間には問題がなく、開始時刻が遅いためにデッドライン余裕度が少なくなっていることがわかる。そこで、ステップS56において、タスク割り当て変更装置2は、開始時刻から実行可能状態になった時刻を差し引くことによって得られる差が閾値より大きいか否かを判定する。
差分が閾値より大きい場合(S54でNo)、割り込みの上位タスクによって処理が中断されることでデッドライン余裕度が少なくなっている可能性があることがわかる。そこで、差分が閾値より大きい場合(S54でNo)、ステップS57において、タスク割り当て変更装置2は、割り込みによる中断時間を除いた実行時間が閾値以内であるか否かを判定する。
ステップS56では、前述のように、タスク割り当て変更装置2は、開始時刻と実行可能状態になった時刻との差分を、閾値と比較する。当該閾値も、ステップS54で用いられる閾値と同様に、タスクごとに処理時間の測定を行うなどしてあらかじめ設定される。タスクの優先度によって、対象のタスクより上位のタスクの数が変動するため、実行可能状態になってから実際に実行が開始されるまでの平均的な待ち時間は変化する。そのため、タスクごとに閾値を設定することが必要となる。タスク割り当て変更装置2は、差が閾値より大きいと判定した場合(S56でYes)、現在割り当てられている演算部が高優先度のタスクの実行で占められているために実行開始が遅くなっているということがわかるので、ステップS58において、ハードデッドラインタスクを割り当て変更の対象タスクと決定する。
タスク割り当て変更装置2が、差は閾値以内であると判定した場合(S56でNo)、ハードデッドラインタスクは、実行可能になった後、平均的な待ち時間で実行が開始されているとわかる。したがって、実行可能を指令した時刻が遅いためにデッドライン余裕度が少なくなっているとわかるので、ステップS59において、タスク割り当て変更装置2は、ハードデッドラインタスクに実行許可イベントを発行したタスクを対象のタスクに決定し、ステップS54の動作を再度行う。
上述のように、ステップS57では、タスク割り当て変更装置2は、割り込みによる中断時間を除いたハードデッドラインタスクの処理時間と閾値とを比較する。ハードデッドラインタスクのプリエンプション及びディスパッチの各イベントの発生時刻を用いることで、割り込みによる中断時間を算出することができる。当該閾値は、ステップS54で用いられた閾値と同じものであってもよい。タスクによっては、割り込みが発生することが前提に設計されていることも考えられるため、その場合にはステップS54で用いられた閾値と異なる閾値が設定されてもよい。
タスク割り当て変更装置2が、割り込みによる中断時間を除いた実行時間が閾値より大きいと判定した場合(S57でNo)、現在割り当てられている演算部による高優先度タスクの使用率が大きいため、ハードデッドラインタスクの実行時間を確保することができないことが、割り込みによる中断時間を除いた実行時間が閾値より大きいことの原因であると判断することができる。そのため、タスク割り当て変更装置2は、ステップS58において、ハードデッドラインタスクを割り当て変更の対象タスクと決定し、対象タスクを余裕がある演算部へ移行する。
タスク割り当て変更装置2が、割り込みによる中断時間を除いた実行時間が閾値以内であると判定した場合(S57でYes)、ハードデッドラインタスクは問題なく実行されているため、処理が開始された時刻が遅いことが問題であるとわかる。したがって、タスク割り当て変更装置2は、ステップS59において、ハードデッドラインタスクに実行許可イベントを発行したタスクを対象のタスクに決定し、ステップS54の動作を再度行う。
タスク割り当て変更装置2の上述の動作により、デッドライン余裕度が閾値以下である場合、タスク割り当て変更装置2は、割り当て変更を行うべき対象タスクを選定することができる。対象タスクの選定方法は、各タスクに優先順位を設定しておき、割り当て変更実施条件が成立した場合、割り当てが変更されていないタスクの中から優先度の高い順に選定する方法であってもよい。
図5のフローチャートが示すタスク割り当て変更装置2の動作の説明に戻る。ステップS45では、タスク割り当て変更装置2は、割り当て変更実施条件が成立しているか否かを判定し、条件が成立していると判定した場合(S45でYes)、ステップS46において、割り当て変更を実施する。タスク割り当て変更装置2は、条件が成立していないと判定した場合(S45でNo)、割り当て変更を行わず、動作を終了する。
割り当て変更対象タスクが設定されていると共に、割り当て変更先の演算部として利用可能な演算部が設定されている場合、割り当て変更実施条件が成立する。
前述のように、余裕度が閾値以上である場合、割り当て変更を行う必要はないので、タスク割り当て変更装置2は、割り当て変更対象タスクに「対象タスクなし」と設定することで、割り当て変更を行わない。割り当て変更先の演算部として、存在しない又は通信を行うことができない演算部が設定されている場合、割り当て変更処理が行われると数値制御システム1の動作が損なわれるので、タスク割り当て変更装置2は、変更条件が成立していないと判断して、割り当て変更を行わない。
ステップS46の割り当て変更動作について説明する。まず、タスク割り当て変更装置2が割り当て変更前の演算部について行う動作について説明する。タスクが実行中である場合には割り当ての変更を行うことができないので、割り当て変更の対象タスクが実行状態であれば、タスク割り当て変更装置2は、プリエンプションを行い、割り当て変更の対象タスクの状態を実行可能状態にする。タスク割り当て変更装置2は、実行可能状態又は待ち状態のタスクの管理情報を取得し、対象タスクを休止状態にする。これにより、対象タスクは割り当て変更前の演算部においてRTOSの管理外となる。
タスクの管理情報とは、一般にコンテキストと呼ばれるもので、タスクの管理情報には、PCB(Process Control Block)、TCB(Task Control Block)、各種レジスタの値又はスタックポインタの値などが含まれる。
次に、タスク割り当て変更装置2が割り当て変更先の演算部について行う動作について説明する。割り当て変更先の演算部で対象タスクの生成が行われていなければ、タスク割り当て変更装置2は対象タスクを生成する。これにより、対象タスクは割り当て変更後の演算部においてRTOSの管理下のタスクとなる。割り当て変更前後の二つの演算部がメモリを共有していない場合、タスク割り当て変更装置2は、割り当て変更先の演算部が生成した対象タスクの管理情報の領域に、割り当て変更前のタスクの管理情報をセットする。割り当て変更前後の二つの演算部がメモリを共有している場合、タスク割り当て変更装置2は、取得したタスクの管理情報が保存されている領域を、割り当て変更先の演算部が生成したタスクが参照するように設定すればよい。
この段階で対象タスクの割り当て変更自体は完了しており、対象タスクの状態は少なくとも待ち状態以上の状態になっている。実行可能条件が成立していれば、対象タスクの状態は実行可能状態となっており、実行可能状態で必要であれば、タスク割り当て変更装置2は、割り当て変更先の演算部に対して、割り込み指令などを利用してタスクディスパッチを実行させることで、対象タスクを実行させることが可能となる。
ここで、割り当て変更先の演算部におけるタスクの生成方法について説明する。タスクの生成方法には特段の制限はないが、例えば最も単純な方法としては、割り当て変更の実施時に都度タスクを生成する方法がある。当該方法では、割り当て変更を実際に行う際にタスクを生成するので、生成するタスクを必要なタスクのみに限定することができ、RTOSの管理領域を節約することができるメリットが得られる。
タスクの生成方法は、あらかじめ生成しておくという方法であってもよい。当該方法では、割り当て変更の開始前にタスクを生成することができるので、割り当て変更処理に要する時間を短くすることができる。割り当て変更を行う可能性があるすべてのタスクがあらかじめ生成されていてもよいし、割り当て変更の頻度が高いと予想される一部のタスクが限定的に生成されていてもよい。
また、割り当て変更受付用の専用タスクを用意して生成しておくという方法が採用されてもよい。当該方法では、生成タスクの数を必要分に抑えつつ、割り当て変更処理に要する時間を短くすることができる。専用タスクでは、タスクとしての制御構造、すなわち実行権取得待ちの処理と、実行が開始した後に最初に実行するエントリポイントとなる関数と、実行が完了したら実行権取得待ちに戻るループ構造とが用意される。どのタスクを専用タスクで実行するかは、エントリポイントとなる関数に対象タスクのエントリポイントとなる関数のメモリ上のアドレスを設定するか否かで切り替えることが可能である。例えばC言語であれば、関数ポインタを使うことで切り替えを実現することができる。
上述の動作によって、実施の形態1に係る数値制御システム1は、数値制御処理部10及び軸制御部11を構成するひとつ以上のソフトウェアタスクを、現在実行中の演算部とは異なる演算部で実行するように割り当て変更を行うことができる。図7は、図1の数値制御処理部10を構成していたソフトウェアタスクAの割り当てが第2演算部5に変更された場合の数値制御システム1を示す図である。図7では、図1の数値制御処理部10は数値制御処理部10Aと記載されている。つまり、図7は、図1の数値制御処理部10を構成していたソフトウェアタスクAの割り当てを第2演算部5に変更し、ソフトウェアタスクAを第2演算部5の数値制御処理部10Bを構成するタスクとした場合の数値制御システム1を示している。上述の動作は、運転中状態において実行されることが望ましい。上述の動作が運転中状態で実行されることによって、数値制御システム1は、動作中状態の各演算部の処理負荷の状況に対応する割り当て変更動作を行うことができる。
なお、タスク割り当て変更装置2は、測定データを受信する度に処理を実行してもよいし、一定周期で処理を実行してもよい。タスク割り当て変更装置2は、処理時間推定部13から閾値超過通知を受信した場合に割り当て変更動作を実行してもよい。
(実施の形態1の効果)
タスク割り当て変更装置2は、数値制御システム1が実行しているソフトウェアタスクを、複数の演算部のうちの当該ソフトウェアタスクが現在割り当てられている演算部と異なる演算部で当該ソフトウェアタスクが実行されるように割り当て変更動作を行う。タスク割り当て変更装置2は、数値制御システム1が制御対象6を制御している状態である運転中状態を維持したまま割り当て変更動作を行う。したがって、実施の形態1に係る数値制御システム1は、電源の再投入を必要とすることなく、稼働中に発生する処理量の変動に対応して処理を実行することができる。
効果を更に説明する。タスク割り当て変更装置2により、実施の形態1に係る数値制御システム1に電源が投入された後、数値制御システム1は、運転中状態であってもソフトウェアタスクを現在実行中の演算部から別の演算部へと移動させて実行させることができる。これによって、数値制御システム1は、タスクの割り当てを、運転中に処理の負荷が増大して性能不足となっている演算部から、別の演算部に変更することで、電源の再投入が行われることなく処理の負荷を分散し、数値制御システム1の全体の性能を保つことができる。
つまり、数値制御システム1の運転を一度停止することが容易に行うことができない環境下においても、数値制御システム1は、複数の演算部に対する処理の負荷のばらつきを解消することができる。したがって、数値制御システム1の性能を最大限に発揮させることが可能となる。
タスク割り当て変更装置2が、動作中の数値制御システム1の処理の負荷についての測定結果に基づいて対象のソフトウェアタスクについての演算部の割り当てを変更することで、数値制御システム1は、定められた処理の完了時間を守るように、つまりハードデッドラインを守るように処理の負荷を分散することができる。これによって、数値制御システム1に対する指令内容に対応して時々刻々と変動する処理の負荷が原因となって、数値制御システム1に定められた処理の完了時間を超過することが生じかねない状況下においても、数値制御システム1は、演算部に対するタスクの割り当てを変更することで、当該状況を改善することができる。
数値制御システム1における優先度が相対的に低いタスクは、優先度が相対的に高いタスク、すなわちハードデッドラインタスクの空き時間で実行されているため、ハードデッドラインタスクが完了時間を超過するような状況下では実行することができなくなる。優先度が相対的に高いタスクの例としては、数値制御処理部10又は軸制御部11を構成するタスクが挙げられ、優先度が相対的に低いタスクの例としては、画面の描画処理又は外部装置との通信処理が挙げられる。したがって、画面表示が更新されなくなるなどの事象が発生する可能性がある。処理の完了時間の超過が深刻になれば、優先度が相対的に高いタスクも完了することができなくなり、制御対象の動作が停止する可能性もある。
ハードウェアの性能に対する処理の負荷が過剰な状態である場合、通常であれば、ハードウェアの増強を行うか、処理の負荷を低減するように数値制御システム1に対する指令の内容を軽減する必要がある。しかし、実施の形態1に係る数値制御システム1は、上述の場合であっても、演算部へのタスクの割り当てを変更することによって、処理の完了時間を短縮することができ、数値制御システム1のハードウェアの性能を最大限利用することが可能となる。
加えて、タスク割り当て変更装置2によれば、動作中の数値制御システム1は、性能不足になることを数値制御処理部10の処理時間の予測をもとに検知し、ソフトウェアタスクを別の演算部で実行するように変更することで、性能不足になることを回避するように処理の負荷を分散することができる。
実行中の数値制御システム1の処理の負荷が変動する主な要因は、加工プログラムに記述されている内容によって主に数値制御処理部10の処理の負荷が大きく変化することである。実際に加工プログラムを読み込むまでどのような処理が実行されるかわからないため、数値制御システム1に電源が投入された時に処理の負荷を予測することは困難である。したがって、数値制御システム1が稼働して初めて、性能不足が判明するケースがある。
上述の場合では、通常、加工プログラムによる処理の負荷を軽減するために、指令速度を低くする、又は、微小な線分による細かい指令経路を長い線分若しくは円弧に置き換えることで1ブロック当たりの距離を長くする、などの対策が行われる。しかし、この対策では、ユーザは、本来実現したかった能率での加工、高精度な形状の加工、又は高品位な加工面の実現などをあきらめて妥協することになる。
しかし、実施の形態1に係る数値制御システム1は、加工プログラムを先読みして、数値制御処理部10の処理の負荷を予測することができるので、数値制御システム1の稼働中に実際の処理の負荷を精度良く予測した上で処理の負荷を分散することができる。これによって、ユーザは、本来実現したかった生産性、精度及び品質での加工を実現することが可能となる。
タスク割り当て変更装置2が行う割り当て変更動作に係るソフトウェアタスクは、数値制御処理部10又は軸制御部11を構成するソフトウェアタスクである。タスク割り当て変更装置2は、測定部12によって得られた処理時間の測定結果をもとに、数値制御システム1に設定されたあらかじめ決められた周期内で実行完了が必要となる処理であるハードデッドライン処理が完了した時刻の当該周期に対する余裕度であるデッドライン余裕度を閾値以上に保つように、割り当て変更動作を行う。これにより、数値制御システム1は、数値制御システム1に設定された処理完了時間であるハードデッドラインを守るように処理の負荷を分散することができる。
処理時間推定部13は、数値制御システム1に入力された加工プログラムに基づき、指令された目標速度と加工プログラムの1ブロック当たりの移動距離の長さとを示す情報を用いて、数値制御処理部10が次に動作を実行する際に処理するブロックの数を算出し、加工プログラムによって指定される運転モード情報に基づいて、数値制御処理部10の平均的な処理時間をひとつ以上の候補から選択し、ブロックの数に選択した処理時間を乗じた処理負荷予測値を算出する。タスク割り当て変更装置2は、処理時間推定部13によって算出された処理負荷予測値が閾値以上である場合に割り当て変更動作を行う。これにより、数値制御システム1は、性能不足が生じることを回避するように処理の負荷を分散することができる。
実施の形態2.
(実施の形態2の構成)
図8は、実施の形態2に係る数値制御システム1Aの構成の概略を示す図である。数値制御システム1Aは、第1の数値制御装置7と、第2の数値制御装置8とを有する。第1の数値制御装置7と第2の数値制御装置8とは、通信手段3で通信可能なように接続される。第2の数値制御装置8は、制御対象6に接続されている。制御対象6は実施の形態1で説明した制御対象6と同様のものであるので、実施の形態2では制御対象6の説明を省略する。
第1の数値制御装置7及び第2の数値制御装置8の各々は、少なくともひとつ以上の演算部を有すると共に、演算部の処理の実行に用いられる記憶領域を有していれば、どのような形態で実現されてもよい。例えば、第1の数値制御装置7及び第2の数値制御装置8は、同一種類のハードウェアで実現されてもよいし、異なる種類のハードウェアで実現されてもよい。
第1の数値制御装置7及び第2の数値制御装置8が同一種類のハードウェアで実現される場合の例としては、プリント基板に集積回路、抵抗器及びコンデンサなどの電子部品が実装された専用の電子回路基板を用いて実現されるパターンが考えられる。この場合、第1の数値制御装置7及び第2の数値制御装置8について構成部品及び在庫の共通化を図ることができるため、製造、流通及び販売の面で効率化を期待することができる。
第1の数値制御装置7及び第2の数値制御装置8が異なる種類のハードウェアで実現される場合、例えば第1の数値制御装置7についてはサーバ又はワークステーションなどの比較的高性能なハードウェアを採用して比較的高い処理能力を確保し、第2の数値制御装置8については基板に最低限の電子部品を実装して小型化及び低コスト化を実現するパターンが考えられる。
通信手段3は、実施の形態1の通信手段3と同様に、無線での通信を可能とする手段であってもよいし、有線での通信を可能とする手段であってもよい。通信手段3は、シリアル方式での通信を可能とする手段であってもよいし、パラレル方式での通信を可能とする手段であってもよい。例えば第1の数値制御装置7及び第2の数値制御装置8が基板の形態で実現されてバスコネクタを介して接続される場合、どのような方式で通信が行われてもよく、第1の数値制御装置7及び第2の数値制御装置8の各々が独立したひとつの製品の形態で実現される場合、第1の数値制御装置7と第2の数値制御装置8とは、無線で接続されてもよいし、ケーブルで接続されてもよい。第1の数値制御装置7と第2の数値制御装置8とが行う通信についての方式及び規格などは、どのようなものであってもよい。
第1の数値制御装置7及び第2の数値制御装置8の各々は、測定部12及び処理時間推定部13を有する。測定部12及び処理時間推定部13は実施の形態1の測定部12及び処理時間推定部13と同様のものであるため、測定部12及び処理時間推定部13についての説明を省略する。
第1の数値制御装置7は第1数値制御処理部21を有し、第2の数値制御装置8は第2数値制御処理部22を有する。第1数値制御処理部21及び第2数値制御処理部22は実施の形態1における数値制御処理部10が行う数値制御処理を分担する。具体的には、数値制御処理部10を構成するソフトウェアタスクが分割され、当該ソフトウェアタスクの一部が第1数値制御処理部21に割り当てられ、当該ソフトウェアタスクの残部が第2数値制御処理部22に割り当てられる。つまり、第1数値制御処理部21は数値制御処理部10が行う数値制御処理の一部を担当して実行し、第2数値制御処理部22は数値制御処理部10が行う数値制御処理の残部を担当して実行する。
数値制御処理の全体のうちの第1数値制御処理部21が担当する部分と第2数値制御処理部22が担当する部分とを特定する分担方法については、特に制限はない。分担方法の最も単純な例としては、加工プログラムの文字列の解析のような前半の処理を第1数値制御処理部21に割り当て、経路の補間処理などの後半の処理を第2数値制御処理部22に割り当てる方法が考えられる。
分担方法の他の例として、第1数値制御処理部21と第2数値制御処理部22とのうちのどちらか一方のみに数値制御処理部10を構成するすべてのソフトウェアタスクを割り当てるという方法がある。例えば、第2の数値制御装置8の性能が不足している場合、第2数値制御処理部22にはどのようなソフトウェアタスクも割り当てず、第1数値制御処理部21がすべての数値制御処理を行って、第2の数値制御装置8は軸制御部11についての処理に専念するという分担方法が採用されてもよい。
第1数値制御処理部21は、定められた分担にしたがって数値制御処理を行い、第1の数値制御指令情報を作成する。第1の数値制御指令情報は、第2数値制御処理部22若しくは軸制御部11、又は、第2数値制御処理部22及び軸制御部11の両方で用いられるデータ及び信号を含んでいる。
第2数値制御処理部22は、第1の数値制御指令情報を用いて、定められた分担にしたがって数値制御処理を行い、第2の数値制御指令情報を作成する。第2の数値制御指令情報には、軸制御部11が用いるデータ及び信号が含まれている。
第2の数値制御装置8は、軸制御部11を有する。軸制御部11の役割は実施の形態1の軸制御部11の役割と同様であるため、軸制御部11については、実施の形態2では、軸制御部11の役割のうちの実施の形態1で説明された役割の説明を省略し、実施の形態2で特有の特徴についてのみ説明する。実施の形態2の軸制御部11は、前述の第1数値制御処理部21及び第2数値制御処理部22の数値制御処理の分担の状況に対応して、第1の数値制御指令情報を用いるか、第2の数値制御指令情報を用いるか、又は、第1の数値制御指令情報と第2の数値制御指令情報との両方を用いるかを切り替える。
実施の形態2に係る数値制御システム1Aは、第1の数値制御装置7と第2の数値制御装置8とが通信手段3を介して接続可能なように配置された記憶領域9を有していてもよい。数値制御システム1Aが記憶領域9を有しない場合、第1の数値制御装置7及び第2の数値制御装置8の各々にローカルな記憶領域が設けられて、当該ローカルな記憶領域が記憶領域9の代わりに用いられる。
記憶領域9の種類は、問われない。記憶領域9は、通信手段3の種類に対応して基板に実装可能な揮発性又は不揮発性の各種メモリであってもよいし、Ethernetケーブルで構築されたネットワーク上で接続可能に構成されたNAS(Network Attached Storage)又はオンプレミス若しくはクラウドなどの各種のデータサーバであってもよい。
記憶領域9には、数値制御システム1Aを実現するために必要なソフトウェア処理を実行するためのソフトウェアであるソフトウェアモジュール19が保存されている。ソフトウェアモジュール19は、第1数値制御処理部21、第2数値制御処理部22、軸制御部11、測定部12、処理時間推定部13、タスク割り当て変更部14、操作入力受付部15及び通信可能ハードウェア検出部16の機能を実現するためのソフトウェアを含んでいればよく、当該ソフトウェア以外の処理ソフトウェアを含んでいてもよい。以下では、通信可能ハードウェア検出部16は、通信可能HW検出部16と記載される。図8においても、通信可能ハードウェア検出部16は、通信可能HW検出部16と記載されている。
記憶領域9には、構成設定ファイル18が更に保存されている。構成設定ファイル18は、数値制御システム1Aに含まれる複数の数値制御装置の各々がソフトウェアモジュール19に含まれるソフトウェアのうちどれを電源が投入された時から実行させるかというイニシャルソフトウェア情報が記述されたものである。具体的には、構成設定ファイル18は、第1の数値制御装置7及び第2の数値制御装置8の機能を実現するための複数のソフトウェアのうちのどのソフトウェアを電源が投入された時から実行させるかを特定するイニシャルソフトウェア情報が記述されたファイルである。構成設定ファイル18は、第1の数値制御装置7の役割をどのハードウェアに割り当てるかというマスター選択情報を含んでいる。マスター選択情報は、イニシャルソフトウェア情報に含まれていてもよい。
第1の数値制御装置7の役割とは、第1の数値制御装置7が保有する演算部において、タスク割り当て変更部14と通信可能HW検出部16とを実行させ、数値制御システム1Aにおける割り当て変更動作を実現させる役割である。
構成設定ファイル18のファイルフォーマット及び記述形式は、第1の数値制御装置7及び第2の数値制御装置8が解析することが可能であればどのようなものでもよい。例えば、構成設定ファイル18は、テキストファイルのフォーマットで、第1の数値制御装置7及び第2の数値制御装置8の各々のハードウェアに固有の識別ID(Identifier)に基づいて第1の数値制御装置7及び第2の数値制御装置8の各々のイニシャルソフトウェア情報を選択するように記述されてもよい。
第1の数値制御装置7は、通信可能HW検出部16を有する。通信可能HW検出部16は、通信手段3を介して通信可能な数値制御装置を検出する。更に言うと、通信可能HW検出部16は、通信手段3の種類に対応して、通信可能なハードウェアを検出するための各種信号及びデータの送受信を行い、通信可能なハードウェアと、通信可能なハードウェアについての通信手段の種類とを検出する。例えば、通信手段3が可能とする通信がバス通信であり、基板に設けられたコネクタで第2の数値制御装置8が接続されている場合、通信可能HW検出部16は、特定の信号を周期的に送信し、コネクタの先にハードウェアが接続されているか否かを信号の変化をもとに検出してもよい。例えば、通信手段3が有線のEthernetでの通信を可能とするものであれば、通信可能HW検出部16は、TCP/IP(Transmission Control Protocol/Internet Protocol)に基づいた通信制御技術によってネットワーク上で通信可能なハードウェアを検出してもよい。
通信可能HW検出部16は、通信可能ハードウェア情報17を作成する。以下では、通信可能ハードウェア情報17は、通信可能HW情報17と記載される。図8においても、通信可能ハードウェア情報17は、通信可能HW情報17と記載されている。通信可能HW情報17は、検出された通信可能なハードウェアに関する各種情報を含む。通信可能HW情報17に含まれる情報の例としては、各ハードウェアが有する演算部の種類若しくは数、各ハードウェアに接続されたHMI(Human Machine Interface)、外部I/O(Input/Output)装置若しくは制御対象6などの他のハードウェアに関する種類若しくは数などの情報、又は、通信手段3を用いて当該ハードウェアに接続するために必要となる接続関連情報などがある。接続関連情報には、例えば、通信手段の種別、又は、通信手段の種別ごとの付加情報などがある。具体例を挙げると、通信手段がEthernetである場合、通信手段の種別ごとの付加情報には、通信プロトコル情報、IP(Internet Protocol)アドレス、及びポート番号などが含まれる。
第1の数値制御装置7は、タスク割り当て変更部14を有する。タスク割り当て変更部14は実施の形態1におけるタスク割り当て変更装置2と同じ役割を果たすので、タスク割り当て変更部14の詳細な説明は省略する。
実施の形態1における第1演算部4と第2演算部5との関係を、第1の数値制御装置7と第2の数値制御装置8との各々の演算部に当てはめることで、実施の形態2に係る数値制御システム1Aは、実施の形態1で説明された機能と同様の機能を実現することができる。
第1の数値制御装置7及び第2の数値制御装置8の各々は、数値制御システム1Aの動作に関連する入力を受け付ける操作入力受付部15を有する。ユーザは、ソフトウェアタスクの演算部への割り当て変更動作の実行のタイミングを数値制御システム1Aが有する機能をもとに数値制御システム1Aに決定させるのではなく、割り当て変更動作の実行タイミングを制御したい場合がある。数値制御システム1Aを実際に使用するエンドユーザの中には、自身の判断において調整を行いたいと考え、自身の管理外で勝手に調整されることを好まないユーザもいる。当該ユーザに対しては、数値制御装置に設けられた入力装置を用いて割り当て変更の許可を入力してもらい、入力の結果を操作入力受付部15が受け取り、受け取られた結果にしたがって動作するように制御することで、割り当て変更動作をユーザが制御可能なように数値制御システム1Aを構成しておくことが考えられる。
入力装置の種類には、特に制限はない。入力装置には、一般的に数値制御装置に備えられている入力インターフェースが用いられればよい。入力装置は、HMI又は機械式のボタンなどであってもよい。
(実施の形態2の動作)
実施の形態2に係る数値制御システム1Aの動作について説明する。数値制御システム1Aを構成する第1の数値制御装置7及び第2の数値制御装置8の電源が投入されると、数値制御システム1Aの状態は、電源OFF状態から電源ON状態に遷移し、次いで起動処理が開始されることによって起動中状態に遷移し、第1の数値制御装置7及び第2の数値制御装置8は、通信手段3を通じて記憶領域9に接続し、構成設定ファイル18を読み込む。
第1の数値制御装置7及び第2の数値制御装置8は、ソフトウェアモジュール19を記憶領域9から読み込み、構成設定ファイル18に含まれるイニシャルソフトウェア情報及びマスター選択情報にしたがって対応する構成要素を展開する。
次に、第1の数値制御装置7は、通信可能HW検出部16によって通信可能な数値制御装置を把握する。実施の形態2では第1の数値制御装置7及び第2の数値制御装置8の二つの数値制御装置しか存在しないが、三つ以上の数値制御装置が存在する場合、第1の数値制御装置7は、三つ以上の数値制御装置を検出して三つ以上の数値制御装置の個数を把握する。
第1の数値制御装置7と第2の数値制御装置8とが通信手段3を介した通信を確立した段階で、数値制御システム1Aの状態は起動完了状態へ遷移し、数値制御システム1Aの動作が可能となるので、第1数値制御処理部21によって作成された第1の数値制御指令情報が通信手段3を介して第2の数値制御装置8に送信される。第2の数値制御装置8は、数値制御処理の分担状況に対応して、第2数値制御処理部22若しくは軸制御部11、又は、第2数値制御処理部22及び軸制御部11の両者で第1の数値制御指令情報を用いた処理を行い、軸制御部11が制御対象6に指令を出力することで制御対象6の制御を実現する。
実施の形態2におけるタスク割り当て変更部14の動作について説明する。実施の形態2のタスク割り当て変更部14の基本的な動作は実施の形態1で説明したタスク割り当て変更装置2の動作と同様である。そのため、実施の形態2では、タスク割り当て変更部14の基本的な動作の説明を省略し、実施の形態2で特有な部分についてのみ説明する。
実施の形態2では、複数の数値制御装置でのタスクの割り当て変更の説明を行うため、数値制御装置の内部の複数の演算部での割り当て変更について特に述べないが、実施の形態1で説明した内容に基づき、第1の数値制御装置7又は第2の数値制御装置8の内部の複数の演算部での割り当て変更も可能である。
第1の数値制御装置7の測定部12及び処理時間推定部13、並びに第2の数値制御装置8の測定部12及び処理時間推定部13は、実施の形態1で説明した動作の内容を、第1の数値制御装置7の内部の第1数値制御処理部21を構成するソフトウェアタスク、並びに第2の数値制御装置8の内部の軸制御部11及び第2数値制御処理部22を構成するソフトウェアタスクに対して行う。
実施の形態1において測定部12及び処理時間推定部13が通信手段3を介してタスク割り当て変更装置2に対して行った動作と同じように、第1の数値制御装置7の測定部12及び処理時間推定部13、並びに第2の数値制御装置8の測定部12及び処理時間推定部13は、通信手段3を介して、タスク割り当て変更部14に対して、測定データの送信と、割り当て変更タスクの通知とを行う。図8では、タスク割り当て変更部14は第1の数値制御装置7の内部に配置されているので、第1の数値制御装置7の測定部12及び処理時間推定部13は、通信手段3の代わりに第1の数値制御装置7の内部バスなどを用いる方法でタスク割り当て変更部14にデータ及び通知を送信してもよい。
タスク割り当て変更部14は、実施の形態1におけるタスク割り当て変更装置2と同様にして、測定データ及び割り当て変更タスクの通知をもとに割り当て変更動作を実施する。タスク割り当て変更部14は、通信可能HW情報17及び構成設定ファイル18に含まれる情報を用いて、割り当て変更先の演算部の選定を改良してもよい。例えば、通信手段3の種類に対応して生じると見込まれる第2の数値制御装置8との通信の遅延の大きさを考慮して、タスク割り当て変更部14は、演算部の割り当て優先順位を変更してもよい。
タスク割り当て変更部14は、第2の数値制御装置8が有する演算部の数と、各演算部の負荷の状況とをもとに、演算部の割り当て優先度を変更してもよい。タスク割り当て変更部14は、通信可能HW情報17から各数値制御装置が有する演算部の数を取得することができ、測定部12の測定データを用いることで各演算部の負荷の状況を取得することが可能である。
操作入力受付部15の動作について説明する。操作入力受付部15は、前述の通り入力装置からの入力データをもとに、タスク割り当て変更部14に対して割り当て変更処理を実行するように指令したり、割り当て変更処理の実行周期を指定したりする。
例えば、ユーザが割り当て変更を即座に実行させたい場合、操作入力受付部15は、入力装置を通じて指令を受け取ると、割り当て変更処理を即座に実行するようにタスク割り当て変更部14に対して割り当て変更処理実行命令を出力してもよい。
数値制御システム1A又は第1の数値制御装置7のモード設定及び機能の有効か無効かを示す情報と、動作の調整等の目的で設けられているパラメータとの一方又は双方をもとに、操作入力受付部15は、割り当て変更処理が実行される頻度を調整してもよい。すなわち、パラメータが変更された場合、操作入力受付部15は、パラメータ変更通知を受け取り、変更されたパラメータの内容をもとにタスク割り当て変更部14が実行する割り当て変更の頻度を増減させてもよい。
(実施の形態2の効果)
上述の動作によって、実施の形態2に係る数値制御システム1Aは、数値制御システム1Aの運転中状態であってもソフトウェアタスクを現在実行中の演算部から別の演算部へと移動させて実行させることができる。これによって、運転中に処理の負荷が増大して性能不足となっている数値制御装置から、別の数値制御装置に割り当ての変更を行うことで、数値制御システム1Aは、運転を中断することなく処理の負荷を分散し、数値制御システム1Aの全体の性能を保つことができる。
これによって、単体のハードウェアで十分な性能要求に対しては単体で対応し、より高い性能が求められる場合にハードウェアを追加するという運用が可能となるので、ユーザは、必要な性能に対して見合ったコストで数値制御システム1Aを利用することが可能となる。
数値制御システム1Aでは、割り当て変更動作の実行タイミング及び頻度をユーザが指定することが可能となり、試運転、評価又は調査などの際にはユーザは手動で割り当て変更を指示して内部の状態を把握することができる一方、生産中などの比較的長時間の運転時には数値制御システム1Aに自動的に割り当て変更を行わせて数値制御システム1Aの性能を維持することが可能となる。
上述のように、第1の数値制御装置7及び第2の数値制御装置8は、通信手段3を介して接続される。第1の数値制御装置7は、第1数値制御処理部21によって作成された第1の数値制御指令情報を、通信手段3を通じて第2の数値制御装置8に送信する。第2の数値制御装置8が有する軸制御部11は、第1の数値制御指令情報又は第2の数値制御指令情報を用いて制御対象6に設けられた駆動軸の制御を実行する。第1の数値制御装置7及び第2の数値制御装置8の各々は、構成設定ファイル18を起動時に読み込むことによって自身の役割が第1の数値制御装置7であるか第1の数値制御装置7以外であるかを判定する。
第1の数値制御装置7が有する通信可能HW検出部16は、通信手段3を介して通信可能な数値制御装置を検出する。第1の数値制御装置7が有するタスク割り当て変更部14は、通信可能HW検出部16によって得られた検出結果を含む通信可能HW情報17と、構成設定ファイル18とをもとに、数値制御システム1Aが実行しているソフトウェアタスクを、第1の数値制御装置7と第2の数値制御装置8とのうちの当該ソフトウェアタスクが現在割り当てられている数値制御装置と異なる数値制御装置で当該ソフトウェアタスクが実行されるように、数値制御システム1Aが制御対象6を制御している状態である運転中状態を維持したまま割り当て変更動作を行う。これにより、数値制御システム1Aは、稼働中であっても割り当て変更動作を行うことが可能となり、第1の数値制御装置7又は第2の数値制御装置8が単体で性能不足となる状況でも、数値制御システム1Aの全体としては必要な性能を発揮することができる。
タスク割り当て変更部14は、操作入力受付部15が入力を受け付けたことを契機に割り当て変更動作を行ってもよい。この場合、ユーザは、試運転、評価又は調査などの際に数値制御システム1Aの内部の処理の割り当て状態を把握することができる。
実施の形態3.
(実施の形態3の構成)
図9は、実施の形態3に係る数値制御システム1Bの構成の概略を示す図である。実施の形態3における複数の構成要素は他の実施の形態において説明した構成要素と基本的に同様であるため、実施の形態3では、実施の形態3において特徴的な点及び他の実施の形態との差についてのみ説明を行う。実施の形態3に係る数値制御システム1Bは、二つ以上の制御対象6を制御してもよい。図9は、数値制御システム1Bが三つの制御対象6を制御する状況を示している。
実施の形態3に係る数値制御システム1Bは、実施の形態2に係る数値制御システム1Aと比べ、二つの数値制御装置を更に有している。当該二つの数値制御装置は、第3の数値制御装置83及び第4の数値制御装置84である。第3の数値制御装置83及び第4の数値制御装置84の各々は、通信手段3を介して、数値制御システム1Bを構成するハードウェアである第1の数値制御装置7、第2の数値制御装置8及び記憶領域9に接続可能なように配置されている。
第3の数値制御装置83は、第2の数値制御装置8と同じ構成要素を有する。すなわち、第3の数値制御装置83は、軸制御部11、測定部12、処理時間推定部13、操作入力受付部15及び第2数値制御処理部22を有する。第4の数値制御装置84は、第1の数値制御装置7が有する複数の構成要素のうちの測定部12、処理時間推定部13、操作入力受付部15及び第1数値制御処理部21を有する。
タスク割り当て変更部14は、数値制御システム1Bの内部にひとつ存在すればよく、実施の形態3では第1の数値制御装置7の内部に存在するため、第4の数値制御装置84はタスク割り当て変更部14を有していない。通信可能HW検出部16についても、タスク割り当て変更部14と同様である。
図9では、ひとつの制御対象6が第2の数値制御装置8に接続されており、二つの制御対象6が第3の数値制御装置83に接続されている。数値制御装置に接続される制御対象6の個数には、特に制限はない。すなわち、ひとつの数値制御装置がひとつの制御対象6と接続されてもよいし、複数の数値制御装置がひとつの制御対象6と接続されてもよいし、ひとつの数値制御装置が複数の制御対象6と接続されてもよい。
制御対象6の制御を実現するためには、数値制御システム1Bの内部の第1数値制御処理部21、第2数値制御処理部22及び軸制御部11の各々が処理を行う必要がある。実施の形態3では、第1の数値制御装置7及び第2の数値制御装置8の各々が第1数値制御処理部21を有し、第2の数値制御装置8及び第3の数値制御装置83の各々が第2数値制御処理部22と軸制御部11とを有する。しかしながら、複数の制御対象6の制御を実現するための処理を各部がどのような配分で行うかについては特に制限がない。
例えば図9の例では、三つの制御対象6が存在し、第2の数値制御装置8にひとつの制御対象6が接続されており、第3の数値制御装置83に二つの制御対象6が接続されている。しかし、第1の数値制御装置7の第1数値制御処理部21が、第2の数値制御装置8に接続されているひとつの制御対象6についての処理を行い、第4の数値制御装置84の第1数値制御処理部21が、第3の数値制御装置83に接続されている二つの制御対象6についての処理を行う必要は必ずしもなく、第1の数値制御装置7の第1数値制御処理部21が第3の数値制御装置83に接続されている制御対象6の処理を行ってもよい。
(実施の形態3の動作)
実施の形態3に係る数値制御システム1Bの動作について説明する。数値制御システム1Bの動作の基本的な部分は実施の形態2に係る数値制御システム1Aの動作と同様であるため、以下では、実施の形態3に特有の動作及び特徴について説明する。
数値制御システム1Bの起動時には、少なくとも第1の数値制御装置7と第2の数値制御装置8とが起動すればよい。すなわち、第3の数値制御装置83及び第4の数値制御装置84には、数値制御システム1Bの状態が起動完了状態に遷移した後に電源が投入されて、第3の数値制御装置83と第4の数値制御装置84とが通信手段3を用いて接続されてもよい。もちろん、数値制御システム1Bの起動時に、第3の数値制御装置83及び第4の数値制御装置84が起動してもよいし、第3の数値制御装置83と第4の数値制御装置84とのうちのどちらか一方が他方と異なる動作をしてもよい。
数値制御システム1Bの起動時にすべての数値制御装置が起動する場合については、実施の形態2で述べたので、実施の形態3では数値制御システム1Bの稼働中に第3の数値制御装置83及び第4の数値制御装置84が追加される場合について説明する。
数値制御システム1Bの稼働中に、第3の数値制御装置83及び第4の数値制御装置84の電源が投入され、第3の数値制御装置83及び第4の数値制御装置84が通信手段3を通じて数値制御システム1Bを構成するハードウェアと通信可能になると、第1の数値制御装置7の通信可能HW検出部16は、追加された数値制御装置を検出し、検出結果を通信可能HW情報17に追加して通信可能HW情報17を更新する。
前述のように、通信可能HW検出部16は、通信手段3に対応して通信可能なハードウェアの検出処理を行うが、例えば一定周期で定期的に検出処理を行い、数値制御装置が追加された際に速やかに検出可能なように構成されていてもよい。例えば、通信手段3がEthernetである場合、通信可能HW検出部16は、ブロードキャストアドレスにpingを送るなどして、新たにネットワークに追加された数値制御装置を検出してもよい。通信手段3がバス通信である場合、通信可能HW検出部16は、特定の信号又はデータをバスコネクタに送信し、コネクタの先に数値制御装置が追加され、電源が投入されて通信可能になった際の信号又はデータの変化を検出して、追加された数値制御装置を検出してもよい。
通信可能HW検出部16は、新たに通信可能なHWを検出し、通信可能HW情報17を更新したら、更新後の通信可能HW情報17をタスク割り当て変更部14に通知する。タスク割り当て変更部14は、更新された通信可能HW情報17を用いて、実施の形態2で説明した割り当て変更動作と同様の割り当て変更動作を行う。タスク割り当て変更部14は、通信可能HW検出部16が通信可能な数値制御装置を新たに検出したことを契機として割り当て変更動作を行ってもよい。通信可能な数値制御装置を新たに検出されたことを契機としてタスク割り当て変更部14が割り当て変更動作を行う場合、数値制御システム1Bは、稼働を停止することなく、増強された性能を活用して処理の負荷を分散することができる。タスク割り当て変更部14は、実施の形態1及び実施の形態2で述べたような条件に基づいて割り当て変更動作を行ってもよい。
タスク割り当て変更部14は、通信可能HW情報17を参照し、各数値制御装置が接続している制御対象6の有無に対応して、割り当て変更のパターンを切り替える。ひとつの割り当て変更パターンは、第1数値制御処理部21を有する第1の数値制御装置7のタイプの割り当て変更パターンであり、別のひとつの割り当て変更パターンは、第2数値制御処理部22と軸制御部11とを有する第2の数値制御装置8のタイプの割り当て変更パターンである。
制御対象6が接続されていない場合、第1数値制御処理部21を構成するソフトウェアタスクが割り当て変更の候補となり、制御対象6が接続されている場合、第2数値制御処理部22と軸制御部11とを構成するソフトウェアタスクが割り当て変更の候補となる。なお、割り当て変更パターンは、上述の二つのパターンに限定されるものではなく、制御対象6が有する軸の数などの情報に対応して三つ以上の割り当て変更パターンが設定されてもよい。
(実施の形態3の効果)
実施の形態2に係る数値制御システム1Aより大規模なシステムが必要である場合、すなわち複数の制御対象6を制御する必要がある場合、数値制御システム1Bは、必要となるソフトウェアの処理の負荷に対してハードウェアの性能が不足した場合であっても、追加された数値制御装置によって処理の負荷を分散することが可能であり、数値制御システム1Bを性能不足に陥らせることなく稼働することが可能となる。
数値制御システム1Bは、運転を中断することなく上述の働きを実現することが可能となり、容易に停止することができない生産設備などにおいても、必要な性能に対応して数値制御装置の追加により処理の負荷を分散することが可能となる。
図10は、実施の形態1に係る数値制御システム1が有する第1演算部4がプロセッサ91によって実現される場合のプロセッサ91を示す図である。つまり、第1演算部4の機能は、メモリ92に格納されるプログラムを実行するプロセッサ91によって実現されてもよい。プロセッサ91は、CPU、処理装置、演算装置、マイクロプロセッサ、又はDSPである。図10には、メモリ92も示されている。
第1演算部4の機能がプロセッサ91によって実現される場合、当該機能は、プロセッサ91と、ソフトウェア、ファームウェア、又は、ソフトウェア及びファームウェアとの組み合わせによって実現される。ソフトウェア又はファームウェアは、プログラムとして記述され、メモリ92に格納される。プロセッサ91は、メモリ92に記憶されたプログラムを読み出して実行することにより、第1演算部4の機能を実現する。
第1演算部4の機能がプロセッサ91によって実現される場合、数値制御システム1は、第1演算部4によって実行されるステップが結果的に実行されることになるプログラムを格納するためのメモリ92を有する。メモリ92に格納されるプログラムは、第1演算部4が実行する処理をコンピュータに実行させるものであるともいえる。
メモリ92は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、EEPROM(登録商標)(Electrically Erasable Programmable Read-Only Memory)等の不揮発性若しくは揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク又はDVD(Digital Versatile Disk)等である。
図11は、実施の形態1に係る数値制御システム1が有する第1演算部4が処理回路93によって実現される場合の処理回路93を示す図である。つまり、第1演算部4は、処理回路93によって実現されてもよい。処理回路93は、専用のハードウェアである。処理回路93は、例えば、単一回路、複合回路、プログラム化されたプロセッサ、並列プログラム化されたプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)、又はこれらを組み合わせたものである。
第1演算部4の複数の機能について、当該複数の機能の一部がソフトウェア又はファームウェアで実現され、当該複数の機能の残部が専用のハードウェアで実現されてもよい。このように、第1演算部4の複数の機能は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせによって実現することができる。
実施の形態1に係る数値制御システム1が有する第2演算部5は、プロセッサによって実現されてもよいし、処理回路によって実現されてもよい。当該プロセッサは、プロセッサ91と同様のプロセッサである。当該処理回路は、処理回路93と同様の処理回路である。第2演算部5がプロセッサによって実現される場合、数値制御システム1は、第2演算部5によって実行されるステップが結果的に実行されることになるプログラムを格納するためのメモリを有する。当該メモリは、メモリ92と同様のメモリである。
実施の形態1に係る数値制御システム1が有するタスク割り当て変更装置2は、プロセッサによって実現されてもよいし、処理回路によって実現されてもよい。当該プロセッサは、プロセッサ91と同様のプロセッサである。当該処理回路は、処理回路93と同様の処理回路である。タスク割り当て変更装置2がプロセッサによって実現される場合、数値制御システム1は、タスク割り当て変更装置2によって実行されるステップが結果的に実行されることになるプログラムを格納するためのメモリを有する。当該メモリは、メモリ92と同様のメモリである。
実施の形態2に係る数値制御システム1Aが有する第1の数値制御装置7は、プロセッサによって実現されてもよいし、処理回路によって実現されてもよい。当該プロセッサは、プロセッサ91と同様のプロセッサである。当該処理回路は、処理回路93と同様の処理回路である。第1の数値制御装置7がプロセッサによって実現される場合、数値制御システム1Aは、第1の数値制御装置7によって実行されるステップが結果的に実行されることになるプログラムを格納するためのメモリを有する。当該メモリは、メモリ92と同様のメモリである。
実施の形態2に係る数値制御システム1Aが有する第2の数値制御装置8は、プロセッサによって実現されてもよいし、処理回路によって実現されてもよい。当該プロセッサは、プロセッサ91と同様のプロセッサである。当該処理回路は、処理回路93と同様の処理回路である。第2の数値制御装置8がプロセッサによって実現される場合、数値制御システム1Aは、第2の数値制御装置8によって実行されるステップが結果的に実行されることになるプログラムを格納するためのメモリを有する。当該メモリは、メモリ92と同様のメモリである。
実施の形態3に係る数値制御システム1Bが有する第3の数値制御装置83は、プロセッサによって実現されてもよいし、処理回路によって実現されてもよい。当該プロセッサは、プロセッサ91と同様のプロセッサである。当該処理回路は、処理回路93と同様の処理回路である。第3の数値制御装置83がプロセッサによって実現される場合、数値制御システム1Bは、第3の数値制御装置83によって実行されるステップが結果的に実行されることになるプログラムを格納するためのメモリを有する。当該メモリは、メモリ92と同様のメモリである。
実施の形態3に係る数値制御システム1Bが有する第4の数値制御装置84は、プロセッサによって実現されてもよいし、処理回路によって実現されてもよい。当該プロセッサは、プロセッサ91と同様のプロセッサである。当該処理回路は、処理回路93と同様の処理回路である。第4の数値制御装置84がプロセッサによって実現される場合、数値制御システム1Bは、第4の数値制御装置84によって実行されるステップが結果的に実行されることになるプログラムを格納するためのメモリを有する。当該メモリは、メモリ92と同様のメモリである。
以上の実施の形態に示した構成は、一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、実施の形態同士を組み合わせることも可能であるし、要旨を逸脱しない範囲で、構成の一部を省略又は変更することも可能である。