本当は展示会前に1回アップデートしようと思っていたのですが、つい忙しさにかまけて抜かしてしまいました。

先日、東京ビックサイトで開催された産業交流展2017(11/15~11/17)に、ついに弊社も出展を行いました。
ご来場され、弊社ブースにお立ち寄りいただきました方々には、御礼申し上げます。
後日改めてご挨拶させて頂きます。
弊社の今回の展示は、主に各種制御基板を陳列した展示でしたが、今回社内テーマを「Linux × ラズベリーパイ × モーター制御」と決めて製作しておりましたラズパイとLinuxソフトウェアによるANC-650L基板(従来のANC-35U21基板の製品としての名称)のサーボモーター駆動の展示を行いました。
弊社では機構を作らないので、インパクトに欠ける部分はありましたが、多くの人に興味を持って足を運んで頂くことができました。
また、会期中問題もなく運転を行えた事で胸をなでおろした次第です。

しかし振り返れば会期が近づくにつれてソフトウェアの開発の完成度が問題になっておりました。
人に見てもらう以上は、完成度の高い物を望んでしまいますが、多くを望みすぎて形にならなければ意味が無いので、どこまでにするのかの線引きが難しかったです。大詰めになってくると、私だけでは解決しない部分が出てきて、多くの難題を他の人に頼ることになりました。そしてやっと展示会に出せる物にする事ができました。

開発途中では、残りの日数の関係でNCデータを単純なモーターの往復動作に固定して動作させる案や、移動軌跡のグラフィック表示を行わない案などが出ましたが、何とか見通しが付いたところでG0/G1/G2/G3を使用した自由なNCデータが使用できるようにしました。実演データとしては以前客先から頂いた義歯の3次元データを使用する事にしました。展示は2軸だけなので、Z軸データは削除しました。グラフィック表示も間に合い、どう動いているのか分かるようになりました。
添付の写真は弊社ブースとラズパイ+ANC-650Lの様子です。
img_20171115_100412
img_20171115_100323

今回は展示会仕様と言う事でしたが、正式な製品にするまでには、まだ多くの課題があります。

大規模な展示会には初めて参加致しましたが、今後も事情が許せば色々な展示会に参加したいと考えています。

次回の「展示会のお話」は来月位に致します。
気分次第で今回の開発話をもう少し書くかも知れません。

1.さて、前回から1ヶ月以上が経ちました。
  移植の前に何かとやることがありました。
  まず、基にする各ファイルの内容を大雑把に把握することから始めました。
  数が多いのと各関数の看板がほとんど無いので機能、引数、戻り値の意味を理解する
  のが大変です。まあ取りあえずは機能だけ理解できればOKです。

2.展示会用との事で機能を削って、最低限どの機能を使えば良いのかを考えます。
  それに従いLinuxで必要な関数などを調べます。

3.画面の作成はGTK+用のGUIデザインツールソフトのGLADEを使用する事にしました。
  ボタンの配置で難儀していたので、いろいろ探しました。ソースコードの値で設計するより
  イメージが見られた方が断然いいですから。ただ、設計していた画面が100%実行した画面に
  なるとは限りません。いくつか作っていくうちにそのように感じました。
  また、ちょっと操作性が今ひとつしっくりこない感じです。

4.画面に関しては、GTK+を使用します。いくつかのサンプルに従い、作ってテストしました。
  WEBで参考にしていたサンプルの関数が、現在のバージョンでは使えなかったり、
  あるバージョンから使えなくなるとの情報があり、代替の関数を探す事やその
  使用方法についてテストする必要が出てきました。

5.今回は使えるものはどんどん使う方針で、最低限の機能を実現するだけのソースファイルを
  抜き出してとりあえずコンパイルしました。基のファイルはC++ですが、使用するのはCとして
  使用するので、クラスを取り払ったり、Windows固有の関数、クラス、型などの必要のない
  部分をマスクしたり、関数を置き換えたり、同等の関数を作ったり結構な量の変更を行いました。
  コンパイルを通すだけで随分時間がかかりました。その次は、リンクです。
  これまたエラーを潰すのが大変です。余分なものも含まれるのでそれらがエラーの原因だったり
  ヘッダーのインクルードが原因だったり、エラーの原因を判断するのが私には大変でした。
  随分ほかの人に教わりながら作業しました。

  今回はここまでにします。次回は展示会直前を予定しています。

1.第1段階はLAN通信でJOG動作をさせることです。
  そのために、まずボタンを使えるようにします。
  http://uchigo.main.jp/gtk3/chap05/chap05.html のgridウィジェットを参考に2x6個のボタンを並べてJOGボタンとしました。
  しかし、どうにも気にいりません。どう設定してもボタンとボタンの間を空ける事ができません。
  また、開始位置を変えられません。Gridの指令の意味があまりありません。
  色々なパターンで、配置を試しましたが、やはりおかしいです。
  どこかの使い方に問題があるのかわかりません。(そんな要素はないけどなー)疲れました。
  取りあえず密着した状態で使用することにして、あきらめました。
  ボタンだけの単体デバッグを行いました。
  NetBeansの使い方になれるため、いろいろ試してみました。ソフトの実行を一時停止させると、ハングアップ状態になることがあったり、すごく時間がかかって反応したりする事がありました。止める状態にもよるようです。ブレークポイントだとまだなんとかまともに止まりました。

2.次に、PC(Linux)とANC-35U21の代わりのPC(Windows)とをTCP-IPで通信できることを確認します。
  http://onishi-lab.jp/programming/tcp_linux.html を参考にそのまま使用して実行しました。
  あっけなく動作しました。なーんだ簡単じゃん!

3.ボタン操作とTCP-IPをつなぎます。
  今までは1本ずつのソフトだったのですが、今度は2本を使用するのでリンクしなければなりません。
  NetBeansの設定の仕方をいろいろ試して、リンクができるようになりました。
  リンクできたので次はANC-35U21をつないでデバッグです。

  


↑このページのトップヘ