# Controller Atlas — งานสร้าง Modbus wiki library

## คำขอ

ค้นหา register map ของ temperature controller จาก CAREL, Dixell, Danfoss และ Emerson CDU แล้วสร้างเว็บ wiki library พร้อมเอกสาร Markdown

ผู้ใช้ยืนยันว่า Emerson CDU หมายถึง **Condensing Unit ของระบบทำความเย็น**

## ผลลัพธ์ ณ 2 ตุลาคม 2026

| รายการ | จำนวน |
|---|---:|
| รุ่น / ตระกูล / application ที่รวบรวม | 408 |
| รายการที่พบตาราง register ในเอกสาร | 37 |
| ไฟล์ XWEB แยก firmware / format | 1587 |
| ตัวอย่าง register ที่ถอดและตรวจ | 26 |
| CAREL | 20 |
| Dixell | 357 |
| Danfoss | 28 |
| Emerson CDU | 3 |

**สถานะความครบถ้วน:** ได้คลังเอกสารสาธารณะที่ค้นพบในรอบนี้ ยังไม่ใช่ register map ครบทุก SKU หรือ firmware ของผู้ผลิตทั้ง 4 ราย ตัวเลขรุ่นรวม controller ที่เกี่ยวข้องกับระบบทำความเย็น เช่น compressor, valve, humidity และ I/O ในดัชนี Dixell ด้วย

37 รายการที่พบ map อาจใช้เอกสารแพลตฟอร์มร่วมกัน จึงไม่ใช่คู่มืออิสระ 37 ฉบับ และไฟล์ XWEB 1,587 ไฟล์อาจเป็น firmware เดียวกันต่างรูปแบบ legacy/EVO จึงไม่ใช่ firmware ที่ไม่ซ้ำ 1,587 รุ่น

## หน้าเว็บและการใช้งาน

- ชื่อเว็บ: Controller Atlas — Modbus Library
- เลือกแบรนด์จากแถบด้านซ้าย
- ค้นด้วยชื่อรุ่น ชื่อ alias หรือรหัส firmware; ปุ่ม `/` โฟกัสช่องค้นหา
- กรองเอกสาร: พบ register map / XWEB library / คู่มือ / ต้องขอผู้ผลิต
- เปิดรายละเอียดเพื่อดู protocol, revision, หมายเหตุ, ตัวอย่าง register และเอกสารต้นฉบับ
- ค้น firmware ภายในหน้ารุ่น และเปิดไฟล์จากผู้ผลิตโดยตรง
- ลิงก์ตรงต่อรุ่นใช้ `#model/<id>` และคัดลอกได้จากหน้ารายละเอียด
- ดาวน์โหลด `PROJECT.md`, `SOURCES.md`, `LIBRARY.md` ได้จากเว็บ
- รองรับหน้าจอเล็กและคีย์บอร์ด; ปิดหน้ารายละเอียดด้วย Escape

## เกณฑ์การจัดสถานะ

| สถานะ | หลักฐานที่ต้องมี |
|---|---|
| พบตาราง register | คู่มือมีคอลัมน์ Modbus address/PNU หรืออธิบาย identification ของ Modbus |
| XWEB library | มีชื่อรุ่น รหัส firmware และลิงก์แพ็กเกจในดัชนี Copeland; ยังไม่ยืนยัน generic mapping |
| คู่มือ / ต้องตรวจ map | พบคู่มือ แต่ยังขาด register table หรือคำอธิบายแปลง address |
| ต้องขอผู้ผลิต | ต้องจับคู่ board/firmware และขอ map ที่ตรงจากผู้ผลิตหรือ OEM |

## หลักการข้อมูล

1. ไม่ใช้หมายเลข parameter บนหน้าจอแทน Modbus address โดยไม่มีหลักฐาน
2. ไม่แปลง PNU หรือ register reference เป็น zero-based offset อัตโนมัติ
3. ไม่ใช้ scale ของรุ่นหนึ่งกับอีกรุ่น เช่น ERC 211 ในคู่มือ SW 4.13 ใช้ scale 0.01 ในหลายรายการ ขณะที่ AK-CC55 Compact SW 1.9x ใช้ 0.1
4. คำว่า Float ในคู่มือ Danfoss ไม่เพียงพอที่จะสรุปว่าเป็น IEEE-754 32-bit
5. CAREL SPV และ Modbus มีคอลัมน์ต่างกัน บางรายการให้ตัวเลขไม่เท่ากัน
6. แยก generic model, firmware และ OEM application; XR10CX ของ PVI ไม่ใช่หลักฐานว่าใช้ mapping เดียวกับ XR10CX ทุกเครื่อง
7. XWEB มีโปรไฟล์ของผู้ผลิตอื่นปะปนอยู่ จึงไม่นับทั้งหมดเป็น Dixell
8. เก็บเฉพาะ URL ของคู่มือในเว็บ; สำเนาที่ดาวน์โหลดใช้ตรวจอยู่ใน `research/cache/`

## รายการที่ต้องหาต่อเพื่อให้ใกล้คำว่า “ทุกรุ่น”

### CAREL

- ขอ supervisory variable list สำหรับ MPXPRO, MPXone, MPXzero, iJF และ iJW ตาม firmware/application
- ยืนยัน direct Modbus mapping ของ ir33 รุ่นเดิม, SmartCella และ µChiller 3
- ตรวจ protocol ของ easy/PJEZ ตาม SKU; serial port ไม่ได้ยืนยันว่าเป็น Modbus
- สาย pCO/c.pCO และ application OEM ต้องอาศัยโปรแกรม/ไฟล์ตัวแปรของผู้ผลิตเครื่อง ไม่มี map กลางที่ใช้ได้ทุก application
- สำรวจรุ่นเลิกผลิตและรุ่นอื่นที่ยังไม่ได้เข้าคลัง; ไม่ถือว่ารุ่นที่ไม่มีในคลังไม่มี Modbus

### Dixell

- ขอ communication register tables ตาม firmware สำหรับ XR/XW/XM/XT/XH/XC/XER และตระกูลอื่นที่พบ
- แพ็กเกจ XWEB ที่มีชื่อ JSON อาจเป็น payload เฉพาะโปรแกรม ไม่ถือเป็น plain register map
- การมีรุ่นอยู่ใน XWEB ไม่ยืนยันว่าเป็น Modbus ทุก variant; รุ่นเก่าบางกลุ่มมี protocol ต่างกัน
- คู่มือ XR10CX ของ PVI มีตัวอย่าง setpoint ในหน้า 4 ต่างจากตารางหน้า 12 ต้องให้ OEM ยืนยันก่อนเขียนค่า

### Danfoss

- แหล่งที่ตรวจครอบคลุม AK-CC, AK-RC, EKC, Optyma และ ERC 21X บาง software
- เติมตารางของ ERC 11x, EKC 223/224 และรุ่นอื่นที่ไม่ปรากฏในดัชนีชุดนี้ เช่น AK-CC 240/750 ตามรุ่นจริง
- ขอ direct Modbus identification ของ EKC 202A ที่พบเป็น DataBlock
- ซ่อมแหล่ง AK-CC55 Single Coil 1.7x ที่ลิงก์เสีย โดยหาเอกสาร revision ตรงกันจากผู้ผลิต
- ขยาย software revision และ order code ให้ครบจาก inventory ของเครื่องจริง

### Emerson / Copeland CDU

- ขอ Modbus map ของ XCM25D/CoreSense ที่ตรงกับ unit model, control-board code และ firmware
- จับคู่ ZX, ZXD, ZXL, ZXV และผลิตภัณฑ์ CDU อื่นตาม controller ที่ติดตั้งจริง
- แพ็กเกจ XWEB กับคู่มือ integration ช่วยเชื่อมต่อระบบที่รองรับ แต่ยังไม่ใช่หลักฐานของ generic register address

## โครงสร้างไฟล์

```text
controller-wiki/
  dist/
    index.html           หน้าคลังข้อมูล
    style.css            รูปแบบและ responsive layout
    app.js               ค้นหา กรอง หน้ารายละเอียด และ deep links
    data.json            ข้อมูลรุ่น เอกสาร firmware และตัวอย่าง register
    favicon.svg
    PROJECT.md           สรุปงานและข้อจำกัด
    SOURCES.md           แหล่งข้อมูลและวิธีตรวจ
    LIBRARY.md           สารบัญครบพร้อมลิงก์ firmware
  research/
    *downloads.json      ผลการดาวน์โหลดเอกสาร
    dixell-rows.json      snapshot XWEB EVO
    dixell-legacy-rows.json
    danfoss-links.json    ลิงก์ที่อ่านจาก PDF index
    catalog-summary.json
    cache/               ต้นฉบับในเครื่อง; ไม่เผยแพร่
  scripts/
    build_catalog.py     รวมดัชนีกับข้อมูลที่ตรวจแล้ว
    build_markdown.py    สร้าง Markdown จากข้อมูลเดียวกับเว็บ
    validate.py          ตรวจโครงสร้างและความสอดคล้อง
  .openai/hosting.json    Site identity และ static output
```

## การเปิดในเครื่อง

```sh
cd controller-wiki
python3 -m http.server 8765 --bind 127.0.0.1 --directory dist
```

เปิด `http://127.0.0.1:8765/` ควรเปิดผ่าน HTTP เพราะเว็บอ่าน `data.json` ด้วย fetch

## การแก้ไขและอัปเดต

```sh
python3 scripts/build_catalog.py
python3 scripts/build_markdown.py
python3 scripts/validate.py
node --check dist/app.js
```

เพิ่มหลักฐานและรุ่นใน `scripts/build_catalog.py` ก่อนสร้างข้อมูลใหม่ อย่าแก้ `data.json` เพียงอย่างเดียวเพราะจะถูกสร้างทับ การอัปเดตดัชนีผู้ผลิตต้องตรวจการเปลี่ยนชื่อ รุ่น OEM และลิงก์เสียอีกครั้ง

## เกณฑ์ส่งมอบ

- [x] มีทั้ง 4 แบรนด์ตามขอบเขตที่ผู้ใช้ยืนยัน
- [x] มีเว็บค้นหา กรอง และอ่านรายละเอียด
- [x] เอกสารอ้างอิงระบุรุ่นและ revision เท่าที่ตรวจพบ
- [x] แยก map, package, manual และรายการต้องขอเพิ่ม
- [x] มี Markdown สรุปงาน สารบัญ และแหล่งข้อมูล
- [ ] register map ครบทุก SKU/firmware ของทั้ง 4 ผู้ผลิต — ยังไม่ยืนยัน
- [ ] ทดสอบสื่อสารกับ hardware จริง — ไม่ได้อยู่ในงานรอบนี้

ไม่มีการส่งอีเมลขอเอกสารผู้ผลิตหรือเชื่อมต่อ controller จริงในงานนี้

## Serial settings และภาพอุปกรณ์

มีข้อมูลการสื่อสารจากคู่มือ 92 รายการ และภาพอุปกรณ์ / หน้าปัดจากผู้ผลิต 122 รายการ บางรุ่นยืนยันได้เพียงบางค่า ส่วนช่องที่ไม่มีหลักฐานแสดง “ยังไม่ยืนยัน”

- [ตาราง Serial และภาพทั้งหมด](SERIAL_SETTINGS.md) ใช้ข้อมูลเดียวกับหน้ารายละเอียด
- รูปอยู่ใน `dist/images/` พร้อมที่มาที่ `research/device-image-manifest.json`
- แก้ข้อมูลใน `scripts/build_device_details.py` และ `research/dixell-device-details.json`
- ค่าจากคู่มืออาจต่างจาก OEM หรือค่าที่ผู้ติดตั้งเปลี่ยนไว้ และยังไม่ได้ทดสอบกับ controller จริง

```sh
python3 scripts/build_device_details.py
python3 scripts/build_catalog.py
python3 scripts/build_markdown.py
python3 scripts/build_serial_markdown.py
python3 scripts/validate.py
node --check dist/app.js
```
