การเชื่อมต่อ Mitsubishi MC Protocol¶
PLC ของ Mitsubishi (รุ่น A, QnA, Q, L และ R) ไม่ได้พูดภาษา Modbus — แต่ใช้ โปรโตคอลของตัวเองที่เรียกว่า MC Protocol ผ่าน Ethernet แทน หากต้องการ คุยกับ PLC เหล่านี้จากโฟลว์ ให้ติดตั้ง node-red-contrib-mcprotocol-ind จากแท็บ Install ของ Manage palette — ดู การจัดการ Palette แพ็กเกจนี้ไม่ได้ติดตั้งมาให้บน เกตเวย์นี้ตั้งแต่ต้น
Note
ยังมีแพ็กเกจ node-red-contrib-mcprotocol ของผู้เขียนคนเดียวกันที่ไม่มี
คำต่อท้าย -ind — ตัวที่มี -ind ("independent") เป็นเวอร์ชันที่ยังพัฒนา
ต่ออยู่ และเป็นตัวที่คู่มือนี้ใช้อธิบาย
หลังติดตั้งแล้ว กรอง palette ด้วยคำว่า "mc" จะเจอโหนดใหม่ 2 ตัวภายใต้ หมวด MITSUBISHI:

| โหนด | หน้าที่ |
|---|---|
| Ind MC Protocol Connection | config node ที่ใช้ร่วมกัน — การเชื่อมต่อ TCP/UDP หนึ่งชุดไปยัง PLC ที่โหนด Read/Write กี่ตัวก็นำไปใช้ซ้ำได้ |
| Ind MC Read | อ่านค่าจาก device หนึ่งตัวขึ้นไปบน PLC |
| Ind MC Write | เขียนค่าไปยัง device หนึ่งตัวขึ้นไปบน PLC |
ตั้งค่าการเชื่อมต่อ¶
ดับเบิลคลิกโหนด Read หรือ Write แล้วคลิกไอคอนดินสอข้าง Connection เพื่อสร้าง config node แบบ Ind MC Protocol Connection:

| ฟิลด์ | หมายเหตุ |
|---|---|
| Host | ที่อยู่ IP ของ PLC |
| Port | พอร์ต TCP/UDP ที่โมดูล Ethernet ของ PLC เปิดรับอยู่ |
| Protocol | TCP หรือ UDP |
| Frame | 1E, 3E, หรือ 4E — รูปแบบ frame ของ MC Protocol ที่จะใช้ |
| PLC Type | A, QnA, Q, L, หรือ R |
| ascii mode | ส่ง frame เป็นข้อความ ASCII แทนไบนารี (ใช้ไม่ได้กับ 3E/4E — สองแบบนี้รองรับเฉพาะไบนารี) |
| Network No | หมายเลข routing สำหรับ frame 3E/4E เท่านั้น |
| PC No | หมายเลข CPU ปลายทาง เป็นเลขฐาน 16 (เช่น 0xff) |
| Dest Module No | หมายเลขโมดูล I/O ปลายทาง เป็นเลขฐาน 16 (ค่าเริ่มต้น 0x3ff เฉพาะ 3E/4E) |
| Dest Module Stn No | หมายเลขสถานีปลายทาง (0x0 หมายถึงตัว PLC เอง) |
| Timeout MS | ระยะเวลารอผลตอบกลับก่อนถือว่าล้มเหลว |
จะเลือก frame แบบไหนดี
ถ้าโมดูล Ethernet ของ PLC รองรับ การใช้ UDP ร่วมกับ frame 4E จะ เสถียรที่สุด และเป็นชุดค่าที่ผู้เขียนโหนดแนะนำให้เริ่มต้นใช้ ส่วน PLC รุ่น A รุ่นเก่าจะรองรับเฉพาะ frame 1E เท่านั้น
การกำหนดที่อยู่ device¶
ทั้งโหนด Read และ Write ใช้ Address ในรูปแบบเดียวกันคือ:
[DS] DEV [DT] DN [.BIT] [,CNT] [:OPTS]
| ส่วน | ความหมาย |
|---|---|
DS |
ตัวระบุหลัก (digit specifier) ที่เป็นทางเลือก เช่น K4 (4 nibble — ใช้เมื่ออ่าน bit device เป็นคำ ดูตัวอย่างด้านล่าง) ห้ามใช้ร่วมกับ DT |
DEV |
ชนิด device: X (input), Y (output), D (data register), F, W (link register), B (link relay), R (file register) และอื่น ๆ ตามรายการ device ของ PLC เอง |
DT |
ชนิดข้อมูลที่เป็นทางเลือก ใช้แทนค่าเริ่มต้น: REAL, FLOAT, STR, WORD, DWORD, DINT, UINT (หากไม่ระบุจะเป็นคำปกติ) |
DN |
หมายเลข device — เป็นเลขฐาน 10 หรือฐาน 16 แล้วแต่รูปแบบของ device นั้น ๆ (เช่น YA, X1E, WBA4, B3D) |
.BIT |
หมายเลขบิตที่เป็นทางเลือก สำหรับอ่าน/เขียนบิตเดียวภายใน device |
,CNT |
จำนวนรายการต่อเนื่องที่จะอ่าน/เขียน เป็นทางเลือก (ค่าเริ่มต้นคือ 1 หากไม่ระบุ) |
:OPTS |
JSON ที่เป็นทางเลือก สำหรับ routing ไปยัง network/station อื่น เช่น {N:2,S:3} เพื่อ route ไปยัง station 3 บน network 2 |
ตัวอย่างจริงจากเอกสารของโหนดเอง:
| Address | อ่าน/เขียนอะไร |
|---|---|
K4Y0 |
bit device Y จำนวน 4 nibble เริ่มจาก Y0 อัดรวมเป็นหนึ่งคำ (-32768 ถึง 32767) |
DSTR0,10 |
สตริงยาวไม่เกิน 10 ตัวอักษร เริ่มจาก D0 |
DUINT0,10 |
array ของคำแบบ unsigned จำนวน 10 ตัว (ค่า 0–65535) เริ่มจาก D0 |
ควรตรวจสอบรายการ device/label ของ PLC เองว่าแต่ละที่อยู่ผูกกับอะไรจริง — โหนดไม่มีทางรู้ผังหน่วยความจำของโปรแกรม PLC คุณล่วงหน้า
การอ่านค่า¶
รูปแบบการ poll พื้นฐาน: โหนด inject ตั้งเวลาให้ทำซ้ำ → Ind MC Read ที่ตั้งค่า Address ไว้ → โหนด debug เพื่อดูผลลัพธ์

Output format ของโหนดเป็นตัวกำหนดรูปแบบของ msg.payload: จะเป็น JSON
object หรือ array ธรรมดาของค่าต่าง ๆ หากการอ่านล้มเหลว msg.payload จะ
กลับมาเป็น null และ msg.mcWriteDetails จะมีรายละเอียด error แทน — ควร
ตรวจสอบตรงนี้แทนที่จะสมมติว่าทุกครั้งที่ทริกเกอร์จะได้ข้อมูลที่ถูกต้อง
ส่วน Errors กำหนดว่า error จะไปทางไหน: throw (ค่าเริ่มต้น), แนบไปกับ
msg.error, หรือส่งออกไปยัง output ที่สอง
การเขียนค่า¶
Ind MC Write รับ Address แบบเดียวกัน บวกกับฟิลด์ Data — จะเป็น
ค่าเดียว หรือ array ของค่าเมื่อ ,CNT ระบุมากกว่าหนึ่งรายการ:

เมื่อเขียนสำเร็จ msg.payload จะเป็น true; หากล้มเหลว msg.mcWriteDetails
จะมีรายละเอียด error ให้จัดการผ่าน Errors แบบเดียวกับโหนด Read
ทั้งโหนด Read และ Write ยังรับคำสั่งจัดการการเชื่อมต่อผ่าน msg.connect,
msg.disconnect, หรือ msg.reinitialize (หรือ msg.topic เป็นข้อความ
"connect", "disconnect", "reinitialize") มีประโยชน์เมื่อโฟลว์ต้อง
รีเซ็ตการเชื่อมต่ออย่างชัดเจนหลังปิด-เปิดไฟ PLC ใหม่ แทนที่จะรอให้ timeout
เกิดขึ้นเอง
ต่อไป: MQTT broker (Aedes) หรือย้อนกลับไปที่ การเชื่อมต่อ Modbus / PLC หาก PLC ของคุณพูดภาษา Modbus แทน