やりたいこと
動く範囲で使いやすい汎用CNCを作ること。UI大事!
方針
コントローラ
CODESYSのMOTION FBを使ってCODESYSで開発。
とりあえずRPiで動くものを公開。
UI
WebVisuでもいいんだけど、なんとなく使い勝手のデザインがなぁ、って最近思ってます。
ファナックやシーメンスのようなメンブレンスイッチ液晶モニター一体型のコンソールがあるといいんだけど、どっちみち物理SWは必要で、あとはラズパイのランタイム+UI画面+(できれば手パ)の構成。
手パはこんなのあるんですね。使えたらいいんだけど。6軸でワイヤレス。
PC用のプログラミング言語との接続と親和性
ラズパイはLinuxがベースになっていて、PCのプログラミング言語(PythonやC)でGUI画面が作れる。
このリンク(CODESYSのヘルプ)
https://content.helpme-codesys.com/ja/CODESYS%20Examples/_ex_cds_shared_memory_communication.html
を見ると、共有メモリが使えるみたいです。共有メモリ速くて楽です。でも、Linuxでも出来るって書いてあるけど、ランタイムが載ってないのは、ドキュメントが追いついていないのか?はっきりしないですね。
PLCベースのコントローラで動かすことを思うと、共有メモリではなく、Modbus/TCPでレジスタやコイルに必要な定義をしてやりとりしたほうが、どちらもいけてラッキーですかね。
通信はModbus/TCPを使うことに
CODESYS側も手っ取り早いのと、各PC言語にもライブラリがあるケースが多いので後々いろんなケースで自由度が高まる気がしました。
機械にPC乗せたくない場合(案外多い)も、産業用のタッチパネル(OMRONや三菱、富士電機とか)も、Modbus/TCP or RTUはサポートしてるから、機械が好きな人も手軽に自由に機械の画面も作れていいですね。
PC側の開発言語は簡単でいいから自由な3Dをサポートしたい
1)OpenGL系の簡単なワイヤーフレームまたは、シェーディンググラフィック
2)Modbus通信のライブラリがある
3)大規模なテキストファイルの編集、事務所のCAD/CAMとのやり取りが簡単
4)反応が速く、長期運用可能に。静的なメモリ割り当てがなるべく可能なら尚よい。
すべては難しいかもなので、それらのバランスの良い言語で、開発工数が少ないものを。
候補
C+OpenGL
C#+Unity
FreePascal(Lazarus)+GLScene
とかですかね。
Python系のGUIも調べてみたいです。