ในบล็อกนี้ฉันต้องการให้แอปพลิเคชัน Qt Quick (qml) ขนาดเล็กเป็นตัวอย่างของการเชื่อมต่อ Modbus ผ่าน TCP / IP
ในตัวอย่าง Qt ฉันพบตัวอย่าง QWidget สําหรับการเชื่อมต่อ Modbus เท่านั้นและหลังจากเพิ่งสร้างแอปพลิเคชัน Qt Quick สําหรับสิ่งนี้ฉันต้องการให้เวอร์ชันที่บางลงเป็นตัวอย่าง
ห้องทดลอง
เพื่อให้สามารถทดสอบแอปพลิเคชันได้คุณต้องมีเซิร์ฟเวอร์ Modbus หรือโปรแกรมที่ "จําลอง" เซิร์ฟเวอร์ดังกล่าว ฉันใช้"Modbus Server Pro"จาก http://www.apphugs.com/modbus-server.html นี้ สิ่งนี้ช่วยให้คุณเรียกใช้สถานการณ์ทั้งหมดที่คุณต้องการ
แอปพลิเคชัน Qt
ก่อนอื่น: เนื่องจากมันจะไปไกลเกินไปที่จะโพสต์รหัสทั้งหมดที่นี่ฉันจะให้รหัสทั้งหมดเป็นไฟล์ ZIP (ดูด้านล่าง)
การตั้งค่า
ก่อนอื่นฉันสร้างคลาส SettingsDialog อย่างง่ายที่มีตัวเลือกการเชื่อมต่อ ในตัวอย่างที่เรียบง่ายนี่เป็นเพียง "modbusServerUrl", "responseTime" และ "numberOfRetries"
struct Settings {
QString modbusServerUrl = "192.168.2.86:1502";
int responseTime = 1000;
int numberOfRetries = 3;
};
การกําหนดคือ - ฉันคิดว่า - อธิบายตัวเองได้
- modbusServerUrl = หมายเลข TCP / IP บวกพอร์ตเซิร์ฟเวอร์ Modbus เช่น 192.168.2.86:502
- responseTime = เวลาสูงสุดใน ms ที่รอการตอบกลับจากเซิร์ฟเวอร์
- numberOfRetries = จํานวนความพยายามที่ล้มเหลวที่จะได้รับการยอมรับ
ใบสมัคร
onConnectButton คลิก()
ฟังก์ชัน onConnectButtonClicked() อ่านข้อมูลการเชื่อมต่อจากไฟล์การตั้งค่าและสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ Modbus
onReadButtonClicked()
ด้วย onReadButtonClicked() readRequests ต่างๆจะเริ่มต้นและการลงทะเบียนที่เกี่ยวข้องจะถูกอ่านจากเซิร์ฟเวอร์ Modbus ค่าที่ส่งกลับจะถูกส่งต่อไปยัง qml เป็น Q_PROPERTY ผ่านสัญญาณปล่อยและอัปเดตในส่วนติดต่อผู้ใช้
ฟังก์ชั่นเขียน
ฟังก์ชัน onWriteButtonClicked(int writeregister) ถูกใช้เพื่อเขียนไปยังรีจิสเตอร์เซิร์ฟเวอร์ Modbus ที่นี่มีการคาดการณ์ว่าการลงทะเบียนที่แตกต่างกันสามารถเขียนบนเซิร์ฟเวอร์ Modbus ผ่านตัวแปร "writeregister"
คุณสามารถดาวน์โหลดแอปพลิเคชันได้ที่นี่ ix-modbus-tcp-example.zip