ถามผู้เคยใช้ Modbus protocol กับ smart meter Mitsubishi sx1

Started by tushamanking, July 27, 2016, 08:19:16 PM

Previous topic - Next topic

tushamanking

ุเรื่องราวเป็นแบบนี้ครับ คือที่แลปมี meter Mitsubishi sx1 อยู่ 1 ตัวที่มีน้องปี 4 เคยทำโปรเจ็คจบ เคยติดต่อก็ไม่ได้ เล่ม project ไปไหนก็ไม่รู้ อาจารย์ผมบอกว่ามันมี สาย rs485 ต่อออกมาน่าจะเป็นรุ่นที่สามารถใช้ Modbus protocol ได้
ลองเอามาต่ออ่านค่าไฟออกมาเล่นดูหน่อย

ปัญหาที่ 1 คือ ผมไม่รู้ ID slave address ของเครื่อง ?  ซึ่งเท่าที่ผมอ่านจาก Manual เค้าบอกว่า slave address จะ Auto scroll ขึ้นมาให้ดู ...... ผมก็นั้งรอดูอยู่นาน ไม่เห็นมันจะมาผมก็เลยได้จัดการ
boot force มันทั้ง 1 - 247 slave address จาก arduino ต่อกับ max485 แล้วก็ต่อกับ meter  (อ้างอิงจาก manual ว่า bus หนึ่ง มีได้ไม่เกิน 247 ตัว) โดยผมได้ใช้ baud rate 1200 และ parity ตามที่ manual บอก 
ผมส่งคำสั่ง
    0x01 0x03 0x00 0x66 0x00 0x01 <CRC16Lo> <cRC16Hi> ...... ถึง ......  0xF7 0x03 0x00 0x66 0x00 0x01 <CRC16Lo> <cRC16Hi>

ในการรับส่ง rs485 ผมได้ test ดูแล้วว่าได้ค่าออกมาตามที่ผมส่งไปจริงๆ และการคำนวณ CRC16 ใน arduino ก็ได้ตามที่ ที่โปรแกรมใน PC คำนวณ
และแล้วปัญหาที่ 2 ก็มาครับ !!!  ไม่มีการตอบกลับจากทุก ID  ลองสลับสาย rs485 ก็แล้ว ก็ไม่ได้รับการตอบกลับแต่อย่างใด
เลยอยากสอบถามผู้ที่มีประสบการณ์กับ Modbus ว่า มันมีรายละเอียดอะไรอีกหรือป่าวครับ ? หรือมีวิธี check acknowledge กับ meter อย่างไรบ้างครับ ?  ???

Link MODBUS® RTU Protocol Specifications -> https://www.meath-co.com/meter/files/documents/SX1-A31E.pdf.pdf

crywolf

รุ่น SX1 ไม่ใช่ทุกตัวที่ Support Modbus ดูที่ตัวก่อนครับ ว่ามี Sticker MODBUS รึป่าว
ถ้ามี ที่หน้าจอ จะขึ้น Ad ตามด้วย Slave Address หรือดูที่ Serial No. ก็ได้
https://goo.gl/WJCDSM

อ้อ Arduino ใช้งานได้จริงรึป่าว RS-485 แบบ 2-Wire ต้องเลือก ระหว่าง ส่ง กับ รับ (Half Duplex)
แนะนำว่าลองใช้โปรแกรม Modbus Poll บน PC เพื่ออ่านค่าดูก่อนครับ

tushamanking

Quote from: crywolf on July 28, 2016, 08:18:14 AM
รุ่น SX1 ไม่ใช่ทุกตัวที่ Support Modbus ดูที่ตัวก่อนครับ ว่ามี Sticker MODBUS รึป่าว
ถ้ามี ที่หน้าจอ จะขึ้น Ad ตามด้วย Slave Address หรือดูที่ Serial No. ก็ได้
https://goo.gl/WJCDSM

อ้อ Arduino ใช้งานได้จริงรึป่าว RS-485 แบบ 2-Wire ต้องเลือก ระหว่าง ส่ง กับ รับ (Half Duplex)
แนะนำว่าลองใช้โปรแกรม Modbus Poll บน PC เพื่ออ่านค่าดูก่อนครับ

Arduino กับ RS-485 คิดว่าใช้งานได้จริงครับเพราะลองทดสอบดูแล้ว Sticker MODBUS ไม่ทราบมันจะอยู่ที่หน้าเครื่องใช้มั๊ยครับ ? น้องมันลอกออกไปหมดแล้ว เหลือแต่โครงใสๆ เดี๋ยวลองใช้ Modbus Poll ดูครับ

ขอบคุณมากสำหรับคำแนะนำครับ  ;D เดี๋ยวได้ผลอย่างไรจะมารายงานครับ


orion

ปกติ Address Default มันจะถอดรหัสตาม Serial No. ครับ รายละเอียดตาม Manual
แต่ถ้าเคยถูกเปลี่ยนค่าไปแล้ว ให้ใช้โปรแกรม Modbus Meter Setting software ดาวว์โหลดจาก

https://www.meath-co.com/meter/product_detail.php?id=56&catID=18

โปรแกรม Concept มันจะไล่ Poll ไปตามกลุ่ม Address ที่เลือก หรือเลือกทั้งหมดเลยก็ได้
ถ้าเจอ Address ไหนใน Bus มันจะโชว์ขึ้นมา โปรแกรมใช้ได้กับทั้งรุ่น Single Phase และ Three Phase
แต่ต้องเป็นรุ่นที่รองรับ Modbus (จำได้คร่าว ๆ ว่า รุ่นที่เป็น RS-485 ถึงไม่ Support Modbus ก็ Force ให้ Support ได้ ประมาณว่าเป็น Firmware เดียวกัน แต่ปิดไว้ ส่วนวิธีจำไม่ได้ครับ ต้องลองติดต่อทาง MEATH )

หมายเหตุ Check เรื่อง Serial Data Pattern ดูด้วยนะครับ เช่น 8-E-1 (ไม่แน่ใจ ให้ดูจาก Manual) รวมทั้ง Baudrate ด้วยครับ Single Phase (SX1) จะใช้ 1200bps ส่วน 3 Phase จะใช้ 4800 (อันนี้ค่อนข้างชัวร์ เพราะจำได้ว่า มันไม่เท่ากันซะงั้น)

ประมาณนี้ครับ
ถ้ามีไรเพิ่มเติม Post ไว้นะครับ ถ้าจำได้เดี๋ยวมาตอบให้ครับ