(6次産業化事業者を含む)食品事業者HACCP対応について

五輪開催までに日本で食品を扱う全事業者をHACCP対応にするという政府の構想については、正直言って零細事業者も含めてHACCP化するって本当にできるのかなぁと懐疑的に見ていましたが、結局落とし所としてこんなふうになるんだねという姿がほぼ固まり、これならできそうかなと思っています。また、元食品メーカー品質管理担当としてHACCPやISOの認証に携わった者としては、これを機に食品衛生管理の水準を上げる一翼を担うべきかなとも思います。今回、業界団体の作成した手引書が重要な要素となりますが、業界団体に属していない事業者さんへの周知は関係者の大変な苦労が今後あろうかと思います。

というわけで最近は食品関係の生産・供給事業者さんに会うごとに説明しているのが以下。

 ただし、魚野が理解している内容と、行政や司法の見解が異なっていたり、
最新の情報をおっかけきれていない可能性はありますので、これらの説明に沿って
対応された結果、何らかの損害を受けたとしても、魚野は一切の責任を負えません
のであしからずご了承ください。必ず関係機関に最終的な確認をとってください。

小規模事業者さん向けに単純化して言えば、以下のとおりです。

  • 取り扱っている食品に応じて、該当する業界団体が作成し、厚生労働大臣が承認した手引書(厚生労働省のサイトに掲載)を参考に、
  • 自主的な衛生管理計画をたて、記録書式を定め、(計画・記録書式とも、例が上記手引書に掲載されています)
  • 日々の運用を記録してください。
  • これを機に、ぜひ衛生管理のレベル向上を図ってください。お金をかけなくてもできることはたくさんあります。
  • まずは厚生労働省のサイトでHACCPのパンフレットQ&A手引書を見てください。

計画のたて方がよくわからない、CCPをどこにするか、どのように管理すべきかがわからない、これを機に衛生管理の水準をあげたいがどうしたらいいか聞きたい、HACCP対応するための支援情報が聞きたい、など、詳しい話を聞いてみたいという方は、各地の保健所やよろず支援拠点(愛知県のよろず支援拠点名古屋豊橋の二箇所)、各都道府県や政令指定都市の農政課さんや,都道府県ごとに設置される6次産業化サポートセンター(愛知県の事業者さんの場合は愛知県6次産業化サポートセンター(ただし、年度初めは未設置。5月くらいから稼働?))や農林水産省が都道府県ごとに設置する農業経営相談所さんなどに相談してください。

0.基本情報

厚生労働省のHACCPのページをご覧ください。特に、Q&A手引書が参考になります。

1.新しい仕組みを知っておいていただきたい事業者さんの範囲

  • 本来のHACCPの思想からすれば、基本的には加工・流通・販売などで食品を扱う事業者さん全てです。従来、食品衛生法上の営業許可が必要なかったような事業者さんも対象になります。
  • ただし、農家さんなど一次事業者さんは、6次産業化や農商工連携など自ら加工したり小売したりしていなければ、管轄が農林水産省となるので、対象外。供給先がどのような知っておくのみでOK。有機JAS認証やGAP認証などをとられたか、とろうとされている事業者さんは、合理的に衛生計画をたて、第三者に説明できるようにするというHACCPの基本的な考え方はこうした認証規格と共通ですので、いろいろ参考になる情報が得られるかと思います。

2.求められるHACCP対応の内容

  • 大手・中規模事業者と小規模事業者では求められる水準が異なります。大手〜中規模は、「HACCPに基づく衛生管理」が行われているか、小規模は、「HACCPの考え方を取り入れた衛生管理」が行われているかを問われます。
  • 大小いずれにしても、自主的に、合理的な衛生管理計画をたて、それを実施し、記録することで、衛生管理の「最適化」、「見える化」をしていこうということになっています。
  • 衛生管理計画をたてる際は、HACCPの7原則・12手順に沿って行うことになります。具体的には商品説明書(扱っている食品がどのような材料を使い、どのように加工し、どのように流通し、どのように消費者が扱うかを想定して記述したもの)、加工プロセスや施設の配置図、商品や従事者の動線図などを準備し、何をどのように管理すれば食品衛生の事故(危害の発生)を防ぐことができるかを決めます。殺菌や密封など特に重要な管理はCCP(Critical Control Point;重要管理点)と呼ばれ、連続監視や記録が求められます。
  • 小規模事業者は、自主的に衛生管理計画をたてよとと言われても、殺菌や危害防止の知識・経験が乏しいことが多く、なかなか自主的にというわけにはいかないと思われます。そこで、今回の制度では、小規模事業者は、業界団体が作成し、厚生労働大臣が定めた手引書を参考にしながら計画づくりをしていくことになります。
  • 新たにHACCPの認証などをとる必要はありません。基本的には、営業許可の新規取得や更新などで、、HACCPに基づいているか、について、後述のような方法で点検するという形です。
  • 中小事業者と大手とでは異なります。小規模事業者の範囲は、まだ最終決定ではないようです(Q&A 問3参照)が、本日(2019年4月6日)時点では、Q&Aに以下のように記載されています。
① 小規模な製造・加工事業者、
② 併設された店舗で小売販売のみを目的とした菓子や豆腐などを製造・
加工する事業者(※1)、
③ 提供する食品の種類が多く、変更が頻繁な飲食店等の業種(※2)、
④ 低温保存が必要な包装食品の販売等一般衛生管理のみの対応で管理
が可能な業種
などを想定しています。
※1:菓子の製造販売、食肉の販売、魚介類の販売、豆腐の製造販売等
※2:飲食店、給食施設、そうざい・弁当の調理等

2 小規模事業者の規模に関しては、事業者団体が作成した手引書で想定され
ている規模等を踏まえ、「食品の製造又は加工を行う者のうち、一の 事業所
において、食品の製造及び加工に従事する者の総数が 50 人未満の者」とい
う案を提示し、「食品衛生管理に関する技術検討会」において検討を進めて
います。

3.対応しなければいけないのか

  • 全事業者対応必須です。ただし、小規模事業者さんが行わなければならない内容は、決して難しいものではありません。恐れず挑戦してください。
  • 小規模事業者の方でも、輸出に挑戦していたり、百貨店・高級スーパーで販売していたり、高級レストランに納品したりしている場合、手引書にかかれている以上の内容を目指されると良いと思います。ブランド化の一環として、是非挑戦してください。

4.支援してもらえるのか

  • 前述の通り、計画のたて方がよくわからない、CCPをどこにするか、どのように管理すべきかがわからない、これを機に衛生管理の水準をあげたいがどうしたらいいか聞きたい、HACCP対応するための支援情報が聞きたい、など、詳しい話を聞いてみたいという方は、各地の保健所やよろず支援拠点(愛知県のよろず支援拠点名古屋豊橋の二箇所)、各都道府県や政令指定都市の農政課さん,都道府県ごとに設置される6次産業化サポートセンター(愛知県の場合は愛知県6次産業化サポートセンターただし、年度初めは未設置。5月くらいから稼働?)や農林水産省が都道府県ごとに設置する農業経営相談所さんなどに相談してください。無料で相談にのってもらえます(但し、保健所はチェックするという立場上、説明されたことについて判断はしますが、助言はしてくれません)。
  • 資金面での支援については、2023年まではHACCP支援法(農林水産省管轄)に基づいた優遇融資制度があります(但し、高度化計画を作成して承認を受けるなど、いろいろな条件があります)。

おかみフェスタ,近鉄百貨店四日市店で開催

先日,東京日本橋の #みえテラス で行われた #座・みえ #おかみフェスタ が,明日8/10(土),近鉄百貨店四日市店の #伊勢路テラス で開催されます。10:00から18:00まで。
http://okamifesta-mie.com/?page_id=118

スライドショーには JavaScript が必要です。

#おかみフェスタ は三重県の元気な女性事業者さんのあつまり。 ものすごい おかみを自称する元気なおかみの面々を見てみたいという方,お近くの方,ご興味のある方は明日はぜひ近百へ!

おかみ公式サイトの告知

今回の参加事業者さん一覧(順不同)

MEMSプロトコルのページ

MEMS Monitor作成の際に参考にしているMEMS のプロトコルが記載されているサイト内でのURLが変更されていた1。サイトのリニューアルにともなうものらしい。

新URL http://www.bearinghead.com/car_stuff/mems_interface/

MEMSとは

MEMSとは, Modular Engine Management System のことで,Roverグループが自社の車の車載制御システムとしてモトローラグループと開発し,1990年代に使用していたもの。魚野が1992年に新車で購入していまだに乗り続けているRover Mini Cooper 1.3iも搭載している。

MEMS Monitorの現状

関数型言語Haskellの学習を兼ねて作成していたMEMSデータの常時読み出し・表示プログラムは,概ね動作するようになった。実装済みの機能としては,1)ECUデータやエラーデータの読み出しと表示(概ね0.4秒サイクル),2)ECUのエラーリセットコマンドの発行,3)ECUコマンド(アクチュエータ操作)の発行の3つ(ただし,3)についてはすべてのコマンドを実装したわけではなく,動作確認のためいくつか実装したのみ)。

(ミニが修理が終わってもどってきたら,動作中の画面を撮影して掲載します)

実装計画中の機能

  • 重ね合わせグラフでの表示
  • 冷却液温度急上昇などの異常検出と警告表示
  • IoT用のSIMで走行中のデータを順次クラウドに送信

動作環境としてはmacOS(High Sierra, Catalina),Haskell(stack)を利用して検証しており,現在,Raspberry Pi(Paspberian)環境下でも動作させられるかの実験中。実験が成功すれば,ラズパイを車載し,モバイルバッテリーあるいは12V電源の変圧で走行時は常時データを表示・採取できるようにしたい。

読み出しているECUデータ

ただし,うちのECU(型式不明)は,駐車またはニュートラルの信号がエアコンオンオフの信号になっている。

    engineSpeed :: Int   -- Engine speed in RPM (16 bits)
  , coolantTemp :: Int   -- Coolant temperature in degrees C with +55 offset and 8-bit wrap
  , ambientTemp :: Int   -- Computed ambient temperature in degrees C with +55 offset and 8-bit wrap
  , intakeATemp :: Int   -- Intake air temperature in degrees C with +55 offset and 8-bit wrap
  , fuelTemp    :: Int   -- Fuel temperature in degrees C with +55 offset and 8-bit wrap. This is not supported on the Mini SPi, and always appears as 0xFF.
  , mapSensor   :: Int   -- MAP sensor value in kilopascals
  , battVoltage :: Float -- Battery voltage, 0.1V per LSB (e.g. 0x7B == 12.3V)
  , throttlePot :: Float -- Throttle pot voltage, 0.02V per LSB. WOT should probably be close to 0xFA or 5.0V.
  , idleSwitch  :: Bool  -- Idle switch. Bit 4 will be set if the throttle is closed, and it will be clear otherwise.
  , unknown0B   :: Word8 -- Unknown. Probably a bitfield. Observed as 0x24 with engine off, and 0x20 with engine running. A single sample during a fifteen minute test drive showed a value of 0x30.
  , pnClosed    :: Int   -- Park/neutral switch. Zero is closed, nonzero is open.
                         -- Fault codes. On the Mini SPi, only two bits in this location are checked:             
  , faultCode1  :: Bool  -- : Coolant temp sensor fault (Code 1)
  , faultCode2  :: Bool  -- : Inlet air temp sensor fault (Code 2)
  , faultCode10 :: Bool  -- : Fuel pump circuit fault (Code 10)
  , faultCode16 :: Bool  -- : Throttle pot circuit fault (Code 16)
  , unknown0F   :: Word8 -- Unknown
  , unknown10   :: Word8 -- Unknown
  , unknown11   :: Word8 -- Unknown
  , idleACMP    :: Int   -- Idle air control motor position. On the Mini SPi's A-series engine, 0 is closed, and 180 is wide open.
  , idleSpdDev  :: Int   -- Idle speed deviation (16 bits)
  , unknown15   :: Word8 -- Unknown
  , ignitionAd  :: Float   -- Ignition advance, 0.5 degrees per LSB with range of -24 deg (0x00) to 103.5 deg (0xFF)
  , coilTime    :: Float   -- Coil time, 0.002 milliseconds per LSB (16 bits)
  , unknown19   :: Word8  -- Unknown
  , unknown1A   :: Word8  -- Unknown
  , unknown1B   :: Word8  -- Unknown
  , lambda_voltage:: Int  -- This lambda value is a calculated value (if it is the same as the British emissions test).     And a value of, say, 1.05, suggests it is 5% too lean.   But, if your oxygen (and CO and HC) readings are all good, then it suggests your high lambda reading is because of a leak in the exhaust wgich pulls in fresh air (and oxygen).     You could try starting your car when it is cold and put your hand over the exhaust pipe and look underneath to see if water is leaking from any if the joints. 
  , closed_loop'  :: Int  -- 0 : Open Loop, others : Closed Loop  
  , fuel_trim'    :: Int  

  1. 著作者の表記が当該サイトにはないので,誰がメンテナンスしているかは不明。当初は某大学のサイトに掲載されていたので,その大学の卒業生が運営しているのではないかと推測。 

stackとraspberry pi

raspberry pi で stack buildできなかった問題,解決

Rover Mini の ECUデータ読み出しプログラムを動作させるためにRaspberryPiを用意したのだが,Haskellのコンパイルがstackを使ってはできなかった。stackが使えないと,ライブラリの準備とかが大変。

発生していた問題

stack buildすると,アセンブラが,この機械語はARMでは使えないとのたまうエラー発生。

/tmp/ghc2452_0/ghc_6.s:44:0: error:
Error: selected processor does not support `movt r7,:upper16:stg_bh_upd_frame_info' in ARM mode
|
44 | movt r7, :upper16:stg_bh_upd_frame_info
| ^

原因と対策

原因はコンパイル時にCPUアーキテクチャがGHCに伝わらないstackのバグ

対策は海外サイトのブログを参考に,GHCの設定ファイルにアーキテクチャ指示オプションの追加。以下は上記の参考サイトに書いてあるものだが,実際にはGHCの8.6.3がインストールされていたので,適宜8.0.1を8.6.3に読み替え。

$ vi ~/.stack/programs/arm-linux/ghc-8.0.1/lib/ghc-8.0.1/settings
...
("C compiler flags", " -marm -fno-stack-protector -mcpu=cortex-a7"),
...

あとがき

しかし,一昨日,車室内で冷却液の噴出をやらかしてくれたRover Miniはあえなく修理にまわすことに…。当面,ラズパイによるECUのモニタリングソフトの出番は先です。

あとがきその2

古いラズパイ上でHaskellを走らせたりWiFiドングルを使ったりしているのですが,いくつか注意点がありました(現在は解決済みのものもある):
– apt-get で入れられる stack のバージョンが古い。現在はRaspberianのもとになるディストリビューションが変更されたためか,関係者のご尽力により普通に入れられます(ただし,前述のGHCのコンパイルオプションが渡されないバグに注意)。
– 大型のライブラリをコンパイルしたり,インストール直後の何もコンパイルされていない状態から大量のライブラリをコンパイルすると,メモリとディスク上のスワップ領域を使い切ってOSごと固まってしまう模様。恒久的にスワップファイルのサイズを変える方法恒久的にスワップファイルのサイズを変える方法その2一時的にスワップファイルのサイズを変える方法
– WiFiドングルにはドライバが必要(ただし,ヤマダ電機で購入したElecomのドングル(型式:●●)は最新のOSだと初期設定でそのまま動きました)。

車内ヒーターから冷却液噴出した92年新車登録のRover Mini,ただいま乾燥中。

そして午後は別の事業者さんを訪問

そして午後は別の事業者さんのところへ新商品開発の状況聴取と経営相談に行ったのですが,先程ご紹介したとおり,途中でコンビニに立ち寄って停車しようとしたら突然のラジエータ液噴出でびっくり。ちょっと皮膚が赤くなったくらいで幸い火傷もなかったですし,周りの方が心配して見に来たり車を押していただいたりしてありがたかったです。

水を継ぎ足して事業者さんのところまで移動はしましたが,漏れがかなりひどいので,ビショビショになった車内をしばし乾かしつつ,経営戦略会議。

冷却水漏れを起こしたミニ車内を乾燥中
冷却水漏れを起こしたミニ車内を乾燥中

車内の電線がやたら多いのは,開発中のミニのECUからデータをひろうモニタープログラムのため(ブレブレの画面が開発中のテキスト文字表示バージョン)。今回の一件を教訓に,冷却液温度の警告表示機能なんかも追加しなければ。

試作したRover Mini ECUモニタの画面
試作したRover Mini ECUモニタの画面

帰りは気晴らしに映画か外食かと迷いましたが,パスタに惹かれて外食に。

夕食のパスタ 大府駅前にて
夕食のパスタ 大府駅前にて

さて,栄養もとったので,帰宅します。映画は明日以降に。

 

三越に陣中見舞い

本日午前中は知り合いの事業者さんが三越星ヶ丘店に出店していたので陣中見舞いにいってきました。

ジャガード織というきめ細かな表現ができる織物の技術を使ったクッションとバッグを販売されています(オーダー・既製品の両方あり)。さすが三越でオーダー品の注文が多いとか。

Webでみているのと現物を見るのとでは存在感が違うなぁとあらためて感心。写真はメーカーさんならではの織りの工程を表現する仕掛品と生地色選択用の色見本。

オリジナル・バッグやクッションの色見本帳
オリジナル・バッグやクッションの色見本帳
ジャガード織を説明する仕掛品
ジャガード織を説明する仕掛品。

きれいに制御されている

Rover MEMSからのデータの読み出し,ちょこちょこと作り込みの甘い部分はあるものの,データは収集できるようになったので,今日の遠出の往復の際のデータを記録し,手作業で視覚化してみた。

これは豊田から名古屋へ移動した際のデータの抜粋。

灰色の幅ひろいデータは酸素濃度センサ値。数値で見たときはかなりばらついているんじゃないかと思ったが,グラフ化してみたらきれいに一定幅に収まっている。青はエンジン回転数,橙色は蓄電池電圧。一箇所,異常値(20V)がある。定電圧装置が故障しかかっているのかなと思ったが,その瞬間のエンジン回転数は863rpmなので,発電電圧がそれほど上がっているとも思えない。コイルタイムなるものも記録をとったが,みると,蓄電池電圧の上下に反比例して変動している。MEMSの解説文書によれば,インジェクタ方式の制御ではエンジン回転数とバッテリ電圧に応じて点火装置の通電時間を制御しているとのことなので,このことなのだろう。但し,その文書では3.0から3.5ミリ秒の範囲で制御しているとのことであったが,手元のデータでは4.58から6.17ミリ秒となっている。謎。

ちなみにエンジンルームでのコネクタと電線はこんな処理。

車内側は基盤むき出しです。

ひっかけて短絡しないようエポキシ樹脂で適当にかばってあります。

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ミリ秒単位では,現在出ているような瞬停みたいな現象や前触れのない回転数の低下の原因究明に役立つものでもなさそうですが…。まぁ工学部出身の元エンジニアとしては,こういう技術探求がしたくなるのです。

 

 

2018年度工業経営論 第08回

2018年6月6日 工業経営論08回。 テーマは価格戦略とチャネル戦略。

20180606工業経営論08質問一覧

一部教育実習生が戻ってきたため,受講者数も増加。ものづくり系の学科であるせいか,販路よりは原価に関心を持つ学生が多かった。例年,損益分岐点をこの回で紹介すると,興味を持つ学生が多いのだが,今年は経済全体,あるいは自動車やウェアラブルなど,注目を集めている産業の動向に関心がある学生が多い印象。