ModbusSlaveจำลองสถานการณ์
แอพ Windows แบบสแตนด์อโลนที่รองรับโปรโตคอล Modbus RTU, TCP, UDP และ ASCIIoverRTU สำหรับการจำลอง
รวมไปถึงเวอร์ชัน Mono สำหรับ Linux และ Mac OS X ซึ่งเป็นเวอร์ชัน VB Net ดังนั้น:
- สำหรับ Linux คุณจะต้องติดตั้งแพ็คเกจ
mono-complete
และ mono-vbnc
- Mac อาจแตกต่างกันไปขึ้นอยู่กับเวอร์ชันของ OS X อาจติดตั้งแพ็คเกจ
mono
และ mono-basic
หากเปิดใช้งานไฟร์วอลล์ ระบบอาจแจ้งให้คุณอนุญาตให้แอปนี้สื่อสารบนเครือข่าย:
- โดยปกติควรได้รับอนุญาตให้สื่อสารบนเครือข่ายส่วนตัว ไม่เช่นนั้นอาจทำงานไม่ถูกต้อง
- อย่าอนุญาตให้สาธารณะเข้าถึงได้เว้นแต่คุณจะรู้ว่าคุณกำลังทำอะไรอยู่
- เมื่อการทดสอบเสร็จสิ้น อย่าลืมลบแอปนี้ออกจากรายการแอปที่อนุญาตของไฟร์วอลล์
แอปได้รับการออกแบบมาเพื่อให้สามารถเรียกใช้แอปหลายอินสแตนซ์พร้อมกันได้ เช่น:
- ใช้โปรโตคอลเดียวกันสำหรับแต่ละอินสแตนซ์ แต่มีหมายเลขพอร์ตต่างกัน คล้ายกับ:
- IP 127.0.0.1 พอร์ต TCP 501 และ IP 127.0.0.1 พอร์ต TCP 502
- ใช้โปรโตคอลที่แตกต่างกันผสมผสานกับความช่วยเหลือของเครื่องมืออื่นๆ (เช่น com0com สำหรับโปรโตคอล RTU บน Windows)
แอปควรให้บริการคำขอ Modbus Slave ID ที่ถูกต้อง
ทั้งหมดนี้อิงจากไลบรารี nModbus .NET 3.5 ที่ได้รับการแก้ไข ลิขสิทธิ์ (c) 2006 Scott Alexander:
- สิ่งเหล่านี้รวมไว้เป็นทรัพยากรสำหรับเวอร์ชัน Windows แต่แยกจากกันสำหรับเวอร์ชัน Mono
มีวัตถุประสงค์เพื่อใช้เป็นเครื่องมือทดสอบอย่างรวดเร็ว:
- สามารถทดสอบร่วมกับ ModbusMaster ได้ (ตรวจสอบวิดีโอเพิ่มเติมด้านล่าง)
- หรืออาจใช้ซอฟต์แวร์ AdvancedHMI แทน เนื่องจากมีฟังก์ชันการทำงานสูงและฟรี
ภาพหน้าจอ
ฟังก์ชั่นการทำงาน
- สามารถตั้งค่าทั้งหมดก่อนที่จะสร้างการเชื่อมต่อ - คอยส์, อินพุตแบบแยก, รีจิสเตอร์อินพุต, รีจิสเตอร์โฮลดิ้ง
- มุมมองตารางข้อมูลถูกตั้งค่าให้เริ่มแรกแสดงที่อยู่ 20 แถว แต่สามารถเปลี่ยนได้ภายใน
Row Count
เพื่อแสดงแถวเพิ่มเติมหรือทั้งหมดหากจำเป็น - ในมุมมองตารางข้อมูล ที่เลือกด้วยดรอปดาวน์
I/O Address Range
ให้ดับเบิลคลิกที่ค่าเพื่อเปลี่ยน:- ค่าบูลีนจะพลิกระหว่าง 0 ถึง 1
- ค่า Uint16 ต้องใช้ค่าจำนวนเต็มที่ไม่ได้ลงนามระหว่าง 0 ถึง 65535
- อินพุตแบบแยกและรีจิสเตอร์อินพุตให้การเข้าถึงแอปพลิเคชัน Master
read-only
:- อุปกรณ์ MODBUS ที่กำหนดให้เป็น
Master
สามารถส่งคำขอเพื่ออ่านค่าเหล่านี้ได้เท่านั้น - ค่าเหล่านี้ควรได้รับการจัดการโดยผู้ใช้โดยตรงในเครื่องจำลอง มิฉะนั้นค่าเหล่านี้จะไม่เปลี่ยนแปลง
- Coils และ Holding Registers ให้การเข้าถึง
read/write
ในแอปพลิเคชัน Master:- อุปกรณ์ MODBUS ที่กำหนดให้เป็น
Master
สามารถส่งคำขอเพื่ออ่านค่าเหล่านี้รวมทั้งส่งคำขอให้แก้ไขค่าเหล่านี้ได้ - ผู้ใช้ยังสามารถจัดการค่าเหล่านี้ได้โดยตรงในเครื่องจำลองหากจำเป็น
- สำหรับโปรโตคอล
RTU
และ ASCIIoverRTU
บนพีซีเครื่องเดียว ตัวจำลองนี้สามารถใช้ความช่วยเหลือจาก:- โปรแกรม com0com สำหรับ Windows เพื่อจัดเตรียมคู่พอร์ตอนุกรมเสมือน
- โปรแกรม tty0tty สำหรับ Linux เพื่อจัดเตรียมคู่พอร์ตอนุกรมเสมือน
- กล่องข้อความเพิ่มเติมช่วยให้สามารถป้อนข้อมูลด้วยตนเองของพอร์ตอนุกรม:
- มีไว้สำหรับ Linux เป็นหลักเพื่อให้สามารถเข้าถึงคู่พอร์ตเสมือน
tty0tty
เช่น /dev/tnt0
<=> /dev/tnt1
ได้ - กล่องนี้ถูกลบออกในเวอร์ชัน Mac Mono
- ไลบรารียังรองรับ Masked Bit Write, โค้ดฟังก์ชัน 22 (0x16H หรือ FC22)
การใช้งาน
-> สำหรับวินโดวส์
- ใช้ไฟล์ปฏิบัติการ Windows จากโฟลเดอร์
exe
หรือทำตามคำแนะนำด้านล่างเพื่อสร้างด้วยตนเอง:- ดาวน์โหลดและติดตั้ง Visual Studio community edition (ควรเป็นปี 2019)
- ดาวน์โหลดและแตกไฟล์ zip ของโปรเจ็กต์นี้
- เปิดสิ่งนี้เป็นโครงการที่มีอยู่ใน Visual Studio และบนเมนูให้ทำ:
- สร้าง/สร้างโซลูชัน (หรือกด Ctrl-Shift-B)
- ดีบัก/เริ่มดีบัก (หรือกด F5) เพื่อเรียกใช้แอป
- ค้นหาไฟล์ EXE ที่สร้างขึ้นในโฟลเดอร์
/bin/Debug
และคัดลอกไปยังโฟลเดอร์หรือเดสก์ท็อปที่คุณต้องการ
- สำหรับการทดสอบโปรโตคอล RTU ให้ใช้ com0com เพื่อสร้างพอร์ตอนุกรมเสมือน
-> สำหรับโมโน
- ตรวจสอบให้แน่ใจว่าได้ติดตั้ง Mono บนคอมพิวเตอร์ของคุณแล้ว:
- ทั้งแพ็คเกจ
mono-complete
และ mono-vbnc
สำหรับ Linux - สำหรับ Mac คุณอาจต้องทดลอง อาจเป็นแพ็คเกจ
mono
และ mono-basic
- ดาวน์โหลดและแตกไฟล์ zip ของโปรเจ็กต์นี้ และค้นหาไฟล์เก็บถาวร Mono ในโฟลเดอร์
Mono
- แยกไฟล์ 4 ไฟล์และอาจเปลี่ยนชื่อโฟลเดอร์และ/หรือไฟล์ exe ที่สร้างขึ้นใหม่ให้สั้นลงหากคุณต้องการ (เพียงเพื่อทำให้การนำทางเทอร์มินัลเร็วขึ้น)
- เปิดเทอร์มินัลนำทางไปยังโฟลเดอร์และพิมพ์:
sudo mono ModbusSlaveSimulation.exe
:- บน Mac คุณอาจต้องเปลี่ยนไปใช้บัญชี superuser
su
- สำหรับการทดสอบโปรโตคอล RTU บน Linux คุณสามารถติดตั้งและใช้พอร์ตเสมือน tty0tty ในขณะที่บน Mac OS X เวอร์ชันใหม่กว่าดูเหมือนจะมีเทอร์มินัลหลอก - คู่อุปกรณ์เช่น
/dev/ptyp3
และ /dev/ttyp3
หมายเหตุสำหรับผู้ใช้ Mac: สิ่งนี้ได้รับการทดสอบบนคอมพิวเตอร์ iMac G5 PowerPC รุ่นเก่าที่มี Mono v2.10.2 มีพฤติกรรมแปลก ๆ เกิดขึ้นในแง่ที่ว่าแอปสูญเสียโฟกัส จึงรบกวนการสื่อสาร TCP อย่างต่อเนื่อง มีกล่องข้อความที่มีเครื่องหมาย X สีแดงซึ่งคุณสามารถคลิกเพื่อพยายามรักษาโฟกัสไว้ได้ (หากคุณทำอย่างอื่นหลังจากนั้น ให้คลิกอีกครั้ง) เนื่องจากฉันไม่สามารถทดสอบด้วยวิธีอื่นได้ ดังนั้นจึงเหลือให้คุณทดลอง
วีดีโอ
Modbus.TCP.Communication.mp4
ใบอนุญาต
ได้รับอนุญาตภายใต้ใบอนุญาต MIT - โปรดดูไฟล์ README.txt ภายในโฟลเดอร์ Resources
เครื่องหมายการค้า
เครื่องหมายการค้าใดๆ และทั้งหมด ไม่ว่าจะกล่าวถึงโดยตรงหรือโดยอ้อมในโครงการนี้เป็นของเจ้าของที่เกี่ยวข้อง
ทรัพยากรที่เป็นประโยชน์
ฟอรัมเว็บไซต์ AdvancedHMI ซึ่งเป็นอีกหนึ่งโครงการโอเพ่นซอร์ส