[EP.2] ใช้ MINILINK S93-DTU อ่านค่ามิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์ แบบไร้สาย LoRa Bridge ผ่านพอร์ต RS485 Modbus RTU โดยโปรแกรม Node-RED และโปรโตคอล CoAP

ลงไม้ลงมือ : “แนะนำโปรดักส์ใหม่จาก SAIJAI TECH เป็นบอร์ด LoRa PtP Bridge พร้อมตัวอย่าง Node-RED Script”
บทความ โดย… วิสิทธิ์ เวียงนาค

“ไม่ต้องเขียนโค๊ด ไม่ต้องคอนฟิก ใช้งานได้ทันที ”

MINILINK รุ่น S93-DTU (AS923–485) สามารถสื่อสารกันเองได้ โดยไม่จำเป็นต้องใช้ LoRaWAN Gateway และ Network Server ใช้ความสามารถของ LoRa PtP สื่อสารทางไกลแบบไร้สาย ลดความยุ่งยากในการเดินสายสัญญาณ ลดต้นทุนการบำรุงรักษา ทำให้การรับส่งข้อมูลโปรโตคอล Modbus RTU (RS458) เป็นเรื่องง่ายๆ เหมาะสำหรับงานอุตสาหกรรม งานเกษตรแม่นยำ งาน SmartCity และงานไอโอทีทั่วไป

รูปแสดง MINILINK S93-DTU

ในบทความนี้ผู้เขียนจะสาธิตการประยุกต์ใช้โหนด MINILINK รุ่น S93-DTU (AS923–485) สื่อสารกับมิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์ ของ Misubishi รหัสรุ่น SX1-A31E ผ่านพอรต์สื่อสาร RS485 แบบ Serial Link (2 Wires Half Duplex) โดยโปรโตคอล Modbus RTU แล้วใช้โปรแกรม Node-RED อ่านค่าข้อมูล kWh, Volt, Amp, kW และอื่นๆ แปลงค่าชุดข้อมูล (decode) จัดเตรียมให้อยู่ในรูปแบบของชุดข้อมูล JSON จากนั้นส่งค่าขึ้นคลาวด์นำข้อมูลไปเก็บในฐานข้อมูลแบบเรียลไทน์โดยโปรโตคอล CoAP

รูปแสดง Network Diagram การทดสอบ

อุปกรณ์ที่ใช้ประกอบการทดสอบ

ผู้เขียนได้ประกอบตู้อุปกรณ์เพื่อใช้ในการทดสอบในครั้งนี้ กำหนดให้เป็นโหนดมิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์ สำหรับวัดค่าพลังงานที่ใช้งานจริง พร้อมทั้งติดตั้งโหนด MiniLink-DTU จากนั้นได้เชื่อมต่อสายเคเบิ้ลสื่อสารจากพอร์ตสื่อสาร RS485 เข้าด้วยกัน โดยแหล่งจ่ายไฟของโหนด MiniLink-DTU จะใช้ Power Supply 24V/0.42A, 10W ของ DELTA และใช้เมนเซอร์กิตเบรกเกอร์ 2P 32A ของ ABB

รูปแสดง MINILINK S93-DTU และมิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์
  1. โหนด MINILINK รุ่น S93-DTU (AS923–485) จากบริษัทใส่ใจ เทค จำกัด จำนวน 2 ชุด สามารถดูรายละเอียดเกี่ยวกับอุปกรณ์เพิ่มเติม ดาวน์โหลด Data-sheet ได้ตามลิงค์นี้ http://www.saijai.tech/minilinkdtu/
  2. มิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์ ของ Misubishi รหัสรุ่น SX1-A31 จำนวน 1 ชุด
    ดาวน์โหลดเอกสาร คู่มือได้ตามลิงค์ข้างล่างนี้
    >> คู่มือมิเตอร์/Meter Manual
    >> โบรชัวร์มิเตอร์/Meter Brochure
    >> สเปคมิเตอร์/Meter Specifications
    >> ระบบและซอฟแวร์/System and Software
    >> ซอฟต์แวร์สำหรับตั้งค่า MODBUS (Zip files)
    >> ตารางใช้งานโปรโตคอล Modbus RTU
  3. Embedded IoT Servers จำนวน 1 ชุด ประกอบไปด้วย
    3.1 Raspberry Pi CM4 Wireless 8G RAM 32G eMMC
    3.2 RPi Compute Module 4 (CM4) IO Board
    3.3 CM4 IO Board Metal Case with External Antenna and Cooling Fan
  4. USB to RS485 Serial Converter Cable รุ่น USB-RS485-WE-5000-BT จากผู้ผลิต Future Technology Devices International, Ltd.
    ดูรายละเอียดเพิ่มเติม ดาวน์​โหลด Data-sheet ได้ที่ลิงค์นี้ https://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_USB_RS485_CABLES.pdf
รูปแสดง มิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์ Misubishi รหัสรุ่น SX1-A31
รูปแสดง Embedded IoT Servers
รูปแสดง USB to RS485 Serial Converter Cable

เกี่ยวกับ มิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์

ผู้เขียนเลือกใช้มิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์ ของ Misubishi รหัสรุ่น SX1-A31 ซึ่งเป็นมิเตอร์ 1 เฟส 5(45)A รองรับระบบไฟ 220–230 โวลต์ มีช่วงแรงดันใช้งานอยู่ที่ 176–264 โวลต์ มีความแม่นยำในการวัดแบบ Class 1 มีระดับป้องกันน้ำและฝุ่นที่ IP54 และมีพอร์ตสื่อสาร RS-485 สำหรับเชื่อมต่อ AMR มาให้ในตัวอีกด้วย มิเตอร์รุ่นนี้ได้รับมาตรฐาน มอก. 2543–2555, IEC 62052–11, IEC 62053–21

การตั้งค่าการสื่อสาร
1. Baud rate = 1,200 bps
2. Data bit = 8
3. Stop bit = 1
4. Parity = Even
5. Physical interface = RS-485 2wires half duplex
6. Protocol = RTU mode
7. Response time = 80ms~200ms

การแสดงผลบนหน้าจอมิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์ จะวนแสดงค่าพารามิเตอร์ต่างๆ ตามตารางข้างล่าง โดยแสดงค่าทั้งหมด 5 พารามิเตอร์ ได้แก่ ค่าพลังงานทั้งหมด (kWh) ค่าแรงดันไฟฟ้าแบบ RMS (V) ค่ากระแสไฟฟ้าแบบ RMS (A) ค่ากำลังไฟฟ้า (kW) หมายเลข Slave Address ของ Modbus

ตารางแสดง ค่าพารามิเตอร์มิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์

ซอฟต์แวร์สำหรับการทดสอบ

ในฝั่งของ Node ผู้เขียนเลือกใช้ Embedded IoT Servers เป็น Raspberry Pi Compute Module 4 ที่ใช้ชิพ Broadcom BCM2711 แบบ quad-core Cortex-A72 (ARM v8) 64-bit ความเร็ว 1.5GHz ลงระบบปฏิบัติการ Raspberry Pi OS (64-bit), Kernel version: 5.15, Debian version: 11 (bullseye)

ลงโปรแกรม Node-RED version: v3.0.2 และติดตั้ง node ใน palette เพิ่มเติมได้แก่ “node-red-contrib-modbus” และ “node-red-contrib-coap”

การสื่อสารข้อมูลโดยโปรโตคอล Modbus RTU

ฟังก์ชันการทำงานสำหรับ Modbus RTU ของมิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์ รุ่นนี้ จะเป็น Function Code 3 (Holding Registers) เร่ิมอ่านค่าตำแหน่งแอดเดรสที่ 40101 (0x0064) ถึง 40116 (0x0073) รวมจำนวน register ทั้งหมด 16 register มีรายละเอียดตามตารางข้างล่างนี้

Modbus RTU Setup Registers
Modbus RTU Instantaneous Value
Modbus RTU Counting of Energy Registers
Modbus RTU General information

ผู้เขียนได้สร้าง Node-RED Flow ในฝั่งของ Node ให้อ่านค่ามิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์ โดยเร่ิมจากสร้างโหนด “Modbus-Getter” แล้วตั้งค่าการสื่อสารโปรโตคอล Modbus RTU ตามรูปข้างล่างนี้

รูปแสดง การตั้งค่าให้กับโหนด Modbus-Getter

สร้างโหนด “Function” ตั้งชื่อให้เป็น “Decode” เพื่อเขียน Script ให้ decode ข้อมูลที่ได้รับ โดยข้อมูลที่ได้จะเป็นแบบ Buffer หรือหน่วยความจำที่ใช้สำหรับพักข้อมูลชั่วคราว จำนวน 16 word หรือ 32 bytes ใน Script นี้ ผู้เขียนจะแปลงข้อมูลจาก Buffer ให้เป็นข้อมูลแบบ big endian 16 bit หรือ 32 bit integer และจัดเรียงใหม่ให้เป็นชุดข้อมูลแบบ JSON

รูปแสดง Node-RED Flow ในฝั่งของ Node

ตัวอย่าง JavaScript โหนด “Decode” แบบเบาๆ

//Decode by Mr.Visit Wiangnak
//อ่านค่ามิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์
//Misubishi รหัสรุ่น SX1-A31
//Dec 12, 2022

var b = msg.payload.buffer;

msg.payload = {
serial_no: Buffer.from([b[0], b[1], b[2], b[3]]).readUInt32BE(),
line_voltage: parseFloat((Buffer.from([b[4], b[5]]).readUInt16BE()*0.01).toFixed(1)),
frequency: parseFloat((Buffer.from([b[10], b[11]]).readUInt16BE()*0.1).toFixed(1)),
actvie_energy: parseFloat((Buffer.from([b[20], b[21], b[22], b[23]]).readUInt32BE()*0.001).toFixed(1)),
line_current: parseFloat((Buffer.from([b[24], b[25]]).readUInt16BE()*0.01).toFixed(1)),
basic_current: Buffer.from([b[26]]).readUInt8(),
maximum_current: Buffer.from([b[27]]).readUInt8(),
active_power: Buffer.from([b[30], b[31]]).readUInt16BE()
}

return msg

ชุดข้อมูล JSON หลังจากได้ Decode แล้ว “ออกมาแบบนี้ก็พร้อมใช้แล้วสิครับ :)”

{
"serial_no": 1690,
"line_voltage": 235.6,
"frequency": 50,
"actvie_energy": 1340,
"line_current": 2.5,
"basic_current": 5,
"maximum_current": 45,
"active_power": 573
}

ในฝั่งของ Server ผู้เขียนได้สร้าง Node-RED Flow บน Cloud Server โดยฟังก์ชันหลักคือการใช้โหนด “coap in” เพื่อรอรับข้อมูลที่ส่งมาจาก Node Client แบบ POST

CoAP (Constrained Application Protocol) จะคล้ายกับ HTTP แต่มีขนาดแพคเกจข้อมูลที่เล็กกว่ามาก ช่วยลดการใช้ทรัพยากรทั้งหน่วยความจำในการประมวลผลและพลังงาน มี header แบบคงที่ขนาด 4 byte ทำงานบนโปรโตคอล UDP ทำให้การรับส่งข้อมูลเป็นไปอย่างรวดเร็ว เหมาะสำหรับงาน Internet of Things (IoT) เป็นอย่างมาก มันเป็นสถาปัตยกรรมแบบ Client/Server ตัว Client สามารถ GET, PUT, POST และ DELETE ทรัพยากรบน Server โดย URL และ Query ได้ คล้ายๆ กับ HTTP REST API ที่ใช้ TCP แต่ “CoAP มันใช้ UDP นะครับ แบบนี้ไวแน่นอน!”

นอกจากโปรโตคอล MQTT ที่มีใช้กันมานานแล้ว ถึงแม้ว่ามันจะทำงานได้อย่าง Stable มีความน่าเชื่อถือ เป็นที่นิยมในงาน Internet of Things (IoT) มาถึงปัจจุบัน แต่ผู้เขียนมองว่ามันยังมีจุดควรคำนึงถึงในการพัฒนาใช้งาน IoT บางประเด็น นั่นก็คือ การเชื่อมต่อแบบรวมศูนย์ไปยัง Broker และการสร้าง Session ค้างไว้เปิดตลอดเวลา โปรโตคอลการสื่อสารข้อมูลน้องใหม่อย่าง “CoAP” ก็เป็นโปรโตคอลที่น่าสนใจไม่น้อย เป็นอีกทางเลือกหนึ่งสำหรับงาน IoT ที่ผู้เขียนสนใจมากๆ

รูปแสดง Node-RED Flow ในฝั่งของ Server

ในโปรแกรม Node-RED ฝั่งของ Server หลังจากที่ได้รับชุดข้อมูลในรูปแบบ JSON จากโปรโตคอล CoAP แล้ว จะนำไปเก็บในฐานข้อมูล InfluxDB ซึ่งเป็นฐานข้อมูลแบบ Time Series Database (TSDB) จากนั้นใช้แพลตฟอร์ม Smart Meter Monitoring เชื่อมต่อและดึงข้อมูลจากฐานข้อมูล InfluxDB มาแสดงค่ามิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์ บน Web Application แบบเรียลไทน์ โดยรูปมิเตอร์ที่แสดงจะเป็นกราฟฟิคแบบเวกเตอร์ SVG ที่สามารถเปลี่ยนสีได้ เคลื่อนไหวได้อีกด้วย

รูปแสดง แพลตฟอร์ม Smart Meter Monitoring

จะเห็นได้ว่าการพัฒนาโปรแกรมบน Node-RED ทำได้ง่ายๆ มันมีเครื่องมือรองรับ ทำให้เบาแรงไปได้มากเลย

การอ่านข้อมูลแบบไร้สายผ่าน LoRa PtP Bridge โดยโปรโตคอล Modbus RTU ผ่านสื่อกลางโหนด MiniLink-DTU ทั้งสองฝั่ง ระหว่าง Client ที่เป็นตู้อุปกรณ์ประกอบไปด้วยมิเตอร์อิเล็กทรอนิกส์ เอเอ็มอาร์ กับ Embedded IoT Servers เป็นไปอย่างราบรื่น ไม่มีความรู้สึกเลยว่า “การสื่อสารที่ใช้อยู่เป็นแบบไร้สาย!” มันทำงานได้อย่างดี ข้อมูลรื่นไหล ไม่สะดุด เหมือนกับใช้สายสัญญาณทั่วไป ถึงแม้ว่าระยะทางจาก Client ไปยัง Server จะอยู่ห่างกัน มากกว่า 100 เมตร

โหนด MiniLink-DTU ทั้งสองตัวที่สื่อสารถึงกัน มันทำงานเพียงแค่ forward package ไปกลับเท่านั้นเอง ไม่มีการปรุงแต่งเพิ่มเติมอะไร รับอะไรมาก็ส่งไปอย่างนั้น ทำงานแบบ Simple และง่ายมากๆ ครับ จุดนี้แหละที่ทำให้โปรดักส์ตัวนี้เป็นที่น่าสนใจในตอนนี้ เพราะนอกจากจะช่วยลดค่าใช้จ่ายในการติดตั้ง ลดต้นทุนการเดินสายสัญญาณแล้ว มันยังมีค่าตัวที่น่าคบหาเป็นอย่างมากเลยครับ

ข้อสรุปโดนใจ

หลังจากที่ได้นำโหนด MINILINK S93-DTU ไปใช้งานจริง

  1. ไม่ต้องเดินสายสัญญาณระหว่างโหนด ทำให้ลดเวลาในการติดตั้ง ลดค่าใช้จ่ายในการเปิดฝ้า ร้อยท่อ และค่าบำรุงรักษา ไปได้มาก
  2. ไม่ต้องเขียนโค๊ด ไม่ต้องคอนฟิก เพียงแค่ต่อสายเซนเซอร์ A/B จากพอร์ต RS485 เข้ากับ MINILINK S93-DTU ก็ใช้งานได้ทันที สะดวกและง่ายมากๆ
  3. MINILINK S93-DTU รองรับโปรโตคอล Modbus RTU ทำให้ประยุกต์ใช้กับเซนเซอร์ได้หลากหลาย ทั้งงาน Monitor และงานควบคุมสั่งการ
  4. อุปกรณ์ออกแบบให้ใช้ในโรงงาน สามารถติดตั้งบน DIN RAIL ได้ทันที รองรับใช้ไฟ DC 12/24V และใช้พลาสติกแบบทนไฟ ทนความร้อนสูง มีหัวคอนเน็กเตอร์เชื่อมต่อแบบถอดเข้า ถอดออกได้ เพิ่มความสะดวกในการเชื่อมต่อสายสัญญาณ

มาถึงส่วนสุดท้ายของบทความแล้ว ผู้เขียนคิดว่าท่านคงพอเห็นภาพแล้วว่า ตอนนี้ท่านจะนำโหนด MiniLink DTU ไปประยุกต์ใช้งานในด้านใดบ้าง ท่านใดที่มองหาโซลูชันแนวนี้อยู่ สามารถเข้าไปดูรายละเอียดเพิ่มเติม และดาวน์โหลด data-sheet ได้ที่ลิงค์นี้ http://www.saijai.tech/minilinkdtu/

ผู้เขียนมีความตั้งใจที่จะนำเสนอการใช้ IoT-LoRaWAN-NBIOT สำหรับพัฒนา SMART CITY เพื่อให้ผู้ที่สนใจนำไปพัฒนาต่อยอดสร้างนวัตกรรมใหม่ๆ ขอเป็นส่วนหนึ่งเล็กๆ น้อยๆ ช่วยผลักดันประเทศของเราให้เข้าสู่ยุคดิจิตอล Thailand 4.0 อย่างแท้จริง

ติดตามข่าวสารทาง facebook ได้ที่ลิงค์นี้
Facebook กลุ่ม IoT-SmartCity
Website SaiJai Tech

--

--

No responses yet