2018年2月17日土曜日

「変換くん」にレーザー加工機と通信する機能を追加して「fConnect」なるアプリを作ろうと思うのだけれど、それの要件定義と外部設計を兼ねたスケルトン

「fConnect」というアプリのスケルトン(画面のみで実際の動作が実装されていない)を作りました。
以降、「接続くんスケルトン」とします。

せっかち人のためのダウンロードはこちら → https://goo.gl/HfnvYR

■「fConnect」は何をするものなのか
CAD(など)で作成した平面データを読み込みます。
線色毎に動作条件(順序、出力、速度)を設定します。
レーザー加工機(FABOOL Laser Mini など)にデータを送信して動作させます。
その他、原点復帰や範囲確認など動作上の基本的な動作を加工機に指示します。
以降、「接続くん」とします。
※接続くん : 実際に動作する、これから実装するモジュール
※接続くんスケルトン : 今回の画面動作のみのモジュール

■なぜ「接続くん」を作るのか
当者が求めるのは「できるだけ精度よく」「ベクター加工を行う」となります。レーザー加工機のユーザとしては少し偏っている可能性もあります。
そして、先日、メーカー純正のソフトウェアがアップデートされましたが、当者とはだいぶ異なる方向性でありました。
だったら作れば良いじゃないって自分の中のアントワ.NETがいうので、自分のほしい機能とスペックの段階的な実現を目指すことにしました。

■何を「接続くん」に求めるのか
「操作性」「動作精度」「実装のメンテナンス性」を重要視します。
具体的には「官能的(?)に操作ができ」「加工機の機械的電気的なポテンシャルを引き出し」「状況に応じた改修の容易なプログラムの実装」となります。
最後の項目は内部的な内容です。

■立脚点
当方の現在の環境と内容が、
・JW_CADでデータを作成する
加工したい箇所をJW_CADでDXFファイルに変換する
DXFファイルをInkscapeで開いてSVGファイルに変換する
メーカー純正のソフトウェアに取り込む
カットする
と、なっています。
これが、「接続くん」を使用する場合は。
・JW_CADでデータを作成する
・JW_CADの外部変形を使用して選択範囲のデータを「接続くん」に取り込む
・カットする
と、変更されます。
また、「変換くん」の実装を流用して、「DXFファイル」「SVGファイル」を入力対象に含めるのは比較的容易です。
※ラスター加工の実装は当面予定されないと思われる

■超上流工程的なもの
このドキュメント(?)がある程度、超上流工程の内容になっています。
それ以外は基本的に省略します。
必要になったら遡って作成/追加するかもしれません。

■想定する動作環境
OS : Windows 7 ~ Windows 10
加工機 : メーカー純正の「オフラインバージョン」ソフトウェアが動作する加工機

■想定する開発手法
スパイラル開発を行います。※用語の正確なところは軽くスルーの方向でよろしくです
事前に最終形態と思われる実装内容を仮で定義し、優先度をつけて段階的にかつ長すぎないスパンでリリースを行います。リリースを行うたびに以降の実装内容を検討し、これを繰り返します。

■実装における責任等
フルスピードで実装するのは不可能ですので、最初期バージョンで、夏頃リリース、何かの弾みで5月頃にリリースできるかも知れない、くらいに設定します。
また、なんらかの都合で実装の中断、中止も有りうるものとします。
モジュールのリリース後も責任を持った対応は基本的に期待できないものとします。
リリースにおいて、βリリースとし、ユーザにテスト等の負担とリスクを負ってもらう可能性もあるとします。
もし何らかの協力をいただける場合も、上記不利益の可能性を納得の上のこととします。
(それと・・・、自分の必要とする内容が実現したら急にテンションが下がるとかもありうるのがリスクかも知れません)

■今回のモジュール
「接続くん」のスケルトン(画面のみで実際の動作が実装されていない)になります。
動作のイメージを確認し、共有することができます。
画面操作(クリック、入力、Tab動作)に関しては、実装後の内容とほぼ同じとなります。
一部(Jogの移動量変更など)は多少動作します。(表示の数値の変化など)

■目的
基本的には上述の前提で実装を行おうと思いますが、無人の荒野を一人進んでしまうともったいないのでその可能性を下げるのがひとつ大きな目的になります。
また。想定外に大きく多くの要望があれば、全体プランの見直し等の検討もできます。
どうしても取捨や優先順序は発生してしまいますが、コメント欄に記載いただけると幸いです。
(コメント欄、多分、機能する、はず)
場合によってはアンケートを実施することもできるようです。

■動作方法と確認内容
・モジュールをダウンロードします → https://goo.gl/HfnvYR
・zipファイルをダウンロードし解凍します (2018/2/17時点でv1.0.0が最新です)
・exeファイルがひとつありますので、任意の場所に設置します
・アプリを起動します
起動直後の画面です
実質的にこのサイズがディスプレイの最小必要解像度になるかと思います

・メニューバー
シリアルポート関係の項目が設置されると思います
実装上、工夫の余地が少ない部分と思います

・機種選択(加工エリアサイズ指定)と図形描画エリア
機種選択を行うことによって加工エリアサイズを特定します
必要な場合は直接入力できます
図形の描画は長方形などの単純化した図形でも大丈夫なのかもしれません

・加工条件などのエリア
右側の4つのタブで「加工条件」「回転、繰り返し」「加工位置」「加工実行」の操作を行います
基本的にタブの順序で操作することになります
ここの部分の操作性が特に重要と思います
配色にセンス的なものを求めても無い袖は振れないのです
(無い袖は触れないと思ってました。すれ違うときにあたら無い的な)

・加工条件
各色まとめて条件の設定ができます
その後、色個別に条件の設定ができます
図形描画エリアとの間を動かせるようにして、各色の設定項目を横一列に・・・、する??
(現状でも部品の設置は相当複雑になっています)
(実装の確実性を考慮してここでとどめるか、操作性を優先して踏み込むか・・・)
設定されている色はJW_CADの標準色(?)になります
色の関係で初っ端はJW_CADの外部変形のみの対応になるかも・・・
設定値を保存する機能はPhase2以降の実装になると思います

・回転、繰り返し

「回転、反転」はCAD側での編集と管理が簡便になるような気がします
「繰り返し」は似た様な部品をたくさん作るときに便利かなー、と
実装はおそらくPhase3以降になると思います
(こう見ると回転のアイコン酷いな・・)


・加工位置
「移動」or「Jog」でレーザーユニット(?)を動かし、その座標を加工原点(?)に設定します
これはPhase1で必要な機能になります

・加工実行
「通知」と「一時休止(冷却)」はPhase2かPhase3での実装になると思います
「進捗」はPhase2になりそうですがPhase1にできれば入れたいとも思います

■開発環境
以下の環境で実装と動作確認を行う予定です。

--共通--
既定の.NETFramework:v4.5.2
Inkscape:Inkscape 0.91
SVGファイル:Inkscapeで出力した“Inkscape SVGファイル“、Inkscapeで出力した“プレーンSVGファイル“
DXFファイル:JW_CADで出力したDXFファイル
JW_CAD外部変形 : JW_CAD 8.01b

--実装--
OS:Windows 7 Home (64bit)
開発環境 : C# (Visual Studio Community 2017)

--加工動作--
OS:Windows 7 Pro (32bit)
加工機:Fabool Laser Mini 3.5


0 件のコメント:

コメントを投稿