Factor ใน WinOLS คืออะไร?
ทำไมถึงเป็น 0.125

สรุปจากคลิป พื้นฐานสอนรีแมพ EP 0.00001 · โดยครูปิง P9 SPEED
· อ่าน 5 นาที

คำตอบสั้นๆ

Factor คือตัวคูณที่ใช้แปลง "ค่าดิบ" (Raw) ที่เก็บอยู่ในไฟล์ ECU ให้กลายเป็น "ค่าจริง" (Physical) เช่น รอบเครื่อง แรงดันราง หรืออุณหภูมิ กล่อง ECU จึงไม่ได้เก็บ "6,000 รอบ" ไว้ตรงๆ แต่เก็บเป็น 48,000 แล้วค่อยคูณ 0.125 กลับเป็น 6,000 ตอนใช้งาน

ค่าจริง = Raw × Factor

แผนผัง: ค่าดิบ 48,000 คูณ Factor 0.125 ได้ค่าจริง 6,000 RPM และย้อนกลับด้วยการหาร 0.125 RAW · ค่าดิบในไฟล์ 48,000 สิ่งที่ WinOLS โชว์ถ้ายังไม่ตั้ง Factor × FACTOR 0.125 PHYSICAL · ค่าจริง 6,000 RPM ค่าที่กล่องเอาไปใช้จริง ÷ 0.125 กลับเป็นค่าดิบ แผนผัง (แนวตั้ง): ค่าดิบ 48,000 คูณ Factor 0.125 ได้ค่าจริง 6,000 RPM และหารกลับ RAW · ค่าดิบในไฟล์ 48,000 สิ่งที่ WinOLS โชว์ถ้ายังไม่ตั้ง Factor × FACTOR 0.125 PHYSICAL · ค่าจริง 6,000 RPM ค่าที่กล่องเอาไปใช้จริง ÷ 0.125 กลับเป็นค่าดิบ
เส้นทางของตัวเลข: ไฟล์เก็บค่าดิบ → กล่องคูณ Factor → ได้ค่าจริง (และหารกลับเมื่อจะเขียนลงไฟล์)

3 Words

3 คำที่ต้องรู้ก่อนเปิดตาราง

Raw — ค่าดิบ

ตัวเลขที่เก็บอยู่ในไฟล์จริงๆ เช่น 48,000

Factor — ตัวคูณ

ตัวแปลงค่าดิบให้เป็นค่าจริง เช่น 0.125

Physical — ค่าจริง

ค่าที่มีหน่วย เช่น RPM, MPa, °C, %

รู้ค่าดิบ → ค่าจริง = Raw × Factor

รู้ค่าจริง → Raw = ค่าจริง ÷ Factor

บางตารางมี Offset ด้วย → ค่าจริง = Raw × Factor + Offset

Example

6,000 รอบ ในไฟล์เก็บเป็นเลขอะไร

หลัก Fixed-Point แบบง่ายที่สุด: สเกลค่าจริงให้ไปอยู่ในโลกของจำนวนเต็ม (integer) ที่กล่องคำนวณได้เร็ว

ขั้นที่ 1 — เก็บลงไฟล์

6,000 ÷ 0.125 = 48,000

ไฟล์จึงเก็บเลข 48,000 ไม่ใช่ 6,000

ขั้นที่ 2 — กล่องเอาไปใช้

48,000 × 0.125 = 6,000 RPM

คูณ Factor กลับ ได้ค่าจริงเหมือนเดิม

WinOLS

ทำไมเปิด WinOLS แล้วเจอเลขแปลกๆ

WinOLS ไม่ได้รู้เองว่าเลขในไฟล์คืออะไร ถ้ายังไม่ได้ตั้ง Factor (Factor ยังเป็น 1) เราจะเห็น 48,000 เป็นเลขดิบเฉยๆ ซึ่งมือใหม่แยกไม่ออกว่านี่คือรอบเครื่อง 6,000 รอบ

และถ้าตั้ง Factor ผิด ต่อให้หาแกนถูก ตัวเลขที่อ่านได้ก็ผิดทั้งตาราง

"Factor ไม่ใช่เลขประดับตาราง แต่คือกุญแจที่ทำให้เรามองค่าดิบเป็นค่าจริงได้ถูกต้อง"

— ครูปิง · จากคลิป EP 0.00001 นาที 8:31

Power of 2

ทำไมต้อง 0.125 — ไม่ใช่เลขสุ่ม

0.125 = 1/8 = 2⁻³

Factor แบบนี้อยู่ใน "โลกของ Power of 2" ไม่ใช่เลขทศนิยมสวยๆ ที่ตั้งขึ้นมาลอยๆ

หาร 8 = เลื่อนบิตขวา 3 ครั้ง

ECU ทำ Bit Shift ได้เร็วกว่าการหาร วิศวกรจึงเลือก Factor ที่เป็น Power of 2

1 clock เทียบ 2-12 clock

Bit Shift ใช้ราว 1 clock cycle ส่วนการหารปกติใช้ประมาณ 2-12 clock cycle (ขึ้นกับ CPU)

Factor ส่วนใหญ่ที่เราเห็นเวลาจูน มีเหตุผลทางวิศวกรรมรองรับ ไม่ใช่เลขที่ตั้งขึ้นมาลอยๆ

Examples

Factor ที่เจอในตัวอย่าง

ไฟล์เดียวไม่ได้ใช้ Factor ตัวเดียว แต่ละตารางมี Factor ของมันเอง

Factorเศษส่วนใช้กับ (ในตัวอย่าง)ค่าจริง → ค่าดิบ
0.1251/8รอบเครื่อง (RPM)6,000 RPM → 48,000
0.00781251/128โหลด (%)100% → 12,800
0.0156251/64แรงดันราง (MPa)150 MPa → 9,600
0.06251/16อุณหภูมิ (°C)80 °C → 1,280
0.78125100/128—ตัวหารยังเป็น 128 = 2⁷
⚠️ ตัวเลขชุดนี้เป็นค่าที่ตั้งในไฟล์จำลองเพื่อการสอน ไฟล์จริงแต่ละรุ่นและแต่ละตารางใช้ Factor ต่างกัน · แกนอุณหภูมิเก็บแบบมีเครื่องหมาย (signed) เพราะอุณหภูมิติดลบได้

Caution

ของจริงซับซ้อนกว่านี้

มีมากกว่า Raw × Factor

บางตารางมี Offset หรือสูตรที่ซับซ้อนกว่านั้น และไฟล์จริงมีอีกหลายชั้น เช่น การจัดการ Overflow การคูณก่อนหารเพื่อรักษาความละเอียด การเลือก Factor ให้พอดีกับช่วงของเซ็นเซอร์ — ส่วนนี้เก็บไว้ในคอร์สครับ

Factor ต้องไปคู่กับ Byte Order

HiLo หรือ LoHi ตั้งผิดตัวใดตัวหนึ่ง ค่าก็เพี้ยนทั้งตาราง (ในคลิปโชว์ให้ดูที่นาที 45:24 ว่าตารางพังต่อหน้าแล้วกลับมาสวยเมื่อตั้งถูก)

ดูคำอธิบายในคลิป

FAQ

คำถามที่พบบ่อยเรื่อง Factor

Factor กับ Offset ต่างกันยังไง?

Factor คือตัวคูณ ส่วน Offset คือค่าที่บวกเพิ่ม สูตรเต็มคือ ค่าจริง = Raw × Factor + Offset ตารางส่วนใหญ่ใช้แค่ Factor แต่บางตารางมี Offset หรือสูตรที่ซับซ้อนกว่านั้น

ถ้าตั้ง Factor ผิดจะเกิดอะไรขึ้น?

ตัวเลขทั้งตารางจะอ่านผิด ต่อให้แกนถูก เช่น เห็น 48,000 แทนที่จะเป็น 6,000 รอบ

ทำไม Factor ไม่ใช้เลขกลมๆ อย่าง 0.1?

เพราะ ECU คำนวณด้วยจำนวนเต็ม และ Bit Shift ทำได้เร็วกว่าการหาร Factor ที่เป็น Power of 2 (1/8, 1/64, 1/128) จึงทำงานได้เร็วกว่า

ครูปิง ผู้เขียนบทความ

เขียนโดย

ครูปิง · P9 SPEED - Remap & Tuning Lab

โปรแกรมเมอร์ C/C++/Assembly ที่แกะกล่อง ECU (Reverse Engineering) มา 15 ปี+ สอนรีแมพตัวต่อตัว 8 ปี+ กว่า 95 รุ่น · ดูประวัติเต็ม →

Next

บทความนี้สรุปจากคลิปพื้นฐาน EP 0.00001

ที่เหลือเก็บไว้ในคอร์สครับ — สอนเดือนละไม่เกิน 3 ท่าน

สายตรงหาผม Facebook LINE