พิมพ์คำที่ต้องการค้นหา ทั้งภาษาไทยและอังกฤษ

  1. หน้าแรก
  2. คลังความรู้
  3. PLC
  4. อนาล็อก · PID · สั่ง VFD

// บทที่ 22.8 · PLC · Analog, PID & VFD

อนาล็อก PID และการสั่งงานอินเวอร์เตอร์ด้วย PLC: สเกล 4–20 mA บล็อก PID ปั๊มแรงดันคงที่ และ Modbus RTU

โลกจริงไม่ได้มีแค่ 0 กับ 1: ความดัน ระดับ อุณหภูมิ และความเร็วมอเตอร์เป็นค่าต่อเนื่อง หน้านี้พาจากตัวเลขดิบในโมดูลแอนะล็อกไปสู่ลูปควบคุมความดันที่สั่งอินเวอร์เตอร์ ซึ่งเป็นงานที่พบมากที่สุดในอาคารและโรงงาน

เขียนโดย อาจารย์มดอัปเดต
สรุปใน 30 วินาที
  • สเกล: y=ymin+(x−xmin)(ymax−ymin)/(xmax−xmin)y = y_{min} + (x - x_{min})(y_{max} - y_{min})/(x_{max} - x_{min}) คำนวณเป็น REAL
  • ต่ำกว่า 3.6 mA หรือเกิน 21 mA = ความผิดพลาด ไม่ใช่ค่าวัด
  • PID: u=Kp(e+1Ti∫e dt+Tddedt)u = K_p\left(e + \frac{1}{T_i}\int e\,dt + T_d\frac{de}{dt}\right) · เริ่มจูนด้วย PI
  • สั่ง VFD: DI + AI ง่ายที่สุด · Modbus ได้ข้อมูลกลับ (กระแส ความผิดพลาด) ด้วยสายคู่เดียว

จากค่าดิบสู่หน่วยวิศวกรรม พื้นฐาน

02.557.51006912138242073627648ค่าดิบจาก ADCbar13824 → 5.0 bary = y_min + (x − x_min)· (y_max − y_min)/(x_max − x_min)4 mA00 bar12 mA138245 bar20 mA2764810 bar< 3.6 mAติดลบ/ต่ำสายขาด!ยี่ห้ออื่น: Mitsubishi 0–4000 หรือ 0–32000 · Omron 0–4000/0–8000 · ดูคู่มือโมดูล ตั้งช่วงให้ตรงกับทรานสมิตเตอร์
รูป 1 · ทรานสมิตเตอร์ความดัน 0–10 bar 4–20 mA เข้าโมดูลแอนะล็อกที่ให้ค่าดิบ 0–27648

P1 Linear scaling สเกลเชิงเส้น

y=ymin+(x−xmin) ymax−yminxmax−xminy = y_{min} + (x - x_{min})\,\frac{y_{max} - y_{min}}{x_{max} - x_{min}}

P2 Resolution ความละเอียดต่อหนึ่งหน่วยดิบ

Δy=ymax−yminxmax−xminเช่น 10 bar27648=0.36 mbar\Delta y = \frac{y_{max} - y_{min}}{x_{max} - x_{min}} \qquad \text{เช่น } \frac{10\ \text{bar}}{27648} = 0.36\ \text{mbar}

P3 Signal validity (NAMUR NE 43) ตรวจความถูกต้องของสัญญาณ

3.8≤I≤20.5 mA ค่าวัดเชื่อได้I≤3.6 หรือ I≥21 mA → ความผิดพลาด3.8 \le I \le 20.5\ \text{mA ค่าวัดเชื่อได้} \qquad I \le 3.6 \text{ หรือ } I \ge 21\ \text{mA → ความผิดพลาด}
ตัวอย่าง P-1

สเกลค่าดิบ 13824 ด้วย INT แล้วเกิดศูนย์

  1. ผิด: Bar := Raw / 27648 * 10; ใช้ INT → 13824/27648 = 0 (ปัดทิ้ง) → 0 bar

  2. ผิดอีกแบบ: Raw * 10 / 27648 ด้วย INT → 27648 × 10 = 276480 ล้น INT

  3. ถูก: Bar := INT_TO_REAL(Raw) * 10.0 / 27648.0; → 5.0 bar

  4. ตรวจ P3: โมดูล Siemens ให้ค่าดิบติดลบเมื่อกระแสต่ำกว่า 4 mA (ลงไปถึง −4864 ≈ 1.185 mA) และเมื่อเปิดการวินิจฉัยสายขาดจะรายงานค่าพิเศษ (32767) — ตรวจทั้งช่วงค่าดิบตาม P3 และบิตสถานะของโมดูล

บล็อก PID ใน PLC กลาง

SPΣ+−PIDKp Ti TdVFD0–50 Hzปั๊ม + ท่อความดันPT4–20 mAAO/ModbusPV (ค่าวัด) ผ่านอินพุตแอนะล็อก + การสเกลPLC: สเกล → PID → จำกัด → เอาต์พุตหรือใช้ PID ในตัว VFD ก็ได้ (ต่อ PT เข้า AI ของ VFD) — PLC สั่งแค่ RUN และค่าเป้าหมาย
รูป 2 · ลูปความดันคงที่: SP − PV = e → PID → ความถี่ → VFD → ปั๊ม → ความดัน → ทรานสมิตเตอร์

P4 PID (standard form) PID แบบมาตรฐาน

u(t)=Kp(e+1Ti∫0te dτ+Td dedt)e=SP−PVu(t) = K_p\left(e + \frac{1}{T_i}\int_0^t e\,d\tau + T_d\,\frac{de}{dt}\right) \qquad e = SP - PV

P5 Discrete PID PID ดิจิทัล (คาบสุ่ม TsT_s)

uk=Kp(ek+TsTi∑j=0kej−TdTs(PVk−PVk−1))u_k = K_p\left(e_k + \frac{T_s}{T_i}\sum_{j=0}^{k} e_j - \frac{T_d}{T_s}(PV_k - PV_{k-1})\right)

เทอมอนุพันธ์ใช้ PV แทน e (derivative on measurement) เพื่อไม่ให้กระชากเมื่อเปลี่ยน SP และต้องมี anti-windup: เมื่อเอาต์พุตชนขีด (เช่น 50 Hz) ให้หยุดสะสมอินทิกรัล งานปั๊ม-พัดลมส่วนใหญ่ใช้แค่ PI (Td = 0) เพราะสัญญาณความดันมีสัญญาณรบกวนมาก

จูนเริ่มต้นสำหรับปั๊มแรงดันคงที่

  1. เริ่ม Kp เล็ก (เช่น 0.5 ของสเกลเต็ม) Ti ยาว (เช่น 5 s) Td = 0
  2. เพิ่ม Kp จนเริ่มแกว่ง แล้วลดลงครึ่งหนึ่ง
  3. ลด Ti ทีละน้อยจนค่ากลับเข้าเป้าเร็วพอโดยไม่แกว่ง (ปกติ 1–5 s สำหรับความดันน้ำ)
  4. ทดสอบด้วยการเปิด-ปิดก๊อกจริง ดูทั้งการตกและการพุ่งเกิน

ทดลองผลของ Kp Ti Td ได้ใน แล็บ PID และลูปความดันกับปั๊ม VFD ใน แล็บวัดคุมเสมือน

สั่งอินเวอร์เตอร์จาก PLC กลาง

วิธีสายข้อดีข้อจำกัด
ดิจิทัล + preset speedDO → DI หลายเส้นง่าย ทนสัญญาณรบกวนได้ไม่กี่ความเร็ว
ดิจิทัล + แอนะล็อกDO → RUN · AO → AI (4–20 mA)ปรับต่อเนื่อง เข้าใจง่ายได้ข้อมูลกลับเพียงสิ่งที่เดินสายไว้ (AO, รีเลย์)
Modbus RTU (RS-485)สายคู่บิดเกลียว 1 คู่ ต่อหลายไดรฟ์อ่านกระแส ความถี่ ความผิดพลาด ตั้งพารามิเตอร์ได้ต้องตั้งค่าการสื่อสาร ตอบสนองช้ากว่าเมื่อมีหลายสถานี
Industrial EthernetPROFINET EtherNet/IP Modbus TCP EtherCATเร็ว ข้อมูลมาก วินิจฉัยครบต้องการโมดูลและการตั้งค่าเครือข่าย

P6 Frequency setpoint over Modbus ค่าความถี่ที่ส่งทาง Modbus

Reg=f0.01 Hz(35.5 Hz→3550)หรือReg=ffmax×Scale100%\text{Reg} = \frac{f}{0.01\ \text{Hz}} \quad (35.5\ \text{Hz} \to 3550) \qquad \text{หรือ} \quad \text{Reg} = \frac{f}{f_{max}}\times \text{Scale}_{100\%}
แผนที่รีจิสเตอร์ตัวอย่าง (สมมติเพื่อการเรียน — ทุกยี่ห้อต่างกัน ต้องใช้คู่มือจริง)
รีจิสเตอร์ชื่ออ่าน/เขียนค่า
40001Control wordWบิต 0 = RUN · บิต 1 = REV · บิต 2 = RESET
40002Frequency referenceW0.01 Hz
40011Status wordRบิต 0 = Ready · บิต 1 = Running · บิต 3 = Fault
40012Output frequencyR0.01 Hz
40013Output currentR0.1 A
40014Fault codeRรหัสตามคู่มือ

การต่อ RS-485 การคำนวณ CRC-16 และเครื่องสร้างเฟรมอยู่ใน Modbus RTU · TCP ข้อควรจำ: ตั้ง “communication timeout” ในไดรฟ์ ถ้า PLC เงียบเกินเวลาที่ตั้งให้ไดรฟ์หยุด มิฉะนั้นเมื่อสายสื่อสารขาด ไดรฟ์จะเดินค้างที่ความถี่สุดท้าย

ตัวอย่าง P-2

PLC ส่ง 4–20 mA ให้ VFD ช่วง 20–50 Hz ต้องการ 42 Hz

  1. กลับสูตร P1: I=4+16 (42−20)/(50−20)=4+11.73=15.73I = 4 + 16\,(42 - 20)/(50 - 20) = 4 + 11.73 = 15.73 mA

  2. ถ้าเอาต์พุตแอนะล็อก 0–27648 = 4–20 mA: ค่าดิบ =27648×11.73/16=20275= 27648 \times 11.73/16 = 20275

  3. ตั้งไดรฟ์ให้ตรวจ AI ต่ำกว่า 2 mA ว่าสายขาด และเลือกการตอบสนอง (หยุด/ความเร็วสำรอง)

คำถามที่พบบ่อย

ใช้ PID ใน PLC หรือใน VFD ดีกว่า?

ถ้าเป็นลูปเดียวที่ทรานสมิตเตอร์ต่อเข้า VFD ได้ตรง PID ใน VFD ง่ายและตอบสนองเร็ว ทำงานต่อได้แม้ PLC ขัดข้อง ถ้าต้องประสานหลายปั๊ม มีหลายเงื่อนไข หรือต้องบันทึกและปรับจาก SCADA PID ใน PLC ยืดหยุ่นกว่า

Modbus สั่งความถี่ 35.5 Hz ต้องส่งค่าอะไร?

ขึ้นกับหน่วยของรีจิสเตอร์ในคู่มือไดรฟ์ ไดรฟ์หลายยี่ห้อใช้หน่วย 0.01 Hz จึงส่ง 3550 บางยี่ห้อใช้สัดส่วนของความถี่สูงสุด เช่น 0–16384 หรือ 0–10000 = 0–100 % ต้องอ่านคู่มือและทดสอบด้วยค่าต่ำก่อนเสมอ

อาจารย์มด · ธีรวุฒิ แสวงบุญ
อาจารย์สาขาวิชาวิศวกรรมไฟฟ้า มหาวิทยาลัยราชภัฏธนบุรี สมุทรปราการ · ดูโปรไฟล์