BSDでCNC
MOZボード
3軸のステッピングモータを制御するMOZボードの紹介をします。
MOZボードはコマンドで示されるデータ列がライトの FIFOメモリに書き込まれると、コマンドに応じた動作を行ない、応答データがある場合は応答データを リードFIFOメモリに書きこみます。ライト、リードFIFOメモリは1Kバイトの大きがあるの で、ホストPC側が出力したデータと実際のフライス盤の動作はコマンドの数で80〜100コマンド分ず れていることになります。各コマンドのコマンド総数と応答データ総数が予め分っているので、ホスト PC側は発行したコマンドに応答データがあれば、コマンドを出力した後にリードFIFOを読 みます。ライト、リードともフラグ(ライトはフルフラグ、リードはエンプティフラグ)をチェックして動作 ができなければtsleep()を 発行してシステムにCPUを返します。その後、フル、エンプティフラ グが解除されると割込みが発生し、割り込みルーチンでwakeup()を発行し、再度リード、ライトルーチン の動作が可能となります。
コマンドと応答データの例は以下のようになっています。
コマンド番号:41
動作:現在の絶対位置を通知します
コマンド総数:3
コマンド:SQ、41、CHK
応答データ:SQ、41、Xh、Xm、Xl、Yh、Ym、Yl、Zh、
Zm、Zl、CHK
応答データ総数:12
コマンド番号:71
動作:指定された相対座標に速度0からステップで加速しな
がら最高速度で移動、減速停止します
コマンド総数:9
コマンド:SQ、71、
Xh、Xl、Yh、Yl、Zh、Zl、CHK
応答データ:無し
カンマで区切られたデータは1バイトの16進数です。
SQ:1バイトのシーケンス番号(00−FF)
CHK:チェックサム、SQからCHKまで8ビットで加算すると0になるようにCHKを付けます。
相対位置:Xh、Xlの16ビット(signed)で表しま
す。
絶対位置:Xh、Xm、Xlの24ビット
(unsigned)で表します。基準点は800000hになります。
X、Y、ZはそれぞれX、Y、Z軸を表します。
オレンジ:ホストPCバスに(ISA)接続されている
部分
青緑:Z80のバスに接続されている部分
青:ホストPCとZ80のバス双方に接続されているFIFO
メモリの部分