คำถามติดแท็ก pid-controller

ตัวควบคุม PID คือกลไกป้อนกลับลูปควบคุม (ปิด) ใช้ในการควบคุมอุตสาหกรรมสำหรับข้อเสนอแนะตามสัดส่วนอินทิกรัลและอนุพันธ์

7
ประโยชน์ของการแปลง PID ที่ได้จาก Z คืออะไร?
ฉันได้เห็นบทความ PID จำนวนมากเช่นนี้ใช้ Z transform ของสมการ PID ทั่วไปเพื่อให้ได้สมการความแตกต่างที่บ้าซึ่งสามารถนำไปใช้ในซอฟต์แวร์ (หรือในกรณีนี้คือ FPGA) คำถามของฉันคืออะไรข้อได้เปรียบในการใช้งานกับPIDแบบดั้งเดิมและใช้งานง่ายยิ่งขึ้นโดยไม่มีปริญญาเอกประเภทการใช้งาน? ดูเหมือนจะง่ายต่อการเข้าใจและนำไปปฏิบัติ คำว่า P คือการคูณแบบตรง, อินทิกรัลใช้ผลรวมสะสมและประมาณโดยการลบตัวอย่างก่อนหน้าจากตัวอย่างปัจจุบัน หากคุณต้องการเพิ่มคุณสมบัติเช่นการป้องกัน Windral แบบบูรณาการมันจะเป็นพีชคณิตไปข้างหน้า กำลังพยายามเพิ่มการป้องกันแบบบูรณาการ Windup หรือคุณสมบัติอื่น ๆ ให้กับอัลกอริธึมชนิดที่แตกต่างเช่นลิงค์ด้านบนดูเหมือนว่ามันจะซับซ้อนกว่ามาก มีเหตุผลที่จะใช้การดำเนินการดังกล่าวนอกเหนือจาก "ฉันเป็นคนเลวที่ชอบทำ Z แปลงเพื่อความสนุก" สิทธิเป้อเย้อประเภทที่ไปพร้อมกับมันได้หรือไม่ แก้ไข: PID ที่ไม่มีบทความ PHD ที่ฉันเชื่อมโยงเป็นตัวอย่างของการใช้งานที่ง่ายขึ้นซึ่งใช้ผลรวมสะสมสำหรับคำหนึ่งและความแตกต่างระหว่างตัวอย่างต่อเนื่องสำหรับคำอนุพันธ์ มันสามารถนำมาใช้กับคณิตศาสตร์จุดคงที่ในลักษณะที่กำหนดและสามารถรวมข้อมูลค่าคงที่แบบเรียลไทม์ในการคำนวณหากต้องการ โดยทั่วไปฉันกำลังมองหาข้อได้เปรียบในทางปฏิบัติกับวิธีการแปลง Z ฉันไม่เห็นว่ามันจะเร็วขึ้นหรือใช้ทรัพยากรน้อยลง แทนที่จะเก็บผลรวมสะสมของอินทิกรัลเมธอด Z จะปรากฏขึ้นเพื่อใช้เอาต์พุตก่อนหน้านี้และลบส่วนประกอบ P และ D ก่อนหน้า (เพื่อให้ได้ผลรวมที่ครบถ้วนโดยการคำนวณ) ดังนั้นหากใครบางคนชี้ไปที่สิ่งที่ฉันหายไปฉันจะยอมรับความคิดเห็นของ AngryEE ว่าพวกเขาเหมือนกัน แก้ไขครั้งสุดท้าย: …

5
วิธีการเรียนรู้การควบคุมแบบ PID
ฉันต้องการเรียนรู้การควบคุมแบบ PID (สัดส่วน - รวม - อนุพันธ์) ส่วนใหญ่สำหรับอุณหภูมิ ฉันต้องการที่จะเรียนรู้อย่างยิ่งผ่านโครงการง่ายที่จะทำ คุณช่วยแนะนำสิ่งที่จะใช้เวลาเรียนสองสามสัปดาห์? แก้ไข:ฉันต้องการควบคุมอุณหภูมิของถังเก็บน้ำ ความร้อนจะทำโดยตัวต้านทาน

4
โยเกิร์ตบนตัวควบคุม PID
คุณจะเปลี่ยนการปรับจูนคอนโทรลเลอร์ PID เพื่อจัดการกับการเปลี่ยนแปลงคุณสมบัติทางความร้อนได้อย่างไร? โครงการ: ฉันทำโยเกิร์ต มันอยู่ที่ 110 องศาฟาเรนไฮน์ประมาณครึ่งวัน คุณใส่นมและวัฒนธรรมเริ่มต้นเล็ก ๆ น้อย ๆ และรับโยเกิร์ต ประหยัดเล็กน้อยสำหรับผู้เริ่มต้นสำหรับชุดถัดไปและกินส่วนที่เหลือ ง่ายและอร่อย การตั้งค่า: ฉันกำลังนำภาชนะบรรจุอาหารที่ปลอดภัย (กระทะพร้อมฝาปิด) วางไว้บนเครื่องทำความร้อนเพิ่มเทอร์โมคับเปิลชนิด k ตัวควบคุม SSR และ PID ทั้งหมดมีสายสวยมากต่อการอ้างอิงของคอนโทรลเลอร์ PID ที่คุณสนใจ วิธีนี้ใช้ได้ดีถ้าฉันใช้ crockpot (225W ประมาณ 3/4 gal) เป็นทั้งกระทะและองค์ประกอบความร้อนของฉัน แต่ฉันต้องการทำแบทช์ที่มีขนาดใหญ่กว่า (1 แกลลอน) ปัญหา: ด้วยเครื่องทำความร้อนขนาดใหญ่อัตราส่วนความร้อน (1,000W จานร้อนและกระทะสแตนเลสแทนเซรามิก) มีความไม่แน่นอนเพิ่มขึ้นในช่วงต่อมาของวงจร ตัวควบคุม PID ถูกปรับด้วยน้ำ (นมมีราคาแพงกว่าเล็กน้อย) และเก็บอุณหภูมิภายใน 2 องศาฟาเรนไฮต์ในสองสามชั่วโมงแรก แต่เนื่องจากวัฒนธรรมโยเกิร์ตฉันสังเกตเห็นการแกว่งของอุณหภูมิที่เด่นชัดและไม่เหมือนกับการใช้ …

4
วิธีใช้การตอบสนองตามขั้นตอนที่วัดได้เพื่อปรับแต่งระบบควบคุม
เราใช้การตอบสนองแบบขั้นตอนที่วัดได้เพื่อปรับรูปแบบการควบคุมแบบ PID หรือการบิดได้อย่างไร ได้รับแรงบันดาลใจจากคำตอบนี้ *ฉันสนใจคำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้ระบบควบคุมตามการตอบสนองขั้นตอนที่วัดได้ ฉันจะไม่พยายามเดาผลกระทบทั้งหมด อาจมีบางสิ่งที่ไม่ชัดเจนเกิดขึ้นและคุณไม่สามารถรู้พารามิเตอร์ทั้งหมดได้ ฉันจะวัดการตอบสนองขั้นตอน ค้นหาการตั้งค่าเครื่องสูบน้ำสองแบบที่ทำให้ลูกบอลอยู่ในช่วงที่วัดได้ภายในหลอด จากนั้นให้ผู้ควบคุมเปลี่ยนจากการตั้งค่าหนึ่งเป็นการเปิดลูปอื่นโดยทันที ในขณะเดียวกันก็วัดสิ่งที่ลูกบอลทำเมื่อเวลาผ่านไป นั่นคือการตอบสนองขั้นตอน คุณสามารถหาอนุพันธ์ของมันและรับการตอบสนองของแรงกระตุ้น จากการตอบสนองแบบอิมพัลส์คุณสามารถทำนายการเคลื่อนที่ของลูกบอลสำหรับการตั้งค่าปั๊มใด ๆ โดยสมมติว่านี่เป็นระบบเชิงเส้น มันอาจเป็นเชิงเส้นเพียงพอในช่วงเล็ก ๆ ของการตั้งค่าเพื่อให้ลูกบอลอยู่ในช่วงปกติ คุณสามารถใช้สิ่งนี้เป็นฐานการจำลองเพื่อค้นหาพารามิเตอร์สำหรับการควบคุม PID แบบเก่า หรือคุณสามารถใช้การตอบสนองแบบอิมพัลส์โดยตรงเพื่อทำการควบคุมการบิด คุณต้องกรองความถี่ต่ำผ่านอินพุตควบคุมเพียงพอเพื่อให้เคอร์เนล Convolution ไม่ติดลบยกเว้นปั๊มของคุณสามารถย้อนกลับได้จริงและสามารถดูดลูกบอลกลับลงได้ มันทำงานยังไงกันแน่? PID การปรับแต่งเป็นเรื่องยาก ; ฉันถือว่า "การควบคุมการบิด" คือการใช้ฟังก์ชั่นโพล - ศูนย์หรือถ่ายโอน แต่ไม่เห็นวิธีการรับพารามิเตอร์อย่างชัดเจน ที่เกี่ยวข้อง: การสร้างแบบจำลองระบบสำหรับระบบควบคุม *ฟังก์ชั่นการถ่ายโอนการสร้างแบบจำลองของการลอยลูกปิงปองในหลอดเป็นสิ่งที่ทำให้ชื้น

4
การควบคุม PID ของมอเตอร์เฟดเดอร์
ฉันพยายามควบคุมเฟดเดอร์เชิงเส้นด้วยมอเตอร์ (Linear Slide Potentiometer) โดยใช้ Arduino การควบคุมแบบ PID ให้ผลลัพธ์ที่ดีสำหรับ "การกระโดด" ไปยังตำแหน่งเป้าหมายที่เฉพาะเจาะจง แต่การติดตามทางลาดเป็นปัญหามันไม่ราบรื่นเลย การเคลื่อนไหวนั้นกระตุกมากไม่ว่าฉันจะพยายามทำอะไร นี่คือพล็อตของตำแหน่งอ้างอิงตำแหน่งที่วัดได้และเอาท์พุทมอเตอร์เมื่อติดตามทางลาด: และนี่คือวิดีโอของการทดสอบเดียวกันนั้น สำหรับระบบเชิงพาณิชย์ดูเหมือนว่าจะราบรื่นกว่ามากดูนี่สิ รายละเอียด : เฟดเดอร์มอเตอร์เป็นเทือกเขาแอลป์ RSA0N11M9A0K ในการขับเคลื่อนฉันใช้ST L293D H-bridge ขับเคลื่อนโดยแหล่งจ่ายไฟ 10 V DC ( XL6009 ) ใน Arduino UNO (ATmega328P) ฉันใช้พิน 9 และ 10 ด้วยความถี่ PWM ที่ 31.372 kHz เพื่อให้ไม่ได้ยินเสียง (Timer1 กับ prescaler 1, TCCR1B = …

6
อัลกอริทึม PID: วิธีการบัญชีสำหรับการเปลี่ยนแปลงค่าอินพุตอย่างรวดเร็วหลังจากล่าช้าเป็นเวลานาน
ฉันกำลังพยายามใช้อัลกอริทึม PID พื้นฐานใน Arduino Leonardo เพื่อผสมน้ำประปาร้อนและเย็นโดยใช้วาล์วควบคุมแบบเซอร์โว เป้าหมายคือรักษาอุณหภูมิให้อยู่ใกล้กับจุดที่กำหนดมากที่สุด สิ่งสำคัญอย่างยิ่งคือการป้องกันไม่ให้อุณหภูมิเอาต์พุตเกินขนาดที่กำหนดไว้เพื่อป้องกันผู้ใช้จากการเบิร์น สิ่งที่สำคัญอันดับสองคือทำให้อุณหภูมิใกล้กับจุดที่กำหนดโดยเร็วที่สุด สำหรับการเปลี่ยนแปลงอุณหภูมิเล็กน้อยการใช้งานมาตรฐานของอัลกอริทึม PIDดูเหมือนว่าจะใช้ได้ แต่ฉันไม่รู้ว่าจะอธิบายความล่าช้าที่อาจเกิดขึ้นได้เมื่อรอให้น้ำร้อนไปถึงวาล์วเนื่องจากความล่าช้าเหล่านี้นานกว่าความล่าช้ามาตรฐานมากหลังจากเปลี่ยนตำแหน่งวาล์ว เห็นได้ชัดว่าขึ้นอยู่กับความยาวของเส้นน้ำร้อนและเวลาตั้งแต่การใช้น้ำร้อนครั้งสุดท้ายมันอาจใช้เวลาหลายสิบวินาทีสำหรับน้ำร้อนที่จะไปถึงวาล์วดังนั้นในช่วงเวลานี้อุณหภูมิของน้ำยังคงค่อนข้างคงที่ที่อุณหภูมิต่ำ และวาล์วน้ำร้อนจะเปิดเร็ว ๆ นี้ 100% ส่วนประกอบหนึ่งเริ่มสะสมค่าความผิดพลาดขนาดใหญ่ เมื่อน้ำร้อนถึงวาล์วในที่สุดอุณหภูมิที่ตรวจพบจะเพิ่มขึ้นอย่างรวดเร็วจนถึงอุณหภูมิน้ำร้อนสูงสุด เนื่องจากข้อผิดพลาดที่สำคัญขนาดใหญ่วาล์วน้ำร้อนจะถูกเก็บไว้ที่ 100% เป็นเวลานานหลังจากที่อุณหภูมิเกินกว่าที่กำหนดไว้เนื่องจากการรอคอยค่าหนึ่งจะลดลงสู่ระดับปกติ ดังนั้นผลลัพธ์คือน้ำอุณหภูมิสูงสุดเป็นเวลาหลายสิบ (สิบ) วินาที ฉันไม่แน่ใจว่าจะคำนึงถึงความล่าช้าที่เป็นไปได้นี้นานแค่ไหน ในกรณีเช่นนี้จะเป็นการดีหรือไม่ที่จะกำหนดขอบเขตบน (และล่าง) บนค่าความผิดพลาดแบบอินทิกรัลเพื่อ จำกัด เวลาตอบสนองสูงสุด? นี้ดูเหมือนว่าจะพ่ายแพ้วัตถุประสงค์ของส่วนประกอบและยังจะยังคงกำหนดบางส่วนล่าช้าหลังจากถึง SetPoint หรือมีวิธีที่ดีกว่าในการจัดการกับการเปลี่ยนแปลงอินพุทที่รวดเร็วหลังจากล่าช้าเป็นเวลานานหรือไม่? ขอบคุณสำหรับคำแนะนำใด ๆ !

5
วิธีการปรับใช้ตัวควบคุมแบบคล้าย PID
ฉันพยายามเขียนโปรแกรมไมโครคอนโทรลเลอร์สำหรับควบคุมอุณหภูมิในระบบที่มีคุณสมบัติดังต่อไปนี้: เอาต์พุตสามารถเป็นเปิดหรือปิดพร้อมความถี่รอบคงที่ (~ 2-10 ต่อชั่วโมง) พืชตอบสนองช้า (การเปลี่ยนแปลงของอุณหภูมิใช้เวลานาน> 10 นาที) พืชสูญเสียอุณหภูมิตามสภาพแวดล้อม ชุดจุดสามารถแตกต่างกันไปในขั้นตอนขนาดใหญ่ตามความต้องการของผู้ใช้ ฉันกำลังเขียนตัวควบคุมที่มีจุดมุ่งหมายเพื่อลดข้อผิดพลาดรวมทั้งปฏิบัติตามอัตรารอบที่ให้ไว้เป็นอินพุต สิ่งนี้สามารถทำได้อย่างง่ายดายด้วยคอนโทรลเลอร์ PI และมันแปลงผลลัพธ์เป็นวัฏจักรหน้าที่ ปัญหาคือโปรแกรมต้องการปรับค่าอัตโนมัติและเลือกค่าคงที่ Kp, Ki ที่ถูกต้องและปรับให้เข้ากับสภาพแวดล้อมที่แตกต่างกันและการเปลี่ยนแปลงความจุความร้อน ดังนั้นการปรับจูนคอนโทรลเลอร์ PI ล่วงหน้าจึงไม่มีประโยชน์ การใช้ PI หรือ PID จริงไม่ใช่ข้อกำหนด ฉันเปิดให้ใช้ Fuzzy-Logic ถ้ามันช่วยได้ยังมีอัลกอริทึมการเรียนรู้ของเครื่องบนชิปที่จำลองการตอบสนองของระบบและการสูญเสียความร้อน (เชิงเส้นประมาณ) ซึ่งแสดงข้อมูลเกี่ยวกับการตอบสนองตามขั้นตอนที่วัดได้ แค่ไม่รู้ว่าจะทำอย่างไรกับข้อมูลนั้น โพสต์สองสามข้อแนะนำว่าฉันสามารถใช้ข้อมูลการสร้างแบบจำลองเพื่อปรับแต่ง PI ออนไลน์และคู่มือการใช้งานแบบแล็บที่แนะนำฉันสามารถใช้ Fuzzy-Logic เพื่อปรับแต่ง PI คำถามของฉันคืออะไรวิธีที่ดีที่สุดสำหรับสถานการณ์ประเภทนี้ (เช่น PID, fuzzy-pid, convolution, ฯลฯ ) และวิธีที่ฉันจะนำไปใช้จริงในซอฟต์แวร์ / การปฏิบัติ ฉันไม่ใช่ …

3
ทฤษฎีการควบคุมนำไปใช้กับตัวแปลงบูสเตอร์ในโลกแห่งความเป็นจริงได้อย่างไร
ฉันมีความเข้าใจ จำกัด เกี่ยวกับทฤษฎีการควบคุม ฉันจัดการกับเสาและศูนย์และถ่ายโอนฟังก์ชั่นในโรงเรียน ฉันใช้ไมโครโปรเซสเซอร์ที่มีรูปแบบการควบคุมหลายแบบสำหรับตัวแปลง DC / DC สิ่งทั้งสองเกี่ยวข้องกันอย่างไรฉันยังไม่เข้าใจและฉันต้องการ การออกแบบการอ้างอิงในการทดลองและข้อผิดพลาดสามารถทำงานได้ แต่ฉันชอบที่จะมีความเข้าใจในสิ่งที่ฉันทำมากขึ้นและผลที่ตามมาคืออะไร คำตอบควรจะมุ่งเน้นเกี่ยวกับวิธีการวิเคราะห์ระบบที่ไม่เกี่ยวกับวิธีการที่จะปรับปรุงมัน ที่กล่าวว่าหากคุณมีข้อเสนอแนะในการปรับปรุงระบบและต้องการให้เหตุผลในการวิเคราะห์ว่าทำไมมันจะยอดเยี่ยม! เพียงแค่ตราบใดที่การปรับปรุงยังเป็นเรื่องรองสำหรับการวิเคราะห์ ระบบตัวอย่างของฉันสำหรับวัตถุประสงค์ของคำถามนี้: C1: 1,000 ยูเอฟ C2: 500uF L1: 500 uH ความถี่ในการสลับ: 4 kHz R1: ตัวแปร แรงดันไฟฟ้าอินพุต: 400 โวลต์ เป้าหมายแรงดันเอาท์พุท: 500 โวลต์ ขีด จำกัด กระแสไฟขาออก: 20 แอมป์ ฉันพยายามควบคุมแรงดันขาออกโดยไม่เกินขีด จำกัด กระแสไฟขาออก ฉันมีการตรวจจับแรงดันและกระแสไฟฟ้าซึ่งผ่านขั้นตอนการขยายสัญญาณที่หลากหลายฉันไม่ได้วิเคราะห์ที่จุดเชื่อมต่อนี้ แต่รวมถึงการกรองบางอย่าง ตามด้วยตัวกรอง lowpass RC ที่ 100 โอห์มและ …

3
PID Control ลูปที่มีความผิดปกติขนาดใหญ่และคาดเดาไม่ได้
คำถามสั้น ๆ มีวิธีการทั่วไปในการจัดการความผิดปกติที่มีขนาดใหญ่มาก (คำสั่งของขนาด) ภายในขอบเขตการควบคุมเป็นอย่างอื่นหรือไม่? ความเป็นมา ฉันกำลังทำงานเกี่ยวกับอัลกอริทึมการควบคุมที่ขับเคลื่อนมอเตอร์ข้ามเขตการควบคุมโดยทั่วไป ด้วยการโหลดแบบไม่มี / ขั้นต่ำตัวควบคุม PID ใช้งานได้ดี (การตอบสนองที่รวดเร็วไม่มากไปหรือน้อยไป) ปัญหาที่ฉันพบคือมักจะมีตำแหน่งโหลดสูงอย่างน้อยหนึ่งแห่ง ตำแหน่งจะถูกกำหนดโดยผู้ใช้ในระหว่างการติดตั้งดังนั้นจึงไม่มีวิธีที่สมเหตุสมผลสำหรับฉันที่จะรู้ว่าเมื่อไร / ที่ไหนที่จะคาดหวัง เมื่อฉันปรับแต่ง PID เพื่อจัดการกับตำแหน่งโหลดสูงมันจะทำให้เกิดการยิงที่มีขนาดใหญ่กว่าในพื้นที่ที่ไม่ได้โหลด (ซึ่งฉันคาดไว้อย่างเต็มที่) ในขณะที่โอเคที่จะไปเกินระยะกลางการเดินทางจะไม่มีการหยุดแบบกลไกเชิงกลบนกล่องหุ้ม การไม่มีฮาร์ดสต็อปหมายถึงการที่เกินพิกัดที่สำคัญสามารถ / ทำให้แขนควบคุมถูกตัดการเชื่อมต่อจากมอเตอร์ (ทำให้เกิดยูนิตที่ตายแล้ว) สิ่งที่ฉันสร้างต้นแบบ PID ที่ซ้อนกัน (ก้าวร้าวมากเมื่ออยู่ห่างจากเป้าหมายอนุรักษ์เมื่ออยู่ใกล้) แก้ไขกำไรเมื่ออยู่ห่างไกล, PID เมื่อปิด Conservative PID (ทำงานโดยไม่มีการโหลด) + ตัวควบคุมภายนอกที่มองหา PID เพื่อหยุดการทำงานและใช้พลังงานเพิ่มเติมจนกระทั่งทั้งคู่: บรรลุเป้าหมายหรือตรวจพบอัตราการเปลี่ยนแปลงอย่างรวดเร็ว (เช่นออกจากพื้นที่โหลดสูง) ข้อ จำกัด กำหนดเดินทางเต็มรูปแบบ ไม่สามารถเพิ่ม Hardstops (ณ เวลานี้) ข้อผิดพลาดจะไม่เป็นศูนย์ …

2
การใช้อัลกอริทึม PID โดยใช้คอมพิวเตอร์วิชั่น
ฉันกำลังสร้างตัวแก้เขาวงกตอัตโนมัติและใช้เว็บแคมเพื่อควบคุมเขาวงกต จากคำแนะนำในฟอรัมอื่นฉันพยายามควบคุมการเคลื่อนที่ของเขาวงกตอย่างน้อยในทิศทางเดียวในขณะนี้ ดังนั้นฉันจึงพยายามควบคุมการเคลื่อนไหวของลูกของฉันระหว่างสองพิกัด 466,288 และ 466,152 อินพุตไปยังบอร์ดควบคุมมอเตอร์สเต็ปเป็นเวลาโดยไม่มีขั้นตอนในการหมุนสำหรับแต่ละแกนเช่น x และ y บอร์ดควบคุมมอเตอร์ที่ฉันใช้คือบอร์ดควบคุมมอเตอร์บอทไข่: http://www.sparkfun.com/products/10025 ดังนั้นในการเคลื่อนที่ระหว่างสองจุดฉันควรสร้างจำนวนจุดทางระหว่างสองจุดคือ 288 และ 152 (พูด 260 240 230 ... 150) และแก้ไขการเคลื่อนที่ของลูกบอลของฉัน? อัลกอริทึมการประมวลผลภาพของฉันไม่เร็วพอที่จะติดตามลูกบอลที่ลูกบอลเพิ่งหมุนและตกลงไปในหลุม บางคนแนะนำว่าฉันใช้เทมเพลตมาตรฐานตามที่แสดงในวิดีโอต่อไปนี้และแก้ไขการเคลื่อนไหวลูกของฉันสำหรับการเบี่ยงเบนในเส้นทาง: http://www.youtube.com/watch?v=Prq78ctJ2Rk&feature=player_embedded ฉันยังเจอเครื่องมือประมวลผลภาพที่พวกเขาแก้ปัญหาเดียวกันโดยใช้วิธีชี้คะแนนสำหรับการเคลื่อนที่ของลูกบอล การเห็นวิธีแก้ไขปัญหาเดียวกันมากเกินไปฉันสับสนโดยสิ้นเชิงในการแก้ปัญหา ฉันรู้ว่าฉันควรใช้คอนโทรลเลอร์ PID แต่ฉันจะไปแก้ปัญหาเป็นระยะได้อย่างไร? ฉันติดขัดและท้อแท้ในการค้นหาความเป็นผู้นำในการแก้ปัญหา การตั้งค่าของฉันมีลักษณะเช่นนี้: ... และนี่คือภาพหน้าจอของซอฟต์แวร์ของฉัน: ฉบับที่ 2: ฉันกำลังเผชิญกับปัญหาใหม่ในตอนนี้: ก่อนหน้านี้ฉันควบคุมมอเตอร์ผ่านทางแอปเพล็ต Java พอร์ตอนุกรม Arduino ฉันสามารถขับสเต็ปเปอร์ได้โดยใช้แอปเพล็ต ฉันต้องรีเซ็ตบอร์ดทุกครั้งที่ฉันพยายามสื่อสารผ่านพอร์ตอนุกรม นอกจากนี้มอเตอร์สเต็ปยังให้พลังงานกับตัวเองในช่วงเวลาสั้น ๆ เมื่อไม่มีการส่งคำสั่ง เมื่อสเต็ปเปอร์มอเตอร์เข้าสู่โหมดนี้ฉันไม่สามารถควบคุมบอร์ดได้โดยไม่ต้องรีเซ็ตบอร์ด ความช่วยเหลือใด ๆ …

1
การแปลงองค์ประกอบตัวควบคุม PID ด้วยผลป้อนกลับสถานะเป็นฟังก์ชันถ่ายโอนเดี่ยวและแบบฟอร์มแยกพื้นที่รัฐ
ฉันต่อสู้กับปัญหานี้มาประมาณหนึ่งสัปดาห์แล้วซึ่งเป็นส่วนหนึ่งของโครงการตลอดปี เรากำลังออกแบบตัวควบคุมสำหรับเครื่องปฏิกรณ์เฉพาะโดยยึดตามแบบจำลอง หลังจากดูที่นี่ซักพักฉันก็ยังใช้งานไม่ได้ - ดังนั้นฉันจะขอบคุณถ้าฉันสามารถรับความช่วยเหลือได้ หนึ่งในบทวิจารณ์วรรณกรรมที่ตีพิมพ์ซึ่งเราได้อ้างอิงจากรายการคอนโทรลเลอร์ PID อย่างหนักในแต่ละส่วนประกอบแยกจากกันแทนที่จะเป็นสมการรวมดังนี้: ⎧⎩⎨⎪⎪⎪⎪P(n)=Kp[G(n)−target]I(n)=I(n−1)+KpTI[G(n)−target]D(n)=KpTDdGdt(n){P(n)=Kp[G(n)−target]I(n)=I(n−1)+KpTI[G(n)−target]D(n)=KpTDdGdt(n) \begin{cases} P(n)=K_p[G(n)-target] \\I(n)=I(n-1)+\frac{K_p}{T_I}[G(n)-target]\\D(n)=K_pT_D\frac{dG}{dt}(n)\end{cases} เพียงรวมส่วนประกอบทั้งสามเข้ากับเอาต์พุตคอนโทรลเลอร์ PID: PID(n)=P(n)+I(n)+D(n)PID(n)=P(n)+I(n)+D(n) PID(n)=P(n)+I(n)+D(n) และจากที่นี่ผู้เขียนเพิ่มเลเยอร์เพิ่มเติมของข้อเสนอแนะสถานะด้านบนของสัญญาณ PID ​​เพื่อรับเอาท์พุทควบคุมขั้นสุดท้ายนำไปใช้กับระบบ {Q(n)=K0R(n−1)+K1Q(n−1)−K2Q(n−2)R(n)=(1+γ)PID(n)−γQ(n−1){Q(n)=K0R(n−1)+K1Q(n−1)−K2Q(n−2)R(n)=(1+γ)PID(n)−γQ(n−1) \begin{cases} Q(n)=K_0R(n-1)+K_1Q(n-1)-K_2Q(n-2)\\R(n)=(1+\gamma)PID(n)-\gamma Q(n-1)\end{cases} และ R คือ "เอาต์พุตคอนโทรลเลอร์" สุดท้าย ที่นี่คือกำไรจากกระบวนการและเป็นผลและอนุพันธ์และเป็น "กำไร" ที่ได้รับการตอบรับจากรัฐ (ไม่เปลี่ยนรูป) และเป็นค่าคงที่ 0.5 คือสถานะระบบเป็นสถานะโดยประมาณที่มีผลต่อการเปลี่ยนแปลงของแบบจำลองและเป็นผลลัพธ์สุดท้ายจริงที่ส่งไปยังโรงงานKpKpK_pTITIT_ITDTDT_DK0,K1K0,K1K_0, K_1K2K2K_2γγ\gammaG(n)G(n)G(n)Q(n)Q(n)Q(n)R(n)R(n)R(n) ฉันพยายามแปลงสิ่งทั้งหมดให้เป็นฟังก์ชั่นการถ่ายโอนคอนโทรลเลอร์ครั้งแรก แต่ฉันได้รับแจ้งว่าการเพิ่มเข้าด้วยกันจะไม่ทำงาน ฉันยังได้รับมอบหมายด้วยการค้นหาการแทนค่าสถานะพื้นที่ไม่ต่อเนื่องของคอนโทรลเลอร์นี้ สำหรับสิ่งนี้ฉันพยายามเปลี่ยนเป็นเพื่อกำจัดปัญหานั้นdGdt(n)dGdt(n)\frac{dG}{dt}(n)G(n)−G(n−1)G(n)−G(n−1)G(n)-G(n-1) ต่อไปฉันพยายามกำหนดตัวแปรสถานะใหม่สำหรับเพื่อให้สามารถแปลงและเป็นลำดับแรกได้Q(n)Q(n)Q(n)Q(n−1)Q(n−1)Q(n-1)Q(n−2)Q(n−2)Q(n-2) ฉันพยายามแทนที่ค่าลงในคอนโทรลเลอร์ PID เพื่อรับเป็นตัวแปรสถานะ ความพยายามเหล่านี้ล้วนขึ้นอยู่กับคำแนะนำของอาจารย์ของฉันG(n)G(n)G(n) อย่างไรก็ตามฉันยังคงติดขัดอยู่อย่างมากเนื่องจากฉันทำตามคำแนะนำของเขาโดยไม่มีการมองเห็นโดยรวมในการทำงาน ฉันคิดว่ามันจะเป็นเรื่องง่าย ๆ ของการเปลี่ยนแปลงของ Tustin …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.