2022年1月10日月曜日

町工場DXの一環としてVB6プログラムをVB.NETに移行しようとした(そして断念した)話

 今回のテーマは製缶板金加工ではなくソフトウェア開発の話です。

しかも成功ではなく断念した話なのですが、世間でさかんにDXが叫ばれている中、これから同じような状況に遭遇する方達がいるのではないか、トライしたツール情報など何かお役に立てばと思い記事を書こうと考えました。

弊社で使用しているベンディングロール(ロール曲げを行う機械)には、4つのパラメータ(降伏点、板厚、曲げ径、板幅)を入力すると、曲げの可否等を演算してくれるソフトがあります。弊社では機械を5台所有しておりますので、ソフトウェアもそれぞれ用に5種類購入してありました。(正確にはメインのプログラムが1つあり、いわゆるアドインのような形で各機械ごとの演算機能が追加されます。)

このようなソフトウェア構成ですので、例えば「この製品はどの機械で曲げられるのか?」を調べたい時に、いちいち5個の機械ごとに入力して確かめなければならず、非効率的だと感じていました。また、将来的には業務ソフトと連携させて自動で演算させるところまで進めたいという希望もありました。

そこでまず、どのように実装できる可能性があるのか見当を付けるために、リバースエンジニアリングをしてみることにしました。

この演算ソフトはEXEファイルですので中身を知ることはできません。そこで、まずは無償版の逆アセンブラをいくつか試してみました。

EXEからネイティブコードへ逆アセンブリできたのは以下の3つです。

1)VB Decompiler

https://www.vb-decompiler.org/products/jp.htm

2)snowman

http://derevenets.com/index.html

3)Ghidra

https://ghidra-sre.org/

https://www.bioerrorlog.work/entry/ghidra-beginner


※その他、JEBも試しましたが起動すらできませんでした。原因を調べる時間がもったいないので断念です。

https://www.pnfsoftware.com/jeb/community-edition


さて、ネイティブコードへ逆アセンブリした結果、このソフトウェアはVisual Basic 6.0で書かれていることがわかりました。前述のツールのうち、1)VB Decompilerは有償版(VB Decompiler Business License $229)でソースコードにデコンパイルまでできるとのこと。さっそく購入して試してみることにしました。

その結果、Visual Basic 6.0のソースコードらしきものを生成することができました。もしこのソースを自分でコンパイルすることができれば、DLL化して別のプログラムから呼び出すすることもできるでしょう。そうすれば自動化も可能になります。

しかしここで問題が1つ生じます。弊社は製缶板金業を営む町工場ですので、本格的なソフトウェア開発環境が整っているわけではありません。具体的には、Visual Basic 6.0のコンパイルに必要な古いバージョンのVisual Studio(6.0)を持っていないのです(持っているのは最新の無償版だけ)。調べてみたところ、Visual Studio 6.0を手に入れるには、年間10万円以上のMSDNサブスクリプション契約が必要とのことでした。

Visual Basic 6.0 (VB6) のダウンロードについて | 民主主義に乾杯 (python.ms)

そこで、Visual Basic 6.0からVisual Basic .NETへ変換できないかと考えます。Visual Basic .NETであれば、無償版の最新Visual Studioでコンパイルできるからです。

調べてみると、有償の変換ツール(サービス)がいくつかありましたが価格が載っておらず、代わりに「100人月を40人月に減らす」といった謳い文句が載っておりました。IT業界のことはよくわかりませんが、仮に1人月80万円とすると4,800万円のコストダウンに繋がるようなツール(サービス)です。少なくとも数百万円であろうと想像しました。

そこで何とか無償のツールが無いかと探していたところ、gmStudioというソフトウェアの評価版を見つけました。

VB6 to .NET | ASP to .NET | Tools - Great Migrations

評価版では11,000行までというリミットはありますが、とりあえず変換ができるかできないかの判断には使えます。

早速ダウンロードしてトライしてみたところ、空っぽのアウトプットが生成されてしまいました。エラーログを確認したところ、

Content: 140 As String * 5

Expecting identifier of variable being defined 140

RecNo  Content of record

1196         Dim 140 As String * 5

といった文法エラーが発生しておりました。VB Decompilerでデコンパイルしたソースコードには、変数名140のようなソースが含まれてしまっていたようです。

VB Decompilerのメーカーに問い合わせたところ、「Webサイトで謳われているように、ネイティブコードからのデコンパイルの成功率は最高75%で、残念ながらデコンパイルがうまくいかないケースがある」とのことでした。

(変数名が数字にならないようにするぐらいならすぐに改修できるのではないか・・・?)と思いながらも、デコンパイルが上手くいかないのであればリバースエンジニアリング自体をあきらめるしかありません。仕方なく、別の方法で解決することにした、というお話でした。

もし時間ができたらまた記事を書こうと思いますが、概略としてはPythonのAppiumを使ってRPAプログラムを書きました。そして、それを応用して実装したのがロール曲げ自動判定ページです。製缶板金業以外の方には役に立たないと思いますが、一応リンクを張っておきます。

ロール曲げ可否自動判定 (yamajusano.com)

また、せっかくProバージョンのVB Decompilerを購入したので、もし「このEXEをデコンパイルしてみてくれないか」といったご要望があればご相談ください。(ただし著作権等の問題があるものはご遠慮ください。)

最後に、町工場のようなアナログ世界の方こそDXによる伸びしろは大きいと考えています。ITを生かして町工場のDXを一緒にやりたいという方、社員としてでも、パートナー企業としてでも、ご興味がありましたらお気軽にお声をお掛けください。


開先加工のご案内

 山十佐野製作所ではプラント設備の製缶板金加工で必要な溶接用の開先加工も行っております。改めて資料を作成いたしましたのでご覧いただけますと幸いです。

開先加工のご案内(株式会社山十佐野製作所) (yamajusano.com)





2022年1月6日木曜日

ロール曲げのスプリングバック

曲げ加工後に発生するスプリングバック(曲げの戻り)という現象があります。

JFEスチール株式会社様の資料によると、折り曲げのスプリングバック量は以下の式で計算できるとのことです。

JFEの耐摩耗鋼板 エバーハード 施工ガイドライン ̶ 曲げ加工 ̶ (jfe-steel.co.jp) より引用

つまり、板のサイズや曲げ寸法が同じであっても、材質(引張強度とヤング率)によってスプリングバック量は変わることになります。これは実際に曲げている肌感覚でもよくわかります。

■鉄よりチタンの方がスプリングバックが大きい

純チタンであるTP340は引張強度が340~510N/mm2で、平均すればSS400とあまり変わらないと言えるが、ヤング率は半分ぐらいしかないので、スプリングバックは約2倍になるはず。

→ 弊社のベンディングロールのメーカーの演算ソフトでは、TP-340の場合は内径を60%で入力するようになっております。(もしΦ1000の演算をしたいのであれば、Φ600と入力する。)つまり、スプリングバック量を1.7倍と想定していることがわかります。また、弊社の経験上、チタンのスプリングバックは時間差で現れる特徴もあります。たとえピッタリの円筒に曲げたとしても、一晩経つと口が開いてしまっていることがあるのです。(この現象は機械的性質の数値で表すことができるのかわかりません。もしご存じの方がいたらご教示いただけますと幸いです。)

■耐摩耗鋼(ABREX、EVERHARD、HARDOX等)は鉄よりスプリングバックが大きい

例えばABREX400は引張強度が1259N/mm2で、鉄の約3倍である。ヤング率は情報が見つからなかったが、同じ鋼なのでSS400とさほど変わらないと予想される。もし同じだとすると、スプリングバックは鉄の約3倍大きいということになる。

→ 耐摩耗鋼は曲げ過ぎたかなと思うぐらい曲げても、バネのように戻ってしまいます。下の写真は過去に弊社で加工した時のものです。



いかがでしょうか?

かなり重なった状態になるまで曲げても、力を抜くとちょうどよいぐらいの円筒になっているのがご覧いただけるかと思います。

計算式があるとは言え、スプリングバック量を正確に予測することは困難です。これもロール曲げ加工の自動化が難しい理由の一つなのかもしれません。

弊社は今後も理論と実践を組み合わせてロール曲げ加工の技術力を磨いてまいります。

2022年1月5日水曜日

錆止め塗装

 山十佐野製作所ではロール曲げや溶接加工後の塗装も承っております。

こちらは錆止め塗装まで行った時の写真です。



皆様のご要望にワンストップでお応えいたしますので

遠慮なくご相談いただけますと幸いです。

謹賀新年

謹んで新春のお慶びを申し上げます。

弊社は本日1月5日より営業しております。

本年も何卒よろしくお願い申し上げます。