ホーム > GAIO CLUB > GC ONLINE Vol.06 : 三菱電機メカトロニクスソフトウエア(株)静岡支所 機器開発部様適用事例

GC ONLINE Vol.06 :
三菱電機メカトロニクスソフトウエア(株)静岡支所 機器開発部様の
実機コードベース単体テストへの「カバレッジマスターwinAMS」適用事例


カバレッジマスターwinAMSは、組み込みマイコンの命令をそのまま実行するシミュレータを応用した単体テストツールとして2004年に販売をスタートし、多くのお客様に長期にわたってご利用いただいています。組み込みには多種のマイコンがあり、C言語で開発されたソフトウエアの動作検証では、最も製品動作に忠実な「実機環境」に合わせたいという根強い要求があります。

今回は、三菱電機メカトロニクスソフトウエア(株)静岡支所 機器開発部様に、開発されているルームエアコンの室外機・室内機制御ソフトウエアの単体テストへの要求や、実機コードを動作させて単体テストを実行する「カバレッジマスターwinAMS」の特徴を活かした適用方法についてお話を伺いましたので、その内容をインタビュー形式でご紹介致します。

【インタビューさせて頂いたユーザー様】

三菱電機メカトロニクスソフトウエア(株) 静岡支所 機器開発部 機器技術第一課 課長
袴田 拓生様

三菱電機メカトロニクスソフトウエア(株) 静岡支所 機器開発部 機器技術第一課 グループリーダー
石川 研一様

【インタビュアー】

ガイオ・テクノロジー(株)大西建児


部屋の温度を先読みするルームエアコンの「AI」機能

三菱電機メカトロニクスソフトウエア様で開発されている家庭用ルームエアコンの中で、最初に、一般の方にわかりやすい「室内機」側の制御について伺いました。

普段どのような開発をしているか、自己紹介を含めて教えてください。

袴田様:
私は1998年入社です。ルームエアコンの室外機のソフトウエア開発から始めました。数年を経て他の部署に移り、営業支援システムの開発、ビルの集中エアコンの壁についているようなリモコンのソフト開発などを経験しました。最近では、その部署にてエアコンをリモートで制御するスマホアプリ開発等も行ってます。現在は、入社当時の機器開発部に戻り、開発のマネジメントを行っています。

石川様:
私は2006年に入社しました。機器開発部では、ルームエアコンの室内機、室外機の両方のソフトウエアを開発していますが、私は入社以来、ルームエアコンの室外機のソフトウエア開発一筋です。「霧ケ峰」の愛称でテレビコマーシャル等ご覧になると思いますが、まさに、その製品のソフトウエア開発を担当しています。

御社のルームエアコン「霧ケ峰」は、TVコマーシャル等でよく耳にします。最近は部屋にいる人に合わせて「体感温度」を検知すると聞きました。どんな技術なのかご紹介いただけませんか?

袴田様:
霧ケ峰の「暑がりさんと寒がりさん」のコマーシャルなどで紹介されている機能は、室内機の風の当て方の制御機能です。最新の機能には「ムーブアイmirA.I.」(ムーブアイミライ)があります。360度回転するセンサーを使い、部屋の温度分布を画像で認識します。従来は、温度の変化を認識した後で、温度の高いエリアへ積極的に冷風を送るようなフィードバック制御を行っていました。これだけでは、温度の制御が後手に回り、部屋の快適性を保つには限界がありました。

「ムーブアイmirA.I.」の「AI」は人工知能のことですよね?

袴田様:
その通りです。「ムーブアイmirA.I.」では人工知能を搭載し、部屋の温度状況を日々学習しています。これをもとに、部屋中の温度の変化を「先読み」することで、部屋の各場所に対し風の当て方をより適切に制御することができます。温度が1度変わるだけで、10%の省エネにつながると言われていますので、このような「先読み」制御は、省エネにも大きく貢献しています。

快適なエアコンの風を生む気流制御技術

三菱電機様のルームエアコンは、風の当て方を制御する複数のフラップを持ち、単に連続する風ではなく、立体的な風を送る制御が行われているそうです。この技術について伺いました。

ルームエアコンは、風の方向を決めるフラップが自動で細かく動きますよね?この技術にも御社の特徴があるのではないですか?

袴田様:
室内機は「ムーブアイmirA.I.」を使って、どこにだれがいて、最適な気流制御をすることが三菱の特徴だと思います。これを実現するのが「匠フラップ」と呼ばれる機能です。上下フラップや左右フラップ、インナールーバーを制御して、フラップの方向に加え、風量をフラップの幅で変化させたりします。複数のステッピングモーターを使って、細かく制御できるようになっています。

最近の機種では、「ムーブアイmirA.I.」の温度センサーにより、立っている人を検知した場合は縦方向に変化する風を送り、ソファーなど横になっている人を検知した場合は、横方向にそよぐ風を送ったりすることができます。これを、室内の2人に対して同時に制御します。「暑がりさん」と「寒がりさん」に、同時に快適な風を送り分けることができる様になっています。「気流制御の三菱」といえる技術だと思います。

これらの制御は、どのようなマイコンで行われているのですか?

袴田様:
室内機制御には、16ビットマイコンを1個使っています。「ムーブアイmirA.I.」の温度センサーがあるものは、専用にもう1個の16ビットマイコンを持ち、温度センサーからの画像取り込みと認識処理を行っています。この情報を本体のマイコンに送り、協調して動作させています。

室外機の冷媒圧縮機制御

次に、ルームエアコンの「室外機」側の制御について伺いました。

室外機は、部屋の外に置かれている機器ですね。どのような動作が行われているのか教えていただけませんか?

石川様:
エアコンは、「液体」の冷媒が蒸発する、つまり「気体」に変わるときに周囲から熱を奪う性質を利用して空気を冷やします。まず、冷媒の状態変化による冷房の仕組みを説明します。

最初に、室内機から戻ってきた「気体」となっている冷媒を室外機の圧縮機で圧縮します。高温高圧になった冷媒は室外機の熱交換器に入り、ファンによって冷却され、その際に放熱をしながら「液化」します。

次に、膨張弁(LEV)で「液体」になっている冷媒の圧力を下げます。圧力を下げられ「気化」しやすくなった冷媒は室内機の熱交換器に入り、蒸発して「気体」となり、同時に周囲の熱を奪います。この際に、熱交換器が冷たくなります。

室内の空気はファンによって吸い込まれ、冷たくなった熱交換器を通ることで、冷風となって室内へ吹き出す訳です。

「気体」となり低温低圧になった冷媒は室外機の圧縮機に戻り、再び同じ動作を繰り返します。

室外機のマイコンでは、圧縮機の三相モーターを制御し、このような冷媒の圧力管理を行っています。フィードバック制御の基本であるPID制御が応用されています。ソフトウエアでは微積分の演算を行なっており、32ビットのマイコンに実装しています。

室外機だと、環境条件、過酷な状況で動作させるのにご苦労があるのではないですか?

石川様:
室外機の制御にも、最近では予測の要素が取り込まれています。通常のPID制御では、出力が変化した後に、これを修正するように制御が働きますが、これでは、過度な負荷がかかった場合に、機器を破損してしまうことが考えられます。そこで、機器に負担がかかることが予測される場合には、あらかじめ圧力を制御しています。例えば冷媒を圧縮した際に放出される熱で、冷媒の温度が高くなりすぎると、熱交換器などの機器を破損してしまいますし、省エネの観点でも、無駄な電力を使ってしまいます。このようことが発生しないように、予測制御を行っています。

室外機の圧縮機のモーターは、回転速度を変えるために、インバーターにより三相交流のPWM制御を行っています。細かい制御は難しいモーターなのですが、弊社では10年以上前からこのモーターを使い続けており、基本的な制御方法は社内で確立しています。使用環境や仕向に合わせて、制御定数をチューニングするようなイメージです。

ソフトウエア構造の変化

次に、ソフトウエアの作り方や構造、その変化について伺いました。

組み込みソフトは一般的にはC言語で開発されていると思いますが、使用する言語に変化などはあるのですか?

袴田様:
15年以上前になります。その当時は、エアコンの制御ソフトは基本的にアセンブラで書いていました。アセンブラはマイコンの種類に依存しますので、開発の効率化のために、ある時点でアセンブラからC言語へ移行することにしました。ただし、最初はアセンブラをもとに、それをC言語化するような置き換えが中心でしたので、グローバル変数の塊のようなソフトになっていました。これを少しずつ構造化を進め、C++は使っていませんが、現在では、機能はほぼ構造化、カプセル化されています。1関数1目的でカプセル化し、結合度と凝縮度を意識した構造化の考え方をとり入れています。

製品のROMに吐き出されるヘキサオブジェクトでの単体テスト

三菱電機メカトロニクスソフトウエア(株)静岡支所様は、カバレッジマスター初期のバージョンから長くご利用いただいているユーザー様です。カバレッジマスターを採用頂いた切っ掛けから伺いました。

御社には、2005年にカバレッジマスターをご採用頂いています。当時カバレッジマスターを採用された切っ掛けについて、教えていただけませんか?

石川様:
弊社では、元々アセンブラの時代から単体テストを行うルールがあり、当時はデバッガを使って、ステップ実行で単体テストを行っていました。ですが、単体テストの方法やエビデンスを統一することが難しく、実施したテスト出力のOK、NGの実施結果は残していましたが、全体的な網羅率がどの程度か、抜け漏れがないのかなどの判断を行うエビデンスが、なかなか整わないことが課題でした。
また、デバッガでの手作業ですので、単純に時間が掛かります。マイコンが変わった場合、コンパイラを変えた場合も、単体テストを再度行うことは習慣化されていましたので、毎回手作業を行っているのでは、効率が悪すぎることが大きな課題でした。

そこで、この効率化のためにカバレッジマスターの導入を検討し、採用を決めました。採用当時は、カバレッジマスターのマニュアルやガイドブックが十分でなかったため、社内でマニュアル、手順書を作り、マイコン純正コンパイラでの単体テストを社内で運用できるようにしました。

Cコードの単体テストであれば、Visual Studioなどのパソコン環境を使えば可能だと思いますが、どうしてカバレッジマスターを検討されたのですか?

石川様:
確かにVisual Studioを使って行う方法や、他の単体テストツールもあったのですが、組み込みマイコンの純正コンパイラで吐き出したコードで試験ができることが条件でした。弊社は、元々はアセンブラで開発を続けていた経緯もあり、マイコン実機環境に合わせて試験を行うのが基本的な考え方です。例えばGNUのネイティブコンパイラを利用する単体テストツールもあったのですが、製品のROMに吐き出されるヘキサオブジェクトとは違うレベルのテストでは、「信用できない」という考え方を持っています。実機コードでテストしたエビデンスが欲しいというのが最大の理由です。

カバレッジマスターwinAMSの利用方法

現在では、カバレッジマスターを単体テストの標準ツールとしてご利用いただいています。普段の使い方について伺いました。

普段、カバレッジマスターをどの様に使っているか教えていただけませんか?

石川様:
マイコンの純正コンパイラから吐き出されたコードベースで、機能テスト、カバレッジ確認を行っています。何かおかしい結果が起きると、カバレッジマスターのアセンブラ混在表示を見ながら、カバレッジを確認したり、カバレッジマスターが内蔵するコードデバッガを連動させて、ステップ実行しながら原因を調査する様なことも日常茶飯事です。昨日もやっていました(笑)。

テストケースの作成はどのように行われているのですか?

石川様:
最近はホワイトボックスでなく、ブラックボックス観点のテストに考え方を変えています。関数の仕様から、機能性をテストするためのテストパターンを作成する考え方です。関数の詳細設計書の中に、テストパターンを埋め込んでおり、マクロでカバレッジマスターのCSVフォーマットに吐き出せるようにしています。関数を流用した際に、設計書をもっていけば、テストパターンも自動的に付いてくるような管理にしています。CIの考え方を進めており、可能な限り自動化できるようにしたいと思っています。

テストケースの自動作成機能は利用されていますか?

石川様:
はい、ホワイトボックスの観点ですが、CasePlayer2で自動生成する機能を使っています。昔から使い続けているライブラリ関数に対し、マイコンを変えたり、コンパイラを変えたりしたときの再テストに利用しています。CasePlayer2の自動生成機能でカバレッジ100%のテストパターンを作り、それが新しいマイコン環境で同じ結果になるかを確認するのに使っています。

切っ掛けは、2011年に震災でマイコン供給が止まった際に、マイコンを変更する必要があったのですが、残念ながら当時はCasePlayer2を使えてえおらず、テストパターンを作るのに苦労しました。現在は、CasePlayer2の自動生成機能をフルに使って効率化しています。

カバレッジは実機コードのみで計測が可能なC0が基準です。C1は必要なときにのみ実施しています。

テストエビデンスの管理面で、利用されている機能はありますか?

袴田様:
単体テストとカバレッジ計測は、全関数の結果がテストレポートにまとめられて、一目瞭然で確認できることが理想的です。いままでの試験は、各々の試験シートに各テストケースのOK/NGが残っていましたが、全体的にどうなのかをまとめることが困難でした。カバレッジマスターでは、カバレッジ率が数字で定量的に%表示されるため、エビデンスが明確になるところがよいと思います。

石川様:
テスト済みの全関数の結果が、HTMLでまとめられるカバレッジマスターの結果出力シートを利用しています。ただし、HTMLには後からコメントが書けないため、例えばカバレッジが100%にならなかった場合の理由などが追記できません。そのため、出力されたHTMLファイルに情報を追加するツールを内製して使っています。

最近は、SQAの担当がレビューに入るようになり、ソフト品質エビデンスの中身を確認されるようになりました。従来は開発内部のテスト結果としてしか利用できませんでしたが、HTML結果出力シートをエビデンスとして、第三者に対しても品質を示すことができるようになっています。

弊社へのご要望

最後に、弊社へ今後期待することについて伺いました。

弊社は日本の数少ないツールベンダーの1つです。今後、弊社に期待されるものはありますか?

石川様:
単体テストツールとしては、社内で当たり前のツールとなっており、運用もできていますので、おおむね満足しています。単体テスト以外の分野ですが、変数の排他関係を確認するために、海外の他社ツールを使っているのですが、いろいろなメーカのツールを組み合わせるのは大変です。このような排他、競合を確認できるツールがガイオさんにあるといいと思います。

袴田様:
設計段階で、PC上でのシミュレータ環境をもっと使いたいと思っています。そのためには、周辺デバイスを模擬するもの、とくに一般的なI/O、A/D、PWMの出力などが用意されていて、気軽にシミュレーションに取り込めるといいと思います。「実機レス」でソフトを開発できるのが目標ですが、時間もお金もかかるため、ガイオさんに、この辺りが対応できるツールを期待したいと思っています。

まとめ

本インタビューを通じて、三菱電機メカトロニクスソフトウエア(株)静岡支所 機器開発部様から、組み込みマイコンの「実機コード」ベースの単体テストを基本としていること、「カバレッジマスターwinAMS」を使って、単体テストの効率化、ソフト品質エビデンスの作成を実施し、社内標準ツールとして活用していることを伺うことができました。
ガイオ・テクノロジーとしましては、最後にいただいたご要望をはじめ、組み込みソフト品質の検証に貢献できるよう、ツールの機能改善、新しいソリューションの提案に努めて参ります。

※「霧ヶ峰」,「ムーブアイmirA.I.」は、三菱電機株式会社の登録商標です。
※「Visual Studio」は、米国Microsoft Corporation.の米国およびその他の国における登録商標です。

本稿に関するお問い合わせは

本ページ内容に関するお問い合わせは、ガイオ・テクノロジー営業部(ご購入前の製品についてのお問い合わせ窓口)までお願い致します。

 

参考情報・リンク

GC ONLINE Vol.05 印刷用PDF