2015年3月25日水曜日

NMEA2000 データ解析を進める...

この記事は、釣りとは関係ありません。私の備忘録的な意味合いで残しておきます。

BF150AのNMEA2000仕様がわかった。
できれば燃料の残量などがわかれば良かったのですが、どうも取れない模様。

今のところわかっているのは、
PGN:127488 Engine Parameters (Rapid Update) 1秒に10回更新
エンジン回転数
エンジン吸気圧力
エンジントリム角度

PGN:127489 Engine Parameters (Dynamic) 1秒に1回更新
エンジン温度
エンジン電圧
燃料消費量
エンジン総運転時間
Status1
・Check Engine,Over Temperature,Low Oil Pressure,Charge Indicator,Rev limit exceeded,
Engine Emergency Stop mode,Water in fuel

この2つのPGNぐらい。あとはリーンバーン状態とかも見れるようですが、これはどうでもいいです。

PGN:127488
Field # Field Description
Provides data with a high update rate for a specific engine in a single frame message. The first field provides information as to which engine.
1 Engine Instance(8-bit unsigned integer)
*2 Engine Speed(16-bit unsigned integer)
*3 Engine Boost Pressure(16-bit unsigned integer)
*4 Engine tilt/trim(8-bit signed integer)
5 Reserved Bits(16 bits)
*2,3,4がBF150Aで取得できる値

PGN:127489
Field # Field Description
Used to provide real-time operational data and status relevant to a specific engine, indicated by the engine instance field. This message would normally be broadcasted periodically to provide information for instrumentation or control functions.
1 Engine instance (8-bit unsigned integer)
2 Engine oil pressure (16-bit unsigned integer)
3 Engine oil temp.(16-bit unsigned integer)
*4 Engine temp.(16-bit unsigned integer)
*5 Alternator potential(16-bit signed integer)
*6 Fuel rate(16-bit signed integer)
*7 Total engine hours (32-bit unsigned integer)
8 Engine coolant pressure(16-bit unsigned integer)
9 Fuel Pressure (16-bit unsigned integer)
10 Not Available(8 bits)
*11 Engine Discrete Status 1(16 bits)
*Bit 0: Check Engine
*Bit 1: Over Temperature
*Bit 2: Low Oil Pressure
Bit 3: Low Oil Level
Bit 4: Low Fuel Pressure
Bit 5: Low System Voltage
Bit 6: Low Coolant Level
Bit 7: Water Flow
Bit 8: Water in Fuel
*Bit 9: Charge Indicator
Bit 10: Preheat Indicator
Bit 11: High Boost Pressure
*Bit 12: Rev Limit Exceeded
Bit 13: EGR System
Bit 14: Throttle Position Sensor
*Bit 15: Emergency Stop Mode
*12 Engine Discrete Status 2(16 bits)
*Bit 0: Warning Level 1
*Bit 1: Warning Level 2
*Bit 2: Power Reduction
*Bit 3: Maintenance Needed
Bit 4: Engine Comm Error
Bit 5: Sub or Secondary Throttle
Bit 6: Neutral Start Protect
Bit 7: Engine Shutting Down
Bit 8-15: These bits are reserved
and should be masked when read
13 Percent Engine Load (8-bit signed integer)
14 Percent Engine Torque (8-bit signed integer)
*4,5,6,7,11,12がBF150Aで取得できる値

次にデータフィールドの形式ですが、
Define the way that the CAN 8byte data field and the 29bit identification field are used.
とのことで、Start of frame (1bit) の次に、Identification Field 29bits、Control Fieldときて、
0-8bytesのData Fieldがやってきます。これはPGNによって固定長です。
その後に、CRC Field、ACK Field、End of frame でデータフィールドが構成されています。

具体的には、

1bitStart of frame
29bitCAN ID
+->21bitPGN
+->3bitsPriority
1bitReserved
1bitData Page
8bitPDU Format
8bitPDU Specific
8bitSource Address
1bitRTR
6bitControl
0-64bitData
16bitCRC
2bitACK
7bitEnd of frame

Start of frameから、Dataフィールドを抜いたフィールドを足すと、1+29+1+6+16+2+7 = 62bitですね。
なんで64bitにしないんだろう....。End of frameを1bitにしたらいいやん。って思うのですが。なんかあるんでしょうね。

燃料の消費量しか取れなさそうですので、1秒に1回それが出てくるとしたら、積算して現在までの積算燃料消費量は取れそうですね。

Fuel Rate (16-bit signed integer) This field indicates the fuel consumption rate of the engine in units of 0.0001 cubic-meters/hour.

0.0001m3/hってなんぼやねんと思ったら、0.1L/H単位で出てくるようです。これが1秒に1回です。60秒分ためて、60で割ってから平均値を1分間の使用ガソリンとして積算しましょうか。

なんとなくできそうな雰囲気になってきました。私以外の誰も期待していないプロジェクトですが、黙々と続けていきます。






0 件のコメント:

コメントを投稿