Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 70 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
70
Dung lượng
1,83 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC CẦN THƠ BÁO CÁO TỔNG KẾT ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP TRƢỜNG XÂYDỰNGFRAMEWORKGIÚPSỬDỤNGCÁCTHUẬTTOÁNĐIỀUKHIỂNTỰĐỘNGTHIẾTKẾTRÊNMATLABSIMULINKVÀOHỆTHỐNGNHÚNGSỬDỤNGVIĐIỀUKHIỂNARM Mã số: T2015-17 Chủ nhiệm đề tài: ThS Nguyễn Văn Khanh Cần Thơ, 12/2015 i ii BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC CẦN THƠ BÁO CÁO TỔNG KẾT ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP TRƢỜNG XÂYDỰNGFRAMEWORKGIÚPSỬDỤNGCÁCTHUẬTTOÁNĐIỀUKHIỂNTỰĐỘNGTHIẾTKẾTRÊNMATLABSIMULINKVÀOHỆTHỐNGNHÚNGSỬDỤNGVIĐIỀUKHIỂNARM Mã số: T2015-17 Chủ nhiệm đề tài: ThS Nguyễn Văn Khanh Cần Thơ, 12/2015 iii Danh sách thành viên tham gia nghiên cứu đề tài TT Họ tên Đơn vị công tác lĩnh vực chuyên môn Nội dung nghiên cứu cụ thể đƣợc giao - Xâydựng thuyết minh đề tài - Lập trình driver cho ngoại Nguyễn Văn Khanh Bộ môn Tựđộng hóa, viviđiềukhiểnARM Khoa Công Nghệ tổng hợp xâydựngframework - Tổng hợp viết báo cáo báo khoa học Trần Nhựt Thanh Bộ môn Tựđộng hóa, Khoa Công Nghệ i - Tham gia: Lập trình driver cho ngoại viviđiềukhiểnARM MỤC LỤC MỤC LỤC i CÁC CHỮ VIẾT TẮT iii DANH MỤC HÌNH ẢNH iv DANH MỤC BẢNG BIỂU viTHÔNG TIN KẾT QUẢ NGHIÊN CỨU vii INFORMATION ON RESEARCH RESULTS ix PHẦN MỞ ĐẦU 1 Tình hình nghiên cứu nƣớc Tính cấp thiết Mục tiêu Nội dung nghiên cứu Phƣơng pháp tiếp cận, đối tƣợng phạm vi nghiên cứu PHẦN KẾT QUẢ CHƢƠNG 1: CƠ SỞ LÝ THUYẾT TLC – Target Language Compiler Mạch STM32F4 Discovery (STMicroelectronics, 2015) 10 Thuật đoán điềukhiển chiếu điềukhiểnhệthống lắc ngƣợc 12 3.1 Mô hình lắc ngƣợc 12 3.2 Bộ điềukhiển 14 3.3 Mô điềukhiển 15 CHƢƠNG 2: NỘI DUNG NGHIÊN CỨU 17 Mô hình lắc ngƣợc 17 Giải pháp thực điềukhiểnnhúng 21 2.1 Tổng quan 21 2.2 Thực thủ công 24 i 2.2.1 Thiếtkếthuậttoán 25 2.2.2 Cấu hình dự án cho viđiềukhiểnARM 27 2.2.3 Lập trình thƣ viện giao tiếp ngoại vi 28 2.2.3 Thêm mã lệnh chƣơng trình 31 2.3 Thực thiếtkếtựđộng 33 2.3.1 Tạo khối thƣ viện 33 2.3.2 Thay đổi mã TLC sinh mã chƣơng trình 37 2.3.3 Thiếtkếthuậttoán cấu hình dự án 39 CHƢƠNG 3: KẾT QUẢ 44 Thực nghiệm với mã C thông thƣờng 44 Thực nghiệm với tảng RTOS 49 PHẦN KẾT LUẬN VÀ KIẾN NGHỊ 53 Kết luận 54 Kiến nghị 54 TÀI LIỆU THAM KHẢO 55 PHỤ LỤC 56 ii CÁC CHỮ VIẾT TẮT ARM Acorn RISC Machine FPU Floating-Point Unit DMA Direct Memory Access PID Proportional–Integral–Derivative ADC Analog-to-Digital Converter QEI Quadrature Encoder Interface USART Universal Synchronous Asynchronous Receiver Transmitter PWM Pulse Width Modulation TLC Target Language Compiler DAC Digital-to-Analog Converter USB OTG Universal Serial Bus On-The-Go GPIO General-Purpose Input/Output DC Direct Current PC Personal Computer RTOS Real-Time Operating System iii DANH MỤC HÌNH ẢNH Hình 1.1 Quá trình sinh mã C cho chƣơng trình Simulink Hình 1.2 Mạch STM32F4Discovery 12 Hình 1.3 Mô hình lắc ngƣợc 12 Hình 1.4 Kết mô điều khiển: a) Vị trí xe b) Góc lắc 16 Hình 2.1 Mô hình khí hệthống lắc ngƣợc 18 Hình 2.2 Sơ đồ khối mạch điềukhiểnhệ lắc ngƣợc 18 Hình 2.3 Sơ đồ nguyên lý mạch công suất động DC 20 Hình 2.6 Sơ đồ điềukhiển tốc độ động DC 21 Hình 2.7 Card thu thập liệu NI PCI-6204 22 Hình 2.8 myRIO card hãng NI 23 Hình 2.9 Phƣơng pháp thực thủ công 24 Hình 2.10 Thuậttoán PID số điềukhiểnvị trí động DC 25 Hình 2.11 Cấu hình thuộc tính tín hiệu 25 Hình 2.12 Cấu hình thông số mô Solver 26 Hình 2.13 Cấu hình thông số mô Real-Time Workshop 27 Hình 2.14 Cấu trúc dự án KeilC đƣợc cấu hình sẵn 28 Hình 2.15 Phƣơng pháp thực tựđộng 33 Hình 2.16 Nạp C S-function vào khối Simulink 34 Hình 2.17 Định nghĩa thông số khối Simulink 34 Hình 2.18 Các khối Simulink thƣ viện thiếtkế 37 Hình 2.19 Điềukhiểnvị trí độngdùngđiềukhiển PID số 39 Hình 3.1 Bộ điềukhiển chiếu thiếtkếSimulink 45 Hình 3.2 ThuậttoánSimulink cho giải pháp thủ công 46 Hình 3.3 Kết sinh mã thuậttoán 46 iv Hình 3.4 Dự án hoàn chỉnh 47 Hình 3.5 Đáp ứng bƣớc hệ thống: a) Đáp ứng góc lắc, b) Đáp ứng vị trí xe 48 Hình 3.6 Đáp ứng bám vị trí hệ thống: a) Đáp ứng góc lắc, b) Đáp ứng vị trí xe 49 Hình 3.7 Thuậttoánđiềukhiển robot di động hai bánh tự cân (Khanh, Hùng; 2015) 50 Hình 3.8 Đáp ứng robot di động hai bánh tự cân a) Góc nghiêng, b) Vị trí, c) Hƣớng, d) Luật điềukhiểnđộng trái, d) Luật điềukhiểnđộng phải (Khanh, Hùng; 2015) 51 v DANH MỤC BẢNG BIỂU Bảng 2.1 Cácthông số mô hình lắc ngƣợc 17 Bảng 2.1 Kết nối GPIO với mô-đun phần cứng 19 Bảng 2.2 Các hàm thƣ viện CTUProj_Driver 28 vi */ if (testPID_B.feedback_o1 >= testPID_P.Constant_Value) { rtb_Sum = testPID_B.feedback_o1 - testPID_P.Constant1_Value_f; } else { rtb_Sum = testPID_B.feedback_o1; } /* Sum: '/Sum' incorporates: * Constant: '/Reference' */ rtb_Sum = testPID_P.Reference_Value - rtb_Sum; /* Gain: '/Filter Coefficient' incorporates: * DiscreteIntegrator: '/Filter' * Gain: '/Derivative Gain' * Sum: '/SumD' */ rtb_FilterCoefficient = (testPID_P.DerivativeGain_Gain * rtb_Sum testPID_DWork.Filter_DSTATE) * testPID_P.FilterCoefficient_Gain; /* Sum: '/Sum' incorporates: * DiscreteIntegrator: '/Integrator' * Gain: '/Proportional Gain' */ rtb_Saturation = (testPID_P.ProportionalGain_Gain * rtb_Sum + testPID_DWork.Integrator_DSTATE) rtb_FilterCoefficient; + /* Saturate: '/Saturation' */ rtb_Saturation testPID_P.Saturation_LowerSat, = rt_SATURATE(rtb_Saturation, testPID_P.Saturation_UpperSat); /* Switch: '/Switch1' incorporates: * Constant: '/Constant1' * Constant: '/Constant2' */ if (rtb_Saturation > testPID_P.Switch1_Threshold) { testPID_B.Switch1 = testPID_P.Constant2_Value; } else { 42 testPID_B.Switch1 = testPID_P.Constant1_Value; } /* S-Function (Write_GPIO): '/Direction' */ Write_GPIO(GPIOC,GPIO_Pin_0,testPID_B.Switch1); /* Abs: '/Abs1' */ testPID_B.Abs1 = fabs(rtb_Saturation); /* S-Function (Write_PWM): '/Speed' */ Write_PWM(TIM3,1,testPID_B.Abs1); /* Update for DiscreteIntegrator: '/Integrator' incorporates: * Gain: '/Integral Gain' */ testPID_DWork.Integrator_DSTATE = testPID_P.IntegralGain_Gain * rtb_Sum * testPID_P.Integrator_gainval + testPID_DWork.Integrator_DSTATE; /* Update for DiscreteIntegrator: '/Filter' */ testPID_DWork.Filter_DSTATE rtb_FilterCoefficient = testPID_P.Filter_gainval * + testPID_DWork.Filter_DSTATE; } Tóm lại, framework đƣợc đề nghị giúpsửdụngthuậttoánđiềukhiểntựđộngthiếtkếMatlabsimulinkvàohệthốngnhúngsửdụngviđiềukhiểnARM Có hai giải pháp thiếtkế sinh mã điềukhiển đƣợc đề nghị Thứ giải pháp thủ công, với giải pháp ngƣời dùng phải thực thủ công từ khâu thiếtkếSimulink đến việc lập trình thêm mã lệnh kết nối thuậttoán với thƣ viện ngoại vi Mặc dù giải pháp phức tạp, tốn nhiều thời gian đòi hỏi ngƣời sửdụng phải am hiểu lập trình cho tảng sửdụng nhƣng có ƣu điểm lớn ngƣời dùng hoàn toàn làm chủ hệ thống, tùy biến để chạy tảng Thứ hai giải pháp tự động, với giải pháp ngƣời dùngsửdụng khối Simulink đƣợc thiết sẵn để liên kết thƣ viện ngoại viSimulink Do đó, việc sinh mã gần nhƣ tựđộng mà không đòi hỏi ngƣời sửdụng viết thêm mã lệnh Bên cạnh mã lệnh ngôn ngữ C truyền thống, tác giả đề nghị sửdụnghệđiều hành thời gian thực RTOS vàoframework đề nghị 43 CHƢƠNG 3: KẾT QUẢ Để ch ng minh gi i pháp đề nghị đề tài hoạt động yêu cầu đặt r , điềukhiển cu n chiếu cân h th ng lắc ng cđ c chọn để th c hi n h th ng sử d ng fr mework đề nghị c h i tr ờng h p thiếtkế thủ công t động Ngoài r , tác gi chạy thu t toán sinh mã t ng h điều hành thời gi n th c FreeRTOS đ i t ng robot di động h i bánh t cân th y v h th ng lắc ng c Kết qu th c hi n c h i tr ờng h p: thu t toán đ c chạy tác v RTOS thu t toán đ c chạy nhiều tác v củ RTOS Thực nghiệm với mã C thông thƣờng Luật điềukhiển [1.11] đƣợc thiếtkế Matlab/Simulink nhƣ Hình 3.1 Các biến trạng thái x theta đƣợc đo trực tiếp từ mô hình sử khối QEI viđiềukhiểnARM Hai biến trạng thái sau đƣợc đƣa qua hai khối lấy vi phân rời rạc để tạo đƣợc vi phân biến trạng thái x theta Ngõ thuậttoán đƣợc khuếch đại ku lần để phù hợp với đối tƣợng điềukhiển Ý nghĩa tín hiệu ngỏ tốc độ quay động DC kéo xe lắc (hay tốc độ di chuyển xe) Tốc động DC đƣợc điềukhiển kỹ thuậtđiềukhiển độ rộng xung Hệ số ku đƣợc chọn phƣơng pháp thử sửa sai 44 K Ts c2*c z-1 x -K-C2 x-dot -K- -C- out theta theta-dot d1 K Ts k1*c2*c z-1 Hình 3.1 Bộ điềukhiển chiếu thiếtkếSimulink Để thuậttoán chạy đƣợc mô hình thật, khối chức nhƣ đọc tín hiệu hối tiếp, kiểm tra an toàn tránh xe va đạp vào hai đầu cuối mô hình truyền đáp ứng máy tính cá nhân cần đƣợc thiếtkế thêm ThuậttoánSimulink hoàn chỉnh cho hai giải pháp thiếtkế thủ công tựđộng đƣợc thiếtkế nhƣ Hình 3.2 Thuậttoán có ba tín hiệu vào, năm tín hiệu ra: - Position_Ref: Ngỏ vào đặt vị trí tham chiếu, thay đổi dạng tín hiệu tham chiếu đƣa vào dễ dạng - Pos_inp: Ngỏ vào hồi tiếp vị trí, đơn vị tính pulse (Số xung trả từ giải mã vòng quay đọc vị trí) - Ang_inp: Ngỏ vào hồi tiếp góc lắc, đơn vị tính pulse (Số xung trả từ giải mã vòng quay đọc góc quay lắc) - Pwm_out: Ngỏ điềukhiển mang ý nghĩa phần trăm độ rộng chuỗi xung điềukhiển tốc độ động DC kéo xe lắc - Các ngỏ lại: pos_out, ang_out, pos_dot, ang_dot tƣơng ứng ngỏ vị trí, góc, vi phân vị trí vi phân góc lắc Các ngỏ đƣợc đƣợc gửi máy tính nhân để quan sát đánh giá cần thiết 45 pos In3 PositionError(m) Position_Ref PWM Out ang In1 pos_inp Position Pulse Position in Metre x_dot PulseToMetre Pos_Feedback In2 ang_inp Angle Pulse theta_dot pos_out pwm_out ang_out pos_dot ang_dot Out1 Out2 Out3 Out4 Out5 Controller Hình 3.2 ThuậttoánSimulink cho giải pháp thủ công Các kết thực thực nghiệm điều khiển: - Kết sinh mã điều khiển: Sau thiết kế, định nghĩa tín hiệu cần thiết cấu hình thông số Simulink nhƣ trình bày phần Thuậttoán Hình 3.2 đƣợc sinh mã thành tập tin ngôn ngữ C có phần mở rộng c h nhƣ Hình 3.3 Hình 3.3 Kết sinh mã thuậttoán - Dự án sau tích hợp mã lệnh sinh mã viết thêm mã lệnh cho chƣơng trình nhƣ Hình 3.4 46 Hình 3.4 Dự án hoàn chỉnh - Kết chạy thực nghiệm điềukhiểnhệthống lắc ngƣợc: Đáp ng b c: Trong thí nghiệm này, góc lắc vị trí xe đƣợc điềukhiển bám vị trí từvị trí khởi tạo góc lắc 0.2 [rad] Góc lắc đƣợc thay đổi thủ công giá trị 0.2 [rad], vị trí xe [m] Khi đến vị trí 0.2 [rad], điềukhiển đƣợc cho phép hoạt động để điềukhiển xe phía âm để đƣa lắc [rad] Khi lắc ổn định, điềukhiển di chuyển xe vị trí tham chiếu trở lại Theo đáp ứng Hình 3.5, sau khoảng giây hệthống ổn định Một lực nhỏ tác độngvào lắc thời điểm khoảng giây để kiểm tra ổn định điềukhiển có nhiễu Kết điềukhiển đáp ứng tốt với nhiễu trùy đƣợc ổn định hệthống sau khoảng giây 47 0.2 0.15 0.1 theta[rad] 0.05 -0.05 -0.1 -0.15 -0.2 time[s] 10 12 10 12 a) 0.05 x[m] -0.05 -0.1 -0.15 -0.2 time[s] b) Hình 3.5 Đáp ứng bƣớc hệ thống: a) Đáp ứng góc lắc, b) Đáp ứng vị trí xe Th y đ i vị tr xe liên t c: Trong thí nghiệm này, góc tham chiếu đƣợc giữ cố định [rad] tham chiếu vị trí thay đổi liên tục giữ 0.1 [m] -0.1[m] với tần số 0.05 [Hz] nhƣ Hình 3.6 Kết cho thấy điềukhiển cân đƣợc lắc bám tốt vị trí tham chiếu 0.06 theta[rad] 0.04 0.02 -0.02 -0.04 -0.06 10 15 20 time[s] a) 48 25 30 35 40 0.15 model Reference 0.1 x[m] 0.05 -0.05 -0.1 10 15 20 time[s] 25 30 35 40 b) Hình 3.6 Đáp ứng bám vị trí hệ thống: a) Đáp ứng góc lắc, b) Đáp ứng vị trí xe Thực nghiệm với tảng RTOS Bên cạnh thí nghiệm với mã C thông thƣờng, framework đƣợc thí nghiệm với tảng RTOS Tuy nhiên, đối tƣợng điềukhiểnthuậttoán có thay đổi Cụ thể sửdụngđiềukhiển PID mờ tựđiều chỉnh thông số điềukhiển robot di động hai bánh tự cân Sơ đồ khối thuậttoán nhƣ Hình 3.7 Mục tiêu thuậttoán vừa cân robot vừa điềukhiển bám vị trí hƣớng đặt trƣớc Bộ điềukhiểnSimulink đƣợc thực hai trƣờng hợp sinh mã toàn chƣơng trình để chạy tác vụ FreeRTOS (Khanh, Hùng; 2015) sinh mã theo hệthống để chạy nhiều tác vụ FreeRTOS (Khanh, Hiếu; 2015) Kết thực nghiệm cho thấy thuậttoán đƣợc thực thành công tảng FreeRTOS Đây RTOS đƣợc sửdụng rộng rãi Kết chạy thực nghiệm hai trƣờng hợp nhƣ Hình 3.8 Từ đáp ứng cho thấy robot cân tốt góc theta=0, bám tốt vị trí tham chiếu trùy đƣợc hƣớng robot Tóm lại, kết cho thấy thực thành công điềukhiển số sửdụngframework đề nghị Kết thực nghiệm kiểm chứng hai thuậttoán hai đối tƣợng khác Frame work chạy mã lệnh C thông thƣờng hệđiều hành thời gian thực cho kết tốt 49 r - uy + + + Bộ điềukhiển PD mờ xref x uR Bộ điềukhiển PD mờ MR + Fuzzy PD2 Fuzzy PD1 Robot bánh tự cân e ref k1 Bộ điềukhiển PID + - ux - uL + ML k2 Bộ điềukhiển PD mờ Bộ điềukhiển PID tự chỉnh Hình 3.7 Thuậttoánđiềukhiển robot di động hai bánh tự cân (Khanh, Hùng; 2015) Tilt angle [radian] 0.05 -0.05 -0.1 10 15 20 Time [second] 25 30 35 40 a) 0.4 position refference Position [meter] 0.3 0.2 0.1 -0.1 -0.2 10 15 20 Time [second] b) 50 25 30 35 40 0.02 Rotation angle [radian] 0.015 0.01 0.005 -0.005 -0.01 -0.015 -0.02 10 15 20 Time [second] 25 30 35 40 c) 20 15 UL [voltage)] 10 -5 -10 -15 -20 10 15 20 Time [second] 25 30 35 40 25 30 35 40 d) 20 15 UR [voltage] 10 -5 -10 -15 -20 10 15 20 Time [second] e) Hình 3.8 Đáp ứng robot di động hai bánh tự cân a) Góc nghiêng, b) Vị trí, c) Hƣớng, d) Luật điềukhiểnđộng trái, d) Luật điềukhiểnđộng phải (Khanh, Hùng; 2015) 51 52 PHẦN KẾT LUẬN VÀ KIẾN NGHỊ 53 Kết luận Để tài xâydựng đƣợc frameworkgiúpsửdụngthuậttoánđiềukhiểntựđộngthiếtkế Matlab/Simulink vàohệthốngnhúngsửdụngviđiềukhiểnARMFramework thực thủ công tựđộng chạy mã lệnh C thông thƣờng tảng RTOS Thực nghiệm áp dụng hai thuậttoán chạy hai đối tƣợng cho kết nhƣ mong muốn Bƣớc đề tài hoàn thiện thƣ viện Simulink cho viđiềukhiển ARM, tích hợp khả sinh mã thành dự án hoàn chỉnh, xâydựng thêm khối thƣ viện Simulink chuyên dụng: thu thập liệu, hiển thị dạng led đơn, led bảy đoạn Kiến nghị - Áp dụngframework cho dòngviđiềukhiển giảng dạy - Ứng dựng kết vào giảng dạy nghiên cứu sinh viên 54 TÀI LIỆU THAM KHẢO [1] STMicroelectronics, 2011 Reference manual STM32F405xx, STM32F407xx, STM32F415xx and STM32F417xx advanced ARM-based 32-bit MCUs 1315 papes [2] Geekiyanage, P., Jayarathne, H.T., Jayasinghe, L.A.D.I.T., Amarasinghe, Y.W.R., 2013 Development of Upgradable Mobile Platform for Smart Applications The Seventh International Conference on Sensing Technology, pp.841-847 [3] Chattunyakit, S., Kondo, T., Nilkhamhang, I., 2013 Development of Robotic Platform for Swarm Robots in Fire Detection Application The Kasetsart Journal, 47: pp.967-976 [4] Ngon, N., Truong, N.M., 2014 Applying the MCU-MSP430 to develop digital PID controller kits The 7th Vietnam Conference on Mechatronics.7: pp.96-100 [5] STMicroelectronics, 2015 STM32F4DISCOVERY, assessed on 20 October 2015 Available from http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419 [6] Khanh, N.V., Hao, N.V., Phong, N.N, 2014 Stabilization control an inverted pendulum using backstepping controller Can Tho University Journal of Science 31: pp.18-25 55 PHỤ LỤC Bản Thuyết minh đề tài đƣợc phê duyệt Xác nhận nộp báo cho Tạp chí Khoa học Trƣờng Đại học Cần Thơ 02 báo đƣợc đăng Kỷ yếu Hội thảo/Hội nghị tạp chí nƣớc 56 ... TỔNG KẾT ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP TRƢỜNG XÂY DỰNG FRAMEWORK GIÚP SỬ DỤNG CÁC THUẬT TOÁN ĐIỀU KHIỂN TỰ ĐỘNG THIẾT KẾ TRÊN MATLAB SIMULINK VÀO HỆ THỐNG NHÚNG SỬ DỤNG VI ĐIỀU KHIỂN ARM Mã... 2.2 Các hàm thƣ vi n CTUProj_Driver 28 vi THÔNG TIN KẾT QUẢ NGHIÊN CỨU Thông tin chung: - Tên đề tài: Xây dựng framework giúp sử dụng thuật toán điều khiển tự động thiết kế matlab simulink. .. tài tập trung vào hai mục tiêu lớn: - - Tạo framework giúp sinh vi n thực đƣợc điều khiển chạy thời gian thực chip STM32F407 sử dụng thuật toán thiết kế Matlab/ Simulink Xây dựng ứng dụng kiểm chứng