昔、DDS IPを作りその応用としてFUNCTION GENERATORを作った。その時に出力をオシロスコープにつないで幾つかのリサージュ図形を描画させたが、その一つに下図のような図形もあった。
そのデータがまだ残っていたので、これを変換してCNCで描画させてみたのだがうまく動かない。
スピンドルの動きを見ると図形通りに動いていない。
パルス生成部から出力されるPCNT値を抽出して表計算ソフトで散布図を描かせてみた。
UARTを追加してZumi32のソフトからprintfで値をダンプできるようにしたおかげでこのようなことは容易にできる。
描画結果は合っているので、FPGA部分は問題なさそうだ。
色々調べた結果、どうも電源の容量が足りていないようだ。
もっと容量の大きい電源に交換しなくては。。
ちょっとまだ速い気もするが、上記と平行してGUIアプリの画面を作り始めている。
なんかまだ機能を入れ忘れている気もしているのだが。。。
今作っているCNCの動作モードとしてはプログラムモードとマニュアルモードがある。前者はガーバープログラムを実行するモード、後者は手動でスピンドルの位置などを操作するモードだ。
画面の左側はプログラムモード用だ。ガーバープログラムは複数を登録できるようにする。最上段のChoice部で実行するプログラムを選択する。
選択されたプログラムの内容はその下のエディタ部に表示される。ここで編集も可能だ。最下部のボタン類でプログラムをロードしたり、編集したり、編集したものをファイルに出力したり、実行したり、中止したり出来る。
画面の右側は主にマニュアルモード用だ。
最上部のEM STOPは非常停止用ボタンだ。その下の黒い部分はスピンドルの軌跡を描画する。その下のX lmt, ... はリミットスイッチ等の状態表示だ。このアプリはwxWidgets ライブライを使っているが、wxWidgetsにはLED表示器のようなのがないのでcheck boxで代用している。果たして旨く行くかどうか。。 その下の左側はX, Y, Zの移動量と速度、及び各軸の原点設定用のボタンだ。X/Y/Zボタンをクリックするとその時の各軸の位値が原点に設定される。ORIGINボタンをクリックすると3軸が同時に原点設定される。
右側のX+, X-, ...はスピンドルの位置を手動で移動させるためのボタンだ。ボタンを押下している間その方向に移動する。
最下部のModeボタンはプログラムモードとマニュアルモードを切り替える。Goto Zをクリックするとスピンドルを原点に移動する。Auto ZはZ軸の自動原点設定用ボタンだ。Spindleはスピンドルの回転のON/OFFを設定する。PumpはポンプのON/OFFを設定する。
パルスモータの加速度やDI/DOの極性設定などは常時表示させる必要はないので別ダイアログで操作させるつもりだ。
このアプリはZYBOのPetalinux上で動かす。PetalinuxはSimpleframe bufferでX Windowも動くようになっているのでZYBOのHDMI出力にモニタをつないで表示させることも出来るし、別PCからssh -Xログインして別PC上のXサーバーに表示することも出来る。
… と、まぁこんな感じで構想しているのだが、うまく行くかな?
その前に電源をなんとかせねば。