(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-04
(45)【発行日】2024-03-12
(54)【発明の名称】加工プログラムの管理装置、管理システム、管理方法
(51)【国際特許分類】
G05B 19/4155 20060101AFI20240305BHJP
【FI】
G05B19/4155 X
(21)【出願番号】P 2020040714
(22)【出願日】2020-03-10
【審査請求日】2023-01-19
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】110001151
【氏名又は名称】あいわ弁理士法人
(72)【発明者】
【氏名】斉藤 学
【審査官】小川 真
(56)【参考文献】
【文献】特開2019-28641(JP,A)
【文献】特開平3-196309(JP,A)
【文献】特開2015-79344(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/18、19/406、19/4093、19/4155
(57)【特許請求の範囲】
【請求項1】
工作機械の加工プログラムの管理装置であって、
前記加工プログラムに呼出指令が記載されているか否かを決定する呼出決定部と、
前記加工プログラムを実行する加工プログラム実行部と、
前記呼出指令により呼び出されるサブプログラムの識別情報と、前記サブプログラムを呼び出す時点でのモーダル状態と、前記加工プログラム実行部による前記サブプログラムの実行履歴とを記憶するモーダル記憶部と、
を備える加工プログラムの管理装置。
【請求項2】
前記実行履歴は、前記モーダル状態での前記サブプログラムの実行結果を含む、請求項1記載の加工プログラムの管理装置。
【請求項3】
前記実行履歴は、動作テスト時モーダル情報を含み、
前記動作テスト時モーダル情報は、前記加工プログラム実行部が前記サブプログラムを実行する際の、前記サブプログラムの行毎の、モーダル状態と、前記工作機械の動作に影響するモーダルの種類と、モーダルの更新に関する情報とを含む、請求項1記載の加工プログラムの管理装置。
【請求項4】
前記実行履歴は、動作テスト時モーダル情報を含み、
前記動作テスト時モーダル情報は、前記加工プログラム実行部が前記サブプログラムを実行する際の、前記サブプログラムの行毎の、モーダル状態と、前記工作機械の動作に影響するモーダルグループと、モーダルの更新に関する情報とを含む、請求項1記載の加工プログラムの管理装置。
【請求項5】
前記動作テスト時モーダル情報を基に、前記工作機械の動作に影響するモーダルが存在するか否を判定するモーダル判定部を備える、請求項3記載の加工プログラムの管理装置。
【請求項6】
工作機械の加工プログラムの管理を行う数値制御装置であって、
前記加工プログラムに呼出指令が記載されているか否かを決定する呼出決定部と、
前記加工プログラムを実行する加工プログラム実行部と、
前記呼出指令により呼び出されたサブプログラムの識別情報と、前記サブプログラムを呼び出す時点でのモーダル状態と、前記サブプログラムの実行履歴とを記憶する実行履歴記憶部と、
前記実行履歴を基に、前記サブプログラムが呼び出される時点のモーダル状態で、前記サブプログラムが実行可能か否かを判定するモーダル判定部と、
を備える加工プログラムの管理装置。
【請求項7】
前記実行履歴は、前記モーダル状態での前記サブプログラムの実行結果を含む、請求項6記載の加工プログラムの管理装置。
【請求項8】
前記実行履歴は、前記加工プログラム実行部が前記サブプログラムを実行する際の、前記サブプログラムの行毎の、モーダル状態と、前記工作機械の動作に影響するモーダルの種類と、モーダルの更新に関する情報とを含む、動作テスト時モーダル情報を含み、
前記動作テスト時モーダル情報に基づき、工作機械の動作に影響を与えるモーダルが存在するか否かを判定するモーダル判定部を備える、
請求項6記載の加工プログラムの管理装置。
【請求項9】
前記実行履歴は、前記加工プログラム実行部が前記サブプログラムを実行する際の、前記サブプログラムの行毎の、モーダル状態と、前記工作機械の動作に影響するモーダルグループと、モーダルの更新に関する情報とを含む動作テスト時モーダル情報を含み、
前記動作テスト時モーダル情報に基づき、工作機械の動作に与えるモーダルグループが存在するか否かを判定するモーダル判定部を備える、
請求項6記載の加工プログラムの管理装置。
【請求項10】
工作機械の加工プログラムの管理システムであって、
前記加工プログラムに呼出指令が記載されているか否かを決定する呼出決定部と、
前記加工プログラムを実行する加工プログラム実行部と、
前記呼出指令により呼び出されるサブプログラムの識別情報と、前記サブプログラムを呼び出す時点でのモーダル状態と、前記加工プログラム実行部による前記サブプログラムの実行履歴とを記憶するモーダル記憶部と、
前記実行履歴を基に、前記サブプログラムが呼び出される時点のモーダル状態で、前記サブプログラムが実行可能か否かを判定するモーダル判定部と、
を備える加工プログラムの管理システム。
【請求項11】
工作機械の加工プログラムを管理する管理方法であって、
前記加工プログラムの動作テスト時には、
前記加工プログラムに呼出指令が記載されているか否かを決定し、
前記加工プログラムに呼び出されるサブプログラムを実行し、
前記呼出指令により呼び出されるサブプログラムの識別情報と、前記サブプログラムを呼び出す時点でのモーダル状態と、前記サブプログラムの実行履歴とを記憶し、
前記加工プログラムの通常動作時には、
前記加工プログラムに呼出指令が記載されているか否かを決定し、
前記呼出指令により呼び出されるサブプログラムの識別情報と、前記サブプログラムを呼び出す時点でのモーダル状態と、前記サブプログラムの実行履歴とを基に、前記サブプログラムが実行可能か否かを判定する、加工プログラムの管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、工作機械の加工プログラムの管理装置、管理システム、管理方法に関する。
【背景技術】
【0002】
従来から、加工プログラムに基づいて工作機械を制御する数値制御装置が知られている。数値制御装置は、加工プログラムを解析して、加工プログラムに従い工作機械を制御する。加工プログラムのコードには、「ワンショット」と「モーダル」がある。「ワンショット」は指令されたブロックだけに有効なコードであり、「モーダル」は一度指定されたモードがその後のブロックでも有効になるコードである。同一グループの他のモードが指令されるまで、「モーダル」は変化しない。
【0003】
例えば、「送り」に関するコードのグループには、G0(位置決め:早送り)、G1(直線補間:切削送り)、G2(円弧補間:時計周り)、G3(円弧補間:反時計回り)のモーダルが各々設定されている。グループのモードは通常、初期設定されているが、コードでモーダルを指定すると、新たなモーダルに変化し、次のモーダルが指定されるまで同じモードが継続する。
【0004】
図17に示すように、プログラムは、通常、メインプログラムからサブプログラムへの入れ子状態になっている。プログラム呼び出しの際、数値制御装置では、サブプログラムを呼び出す時点でのモーダルでサブプログラムを解析する。過去のモーダルが継続している場合、工作機械が想定と異なる動作を行うことがある。
【0005】
サブプログラムの意図しない動作を防止するため、加工プログラムにモーダル情報を付加したファイルを作成し、モーダルとサブプログラムをまとめて管理する技術が存在する。例えば、特許文献1参照。
【0006】
また、モーダル情報を設定するための特殊なGコードを作成し、このGコードを用いて、プログラム中でモーダル情報を更新する技術も存在する。例えば、特許文献2参照。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2007-226446号公報
【文献】特許第4494303号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1の技術では、サブプログラムとモーダル情報とを1つのファイルにまとめているため、加工プログラムとモーダル情報の不一致は生じない。しかし、モーダル情報を作成するためには高度な知識が必要であり、漏れが生じるおそれがある。特許文献2の技術も、予めモーダル情報を設定する必要があり、高度な知識が必要であり、漏れが生じるおそれがある。
【0009】
また、特許文献1及び特許文献2の技術では、モーダル情報とサブプログラムとを固定しているため、サブプログラムの再利用が難しい。
【0010】
工作機械の分野では、サブプログラムの再利用性を向上させる技術が望まれている。
【課題を解決するための手段】
【0011】
本開示の一態様は、工作機械の加工プログラムの管理装置であって、加工プログラムに呼出指令が記載されているか否かを決定する呼出決定部と、加工プログラムを実行する加工プログラム実行部と、呼出指令により呼び出されるサブプログラムの識別情報と、サブプログラムを呼び出す時点でのモーダル状態と、加工プログラム実行部によるサブプログラムの実行履歴とを記憶するモーダル記憶部と、を備える。
【0012】
本開示の他の態様は、工作機械の加工プログラムの管理を行う数値制御装置であって、加工プログラムに呼出指令が記載されているか否かを決定する呼出決定部と、加工プログラムを実行する加工プログラム実行部と、呼出指令により呼び出されたサブプログラムの識別情報と、サブプログラムを呼び出す時点でのモーダル状態と、サブプログラムの実行履歴とを記憶する実行履歴記憶部と、実行履歴を基に、サブプログラムが呼び出される時点のモーダル状態で、サブプログラムが実行可能か否かを判定するモーダル判定部と、を備える。
【0013】
本開示の他の態様は、工作機械の加工プログラム管理システムであって、加工プログラムに呼出指令が記載されているか否かを決定する呼出決定部と、加工プログラムを実行する加工プログラム実行部と、呼出指令により呼び出されるサブプログラムの識別情報と、サブプログラムを呼び出す時点でのモーダル状態と、加工プログラム実行部によるサブプログラムの実行履歴とを記憶するモーダル記憶部と、実行履歴を基に、サブプログラムが呼び出される時点のモーダル状態で、サブプログラムが実行可能か否かを判定するモーダル判定部と、を備える。
【0014】
本開示の他の態様は、工作機械の加工プログラムを管理する管理方法であって、加工プログラムの動作テスト時には、加工プログラムに呼出指令が記載されているか否かを決定し、加工プログラムに呼び出されるサブプログラムを実行し、呼出指令により呼び出されるサブプログラムの識別情報と、サブプログラムを呼び出す時点でのモーダル状態と、サブプログラムの実行履歴とを記憶し、加工プログラムの通常動作時には、加工プログラムに呼出指令が記載されているか否かを決定し、呼出指令により呼び出されるサブプログラムの識別情報と、サブプログラムを呼び出す時点でのモーダル状態と、サブプログラムの実行履歴とを基に、前記サブプログラムが実行可能か否かを判定する。
【発明の効果】
【0015】
本発明の一態様によれば、サブプログラムの再利用性を向上させることができる。
【図面の簡単な説明】
【0016】
【
図1】加工プログラム管理システムの構成を示す図である。
【
図2】プログラム作成者側の数値制御装置のブロック図である。
【
図3】プログラム利用者側の数値制御装置のブロック図である。
【
図4】プログラム作成者側のテスト結果記録処理を示すフローチャートである。
【
図5】プログラム利用者側のモーダル判定処理を示すフローチャートである。
【
図6】実際の加工プログラムを例として、モーダルの判定方法を説明する図である。
【
図7】第2の開示のプログラム作成者側の数値制御装置のブロック図である。
【
図8】第2の開示のプログラム利用者側の数値制御装置のブロック図である。
【
図9】動作テスト時モーダル情報の作成と、モーダルの判定方法を説明する図である。
【
図10】モーダル判定部の判定結果を示す図である。
【
図12】第3の開示における動作テストモーダル情報の記録処理を説明する図である。
【
図13】第4の開示の数値制御装置のブロック図である。
【
図14】動作テストの切換画面の一例を示す図である。
【
図15】サブプログラムとテスト結果情報と動作テスト時モーダル情報とを外部のサーバで共有する例を示す図である。
【
図16】本開示における数値制御装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【0017】
[第1の開示]
以下、本開示の加工プログラム管理システム1000の一例を示す。加工プログラム管理システム1000は、
図1に示すように、プログラム作成者側の数値制御装置10と、プログラム利用者側の数値制御装置20から構成される。プログラム作成者側の数値制御装置10では、作成したサブプログラムの動作テストを行い、プログラム利用者側の数値制御装置20では、動作テスト済みのサブプログラムを利用する。
【0018】
図2はプログラム作成者側の数値制御装置10のブロック図である。
プログラム作成者側の数値制御装置10は、加工プログラムを格納する加工プログラム格納部11と、加工プログラムを解析する加工プログラム解析部12と、加工プログラムにサブプログラムの呼び出しが存在するか否かを決定する呼出決定部13と、加工プログラムを実行する加工プログラム実行部14と、サブプログラム呼び出し時のモーダル情報とサブプログラムの実行結果を記憶するテスト結果記憶部15と、テスト結果の記録処理を行うモーダル記憶部16と、を備える。
【0019】
加工プログラム格納部11は、メインプログラムとサブプログラムを記憶する。メインプログラムには、サブプログラムの呼出指令が記述されている。また、サブプログラムに別のサブプログラムの呼出指令が記述されていることもある。
【0020】
加工プログラム解析部12は、加工プログラム格納部11に格納されたメインプログラムやサブプログラムを順に解析する。呼出決定部13は、加工プログラム中の解析対象が呼出指令である場合にどのサブプログラムを呼出すかを決定し、呼出指令が存在する場合には、呼び出すサブプログラムの識別情報をモーダル記憶部16に通知する。
【0021】
加工プログラム実行部14は、加工プログラム解析部12の解析結果に基づき、工作機械72の動作を制御するための補間データを作成する。加工プログラム実行部14は、サーボ制御部71に接続されている。サーボ制御部71は、プログラム作成者側の数値制御装置10からの補間データに従い工作機械72を制御する。
加工プログラム実行部14は、サブプログラムの実行が完了すると、その旨をモーダル記憶部16に通知する。
本開示では、サブプログラムの実行が完了をもってサブプログラムが正常に動作すると判断する。なお、サブプログラムが正常に動作するか否かは、プログラム作成者が確認し、プログラム作成者側の数値制御装置10に入力してもよく、加工品の検査結果など他の方法で判定してもよい。
【0022】
モーダル記憶部16は、サブプログラムの識別情報と、サブプログラムを呼出時点でのモーダル状態と、サブプログラムの実行結果とを、テスト結果記憶部15に記録する。
【0023】
図3はプログラム利用者側の数値制御装置20のブロック図である。
プログラム利用者側の数値制御装置20は、加工プログラムを格納する加工プログラム格納部21と、加工プログラムを解析する加工プログラム解析部22と、加工プログラム中にサブプログラムの呼出指令が存在する場合に、どのサブプログラムを呼び出すかを決定する呼出決定部23と、加工プログラムを実行する加工プログラム実行部24と、動作テストの結果を記憶するテスト結果記憶部25と、プログラム利用者側の数値制御装置20のモーダル状態でサブプログラムが正常に終了するか否かを判定するモーダル判定部26と、サブプログラムが正常に終了しないと判定した場合にはサブプログラムの実行を停止するサブプログラム実行停止部27とを備える。
【0024】
加工プログラム格納部21は、メインプログラムとサブプログラムから構成される加工プログラムを記憶する。メインプログラムにはサブプログラムの呼出指令が記述されている。また、サブプログラムに別のサブプログラムの呼出指令が記述されていることもある。
【0025】
テスト結果記憶部25は、プログラム作成者側の数値制御装置10で実施した動作テストの結果を記憶する。
【0026】
加工プログラム解析部22は、加工プログラム格納部21に格納された加工プログラムを解析する。呼出決定部23は、加工プログラムにサブプログラムの呼出指令が存在するか否かを決定し、サブプログラムの呼出が存在する場合には、モーダル判定部26に通知する。
【0027】
モーダル判定部26は、サブプログラムを呼び出す時点でのプログラム利用者側の数値制御装置20のモーダル情報と、テスト結果記憶部25に記憶しているモーダル情報とを比較する。現在のモーダル状態でサブプログラムを実行した履歴があれば、モーダル判定部26は、動作テストの結果を確認する。
現在のモーダル情報で、動作テストが正常に終了している場合、モーダル判定部26は、サブプログラムが正常に終了すると判定し、サブプログラムの実行開始を加工プログラム実行部24に指示する。
現在のモーダル情報で、動作テストが正常に終了していない場合、モーダル判定部26は、サブプログラムは正常に終了しないと判定し、サブプログラム実行停止部27に通知する。
現在のモーダル情報で、動作テストの実施履歴が存在しない場合、モーダル判定部26は、サブプログラムが正常に終了するか否かは不明であると判定し、サブプログラム実行停止部27に通知する。
【0028】
サブプログラム実行停止部27は、モーダル判定部26の判定結果に基づき、工作機械72の加工停止などの処理を行う。サブプログラム実行停止部27は、サブプログラムの実行を停止した後、モーダル情報の確認を促す注意画面やプログラムの修正画面などを表示して、オペレータの注意喚起や改善案の提示などを行う。
【0029】
次いで、
図4を参照して、加工プログラム管理システム1000の動作を説明する。まず、プログラム作成者は、動作テストの開始を指示する(ステップS1)。加工プログラム解析部12は、加工プログラムを読み出す。加工プログラム解析部12は、呼び出した加工プログラムを解析する(ステップS2)。呼出決定部13は、加工プログラムにサブプログラムの呼出指令が存在するか否かを判定する。加工プログラムに呼出指令が存在する場合(ステップS3;YES)、呼出決定部13は、呼出指令の存在をモーダル記憶部16に通知する。モーダル記憶部16は、サブプログラムの終了を待機する。
【0030】
加工プログラム実行部14は、サブプログラムを実行する(ステップS4)。サブプログラムが正常に終了しない場合(ステップS5;NO)、モーダル記憶部16は、サブプログラムを呼び出した時点でのモーダル情報と、サブプログラムが正常に終了しない履歴をテスト結果記憶部15に記録する(ステップS6)。
サブプログラムが正常に終了した場合(ステップS5;YES)、モーダル記憶部16は、サブプログラムを呼び出した時点でのモーダル情報とサブプログラムが正常に終了した履歴をテスト結果記憶部15に記録する(ステップS7)。
【0031】
ステップS6及びステップS7の後、ステップS2に移行し加工プログラムの解析を行う。ステップS3において加工プログラムに呼出指示が存在せず(ステップS3;NO)、未実行の加工プログラムが存在する場合には(ステップS8;NO)、ステップS2~ステップS6の処理を繰り返し、サブプログラムの動作テスト結果を作成する。
ステップS3において、実行中のファイルを全て読み出した場合には(ステップS8;YES)、動作テスト結果の作成処理を終了する。
【0032】
次いで、
図5のフローチャートを参照して、プログラム利用者側の数値制御装置20の動作を説明する。前提として、プログラム利用者側の数値制御装置20の加工プログラム格納部21には、メインプログラムとサブプログラムが格納されており、テスト結果記憶部25には、動作テストの実行履歴が格納されている。
オペレータが加工開始を指示すると、プログラム利用者側の数値制御装置20が加工プログラムを読み出す。加工プログラム解析部22は、読み出した加工プログラムを解析する(ステップS11)。呼出決定部23は、加工プログラム解析部22が解析した加工プログラムにサブプログラムの呼出指令が存在するか否かを判定する。加工プログラムに呼出指令が存在する場合、呼出決定部23は呼出指令の存在をモーダル判定部26に通知する(ステップS12)。
【0033】
モーダル判定部26は、呼び出されるサブプログラムの実行履歴が、テスト結果記憶部25に存在するか否かを判定する。サブプログラムの実行履歴が存在しない場合(ステップS13;NO)、サブプログラム実行停止部27は、サブプログラムの実行を停止する(ステップS14)。
【0034】
サブプログラムの実行履歴がテスト結果記憶部25に存在する場合(ステップS13;YES)、現在のモーダル状態で動作テストが実施された履歴が存在するか否かを検索する。プログラム利用者側の数値制御装置20の現在のモーダル状態で動作テストが実行されていない場合(ステップS15;NO)、サブプログラム実行停止部27は、サブプログラムの実行を停止する(ステップS14)。
【0035】
現在のモーダル状態での動作テストが実行されているが(ステップS15;YES)、動作テスト時にサブプログラムが正常に終了していない場合(ステップS16;NO)、サブプログラム実行停止部27は、サブプログラムの実行を停止する(ステップS10)。
【0036】
現在のモーダル状態での動作テストが実行されており(ステップS15;YES)、動作テスト時にサブプログラムが正常に終了した場合(ステップS16;YES)、モーダル判定部26はサブプログラムの実行が可能であると判定する(ステップS17)。
【0037】
図6を参照して、実際の加工プログラムを用いて、プログラム利用者側の数値制御装置20における、モーダルの判定方法を説明する。テスト結果記憶部25は、サブプログラム“O1000”の動作テスト済みのモーダル“G43”及び“G49”と、各モーダルの動作テストの結果からなる動作テスト結果を記憶している。
図6の左上に示す呼出元プログラムにおいて、1行目のプログラム「M98 P1000」はサブプログラム“O1000”の呼出指令である。呼出決定部23は、呼出指令が存在すると決定すると、呼出指令の存在をモーダル判定部26に通知する。モーダル判定部26は、テスト結果記憶部25からプログラム“O1000”のテスト結果を読み出す。テスト結果において、プログラム“O1000”のモーダル“G43”での実行履歴は“×(不可)”と記録されている。そのため、プログラム利用者側の数値制御装置20は、サブプログラム“O1000”の動作を一旦停止する。
図6の左下に示す呼出プログラムにおいて、1行目のプログラム「M98 P1000」はサブプログラム“O1000”の呼出指令である。呼出決定部23は、呼出指令が存在すると決定すると、呼出指令の存在をモーダル判定部26に通知する。モーダル判定部26は、テスト結果記憶部25からプログラム“O1000”のテスト結果を呼び出す。テスト結果において、プログラム“O1000”のモーダル“G49”での実行履歴は“〇(可)”と記録されている。そのため、プログラム利用者側の数値制御装置20は、現在のモーダル“G49”でサブプログラム“O1000”を実行する。
【0038】
本開示の加工プログラム管理システム1000では、サブプログラムを実行した後、サブプログラム実行時のモーダル情報と、サブプログラムの実行結果とをテスト結果記憶部25に記録する。サブプログラムの利用時には、プログラム利用者側の数値制御装置20のモーダル情報が、テスト結果記憶部25に存在するか否かを判定し、サブプログラムが正常に終了した履歴が存在すれば、サブプログラムを実行する。
また、プログラム利用者側の数値制御装置20のモーダル状態で、サブプログラムが正常に終了しない場合には、モーダル情報の不一致を示唆する注意画面やプログラムの修正画面などを表示して、オペレータの注意喚起や改善案の提示などを行う。
【0039】
[第2の開示]
次いで、加工プログラム管理システムの第2の開示を説明する。
第2の開示において、プログラム作成者側の数値制御装置10は、
図7に示すように、テスト結果記憶部15と、動作テスト時モーダル情報記憶部41を備え、プログラム利用者側の数値制御装置20は、
図8に示すように、テスト結果記憶部25と、動作テスト時モーダル情報記憶部42を備える。
動作テスト時モーダル情報には、
図9の右上に示すように、加工プログラム1行ごとのモーダルの状態を記録する。具体的に説明すると、動作テスト時モーダル情報には、加工プログラムの各行を実行する時点でのモーダル情報と、各行のプログラムに影響するモーダルの種類と、モーダルの更新に関する情報が含まれる。
【0040】
図9及び
図10を参照して、第2の開示における加工プログラム管理システム1000の作用を説明する。プログラム作成者側の数値制御装置10では、サブプログラムの動作テストを実行するが、これと同時にモーダル記憶部16は、動作テスト時モーダル情報を作成する。
図9の例では、プログラム作成者側の数値制御装置10の呼出元プログラムがサブプログラム“O1001”を呼び出し、サブプログラム“O1001”の動作テストと同時に動作テスト時モーダル情報を作成する。
プログラム利用者側の数値制御装置20のモーダル判定部26は、テスト結果記憶部15に記憶したテスト結果と、動作テスト時モーダル情報とを基に、サブプログラムの実行履歴の有無と、モーダルの機械動作への影響の有無を判定する。
さらに、モーダル判定部26は、判定結果に基づきサブプログラムを実行するか停止するかを制御する。
【0041】
動作テスト時には、
図9の上側に示すように、“G49;工具長補正キャンセル”の状態で呼出元プログラム「M98 P1000」を実行する。これにより、サブプログラム“O1001”が呼び出される。サブプログラム“O1001”の1行目のプログラムの実行時点のモーダルは“G49”である。1行目のプログラム「#1=0」は、変数1に“0”を代入する数値演算なので機械を動作させず、機械動作への影響は“-(なし)”となる。1行目のプログラムでは、モーダル情報の更新も行われていないので、更新は“-(なし)”となる。これを1行目の動作テスト時モーダル情報として記録する。
2行目のプログラムの実行時点のモーダルは“G49”である。2行目のプログラム「G49」は、モーダル情報を“G49;工具長キャンセル”に変更する。2行目のプログラムはモーダルの変更指令なので機械動作への影響は“-(なし)”であり、モーダル情報が更新されているので、更新の内容は“G49”である。
【0042】
3行目のプログラムの実行時点のモーダルは“G49”である。3行目のプログラム「G00 X1000」は、“送り”に関するため、工具長補正のモーダル“G43”及び“G49”は機械動作に影響する。モーダルの更新はされていないので、更新は“-(なし)”である。
4行目のプログラム「G00 Y1000」の実行時点のモーダル情報は“G49”である。4行目のプログラムも“送り”に関するプログラムであるため、工具長補正のモーダル“G43”及び“G49”が機械動作に影響する。更新はされていないので、更新は“-(なし)”である。
【0043】
このように、モーダル記憶部16は、プログラム1行毎のモーダルの状態、各行の実行時点でのモーダル情報、各行の機械動作に影響するモーダルの種類、各行で更新したモーダル、を記録し、動作テスト時モーダル情報を作成する。
【0044】
モーダル判定部26は、動作テスト時モーダル情報に基づく判定と、テスト結果に基づく判定との2つの判定を行う。動作テスト時モーダル情報に基づく判定では、モーダルが機械の動作に影響を与えるか否かを判定する。
【0045】
具体的に説明すると、サブプログラムが呼び出されてからモーダルが変更されるまでの間に、機械動作に影響する部分が存在するか否かを判定する。
図9の例の動作テスト時モーダル情報では、2行目で工具長補正のモーダルが“G49”に変更されるため、モーダルが変更される前のプログラムは、1行目のプログラム「#1=0」のみである。1行目のプログラム「#1=0」は、数値演算なので、機械動作には影響を与えない。実行時点のモーダルがG49であっても機械動作に影響がないため、
図9の下の表に示すように、動作影響“×(なし)”と判定する。
【0046】
一方、テスト結果記憶部25には、サブプログラム“O1001”を“G49;工具長補正キャンセル”の状態で動作テストしたテスト結果が記憶されている。このテスト結果を基に、モーダル“G49”のときの実行履歴“〇(あり)”、動作影響“×(なし)”となる。
【0047】
図10は、モーダル判定部26が判定結果に従い、サブプログラムを実行又は停止するプロセスを示す。
サブプログラム“O1000”に対するモーダル判定部26の判定結果は、工具長補正“G43”、実行履歴“×(なし)”、機械動作への影響“〇(あり)”と、工具長補正“G49”、実行履歴“〇(あり)”、機械動作への影響“〇(あり)”である。
工具長補正が“G43”の状態でサブプログラム“O1000”を呼び出す場合、“G43”は機械動作への影響が“〇(あり)”と判定されているので、サブプログラム“O1000”はモーダルの影響を受ける可能性がある。モーダル判定部26は、サブプログラム実行停止部27にサブプログラム“O1000”の動作を停止させる。
【0048】
サブプログラム“O1001”に対するモーダル判定部26の判定結果は、工具長補正“G43”、実行履歴“×(なし)”、機械動作への影響“×(なし)”と、工具長補正“G49”、実行履歴“〇(あり)”、機械動作への影響“×(なし)”である。
工具長補正が“G43”の状態でサブプログラム“O1001”を呼び出す場合、“G43”は機械動作への影響が“×(なし)”と判定されているため、サブプログラム“O1001”はモーダルの影響を受けない。モーダル判定部26は、加工プログラム実行部24にサブプログラム“O1001”を実行させる。
【0049】
第2の開示では、サブプログラムの動作テスト時に、動作テスト時モーダル情報を作成する。動作テスト時モーダル情報は、サブプログラムの各行の実行時点でのモーダル状態、各行の機械動作に影響するモーダルの種類、各行におけるモーダル情報の更新を含む。
プログラム利用者側の数値制御装置20では、動作テスト時モーダル情報を基に、サブプログラムを開始してからモーダルが更新されるまでの間に機械動作に影響するモーダルが存在しなければ、実際に動作テストをしていなくとも、サブプログラムの実行が可能であると判定する。
【0050】
第2の開示では、実際に動作テストをしていないモーダルでも、実行可能か否かを判定することができるため、サブプログラムの再利用性が向上する。また、プログラムのどの行で機械動作に影響を与えるのかが分かるので、プログラムの確認や修正が容易である。
【0051】
[第3の開示]
次いで、加工プログラム管理システムの第3の開示を説明する。
第3の開示において、プログラム作成者側の数値制御装置10では、機械動作に影響するモーダルグループをモーダル動作テスト時モーダル情報に記録する。
図11は、モーダルグループの関係を示す。
図11の例では“グループ1;工具長補正”、“グループ2;工具径補正”、“グループ3;送り速度制御”が記載されている。“グループ1;工具長補正”では、モーダルは“G49;オフ”か“G43;オン”のいずれかの状態をとる。“グループ2;工具径補正”では、モーダルは“G40;オフ”か、“G41;オン(左)”か、“G42;オン(右)”かのいずれかの状態をとる。“グループ3;送り速度制御”では、モーダルは“G94;毎分”か、“G95;毎回転”のいずれかの状態をとる。これらのモーダルはグループに属しており、各グループについて1つのモーダルが選択された状態になる。モーダルはグループごとに影響を与える機械動作が異なる。
例えば、工具の早送り(G00)では、Y軸方向の早送りはモーダルグループ2の影響を受け、Z軸方向の早送りはモーダルグループ1の影響を受け、モーダルグループ3の影響は受けない。
第3の開示では、サブプログラムの呼出時のモーダル状態がプログラムの機械動作に影響を与えるグループに属しているか否かを判定する。
【0052】
図12は、第3の開示のモーダル記憶部16の動作テスト時モーダル情報の記録処理の一例を示している。動作テスト時のサブプログラム呼出時において、工具径キャンセル“G49”と、工具長キャンセル“G40”の2つのモーダルが設定されている。プログラム「M98 P1001」を実行すると、サブプログラム“O1001”が呼び出される。
1行目のプログラムの実行時点のモーダルは“G40/G49”となる。1行目のプログラム「#1=0」は数値演算なので、機械動作への影響は“-(なし)”であり、更新も“-(なし)”である。
2行目のプログラムの実行時点のモーダルは“G40/G49”である。2行目のプログラム「G49」は工具径補正のモーダルが変化するため、更新は“G49”である。
3行目のプログラム「G00 Y1000」は“Y軸方向のG00(早送り指令)”であるため、工具径補正のグループ2は機械動作に影響を与える。3行目のプログラムの機械動作に影響を与えるグループとして“グループ2”が記録される。
4行目のプログラム「G00 Z1000」は“Z軸方向のG00(早送り指令)”であるため、工具長補正のグループ1は機械動作に影響を与える。4行目のプログラムの機械動作に影響を与えるグループとして“グループ1”が記録される。
このように、サブプログラムの各行に対応して、モーダル状態、機械動作に影響を与えるモーダルグループ、モーダルの更新に関する情報を記録することで、動作テスト時モーダル情報が作成される。
【0053】
プログラム利用者側の数値制御装置20のモーダル判定部26は、動作テスト時モーダル情報に記録されたグループ種別を基に、サブプログラムの実行が可能か否かを判定する。
【0054】
図12の動作テスト時モーダル情報を例としてモーダル判定部26の判定方法を説明する。グループ1の工具長補正のモーダルの場合、工具長補正のモーダルは2行目のプログラムで“G49”に変更されている。変更される前の1行目のプログラムは機械動作に影響しない。そのため、グループ1の工具長補正のモーダルは機械動作に影響しない。
グループ2の工具径補正のモーダルはサブプログラムの呼出時の“G40”のまま4行目のプログラムまで継続している。1行目と2行目のプログラムは機械動作に影響しないが、3行目のプログラムは、グループ2の影響を受ける。“G40”はグループ2のモーダルであるため、モーダル“G40”は機械動作に影響があると判定する。
4行目のプログラムは、グループ1の影響を受ける。グループ1の工具長補正のモーダルは2行目で変更されているので、サブプログラム呼び出し時のモーダルの影響は受けないと判定する。
【0055】
第3の開示の加工プログラム管理システム1000では、機械動作へ影響するモーダルグループを動作テスト時モーダル情報記憶部41に記録する。そして、サブプログラム呼出時のモーダルが機械動作に影響のあるグループに属するか否かを判定する。また、プログラムのどの行で機械動作に影響を与えるのかが分かるので、プログラムの確認や修正が容易である。
【0056】
[第4の開示]
第4の開示として、1つの数値制御装置で加工プログラム管理システム1000を実現する例を説明する。
図13の数値制御装置50は、プログラム作成者側の数値制御装置10の機能とプログラム利用者側の数値制御装置20の機能を1つの数値制御装置50にまとめている。数値制御装置50は、動作テスト対象判定部62を備える。
【0057】
動作テスト対象判定部62は、数値制御装置50の表示部70に、例えば、動作テストと通常運転とを切り換える切換画面を表示する。切換画面において、動作テストが選択されると、動作テスト対象判定部62は、モーダル記憶部56に動作テストの開始を指示する。切換画面において、通常動作が選択されると、動作テスト対象判定部62は、モーダル判定部59にモーダルの判定開始を指示する。操作画面では、
図14に示すように、動作テスト画面と通常運転画面との切り換えができる。
【0058】
図13の数値制御装置50は、通常運転と動作テストとの両方の機能を備えているため、通常運転をしながらサブプログラムの実行履歴が蓄積され、サブプログラムの再利用性が向上する。
【0059】
[第5の開示]
図15は、サブプログラムとテスト結果情報と動作テスト時モーダル情報とを外部のサーバで共有する例である。このサーバには、複数の数値制御装置やコンピュータがネットワーク(図面ではクラウド)を介して接続されている。サーバに接続された数値制御装置やコンピュータは、異なるモーダル状態でサブプログラムを実行し、サブプログラムの動作結果や動作テスト時モーダル情報を蓄積する。このように、動作テストの結果を共有することでサブプログラムの再利用性が向上する。
【0060】
上述したプログラム作成者側の数値制御装置10、プログラム利用者側の数値制御装置20、両方の機能を備えた数値制御装置50は、
図16に示すようなハードウェア構成をしている。数値制御装置10、20、50は、
図1に示すように、数値制御装置10、20、50を全体的に制御するCPU111、プログラムやデータを記録するROM112、一時的にデータを展開するためのRAM113を備え、CPU111はバス120を介してROM112に記録されたシステムプログラムを読み出し、システムプログラムに従って数値制御装置10、20、50の全体を制御する。
【0061】
不揮発性メモリ114は、例えば、図示しないバッテリでバックアップされるなどして、数値制御装置100の電源がオフされても記憶状態が保持される。不揮発性メモリ114には、インタフェース115、118、119を介して外部機器80から読み込まれたプログラムや入力部30を介して入力されたユーザ操作、数値制御装置10、20、50の各部や工作機械72等から取得された各種データ(例えば、設定パラメータやセンサ情報など)が記憶される。
【0062】
インタフェース115は、数値制御装置10、20、50とアダプタ等の外部機器80と接続するためのインタフェース115である。外部機器80側からはプログラムや各種パラメータ等が読み込まれる。また、数値制御装置10、20、50内で編集したプログラムや各種パラメータ等は、外部機器80を介して外部記憶手段に記憶させることができる。PMC116(プログラマブル・マシン・コントローラ)は、数値制御装置10、20、50に内蔵されたシーケンス・プログラムで工作機械72やロボット、該工作機械72や該ロボットに取り付けられたセンサ等のような装置との間でI/Oユニット117を介して信号の入出力を行い制御する。
【0063】
表示部70には、工作機械72の操作画面や工作機械72の運転状態を示す表示画面などが表示される。入力部30は、MDIや操作盤、タッチパネル等から構成され、作業者の操作入力をCPU111に渡す。
【0064】
工作機械72の各軸を制御するためのサーボ制御部71はCPU111からの軸の移動指令量を受けて、サーボモータ150を駆動する。サーボモータ150は位置・速度検出器を内蔵し、位置・速度検出器からの位置・速度フィードバック信号をサーボ制御部71にフィードバックし、位置・速度のフィードバック制御を行う。
【0065】
スピンドルアンプ161は、工作機械72の主軸164への主軸回転指令を受け、スピンドルモータ162を駆動する。スピンドルモータ162の動力はギアを介して主軸164に伝達され、主軸164は指令された回転速度で回転する。主軸164にはポジションコーダ163が結合され、ポジションコーダ163が主軸164の回転に同期して帰還パルスを出力し、その帰還パルスはCPU111によって読み取られる。
【0066】
以上、一実施形態について説明したが、本開示は上述した開示のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。例えば、第2及び第3の開示では、プログラム作成者側の数値制御装置10にモーダル記憶部16を設け、プログラム利用者側の数値制御装置20にモーダル判定部26を設けたが、プログラム作成者側の数値制御装置10にモーダル判定部26を設けてもよい。
【0067】
また、サブプログラム実行停止部61では、動作テスト時モーダル情報を基に、機械動作への影響があるプログラムの行を表示し、プログラムの修正補助を行うことができる。
本開示の加工プログラム管理システムでは、サブプログラムの動作テストと同時に、動作テストを実行した際のモーダル状態を記録する。サブプログラムの動作テストは、サブプログラムの作成時に通常実施される処理であるため、プログラム作成者に負担をかけることはなく、モーダル状態を記録することができる。
本開示の加工プログラム管理システムでは、サブプログラムの実行前に、動作テストのテスト結果及び動作テスト時モーダル情報、又は何れか一方を参照することにより、サブプログラムの再利用性を高めたまま、プログラム利用者の誤った呼出を防止することができる。
【符号の説明】
【0068】
1000 加工プログラム管理システム
10 プログラム作成者側の数値制御装置
11 加工プログラム格納部
12 加工プログラム解析部
13 呼出決定部
14 加工プログラム実行部
15 テスト結果記憶部
16 モーダル記憶部
20 プログラム利用者側の数値制御装置
21 加工プログラム格納部
22 加工プログラム解析部
23 呼出決定部
24 加工プログラム実行部
25 テスト結果記憶部
26 モーダル判定部
27 サブプログラム実行停止部
41 動作テスト時モーダル情報記憶部
42 動作テスト時モーダル情報記憶部
71 サーボ制御部
72 工作機械
111 CPU
112 ROM
113 RAM