แนะนำโปรแกรม MODSCAN อ่าน/เขียน MODBUS

ในทางอุตสาหกรรมมักจะใช้การสื่อสาร RS485 และใช้ Protocal MODBUS บางครั้งเราก็ต้องการจะอ่านค่าจาก Instrument หรือ PLC (Slave Device)? ขึ้นมาดูค่า Parameter ต่างๆ จะเขียนโปรแกรมอ่านค่า MODBUS ขึ้นมาก็เสียเวลา วันนี้ผมมีโปรแกรมมาแนะนำครับ

โปรแกรม MODSCAN เป็นเป็นแกรมที่ใช้สื่อสารกับอุปกรณ์ที่ใช้ Protocal MOSBUS โดยสามารถใช้ได้ทั้ง MODBUS RTU และ MODBUS ASCII และสามารถตั้ง Baudrate ได้ตั้งแต่ 110-256 KBPS มีฟังก์ชันให้ใช้งานได้ 4 ฟังก์ชัน

  1. Coil Status
  2. Input Status
  3. Holding Register
  4. Input Register

MODSCAN สามารถตั้งได้ว่าจะให้แสดงข้อมูลแบบไหน Binary, HEX, Unsigned Decimal, Interger, Floating point, Double ทำให้ง่ายต่อการ debug ว่าข้อมูลผิดพลาดตรงไหน

สนใจก็ลอง Download ตัว Demo มาใช้กันครับ ข้อมูลเพิ่มเติม/Download

ทำความรู้จัก RS485

RS232, RS422, RS423 และ RS485 เป็นการสื่อสารแบบ Serial สำหรับคอมพิวเตอร์และอุปกรณ์ต่างๆ ถ้าพูดถึง RS232 คงจะรู้จักกัน เพราะมันเป็นฮาร์ดแวร์มาตราฐานที่ติดมากับเครื่อง Desktop (ความจริงในสมัยก่อนเครื่อง Notebook ก็มี RS232)

RS232 จะมีข้อจำกัดอยู่หลายอย่าง เช่น ความยาวของสายต้องไม่เกิน 50 ฟุต และความเร็วสูงสุดอยู่ที่ 20 kbs ซึ่งไม่เพียงพอสำหรับการสื่อสารที่ต้องเดินสายไกล/ความเร็วสูง ต่อมาได้มี RS485 มาแทนที่ RS232

ปัญหาหลักของ RS232 คือไม่ทนต่อ Noise เนื่องจากข้อมูลในสาย TX และ RX ต้องเปรียบเทียบระดับสัญญาณกับ GND เมื่อ GND ถูกรบกวนทำให้ GND เปลี่ยนไปจากเดิม แต่ RS485 ไม่ได้ใช้การอ้างอิงสัญญาณกับ GND RS485 ใช้ความแตกต่างระหว่างสาย 2 สาย (A และ B) เป็นตัวบอกว่า Logic “1″ หรือ Logic “0″ วิธีนี้จะป้องกัน GND loop ที่เกิดขึ้น

จากประสบการณ์ที่ใช้งานพบว่าสายแบบ Twist จะป้องกัน Noise ได้ดีกว่าสายตรงที่เดินขนานกันไป และจะให้ดียิ่งขึ้นต้องเป็นสายที่ Shield จะสามารถป้องกันสนามไฟฟ้า สนามแม่เหล็กเข้ามากวนได้

การใช้ไมโครคอนโทรลเลอร์สื่อสารแบบ RS485
RS485 เป็นการรับส่งแบบ Half-Duplex การเขียนโปรแกรมจะกำหนดให้มี Master 1 ตัวเพื่อคอยจัดคิวการสื่อสารใน Network และให้อุปกรณ์ที่เหลือเป็น Slave โดย Slave แต่ละตัวจะมี Address ของตัวเอง เวลาที่ Master ต้องการจะสื่อสารกับ Slave ทำได้โดย ส่ง Address ที่ต้องการจะสื่อสารออกไป แล้วตามด้วยฟังก์ชัน Slave ทุกตัวจะรับข้อมูลได้เหมือนกัน Slave จะเช็คดูว่า Address นั้นใน Address ของตัวเองหรือไม่ ถ้าเป็น Address ของตัวเองก็จะทำการตอบข้อมูลกลับตามที่ Master ต้องการ

โปรโตคอลที่ใช้ในการสื่อสารใน RS485
เราสามารถกำหนดโปรโตคอลเองได้ว่าจะให้มีลักษณะยังไง หรือจะใช้ Open โปรโตคอลก็ได้เช่นโปรโตคอล MODBUS ที่นิยมใช้ใน PLC งานอุตสาหกรรม

IC ที่นิยมใช้แปลงสัญญาณ UART <—> RS485 จะเป็นเบอร์ SN75176 มีราคาถูก สามารถต่อได้มากสุด 32 Node

คำแนะนำในการเขียนโปรแกรม
โดยปกติแล้วเราจะ Jump RE และ DE ของ SN75176 เข้าด้วยกัน เวลาจะส่งข้อมูลออกไปต้องให้ MCU ส่ง “1″ มาที่ขา RE และ DE เพื่อ Enable การส่งและเมื่อส่งข้อมูลเสร็จแล้วต้องส่ง “0″ มาที่ขา RE และ DE เพื่อรอรับข้อมูล ใน Bus RS485 ถ้ามีตัวใดตัวหนึ่ง Enable DE ไว้ตัวที่เหลือจะไม่สามารถส่งข้อมูลได้เลยและเมื่อส่งข้อมูลเสร็จแล้วต้องส่ง “0″ มาที่ขา RE และ DE เพื่อรอรับข้อมูล ใน Bus RS485 ถ้ามีตัวใดตัวหนึ่ง Enable DE ไว้ตัวที่เหลือจะไม่สามารถส่งข้อมูลได้เลย

รูปแบบของ Network (Nowork Topology)
ในการเดินสาย RS485 ที่ถูกต้องจะต้องเดินเป็นเส้นยาว เราจะเรียกอุปกรณ์ในแต่ละตัวว่า Node เราจะวาง Node แรกไว้ที่ต้นสาย และ Nodeสุดท้ายไว้ที่ปลายสาย และNode อื่นๆ ก็จะ Jump เข้าที่กลางสาย ใน Datasheet จะแนะนำว่าให้ต้อง R ค่า 120 Ohm ไว้ที่หัวและท้ายของสายด้วยตำแหน่งละตัว ถ้าเราเอา VOM มาวัดความต้านทานในสาย A และ B จะได้ความต้านทานเท่ากับ R 120 Ohm ขนานกัน หรือเท่ากับ 60 Ohm

Typical Application Circuit

ข้อมูลเพิ่มเติม

Download MODBUS Application ProtocalV1.1