เจาะลึกการต่อเซ็นเซอร์ SHT30 หลายตัวกับ PLC LK3U ด้วย Modbus RTU: ตั้งแต่การเปลี่ยน ID จนถึงการเขียนโปรแกรม
สรุปย่อ: บทความนี้อธิบายขั้นตอนการเชื่อมต่อเซ็นเซอร์วัดอุณหภูมิและความชื้น SHT30 (RS485 Modbus RTU) หลายตัว เข้ากับ PLC LK3U (Linkkong) แบบ Multi-Node ครอบคลุมตั้งแต่การต่อสาย การตั้งค่า Communication การเปลี่ยน Slave ID จนถึงการเขียนโปรแกรม PLC ด้วยคำสั่ง ADPRW เพื่ออ่านค่าอุณหภูมิและความชื้นแบบ Real-time เหมาะสำหรับงาน Smart Farm, ห้อง Clean Room และระบบควบคุมสภาพแวดล้อมในโรงงาน
1. ทำความรู้จักกับอุปกรณ์
PLC LK3U (Linkkong)
PLC LK3U เป็น PLC ขนาดเล็กจาก Linkkong ที่รองรับการสื่อสารผ่านพอร์ต RS485-1 ทำให้สามารถเชื่อมต่อกับอุปกรณ์ Modbus RTU ภายนอกได้โดยตรง เหมาะสำหรับงานระบบอัตโนมัติขนาดเล็กถึงกลางที่ต้องการ cost-effective solution
เซ็นเซอร์ SHT30 (RS485 Modbus RTU)
SHT30 เป็นเซ็นเซอร์วัดอุณหภูมิและความชื้นแบบดิจิทัลจากผู้ผลิต Fantasy IoT (济南范特西物联网科技) ที่ใช้การสื่อสาร RS485 โปรโตคอล Modbus RTU มีข้อมูลสเปคจาก Datasheet ดังนี้:
| รายการ | รายละเอียด |
|---|---|
| แหล่งจ่ายไฟ (DC) | 7-30V DC (แนะนำ 12V หรือ 24V) |
| กินไฟสูงสุด | 0.3W |
| ความแม่นยำอุณหภูมิ | ±0.3°C (ที่ 25°C) |
| ความแม่นยำความชื้น | ±2%RH (5%~95%RH, 25°C) |
| ช่วงวัดอุณหภูมิ | -40°C ถึง +125°C |
| ช่วงวัดความชื้น | 0%RH ~ 100%RH |
| ความละเอียดอุณหภูมิ | 0.1°C |
| ความละเอียดความชื้น | 0.1%RH |
| โปรโตคอล | Modbus RTU (RS485) |
| Baud Rate (Default) | 9600 bps, N, 8, 1 |
| Refresh Time | <2 วินาที |
| ระยะสื่อสาร RS485 | สูงสุด 800 เมตร |
การเชื่อมต่อสาย
ใช้การต่อแบบ ขนาน (Daisy Chain) บนบัส RS485 โดยต่อ A กับ A, B กับ B ของทุกอุปกรณ์ และจ่ายไฟเลี้ยง 7-30V DC (แนะนำ 24V จาก PLC) ให้กับเซ็นเซอร์แต่ละตัว
| สายสี | ฟังก์ชัน | ต่อกับ PLC LK3U |
|---|---|---|
| แดง | V+ (ไฟเลี้ยง 7-30V DC) | +24V |
| ดำ | GND (ไฟเลี้ยง) | 0V |
| เหลือง | A+ (RS485) | RS485-1 A+ |
| เขียว | B- (RS485) | RS485-1 B- |
⚠️ ข้อควรระวัง: สาย A กับ B ห้ามสลับกัน! และหากมีอุปกรณ์จำนวนมากหรือเดินสายยาว ควรเพิ่ม Termination Resistor 120Ω ที่ปลายสาย
2. การตั้งค่าการสื่อสาร (Communication Settings)
เพื่อให้ PLC LK3U และเซ็นเซอร์ SHT30 สื่อสารกันได้ ต้องตั้งค่าพารามิเตอร์ให้ตรงกัน:
| พารามิเตอร์ | ค่าที่ตั้ง |
|---|---|
| Baud Rate | 9600 bps |
| Data Bit | 8 บิต |
| Parity | None (ไม่มีการตรวจสอบ) |
| Stop Bit | 1 บิต |
| Error Check | CRC (Cyclic Redundancy Check) |
| PLC Register | D8400 (ค่า Default = H3081) |
ใน PLC LK3U ให้ตั้งค่าที่ Register D8400 เป็น H3081 ซึ่งเป็นค่า Default สำหรับ 9600, N, 8, 1 เพื่อให้พอร์ต RS485-1 พร้อมสื่อสาร Modbus RTU
3. การเตรียม Slave ID สำหรับเซ็นเซอร์หลายตัว (Multi-Node)
ในการต่อเซ็นเซอร์ SHT30 หลายตัว บนบัส RS485 เดียวกัน สิ่งสำคัญที่สุดคือ Slave ID ของเซ็นเซอร์แต่ละตัวต้องไม่ซ้ำกัน (ค่า Default จากโรงงานคือ 0x01 ทุกตัว)
วิธีเปลี่ยน Slave ID ของ SHT30
จาก Datasheet ของ SHT30 สามารถเปลี่ยน Slave ID ได้โดยใช้ Function Code 0x06 (Write Single Register) เขียนค่าไปที่ Register Address 0x0100 (256 ทศนิยม)
ตัวอย่าง Modbus Frame เปลี่ยน Slave ID จาก 1 เป็น 2:
0x01 0x06 0x01 0x00 0x00 0x02 0x09 0xF7
โดย: 0x01 = Address เดิม, 0x06 = Write, 0x0100 = Register เปลี่ยน ID, 0x0002 = ID ใหม่
ขั้นตอนสำคัญ: ต้องต่อเซ็นเซอร์ ทีละตัว ในการเปลี่ยน ID เพื่อป้องกันความสับสน เช่น:
- ตัวที่ 1: คง Slave ID = 1 (ค่า Default)
- ตัวที่ 2: เปลี่ยน Slave ID เป็น 2
- ตัวที่ 3: เปลี่ยน Slave ID เป็น 3
เมื่อเปลี่ยนเสร็จแล้ว จึงต่อเซ็นเซอร์ทุกตัวเข้าบัส RS485 พร้อมกัน
4. Modbus Register Map ของ SHT30
จาก Datasheet ระบุ Register สำหรับอ่านค่าดังนี้:
| Register Address | PLC Address | ข้อมูล | หมายเหตุ |
|---|---|---|---|
| 0x0000 | 40001 | ความชื้น (Humidity) | ทศนิยม 1 ตำแหน่ง (หาร 10) |
| 0x0001 | 40002 | อุณหภูมิ (Temperature) | ทศนิยม 1 ตำแหน่ง (หาร 10) |
| 0x0002 | 40003 | ความสว่าง (Lux) | จำนวนเต็ม (0-65535 Lux) |
การแปลงค่า: ค่าที่อ่านได้จาก Register จะเป็นจำนวนเต็ม ต้องนำมา หารด้วย 10 เพื่อให้ได้ทศนิยม เช่น อ่านได้ 242 = 24.2°C หรือ 658 = 65.8%RH
กรณีอุณหภูมิติดลบ ข้อมูลจะเป็นเลข Complement (2’s Complement) เช่น 0xFF9B = -101 = -10.1°C
5. การเขียนโปรแกรม PLC ด้วยคำสั่ง ADPRW
PLC LK3U ใช้คำสั่ง ADPRW ในการอ่านข้อมูลจาก Slave Device ผ่าน Modbus RTU:
โครงสร้างคำสั่ง ADPRW
ADPRW [Slave ID] [Function Code] [Start Address] [Quantity] [Destination Register] ตัวอย่าง: อ่านค่าจากเซ็นเซอร์ ID 1 ADPRW K1 H3 K0 K2 D100 โดย: K1 = Slave ID = 1 H3 = Function Code 03 (Read Holding Register) K0 = Start Address = 0 (เริ่มจาก Register 0x0000) K2 = Quantity = 2 (อ่าน 2 Register: ความชื้น + อุณหภูมิ) D100 = เก็บผลลัพธ์ที่ D100 (ความชื้น) และ D101 (อุณหภูมิ)
การอ่านเซ็นเซอร์หลายตัวแบบ Real-time (Polling)
เมื่อมีเซ็นเซอร์หลายตัว ห้ามสั่งอ่านพร้อมกัน เพราะจะทำให้ข้อมูลชนกันบนบัส RS485 ต้องเขียนโปรแกรมให้ อ่านสลับกัน (Polling):
// เซ็นเซอร์ตัวที่ 1 (Slave ID = 1) → เก็บค่าที่ D100, D101
เมื่อ M8000 (Always ON) และ M0 = ON:
ADPRW K1 H3 K0 K2 D100
เมื่ออ่านเสร็จ (Complete Flag) → SET M1, RST M0
// เซ็นเซอร์ตัวที่ 2 (Slave ID = 2) → เก็บค่าที่ D110, D111
เมื่อ M1 = ON:
ADPRW K2 H3 K0 K2 D110
เมื่ออ่านเสร็จ → SET M2, RST M1
// เซ็นเซอร์ตัวที่ 3 (Slave ID = 3) → เก็บค่าที่ D120, D121
เมื่อ M2 = ON:
ADPRW K3 H3 K0 K2 D120
เมื่ออ่านเสร็จ → SET M0, RST M2
(วนกลับไปอ่านตัวที่ 1 ใหม่)
การแปลงค่าเป็นทศนิยม
// แปลงค่าเซ็นเซอร์ตัวที่ 1 DIV D100 K10 D200 // D200 = ความชื้นจริง (เช่น 658÷10 = 65.8%RH) DIV D101 K10 D201 // D201 = อุณหภูมิจริง (เช่น 242÷10 = 24.2°C)
6. ตัวอย่าง Modbus Frame จาก Datasheet
จาก Datasheet ของ SHT30 แสดงตัวอย่างการสื่อสาร Modbus RTU ดังนี้:
อ่านค่าอุณหภูมิและความชื้นพร้อมกัน
| ทิศทาง | Hex Frame | ความหมาย |
|---|---|---|
| Master → Slave | 01 03 00 00 00 02 C4 0B |
อ่าน 2 Register ตั้งแต่ Address 0 |
| Slave → Master | 01 03 04 02 92 FF 9B 5A 3D |
ความชื้น=0x0292(658)=65.8%RH, อุณหภูมิ=0xFF9B(-101)=-10.1°C |
7. จุดเด่นของโซลูชัน PLC LK3U + SHT30
- คุ้มค่า: PLC LK3U ราคาประหยัด + SHT30 ราคาถูก ได้ระบบวัดอุณหภูมิ-ความชื้นหลายจุดครบชุด
- เดินสายได้ไกล: RS485 รองรับระยะสื่อสารสูงสุด 800 เมตร เหมาะกับโรงงานหรือฟาร์มขนาดใหญ่
- Multi-Node: ต่อเซ็นเซอร์ได้หลายตัวบนสายเดียวกัน ลดต้นทุนการเดินสาย
- แม่นยำสูง: ความแม่นยำ ±0.3°C สำหรับอุณหภูมิ และ ±2%RH สำหรับความชื้น
- ย่านวัดกว้าง: ทำงานได้ตั้งแต่ -40°C ถึง +125°C รองรับสภาพแวดล้อมหลากหลาย
8. งานที่เหมาะสม (Applications)
- Smart Farm / โรงเรือนเพาะปลูก: ควบคุมอุณหภูมิความชื้นหลายจุดในโรงเรือน
- ห้อง Clean Room / ห้องเซิร์ฟเวอร์: มอนิเตอร์สภาพแวดล้อมแบบ Real-time
- โรงงานอุตสาหกรรม: ตรวจสอบสภาพแวดล้อมในกระบวนการผลิต ตู้ควบคุมไฟฟ้า
- คลังสินค้า / ห้องเก็บยา: ควบคุมอุณหภูมิความชื้นตามมาตรฐาน GMP
9. วิดีโอสอนการใช้งาน
ดูวิดีโอสาธิตขั้นตอนการต่อเซ็นเซอร์ SHT30 กับ PLC LK3U ผ่าน Modbus RTU แบบละเอียดได้ที่ช่อง YouTube ของเรา:
10. FAQ คำถามที่พบบ่อย
Q1: ต่อเซ็นเซอร์ SHT30 ได้สูงสุดกี่ตัวบนบัส RS485 เดียวกัน?
ตาม Modbus RTU สามารถต่อได้สูงสุด 247 Slave แต่ในทางปฏิบัติแนะนำไม่เกิน 30-50 ตัว โดยอาจต้องเพิ่ม RS485 Repeater และ Termination Resistor 120Ω หากเดินสายยาว
Q2: ทำไมอ่านค่าจากเซ็นเซอร์ไม่ได้?
สาเหตุที่พบบ่อย: (1) สาย A กับ B สลับกัน (2) Slave ID ซ้ำกัน (3) Baud Rate ไม่ตรงกัน (4) Polling Interval สั้นเกินไป (ควรตั้งมากกว่า 200ms) (5) ไม่ได้ตั้งค่า D8400 ใน PLC
Q3: ค่าอุณหภูมิที่อ่านได้เป็นเลขแปลกๆ เช่น 65435 หมายความว่าอย่างไร?
นี่คือค่าอุณหภูมิติดลบในรูปแบบ 2’s Complement ของเลข 16 บิต เช่น 65435 = 0xFF9B = -101 หมายถึง -10.1°C ต้องใช้คำสั่งแปลงค่า signed integer ใน PLC
รายละเอียดสินค้าและช่องทางสั่งซื้อ
เซ็นเซอร์วัดอุณหภูมิและความชื้น SHT30 RS485 Modbus RTU
| รหัสสินค้า: | P1216 |
| ราคา: | ติดต่อสอบถามราคา โทร 083-848-8314 หรือ Line: @vrautomation |
| สต๊อก: | พร้อมส่ง (กรุณาสอบถามจำนวน) |
| เว็บผู้ผลิต: | Fantasy IoT (济南范特西物联网科技) | หน้าสินค้า Temp & Humidity Sensors |
สนใจ PLC LK3U หรือ เซ็นเซอร์ SHT30 Modbus RTU?
VR Automation จำหน่ายและให้บริการติดตั้ง พร้อมทีมช่างผู้เชี่ยวชาญด้านระบบ Automation
โทรสอบถามราคา: 083-848-8314
อีเมล: [email protected]
Line: @vrautomation
สต๊อกกรุณาสอบถาม | รับประกันสินค้า | บริการหลังการขาย | ออกใบกำกับภาษีได้
ที่มาข้อมูล
- Datasheet: 温湿度/光照度使用说明书 (壁挂式) V1.0 — 济南范特西物联网科技有限公司 (fantasyiot.com)
- PLC LK3U Manual — Linkkong
- ไฟล์โปรแกรมตัวอย่าง: LK3U-Temp-Humid.gxw — VR Automation

