富士重CVTシステムの警告調査解消1【組込システム解析実習】

組込システム技術者としてソフト組めるだけでは不十分です。テスト時、システムを理解し不具合解析も必要となります。弊方個人所有のFIATで、Dレンジ挿入時、突然CVTMIL( 故障警告灯のWoldWideな通称 )が点灯し、走行不能になりました。LIMP HOMEモード(低速で最低限走れるようにすることの通称)にもなりません。よほど重症なようです。

当CVTは’97と古く、管理はFIAT、実体は富士重ということで、整備情報も部品もあやふやな状態です。故障コードMIL点滅回数 の説明も整備書にも記載されていません。警告を出しているのは CVT-ECU のソフトウェアです。その解析と対策をレポートしていきます。


まずシステム全体を理解する必要があります。着目点は何が Input で何が Output なのか? 自分で整理することで理解が深まります。(整備書の図は中途半端に抽象化されよくわかりません)

上記の中で、電磁パウダークラッチは未知の存在です。半クラッチもあるでしょうからDuty制御かなと推察します。スロットルスイッチは当システムの動作異常で最も陥りやすい項目として知られているようです。電磁パウダークラッチの接続/切断と同意ととらえてよい感じです。


CVT-ECUで検出可能な故障を推察します。出力系はマイコンおよびソフトウェアから駆動できているかは判定できません。センサ故障は断線とほぼ同意と考えます。

入出力デバイス故障CASE検出可能性
検出可能
タイミング
入力スロットル開度地絡/天絡/OpenIG-ON
上限/下限エンジン制御と共用のため不明
入力スロットルスイッチ地絡/天絡/Open走行開始時
入力バッテリ電圧上限/下限IG-ON
入力エンジン回転数断線エンジン始動
入力シフトポジションPスイッチ断線、実ギア位置と不一致IG-ON
入力シフトポジションRスイッチ断線、実
ギア位置と不一致
走行開始時
入力シフトポジションNスイッチ断線、実
ギア位置と不一致
IG-ON
入力シフトポジションDスイッチ断線、実ギア位置と不一致走行開始時
入力シフトポジションLスイッチ断線、実ギア位置と不一致走行開始時
入力車速パルス断線走行開始時
出力電磁パウダークラッチ断線、ブラシ消耗CVT-ECUに-側端子があるため有IG-ONもしくは走行開始時
出力油圧ソレノイド断線GNDはボディGND落としのため不明。IG-ONもしくは走行開始時
その他不揮発性メモリ
(おそらく搭載有)
読書き不能IG-ON

他ポイントが二点あります。

  • 一般的に出力系は駆動電流を計測する検出回路やICを用いて、マイコンに逆入力して判定します。近年、エンジンの点火や噴射は、環境のため失火判定が必須となっています。’97頃のAT制御で、実施されていたかは怪しいところです。
  • EEPROMなど不揮発性メモリの搭載有無も調査を左右する要素です。学習値や故障が記録されるかされないかでECUの動作が変わってきます。今回の場合、学習値や故障が記録も必要はないかなとは思います。

次の記事では、これらの情報を元に、実車をチェックしていきます。

.NET DataGridViewで行ドラッグ移動を簡潔に行う

.NET DataGridViewですが行ドラッグ移動くらい標準でできるのかなと思っていましたができないんですね。IAWスキャンツールも面倒そうなのかやってない。以下のようにすると割とスマートにできました。説明はコメントをみてください。

       this.dgvParameters = new System.Windows.Forms.DataGridView();

        // For row drag
        private bool duringDrag = false;  // ドラック中かのフラグ
        private int dragFromRow = 0;      // ドラック開始行

        /* マウスボタンDownイベント / Start Row drag */
        private void dgvParameters_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) {
            // Remark: top of data row is 0
            if ( e.RowIndex < 0 && dgvParameters.RowCount < e.RowIndex ) {
                return;
            }
            duringDrag = true;
            dragFromRow = e.RowIndex;
        }

        /* マウス移動イベント Evrey Row drag */
        private void dgvParameters_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e) {
            if ( duringDrag == false ) {    // Not dragging
                return;
            }

            /* マウスイベントはたくさん発生するので、ここで時間でイベント間引きするとベスト */

            // Remark: top of data row is 0
            if ( e.RowIndex < 0 && dgvParameters.RowCount < e.RowIndex ) {
                duringDrag = false;     // Cancel dragging.
                dragFromRow = 0;
                return;
            }

            int dragToRow = e.RowIndex;
            if ( dragFromRow == dragToRow ) {
                return;             // 同じ行内ならスルー
            }

            // Delect and insert target row.
            DataGridViewRow from = dgvParameters.Rows[ dragFromRow ]; // 移動元行を取り出す
            dgvParameters.Rows.RemoveAt( dragFromRow );               // 移動元行をGridから削除
            dgvParameters.Rows.Insert( dragToRow, from );             // 移動元行をGridの指定行に追加
            dgvParameters.Rows[dragToRow].Selected = true;            // 行選択を移動

            dragFromRow = dragToRow;    // Set next drag row. 移動元行を現在行に切替え
        }
        
        /*  マウスボタンUPイベント / End Row drag */
        private void dgvParameters_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e) {
            if ( duringDrag == false ) {    // Not dragging
                return;
            }

            duringDrag = false ;    // End dragging
            dragFromRow = 0;
        }

このロジックだと、移動中動きを見せつつ、上方向の移動と下方向の移動も同じロジックで両立できます。実行結果は以下のとおりです。

LinageOSで画像編集がしたい( F-Droidを試す )

LinageOSでプレインストールされる画像編集ソフトは機能が少なすぎです。手書きメモは欲しいところです。いいものはないか探しました。

Google Playでは、広告や一部課金などよいものがみつかりません。そういえば F-Droid というアプリインストーラがデフォルトで入っていました。

開いて画像編集アプリを探します。

数は少ないですが多分広告はないでしょう。「好ましくない機能」が何なのでしょうか? その中から Image Tool BOX を選択しました。以下使ってみた様子です。

フォント入力 や 直線引きができると最高ですが、まずまず使えます。

F-Droid とはAndoridでも使えるらしいです。URLはこちら 無償で審査が緩めでアプリ公開したい場合によさそうですね。

SGP611でAndroidでSDカードに取得したバックアップを、LinageOS上で復元することは可能か?

ユーザさんより質問がありましたので記載しておきます。2つの意味があると解釈しました。


SGP611 の場合、ブートローダ から カスタムリカバリを起動できないため、ブート領域 に一旦 カスタムリカバリを書いて起動させ、OSをインストールしています。
OSによって、ブート領域 にブートローダに上書きされ、カスタムリカバリは消えます。

まずカスタムリカバリ を ブート領域 に書込む必要があります。
カスタムリカバリ から バックアップとリストアは可能なはず。
その後、ブート領域 に ブートローダ を再書き込みが必要だと思います。

ただし、弊方では試したことはないため、実際うまくいくかはわかりません。


Copilot に聞くと「ある程度の互換性があると」答えてくれました。

詳細や実際のところは不明です。

試すには、まず まずカスタムリカバリ を ブート領域に書込む必要があるでしょう。

カスタムROMセットアップ一覧INDEX【随時更新中】

弊方用に一覧をまとめました。元々、アプリデバック用に、余った端末のOSバージョンを自由に変更できないか?と始めたものです。

機種掲載URL備考
SC-02Dhttps://motoplus4.com/blog/?p=5655Android6相当、執筆中
SM-T800 / Galaxy Tab s 10.5 Wifihttps://motoplus4.com/blog/?p=6116Android13相当、要スクリプト修正
SC-03G / Galaxy Tab S 8.4https://motoplus4.com/blog/?p=1041Android10相当
SGP312 / Xperia Tablet Z Wi-Fi 32GBhttps://motoplus4.com/blog/?p=6914Android13相当
D2105 / Xperia E1 Dual https://motoplus4.com/blog/?p=5650Android7.1.2相当
※1
SGP611 / Xperia Z3 tablet Compact Wi-Fi 16GBhttps://motoplus4.com/blog/?p=6698Android11相当、リカバリ常時使用不可、GPS不可
※1
SGP612 / Xperia Z3 tablet Compact Wi-Fi 32GBhttps://motoplus4.com/blog/?p=3488Android11相当、GPS不可
※1
SGP621 / Xperia Z3 tablet Compact LTE国際版https://motoplus4.com/blog/?p=1157Android11相当
※1
SGP712 / Xperia Z4 Tablet Wi-Fihttps://motoplus4.com/blog/?p=6703Android11/12相当、要スクリプト修正
※1
SGP771 / Xperia Z4 Tablet LTE国際版https://motoplus4.com/blog/?p=4170Android11相当
※1
SO-05G / Xperia Z4 Tablet LTE docomo版https://motoplus4.com/blog/?p=1093‘24.4月以降セットアップ不能

※1 FMラジオは起動できないか日本の周波数帯を指定できない。