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