คู่มือโปรโตคอลแอปพลิเคชัน MODBUS V1.1b3
August 18, 2024 2317 ความคิดเห็น
ดาวน์โหลด ข้อกำหนดโปรโตคอล MODBUS Application
ภาพรวมของ MODBUS V1.1b3
MODBUS V1.1b3 อธิบายโปรโตคอลชั้นแอปพลิเคชันที่ใช้กันอย่างแพร่หลายสำหรับการสื่อสารในระบบอัตโนมัติทางอุตสาหกรรม โดยสร้างขึ้นจากรูปแบบคำขอและการตอบกลับอย่างง่าย ซึ่งไคลเอนต์เป็นผู้เริ่มต้นทำรายการ และเซิร์ฟเวอร์จะส่งคืนข้อมูลที่ร้องขอ การยืนยันการดำเนินการ หรือการตอบกลับข้อยกเว้น โปรโตคอลนี้จัดอยู่ในชั้นแอปพลิเคชัน ดังนั้นโครงสร้างข้อความจึงสามารถแมปไปยังลิงก์อนุกรม Ethernet TCP/IP คลื่นวิทยุ ไฟเบอร์ และเครือข่ายเกตเวย์แบบผสมได้
ข้อได้เปรียบที่ยั่งยืนคือโครงสร้างที่มั่นคงและง่ายต่อการนำไปใช้งาน ซึ่งช่วยให้ PLC, HMI, ไดรฟ์, โมดูล I/O, เกตเวย์, เครื่องมือวัด, RFID เครื่องอ่านและอุปกรณ์อัตโนมัติอื่นๆ สามารถแลกเปลี่ยนข้อมูลการทำงานได้โดยไม่ต้องใช้สแตกโปรโตคอลที่ซับซ้อนเกินไป ในโครงการอุตสาหกรรมหลายแห่ง วิศวกรมักใช้ MODBUS เพื่ออ่านสถานะเครื่องจักร เขียนค่าควบคุม เก็บข้อมูลรีจิสเตอร์ วินิจฉัยปัญหาการสื่อสาร และเชื่อมต่ออุปกรณ์จากผู้ผลิตหลายรายเข้าด้วยกัน
โปรโตคอลจัดระเบียบข้อความอย่างไร
รายการ MODBUS จะเริ่มต้นเมื่อไคลเอนต์สร้างชุดข้อมูลแอปพลิเคชัน (application data unit) ใจกลางของข้อความคือชุดข้อมูลโปรโตคอล หรือ PDU ซึ่ง PDU ไม่ขึ้นกับชั้นการสื่อสารที่อยู่เบื้องล่าง และโดยปกติประกอบด้วยฟังก์ชันโค้ดขนาดหนึ่งไบต์ตามด้วยข้อมูลที่ขึ้นอยู่กับฟังก์ชันนั้น เมื่อ MODBUS ถูกแมปไปยังบัสหรือเครือข่ายเฉพาะ PDU จะกลายเป็นส่วนหนึ่งของ ADU ที่ใหญ่ขึ้น ซึ่งอาจเพิ่มที่อยู่เซิร์ฟเวอร์ ฟิลด์ตรวจสอบข้อผิดพลาด หรือเฮดเดอร์ MBAP ขึ้นอยู่กับวิธีการรับส่ง
ฟังก์ชันโค้ดบอกเซิร์ฟเวอร์ว่าต้องดำเนินการใด ตัวอย่างเช่น ไคลเอนต์อาจร้องขอสถานะ ON/OFF ของคอยล์ อ่านรีจิสเตอร์อินพุต เขียนรีจิสเตอร์โฮลดิงตัวเดียว เขียนคอยล์หลายตัว หรือขอข้อมูลระบุตัวตนอุปกรณ์ หากคำขอถูกต้องและเซิร์ฟเวอร์สามารถดำเนินการได้ การตอบกลับจะส่งฟังก์ชันโค้ดเดิมซ้ำและคืนข้อมูลหรือการยืนยันตามที่คาดไว้ หากเกิดปัญหา การตอบกลับจะใช้ฟังก์ชันโค้ดข้อยกเว้นและรหัสข้อยกเว้น เพื่อให้แอปพลิเคชันฝั่งไคลเอนต์ตัดสินใจได้ว่าจะลองใหม่ แจ้งเตือน บันทึกข้อผิดพลาด หรือสลับไปสู่สถานะปลอดภัย
โมเดลข้อมูล การกำหนดที่อยู่ และการเข้ารหัส
MODBUS V1.1b3 กำหนดโมเดลข้อมูลเชิงตรรกะโดยอิงจากพื้นที่ออบเจ็กต์หลักสี่ประเภท ได้แก่ ดิสครีตอินพุต คอยล์ รีจิสเตอร์อินพุต และรีจิสเตอร์โฮลดิง ดิสครีตอินพุตเป็นค่าอ่านอย่างเดียวขนาดหนึ่งบิต คอยล์เป็นค่าอ่าน-เขียนขนาดหนึ่งบิต รีจิสเตอร์อินพุตเป็นคำอ่านอย่างเดียวขนาด 16 บิต และรีจิสเตอร์โฮลดิงเป็นคำอ่าน-เขียนขนาด 16 บิต โมเดลนี้ออกแบบมาให้เป็นกลางโดยเจตนา ผู้ผลิตอุปกรณ์สามารถแมปโมเดลนี้เข้ากับหน่วยความจำแอปพลิเคชันของตนเอง ขณะที่ไคลเอนต์ใช้ฟังก์ชัน MODBUS มาตรฐานในการเข้าถึงข้อมูลที่เปิดเผย
ข้อกำหนดยังแยกการอ้างอิงข้อมูลเชิงตรรกะออกจากที่อยู่หน่วยความจำทางกายภาพ ในโมเดลข้อมูล MODBUS องค์ประกอบอาจถูกกำหนดหมายเลขตั้งแต่ 1 ถึง n แต่ภายใน PDU ที่อยู่จะเริ่มจากศูนย์และอาจอยู่ในช่วง 0 ถึง 65535 ความแตกต่างนี้มีความสำคัญระหว่างการพัฒนาซอฟต์แวร์ เนื่องจากหมายเลขรีจิสเตอร์ที่แสดงต่อผู้ปฏิบัติงานกับที่อยู่ PDU จริงอาจต่างกันหนึ่ง ดังนั้นเอกสารที่ชัดเจนจากผู้ผลิตอุปกรณ์จึงจำเป็นอย่างยิ่งต่อการเชื่อมต่อที่เชื่อถือได้
MODBUS ใช้การเข้ารหัสแบบ big-endian สำหรับค่าที่มีหลายไบต์ สำหรับค่า 16 บิต เช่น 0x1234 ไบต์ที่มีนัยสำคัญสูงสุดจะถูกส่งก่อนไบต์ที่มีนัยสำคัญต่ำสุด ธรรมเนียมนี้ช่วยให้การทำงานร่วมกันคาดเดาได้เมื่ออุปกรณ์จากผู้จำหน่ายต่างรายแลกเปลี่ยนค่ารีจิสเตอร์กัน ในการติดตั้งจริง วิศวกรยังคงต้องยืนยันว่าจำนวนเต็ม 32 บิต ค่าทศนิยม และค่าผสมเฉพาะผู้ผลิตถูกจัดเรียงข้ามรีจิสเตอร์หลายตัวอย่างไร เพราะธรรมเนียมระดับแอปพลิเคชันเหล่านั้นอาจแตกต่างกัน
ฟังก์ชันโค้ดและการเชื่อมต่ออุปกรณ์ในทางปฏิบัติ
ฟังก์ชันโค้ดคือคำนิยามบริการของ MODBUS โค้ดสาธารณะที่พบบ่อย ได้แก่ การอ่านคอยล์ การอ่านดิสครีตอินพุต การอ่านรีจิสเตอร์โฮลดิง การอ่านรีจิสเตอร์อินพุต การเขียนคอยล์ตัวเดียว การเขียนรีจิสเตอร์ตัวเดียว การเขียนคอยล์หลายตัว และการเขียนรีจิสเตอร์หลายตัว โค้ดอื่นๆ รองรับการวินิจฉัย บันทึกไฟล์ คิว FIFO การรับส่งผ่านอินเทอร์เฟซแบบห่อหุ้ม และการระบุตัวตนอุปกรณ์ บริการเหล่านี้มอบกล่องเครื่องมือที่กระชับให้นักพัฒนาใช้สร้างอินเทอร์เฟซอุปกรณ์ โดยไม่บังคับให้ทุกอุปกรณ์ใช้การออกแบบหน่วยความจำภายในแบบเดียวกัน
ในระบบ RFID หรือระบบระบุตัวตน MODBUS อาจปรากฏอยู่ในเกตเวย์ ตัวควบคุมอุตสาหกรรม แผงควบคุมการเข้าถึง เทอร์มินัลเก็บข้อมูล หรืออินเทอร์เฟซฝั่งเครื่องจักร ตัวอย่างเช่น สายการผลิตอาจใช้รีจิสเตอร์ MODBUS เพื่อเปิดเผยสถานะเครื่องอ่าน คำสั่งทริกเกอร์ สถานะเสาอากาศ แฟล็กแจ้งเตือน หรือค่าตัวนับ ระบบคลังสินค้าอาจผสมการสื่อสาร PLC เข้ากับสถานี เครื่องสแกนบาร์โค้ด ขณะที่โครงการควบคุมการเข้าถึงอาจเชื่อมต่อประตู เซ็นเซอร์ และ เทอร์มินัลควบคุมการเข้าถึง ผ่านตัวควบคุมที่แลกเปลี่ยนเวิร์ดสถานะและบิตควบคุม
การเชื่อมต่อ MODBUS ที่ดีไม่ได้ขึ้นอยู่กับการส่งฟังก์ชันโค้ดที่ถูกต้องเท่านั้น วิศวกรควรยืนยันโปรไฟล์การรับส่ง ค่า timeout ตัวระบุยูนิต จำนวนสูงสุดต่อคำขอ แผนผังรีจิสเตอร์ ลำดับไบต์ พฤติกรรมการจัดการข้อผิดพลาด และอุปกรณ์รองรับฟังก์ชันสาธารณะเฉพาะที่แอปพลิเคชันต้องการหรือไม่ ในเครือข่ายอนุกรม อัตราบอด พาริตี ที่อยู่สเลฟ การสิ้นสุดสาย และการควบคุมสัญญาณรบกวนก็สำคัญเช่นกัน ในเครือข่าย MODBUS TCP ควรพิจารณาพอร์ต 502 การกำหนดเส้นทาง IP นโยบายไฟร์วอลล์ และพฤติกรรมไคลเอนต์พร้อมกันหลายราย
ทำไม MODBUS V1.1b3 ยังคงสำคัญ
MODBUS V1.1b3 ยังคงสำคัญเพราะจัดทำเอกสารโปรโตคอลแอปพลิเคชันในลักษณะที่มั่นคง อ่านง่าย และเป็นประโยชน์โดยตรงต่อทีมวิศวกรรม การออกแบบที่อิง PDU ทำให้เหมาะสำหรับเกตเวย์และสถาปัตยกรรมระบบอัตโนมัติแบบผสม โมเดลข้อมูลเรียบง่ายพอสำหรับอุปกรณ์ฝังตัว แต่ยืดหยุ่นพอสำหรับระบบควบคุมระดับสูง การตอบกลับข้อยกเว้นช่วยให้ซอฟต์แวร์ฝั่งไคลเอนต์ตรวจจับฟังก์ชันที่ไม่ถูกต้อง ที่อยู่ที่ไม่ถูกต้อง ค่าที่ผิด และความล้มเหลวฝั่งเซิร์ฟเวอร์ได้
สำหรับผู้ผลิตและผู้รวมระบบ การเข้าใจข้อกำหนดนี้ช่วยลดข้อผิดพลาดในการทดสอบเดินระบบ อธิบายได้ว่าทำไมการอ่านรีจิสเตอร์โฮลดิงอาจล้มเหลว ทำไมหมายเลขรีจิสเตอร์ในคู่มืออาจไม่ตรงกับที่อยู่ PDU ทำไมฟังก์ชันโค้ดบางตัวใช้ได้เฉพาะกับสายอนุกรม และทำไมต้องมีกลยุทธ์ timeout เมื่ออุปกรณ์ไม่ตอบสนอง สำหรับผู้ซื้อที่เปรียบเทียบอุปกรณ์อัตโนมัติ การรองรับ MODBUS ยังอาจเป็นสัญญาณว่าผลิตภัณฑ์นั้นเชื่อมต่อกับ PLC ระบบ SCADA คอมพิวเตอร์อุตสาหกรรม และโมดูลเกตเวย์ได้ง่ายกว่า
คำถามที่พบบ่อยเกี่ยวกับ MODBUS V1.1b3
MODBUS V1.1b3 ใช้ทำอะไร
MODBUS V1.1b3 ใช้กำหนดว่าอุปกรณ์อัตโนมัติแลกเปลี่ยนข้อความระดับแอปพลิเคชันอย่างไร โดยอธิบายโครงสร้างคำขอและการตอบกลับ ฟังก์ชันโค้ด ออบเจ็กต์ข้อมูล กฎการกำหนดที่อยู่ และการตอบกลับข้อยกเว้น วิศวกรใช้ข้อกำหนดนี้เมื่อเชื่อมต่อ PLC, HMI, เซ็นเซอร์, ไดรฟ์, เกตเวย์, ตัวควบคุม และอุปกรณ์ระบุตัวตนที่ต้องการวิธีที่คาดเดาได้ในการอ่านหรือเขียนข้อมูลการทำงาน
MODBUS เป็นโปรโตคอลการสื่อสารแบบอนุกรมเท่านั้นหรือไม่
ไม่ใช่ MODBUS เริ่มต้นจากมาตรฐานการสื่อสารแบบอนุกรม แต่โปรโตคอลแอปพลิเคชันสามารถแมปไปยังสื่อรับส่งหลายประเภทได้ ข้อกำหนดนี้อธิบายชั้นแอปพลิเคชันและโครงสร้าง PDU ขณะที่กฎการนำไปใช้งานแยกต่างหากใช้กับการสื่อสารแบบสายอนุกรม TCP/IP บน Ethernet และสื่ออื่นๆ ด้วยเหตุนี้ MODBUS จึงทำงานได้ทั้งในเครือข่าย RS485 แบบเดิมและระบบที่ใช้ Ethernet สมัยใหม่
PDU และ ADU ของ MODBUS ต่างกันอย่างไร
PDU คือชุดข้อมูลโปรโตคอลหลัก ประกอบด้วยฟังก์ชันโค้ดและข้อมูลที่ขึ้นอยู่กับฟังก์ชันนั้น ส่วน ADU คือชุดข้อมูลแอปพลิเคชันเต็มรูปแบบที่ใช้บนสื่อรับส่งเฉพาะ โดยห่อ PDU ด้วยฟิลด์ที่เกี่ยวข้องกับการรับส่ง เช่น ที่อยู่เซิร์ฟเวอร์และ CRC บนสายอนุกรม หรือเฮดเดอร์ MBAP บน MODBUS TCP
ทำไมที่อยู่รีจิสเตอร์ MODBUS บางครั้งดูเหมือนคลาดเคลื่อนไปหนึ่ง
เรื่องนี้เกิดขึ้นเพราะโมเดลข้อมูล MODBUS อาจอธิบายองค์ประกอบด้วยหมายเลขตั้งแต่ 1 ถึง n ขณะที่ PDU ใช้การกำหนดที่อยู่เริ่มจากศูนย์ รีจิสเตอร์ที่แสดงต่อผู้ใช้เป็น 40001 อาจถูกกำหนดที่อยู่เป็น 0 ในคำขอจริง ขึ้นอยู่กับคู่มืออุปกรณ์ ผู้รวมระบบควรปฏิบัติตามแผนผังรีจิสเตอร์ของผู้จำหน่ายเสมอ และยืนยันว่าที่อยู่เขียนในรูปแบบอ้างอิงหรือรูปแบบ PDU
การตอบกลับข้อยกเว้นของ MODBUS คืออะไร
การตอบกลับข้อยกเว้นบอกไคลเอนต์ว่าได้รับคำขอแล้ว แต่ไม่สามารถดำเนินการตามที่ร้องขอได้ เซิร์ฟเวอร์จะส่งคืนฟังก์ชันโค้ดเดิมโดยตั้งบิตที่มีนัยสำคัญสูงสุด ตามด้วยรหัสข้อยกเว้น สาเหตุที่พบบ่อย ได้แก่ ฟังก์ชันที่ไม่รองรับ ที่อยู่ข้อมูลที่ไม่ถูกต้อง ค่าที่ไม่ถูกต้อง หรือสภาวะชั่วคราวของเซิร์ฟเวอร์ที่ขัดขวางการทำงานปกติ
MODBUS กำหนดโครงสร้างหน่วยความจำภายในของทุกอุปกรณ์หรือไม่
ไม่ MODBUS กำหนดโมเดลข้อมูลมาตรฐานและวิธีการเข้าถึง แต่การแมประหว่างโมเดลนั้นกับหน่วยความจำแอปพลิเคชันภายในของอุปกรณ์เป็นเรื่องเฉพาะผู้ผลิต อุปกรณ์หนึ่งอาจเก็บคอยล์ อินพุต และรีจิสเตอร์ไว้ในบล็อกแยกกัน ขณะที่อีกอุปกรณ์อาจวางซ้อนทับกันบนพื้นที่ข้อมูลเดียว ดังนั้นเอกสารของอุปกรณ์จึงจำเป็นอย่างยิ่งต่อการนำไปใช้งานที่ถูกต้อง
ควรตรวจสอบอะไรบ้างก่อนใช้ MODBUS ในโครงการจริง
ก่อนติดตั้ง ควรยืนยันประเภทการรับส่ง ฟังก์ชันโค้ดที่รองรับ รูปแบบที่อยู่ ขีดจำกัดจำนวนรีจิสเตอร์ ลำดับไบต์ การตั้งค่า timeout และกลยุทธ์การจัดการข้อยกเว้น สำหรับเครือข่ายอนุกรม ควรตรวจสอบที่อยู่สเลฟ อัตราบอด พาริตี การเดินสาย การป้องกันสัญญาณรบกวน และการสิ้นสุดสายด้วย สำหรับเครือข่าย Ethernet ควรตรวจสอบการเข้าถึงพอร์ต TCP การตั้งค่า IP การกำหนดเส้นทางเกตเวย์ และวิธีที่อุปกรณ์จัดการไคลเอนต์หลายราย



