ข้ามไปที่เนื้อหา

การเชื่อมต่อ 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:

Node-RED palette กรองด้วยคำว่า "mc" แสดงโหนด Ind MC Read และ Ind MC Write

โหนด หน้าที่
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:

กล่องตั้งค่า 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 เพื่อดูผลลัพธ์

โหนด Ind MC Read ที่ตั้งค่าการเชื่อมต่อและ address ไว้แล้ว

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 ระบุมากกว่าหนึ่งรายการ:

โหนด Ind MC Write ที่ตั้งค่าการเชื่อมต่อ address และข้อมูลตัวเลขไว้แล้ว

เมื่อเขียนสำเร็จ 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 แทน