JaSST新潟2012向け資料「」 でのジェットエンジン制御ソフトウェア開発の取り組み
2012年3月16日
NECソフト株式会社 新潟支社 第六SIグループ
吉田 誠

目次
z弊社の紹介～NECソフトって？～zプロジェクトの紹介～プロジェクト全体概要、ソフトウェア概要～

zソフトウェア開発にあたり～懸念事項と施策から開発方針の策定～

zソフトウェア開発における取り組み～品質、ソフトウェア構造、エラー制御への工夫～

z成果～発生したさまざまな問題、得たもの、今後の課題～

z最後に
Page 2© NEC Soft, Ltd. 2012

z弊社の紹介～NECソフトって？～zプロジェクトの紹介～プロジェクト全体概要、ソフトウェア概要～

zソフトウェア開発にあたり～懸念事項と施策から開発方針の策定～

zソフトウェア開発における取り組み～品質、ソフトウェア構造、エラー制御への工夫～

z成果～発生したさまざまな問題、得たもの、今後の課題～

z最後に
Page 3© NEC Soft, Ltd. 2012

弊社の紹介z事業内容
官公庁や民間企業のお客さまに向けた、システム構築や保守・運用、アウトソーシングなどのITサービスの提供、およびアプリケーションソフトウェア、ミドルウェア、組込みソフトウェアなどの各種ソフトウェアの開発を行なっています。

z拠点（本社以外）
NEC玉川事業場、西東京システムセンター、新潟支社、柏崎センター、長野支社、NEC松本ソフトウェアセンター、北関東支社、山梨センター、群馬ｼｽﾃﾑｾﾝﾀｰ、栃木センター、茨城センター、神奈川支社、静岡支社、浜松センター
Page 4© NEC Soft, Ltd. 2012

弊社の紹介～新潟支社６ＳＩ～
zケータイを中心とした組込みソフト開発
スマホを始めとする携帯端末向けアプリケーション開発を中心に、ドキュメントソリューション、Ｍ２Ｍプラットフォーム、デジタル家電などの組込みソフトウェア開発を行っています。
また、NIIGATA SKY PROJECT以外にも中小企業庁や資源エネルギー庁の事業を通し、新たな技術開発に取り組んでいます。

Page 5© NEC Soft, Ltd. 2012

z弊社の紹介～NECソフトって？～zプロジェクトの紹介～プロジェクト全体概要、ソフトウェア概要～

zソフトウェア開発にあたり～懸念事項と施策から開発方針の策定～

zソフトウェア開発における取り組み～品質、ソフトウェア構造、エラー制御への工夫～

z成果～発生したさまざまな問題、得たもの、今後の課題～

z最後に
Page 6© NEC Soft, Ltd. 2012

プロジェクトの紹介～全体概要～
z経済産業省 「Ｈ22年度戦略的基盤技術高度化支援事業」 採択事業
¾テーマ：環境対応型先進無人飛行機（ＵＡＶ）用ジェットエンジンの開発¾期 間：H23/1/27～H23/9/30¾事業費：1億円

z体制

岩田PL

Page 7© NEC Soft, Ltd. 2012

プロジェクトの紹介～ソフトウェア概要～（１）z構成¾小型ジェットエンジン制御ソフトウェア（基板上）¾ジェットエンジン状態モニタ／調整ソフトウェア（PC上）z動作環境¾CPU：SH-7145Fが搭載された基板とそれに接続された、スイッチ、スロットル、各センサ

z開発環境¾リファレンスボート:BTC080¾開発支援ツール:GCC Developer Lite

無償ツール
活用

¾運用支援ツール：サイボウズLive¾品質管理ツール：Progress901(NECグループのツール）¾シミュレータ開発支援ツール：Microsoft Visual Studio

Page 8© NEC Soft, Ltd. 2012

プロジェクトの紹介～ソフトウェア概要～（２）z開発規模／言語／OS¾小型ジェットエンジン制御ソフトウェア（ボード上） → 約7KL(最終)/C言語/OSなし¾ジェットエンジン状態モニタ／調整ソフトウェア（PC上） → 約1KL/C言語/Windowsz体制¾開発リーダ１名、開発担当者２名

z特徴¾ソフトウェアとしての開発期間は約5ヶ月（H21/2～H21/6）¾0からのスクラッチ開発¾とにかくエンジンを回すことを目指す！
¾オランダ製小型ジェットエンジンを参考に走りながら仕様決め

Page 9© NEC Soft, Ltd. 2012

z弊社の紹介～NECソフトって？～zプロジェクトの紹介～プロジェクト全体概要、ソフトウェア概要～

zソフトウェア開発にあたり～懸念事項と施策から開発方針の策定～

zソフトウェア開発における取り組み～品質、ソフトウェア構造、エラー制御への工夫～

z成果～発生したさまざまな問題、得たもの、今後の課題～

z最後に
Page 10© NEC Soft, Ltd. 2012

ソフトウェア開発にあたり（１）z懸念事項¾「メカ制御」「下位レイヤ」開発経験が十分でない⇒長年携帯電話アプリケーション開発を中心に行ってきており、各種センサー制御に不安¾明確な要求仕様なし⇒何が正解か不明確¾設計／テストをどのように行うか⇒慣れないHW制御ソフトの設計、開発用/デバッグ用のプラットフォームがない¾品質指標をどう設定すべきか⇒前例がない「ジェットエンジン」という馴染みがないソフト開発
Page 11© NEC Soft, Ltd. 2012

ソフトウェア開発にあたり（２）z施策¾「メカ制御」「下位レイヤ」開発経験が十分でない⇒経験者の補強と社内教育受講¾明確な要求仕様なし⇒早期/随時の意識合わせとソフトウェア構造の工夫¾設計／テストをどのように行うか⇒プロジェクト方針を常に意識、シミュレータを独自開発¾品質指標をどう設定すべきか⇒安全性と経験不足を考慮し従来開発よりも高目に設定

馴染みがないソフトウェア開発であるがゆえに、関係者との連携を密にして、ＰＪの特性を考慮した施策を練る！
Page 12© NEC Soft, Ltd. 2012

ソフトウェア開発にあたり（３）zソフトウェア開発方針

システム開発計画書に明文化して関係者間で合意し、開発担当者にも方針の徹底を促す！
Page 13© NEC Soft, Ltd. 2012

z弊社の紹介～NECソフトって？～zプロジェクトの紹介～プロジェクト全体概要、ソフトウェア概要～

zソフトウェア開発にあたり～懸念事項と施策から開発方針の策定～

zソフトウェア開発における取り組み～品質、ソフトウェア構造、エラー制御への工夫～

z成果～発生したさまざまな問題、得たもの、今後の課題～

z最後に
Page 14© NEC Soft, Ltd. 2012

ソフトウェア開発における取り組み～品質～（１）z開発管理ツール¾サイボウズLive

PJとして費用を抑える必要があった無償グループウェアを活用しプロジェクト全体管理。
各社様とチーム進捗・文書登録などを情報共有。

¾Progress901
NECグループ標準品質会計ツール。
バグ、レビューなど各種品質を総合的に管理。

携帯電話開発では別の専用の品質管理ツールを使用。したがって、本PJではNECグループ標準の品質会計ツールを使用して品質の予実管理を実行。

Page 15© NEC Soft, Ltd. 2012

ソフトウェア開発における取り組み～品質～（２）z品質実績値は単体試験でバグを改修
デイリーレビューに取り組みレビュー時間は目標ほぼ達成
バグはシミュレータによる単体試験で集中摘出してTotalで目標達成
携帯電話（LINUX）
設計レビュー （h/KL）

9.4

製造レビュー （h/KL）

9.4

設計バグ（件/KL）

3.5

製造バグ（件/KL）
単体試験バグ（件/KL）
Page 16

ジェットエンジン
レビュー 目標
約1.4倍

ジェットエンジン
実績

16

14

11116.6

4.0

2.8

13.0

10.6

0.6

4.3

10.0

バグ
約3.5倍

© NEC Soft, Ltd. 2012

ソフトウェア開発における取り組み～ソフト構造～（１）zソフトウェア構造
市場ニーズに応じたデバイス変更に柔軟に対応可能な構造を採用。

Page 17© NEC Soft, Ltd. 2012

ソフトウェア開発における取り組み～ソフト構造～（２）zPCツール
各種閾値設定やエンジン動作状況監視を容易にし開発効率を高める取り組み

Page 18© NEC Soft, Ltd. 2012

ソフトウェア開発における取り組み～ソフト構造～（３）zシミュレータ
単体試験環境としてデバッグを容易にするための取り組み。

基本ＡＰ層はジェットエンジン制御プログラムをそのまま使用
Page 19© NEC Soft, Ltd. 2012

ソフトウェア開発における取り組み～エラー制御～（１）STARTUP Sequence(RPM)-安全かつ効率を考慮した設計 –STARTUP sequenceの回転数遷移
キャリブレーション
ガス着火のリトライ判定
アイドリング（RUNへ遷移）

STARTUP sequenceは、飛行を開始する前の非常に重要な準備処理を行うフェーズである。
NECソフトでは、安全でかつ効率的な飛行可能状態になるよう、独自のアルゴリズムを採用している。

◆ガス燃料と液体燃料エンジンの出力には、液体燃料を使用している。液体燃料は、着火しにくいというデメリットがある。
STARTUP Sequenceでは、液体燃料を使用する前にガス燃料を使用し、回転数、温度、圧力を高める。これにより、スムーズに液体燃料に着火し、効率よくRUNへ遷移することを実現する。

◆キャリブレーション
キャリブレーションとは、RUN遷移の直前に、一旦回転数を約50,000(RPM)まで高め、5秒間維持する。これにより、RUN遷移後に安定したエンジン出力制御が可能となる。

◆ガス着火失敗時のリトライ

ガス燃料→液体燃料(Sec)

ガス着火に失敗すると、自動的に条件の補正を行い、リトライする。

安全性 -- 自律処理 --PID制御の採用<リトライ> - STARTUP -(RPM)

PID制御による回転数遷移イメージ

ガス着火に失敗した場合、ガス着火を行う条件を自動的に補正し、ガス着火にリトライする。
失敗回数が一定回数を超えると、異常と判断しエラー処理を行う。

目標の回転数<補正> - RUN RUN状態中に、温度異常が検出された場合、燃料供給量を現状の80%に制限し、温度異常からの復帰を試みる。回転数異常が検出された場合には、スロットル位置に応じた回転数になるよう、燃料供給量を自動的に調整するようになっている。

現在の回転数<エラー処理> - POWERDOWN エンジン制御中にエラー検知すると、エラー処理を行う。エラー処理では、エラーが発生したことをLCDへ表示させた後、各種デバイスを停止させ、POWERDOWNへ遷移する。
POWERDOWNでは、燃料吐き出し処理、エンジン冷却を行い、OFF状態へ遷移する。
これにより、エラーが発生した場合でも、安全にエンジンを停止させることができる。

<スイッチ遅延> - 各状態 スイッチが変更された場合、ユーザの操作でミスかどうかの判定を行う。
スイッチ変更後、即座に判定するのではなく、1秒後に再度スイッチの判定を行い、スイッチ状態が一致していれば、ユーザ操作と判定する。
Page 20

左図は、目標回転数まで回転数を上昇させる際の、PID制御による回転数の変化の様子。
目標回転数との差分が大きい時ほど、回転数の変化が大きく、徐々に変化が小さくなり、目標回転数(Time) になる。

PID制御とは、現在回転数と目標回転数の情報から最適な燃料ポンプ制御値を計算する処理のことである。
PID制御により求まる制御値は、現在の燃料ポンプ制御値との偏差であり、目標回転数との差分が大きい時ほど、制御値が大きくなる。
求まった制御値でマイコンと接続された燃料ポンプを制御し、回転数の制御を行う。PID制御を行うと、急激な燃料供給の変化を防止し、安全かつ効率よく目標回転数にまで回転数を調整することができる。
ジェットエンジン制御プログラムでは、STARTUP、RUN、POWERDOWN（燃料吐き出し処理）時にPID制御を行い、回転数を制御している。

© NEC Soft, Ltd. 2012

ソフトウェア開発における取り組み～エラー制御～（２）zスタートアップシーケンス
・ガス着火失敗時リトライ⇒ガス着火に失敗した場合、ガス着火実施条件を自動的に修正し、スタートアップシーケンスをやり直す一定回数失敗したら、異常と判定しエラー処理を行う。
zランシーケンス・温度異常補正⇒温度異常を検知した場合、燃料吐き出し量を現在の80%にし、温度異常からの復帰処理を行う。
・回転数異常補正⇒回転数異常を検知した場合、スロットル位置に応じた回転数になるよう燃料吐き出し量を調整する。
z異常検知 （センサ値異常判定）
・加速度・ジャイロ・静圧・動圧
zスイッチ判定処理
・スイッチが変更された場合、ユーザの操作でミスかどうかの判定を行う。スイッチ変更後、即座に判定するのではなく、1秒後に再度スイッチの判定を行い、スイッチ状態が一致していれば、ユーザ操作と判定する。
Page 21© NEC Soft, Ltd. 2012

【参考】ソフトウェアシーケンス（１）電源ON

状態遷移管理POWERDOWN Sequence：
Complete

OFFSW：OFF→RUN
SW：STANDBY

ブートSTANDBYSTARTUP

SW：RUN→OFF
SW：RUN→STANDBY
Error detection

SW：STANDBY→RUN

初期化

POWERDOWNSTARTUP Sequence：
Complete
RUN※SW：SWITCH
スイッチは、[OFF][STANDBY][RUN]の3ポジション<ブート>
電源ON後に、最初に動く部分。
ブートから制御プログラムのmainがコールされ制御プログラムが開始される。

<OFF><共通処理>
電源供給後に、OFF状態となる。常にスイッチを監視し、STANDBYかSTARTUPへ遷移する。
常にセンサを監視し、一定間<STANDBY>
隔でLCDとPC Toolへ表示を行う。
センサの監視を開始し、いつでもSTARTUPを開始できる待機状態。
（OFFは除く）<STARTUP><初期化>
エンジンの稼動を開始し、飛行可能なRUN（アイドリング状態）へ遷移するための準備を行う。
各状態への遷移は、スイッチ
SH7145で動作するために必要な設定やガス燃料と液体燃料の使い分けや、キャリブレーションの実施など、安全かつスムーズにRUN
タイマーの設定、変数の初期化処理を行う。の変更、エラー検出とスターへ遷移させる制御アルゴリズムを採用している。
トアップ、パワーダウンシーケ<RUN>
ンス完了をトリガーにしている。
スロットル操作による出力制御が可能な状態。PID制御を採用することで、目標回転数まで ただし、パワーダウン状態でスムーズに回転数が変化するようになっている。異常が発生した場合、自動的に回転数やは、シーケンス完了までスイッ温度を調整する制御アルゴリズムとなっている。
チの変更を受け付けない。
これは、エンジン内部に燃料<POWERDOWN>が残らないように、安全を考エンジンの停止処理を行う。燃料の吐き出しやエンジン冷却処理など、再稼動時に安全慮した設計のためである。に稼動できるように設計している。
Page 22© NEC Soft, Ltd. 2012

【参考】ソフトウェアシーケンス（２）シーケンス図（STARTUP）
STモータON

ガスバルブPulsing/
グロープラグON

ガス着火失敗ガス着火可能条件補正

ガス着火可能条件クリア
ガス燃料への着火チャレンジ

OFF/STANDBY状態にて、スイッチが「STARTUP」になると、STARTUPシーケンスが開始される。液体燃料へ着火しやすくするために、初めにガス燃料を使用している。また、燃料制御にはPID制御を行い、素早く安全に目標回転数に近づけるなど、スムーズにRUN状態へ遷移するように設計されている。
20ms毎に各種センサ状態をチェックし、以下のSTARTUPシーケンスを完了させる。
Ⅰ. STモータを始動させる。
（STモータによりガス着火可能回転数（約4,000rpm）まで回転数を上昇させる。）

NO

ガス着火?
YES
グロープラグOFF
ガスバルブON

ガス燃料本格稼動
回転数、温度を一気に高める

Ⅱ. ガス燃料に着火させる。
ガスバルブを開き、グロープラグによりガス着火を行う。一定回転数を下回るとガス着火失敗と判定し、STARTUPシーケンスを最初からやり直す。
Ⅲ. 液体燃料切替可能回転数（約9,000rpm）まで回転数を上げる。
ガス着火に成功したら、液体燃料に着火可能な回転数、温度まで一気に上げる。

約9,000rpmで液体燃料の供給を開始
燃料バルブOPEN

Ⅳ. 燃料バルブを開け、燃料ポンプ制御を開始する。
燃料ポンプは、PID制御により操作量を計算し、制御する。

燃料ポンプ制御開始
液体燃料のみで動作開始
ガスバルブ/STモータOFF

Ⅴ. キャリブレーションを行う。
キャリブレーション回転数（約50,000rpm）を5秒間維持することで、アイドリング後のエンジン制御を安定化させる。
Ⅵ. アイドリング回転数まで回転数を落とし、RUN状態へ遷移する。

約50,000rpmで5秒待機
キャリブレーション
アイドリングは約36,000rpm※ STARTUP中に判定している回転数は、外気の状態などにより変更する可能性がある。

RUN状態へ遷移（アイドリング状態）

Page 23© NEC Soft, Ltd. 2012

【参考】ソフトウェアシーケンス（３）シーケンス図（RUN）
PID制御の採用

シーケンス図（POWERDOWN）
PID制御の採用

エラーチェック

異常

正常

加速度、ジャイロ、圧力センサで異常が発生した場合は、即座にエラー処理を行う。
エラー処理後は、POWERDOWNシーケンスへ遷移する。
回転数、温度センサで異常が発生した場合
は、異常が解消されるまで、エンジンの出力を制御する。（出力を低めにする）異常が解消され次第、RUNシーケンスへ復帰する。

燃料ポンプチェック

OFFON

燃料吐き出し処理

スロットル位置取得

復帰可能か?

1,000rpm未満になるまで

NO

回転数が低くなるまで
待機

YES
目標回転数算出

補正処理

温度が88℃未満になるまで継続

エラー処理
エンジン冷却処理

YES

PID制御により燃料供給量を調整

目標回転数範囲内?

OFF状態へ遷移

目標回転数の前後1,000rpm
NO
PID制御

STARTUPシーケンスが完了すると、RUN状態に遷移する。
RUN状態では、スロットル状態を監視し、スロットル位置に応じて、燃料ポンプの制御を行う。

燃料ポンプ制御

回転数が目標回転数範囲内に達成するまで、定期的にPID制御を行う。

Page 24

POWERDOWN状態は、センサ異常検出時、STARTUP/RUN状態でスイッチが「OFF」、「STANDBY」になった際に遷移する。POWERDOWN状態では、燃料ポンプの状況を確認し、燃料ポンプが稼働中の場合、燃料吐き出し処理を行う。
燃料吐き出し処理は、回転数を70,000rpmまで上昇させ燃料ポンプをOFFにすることで行う。これにより、エンジン内に液体燃料が残ることを防止し、次回の点火処理を安全に行うことができる。燃料吐き出し後、回転数が1,000rpm以下になるとSTモータによるエンジン冷却処理が開始される。温度が88℃以下になるまで、STモータが定期的に稼動するようになっている。温度が88℃以下になると、「OFF」状態へ遷移する。

© NEC Soft, Ltd. 2012

z弊社の紹介～NECソフトって？～zプロジェクトの紹介～プロジェクト全体概要、ソフトウェア概要～

zソフトウェア開発にあたり～懸念事項と施策から開発方針の策定～

zソフトウェア開発における取り組み～品質、ソフトウェア構造、エラー制御への工夫～

z成果～発生したさまざまな問題、得たもの、今後の課題～

z最後に
Page 25© NEC Soft, Ltd. 2012

成果～さまざまな問題～（１）zＲＯＭとＲＡＭで動作差分

結合試験¾ROM/RAMの処理速度差分が発生⇒ 本番環境のＲＯＭで動作不正が判明。ＲＯＭの実行速度が速く、割り込み回数などで処理判定していた条件の見直しが発生¾加速度／ジャイロセンサ⇒ RAMでは動作するがＲＯＭで動作が不安定になる状態が発生したが、試行錯誤しwait処理を入れることで回避した

経験不足により、本環境での影響の度合いが想定できなかった
教訓： 早い段階でROMでの動作も確認せよ！
Page 26© NEC Soft, Ltd. 2012

成果～さまざまな問題～（２）z回転数取得で問題発生

結合試験¾回転数の取得方法について、当初設計した方法では、回転数が上がると正常に取得できないことが判明⇒ 取得方法を見直して対応。
階層構造／機能分割して設計していたため他部分への影響なしで対応できた
教訓 ：HW依存での設計変更が常にあると思え！

Page 27© NEC Soft, Ltd. 2012

成果～さまざまな問題～（３）z燃焼実験でエンジン炎上

結合試験¾PID制御による燃料供給量が想定以上に多くなってしまい、炎上（パワーダウンの燃料吐き出し処理でさらに大炎上）⇒ 自動制御は危険と判断して、一旦手動制御に実装変更

単体テストではシミュレータで確認していたが、本番環境では想定以上に回転数の上がりが遅く燃料を出しすぎた⇒炎上

教訓： シミュレータとの違いによる問題がないか
いろいろなパターンを想定しろ！

Page 28© NEC Soft, Ltd. 2012

【参考】 我々は見た！炎上の瞬間

Page 29© NEC Soft, Ltd. 2012

成果～得たもの～
zジェットエンジン制御技術¾PID制御理論の習得¾ジェットエンジン制御の独自ノウハウの蓄積と開発経験

z航空産業の情報¾航空産業動向の理解による今後のビジネス検討材料z人脈¾産総研岩田様をはじめとした新潟市、新潟県各企業様とのつながり

異業種の技術観点、人脈観点から得たものが多かった

Page 30© NEC Soft, Ltd. 2012

成果～今後の課題～
安全性、操作性、自動制御での課題
課題

詳細

安全制御の追加

SW制御可能な安全制御の追加検討（燃料供給の上限値など）自動制御の改善

PID制御による燃料供給のタイミング、係数の最適値の検討、回転数上昇の評価タイミングの検討

UI改善

PC Toolの設定画面の拡張、エラー表示等の検討
・取得ログからの異常検出と画面表示

その他

エンジン制御ノウハウの応用

Page 31© NEC Soft, Ltd. 2012

z弊社の紹介～NECソフトって？～zプロジェクトの紹介～プロジェクト全体概要、ソフトウェア概要～

zソフトウェア開発にあたり～懸念事項と施策から開発方針の策定～

zソフトウェア開発における取り組み～品質、ソフトウェア構造、エラー制御への工夫～

z成果～発生したさまざまな問題、得たもの、今後の課題～

z最後に
Page 32© NEC Soft, Ltd. 2012

最後にジェットエンジン開発というなかなか経験できないプロジェクトを通し、トライ＆エラーを繰り返し、チームで課題を乗り越え、目標を達成する体験を共有することで、「ものづくり」の原点と喜びを久しぶりに体感しました。
「NIIGATA SKY PROJECT」に引き続き関わっていくとともに、この経験を他のプロジェクトにも活かしていきたいと思います。

私は東京国際航空宇宙産業展2011（10/27東京ビッグサイト）
でエンジン動作を初めて見て感動！！

苦労もしましたが県内企業様と一体となり、なんといっても「楽しく」開発できました
Page 33© NEC Soft, Ltd. 2012

ご清聴ありがとうございました

Page 34© NEC Soft, Ltd. 2012

参考文献

ＯＳなし開発だが、ＯＳを作成するためのノウハウがやさしく記載されており、組込み開発に役立った

ＰＩＤ制御など記載あり。ただし、入門とあるが上級者向け。

Page 35© NEC Soft, Ltd. 2012

ＮＥＣグループビジョン２０１７

人と地球にやさしい情報社会をイノベーションで実現する
グローバルリーディングカンパニー

Page 36© NEC Corporation 2012

Page 37

© NEC Corporation 2012