PID Controllor

PID เป็นตัวควบคุมแบบป้อนกลับ ถูกนำมาใช้ในการควบคุมคุณสมบัติของกระบวนการ (Process variable, PV) เช่น อุณหภูมิ, แรงดัน, อัตราการไหล, ระดับความสูง และอื่นๆเพื่อให้ได้ค่าตามที่ต้องการ (Setpoint, SP) โดยอาศัยค่าความผิดพลาด (Error) ระหว่าง PV กับ SP เอามาคำนวณในสมการ PID แล้วนำผลลัพธ์ไปควบคุมอุปกรณ์ (CV) ดังรูป

PD1

Note: Dependent gain บางคนเรียกว่า Interacting gain และ Independent gain เรียกว่า Noninteracting gain

ค่าความผิดพลาด (Error) ที่นำมาคำนวณจะแบ่งออกเป็น 3 ส่วน ได้แก่ ค่าความผิดพลาดปัจจุบัน (Proportion, P) , ค่าความผิดพลาดรวมในอดีต (Integral,I ) และ อัตราการเปลี่ยนแปลงค่าความผิดพลาด (Derivative,D) ซึ่งสมการและค่าต่างๆเหล่านี้เราไม่ต้องคำนวณเอง ใน RSLogix5000 นั้นมีคำสั่ง PID มาให้ใช้งานได้เลยอยู่ในกรุ๊ปของคำสั่งพิเศษ (Special)

PD2

ให้ทดลองนำคำสั่ง PID มาวางบน Rung เปล่าดังรูปด้านล่าง จากนั้นพิมพ์ชื่อ Tag “LIC1234_PID” ลงในช่อง PID เพื่อใช้เก็บข้อมูลของคำสั่ง PID

PD3จากนั้นคลิ๊กขวาที่ LIC1234_PID แล้วเลือกสร้าง Tag ใหม่เป็นชนิด PID จากนั้นคลิ๊กปุ่ม OK

PD4เสร็จแล้วให้เราคลิ๊กที่ปุ่มสี่เหลี่ยมหลังคำว่า LIC1234_PID เพื่อเข้าไปเซ็ตพารามิเตอร์ในคำสั่ง PID

PD5

แท็ปแรกคือแท็ป Tuning ใช้เพื่อกำหนดค่าคงที่ของสมการ PID ดังนี้

PD6

Setpoint – ป้อนค่า Setpoint (.SP)

Set output % – ในโหมด Software manual ค่านี้เป็นค่า Output ของ PID

ส่วนในโหมด Auto ค่านี้จะแสดงถึงค่า % Output ของ PID (.SO)

Output bias – เปอร์เซ็นต์ bias ของ output (.BIAS)

Proportion gain (Kp) – คือค่า Kp ของสมการ PID (.KP)

Integral gain (Ki) – คือค่า Ki ของสมการ PID (.KI)

Derivative time (Kd) – คือค่า Kd ของสมการ PID (.KD)

Manual Mode – เลือกโหมด manual (.MO) หรือ software manual (.SWM)

ในโหมด manual, คำสั่ง PID จะใช้ค่าจาก Tagtieback เอามาเป็น output ของ PID ซึ่งโดยทั่วไป tieback จะเอามาจากอุปกรณ์ภายนอก

ในโหมด software manual,คำสั่ง PID จะใช้ค่าจาก TagSet output (.SO)เอามาเป็น output ของ PID ซึ่งสามารถเปลี่ยนแปลงค่าได้โดย software

แท็ปที่สองคือแท็ป Configuration ใช้เพื่อกำหนดชนิดของสมการ PID และขอบเขตสูงสุดต่างๆ ดังนี้

PD7

PID equation – เลือกชนิดของ gain (.PE) ใช้ independent เมื่อต้องการให้แต่ละ gain แยกกัน หรือใช้                        Dependent เมื่อต้องการใช้แค่ gain รวมเพียงตัวเดียว

Control action – เลือกสมาการ Error (.CA), E=PV-SP หรือ E=SP-PV

Direct/Reverse-Acting

ใช้บอกลักษณะ Gain ของระบบ ถ้า CV เพิ่ม แล้ว PV เพิ่มตาม แสดงว่ามี Gain เป็นบวก (positive) เราจะเรียกว่า “Direct acting” ซึ่งตรงกันข้ามกับ “Reverse acting” คือ ถ้า CV เพิ่ม แล้ว PV กลับลดลง แสดงว่ามี Gain เป็นลบ (negative)

สำหรับระบบที่เป็นชนิด “Direct acting” ให้เลือก Control action (E) = SP-PV

สำหรับระบบที่เป็นชนิด “Reverse acting” ให้เลือก Control action (E) = PV-SP

ตัวอย่างระบบที่เป็น direct-acting:

เมื่อวาล์วเปิดมากขึ้น(CV เพิ่ม) ระดับน้ำเพิ่มขึ้น (PV เพิ่ม)

PD8

ตัวอย่างระบบที่เป็น Reverse-acting:

เมื่อวาล์วเปิดมากขึ้น(CV เพิ่ม) ระดับน้ำลดลง (PV ลด)

PD9

Derivative of – เลือกเป็น PV หรือ error (.DOE), เลือกเป็น PV เพื่อลดการกระชากของ output เมื่อค่า setpoint เปลี่ยนแปลง หรือ เลือกเป็น error เมื่อต้องการ response เร็วๆ ต่อเปลี่ยนแปลงของ setpoint

Loop update time – กำหนดช่วงเวลา update PID (.UPD) ซึ่งขึ้นอยู่กับการตอบสนองของกระบวนการที่เราควบคุม (Process response) เช่น ควบคุมอุณหภูมิซึ่งมีการตอบสนองต่อการเปลี่ยนแปลงค่อนข้างช้า เราอาจใช้ค่า update time มากๆได้ เช่นประมาณ 1 sec ส่วน process ที่มีการตอบสนองเร็วขึ้น เช่น pressure หรือ Flow อาจต้องการค่า update time ประมาณ 250 ms โดยทั่วไปเราใช้คำสั่ง Timer ช่วยในการกำหนด loop update time

CV high limit – ป้อนค่า high limit ของ control variable (.MAXO)

ถ้า output เกินlimit, คำสั่งจะเซ็ต alarm bit เป็น True

CV low limit – ป้อนค่า high limit ของ control variable (.MAXO)

ถ้า output เกินlimit, คำสั่งจะเซ็ต alarm bit เป็น True

Deadband value – ป้อนค่า deadband (.DB) ซึ่งคือช่วงความผิดพลาด (error) จากSetpoint ที่ยอมรับได้ คำสั่ง PID จะไม่ปรับค่า CV ถ้า PV อยู่ในช่วง deadband

PD10

แท็ปถัดมาคือแท็ป Alarm ใช้เพื่อกำหนดค่าสัญญาณเตือนต่างๆ ดังนี้

PD11

PV high – ป้อนค่า PV high alarm (.PVH)

PV low – ป้อนค่า PV low alarm (.PVL)

PV deadband – ป้อนค่า PV alarmdeadband (.PVDB)

Positive deviation – ป้อนค่า positive deviation (.DVP)

Negative deviation – ป้อนค่า Negative deviation (DVN)

Deviation deadband – ป้อนค่า deviation alarm deadband (.DVDB)

แท็ปถัดมาคือแท็ป Scaling ใช้เพื่อกำหนดสเกลของค่า Engineering unit กับ Process Variable ดังนี้

PD12

PV unscaled maximum – ป้อนค่า maximum PV (.MAXI) ที่รับมาจากAnalog Input

PV unscaled minimum – ป้อนค่า minimum PV (.MINI) ที่รับมาจากAnalog Input

PV engineering units maximum – ป้อนค่า max engineering units(.MAXS)

PV engineering units minimum – ป้อนค่า min engineering units(.MINS)

CV maximum – ป้อนค่า maximum CV ที่ 100% (.MAXCV)

CV minimum – ป้อนค่า minimum CV ที่ 0% (.MINCV)

Tieback maximum – ป้อนค่า maximum tieback (.MAXTIE) ที่รับมาจากAnalog Input

Tieback minimum – ป้อนค่า minimum tieback (.MINTIE) ที่รับมาจากAnalog Input

PID Initialized

PD13

ตัวอย่าง

โปรแกรมควบคุมระดับของเหลวในถังระบบแบบ direct acting ดังรูป

PD14

Rung17: กำหนดโหมดการทำงานของคำสั่ง PID จากสวิตซ์บนแผงควบคุม ถ้าบิดสวิตซ์ไปที่ตำแหน่ง Manual ทำให้บิต .MO เป็น True เอาพุตท์ของ PID จะมาจากค่าของ Tag FV1234_Tieback ซึ่งรับค่ามาจาก Analog input card อีกทีหนึ่ง ถ้าสวิตซ์อยู่ที่ตำแหน่ง Auto ทำให้บิต .MO เป็น Fault คำสั่ง PID จะทำงานในโหมด Software Auto และ เอาท์พุตมาจากสมการ PID (ถ้าไม่การใช้ Tieback ให้เซ็ตค่า Tieback เป็น 0)

Rung18: ใช้เปลี่ยนโหมดของ PID ให้อยู่ในโหมด Software manual เมื่ออุปกรณ์ในลูปมีปัญหา (Loop_Fault เป็น True) เพื่อกำหนดค่าเอาท์พุตของ PID ได้เองผ่าน .SO

Rung19: เมื่ออุปกรณ์ในลูปมีปัญหา เราจะสั่งให้เปิด Valve 100% โดย move ค่า 100 เข้า .SO

Rung20: กำหนดค่า Set point ให้คำสั่ง PID ผ่าน .SP (45%)

Rung21: เป็น Timer รีเซ็ตตัวเองทุก 1 วินาที เพื่อ Trigger คำสั่ง PID

Runf22: คำสั่ง PID

PD15PD16

 

หากมีข้อสงสัย อีเมลล์มาถามได้ที่ thaicontrol01@gmail.com หรือ Fan Page https://www.facebook.com/thaicontrol01 ครับ

 

 

 

About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s