コンピュータ数値制御の誤差をちょっと考えてみる

BeagleboneBlack上のMachinekitのパルス数がオカシイと、書き込みがあり、そんなはずはないと思うがなぁと自作のパルスカウンタで観察してみたところ、特定の作動での過不足は観察されず、問題がないことを確認したのですが、マイコン等を使ってステッピングモーターの台形加速のパルス等を発生させてみると、割り切れる数値でのパルス発生ではパルス数はキッチリとした数字となってでてくるのですが、割り切れない数字の場合は?となります。

それと、NC自体が極単純な位置コントロールだけはなく、モーションコントロールでもあるので、パルス数も重要なのですが、いつどの速度で何処に移動してるか、もとても重要になります。

ステッピングモーターの台形加速、、、加速度、時間によって出力するパルスをの間隔を計算し、出力しますが、加速度と時間から移動距離を割り出す公式

d=1/2*a*t^2

なのですが、公式上時間を割り出すためには√の計算をしなければいけないのでスッパリ割り切ることは出来ません。

しかも複数の軸を使い、となると、Gコード上で指定する位置は守られるかもしれませんが、Gコード上記載されていない経路途中の位置と時間については微妙に??で近似値だと思われます。

ひとつ前の記事に貼り付けてある動画のPC画面上にあるHalMeterのウインドウ上のaxis.0.f-errorにある変化している数値は、計算された数値と、実際に出力されている司令であるパルスの誤差です。
パルス列制御の司令(命令)の場合、1パルス司令が出ると、どれだけ動く、とゆうデジタルチックな段階的な物なので司令となるパルスとパルスの間に有る計算上の位置と実際の命令であるパルス司令の位置との差が、誤差(エラー)となります。

エラー出まくりですね^^;


これはLinuxCNCがオカシイわけではなく、他NCコントローラーでも、内部数値が見えていないだけで、確実に有るはずです。
また、この誤差自体、NCコントローラー内の計算上の数値とパルスジェネレータ間の出力パルスとの誤差なので、細かいことを言えば、出力されたパルス司令がモータードライバからモーターへ送られてモーターが動き、実際にフレームが動く迄の時間が有るので、この誤差はもっと大きい物であろうと推測できます。

そんな所まで観察したところで、個人レベルではなんともならない部分だと思いますが、PC上の数値がリアルとの誤差を持っていると、、、。

細かい説明等端折りましたが、そんな感じです。




NC制御で作るものにもよりますが、、、、この誤差を減らす為にはどうしたら?

前記事でNCコントローラー上のマス目が云々と書きましたが、単純にこのマス目を細かくします。1パルスあたりの移動量を小さくします。
パルス列制御の場合、実際のフレームの作動を全く考慮しない方法として、、モータードライバ、モーターコントローラー(サーボモーター、ステッピングモーター問わず)の分解能を最大限とします。

最大限とすると、今度は実際に移動させる速度にもよりますが、速度司令を出す側、NCコントローラー側のパルスジェネレータの最大出力パルス数と、モータードライバ側の最大入力パルス数が問題となってきます。

NCコントローラー、パルスジェネレーター内での分解能が高くないと、高速なパルス司令を出すことができません。
ハードウエア的な制約もありますが。



この辺り、このブログで高マイクロステップのステッピングモータードライバICや、LinuxCNCでFPGAを使ったパルスジェネレータを取り上げている理由だったりします。


ステッピングモーターのマイクロステップ、分解能を高めて細かく正確に位置制御するためのモノではなく、2相励磁とかで作動させるとよく判るのですが、カクカクとした回転を電気的に操作して滑らかに回転させるためのモノ。













スポンサーサイト

テーマ : 自作・改造
ジャンル : コンピュータ

コメントの投稿

非公開コメント

ライセンス
アクセスカウンター
プロフィール

あきらひとし。

Author:あきらひとし。
木工用CNCルーターフレームと、ステッピングモータードライバを作ってみました。
たぶん記事は一般的な人には殆ど必要のない事ばかりなの、かも。

モーターは回るだけでも楽しい。制御(速度、トルク、位置)できるともっと楽しい!

メールフォーム

名前:
メール:
件名:
本文:

リンク
最新記事
カテゴリ
スポンサードリンク
スポンサードリンク 
スポンサードリンク
オンラインカウンター
現在の閲覧者数:
検索フォーム
RSSリンクの表示
最新トラックバック
最新コメント
月別アーカイブ