ECUデータ読み出しその後

手が空いたときにちょこちょこと進めてきたRover Mini 1.3i のECUからどデータ読み出しプログラム,一段落しました。macOSで動かす IoT アプリを関数プログラミング言語Haskellで作るというかわった取り組みです。

これまでの経緯

もともとは,自分のMini 1.3i で出ている不具合の原因究明の参考情報をとりたいがためにはじめました。不具合は,具体的に はアイドリング中にエンジン停止する不具合が時々発生している他,アクセルを踏み込むと,特に上り坂で1800rps付近でエンジンが瞬停(?ノッキング?)するような現象が雨の日や標高の高い山間地でよく発生するような状況です。

  • 下記のCollin Bourassa氏のページで掲載されていた情報をもとに,自分のMini 1.3iに搭載されているECU接続用のUSB-シリアル変換ケーブルを作成した。変換チップ付きUSBケーブルは電子工作ではおなじみ秋月から購入し,自分で電線をはんだ付け。またECU側からの信号線はコネクタは通販で大垣の某事務用品店から購入,電線は大須の電気街で耐熱電線を購入して,自分ではんだ付け。
  • 上記接続ケーブルを使い,MacBook Airにのせてある仮想ソフト上のWindows XP/10 にてMEMS Gaugeを動作させることができた。
  • とりあえず,この環境で,しばらくログを取ってみた。上記の不具合との関連はわからないが,時々,各センサの値がおかしな値となるほか,バッテリ電圧も降下する様子。また,突然コネクトが切れ,再接続をしなければならない現象も発生。かなり電装系にトラブルを抱えている模様。
  • まずは,しばらくテスタを車内に持ち込み,シガレットプラグで電圧をモニタリング。当初は特に不具合はなかったが,そのうちエンジンの回転数に合わせて電圧が比例して変化する現象が発生。修理業者さんに見てもらったところ,発電機の定電圧化装置が壊れていたので修理。
  • エンジン停止が頻発したため,一時期,修理業者さんに長期入院させる。この頃,業者さんも発電機交換やECU点検・交換など様々な取り組みをしていただいたが,現象はおさまらなかった。鉄製の部品に穴の空いた場所を電線が走っており,その部分の被覆が剥けているのを見つけていただき,補修していただいた折はしばらく現象はおさまったが,その後復活。
  • また,ECUのコネクタ部分の接触が悪くなっているかもと爪をおこしていただいたりした後,やはりしばらく現象はおさまったが,その後復活。
  • 修理業者さんいわく,動力系に不具合はなく,この年式にしては状態が良いとのこと。
  • 毎回,車中にMBAを持ち込み,仮想ソフトを立ち上げ,Windowsを走らせ,USBポートをWindows側に接続し,MEMS Gaugeを立ち上げ,接続させ,ログをとる,という一連の作業をだんだんわずらわしく思うようになり,macOSのTerminal.appで直接動くものを作ることに。macOSで動けば,Raspberry Piに簡単に移植できるだろうから,気軽に使えるようになるだろうという目論見。
  • どうせやるなら新しいことに挑戦ということで,関数型言語Haskellで作ることにする。IoTと抽象化・遅延評価などというHaskellの特徴はあまり相性が良いというわけではないが,だからこそ誰もそんなにやらないだろうということで挑戦。
  • HaskellでUSB−シリアル変換ケーブルの通信をするのにOSのシステムコールを使うかとも思ったが,serialportというライブラリをHackageで見つけ,これを使うことに。まだHaskell環境に慣れていなかったため,当初はうまく自動で組み込めず,ソースを自分のプログラムのソースに移して動作させ始めた(その後,パッケージ管理の仕組みを学んで,外部ライブラリとして管理できるようになった)。
  • 時間の合間合間を見てMEMS Gaugeのソースを参考にしながら接続アプリを開発。当初は初期化コマンドは通ったが,コマンドに対する反応をうまく拾えなかった(4バイト読み込み指定でも2バイトしか拾えないなど。ECU側が数10MHzで動いているし,9600bpsという速度なので,タイムアウトの設定かといろいろ変えてみたが,結局,1バイトずつ読み込むことで解決)。
  • コマンド7Dで得られるデータ数が,ずいぶん少ない14バイトであることが判明(MEMS Gaugeは32バイトを設定している)。MEMS Gaugeのサイトはある程度年式の新しいモデルに対応していたが,こちらは1992年に買った,クーラー付きの日本モデルであり,別のサイトで見るとECUのモデル番号も桁数からして違っている(うちのMiniのECUモデルを表す4バイトの値は39 00 00 5Cという値であり,おそらく部品番号 MNE10078 の, Manual  SPI – Japan – Cooper 向け)。

ECUのログを見ると2016年4月3日のものが残っていたので,遅くともその頃から実際に試行錯誤していたはずだが,記事として出てくるのは2016年から。Amazonの注文履歴では2013年に入門Haskellを,2014年にはReal World Haskellを,2016年にはRaspberry Pi 2Bとディスプレイを発注した記録が残っている。MEMS Gaugeのタイムスタンプは2016年2月。また,非公開の書きかけ記事で関数型言語プログラミングのデザインパターンに関するものが2015年5月2日付けで見つかった。HaskellをECUデータ読み出し用に使おうとしだしたのは2015年から2016年にかけてか。

以下,魚野のサイト内ページです。

Androidで動くPDAのGeminiや,Windows10で動くGPD Pocket でありもののソフトを動かしてもよいのだけれど,ログを解析するのにやっぱりmacでやりたいのと,日本仕様ECUの対応を組み込むのが楽という点で,自作を続けます。

今後の予定

  • パフォーマンス計測と改善。現在は80と7Dのデータを読み込んで表示する1周期に400ミリ秒程度。非同期IO・マルチスレッドにしてもよいのだが,どうせデータを待っている間にmac側がすることもないので,シングルスレッドの基本線は変えない予定。改修はHaskellのチューニングの勉強として,読みづらい表現の変更や例外処理の改善(ByteStringでindexの指定を間違うとHaskellといえど実行時エラーで止まってしまう—止まってしまうのは黙って意図しない処理が行われるよりよっぽどマシなのだが—のでその対策をきちんとする)など。
  • 上記と関連するが,ちゃんとHaskellらしい構造に。今はファイルハンドル情報(を含んだSerialPort型の情報)をあちこち持ち回っているが,本来,カプセル化すべき。文字列の++演算も遅いだろうし,メモリリークの現状も把握できていない。たかだか1回あたり数十バイトの情報を保持するのにByteStringを多用してループをまわしているので,かなり効率の悪い構造になっていてガベージコレクションの時間もかなりとなれているのではと想像する。
  • 出力はcsv形式なので,これをもとに別途GUIを使った表示の仕組みを用意する。本体がHaskellなのでElmを活用?FRPを使ってGUIにもHaskellを使う?昔ながらのcursesなどにしてしまう?
  • Raspberry Pi と得体の知れない互換ワンボードが用意してあるので,そちらで動くようにHaskell環境,OS環境,ディスプレイ環境を整え,車内に常時備え付けられるようにする。ケーブルは今の半自作USBシリアル変換ケーブルをそのまま転用。
  • 広域低電力WANなどの利用で1992年式Miniをコネクティッドカーにする?
  • 関数型言語でのIoT対応について,何かしら発展の方向性を考えてみる(たくさんのセンサからいろんなデータが来て,それを処理していく。また,センサからデータを拾う頻度がまちまちになるだろう。そして,データの処理について,おそらくは柔軟にユーザーに変更できるようにしたくなるだろう。
  • モナドなどは概念をある程度理解し,使えるようにはなった(作れるまでには至っていない)ので,Haskellでのモナド,並行並列処理,GUI,DSL,FRPを使いこなせるように。
  • また,関数型言語プログラミングでの抽象化やモナドなどの考え方は,生物の意識という問題と何かしら関係がありそうな気がするので,それを検討してみる。

参考にした資料など

ECUとの情報のやりとりのプロトコル等

きっかけは忘れましたが,このプロジェクトを始めるに当たり,大いに参考になったのは,独自解析でRover MiniのECUからの情報を読み出すプログラムを公表していたColin Bourassa氏のページ。

  • Rover MEMS 1.6 diagnostic Protocol以前はとある大学のサイトに掲載されていたColin Bourassa氏によるRover MEMSの診断プロトコルに関するページ。今はbearinghead.comというドメインに掲載されている(記事の掲載日時は2014-04-21となっているが,2015年6月と12月に追記されている)。オープンソースで無料の診断情報ソフト(MEMSGauge)やライブラリ(librosco)が紹介されている他,接続用のシリアルケーブルの作り方(利用するUSBシリアルチップやコネクタの規格・入手先情報を含む),ECUのプロトコルなどの詳細が紹介されている。このページがなければ,今回のプロジェクトはなかった。
  • MEMS Diagnostics (Google Group) … 上記サイトからリンクされている。2015年に開設された模様。
  • MG Rover MEMS Modular Engine Management Explained (ビデオ)…最近見つけた,おそらく販売店向けなどのために作られた技術解説ビデオ。ECUがどんな情報をもとに何を制御しているかを簡単に解説している。
  • Display/diagnostics utility for Rover MEMS 1.6 ECU…github内にあるプロジェクト
  • MEMS 1.6/1.9 ECU diagnostics…android用の診断ソフトを紹介している。androidは興味の対象外なので一応あるということだけ知っておく。

シリアル通信について

かつて学生時代,パソコン通信華やかりし頃の1980年代後半,PC-9800シリーズなどのDOS上でTurbo Pascalや,Pascalを開発したWirthが後継として開発した言語,Modula-2を使って端末エミュレーションプログラムなどを作っていました。ですのでシリアル通信の大枠は理解しているのですが,今回はmacOSというUnix系のOSで,しかもUSBポートを通じてのシリアル通信ですので,いろいろよくわからない点があります。そこでまずはLinux Serial HOWTOなどであらためて基礎から勉強してみました。

その他見つけた情報

車のSNSサイトみんカラや自動車販売・修理業者さんのサイトに,Androidoのソフトと自作ケーブルを使った接続事例,市販されているらしい簡易モニタでの診断事例が時々紹介されている。

そろそろガソリンエンジン車の終焉も近いでしょうし,カーシェアリングなども東京ほどではないですが名古屋でも充実してきつつありますので,いつまでMiniを所有し続けるのかはわかりません。そもそもデータを吸い出しても400ミリ秒単位では,現在出ているような瞬停みたいな現象や前触れのない回転数の低下の原因究明に役立つものでもなさそうですが…。まぁ工学部出身の元エンジニアとしては,こういう技術探求がしたくなるのです。

 

 

OmniFocus 3 for iOS – OmniFocus 2 for Macとのデータ互換性

OmniFocus 3 for iOS のデータがOmniFocus 2 for Mac のデータとして使えるかが公式サイトに出ていたので,自分のために要約。結論としては使える。但し,いくつか注意点あり。元になったOmni社のページ「Using OmniFocus 3 for iOS with OmniFocus 2 for Mac」はこちら。現地時間2018年6月7日版に基づく。 “OmniFocus 3 for iOS – OmniFocus 2 for Macとのデータ互換性” の続きを読む

20150403 研究会に出席

本日は診断士仲間の研究会,グローバル・ビジネス研究会(旧国際ビジネス研究会)に出席してきました。昨年度から今年度にかけてのテーマは海外でのサービス業展開の支援。関係者である専門家の方2名,診断士仲間3名の計5名でビジネスアイディアについて,活発な議論が2時間繰り広げられました。

本日の段階ではこれまでの数回の議論を踏まえて固まってきた簡単なビジネスモデルについて,活用できる経営資源をどう利用するかというアイディア出しが行われました。参加した5名の背景がそれぞれかなり違うことから,それぞれの経験を踏まえた鋭い指摘がいくつも出され,議論が急速に深まり,事業の実現の見通しに対する印象も,ずいぶん良くなりました。また,参加者からも,たいへんよい議論だったとの感想が多くありました。

次回は連休明けの5月8日の開催を予定しています。

「読書メモ」安心社会から信頼社会へ

今回とりあげるのは,安心社会から信頼社会へ―日本型システムの行方 (中公新書)。2010年12月の課題本としてアウトプット勉強会(読書会)で取り上げられ,魚野はファシリテーターをつとめてきました。

会では,個人で仕事をしている場合と,チームで仕事をしている場合とで,信頼社会へのシフトの受け止め方が違っていたのが印象的でした。また,ヘッドライト型,地図型,いずれの知性も必要なのではという意見,安心社会が本当にくずれるのか,この点,課題本の論旨には説得力に欠けるのではといった意見,同じ著者の近著まで読んで検討したという報告,信頼社会に動かす誘因はなんだろうという疑問,日本社会を論じたものか,日本人論だったのかという疑問,来る社会に備えてスキルを磨きたい,あるいは自分のできることをしたいという決意表明など,いろいろと話が出てきました。

以下,うおの個人の読書感想文です。

信頼社会にシフトしていくだろうという論旨には共感。ただし,論拠に説得力あることをもっと書き込むべきだったと思う。論旨展開に対する違和感は,研究費取り扱いの非効率(p.5)に対する説明ですでに感じた。真因は間違いを許さない行政の不必要なまでの緻密さ要求(不寛容)であって,不信ではないのでは(不信が真因なら,とるべき対策は厳格な検査)。ところどころ出てくる実験結果の考察も,相関関係と因果関係を混同しているとまではいわないが,逆と対偶の問題があるのではと思う(具体的な懸念箇所は失念しました)。

信頼社会にシフトしていく動因を書き込むべきだったと思う。うおのが考える要因は,国際化,IT化,少子高齢化,新興国(特に中国)の勃興で,日本が,企業,農林漁業者,政府,個人,など社会のあらゆる面で,意図的,非意図的を問わず,海外とのつながらざるを得ない,故に,海外(*)での標準である信頼社会に移行するのが,日本が生き残るにはベターな選択,というもの。

*中国は安心社会型だという著者の近著の主張がメンバーから紹介されたが,その通りと思う。個人個人の主張は激しいが,企業や同郷といった属する集団とその外部との接し方の違いは,中国が日本と同様,近代的自我ではなく,封建的自我を持っていることを示すと思う(近代的・封建的自我の表現は魚野の勝手な造語。自我の壁が属する集団にまで広がっているのをなんて言うんでしたっけ?)。

近年進められてきた情報公開と手続きの透明性確保は,こうした社会学での成果を取り入れていいたのかと得心。でも,なぜこの二つが社会的不確実性を(今までの集団内での談合よりも)減らすことができるのかということについて論拠が示されていないので,論旨に共感,でも消化不良。

 著者は最後のまとめで,暗黙のうちに,日本やアジアが集団主義という見解をとっているが,この点は個人的には疑問。歴史的には個人主義の時代もあったのではと思うし,武士の倫理は個人主義的では,という意見。十七条憲法の「和」の精神も,集団主義の主張ではなく,動乱期を乗り越えて単に平和国家に移行したかったのではと思う(調べてないので,根拠はありません)。

 読書会での進行は,少し誘導的だった面があったかなと,この自分の意見を書きつつ思いました。

うおの

矢場町近辺にて

午後から,久屋大通で開かれていた中国春節祭りに知人とでかけてきました。流石に雪はふらなかったとはいえ,今日は結構寒かったのですが,人出はすごかった。知立の山車文楽とからくりとか,雑技とか,催し物も面白かったです。

いろいろ収穫がありましたが,中国銀行の名古屋支店ができ,名古屋でも銀聯カードをつくることができるようになったとのこと。中国に旅行や出張の予定がある方は,口座をつくっておくと便利だと思いますよ。

他にはイーサネットケーブルを買ったり,アジアン雑貨店の閉店セールを覗いたり,粉ミルクの相場を調べてみたり。何をしていたかというと,街中を歩きながら,中国語の勉強を二時間ほどしてきたのです。

[日記]盂蘭盆

 世間はすっかり盂蘭盆休暇に突入中。が,しかし,小生は本日もフルタイムで案件関係の仕事や案件発掘の企画でフルタイム稼働。明日から月曜日にかけては集中して大学のほうの成績づけとその登録を行う予定。

 これだけ忙しく仕事をしているとあれこれ悩む暇もなくていいのですが,これでいいのかなという気もしないでもありません。自分のしたかったことは何か,するべきことは何か。電話やメールなどが少なくなると,そういう自分を振り返る気持ちに自然となるのでしょうね。特に,一人暮らしをしていたり,外国で生活していたりすると,そんな気持ちになりやすそうです。

 そんなとき,どうするか。目標づくりやその実現計画づくりを想像したり,紙に書いてみたり(パソコンを使うことが最近は多くなりましたが)。要は悩んでいることを頭の中から取り出して,他人みたいにながめてみることがよいでしょう。

 中期的な目標として,私には二つの課題があります。まわりからはもうあきらめたのかと最近よく言われますが,いやいや実は,二つとも,忙しい生活を送りつつも準備や努力は継続中です。一旦決めたことですから,多少回り道をしていたとしても,見方を変えると,より成果の大きいゴールにより楽に近づくことができるのだととることもできます。

 そういうわけで,私の鞄には,たいていその目標実現のための本や資料が入っていて,いつも重いのです。

[日記]覇王別姫

京劇観劇。知人の留学生と,覇王別姫を見に行ってきた。やはり,現場で見るのは迫力が違う。

以前,昆劇として野猪林をテレビ番組で見たことはあったが,個人的にはちょっとなじみのない水滸伝からとられた題材で、中国語もまだ初心者レベルだったこともあって,よくわからないという印象だった。

今回は違った。馴染みのある項羽と劉邦の物語。映画「覇王別姫」もどこかへの海外出張の際に見ている。中国語のレベルも中級の上くらいには上がった。一緒に見に行く人とちょっとした文化論議や評論をするという楽しみ(プレッシャー?)もあった。そのために,「京劇の世界」なる小冊子も買い込んで、予習をみっちりした。

そんなこんなで,午後は仕事を早めに切り上げ(るつもりだったのが,仕事をたのまれて,実際に同行者に会いにいけたのは約束の時間ぎりぎりだったが),愛知県芸術劇場へ。改装されてからこの大劇場へは初めて入る。港湾会館や市民会館,厚生年金会館,鶴舞公会堂など、結構あちこちの舞台に立ったことはあるが,大劇場へは観客として入ることすら初めてで,欧風のオペラ劇場の様な上階の張り出し席があるのにびっくりした。

さて,京劇である。3列目の席で、少し端の方ではあったが,舞台の振動が直接伝わってくる。同行者が用意していてくれたオペラグラスで俳優を観察すると,目の動きや服装の文様がくっきりはっきりと目に飛び込んできて,プロの仕事に感動の連続だった。

なにより,色遣いが見事だった。計算し尽くされて居るであろう配色がどんどんきりかわっていく。マスゲームとオペラを足して二で割った様な,飽きさせない舞台である。

残念ながら、名古屋の観客は自分も含めて京劇慣れしていない。おそらくは声をかけるところだろうな,拍手をするべきだろうなというところでも,最初の頃は観客は身じろぎもしなかった。

しかし,場が進むにつれ,どんどんと舞台と観客の一体感が進んできた。特に,観客席の後ろの方から,しばしば「好(はお!)」という京劇独特のかけ声がかかる。歌舞伎で俳優の屋号を叫ぶタイミングが難しい様に,これも常連の観客の見せ場なのだろう。

項羽の気は山を蓋うという歌のところで,この劇で唯一,琴が奏でられた。一番の山場だ。同行者がこっそり,項羽の有名な詩だと教えてくれる。楽曲で,詩歌で,日中が古代中国という文化を共有しているなと感じる。

そして終場。項羽の自刃で唐突に、劇は終わった。ちょっと、西洋的なおわりかたかな。もうひとつ気になった点。字幕が出ていたのだが,虞姫は奥さんという扱いだった。同行者と,じゃあなんと訳すべきかと,首をひねってみた。ぱっと思いつかない。徳川政権時代なら、部屋の名前で呼んだりするのだろうけれど、項羽は転戦つづきで,それもないだろう。

はてさて,まだまだ日中の掛橋となるのは難しい。でも、新たな発見にあふれた,楽しい道でもある。

[日記]勉強会2回

本日は勉強会,二つに参加。一つは食の安全研究会定例会。診断士仲間による,農業や食品産業のコンサルティングの研究会。なんと,本日会費の支払日だったとか。まったく気がつかず,身一つで参加したため,次回まで支払いを免除してもらうことにしました。いかんいかん。

もう一つは,農商工等連携の勉強会。こちらは最近連携拠点のコーディネータに就任された診断士さんに,いろいろと実務上の注意ポイントなどを情報提供。パンフレットなどを読むことも大事ですが,やはり法律や,それに基づいて出された基本方針だとか,省令だとか,いろいろと関連情報を収集,読みこなす力が大事だなと思います。有機化合物やコンピュータ,食品などモノを相手にしていた頃にはせいぜい食品表示だとか,規格,輸入枠などで関わってきたことではありますが,今更ながら,法律経済は実社会では重要なんだなぁと思います。

診断士としていろんな方や組織にアドバイスをする立場ですから,しっかり勉強しないとね。

[日誌]全員合格

教え子たちが先月受験した販売士三級に全員無事合格したとのこと。受け持った全員が受かったのは,これで2回目。うれしいものです。

これまで全員合格から全員受験せずまでいろいろありましたが,結局は指導する側ではなく,本人たちがいかにやる気をもって挑戦してくれるかにかかっています。こちらとしては興味をもってもらったり,自信をつけてもらったりすることを,数少ない授業時間を通じて働きかけるのみ。

[日誌]帰国

上海から帰国しました。今回は中国の法律の本を鞄いっぱい買い込んできました。中国語の勉強もかねて,読み進めています。

現地では街を歩き回ってばかりいて,靴底がずいぶんすり減ったような気がします。極力階段を使うようにしましたが,日頃の自転車のりまわしや階段通勤の成果を発揮でき,足が痛くなった以外はそれほど身体に故障はありませんでした。靴の方は明日,買い換えをしなくては。

写真もそこそこ撮りましたので,今後いくつか掲載しようと思っています。

上海万博海上予定地近くの橋から上海の街を見る
上海万博海上予定地近くの橋から上海の街を見る
上海万博海上予定地
上海万博海上予定地
上海黄浦江のほとり
上海黄浦江のほとり
電子体重計による体重測定屋さん 於上海
電子体重計による体重測定屋さん 於上海
200902 東方明珠電視塔
200902 東方明珠電視塔