Truck Sensor Networks
Long-haul, reefer (cold chain) and tanker trucks: what is measured, on which bus, at what rate, how duty cycles shape the signals, which faults and events occur, and how to generate realistic synthetic telemetry for them.
1. Overview and operating context
This report covers three truck variants: long-haul tractor-trailers, reefer / cold chain (Thermo King / Carrier Transicold style refrigeration units) and tankers. Heavy-duty trucks expose most engine, drivetrain and brake data on a J1939 CAN bus at 250 kbit/s, which a telematics gateway reads and uplinks over cellular. Trailer-side data (EBS, TPMS, reefer unit, cargo door) is added through ISO 11992, BLE/RF sensors, or J1939 / RS-232 / RS-485 links.
Evidence tags used throughout: S backed by a cited source; K domain knowledge or engineering estimate stated in the research notes; Inference a conclusion drawn here from the notes and not stated in them. The research notes state that the fetched sources did not give J1939 scaling, so decoding must be verified against SAE J1939-71 / J1939DA. OEM reefer logging intervals and alarm codes were not found in sources; reefer numbers are [K].
Typical truck deployment facts: GNSS HDOP 0.7-1.5 on highway; reporting 10-60 s while moving and 1-15 min while parked; rural trucks see 3-10% of drive time without cellular service, in episodes of 1-30 min and some over 1 h [K]; a long-haul truck generates roughly 5-30 records/s and 10-60 MB/day as JSON (2-15 MB binary), about 300-1500 MB/month, as a planning figure [K].
2. Sensor inventory
2.1 Common J1939 signals (applicable to all truck variants)
| Signal | Unit | Typical range | Sample / report rate | Source bus (PGN / SPN) |
|---|---|---|---|---|
| Engine speed | rpm | idle 600-800; cruise 1100-1500; max 2100-2500 | 10-20 ms | J1939 PGN 61444 / SPN 190 (res 0.125 rpm) |
| Actual engine torque | % | 0-100 | 10-20 ms | J1939 PGN 61444 / SPN 513 |
| Accelerator pedal position | % | 0-100 | 50 ms | J1939 PGN 61443 / SPN 91 |
| Engine load | % | 0-100 | 50 ms | J1939 PGN 61443 / SPN 92 |
| Wheel-based vehicle speed | km/h | truck 0-90 | 100 ms | J1939 PGN 65265 / SPN 84 (res 1/256 km/h) |
| Brake / clutch / cruise switches | bool | on/off | 100 ms | J1939 PGN 65265 / SPN 597, 598, 595 |
| Engine coolant temperature | degC | 80-95 normal; alarm above 105-110; offset -40 | 1 s | J1939 SPN 110; PGN 65262 per J1939-71 (a Garmin list shows 65263, verify) |
| Engine oil temperature / pressure | degC / kPa | 90-120 / 200-500 (idle 100-200) | 1 s | J1939 PGN 65262 / 65263, SPN 175 / 100 |
| Fuel temperature | degC | 20-60 | 1 s | J1939 PGN 65262 / SPN 174 |
| Engine fuel rate | L/h | idle 1.5-4; truck cruise 25-40 | 100 ms | J1939 PGN 65266 / SPN 183 (res 0.05 L/h) |
| Instant fuel economy | km/L | 0-125 | 100 ms | J1939 PGN 65266 / SPN 184 |
| Fuel level 1 | % | 0-100; slosh noise +-2-5% moving | 1 s | J1939 PGN 65276 / SPN 96 |
| Total fuel used | L | monotonic | 1 s | J1939 PGN 65257 / SPN 250 |
| Total engine hours | h | monotonic | 1 s | J1939 PGN 65253 / SPN 247 |
| High-resolution vehicle distance | m | monotonic | 1 s | J1939 PGN 65217 / SPN 917 |
| Boost pressure / intake temperature | kPa / degC | 100-250 / 30-70 | 500 ms | J1939 PGN 65270 / SPN 102, 105 |
| Exhaust gas temperature | degC | 200-600 (DPF regen 550-650) | 500 ms | J1939 PGN 65270 / SPN 173 |
| Battery potential (24 V system) | V | 24-28.8 running | 1 s | J1939 PGN 65271 / SPN 168 |
| Ambient temperature / barometric pressure | degC / kPa | -30..45 / 80-105 | 1 s | J1939 PGN 65269 / SPN 171, 108 |
| DEF tank level | % | 0-100; warn below 15, derate below 5 (bus figures) | 1 s | J1939 PGN 65110 / SPN 3517 [S] |
| DEF tank volume / temperature | L / degC | 0-40 / freezes at -11 | 1 s | J1939 PGN 65110 / SPN 1761, 3031 [S] |
| DPF soot load / differential pressure | % / kPa | 0-100 / 0-30; regen when soot about 80% | 1 s | J1939 SPN 3719 / 3251 |
| Tyre pressure | kPa | cold 750-900 truck (US 100-110 psi); hot +10-15% | on change / 10 s | J1939 PGN 65268 (TIRE1) / SPN 241 (4 kPa/bit) [S] |
| Tyre temperature | degC | 20-90; alarm above 90-100 | on change / 10 s | J1939 PGN 65268 / SPN 242 [S] |
| Tyre location index | index | per wheel position | with TIRE1 | J1939 PGN 65268 / SPN 929 [S] |
| Tyre leak rate | Pa/s | 0-65 | with TIRE1 | J1939 PGN 65268 / SPN 1699 |
| Brake pedal position | % | 0-100 | 100 ms | J1939 PGN 61441 / SPN 521 |
| ABS active / ASR | bool | on/off | 100 ms | J1939 PGN 61441 / SPN 563, 575 |
| Brake air pressure | kPa | 700-1000; warn below 550 | 1 s | J1939 PGN 65274 / SPN 116, 117 |
| Axle weight / gross combination weight | kg | steer 5-7.5 t; drive 9-11.5 t; GCW 12-40 t | on change / 1 s | J1939 PGN 65258 / SPN 582, 1760; FMS provides axle weight [S] |
| Brake lining remaining | % | 100 to 0 over 80-150k km | 1-60 s | OEM / EBS (no PGN) |
| Transmission gear / oil temperature | gear / degC | 1-12 / 60-110 | 100 ms / 1 s | J1939 PGN 61445 / 65272, SPN 523 / 177 |
| Active DTC (DM1) | SPN+FMI+OC | list | 1 s while active | J1939 PGN 65226; TP.BAM when more than 1 DTC |
| Vehicle position | deg | lat/lon | 1 s | J1939 PGN 65267 / SPN 584, 585; usually from telematics GNSS |
J1939 raw value conventions: "not available" is 0xFF (1 byte) or 0xFFFF (2 bytes); error indicator is 0xFE / 0xFExx. Temperatures use a -40 degC offset at 1 degC/bit; kPa scaling varies per SPN.
2.2 Long-haul truck-specific sensors
| Signal | Unit | Typical range | Sample / report rate | Source bus |
|---|---|---|---|---|
| GNSS position, speed, HDOP | deg, km/h | HDOP 0.7-1.5 highway | 1 Hz fix; report 10-60 s moving, 1-15 min parked | Telematics GNSS (multipath at depots, tunnels, urban) |
| Cruise state, PTO, retarder / engine brake | enum | state | 100 ms | J1939 |
| Trailer EBS (brake pressure, axle load, ABS, tyre pressure, lift axle) | mixed | n/a | 100 ms [K] | ISO 11992 (125 kbit/s) [K] |
| Tachograph driving / work / rest, driver card | enum | EU: 4.5 h driving then 45 min break, 9 h daily, 11 h rest; US 11 h in 14 h, 30 min break after 8 h | 1 s | Tachograph CAN via FMS [S]; rules [K] |
| TPMS per wheel (10-18 tyres) | kPa, degC | cold 800-900; hot +10-15% | on change / 1-10 min | J1939 TIRE1 [S]; BLE / 315/433 MHz one-way RF sensors |
| Multi-tank fuel level | % / L | tanks 400-1000 L | 1 s; filter 10-60 s | J1939 / analogue |
| Cargo door, light | bool | open/closed | event; 30 s snapshots [S] | BLE sensor |
| Driver monitoring camera | events | n/a | event | Camera unit |
2.3 Reefer / cold chain sub-variant
Reefer units are read via CAN / J1939 or RS-232 / RS-485; remote setpoint, mode and defrost commands exist; BLE probes capture every 30 s [S]. Remaining values are [K].
| Signal | Unit | Typical range | Sample / report rate | Source bus |
|---|---|---|---|---|
| Setpoint | degC | frozen -25..-18; chilled 0..+4 (dairy +2..+4, meat -1..+2, produce +2..+8, pharma +2..+8) | on change (load change) | Reefer controller via J1939 / RS-232 / RS-485 |
| Return air (RAT) | degC | setpoint +0.5..+3 steady when loaded [S: key cargo indicator] | 30-60 s | Reefer controller |
| Supply air | degC | setpoint -1..-3 chilled; -3..-8 frozen; supply-vs-load divergence used for anomaly [S] | 30-60 s | Reefer controller |
| Cargo probes (1-6) | degC | follow RAT with lag of 5-30 min | 30 s-5 min | BLE probes / reefer controller |
| Evaporator coil | degC | -30..-5 | 60 s | Reefer controller |
| Mode | enum | cool / heat / null / defrost / continuous / start-stop | event | Reefer controller |
| Engine / electric standby hours; reefer fuel | h; % | 1.5-4 L/h continuous; tank 100-250 L | 60 s | Reefer controller |
| Alarms | codes | OEM codes (not found in sources) | event | Reefer controller |
| Door open | bool | 5-60 min at dock; RAT rises 3-10 degC within minutes | event | BLE door sensor |
| Humidity / CO2 / ethylene (produce) | %RH / ppm | 85-95 %RH | 5 min | Optional sensors |
| Defrost | event | every 4-12 h (frozen about 6-8 h), lasting 15-45 min, RAT bump +3-10 degC; alarm suppression window after defrost is configurable [S], typically 30-60 min [K] | event | Reefer controller |
2.4 Tanker sub-variant
All tanker values are [K].
| Signal | Unit | Typical range | Sample / report rate | Source bus |
|---|---|---|---|---|
| Compartment level (4-8 compartments) | % / L | 0-100%; 5-40 kL total; slosh +-2-5% moving | 1 s; filter 10-60 s (Inference: same as fuel level) | Tank gauges (bus not stated) |
| Compartment temperature | degC | ambient to 80 (heated chemicals 40-60; bitumen 150-180) | not stated | Tank probes |
| Pressure (LPG / chemical) | kPa | 0-1800 | not stated | Tank sensors |
| Tilt / rollover | deg | alarm above 10-15 deg trailer tilt; lateral above 0.4-0.5 g | not stated | Inclinometer / accelerometer |
| Dome / hatch, valve, pump / PTO, earthing interlock, overfill probe | bool | on/off | event | Discrete inputs |
| Pump flow | L/min | 500-2000; delivery 20-60 min | not stated | Flow meter |
3. On-vehicle networks and protocols
| Bus / protocol | Bitrate | Use on trucks | Notes |
|---|---|---|---|
| CAN 2.0B (ISO 11898) | 250 kbit/s (J1939, FMS); 500 kbit/s (OBD-II); 125 kbit/s body; up to 1 Mbit/s | Engine, transmission, brakes | [S] trackers support 50/100/125/250/500/1000 kbps; FMS 250/500 |
| J1939 | 250 kbit/s, 29-bit ID, 8-byte frames | Heavy-duty application layer | PGN 0-65535; 3-bit priority, 8-bit source address; transport protocol (BAM or RTS/CTS) above 8 bytes |
| J1708 / J1587 | 9.6 kbit/s | Legacy trucks before 2010 | [K] |
| OBD-II / ISO 15765-4 (UDS ISO 14229) | 500 (or 250) kbit/s CAN | Diagnostics, DTC | Polled request/response, not broadcast |
| FMS standard (FMS 3.0, 2012) | 250 kbit/s | Read-only telematics gateway | [S] speed, fuel level, total fuel, vehicle weight, axle weight, tacho data; availability varies by model |
| ISO 11992 | 125 kbit/s | Truck-trailer EBS link | [K] |
| Modbus RTU/TCP, RS-485 / RS-232 | 9.6-115.2 kbit/s | Reefer units | [S] reefer via RS-232/485/J1939 |
| Tachograph (EU) | CAN via FMS | Driving / rest state | [S] tacho CAN data may stop with ignition off |
| BLE / TPMS RF | n/a | Door, light, probes, tyre sensors | BLE adverts 1-10 s, gateway scan misses 5-20% of adverts, RSSI -60 to -95 dBm; TPMS is one-way 315/433 MHz, assume 60-300 s parked and 3-30 s moving or on pressure change [E] |
Typical J1939 broadcast periods [K]: EEC1 10-20 ms; pedal/load 50 ms; CCVS and fuel rate 100 ms; ET1 and most temperatures 1 s; DM1 1 s while a fault is active; TIRE1 on change or every 10 s.
3.1 Bridge-layer facts relevant to trucks
| Item | Value |
|---|---|
| CAN classic frame | 8 B payload; about 130 bits with stuffing; at 250 kbps about 0.5 ms wire time per frame [E] |
| J1939 TP.CM_BAM | Up to 1785 B (255 packets x 7 B); inter-packet gap 50-200 ms; one lost frame drops the whole message (no retry) [S-partial] |
| J1939 RTS/CTS | Peer-to-peer with timers T1 750 ms, T2 1250 ms, T3 1250 ms, T4 1050 ms; missed DT frame aborts the session [E] |
| Typical PGNs | EEC1 (61444) 20 ms; CCVS (65265) 100 ms; ET1 (65262) 1 s; DM1 (65226) 1 s while active, BAM if more than 1 DTC; VIN (65260) multi-frame on request [E] |
| Telematics box class | 1-2 CAN, J1939/OBD, GNSS, accelerometer; 4G Cat-1/Cat-4 or LTE-M; records 1-10 s, batched 30-300 s [E] |
| Time batching | 10 s live, 60 s typical, 300 s eco; flush on ignition-off or buffer 70-80% full [E] |
| Deadband | speed 1 km/h, coolant 1 degC, fuel 0.5%, GPS 10-50 m or 15-30 deg heading; removes 60-90% of samples [E] |
| Rural truck link | 3-10% of drive time without service, episodes 1-30 min, some over 1 h [E] |
| Power | Key-off sleep with CAN/accel wake; cranking brownout (below 6 V) reboots 0.1-1/day on weak-battery trucks [E] |
| Store-and-forward | Flash 4-128 MB; 128 MB at 40 B/record is about 3M records; FIFO drop-oldest silent loss; after 6-72 h offline at 1 Hz records are dropped [E] |
| Volume | Long-haul truck (10-14 h): publish every 10-30 s, 1-6 kB JSON, 5-30 records/s, 10-60 MB/day JSON, 2-15 MB binary; 300-1500 MB/month [E] |
4. Duty cycles and operating profiles
4.1 Long-haul
- 8-11 h driving per day, 700-1000 km; highway 80-90 km/h (EU limiter 85-90, US 100-105 km/h); night driving common [K].
- Overnight rest 4-10 h with idle or APU / sleeper A/C at 1.5-3.5 L/h [K].
- Cruise at 1100-1400 rpm; 28-36 L/100 km loaded (US 6-8 mpg); empty about 15% lower [K].
- Climbs: rpm 1500-1800, fuel 50-80 L/h, coolant +5-10 degC; downhill engine brake or retarder, fuel near 0 [K].
- Idle share of engine hours: long-haul 6-12%; local/vocational 30-40% [K].
- Fuel stops: step up of 200-600 L over 5-15 min at about 10-20% level; DEF use is 5-10% of diesel use; DPF active regen every 500-1500 km lasting 20-40 min [K].
- Weekend freight is lower; trailer swaps change TPMS and trailer IDs [K].
4.2 Reefer distribution
- 10-40 drops per day, door open 5-45 min each, RAT spikes then recovers; the unit keeps running during stops [K].
- Dynamics [K]: pre-cool 30-90 min; pulldown of 20 degC to setpoint in 30-60 min (chilled) or 90-180 min (frozen); steady oscillation of +-0.3-1 degC with start-stop cycling every 5-30 min; air time constant 5-10 min, product 30-120 min.
- Excursion definition [K]: chilled above +5 degC or frozen above -15 degC for more than 30-120 min.
4.3 Tanker
- Loaded outbound, empty on return; level steps down at each delivery; 2-8 deliveries per run [K].
- Pump delivery 20-60 min at 500-2000 L/min [K].
4.4 Regulatory driving state
Tachograph state machine (driving, work, rest) follows EU 4.5 h then 45 min break, 9 h daily, 11 h rest; US 11 h in 14 h with a 30 min break after 8 h [K]. Inference: the duty-cycle state machine should force breaks consistent with these limits.
5. Faults and anomaly signatures
Injection rates are [K] estimates unless noted.
| Mode | Signature | Approx. frequency | Applies to |
|---|---|---|---|
| Stuck-at | Zero variance over N samples while related signals move (fuel level, coolant, TPMS) | 0.1-1% of sensor-days | All |
| Drift | Bias growth 0.1-1%/month; RTD offset +0.5-2 degC; IMU bias 0.02-0.05 g | 1-3%/yr of sensors | Fuel, temps, TPMS, IMU |
| Spike / outlier | Single sample 3-10 sigma | 1e-4..1e-3 of samples | All |
| J1939 not-available / error | 0xFF / 0xFE raw at ignition or after DTC | 1-5 s per startup | J1939 |
| Cellular dropout | Gaps 30 s-30 min (tunnels, rural, depots); store-and-forward bursts with old timestamps | 1-5% of time | All |
| CAN dropout / ECU reset / bus-off | All signals from one source address vanish 1-60 s | about 1 per 1e5 h; bridge notes: 0.05-0.5 bus-off episodes/vehicle/day, 1% devices chronic [E] | All |
| GPS multipath | Jumps 20-100+ m, HDOP above 3, sats below 5 | below 1% of fixes on highway; 5-15% in dense city | Trucks lower than buses |
| GPS cold start / teleport | Wrong fix km away for 30-60 s after power-up; rare outlier jumps | Per power-up | All |
| Time skew / duplicates / out of order | Device vs server skew 0-30 s; retransmitted duplicates | 0.1-2% | All |
| Quantisation | 1 degC/bit, 1/256 km/h, 0.05 L/h | Always | J1939 |
| TPMS | Slow leak 5-20 kPa/day; sensor battery death; trailer swap leaves sensors missing | Leak about 1%/yr/tyre; trailer missing 5-10% | Trucks more than buses |
| Fuel level | Slosh noise; step up on refuel; sudden drop (theft) | Per event | Diesel |
| Odometer / hours reset | Decrease or jump after ECU swap | Very rare | All |
| Reefer faults | RAT climbing above 0.5 degC/10 min; supply-return delta collapse (below 1 degC) or above 10 degC; setpoint never reached; no recovery after defrost; probe stuck | 1-3% of trips with excursion; alarms about 1-2 per 1000 operating h | Reefers |
| Engine overtemp / derate | Coolant above 105 degC with torque cut | Rare | All |
| TP session failure | DM1 / VIN missing, abort codes | 0.5-3% of multi-frame messages [E] | J1939 |
| Encoding errors | Scaling x10/x100, signed/unsigned, endianness; impossible values such as 6553.5 km/h | 0.1-1% of records [E] | All |
| Frozen value / dropped frames | Flatline with valid timestamp; gaps in cyclic PGNs | 0.1-1% of signals; 0.01-0.5% of frames [E] | All |
| Firmware / schema mismatch | Unknown IDs, shifted signals, dropped fields | 2-10% of fleet on old firmware for 1-4 weeks after rollout [E] | All |
6. Events, alerts and thresholds
| Event | Threshold |
|---|---|
| Harsh brake / accel / corner | Brake 0.25-0.35 g, accel 0.15-0.25 g, corner 0.2-0.3 g for loaded heavy trucks [K]; light-duty vendor defaults: braking 0.29-0.38 g by weight class (GPS Insight default 0.367 g), acceleration 0.337 g, cornering 0.357 g; Digital Matter 4.4 m/s2 brake/accel, 5.5 m/s2 corner [S] |
| Min speed for GPS-based harsh events | 10 km/h accel/brake, 30 km/h cornering [S Teltonika]; accelerometer preferred [S] |
| Overspeed | Limit +10 km/h |
| Excess idle | Above 5-10 min |
| HOS violation | Per tachograph / hours-of-service rules in section 4.4 |
| Reefer excursion | RAT above setpoint +2..+3 degC for more than 10-30 min outside defrost window |
| Reefer door open | Above 5-10 min or while moving |
| Tyre | Below 85% nominal or leak above 15 kPa/min; temperature above 90-100 degC |
| Brakes | Drum above 300-400 degC; air below 550 kPa |
| Engine | Coolant above 105 degC; oil pressure below 100 kPa at speed |
| DEF | Below 10% warn; below 2-5% derate |
| Fuel theft | Drop of 5-10% in under 5 min while stationary |
| Rollover | Tilt above 30-40 deg; lateral above 0.5-0.7 g (tanker alarm earlier: trailer tilt above 10-15 deg, lateral above 0.4-0.5 g) |
| Collision | Above 2-3 g |
| Overload | Axle or GCW above legal (EU 40 t) |
| Geofence / unscheduled stop / trailer disconnect | Event |
| DM1 | Any active amber or red lamp DTC |
7. Generator guidance for the simulator
7.1 Export cadence and reporting
- 1 Hz: kinematics, rpm, speed, fuel rate. 10 s: temperatures, DEF, TPMS. 30-60 s: reefer and cargo temperatures. Event-driven: doors, DTC, harsh events, geofence. Parked heartbeat 5-15 min.
- Apply +-10% report jitter and batched uploads after connectivity loss.
- Moving report interval 10-60 s, parked 1-15 min. Batch window 60 s typical (10 s live, 300 s eco).
7.2 State machine
States: depot / parked, driving, idle, fuelling, rest break, and (per variant) dock dwell with door open (reefer) or delivery / pumping (tanker). Drive all signals from this state machine.
- Fuel rate coupled to speed, grade and load: idle 1.5-4 L/h, cruise 25-40 L/h, climb 50-80 L/h, downhill near 0. Empty load: fuel about 15% lower.
- Coolant follows load through a first-order lag with tau 120-300 s around 80-95 degC; climbs add +5-10 degC.
- Rpm 1100-1400 at cruise, 1500-1800 on climbs, 600-800 idle.
- Fuel level: sawtooth with slosh noise +-2-5% while moving, refuel step of 200-600 L at about 10-20% level over 5-15 min.
- DPF regen every 500-1500 km for 20-40 min with EGT 550-650 degC.
7.3 Reefer thermal model
- First-order response of RAT to setpoint, door-open and ambient: air tau 5-10 min, product tau 30-120 min; cargo probes lag RAT by 5-30 min.
- dRAT/dt = (T_target - RAT) / tau_air, where T_target is the setpoint while the unit cools and the ambient-driven temperature while it is idle or the door is open (Inference: formula form from first-order lag in [K] guidance).
- Steady oscillation +-0.3-1 degC; start-stop cycle 5-30 min.
- Defrost every 4-12 h (frozen 6-8 h), 15-45 min, RAT bump +3-10 degC; suppress alarms 30-60 min after defrost.
- Drops: 10-40 per day, door open 5-45 min, RAT +3-10 degC within minutes.
- Excursion label: chilled above +5 degC or frozen above -15 degC for 30-120 min.
7.4 Tanker model
- Total capacity 5-40 kL across 4-8 compartments; each delivery drops one or more compartments to 0 over 20-60 min at 500-2000 L/min; 2-8 deliveries; empty return.
- Slosh +-2-5% moving; tilt alarm above 10-15 deg; lateral above 0.4-0.5 g.
- Compartment temperature ambient to 80 degC by product (heated chemicals 40-60, bitumen 150-180).
7.5 Tenant variant knobs
| Knob | Long-haul | Reefer | Tanker |
|---|---|---|---|
| Driving per day | 8-11 h, 700-1000 km | Distribution, 10-40 drops | 2-8 deliveries per run |
| Idle share of engine hours | 6-12% | Local style 30-40% (Inference) | Local style 30-40% (Inference) |
| Load / fuel | 28-36 L/100 km loaded; empty -15% | Plus reefer fuel 1.5-4 L/h (tank 100-250 L) | Loaded outbound, empty return |
| Extra signals | Tacho, trailer EBS, axle weight | Setpoint, RAT, supply, probes, defrost, mode | Compartment level/temp, pressure, tilt, pump flow |
| Cadence | 1 Hz core; 10 s TPMS | 30-60 s reefer temps | Not stated; use 1-10 s (Inference) |
| Dominant faults | TPMS leak, DPF, cellular gaps | Reefer excursion, stuck probe, door open | Rollover tilt, level slosh, valve states |
- Per-vehicle latent traits (from the bridge pipeline): clock ppm, firmware version, buffer size, link type, chronic-fault flag.
- Per-tenant sampling policy: pushed via config topic; 1-10% of devices run an old policy for hours.
- Per-tenant format knobs: units, key naming, time format and missing-value style (null vs sentinel) may differ.
7.6 Fault injection and labelling
- Inject faults per Table 7 with ground-truth labels, including the bridge-layer imperfections: clock skew (crystal RTC 20-50 ppm gives 1.7-4.3 s/day; 0.5-2% of devices offset above 5 s), duplicates, backfill after outage with preserved record timestamps, and sentinel values 0xFF / 0xFE.
- Use J1939 quantisation always: 1 degC/bit, 1/256 km/h, 0.05 L/h.
- Cellular outage state machine for trucks: 3-10% of drive time without service, 1-30 min episodes, buffer and replay later; overflow after 6-72 h offline at 1 Hz.
- Dedupe key in cloud records: (device_id, boot_id, seq).
8. How the Sense simulator implements this
Source and status. This section restates the simulator document TRUCK_POINTS.md (verification dated 13 Oct 2026) and the Sense documents layout-v1.md and BUILD.md (checked against the code on 12 Oct 2026). Everything below was built and run in the simulator and fed through Sense's own protocol handler; none of it is a field measurement. The Sense side is the working copy of Sense, which at the time of writing carries uncommitted changes; the released listener build of 12 Oct 2026 (20:50) is older than part of them, and the places where that matters are marked.
8.1 Scenario codes (tenant subvariant)
The Fleet tenant's variant truck selects the vehicle kind and its subvariant selects the scenario. The report's three variants are the platform's subvariant codes exactly as they are: long-haul, reefer, tanker. A tenant with another subvariant runs no truck; the simulator's own selector is used only when the tenant has no subvariant.
| Code | Stands for | Route | How it is generated |
|---|---|---|---|
| long-haul | Long-haul tractor-trailer | Bengaluru - Tumakuru - Chitradurga - Hubballi - Belagavi - Kolhapur - Pune, about 880 km, out and back | Cruise 78-92 km/h (45 km/h near the ends and in towns); terrain grade from a noise map, climbs slow the truck to what 330 kW can pull, descents with engine brake; tachograph rules: a 45-50 min rest after 4.5 h of driving, a night rest of 4-10 h after 9 h (40% of nights idling for the sleeper A/C); fuel stop below 20% tanks (200-600 L in 7-15 min, DEF topped up); toll and traffic idling stops of 1-5 min; DPF regeneration every 500-1500 km for 20-40 min (EGT 560-640 degC, fuel +8%); unloading dock of 1-2 h at each end; 12 wheels with TPMS; cargo 14-24 t |
| reefer | Cold-chain distribution truck | Peenya - Majestic - Indiranagar - Whitefield - Electronic City, about 55 km, drop points every 2.4-4.2 km | Block of 9-13 h; city driving 24-44 km/h with peak scaling; depot dwell of 40-75 min with pre-cool and loading, then 2-3 round trips with 8-20 drops each; a drop is 5-45 min (median 14) with the cargo door open from 45 s after arrival to 45 s before leaving; set point chilled 3-6 degC (70% of trucks) or frozen -20/-18 degC (30%); first-order air model (tau 9 min closed, 50-75 min toward ambient with the door open), compressor start-stop, three cargo probes lagging the return air by 6-30 min, humidity 82-96%; defrost every 8-12 h (chilled) or 6-8 h (frozen); alarm after 10 min outside 2-8 degC (chilled) or above -15 degC (frozen); the unit has its own diesel (2.6 / 3.4 L/h) and electric standby at the depot |
| tanker | Regional road tanker | Devanahalli - Kolar - Chittoor - Vellore - Tiruvannamalai - Puducherry, about 530 km | Block as the reefer; 55-75 km/h; loaded outbound with 4-8 compartments (5-38 kL in all), 2-8 deliveries, empty on the way back; a delivery takes 20-60 min (earthing, hatch, valves, pump at 500-2000 L/min); product by vehicle: petroleum (70%), heated chemical (15%, 52 degC), LPG (10%, 5-18 bar), bitumen (5%, 160 degC); slosh noise on the levels while moving; tilt events from sharp curves (alarm above 12 degrees or 0.45 g); rollover (rare) |
8.2 Protocols emitted and the one-vehicle-per-tenant model
One Fleet tenant is one truck with its own Bhairava Sense. The slot (0-23), the three UDP ports (49001+5s, 49002+5s, 49003+5s) and the source address (127.0.(1+s).20) come from the same allocator as buses and ambulances, so a truck, a bus and an ambulance tenant running together never share ports; the tenant card shows the Ports text to enter into that tenant's Sense. Identity depends only on the tenant (FNV-1a of tenant:<id>): truck id TRK-LHT, TRK-RFR or TRK-TNK plus 4 hex digits, IMEI starting 3520965 with a valid Luhn digit, VIN with a Tata, Eicher or Ashok Leyland head and a valid check digit, driver card and J1939 address-claim identity number.
| Equipment | Protocol on the wire | Default port | Sense device name |
|---|---|---|---|
| GNSS receiver (ignition on) | NMEA 0183 $GNGGA and $GNRMC, 1 Hz | 10110 | talker GN at <source ip> |
| Engine, brake, cluster and body CAN through a CAN-to-Ethernet gateway (one datagram a second, ignition on) | SAE J1939 (29-bit) and OBD-II (VIN) | 20001 | unit <SA> on CAN gateway <source ip> (SA 0 engine, 11 brakes, 23 cluster, 33 body); control unit 7E8 on CAN gateway <source ip> |
| Telematics unit (also carries the reefer controller, the tank gauges and the trailer) | Wialon IPS 1.1 text, login line then data lines | 20332 | tracker <imei> |
Wialon input bits: 0 ignition, 1 cargo door (reefer) or hatch (trailer door at the dock, tanker dome hatch), 2 trailer connected, 3 alarm (reefer alarm, tanker tilt alarm, long-haul harsh event or active fault code). The iButton field carries the driver card in hex. CAN slow groups are sent every 10 s and the VIN every 600 s in all scenarios.
| Scenario | Moving | Standing | Ignition off |
|---|---|---|---|
| long-haul | 30 s | 60 s | 600 s |
| reefer | 20 s | 30 s | 60 s (the unit keeps reporting with the truck off) |
| tanker | 10 s | 10 s | 300 s |
8.3 Signals actually emitted
Sense makes one reading per J1939 signal and per Wialon param, named as in the tables. NMEA is as for buses: GGA latitude, longitude, fix quality, satellites and altitude; RMC status, latitude, longitude, speed (knots) and course.
| Group (PGN) | Sense point (unit) | Rate |
|---|---|---|
| EEC1 (61444) | Driver demand torque, Engine torque, Engine demand torque (%); Engine speed (rpm) | 1 s |
| EEC2 (61443) | Accelerator pedal position, Engine load (%) | 1 s |
| CCVS (65265) | Vehicle speed (km/h); Parking brake; Brake pedal; Cruise control (on above 70 km/h at steady speed, not for the reefer); Clutch pedal; Cruise control set speed (km/h, only with cruise on) | 1 s |
| LFE (65266) | Fuel rate (L/h); Instantaneous and Average fuel economy (km/L); Throttle position (%) | 1 s |
| TCO1 (65132), long-haul only | Tachograph vehicle speed (km/h) | 1 s |
| ET1 (65262) | Coolant temperature, Fuel temperature, Engine oil temperature (degC) | 10 s |
| EFL/P1 (65263) | Fuel delivery pressure, Engine oil pressure, Coolant pressure (kPa); Engine oil level, Coolant level (%) | 10 s |
| DD (65276, SA 23) | Fuel level (%); Fuel level 2 (long-haul, second tank); Fuel filter differential pressure (kPa); Cargo ambient temperature (degC: the reefer's return air or the tanker's product temperature; absent for the long-haul truck) | 10 s |
| VEP1 (65271), AMB (65269, SA 33) | Battery current, Alternator current (A); Charging system voltage, Battery voltage, Key switch battery voltage (V, 24 V system); Barometric pressure (kPa); Cab interior, Ambient air and Air inlet temperature (degC) | 10 s |
| HOURS, LFC, VD, VDHR, AT1T1I | Engine hours (h), Engine revolutions; Trip fuel, Total fuel used (L); Trip distance, Total vehicle distance (km) and the high-resolution pair; Exhaust fluid tank level (%) | 10 s |
| TIRE1 (65268) | One message per wheel, 12 wheels in turn: pressure (4 kPa/bit) and temperature; read only by newer builds of Sense | 10 s |
| B1 (65274, SA 11) | Brake application pressure, primary and secondary air pressure (kPa); read only by newer builds of Sense | 10 s |
| DM1 (65226), address claim (60928), OBD-II VIN | Event "fault SPN n FMI m" or "no active fault codes"; presence "unit claims address 0 / 23 / 33"; presence "vehicle identification number" (service 09 PID 02, at ignition on and every 600 s) | 1 s while active, else 10 s |
DM1 codes sent (amber lamp): SPN 110 FMI 16 (coolant over 102 degC, overheat episode of 10-25 min), SPN 1761 FMI 18 (DEF under 10%), SPN 117 FMI 1 (air pressure under 600 kPa), SPN 3719 FMI 16 (DPF soot load over 90%).
| Scenario | Params (unit) |
|---|---|
| all | ign; seq; boot_id; pwr_ext (V); odometer (km); hdop; gps_sats; gsm_lvl, gsm_rsrp (dBm), gsm_rsrq (dB), gsm_sinr (dB), net_type; link_down_s (s); stop_id; cabin_temp (degC); driver_card; drv_state (0 rest, 1 available, 2 work, 3 driving); drive_min, drive_day_min, idle_min (min); gcw_kg (gross combination weight), axle_steer, axle_drive, axle_trl (kg); trl_conn; gear (1-12, 0 stopped); trans_oil_t (degC); boost_kpa (kPa); egt (degC); dpf_soot (%); dpf_dp (kPa); dpf_regen (0/1); brake_t (drum degC); brake_lining (% left); fuel_l (L); overspeed (over 100 / 80 / 60 km/h for long-haul / tanker / reefer); harsh; plus Latitude, Longitude, Speed, Heading, Altitude |
| long-haul | trl_ebs_kpa (trailer brake pressure, kPa); trl_abs (0/1); lift_axle (0/1, raised when the trailer is under 40% loaded); cruise (0/1); sleeper_ac (0/1); cargo_kg (kg) |
| reefer | rf_set (set point), rf_rat (return air), rf_sat (supply air), rf_p1, rf_p2, rf_p3 (cargo probes), rf_evap (evaporator coil), all degC; rf_mode (1 cool, 3 null/off cycle, 4 defrost); rf_on (compressor); rf_hum (%RH); rf_fuel (% of the unit's diesel tank); rf_hours (h); rf_power (kW, electric standby); rf_door (0/1); rf_alarm (0/1); rf_exc (1 after 30 min with the first probe outside the band); rf_drops (drops so far this pass); cargo_kg |
| tanker | tk_c1 to tk_c<n> (compartment level %, with slosh while moving); tk_total_l (L); tk_temp (product degC); tk_press (kPa); tk_tilt (degrees); tk_lat_g (g); tk_valves (bit mask of open valves); tk_hatch; tk_pump; tk_pto; tk_flow (L/min); tk_earth (earthing interlock); tk_overfill; tk_alarm; tk_rollover; tk_deliv (deliveries done); cargo_kg |
8.4 What Sense can and cannot read yet
The state below follows TRUCK_POINTS.md section 8 (checked against the working copy of the Sense listener sources, read only) and Sense's BUILD.md.
- Read by the working copy of Sense, not by the released build of 12 Oct 2026: TIRE1 (65268) and B1 (65274); GGA HDOP and the RMC time; the Wialon record time; a Wialon unit name table. J1939 groups read besides the engine ones: IC1 (65270, boost, intake manifold and exhaust gas temperature), ETC2 (61445, gear), TRF1 (65272, transmission oil), EBC1 (61441, brake pedal position and ABS active), AT1S (64891, DPF soot load) and the DEF tank temperature in 65110. The unit table covers the names of Table 14 that have a unit (for example trans_oil_t, egt, brake_t, dpf_dp, tk_flow, tk_tilt and tk_c<n>); names it does not know, flags and states stay without a unit.
- Still not read: axle and gross combination weight (65258), the J1939 vehicle number (65260; the OBD-II VIN works), the DPF differential pressure group, the tachograph driver state and card (65132 gives only the speed), the trailer EBS of ISO 11992 and PTO state. BUILD.md gives the reason for the weight, vehicle number and differential pressure as encoding or scaling not verified.
- No standard bus for the cargo equipment: the reefer controller (set point, return and supply air, probes, evaporator, mode, defrost, alarms) and the tank gauges (compartment levels, temperature, pressure, tilt, valves, pump flow, earthing) have no group in Sense; the simulator carries them in Wialon params and in Cargo ambient temperature. Their alarms arrive as ordinary 0/1 readings (rf_alarm, tk_alarm, rf_exc, tk_overfill); Sense does not turn them into events with thresholds.
- Not read at all: string params and the iButton field of Wialon IPS (driver ids go as the number driver_card); the native UDP form of Wialon IPS 2.0; Sense does not use seq or boot_id, so replays and duplicates count as new readings.
- Vehicle profiles: the Fleet compatibility check chooses a profile by variant and subvariant (long-haul, reefer, tanker); an empty or unknown subvariant uses the plain Truck profile.
8.5 Faults and the ground-truth file
Latent traits per truck are as for buses (clock ppm, chronic flag in 1%, frame loss 0.01-0.5%, bus-off 0.05-0.5 a day, weak battery in 5%). The generic faults of the bus work apply unchanged (J1939 not-available after ignition on, spike, encoding error, dropped and duplicated frames, VIN transport abort, stuck-at, drift, GNSS episodes, link outages with store-and-forward, reboot, TPMS leak of 5-20 kPa/day on one wheel in 1.5% of trucks, engine overtemperature, DEF low, low air, fuel theft of 5-12% at the depot); rates are those of Tables 7 and 8, scaled by --truck-faults. Specific to trucks: reefer unit fault (compressor off 15-35 min, 1.5 per 1000 operating hours), cargo probe stuck for 2-10 h (2% a day), door left open 15-40 min extra on a drop, reefer alarm and excursion, tank valve stuck reading open for 1-4 h (1% of deliveries), tilt event and tilt alarm (1 per 7000 s moving), rollover (1 per 2.5 million s moving), harsh brake (8% of traffic stops from over 43 km/h at 0.33 g) and DPF regeneration (normal operation, labelled).
With --truth FILE the simulator writes JSON lines, each with t, utc, vehicle and type. First a run line and one vehicle line per truck (scenario, IMEI, VIN, source, clock error, block hours, set point, compartments). Then the bus labels that apply (link_down, link_up, replayed, gps_*, reboot, frame_dropped, bus_off, tp_abort, j1939_na, spike, encoding_error, stuck_at, drift, tpms_leak, fuel_theft, refuel, engine_overtemp_*) and for trucks stop (end, drop, depot or delivery), fuel_stop, rest_start and rest_end, night_start and night_end, idle_stop, dpf_regen_start and dpf_regen_end, cargo_door_open and cargo_door_close, defrost_start and defrost_end, reefer_alarm_start and reefer_alarm_end, reefer_excursion, reefer_unit_fault_*, probe_stuck_*, door_left_open, delivery and delivery_done, valve_stuck_*, tilt_event, tilt_alarm and rollover_start and rollover_end. One truth file serves buses, trucks and ambulances of the same run. Not simulated: multi-code DM1 transport failures, wrong CAN bit rate, firmware or schema mismatch, clock jump, odometer reset, trailer swap, ISO 11992 trailer EBS frames, tachograph driver-card frames, and geofence and unscheduled-stop alerts (the platform derives those).
8.6 Measured differences between the scenarios
Slow runs of 13 Oct 2026 (nothing faster than clock 2; 24 simulated minutes each, starting 13:00 IST), with the default fault rates in set A (8 long-haul, 12 reefer, 12 tanker) and more trucks in set D for the rare states. Every datagram was identified by Sense's protocol handler as NMEA 0183, OBD-II, J1939 or Wialon IPS (none unknown or unreadable), except that with every fault at 1000 times the rate (set C) the datagrams carrying only the three address-claim frames (9 / 27 / 21 of 4,101 / 5,122 / 5,689) were not identified. In the released listener build TIRE1 and B1 arrived as "parameter group ... (not read by this build)"; the working copy reads both. Because the runs were 24 simulated minutes long, rare states appear only as far as they fell into that window.
| Measure | long-haul | reefer | tanker |
|---|---|---|---|
| Mean speed, ignition on / moving (km/h) | 69.5 / 78.0 (set D 68.1 / 78.7) | 10.9 / 29.3 | 41.7 / 62.3 |
| Share of engine-on time at speed 0 | 11% (set D 13.5%) | 63% | 33% |
| Cruise rpm above 60 km/h (mean) | 1,325 (range 600-1,770) | - | 1,423 |
| Fuel L/100 km (J1939 rate x speed) | 37.0 overall, 35.1 above 50 km/h, 27-50 per truck | 38.4 in traffic | 26.0 (22.9 above 50 km/h) |
| Stops | Rest 45-49 min after 270 min of driving; idle stops 75-213 s | Drops 327-2,617 s (median 780 s) with the door open; depot dwell 40-75 min | Deliveries 1,200-1,814 s |
| Wialon cadence moving / standing / off (median) | 29 / 57 / 604-643 s | 20 / 29 / 59 s | 10 / 9 / 289 s |
| Characteristic signals | GCW 25.4-34.8 t, axle weights, tachograph state, gear, EGT 250-600 degC | Set point 3-6 or -20/-18 degC; return air minus set point 0.8-1.2 degC (report +0.5..+3); supply minus return 3.0 / 5.5 degC; door open: return air +4..+14 degC | 4-8 compartments; slosh sigma 0.8-1.4% of level while moving (0 standing); tilt up to 2.6 degrees on the road; product 32 degC (petroleum), 150 degC (bitumen), 52 degC (chemical), 7-8 bar LPG |
Rare states seen in the slow runs: long-haul rest breaks 6, one night rest of 33,263 s with idling, idle stops 11, one fuel stop, DPF regeneration started 7 times; reefer cargo door opened 46 times, defrost started 7 times, alarms 19; tanker deliveries 14 (1.1-13.5 kL, flow 539-1,861 L/min), tilt events 138 of which 47 alarms (44 of those in set C, the fault-boosted run). The reefer excursion label, the end of DPF regeneration, the end of defrost and the end of a rollover were not seen in the slow runs, only in earlier faster smoke runs that checked the state machines and are not reported as numbers.
- The long-haul fuel figure sits at the top of this report's range because of the terrain grade. The report's empty-to-loaded difference of about 15% is not reproduced separately; the model gives 20-25% for the tanker.
- Not measured: tachograph compliance over a full day and DEF consumption (5-10% of diesel) over long periods; the 24-minute windows are too short.
- The initial state of each truck is drawn at random (a dock, a rest, a fuel stop, a delivery in progress); 25% of the reefers start with a defrost due within 20 minutes and 25% of the trucks with a DPF regeneration due soon, so that short runs show them.
9. Uncertainty and assumptions
- Most numeric ranges and all fault frequencies are [K] engineering estimates, not measured fleet data. Treat them as priors with wide jitter.
- J1939 scaling was not given by the fetched sources. Verify against SAE J1939-71 / J1939DA before decoding. The coolant PGN differs between the J1939-71 reference (65262) and a Garmin list (65263).
- OEM reefer logging intervals and alarm codes (Thermo King, Carrier) were not found in sources. All reefer rates and ranges beyond the cited BLE 30 s capture and alarm-delay-after-defrost behaviour are [K].
- Tanker data is entirely [K]; no source covers tanker sensors, buses or rates.
- DEF warn/derate thresholds differ between the bus table (below 15% / below 5%) and the truck table (below 10% / below 2-5%); this report uses the truck values in Table 8.
- Marked as inference in this report: idle share for reefer and tanker, tanker sampling cadence, and the reefer first-order formula.
- Bridge-layer numbers (batching, link behaviour, volumes) are mostly [E] estimates; only some bus-level framing items are partly sourced.
10. Sources
- https://www.isobus.net/isobus/pGNAndSPN/1856?type=PGN
- https://www.isobus.net/isobus/pGNAndSPN/15667?type=PGN
- https://www8.garmin.com/manuals/webhelp/gpsmap_touch/EN-GB/GUID-306ABD0D-9E94-498A-B4FA-50991FD78276.html
- https://www.enovationcontrols.com/pvforumarchive/viewtopicbb23.html?p=3690
- https://www.digikey.com/en/articles/fms-standard-for-commercial-vehicles-fleet-management-system
- https://wiki.teltonika-gps.com/view/FMC650_Manual_CAN_IO
- https://wialon.com/es/sensors/fms-gateway
- https://help.gpsinsight.com/best-practice/defining-thresholds-for-your-fleet/
- https://digitalmatter.helpjuice.com/harsh-driving-event-setup
- https://wiki.teltonika-gps.com/view/FMB150_Features_settings
- https://en.docs.navixy.com/ud/harsh-driving-settings
- https://navixy.com/welcome/cold-chain-logistics/reefer-trailer-monitoring/
- https://customer.omnitracs.com/help/ttracsWeb/help/en_US/context/trlr_rfrparams_z.htm
- https://fleetrabbit.com/industry/food-and-beverage/reefer-telematics-integration-setup-guide-2026
- https://www.autosar.org/fileadmin/standards/R25-11/CP/AUTOSAR_CP_SWS_SAEJ1939TransportLayer.pdf
- https://www.engr.colostate.edu/~jdaily/presentations/2023%20Transport%20Protocol%20Vulnerabilities%20on%20SAE%20J1939%20Networks.pdf
- https://copperhilltech.com/blog/sae-j1939-programming-with-arduino-multipacket-peertopeer-rtscts-session/
- https://www.ndss-symposium.org/wp-content/uploads/2024/09/vehiclesec2023-23053-slides.pdf
- https://www.tomorrowstechnician.com/tpms-sensor-signals/
- https://digitalmatter.helpjuice.com/how-much-data-do-dm-devices-use