LinuxCNC(uspace ver) On CentOS6.8 の導入
(2016/10/25追記,CentOS 6.5として扱ってたけど,6.8でした.ごめんなさい.タイトル修正済み)
目的
古いマシン(Intel Atom 330 @ 1.60GHz, 2048GB RAM)を使って,NCフライスを制御したい.CentOS 6.56.8のほぼminimalな環境は整備されていたので,まずは,非リアルタイムなLinuxCNCが走るか確認した.
とりあえず,起動出来た感じ.
準備
- LinuxCNCはウィンドウを出してくるので,とりあえずデスクトップ環境を入れておく.
vncserverも設定しておいた.
- LinuxCNCは git clone https://github.com/LinuxCNC/linuxcnc でソースコードを持ってこれる.
http://linuxcnc.org/docs/devel/html/code/building-linuxcnc.html
を見ながら作業を進めた.
configure編
最終的には下記コマンドでconfigure可能:
./configure --with-realtime=uspace --without-libusb-1.0 -enable-non-distributable=yes
ハマったこと:
- usblib-1.0が入らない?usblibがあるけど認識していない.今回は必要ないので,--without-libusb-1.0を付加
- libmodbusの導入.configureはパッケージの有無を確認しているので,rpm化する必要あり
- tkimgの導入.Debian系ではパッケージあり,CentOSではナシ.Img-Sourceを落としてきてmakeする.--prefixが指定されていないので注意
- -enable-non-ditributable=yesが必要?
- Python2.7の導入.CentOS6.5の公式リポジトリだと2.6なので,2.7を導入する必要あり.(configure時に--enable-sharedを付けないと,make時のリンクで引っかかる.)(2.6と切り替えられるようにしないとyum等が動作しない.update-alternativesで対応可)
- 他にも足りないの聞かれるが,公式リポジトリからyum installで対応可
make編
configureしたらmakeすればおk.
ハマったこと:
実行編
linuxcnc-dev/script/linuxcncを実行.メガネペンギンが出てくれば成功
↑latency-histogramの実行結果.右が1000usec周期でパルスを出す場合.真ん中がとんがってる(=遅延なしの場合が多い)ので頑張ってるけど,プロットの枠外に広がるほどバラツキがあるようだ.左は25usec.遅延バラバラで全く駄目.
補足(TCLLIBPATHの結合がおかしい?)
latency-histogramを実行すると,tclshがpackage require Img出来ないとぬかしてくる.
linuxcncは,tclshに渡す前にrip-environmentを実行して環境を整えてくれているのだけど,環境変数$TCLLIBPATHを再定義する際に,パス文字列の結合にスペースでは無くコロンを使っているので,tclshは正しくパッケージを読み込めなくなるみたい.
scripts/rip-environment: if [ -z "$TCLLIBPATH" ]; then TCLLIBPATH=$EMC2_HOME/tcl else TCLLIBPATH=$EMC2_HOME/tcl:$TCLLIBPATH ↓ if [ -z "$TCLLIBPATH" ]; then TCLLIBPATH=$EMC2_HOME/tcl else TCLLIBPATH="$EMC2_HOME/tcl $TCLLIBPATH"
にすれば動いてくれる.