การออกแบบซอฟต์แวร์ 2 ระบบ
สถาปัตยกรรม2.1μC / OS-II
μC / OS-II เป็น ROM แบบพกพา, แบบฝัง, เคอร์เนล, ระบบปฏิบัติการแบบมัลติทาสกิ้งแบบเรียลไทม์ซึ่งมีประสิทธิภาพในการประมวลผลสูง, ขนาดเล็ก, ประสิทธิภาพแบบเรียลไทม์ที่ดีและความสามารถในการขยาย คุณสมบัติเคอร์เนลที่เล็กที่สุดสามารถรวบรวมเป็น 2KB μC / OS-II เขียนด้วยภาษา C และภาษาประกอบ รหัสส่วนใหญ่เขียนด้วยภาษาซีมีเพียงไม่กี่รหัสที่เกี่ยวข้องกับโปรเซสเซอร์เท่านั้นที่เขียนด้วยภาษาแอสเซมบลี μC / OS-II เท่านั้นที่มีฟังก์ชั่นพื้นฐานเช่นการตั้งเวลางานการจัดการงานการจัดการเวลาการจัดการหน่วยความจำการสื่อสารระหว่างงานและการซิงโครไนซ์
การมอบหมายงานภายใต้ระบบ2.2μC / OS-II
หลังจากประสบความสำเร็จในการย้ายระบบμC / OS-II ไปยัง STM32F107 การเขียนโปรแกรมที่ใช้μC / OS-II จะกระทำโดยการแบ่งแอพพลิเคชันขนาดใหญ่ออกเป็นงานที่ค่อนข้างอิสระ ลำดับความสำคัญของแต่ละงานถูกกำหนดไว้และเคอร์เนลμC / OS-II และจัดการงานเหล่านี้
แนวคิดการออกแบบซอฟต์แวร์คือการให้ความเร็วมอเตอร์และตำแหน่งพวงมาลัยของพวงมาลัยผ่านพอร์ตอนุกรมตามการใช้งานจริงของหุ่นยนต์ ความเร็วของมอเตอร์จะถูกเปรียบเทียบกับค่าที่ตั้งไว้ของตัวเข้ารหัสที่เพิ่มขึ้นและการควบคุมวงปิดจะดำเนินการโดยอัลกอริทึม PID ความเร็ว ตำแหน่งของพวงมาลัยนั้นส่วนใหญ่แล้วตัวเข้ารหัสค่าสัมบูรณ์จะดึงกลับมาที่ตำแหน่งปัจจุบันและความเร็วของพวงมาลัยจะถูกปรับตามความต้องการเวลาดำเนินการ ฟังก์ชั่นที่จะรับรู้ได้โดยซอฟต์แวร์ระบบควบคุมมอเตอร์ของหุ่นยนต์จัดการนี้มีดังนี้:
◆เครื่องจักรส่วนบนให้ความเร็วมอเตอร์มุมบังคับเลี้ยวและเวลาดำเนินการ
◆ต้องการการปรับความเร็วมอเตอร์อย่างต่อเนื่องและมีประสิทธิภาพคงที่และไดนามิกดี ความเร็วจะไม่ถูกนับด้วยอัลกอริทึม PI
◆ต้องใช้พวงมาลัยเพื่อไปยังมุมที่กำหนดอย่างรวดเร็วและใช้ตำแหน่งป้อนกลับเพื่อปรับความเร็วของพวงมาลัย
◆มีฟังก์ชั่นป้องกันความผิดพลาดบางอย่าง เมื่อมอเตอร์ถูกปิดกั้นกระแสไฟฟ้ามีขนาดใหญ่เกินไปและเกียร์พวงมาลัยสัมผัสกับสวิตช์ จำกัด จำเป็นต้องหยุดโมดูลไดรฟ์
สำหรับฟังก์ชั่นด้านบนที่จะใช้งานการออกแบบแอพพลิเคชั่นสามารถแบ่งออกเป็นงานต่อไปนี้:
1 เริ่มภารกิจ เริ่มต้นระบบสร้างสถานะมอเตอร์เริ่มต้นจากนั้นลบตัวเองและเริ่มงานเพื่อเข้าสู่โหมดสลีป
งานป้องกันมอเตอร์และเกียร์ 2 ตัว มันถูกใช้เพื่อตอบสนองต่อการขัดจังหวะภายนอกเมื่อสวิตช์กระแสเกินหรือ จำกัด เปิดใช้งาน เมื่อมีการป้อนสถานะขัดจังหวะเซมาฟอร์งานจะถูกส่ง โปรแกรมงานตรวจพบเซมาฟอร์ที่ถูกต้องและตอบสนองต่องานและหยุดการส่งออก ลำดับความสำคัญของงานถูกกำหนดเป็นระดับ 0
3 โฮสต์คอมพิวเตอร์ที่ได้รับมอบหมายงาน มันใช้สำหรับเครื่องจักรส่วนบนในการควบคุมมอเตอร์และพวงมาลัยและลำดับความสำคัญของงานถูกตั้งไว้ที่ระดับ 1 เมื่อมีการสร้างการลงทะเบียนข้อมูลคอมพิวเตอร์แม่ข่ายการขัดจังหวะจะถูกสร้างขึ้นซึ่งจะส่งไบต์ที่ได้รับไป บัฟเฟอร์และปล่อยสัญญาณของงานที่กำหนดของโฮสต์คอมพิวเตอร์; เมื่อตรวจพบสัญญาณสัญญาณงานจะเริ่มดำเนินการและไบต์ที่เกี่ยวข้องจะถูกดำเนินการ ข้อมูลจะถูกแยกวิเคราะห์เป็นข้อมูลความเร็วมอเตอร์และข้อมูลตำแหน่งเกียร์ที่สอดคล้องกันเพื่อกำหนดค่าให้กับตัวแปรที่เกี่ยวข้อง
งานควบคุมความเร็วมอเตอร์ 4 สำหรับการควบคุมความเร็วรอบวงปิดของมอเตอร์ลำดับความสำคัญของงานจะถูกกำหนดเป็นระดับ 2
5 งานควบคุมเกียร์พวงมาลัย มันถูกใช้ในการควบคุมพวงมาลัยเพื่อไปยังตำแหน่งที่ระบุภายในเวลาที่กำหนดและลำดับความสำคัญของงานถูกตั้งไว้ที่ระดับ 3
2.3 เริ่มภารกิจ
ในโปรแกรมหลักก่อนที่จะเรียกใช้งานอื่น ๆ ของμC / OS-II อันดับแรกให้เรียกใช้ฟังก์ชันการเริ่มต้นระบบ OSInit () เพื่อเริ่มต้นตัวแปรและโครงสร้างข้อมูลทั้งหมดของμC / OS-II ในเวลาเดียวกันสร้างงานว่าง OS_TaskIdle () งานนี้เสมออยู่ในสถานะพร้อม; เรียกใช้ฟังก์ชัน OSTaskCreate () เพื่อสร้างงานเริ่มต้น เรียกใช้ OSStart (), โอนการควบคุมไปยังเคอร์เนลμC / OS-II, เริ่มการทำงานมัลติทาสกิ้ง
ภารกิจเริ่มต้นถูกสร้างขึ้นในโปรแกรมหลักซึ่งมีหน้าที่หลักสามประการ:
1 สำหรับการเริ่มต้นระบบ (โมดูลเอาต์พุต PWM, พอร์ตอนุกรม, โมดูล ADC, ฟังก์ชั่นการขัดจังหวะระดับอินพุต, ตัวจับเวลา)
2 กำหนดจำนวนสัญญาณที่ใช้โดยระบบ
3 สร้างงานอื่น ๆ ของระบบ
สุดท้ายเรียก OSTaskDel (OS_PRIO_SELF) เพื่อลบตัวเองและเริ่มงานให้เข้าสู่โหมดสลีป โฟลว์งานโปรแกรมหลักแสดงในรูปที่ 4
2.4 งานควบคุมความเร็วมอเตอร์
ทุกครั้งที่ตัวเข้ารหัสที่เพิ่มขึ้นสร้างการขัดจังหวะภายนอกสัญญาณงานจะออกในสถานะอินเตอร์รัปต์ โปรแกรมงานตรวจพบเซมาฟอร์ที่ถูกต้องและตอบสนองต่องาน งานตระหนักถึงการควบคุมวงปิดโดยการวัดความเร็วมอเตอร์ปัจจุบันและการเปรียบเทียบความเร็วที่กำหนด การไหลของงานควบคุมความเร็วมอเตอร์จะแสดงในรูปที่ 5
งานควบคุมพวงมาลัยเกียร์ 2.5
การควบคุมเซอร์โวสร้างเวลาอ้างอิงโดยตัวจับเวลาส่งสัญญาณทุกเวลาที่กำหนดและงานจะถูกดำเนินการหนึ่งครั้ง งานควบคุม servo จะเปรียบเทียบตำแหน่งที่วัดโดยตัวเข้ารหัสสัมบูรณ์กับตำแหน่งที่กำหนดและปรับความเร็วของเซอร์โวตามเวลาที่เหลืออยู่ ลำดับงานการควบคุมเซอร์โวแสดงในรูปที่ 6
3 อินเตอร์เฟซระบบเครื่องกลไฟฟ้า
เกียร์พวงมาลัยของหุ่นยนต์ประกอบด้วยตัวลด 30: 1 เชื่อมต่อกับมอเตอร์ DC เอนโค้ดเดอร์ตำแหน่งสัมบูรณ์เชื่อมต่อกับพวงมาลัยและส่งสัญญาณมุมของเฟืองพวงมาลัยไปยังบอร์ดควบคุมไดรฟ์ เพลาทั้งสองของล้อหน้าของหุ่นยนต์เชื่อมต่อกันด้วยก้านเกียร์ หนึ่งในเพลาเชื่อมต่อกับเกียร์พวงมาลัยโดยสายพานส่งเพื่อให้เมื่อหมุนพวงมาลัยเกียร์เข็มขัดขับรถคันเกียร์เพื่อให้แน่ใจว่าล้อหน้าสองล้อสามารถหมุนพร้อมกัน มอเตอร์ขับเคลื่อนล้อหลังคือมอเตอร์ DC ซึ่งเชื่อมต่อโดยตรงกับเครื่องเข้ารหัสแบบเพิ่มหน่วย หลังจากลดอัตราส่วนลดลงด้วยตัวลด 25: 1 ล้อหลังจะถูกขับเคลื่อนด้วยค่าเฟืองท้าย สัญญาณจากตัวเข้ารหัสแบบเพิ่มหน่วยจะถูกส่งไปยังบอร์ดควบคุมไดรฟ์ โครงสร้างของระบบไฟฟ้าแสดงในรูปที่ 7
ข้อสรุป
ในบทความนี้การออกแบบฮาร์ดแวร์และตัวควบคุมเซอร์โวของหุ่นยนต์จัดการนั้นได้รับการยอมรับ ระบบปฏิบัติการแบบเรียลไทม์μC / OS-II ได้รับการติดตั้งบน STM32F107 สำเร็จแล้วและการทดลองแบบลูปปิดความเร็วของมอเตอร์และพวงมาลัยนั้นเสร็จสิ้นแล้ว การใช้คุณสมบัติของการทำงานแบบเรียลไทม์ของคอนโทรลเลอร์คอร์เท็กซ์ -M3 และระบบμC / OS-II นั้นให้พื้นฐานซอฟต์แวร์และฮาร์ดแวร์สำหรับการจับภาพวิดีโอหุ่นยนต์และการติดตามการนำทางที่ตามมา หากอัลกอริทึม PI ที่มีอยู่ได้รับการปรับปรุงและสามารถควบคุมความเร็วและการควบคุมวงคู่ปัจจุบันของมอเตอร์ได้ลักษณะของหุ่นยนต์มอเตอร์จะดีขึ้นและโอกาสในการใช้งานของหุ่นยนต์จัดการจะกว้างขึ้น





