วันพุธที่ 22 กันยายน พ.ศ. 2564

OP320 FREE PROTOCOL

     ทะยอยเอางานทดลองมาเรียบเรียงไว้ เพียงเพื่อวันข้างหน้าจะได้รื้อฟื้นมันขึ้นมาได้โดยง่าย ของมันนานเข้าก็ลืมได้ หลายรอบที่ไม่ได้จดบันทึก กว่าจะทบทวนได้ใช้เวลานาน

    งานนี้ได้จัดทำเอา OP320A/S [OP] มาสื่อสารกับ Arduino รับข้อมูลทาง RS485 port แต่ไม่ได้ใช้ Modbus protocol ในตัวเครื่อง OP จะมีอยู่โหมดหนึ่ง เรียกว่า Free Protocol ให้ใช้งานได้ มันมีรูปแบบคำสั่งสำหรับการสื่อสารที่กำหนดมาเฉพาะ หาอ่านได้จากคู่มือ ที่หาได้ยากยิ่ง ในตัว OP จะเตรียม register ไว้ให้ประมาณ 255 ตัวและยังสามารถกำหนด SLAVE ID. ได้

    โดยคำสั่งจะประมาณนี้

การอ่านค่า function 0x52 มีทั้งหมด 5 bytes
    01 52 02 01 CC |  01 ID, 52 Function, 02 Address, 01 data q'ty และ CC --Sum check (เอา byte รวมกันหาร 0x100 เอาเศษเหลือ)

การเขียนค่า function 0x57 มีทั้งหมด 7 bytes
    01 57 05 01 DA TA CC | 01 ID, 57 Function, 05 Address, 01 data q'ty, DA hi-byte data, TA lo-byte data,CC --sum check


    ที่ Arduino ก็เอาค่าวัดจากเซนเซอร์ใส่เข้าไปใน payload  ค่าเซนเซอร์ได้มาเป็นเลข ทำให้เป็นข้อความ ทำ zero-leading ก่อนเด้อ จากนั้นเอา payload ส่งให้ OP (ต้องส่งเป็น byte )

ไม่สนใจข้อความตอบกลับอีกเช่นเคย เว้นแต่อยากจะ cross check
ข้อความตอบกลับของ Function 0x57
01 00 01  โดยที่ 1st byte คือ function, 2nd byte คือ Error code , 3rd sum check
Error detail:
00 OK!
01 Wrong address
02 Wrong length
03 Wrong range
04 Wrong command
    

sending measured values to OP320

นอกเหนือจากการที่ Arduino ส่งข้อมูลเข้าไปเก็บไว้ใน register ได้แล้วนั้น ที่ตัว OP ก็สามารถกำหนดและเขียนข้อมูลไปให้ register ภายในได้เหมือนกัน
    เท่ากับว่าเราเองก็สามารถควบคุม Arduino ได้เช่นเดียวกัน

 

OP write value to internal register.

ตบท้ายด้วยการกำหนด coil (MW00 - MW254)
OP320 กำหนดให้ทุกบิทในแอดเดรส จะให้เป็น coil ได้ โดยใน 1 Address มี 16 bits
อย่างเช่น กำหนด coil อยู่ที่ address 10 bit no. 2 เมื่อทำกราฟฟิกแล้ว กดเปิด กดปิด ที่หน้าจอ
แล้วลองส่งคำสั่ง
                        Tx: 01 52 0A 01 5E
                        Rx: 01 00 0A 01 00 02 0E    สถานะนี้คือมัน ON อยู่

แต่ถ้า               Rx: 01 00 0A 01 00 00 0E    สถานะนี้คือมัน OFF อยู่

และเราก็สามารถส่งค่าให้มัน ON / OFF ก็ได้ โดยใช้ function 0x57 ส่งค่าหมายเลข bit ให้มัน

    เรื่องที่น่าเบื่อเรื่องหนึ่งคือสายไฟ ต่ออุปกรณ์เข้าหากัน เดี๋ยวดีเดี๋ยวร้าย เลยไม่รู้ว่าโปรแกรมไม่ดีหรือสายไฟไม่ดี ต้องหามิเตอร์ไฟฟ้ามาวัด แยกเอาของไม่ดีทิ้งไป จะได้ไม่ต้องกังวลตอนรันโปรแกรม.

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

MAPs

วันก่อนได้ลองเขียนแบบ แบบตัวนั้นมันต้องแนบแผนที่สังเขปของโครงการ ลองๆ แล้วก็ใช้ snazzymaps แล้วก็เอามาทำต่อใน inkscape มันก็ออกมาดูได้ระดับห...