【お願い】 投稿者:YUSA 投稿日:2010/03/08(Mon) 20:42 No.2759 
みなさん・こんばんわ〜 ヽ(^。^)ノ
皆さんにお願いがあります。
ATC対応の主軸周りも完成に近づいておりATC自体の構想も纏まって来ておりハード的には何とかなりそうなのですが・・・
ソフト面は何も考えておりません。 〔Mach〕に、どのようなGコードを与えて、どのような信号をポートから出して〔QUATTRO〕からか・・若しくは信号を〔QUATTRO〕への入力前から横出しして制御するか・・・?
だれか・・・考えておいてくれないかなぁ〜(^^ゞ
みなさん手伝ってね ヽ(^。^)ノ Re: 【お願い】 - indiana 2010/03/09(Tue) 01:41 No.2761 ATCに関しては経験はなく、Machのドキュメントから拾い読みしてるだけなのですが、 [Config]>[General Config]のToolChangeを"AutoTool Changer" を選択しておくと、GコードでM6(ツールチェンジ)が出てきた際に、予め別途用意(定義)しておいた"M6Start/M6End"マクロを呼び出すことができるようです。 Mach3で言うところのマクロはVB Scriptで記述できるので、その中で"ごにょごにょ"書けばその中身次第で動作可・・・なのでしょうかね。
この中身をどうするかが勘所かと思います。 スピンドル止めて、交換所定の高さまでZ軸をもっていく、終わったらM6コードが出てくる前までの高さorツール長さを考慮した高さに戻すのは共通として A.アームとツールテーブル回転にステップモータを、ツールテーブルとプルスタッドのつかみ(?)にもPCのポートを割り振ってVB ScriptからMach3を通して一連の動作をゴリゴリと書く。
B.Mach3/PCからは単純にツール換える信号を出して、アーム・テーブル・つかみ離しは外部のコントローラーに任せる。 http://www.artsoftcontrols.com/MachCustomizeWiki/index.php?title=Mach_specific_Subroutines/Functions_grouped_by_purpose#Serial_port を見ると[Config]>[General Config]で出力用にシリアル(COM)ポートを設定でき、Script内からは Call SendSerial ("Tool#" & ToolNo) のような形で任意の文字列を出せるようです。 これをPICなどのコントローラで拾ってあげて、一連の動作は終了までコントローラ任せ、動作が終わったらPCの入力ピンを変化させて通知。Script側ではIsActiveで該当ピンを監視しておき、変化したらScriptを終わらせる。
製作は大変になるかもしれませんが、安定的に動きそうなのは後者のような気がします。 なにせMachに限らず、ターミナルソフトでさえコマンド流してあげれば、所定の動作はしてくれるようになりますしね・・・。 Re: 【お願い】 - indiana 2010/03/09(Tue) 20:57 No.2762 帰宅したので、上B.の検証をやってみました。 以下Mach3のプロファイルは"Mach3Mill"で行っています。 ・Mach3の設定 Config-General Configにて Tool Change:"AutoToolChanger"を選択 Serial Output:ComPort(PCのCOMポート)/BaudRate9600/8-bit 1 Stop
Config-Ports & Pinsにて Restart if changedの"Event Driven Serial Control"のチェックを「はずす」(少しはまりました)
・M6Startマクロの変更(テスト) Operator-VB Script Editorを起動し、File-OpenFileで C:\Mach3\macros\Mach3Millフォルダ内の"M6Start.m1s"を読み込む。テスト目的なので以下のように変更しました。 ---ここから--- tool = GetSelectedTool() SetCurrentTool( tool ) Call SendSerial ("Tool#" & Tool) message "Tool " & Tool & " Selected" ---ここまで--- 変更後File-Saveにて保存。
念のためMach3Millを再起動。 MDI Alt2のInputボックスに"M6 T4"を入力してEnterキー
以上の手順でCOMポートに"Tool#4"というメッセージを出力、Mach3のStatusに"Tool 4 Selected"と表示されることを確認しました。 あとはATC動作が終わったことを知るポート入力を待つ部分、ツール変更後のMach側の後処理が必要でしょうか・・・。Re: 【お願い】 - indiana 2010/03/09(Tue) 22:05 No.2763 もう少しいじってみました。 COMポートにコマンドを投げたあと、OEM Trig #1がアクティブになるまで待ちます。 タイムアウト時間(画像では10秒)以内にOEM Trig #1がアクティブにならないと、失敗したことを表示して終わります。Re: 【お願い】 - indiana 2010/03/09(Tue) 22:25 No.2764 あ、そうか。 ・アーム動いて現在のツールを掴んだあと、Z軸を退避させる ・アーム動いて次のツールがスピンドル下に来たあと、合体させる という処理も必要なのですね。 B.策だとここはもうすこし互いの協調を考えないといけないですね。Re: 【お願い】 - YUSA 2010/03/09(Tue) 23:51 No.2765 [indianaさん]ありがとうございます。
でも・・・私には何だか難しそぉ〜 (^_^;) ・・・マクロ・・・やった事ないんですぅ〜(^_^;)
朧気ながら現在考えている イメージなんですが
@PC(Mach2/3)がプログラム上に書かれた[ツール交換命令/ツール番号]を読み込む APC(Mach2/3)が主軸をZ軸最上部(機械原点)移動させ主軸の回転を停止し再スタートの信号待ちとなる。 [加工原点]から[機械原点]に変更 同時に[ツール番号]を[I/O]に出力する
B[I/O]は有接点若しくは無接点で[ツール番号]に準じた出力を[PLC]に出す。
〜後は[PLC]の制御に依存〜
C必ず最初にアームは正転移動して主軸についている[ホルダー]を迎に行く 横から[ホルダー]に嵌まり込み[ホルダー]を拘束する。 D[ホルダー]を固定している[プッシュロッド]の頭部を押すと同時に[アーム]を下降させる E[アーム]は45度程度回転移動して再度上昇 F[ツールマガジン]は自動回転して[空スロット]を所定位置として停止している G[アーム]が[ツールマガジン]の所定位置まで回転移動して下降し[空スロット]に[ホルダー]を挿入する H[アーム]は所定位置プラス15度程度・回転移動し[ホルダー]を釈放し上昇し[ツールマガジン]より退避 I[PLC]が受け取った[ツール番号]に準じて[ツールマガジン]は回転し所定位置にて停止 J[アーム]は下降し15度程度逆回転して[ホルダー]を拘束する K[アーム]は上昇し[ツールマガジン]から[ホルダー]を抜き取る L[アーム]は正転移動して一旦途中で下降し再度正転移動して主軸の真下まで移動して停止 M[アーム]は上昇し主軸に[ホルダー]を挿入する・と・同時に[プッシュロッド]の頭部を押すのを止める。 主軸内部のスプリングの引きにより内部の[コレットチャック]により[プルニップル]が引き込まれてセット完了 N[アーム]はそのまま水平に逆回転移動して[ホルダー]から引き離れて所定位置に行き待機状態となる。 O所定の動作が終了すると[PLC]から[I/O]に出力(接点信号)する。
〜後は[PC(Mach2/3)]に依存する〜
P[PC(Mach2/3)]は[ツール交換完了信号]をもらうと主軸を回転させ次のプログラムコードを読み込み次の切削にかかる [機械原点]から[加工原点]に変更変更
てな・・・事で・・・問題は
@どのような[プログラムコード(Gコード)]を書き込むか? AMachをどのように設定して、どのピンから入出力を行うか? パラレル出力には常に[QUATTRO]が接続されている(使っていない信号を横から取り出しする?)
???・・・・シリアルポートを使えば良いのかなっ ?
B[I/O]を何でどのように作る?
C[PLC]の制御はラダーシーケンスでプログラムする、これは何とか自分でできる・・(^。^)
と・・・言うわけで、機構(ハード)の製作を進めておきます ヽ(^。^)ノ
Re: 【お願い】 - indiana 2010/03/10(Wed) 19:27 No.2766 なるほどぉ。 PICと書いた部分はPLCに置換え可能かなと思います。 雑多な図ですみませんが、YUSAさんのお話を勘案したM6Startマクロを使った案の動作の流れを書いてみました。 たぶん、YUSAさんのイメージされるものと大きくは違わないのではないかと思います。
以下では既にスピンドルに1つツールがセットされていて、テーブルに1ヵ所空きがある状態を想定して始まります。 行番に(P)があるのはPLC側での動作、(M)はマクロのお仕事です。
1.Gコードの列の中にM6コマンドが現れると、Mach3はM6Startマクロを呼び出し、制御をマクロに委ねます。 2(M).M6マクロ内ではスピンドルをOFFにし、現在のZ軸位置を変数へ保存の後、Z軸をツールチェンジが行われる位置に退避させます。 3(M).シリアルポートへ格納コマンドを送出し、パラレルポートの入力ピンがHighにされるまで待機。 4(P).格納コマンドを受けたPLCはアームを上昇させつつ、スピンドルからの取り出し位置へ移動させます。 5(P).プッシュロッドを押しつつ、アームを下降。(抜き取り) 6(P).アームをテーブル側へ移動させる途中、アームを上昇。(テーブルをかわす) 7(P).テーブルの空き穴上でアームを下降。 8(P).テーブルを時計方向に駆動し、アームを待機位置へ移動させる。 9(P).QUATTORO(またはパラレルポート直接)の入力ピンを一定時間Highにすることで通知(コマンド動作完了通知)、Lowに戻す。 10(M).マクロ側では入力ピンがHighになったことで次の動作へ移る。 11(M).シリアルポートへ取り出しコマンドと、ツール番号を送出、完了通知信号を監視 12(P).アームを駆動し・・・(雑多になるので省略)・・・ 13(P).ツールをスピンドルにセット動作が完了後、QUATTORO(またはパラレルポート直接)の入力ピンを一定時間Highにすることで通知(コマンド動作完了通知)、Lowに戻す。 14(M).完了通知信号を確認して、スピンドルを元の回転数でON、Z軸を変数に保存した位置まで移動。 15.マクロ制御の動作が終わり、Mach3は次のGコードの実行を継続する。
格納と、取り出しを別のステップにしましたが、1コマンドだけで続けてやってしまえば、よりYUSAさんのイメージに近いと思います。
M6コマンドが出てきたらMach3は単純にマクロに委ねてしまいますので、Gコード自体も元の切削コードに、ところどころM6が追加されるだけになります。
I/OについてはVB Scriptで双方向をやろうとするとModbusを使うことになるようなので(勉強中です)、簡単な単方向とそれが終わったことを確認する信号を監視することで「逃げて」考えています。
もちろんパラレルポートで何ピンか出力に使っての転送も可能と思いますが、シリアルのほうは既にVBのステートメントが用意されておりましたので。
マクロが送出し、PLCが受けるコマンドは、双方すり合わせさえすれば、どのような形式でも良いと思います。 クリアコマンドも設けてそれを受けたらPLCは完了通知をLowに戻すようにしたほうが、一定時間駆動するより誤作動は無いかもです。
とても興味深い取り組みなので、外野の騒音レベルでワーワー言ってしましまったかもしれません。 すみませんでした。Re: 【お願い】 - SEC 2010/03/11(Thu) 12:18 No.2767 MACHのチュートリアルのビデオにツールチェンジの説明があります ToolChange Macro For Bed type tool changer 11/05 Brian というブレインのソースも有ります http://www.artsoftcontrols.com/videos.php が、余りよく見ていません Re: 【お願い】 - SEC 2010/03/11(Thu) 12:29 No.2768 よくビデオを見たらベットにツールを並べたmmさんのタイプのようです
此のマクロでも改造すると全てのアクチェーターまで MACHで稼働可能ですね Re: 【お願い】 - YUSA 2010/03/12(Fri) 17:35 No.2769 みなさん・ありがとうございます ヽ(^。^)ノ
ハード(機構)の方が片付けば・・・制御に移らなければなりませんので引き続き一緒に考えて下さいね。
ただ・・・ハードを作っていて・・『本当に動かせるのかなぁ〜・・・信号はどぉ〜しよう?』って不安だったんですが
皆さんのご教授で『何とかなるなっ』って一筋の光明が見えてきましたので引き続きモチベーションアップを図ってハードの方を進めます。
実のところ・・いよいよ駄目であれば最後の手段として Z軸を機械原点に戻して[G04]のドゥエルで一定時間停止させておいて、その間に[クーラント]か[バキューム]に使っている信号を利用して一定間隔で必要回数ON/OFFさせて(ツール#3なら3回・ON/OFFとか)・その回数を[PLC]の入力で数えてATCを動作させようと考えていたんです。
いわゆるZ軸の原点到達信号と規定数のON/OFF信号が重なった時のみATC動作命令と判断させてG04の時間を事前に必要なタクトタイムとして設定しておけばなんとか・・・・
でも・・・ちょっとチープな手法なもので・・(^_^;) やりたくなかったんです・・・
|