Arduino MODBUS กับ PLC แล้ว ต่อ Direct ผ่าน RS485 ไม่ได้

ผมมีปัญหา กับ การทำ MODBUS บน Arduino MEGA 2560
Library   SimpleModbusMaster.h

https://github.com/pepsilla/Arduino/blob/master/MODBUS/ASCII/libraries/SimpleModbusMaster/SimpleModbusMaster.h

โดยผมมีอุปกรณ์ดังนี้ที่ต้องการให้เชื่อมต่อกัน


โดยรับ ค่า String จาก Serial Port  เพื่อทำตาม ฟังก์ชันที่กำหนดไว้ โดย จะกำหนด ค่าการเชื่อมต่อ
BusRate 19200
Serial_8N2
Serial1
Timeout 1000
Pollong 200
Retry_count 10
Slave_adr 1
regs 3

โดยมีฟังชั้นการ ส่งค่าออก ประมาณนี้ เพื่อเขียนให้ M0 มีสภาวะการทำงานเป็น 1
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้


ปัญหาที่พบคือจาก Mega 2560 ไปที่ PLC ตรงๆ จะมีปัญหา คือไม่มีอะไรเกิดขึ้น


แต่ถ้าใช้ การต่อลักษณะนี้ แล้วเปิด โปรแกรม “pyModSlave” โดยให้เป็น Slave 1 เหมือนกัน


ปรากฏว่า เมื่อรับค่าจาก Serial3 หลอดไฟที่ผมเขียนผ่าน ladder ติด

|------------------|M0|----------------------------------------( Y0 )-------------------|

ผมลองเปิด RAW Monitor ของ “pyModSlave” พบว่า PLC แสดงสถานะตามโปรแกรม “pyModSlave” ขาตอบกลับแทน

ต่อมา ถ้าผมตัดส่วน PLC ออกไป จาก Arduino ไปที่ “pyModSlave” คือรับค่าและอ่านค่าของกันและกันไปปกติ

ในทางกลับกันถ้าผม ต่อ USB to RS485 ไปที่ PLC แล้วใช้โปรแกรม "qModMaster" ก็สามารถส่งได้ปกติ

เมื่อศึกษา รูปแบบการส่ง ค่า จาก RAW monitor แล้วพบว่า 0x0001 // 0xFF00 นี้มันจะมีการสลับกันไปมา ( Value ที่ส่ง)

แต่ถ้าใช้ค่า 0x0001    PC <--- 485 ---> Arduino สามารถรับส่งได้ปกติ  0xFF00 ไม่สามารถเขียนค่าจาก Master ได้

ตอนนี้งง มาก เลยมาตามหาผู้รู้ครับ

ขอบคุณสำหรับคำตอบนะครับ


Code
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่