ตารางคำสั่งเฉพาะ (รุ่น 401 · YP461)
หน้านี้สำหรับรุ่นที่ใช้ คำสั่งเฉพาะของผู้ผลิต ไม่ใช่ Modbus —
AMR-THS401 และ AMR-YP461
Note
รุ่น AMR-THS501 และ AMR-YP561 ใช้ Modbus ดูตารางคำสั่ง Modbusแทน
ตั้งค่าพอร์ต
ที่อยู่ 0–254 (255 = ส่งหาทุกตัว)
baud rate 115200 (ค่าจากโรงงาน)
รูปแบบ 8 บิต · ไม่มีพาริตี้ · หยุด 1 บิต
โครงเฟรม
ที่เราส่งไป
02 │ ที่อยู่ │ ความยาว │ คำสั่ง │ ข้อมูล… │ XOR │ 03
ที่หัวอ่านตอบกลับ
AA │ ที่อยู่ │ ความยาว │ คำสั่ง │ ข้อมูล… │ XOR │ BB
ช่อง |
ความหมาย |
|---|---|
ไบต์แรก |
|
ความยาว |
จำนวนไบต์ของ คำสั่ง + ข้อมูล (ไม่นับหัวท้ายและ XOR) |
XOR |
เอาทุกไบต์ตั้งแต่ ที่อยู่ ถึงก่อนช่อง XOR มา XOR กัน |
ไบต์ท้าย |
|
Important
ตรวจความถูกต้องด้วย XOR ไบต์เดียว ไม่ใช่ CRC16
ต่างจาก Modbus สิ้นเชิง — เขียนโค้ดสำหรับรุ่นหนึ่งแล้วเอาไปใช้กับอีกรุ่นไม่ได้เลย
คำสั่งที่ใช้บ่อย
ระบบ
รหัส |
ใช้ทำ |
|---|---|
|
รีเซ็ตหัวอ่าน |
|
ตั้งที่อยู่ |
|
ตั้ง baud rate |
|
อ่านหมายเลขเครื่อง |
|
ตั้งการอ่านและส่งเองอัตโนมัติ |
ไฟและเสียง
รหัส |
ใช้ทำ |
|---|---|
|
ไฟแดง ติด / ดับ |
|
ไฟเหลือง ติด / ดับ |
|
ไฟเขียว กะพริบ |
|
ไฟแดง / เหลือง กะพริบ |
|
เสียง เปิด / ปิด |
|
เสียงเป็นจังหวะ |
Warning
🔴 ไม่มีคำสั่งเปิดไฟเขียวค้าง มีแต่กะพริบ
ต่างจากไฟแดงและเหลืองที่มีทั้งติดและดับ ถ้าออกแบบระบบให้ไฟเขียวติดค้าง เพื่อบอกสถานะ "พร้อมทำงาน" จะทำไม่ได้บนรุ่นนี้
ป้าย ISO15693 (ชนิดที่ใช้กับ AGV)
รหัส |
ใช้ทำ |
|---|---|
|
อ่าน UID ของป้าย |
|
อ่านข้อมูลในบล็อก |
|
เขียนข้อมูลลงบล็อก |
|
ล็อกบล็อกไม่ให้เขียนซ้ำ |
|
อ่านข้อมูลของป้าย |
Warning
🔴 บล็อกละ 4 ไบต์เสมอ และเฟรมมีช่อง "จำนวนบล็อก"
อยากเขียน 8 ไบต์ = เขียน 2 บล็อกติดกัน ไม่ใช่บล็อกเดียวที่ยาว 8 ไบต์ ใส่จำนวนบล็อกผิดแล้วหัวอ่านจะไม่ยอมรับเฟรม
ตัวอย่างเฟรม
อ่าน UID ของป้าย (ที่อยู่ 0 = ส่งหาทุกตัว)
02 00 05 10 06 00 00 00 13 03
│ │ │ │ └──┬──┘ │ │ └ ไบต์ท้าย
│ │ │ │ │ │ └──── XOR
│ │ │ │ │ └─────── ข้อมูล (ค่าคงที่ตามคู่มือ)
│ │ │ └───────────────── คำสั่ง 0x10
│ │ └──────────────────── ความยาว = 5 (คำสั่ง 1 + ข้อมูล 4)
│ └─────────────────────── ที่อยู่
└────────────────────────── ไบต์แรก
รีเซ็ตหัวอ่าน
ส่ง 02 00 01 3B 3A 03
ตอบ AA 00 02 3B 00 39 BB
เขียน 8 ไบต์ลงบล็อก 5 (= 2 บล็อก)
02 01 0C 12 02 05 02 11 22 33 44 55 66 77 88 92 03
│ │ │ │ └────── 8 ไบต์ ──────┘
│ │ │ └ จำนวนบล็อก = 2
│ │ └─── บล็อกเริ่ม = 5
│ └────── Flag 0x02 (บล็อกธรรมดา)
└───────── คำสั่ง 0x12 เขียน
ตรวจโค้ดก่อนต่อของจริง
เอาเฟรมตัวอย่างข้างบนไปป้อนตัวคำนวณ XOR ของคุณ ถ้าได้ค่าตรงกันแปลว่าโค้ดถูก เหลือแค่เรื่องสายกับค่าตั้ง
02 00 01 3B 3A 03 -> XOR ของ 00 ^ 01 ^ 3B = 3A ✅
AA 00 02 3B 00 39 BB -> XOR ของ 00 ^ 02 ^ 3B ^ 00 = 39 ✅
หรือใช้เครื่องมือทดสอบ ซึ่งเติม XOR ให้อัตโนมัติเมื่อส่งเฟรมเอง