มันมีรูปแบบการสื่อสารกันเป็นชุดคำสั่ง 01 02 03 04 05 06 07 08
1st คือเลขประจำตัว 3rd - 4th byte คือ เลขรีจิสเตอร์
7-8th byte คือ CRC
อุปกรณ์แต่ละตัวจะเก็บค่าอะไรไว้ เราต้องการรู้ค่านั้น ก็ถามมัน เราต้องรู้นะว่าต้องถามใคร หมายเลขอะไรเก็บข้อมูลนั้นไว้ ในคู่มือจะบอกไว้ เขาเรียก Register Address
Modbus protocol มันมีรีจิสเตอร์ประมาณนี้
OP320 ModbusRTU --Master mode:
ยังวนเวียนอยู่กับหน้าจอนี้และวันนี้ได้เอา Arduino มาเล่นเป็นบททาสดูบ้าง
เป็นเจ้านายก็มาหลายงานละ
นายกับทาสจะสื่อสารกันโดยใช้คำถาม-คำตอบ คนเป็นนายมีหน้าที่ถาม
ถามหากับใคร คนนั้นก็ต้องตอบ ใครไม่ถูกถามก็นิ่งเงียบไว้
อุปกรณ์ที่สื่อสารกันบน Modbus protocol มันจะมี register ทั้งนั้น ดูรายละเอียดในคู่มือของอุปกรณ์นั้นเด้อ register มันเลขอะไร มันมีความหมายอยู่นะ ตามตารางนี้ เวลาจะเอาไปเขียนโค้ดก็ใช้ให้ตรง
register table |
เวลาทำกราฟฟิก reg 4x มันจะส่ง FC03 ออกมาเพื่ออ่านค่า AO และคำถามที่มี Arduino มันต้องคอยตอบ
ที่ทดลองทำไว้คือการวัดค่า Temperature Humidity จาก DHT11
[OP320] <==serial==> [Arduino] <==I2C==> [DHT11]
ได้ลองทำแบบที่ไม่ได้ใช้ Library ส่วนอะไรที่ไม่มีเราก็ต้องสร้างมันขึ้นมา
ในโค้ดก็ดูว่ามีข้อมูลใน buffer ไหม อย่างแรกก็ดูเลข Slave ID ถ้าไม่ใช่ ก็เฉยไว้ เมื่อทุกอย่างต้องตรงกัน ก็ตอบกับออกไปพร้อม CRC
เอาไปใช้งานแนวๆ รับข้อมูลจากเซนเซอร์ I2C bus, Analog input และควบคุมเครื่อง
ไม่มีความคิดเห็น:
แสดงความคิดเห็น