2019年6月18日火曜日

NC

 NCコードパーサーで苦戦中。主にファイルのやり取り部分だけど。
 NCコード自体は、一見すると面倒なフォーマットだけど、意外とパースしやすい気がする。キャラ1文字+実数1個が1組で、それが1個以上組み合わされたデータ、と解釈すると、サクッとsscanfとかで簡単にパースできる。ただ、数字の場合は最後のピリオドの有無でデータフォーマットが変化したりするらしいので、それに対応するとなるとsscanfでは難しい。テキストパーサーを組む必要があるけど、それほど面倒ではない気がする。
 例えば早送りの"G00 X10.Y20.F300"とかだと、Gと0、Xと10、Yと20、Fと300、という組み合わせが入力された、ということになる。プログラム番号やシーケンス番号、スピンドル速度、といったモノも、Oと数字、Nと数字、Sと数字、という組み合わせ。変数はちょっと面倒だけど、まぁ当分使わないと思うので無視して進める。
 位置指定はピリオドがあるときはミリメートル、ピリオドがないときはマイクロメートル、の単位となるらしい。「そんなこと知ったことか!俺はミリメートルしか認めん!!」というならsscanfで簡単に読めるし、実際それで実用上は問題ないと思うので、当面その方向で行こうかな。ただ、ミリメートルだと思ったらマイクロメートルだった、という場合、CAMが「0.2mm動かしてね」と指示したのに、パーサーは「200mm動かすぞ~!」となると、可動範囲を超えるので、その対策は結構重要になる。

 NCコードは、今でこそ3DCADからCAMで生成したりといった手順が使えるけど、昔は図面から人間がNCコードに変換していたわけで、人間が扱いやすいようなコード体系になっている。円弧補間とかはその最たる例。パーサーを作る側としては面倒なのでやめてくれ~という感じだが。Fusion360のCAMでは円弧補間もガンガン使ってくる。FlatCAMは円弧を直線の連続に変換してくれるっぽい。


 制御は、STM32F4で行っており、PCとはUSBで接続している。プログラムの書き換えもデバッグもUSB1本でできる利点があるが、USBを他の用途に使うことができない。
 STM32F405RGTにはUSB FSとUSB HSの2種類のPhyが乗っている(HSは制限がある)ので、書き込み/デバッグ用のUSBと、その他(USBデバイスやUSBホスト)に使うためのUSB、と使い分けることができる。例えばUSBメモリを使うプログラムを開発する場合は、USB FSをデバッグに使い、USB HSのFS PhyをUSBホストにしてUSBメモリにアクセスする、といった使い方になる。USBを1個しか使わないならこれでいいのだが、例えばUSBメモリとUSBキーボードを同時使用したい、という場合に、困ることになる。
 おそらく、STM32CubeMXではUSBハブや、複数のデバイスクラスに対応するといったコードは出力できないと思う(自前で実装してる人はいるけど)。
 NCコントローラーだと、NCプログラムをUSBメモリから読み込みつつ、ちょっとした操作はUSBキーボードで、といった使い方ができると便利かな、と思っている。となると、USBデバイスを同時に2つ使う必要がある。
 キーが少ないのであれば、自作キーボード風に作ってやるとか、あるいはPS/2キーボードを使うとか、方法はいくつかあるわけで、どうするかが悩みどころ。
 別の方法としては、プログラムのやり取りはSDカードを使って、USBはキーボードに専念する、という方法もある。STBee F4miniはSDIOが使えないというアホっ娘だが、SPIアクセスなら問題ないし、テキストデータを読むだけなら速度的にも問題ない。はず。ただ、SDカードはフットプリントが大きくなるんだよなぁ。USBは最大でもせいぜい6MHzだし、最初から延長することが前提のバスなので、基板に4ピンコネクタを付けて引き出せば済む。SDカードはSPIとはいえ使用ピン数は7本程度使うし、20MHz程度の信号を通す必要もある。あと、USBメモリはCubeMXでFatFsまで作ってくれるが、SD SPIは自分で処理を作らなきゃいけないので面倒。

 最近だと自作キーボードが結構ブームっぽくて、スイッチやキートップも簡単に入手できるらしい。NCで必要なキーと言うと、テンキーや正負記号、ピリオドと、GやMといったいくつかのアルファベットがあれば足りるので、フルキーボードを実装する必要はない。あとはJOG用の矢印がいくつか。キーボードを作るとなるとスイッチを大量に並べる必要があるけど、CNCフライスが稼働すれば基板切削ができるはずなので、サクッと作れるはず。


/* Chromeさん、前回アップデート以降壮絶に調子悪いです。タブ表示変えるごとに数秒のプチフリ。PC再起動しても効果なし。アドレスバーの1文字目にIMEが無効になるのが治ったと思ったら。。。 */

0 件のコメント:

コメントを投稿