feat: update CAN integration and T2G seat firmware
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
version: 1.1.0
|
||||
status: hil_verified_partial
|
||||
version: 2.0.0
|
||||
status: hil_verified
|
||||
domain: seat
|
||||
source:
|
||||
firmware_store_format: SMV8
|
||||
verified_on: 2026-07-30
|
||||
test_status: ../../../firmware/t2g/Seat_Controller_demo/Docs/HIL_TEST_STATUS_2026-07-30.md
|
||||
protocol:
|
||||
version: 1
|
||||
bitrate: 500000
|
||||
@@ -9,42 +13,70 @@ protocol:
|
||||
absolute_position_opcode: 1
|
||||
timed_duty_opcode: 3
|
||||
stop_all_opcode: 9
|
||||
default_duty_percent: 50
|
||||
stop_all_motor_selector: 0
|
||||
home_known_range_opcode: 11
|
||||
home_known_range_key: 19282
|
||||
normalized_position_max: 10000
|
||||
# A full M0 stroke takes more than the firmware's legacy 12 s default.
|
||||
# Always send this override with Opcode 1 so every calibrated axis has
|
||||
# enough time to reach either endpoint on the physical bench.
|
||||
absolute_position_timeout_ms: 30000
|
||||
# The currently deployed SMV8 image commits Work Flash as soon as an axis
|
||||
# stops. Give that blocking persistence step time to finish before the next
|
||||
# axis command; the updated image additionally batches the four-axis save.
|
||||
inter_axis_settle_ms: 2000
|
||||
default_duty_percent: 90
|
||||
timed_duty_level_scale: 10
|
||||
timed_duty_min_duration_ms: 300
|
||||
timed_duty_max_duration_ms: 8000
|
||||
increase_direction: 1
|
||||
decrease_direction: 2
|
||||
axes:
|
||||
seat.set_legrest_extension:
|
||||
seat.set_longitudinal_position:
|
||||
motor_selector: 0
|
||||
physical_mode: 0
|
||||
physical_name: horizontal_fore_aft
|
||||
physical_unit: mm
|
||||
maximum_value_x100: 10200
|
||||
physical_full_scale_x100: 21500
|
||||
default_max_hall_count: 480
|
||||
timed_duty_ms_per_pct: 175
|
||||
default_timeout_ms: 12000
|
||||
timed_duty_ms_per_pct: 120
|
||||
max_uncalibrated_relative_pct: 15
|
||||
hardware_verified: true
|
||||
seat.set_legrest_height:
|
||||
seat.set_cushion_tilt:
|
||||
motor_selector: 1
|
||||
physical_unit: degree
|
||||
maximum_value_x100: 8500
|
||||
default_max_hall_count: 790
|
||||
timed_duty_ms_per_pct: 440
|
||||
physical_mode: 1
|
||||
physical_name: seat_pan_oblique_height
|
||||
physical_unit: percent
|
||||
physical_full_scale_x100: 10000
|
||||
horizontal_full_scale_x100: 5100
|
||||
vertical_full_scale_x100: 5600
|
||||
default_max_hall_count: 374
|
||||
default_timeout_ms: 8000
|
||||
timed_duty_ms_per_pct: 80
|
||||
max_uncalibrated_relative_pct: 15
|
||||
hardware_verified: true
|
||||
seat.set_backrest_recline:
|
||||
motor_selector: 2
|
||||
physical_mode: 2
|
||||
physical_name: backrest_recline
|
||||
physical_unit: degree
|
||||
maximum_value_x100: 9000
|
||||
default_max_hall_count: 1590
|
||||
timed_duty_ms_per_pct: 500
|
||||
physical_full_scale_x100: 6800
|
||||
display_zero_degree_x100: 9500
|
||||
default_max_hall_count: 917
|
||||
default_timeout_ms: 12000
|
||||
timed_duty_ms_per_pct: 120
|
||||
max_uncalibrated_relative_pct: 15
|
||||
hardware_verified: true
|
||||
seat.set_longitudinal_position:
|
||||
seat.set_legrest_height:
|
||||
motor_selector: 3
|
||||
physical_unit: mm
|
||||
maximum_value_x100: 24000
|
||||
default_max_hall_count: 960
|
||||
timed_duty_ms_per_pct: 175
|
||||
physical_mode: 3
|
||||
physical_name: legrest_lift
|
||||
physical_unit: degree
|
||||
physical_full_scale_x100: 7200
|
||||
display_zero_degree_x100: 9500
|
||||
default_max_hall_count: 647
|
||||
default_timeout_ms: 10000
|
||||
timed_duty_ms_per_pct: 100
|
||||
max_uncalibrated_relative_pct: 15
|
||||
hardware_verified: false
|
||||
enable_env: COGNITIVE_AGENT_ENABLE_UNVERIFIED_LONGITUDINAL
|
||||
hardware_verified: true
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
version: 1.0.0
|
||||
status: imported_reference
|
||||
source:
|
||||
workbook: 座椅功能模式配置表.xlsx
|
||||
imported_on: 2026-07-31
|
||||
note: Values are embedded here so runtime execution never depends on the desktop workbook.
|
||||
coordinate_system:
|
||||
longitudinal:
|
||||
unit: mm
|
||||
range: [0, 215]
|
||||
max_hall_count: 480
|
||||
cushion_tilt:
|
||||
unit: percent
|
||||
range: [0, 100]
|
||||
max_hall_count: 374
|
||||
backrest_recline:
|
||||
unit: degree_relative_to_zero
|
||||
range: [0, 68]
|
||||
absolute_display_zero_deg: 95
|
||||
max_hall_count: 917
|
||||
legrest_height:
|
||||
unit: degree_relative_to_vertical_zero
|
||||
range: [0, 72]
|
||||
absolute_display_zero_deg: 95
|
||||
max_hall_count: 647
|
||||
modes:
|
||||
zero_gravity:
|
||||
targets: {longitudinal_mm: 215, cushion_pct: 100, backrest_deg: 55, legrest_deg: 68}
|
||||
hall_counts: {longitudinal: 480, cushion_tilt: 374, backrest_recline: 742, legrest_height: 611}
|
||||
cruise_sofa:
|
||||
targets: {longitudinal_mm: 110, cushion_pct: 30, backrest_deg: 30, legrest_deg: 38}
|
||||
hall_counts: {longitudinal: 246, cushion_tilt: 112, backrest_recline: 405, legrest_height: 342}
|
||||
leisure_lounger:
|
||||
targets: {longitudinal_mm: 110, cushion_pct: 30, backrest_deg: 45, legrest_deg: 55}
|
||||
hall_counts: {longitudinal: 246, cushion_tilt: 112, backrest_recline: 607, legrest_height: 494}
|
||||
nap:
|
||||
targets: {longitudinal_mm: 215, cushion_pct: 100, backrest_deg: 55, legrest_deg: 68}
|
||||
hall_counts: {longitudinal: 480, cushion_tilt: 374, backrest_recline: 742, legrest_height: 611}
|
||||
easy_entry_exit:
|
||||
stages:
|
||||
door_open:
|
||||
targets: {longitudinal_mm: 215, cushion_pct: 0, backrest_deg: 0, legrest_deg: 0}
|
||||
hall_counts: {longitudinal: 480, cushion_tilt: 0, backrest_recline: 0, legrest_height: 0}
|
||||
door_closed:
|
||||
targets: {longitudinal_mm: 110, cushion_pct: 0, backrest_deg: 0, legrest_deg: 0}
|
||||
hall_counts: {longitudinal: 246, cushion_tilt: 0, backrest_recline: 0, legrest_height: 0}
|
||||
baby_nap:
|
||||
targets: {longitudinal_mm: 175, cushion_pct: 30, backrest_deg: 28, legrest_deg: 0}
|
||||
hall_counts: {longitudinal: 391, cushion_tilt: 112, backrest_recline: 378, legrest_height: 0}
|
||||
office:
|
||||
targets: {longitudinal_mm: 155, cushion_pct: 22, backrest_deg: 15, legrest_deg: 15}
|
||||
hall_counts: {longitudinal: 346, cushion_tilt: 83, backrest_recline: 202, legrest_height: 135}
|
||||
meditation_space:
|
||||
targets: {longitudinal_mm: 215, cushion_pct: 44, backrest_deg: 30, legrest_deg: 42}
|
||||
hall_counts: {longitudinal: 480, cushion_tilt: 165, backrest_recline: 405, legrest_height: 377}
|
||||
electric_beach_chair:
|
||||
targets: {longitudinal_mm: 215, cushion_pct: 0, backrest_deg: 68, legrest_deg: 43}
|
||||
hall_counts: {longitudinal: 480, cushion_tilt: 0, backrest_recline: 917, legrest_height: 386}
|
||||
queen_passenger_driving:
|
||||
targets: {longitudinal_mm: 155, cushion_pct: 37.5, backrest_deg: 30, legrest_deg: 22}
|
||||
hall_counts: {longitudinal: 346, cushion_tilt: 140, backrest_recline: 405, legrest_height: 198}
|
||||
calf_decompression_float:
|
||||
targets: {longitudinal_mm: 110, cushion_pct: 75, backrest_deg: 0, legrest_deg: 72}
|
||||
hall_counts: {longitudinal: 246, cushion_tilt: 280, backrest_recline: 0, legrest_height: 647}
|
||||
@@ -1,4 +1,4 @@
|
||||
VERSION "T2G seat bench 1.1"
|
||||
VERSION "T2G seat bench 2.0 (2026-07-30)"
|
||||
|
||||
NS_ :
|
||||
NS_DESC_
|
||||
@@ -9,76 +9,94 @@ NS_ :
|
||||
|
||||
BS_:
|
||||
|
||||
BU_: HOST T2G_THERMAL T2G_MOVE
|
||||
BU_: HOST T2G_SEAT
|
||||
|
||||
BO_ 670 T2G_Seat_Thermal_Control_29E: 8 HOST
|
||||
SG_ Driver_Seat_Ventilation_On : 0|2@1+ (1,0) [0|3] "" T2G_THERMAL
|
||||
SG_ Driver_Seat_Ventilation_Mode : 2|2@1+ (1,0) [0|3] "" T2G_THERMAL
|
||||
SG_ Driver_Seat_Heating_On : 4|2@1+ (1,0) [0|3] "" T2G_THERMAL
|
||||
SG_ Driver_Seat_Ventilation_Gear : 16|4@1+ (1,0) [0|5] "level" T2G_THERMAL
|
||||
SG_ Driver_Seat_Heating_Gear : 20|4@1+ (1,0) [0|5] "level" T2G_THERMAL
|
||||
SG_ Driver_Seat_Ventilation_On : 0|2@1+ (1,0) [0|3] "" T2G_SEAT
|
||||
SG_ Driver_Seat_Ventilation_Mode : 2|2@1+ (1,0) [0|3] "" T2G_SEAT
|
||||
SG_ Driver_Seat_Heating_On : 4|2@1+ (1,0) [0|3] "" T2G_SEAT
|
||||
SG_ Driver_Seat_Ventilation_Gear : 16|4@1+ (1,0) [0|3] "level" T2G_SEAT
|
||||
SG_ Driver_Seat_Heating_Gear : 20|4@1+ (1,0) [0|3] "level" T2G_SEAT
|
||||
|
||||
BO_ 974 T2G_Seat_Thermal_Mode_3CE: 8 HOST
|
||||
SG_ Driver_Seat_Thermal_Mode : 4|2@1+ (1,0) [0|3] "" T2G_THERMAL
|
||||
SG_ Driver_Seat_Thermal_Mode : 4|2@1+ (1,0) [0|3] "" T2G_SEAT
|
||||
|
||||
BO_ 1274 T2G_Seat_Thermal_Status_4FA: 8 T2G_THERMAL
|
||||
BO_ 1274 T2G_Seat_Thermal_Status_4FA: 8 T2G_SEAT
|
||||
SG_ Driver_Seat_Ventilation_Status : 0|3@1+ (1,0) [0|7] "level" HOST
|
||||
SG_ Driver_Seat_Heating_Status : 3|3@1+ (1,0) [0|7] "level" HOST
|
||||
|
||||
BO_ 768 T2G_Seat_Move_Command_300: 8 HOST
|
||||
SG_ Opcode : 0|8@1+ (1,0) [0|255] "" T2G_MOVE
|
||||
SG_ Motor_Selector : 8|2@1+ (1,0) [0|3] "" T2G_MOVE
|
||||
SG_ Direction : 10|2@1+ (1,0) [0|3] "" T2G_MOVE
|
||||
SG_ Protocol_Version : 12|2@1+ (1,0) [0|3] "" T2G_MOVE
|
||||
SG_ Sequence : 16|16@1+ (1,0) [0|65535] "" T2G_MOVE
|
||||
SG_ Param_A : 32|16@1+ (1,0) [0|65535] "" T2G_MOVE
|
||||
SG_ Param_B : 48|16@1+ (1,0) [0|65535] "" T2G_MOVE
|
||||
SG_ Opcode : 0|8@1+ (1,0) [0|255] "" T2G_SEAT
|
||||
SG_ Motor_Selector : 8|2@1+ (1,0) [0|3] "" T2G_SEAT
|
||||
SG_ Direction : 10|2@1+ (1,0) [0|3] "" T2G_SEAT
|
||||
SG_ Protocol_Version : 12|2@1+ (1,0) [0|3] "" T2G_SEAT
|
||||
SG_ Sequence : 16|16@1+ (1,0) [0|65535] "" T2G_SEAT
|
||||
SG_ Param_A : 32|16@1+ (1,0) [0|65535] "" T2G_SEAT
|
||||
SG_ Param_B : 48|16@1+ (1,0) [0|65535] "" T2G_SEAT
|
||||
|
||||
BO_ 769 T2G_Seat_Move_System_Status_301: 8 T2G_MOVE
|
||||
SG_ Ack : 0|3@1+ (1,0) [0|7] "" HOST
|
||||
SG_ Reject_Reason : 3|3@1+ (1,0) [0|7] "" HOST
|
||||
SG_ Shutdown_Inhibit : 6|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Safety_Inhibit : 7|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Last_Opcode : 8|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Active_Mask : 12|4@1+ (1,0) [0|15] "" HOST
|
||||
BO_ 769 T2G_Seat_Move_System_Status_301: 8 T2G_SEAT
|
||||
SG_ Ack : 0|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ System_State : 4|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Reject_Reason : 8|8@1+ (1,0) [0|255] "" HOST
|
||||
SG_ Last_Sequence : 16|16@1+ (1,0) [0|65535] "" HOST
|
||||
SG_ Retry_Mask : 32|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Record_Clean : 36|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Watchdog_Reset : 37|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Record_Valid : 38|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Safety_Fault : 40|8@1+ (1,0) [0|255] "" HOST
|
||||
SG_ Config_Sequence : 48|16@1+ (1,0) [0|65535] "" HOST
|
||||
SG_ Last_Opcode : 32|8@1+ (1,0) [0|255] "" HOST
|
||||
SG_ Active_Mask : 40|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Safety_Inhibit : 44|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Calibration_Busy : 46|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Fault_Summary : 47|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Faulted_Mask : 48|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Position_Valid_Mask : 52|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Alive : 56|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Firmware_Revision : 60|4@1+ (1,0) [0|15] "" HOST
|
||||
|
||||
BO_ 770 T2G_Seat_Move_Motor_Status_302: 8 T2G_MOVE
|
||||
BO_ 770 T2G_Seat_Move_Motor_Status_302: 8 T2G_SEAT
|
||||
SG_ Motor_Sub_ID : 0|8@1+ (1,0) [0|3] "" HOST
|
||||
SG_ Task_State : 8|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Result : 12|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Direction : 16|2@1+ (1,0) [0|3] "" HOST
|
||||
SG_ Motor_Direction : 16|2@1+ (1,0) [0|3] "" HOST
|
||||
SG_ Active : 18|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Retried : 19|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Position_Valid : 20|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Position_Valid : 19|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Near_Endpoint : 20|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Far_Endpoint : 21|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Stall : 22|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Driver_Fault : 23|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Motor_Sequence : 24|16@1+ (1,0) [0|65535] "" HOST
|
||||
SG_ Value_X100 : 40|16@1+ (1,0) [0|65535] "" HOST
|
||||
SG_ Value_X100 : 40|16@1+ (1,0) [0|10000] "0.01%" HOST
|
||||
SG_ Duty_Percent : 56|8@1+ (1,0) [0|100] "%" HOST
|
||||
|
||||
BO_ 771 T2G_Seat_Move_Diagnostic_303: 8 T2G_MOVE
|
||||
BO_ 771 T2G_Seat_Move_Diagnostic_303: 8 T2G_SEAT
|
||||
SG_ Motor_Sub_ID : 0|8@1+ (1,0) [0|3] "" HOST
|
||||
SG_ Last_Motor_Event : 8|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Fault_Flags : 12|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Hall_Count : 16|16@1+ (1,0) [0|65535] "pulse" HOST
|
||||
SG_ Max_Hall_Count : 32|16@1+ (1,0) [0|65535] "pulse" HOST
|
||||
SG_ Max_Speed_Pps_X100 : 48|16@1+ (1,0) [0|65535] "pulse/s*100" HOST
|
||||
SG_ Hall_Speed_Half_Pps : 48|8@1+ (0.5,0) [0|127.5] "pulse/s" HOST
|
||||
SG_ Retry_Count : 56|4@1+ (1,0) [0|15] "" HOST
|
||||
SG_ Diagnostic_Alive : 60|4@1+ (1,0) [0|15] "" HOST
|
||||
|
||||
BO_ 772 T2G_Seat_Firmware_Identity_Request_304: 8 HOST
|
||||
SG_ Identity_Magic : 0|32@1+ (1,0) [0|4294967295] "" T2G_MOVE
|
||||
SG_ Required_Protocol : 32|8@1+ (1,0) [0|255] "" T2G_MOVE
|
||||
BO_ 772 T2G_Seat_Move_Current_Diagnostic_304: 8 T2G_SEAT
|
||||
SG_ Motor_Sub_ID : 0|8@1+ (1,0) [0|3] "" HOST
|
||||
SG_ Current_Sample_Valid : 8|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Current_Baseline_Valid : 9|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ High_Current : 10|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Hall_Activity_Low : 11|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Current_Calibrating : 12|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Current_Raw : 16|16@1+ (1,0) [0|4095] "raw" HOST
|
||||
SG_ Current_Baseline_Raw : 32|16@1+ (1,0) [0|4095] "raw" HOST
|
||||
SG_ Stall_Current_Delta_Threshold_Raw : 48|16@1+ (1,0) [0|65535] "raw" HOST
|
||||
|
||||
BO_ 773 T2G_Seat_Firmware_Identity_Response_305: 8 T2G_MOVE
|
||||
SG_ Identity_Magic : 0|32@1+ (1,0) [0|4294967295] "" HOST
|
||||
SG_ Firmware_Major : 32|8@1+ (1,0) [0|255] "" HOST
|
||||
SG_ Firmware_Minor : 40|8@1+ (1,0) [0|255] "" HOST
|
||||
SG_ Firmware_Patch : 48|8@1+ (1,0) [0|255] "" HOST
|
||||
SG_ Capability_Mask : 56|8@1+ (1,0) [0|255] "" HOST
|
||||
BO_ 773 T2G_Seat_Thermal_Current_Diagnostic_305: 8 T2G_SEAT
|
||||
SG_ Fan_Current_Sample_Valid : 0|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Heater_Current_Sample_Valid : 1|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Fan_Running : 8|1@1+ (1,0) [0|1] "" HOST
|
||||
SG_ Heater_Level : 9|2@1+ (1,0) [0|3] "level" HOST
|
||||
SG_ Fan_Current_Raw : 16|16@1+ (1,0) [0|4095] "raw" HOST
|
||||
SG_ Heater_Current_Raw : 32|16@1+ (1,0) [0|4095] "raw" HOST
|
||||
SG_ Fan_Adc_Error_Count : 48|8@1+ (1,0) [0|255] "" HOST
|
||||
SG_ Heater_Adc_Error_Count : 56|8@1+ (1,0) [0|255] "" HOST
|
||||
|
||||
VAL_ 670 Driver_Seat_Ventilation_On 0 "invalid" 1 "on" 2 "off" 3 "reserved" ;
|
||||
VAL_ 670 Driver_Seat_Heating_On 0 "invalid" 1 "on" 2 "off" 3 "reserved" ;
|
||||
VAL_ 769 Ack 0 "idle" 1 "accepted" 2 "rejected" 3 "conflict" 4 "inhibited" 5 "storage_error" ;
|
||||
VAL_ 769 Ack 0 "none" 1 "accepted" 2 "rejected" 3 "duplicate" 4 "stop_all_accepted" ;
|
||||
VAL_ 770 Task_State 0 "idle" 1 "accepted" 2 "position_run" 3 "timed_run" 4 "calibration" 5 "stopping" 6 "complete" 7 "fault" ;
|
||||
VAL_ 770 Result 0 "none" 1 "running" 2 "ok" 3 "stopped_by_cmd" 4 "endpoint_reached" 5 "stall" 6 "timeout" 7 "driver_fault" 8 "hall_fault" 9 "invalid_cmd" 10 "interlocked" 11 "calibration_failed" ;
|
||||
|
||||
@@ -3,8 +3,8 @@ kind: PlatformManifest
|
||||
metadata:
|
||||
id: t2g-seat-bench-platform
|
||||
name: T2G CYT4BFBCJE seat hardware bench
|
||||
version: 1.1.0
|
||||
description: HIL bench using the unified Seat_Controller_demo firmware derived from the three verified seat demos.
|
||||
version: 2.0.0
|
||||
description: HIL bench using the self-contained 2026-07-30 Seat_Controller_demo firmware and four-axis calibration.
|
||||
spec:
|
||||
platform: t2g_seat_bench
|
||||
execution_enabled: true
|
||||
|
||||
Reference in New Issue
Block a user