Luận án Nghiên cứu xây dựng phương pháp điều khiển thích nghi, bền vững hệ euler - Lagrange thiếu cơ cấu chấp hành và áp dụng cho cẩu treo

Hệ Euler-Lagrange (EL) nói chung và cẩu treo nói riêng với mô hình biến

khớp là lớp hệ thường gặp nhất trong thực tế ở các lĩnh vực cơ khí, cơ điện tử.

Giống như ở các hệ có mô hình trạng thái, mô hình hệ EL cũng mang đầy đủ các

tính chất khách quan như không tuyệt đối chính xác, thường được lý tưởng hóa là

không có nhiễu khi xây dựng mô hình. Bởi vậy bài toán thiết kế, xây dựng bộ điều

khiển cho hệ EL trên nền tảng không có được sự chính xác của mô hình, cũng như

phải tính tới sự tác động của nhiễu, mà vẫn đảm bảo chất lượng điều khiển đặt ra,

luôn có ý nghĩa ứng dụng lớn.

Cẩu treo là thiết bị công nghiệp được sử dụng rất rộng rãi trong nhiều lĩnh vực

như các công trình xây dựng, ở các nhà máy hay tại các bến cảng. Tại Việt Nam

hiện nay phần lớn các cẩu treo này được vận hành bằng tay bởi người sử dụng. Khi

mà kích thước của cẩu treo lớn hơn và yêu cầu vận chuyển nhanh hơn, cường độ

làm việc cao hơn, thì việc vận hành chúng sẽ trở nên khó khăn nếu chưa tự động

hóa quá trình này. Cẩu treo di chuyển theo quỹ đạo không cứng nhắc, nhưng nó

hoạt động trong điều kiện hết sức khắc nghiệt nên một hệ điều khiển trong vòng kín

là thích hợp nhất. Cẩu treo là một thiết bị quan trọng sử dụng rộng rãi trong công

nghiệp để vận chuyển các vật nặng và hàng hóa (gọi chung là tải trọng) từ nơi này

đến một nơi khác, nó luôn có kết cấu vững chắc để nâng và di chuyển các vật nặng

trong nhà máy, trong công trường xây dựng, trên boong tầu đặc biệt là tại các bến

cảng. Trong nhà máy, cẩu treo gia tăng quá trình sản xuất bằng cách vận chuyển

nguyên liệu với khối lượng rất nặng từ vị trí này đến vị trí khác cũng như di chuyển

các sản phẩm ở một dây chuyền sản xuất hay dây chuyển lắp ráp. Ví dụ, trong nhà

máy luyện kim cẩu treo vận chuyển cuộn thép, phôi thép hay thùng kim loại nóng

chảy để đổ vào khuôn đúc

pdf 149 trang dienloan 8620
Bạn đang xem 20 trang mẫu của tài liệu "Luận án Nghiên cứu xây dựng phương pháp điều khiển thích nghi, bền vững hệ euler - Lagrange thiếu cơ cấu chấp hành và áp dụng cho cẩu treo", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Luận án Nghiên cứu xây dựng phương pháp điều khiển thích nghi, bền vững hệ euler - Lagrange thiếu cơ cấu chấp hành và áp dụng cho cẩu treo

Luận án Nghiên cứu xây dựng phương pháp điều khiển thích nghi, bền vững hệ euler - Lagrange thiếu cơ cấu chấp hành và áp dụng cho cẩu treo
BỘ GIÁO DỤC VÀ ĐÀO TẠO 
ĐẠI HỌC THÁI NGUYÊN 
-----------------***----------------- 
NGUYỄN THỊ VIỆT HƢƠNG 
NGHIÊN CỨU XÂY DỰNG PHƢƠNG PHÁP 
ĐIỀU KHIỂN THÍCH NGHI, BỀN VỮNG HỆ 
EULER - LAGRANGE THIẾU CƠ CẤU CHẤP HÀNH 
VÀ ÁP DỤNG CHO CẨU TREO 
LUẬN ÁN TIẾN SĨ KỸ THUẬT 
THÁI NGUYÊN, NĂM 2016 
BỘ GIÁO DỤC VÀ ĐÀO TẠO 
ĐẠI HỌC THÁI NGUYÊN 
-----------------***----------------- 
NGUYỄN THỊ VIỆT HƢƠNG 
NGHIÊN CỨU XÂY DỰNG PHƢƠNG PHÁP 
ĐIỀU KHIỂN THÍCH NGHI, BỀN VỮNG HỆ 
EULER - LAGRANGE THIẾU CƠ CẤU CHẤP HÀNH 
VÀ ÁP DỤNG CHO CẨU TREO 
 Chuyên ngành: Kỹ thuật điều khiển và tự động hóa 
 Mã số: 62 52 02 16 
LUẬN ÁN TIẾN SĨ KỸ THUẬT 
NGƯỜI HƯỚNG DẪN KHOA HỌC 
1. GS.TS. NGUYỄN DOÃN PHƢỚC 
2. TS. ĐỖ TRUNG HẢI 
THÁI NGUYÊN, NĂM 2016 
i 
Lời cam đoan 
Tôi xin cam đoan: Luận án “Nghiên cứu xây dựng phƣơng pháp điều khiển 
thích nghi, bền vững hệ Euler Lagrange thiếu cơ cấu chấp hành và ứng dụng 
cho cẩu treo” là công trình nghiên cứu của riêng tôi được hoàn thành dưới sự chỉ 
bảo tận tình của hai thầy giáo hướng dẫn. 
Các kết quả nghiên cứu trong luận án là trung thực, một phần được công bố 
trên các tạp chí khoa học chuyên ngành với sự đồng ý của các đồng tác giả, phần 
còn lại chưa được ai công bố trong bất kỳ công trình nào khác. 
Ngày 12 tháng 6 năm 2016 
Tác giả luận án 
Nguyễn Thị Việt Hƣơng 
ii 
Lời cảm ơn 
Trong quá trình thực hiện Luận án với tên đề tài: “Nghiên cứu xây dựng 
phƣơng pháp điều khiển thích nghi, bền vững hệ Euler Lagrange thiếu cơ cấu 
chấp hành và ứng dụng cho cẩu treo” tôi đã nhận được sự giúp đỡ tận tình của 
các thầy giáo, GS.TS. Nguyễn Doãn Phước – Trưởng Bộ môn Điều khiển tự động, 
Viện Điện, trường Đại học Bách Khoa Hà Nội; TS. Đỗ Trung Hải – Trưởng khoa 
Điện, trường Đại học Kỹ thuật Công nghiệp Thái Nguyên cùng tập thể các thầy cô 
giáo của bộ môn Điều khiển tự động trường Đại học Bách Khoa Hà Nội, tập thể các 
thầy cô của Khoa Điện, Phòng Đào tạo trường Đại học Kỹ thuật Công nghiệp Thái 
Nguyên, sự giúp đỡ tạo điều kiện về thời gian của lãnh đạo trường cao đẳng Công 
nghiệp Thái Nguyên. Tôi xin bày tỏ lòng cảm ơn sâu sắc đến tập thể cán bộ hướng 
dẫn đã tâm huyết hướng dẫn tôi trong suốt thời gian qua. 
Với kiến thức chuyên môn có hạn trong quá trình nghiên cứu và viết luận án, 
không thể tránh khỏi thiếu sót, rất mong nhận được ý kiến đóng góp của các thầy cô 
và các nhà khoa học. 
Tôi xin trân trọng cảm ơn! 
 Nghiên cứu sinh 
 Nguyễn Thị Việt Hương 
iii 
Mục lục 
Các ký hiệu được sử dụng ....................................................................................... v 
Bảng các ký hiệu viết tắt ......................................................................................... vii 
Bảng danh mục các hình vẽ ................................................................................... viii 
Bảng danh mục các bảng biểu ................................................................................. x 
PHẦN MỞ ĐẦU ........................................................................................................ 1 
1. Giới thiệu về công trình nghiên cứu, lý do lựa chọn đề tài ............................... 1 
2. Mục tiêu của đề tài .......................................................................................... 3 
3. Đối tượng nghiên cứu ..................................................................................... 4 
4. Phương pháp nghiên cứu ............................................................................... 4 
5. Nội dung nghiên cứu ....................................................................................... 4 
6. Phạm vi nghiên cứu ........................................................................................ 5 
7. Ý nghĩa khoa học và thực tiễn ......................................................................... 5 
CHƢƠNG 1 TỔNG QUAN VỀ CÁC PHƢƠNG PHÁP ĐIỀU KHIỂN HỆ THIẾU 
CƠ CẤU CHẤP HÀNH 6 
1.1 Điều khiển tuyến tính hóa từng phần ............................................................... 8 
1.1.1 Điều khiển để thành phần hệ con cưỡng bức, đủ cơ cấu chấp hành là bám ổn định .. 9 
1.1.2 Điều kiện đủ để thành phần hệ con tự do là ổn định ............................................ 11 
1.2 Điều khiển truyền thẳng (input shaping) ........................................................ 12 
1.3 Bộ điều khiển backstepping........................................................................... 13 
1.4 Điều khiển nội suy mờ ................................................................................... 15 
1.5 Một số phương pháp điều khiển khác ........................................................... 16 
1.5.1 Điều khiển PD ................................................................................................. 16 
1.5.2 Điều khiển tối ưu ............................................................................................. 16 
1.5.3 Điều khiển thích nghi và bền vững .................................................................... 17 
1.6 Một số phương pháp điều khiển thích nghi điển hình cho hệ EL đủ cơ cấu 
chấp hành ..................................................................................................... 19 
1.6.1 Phương pháp PD thích nghi .............................................................................. 19 
1.6.2 Phương pháp điều khiển trượt ........................................................................... 20 
1.6.3 Phương pháp Li-Slotine ................................................................................... 22 
1.7 Kết luận chương 1 ........................................................................................ 22 
CHƢƠNG 2 MỘT SỐ ĐỀ XUẤT BỔ SUNG TÍNH THÍCH NGHI BỀN VỮNG CHO 
BỘ ĐIỀU KHIỂN HỆ THIẾU CƠ CẤU CHẤP HÀNH 24 
2.1 Điều khiển bám ổn định ISS thích nghi nhờ tín hiệu bù ................................. 25 
iv 
2.1.1 Bộ điều khiển thích nghi ISS với tín hiệu bù ...................................................... 25 
2.1.2 Chất lượng thành phần của hệ con thứ hai ......................................................... 31 
2.2 Điều khiển trượt bậc cao ............................................................................... 32 
2.2.1 Khái niệm điều khiển trượt cơ bản và trượt bậc cao ............................................ 33 
2.2.2 Thiết kế bộ điều khiển trượt bậc hai cho hệ EL bất định thiếu cơ cấu chấp hành ... 40 
2.3 Kết luận chương 2 ........................................................................................ 46 
CHƢƠNG 3 ỨNG DỤNG TRONG ĐIỀU KHIỂN HỆ CẨU TREO 3D 48 
3.1 Mô hình hoá hệ cẩu treo ............................................................................... 48 
3.1.1 Cấu trúc vật lý hệ cẩu treo ................................................................................ 48 
3.1.2 Mô hình EL hệ cẩu treo 3D .............................................................................. 49 
3.1.3 Mô hình EL hệ cẩu treo 2D .............................................................................. 52 
3.2 Điều khiển thích nghi ISS .............................................................................. 54 
3.2.1 Bộ điều khiển thích nghi ISS cho hệ cẩu treo ..................................................... 54 
3.2.2 Kết quả mô phỏng ........................................................................................... 55 
3.3 Điều khiển trượt bậc hai ................................................................................ 59 
3.3.1 Bộ điều khiển trượt bậc hai cho hệ cẩu treo ....................................................... 59 
3.3.2 Kết quả mô phỏng ........................................................................................... 63 
3.4 Điều khiển trượt siêu xoắn ............................................................................ 67 
3.4.1 Thiết kế bộ điều khiển trượt siêu xoắn cho hệ cẩu treo ........................................ 67 
3.4.2 Kết quả mô phỏng ........................................................................................... 76 
3.5 Xây dựng bàn thí nghiệm cẩu treo 3D ........................................................... 83 
3.5.1 Vật tư thiết bị .................................................................................................. 83 
3.5.2 Xây dựng bản vẽ cơ khí về mô hình thí nghiệm thực .......................................... 83 
3.5.3 Thiết kế mạch vòng trong ................................................................................. 85 
3.5.4 Cảm biến vị trí ................................................................................................ 87 
3.5.5 Cảm biến góc .................................................................................................. 87 
3.5.6 Truyền thông ................................................................................................... 90 
3.5.7 Thiết kế mạch vòng ngoài ................................................................................ 91 
3.5.8 Lập trình ......................................................................................................... 92 
Hình 3.31. Giao diện GUI điều khiển và thu thập số liệu .............................................. 94 
3.5.9 Quy trình vận hành bàn thí nghiệm và kết quả ................................................... 94 
3.6 Kết luận chương 3 ........................................................................................ 97 
KẾT LUẬN, KIẾN NGHỊ VÀ HƢỚNG NGHIÊN CỨU TIẾP THEO 99 
4.1 Kết luận chung .............................................................................................. 99 
4.2 Kiến nghị và hướng nghiên cứu tiếp theo .................................................... 100 
Tài liệu tham khảo ................................................................................................ 101 
DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC CÓ LIÊN QUAN ĐẾN LUẬN ÁN 110 
PHỤ LỤC ............................................................................................................. 112 
v 
Các ký hiệu đƣợc sử dụng 
q vector các biến khớp của hệ 
 vector các tham số hằng 
( , )mG col I  ma trận điều khiển 
mI ma trận đơn vị m hàng m cột 
 ma trận có tất cả các phần tử bằng 0 
m số các tín hiệu điều khiển 
u vector các tín hiệu điều khiển 
( )n t vector của tạp nhiễu tác động vào hệ thống 
( , )g q  vector lực ma sát và gia tốc trọng trường 
( , , )C q q  
ma trận liên quan lực hướng tâm, ma trận hệ số 
coriolis 
( , )M q  ma trận quán tính, đối xứng xác định dương 
( , , )F q q q ma trận hàm xác định 
( )D q , ( , )D D q  ma trận đối xứng xác định dương giống như ( )M q 
v vector tín hiệu điều khiển 
r
q quỹ đạo đặt trước mà 
1
q phải bám theo 
1 2, K K hai ma trận đối xứng xác định dương 
e sai lệch quỹ đạo, sai lệch bám 
A ma trận Hurwitz 
1 2,  các ma trận hồi quy 
1 2,  các ma trận bất định hằng 
d 
tham số hằng được chọn trước thay cho thành phần 
bất định  
( , , )q q t 
tổng các thành phần nhiễu ( )n t kết hợp với sai lệch 
mô hình sinh ra bởi việc thay  bằng d 
( )w t tín hiệu mẫu 
 bộ chỉnh định tham số 
vi 
( )s t tín hiệu bù sai lệch 
( , )n q t ,n nhiễu tác động ở đầu vào 
, , , 1,2, 1,2ij ij iM C g i j các ma trận và vector hàm bất định 
 , x col e e vector động học sai lệch bám 
1
 chuẩn bậc nhất của ánh xạ tuyến tính 
,Q P ma trận đối xứng xác định dương 
( )x ,
1
( , )s q q mặt trượt 
equ thành phần tín hiệu giữ ( )x t ở lại trên mặt trượt 
Nu 
thành phần tín hiệu làm cho ( )x t tiến về mặt trượt 
trong khoảng thời gian hữu hạn T 
 miền compact 
cm khối lượng xe cẩu 
rm khối lượng xà đỡ 
m khối lượng tải trọng 
lu lực tạo ra bởi tời quay 
l độ dài dây cáp buộc tải trọng 
, y xu u 
lực đẩy lần lượt cho xe cẩu chạy dọc trên xà đỡ và 
cho xà đỡ cùng xe cẩu di chuyển theo trục ox được 
lấy từ động cơ như một cơ cấu chấp hành. 
, y x 
lần lượt là góc giữa dây buộc trọng tải với mặt 
phẳng và xoz và góc giữa hình chiếu của dây buộc 
lên mặt phẳng xoz với mặt phẳng yoz . 
vii 
Bảng các ký hiệu viết tắt 
ADC Analog-to-digital converter 
CLF control-Lyapunov function 
DCS Distributed control system 
EL Euler-Lagrange 
eq Equipvalence principle 
FC Fuzzy control 
GAS global asymptotically stable 
GUI Graphical user interface 
ISS Input to state stable 
I2C Inter-Integrated Circuits 
PD Proportional Derivative 
PWM Pulse Width Modulation 
QEI Quadrature Encoder Interface 
RBF Radial Basis Function 
SCP Small control property 
SMC System Management Controller 
UART Universal Asynchronous Receiver/Transmitter 
viii 
Bảng danh mục các hình vẽ 
Hình 1.1. Tuyến tính hóa từng phần 9 
Hình 1.2. Ứng dụng input shaping vào điều khiển cẩu treo 11 
Hình 1.3. Điều khiển cẩu treo bằng nội suy mờ 14 
Hình 2.1. Hệ sẽ mất ổn định nếu quỹ đạo trạng thái chỉ tiệm cận về mặt trượt 30 
Hình 2.2. Hiện tượng rung (chattering). Nguyên nhân a) và hiệu ứng b). 34 
Hình 3.1. Cấu trúc vật lý hệ cẩu treo 3D 46 
Hình 3.2. Cấu trúc hệ cẩu treo 2D 51 
Hình 3.3. Sơ đồ cấu trúc mô phỏng bộ điều khiển thích nghi bền vững 55 
Hình 3.4. Đáp ứng vị trí cẩu treo theo trục x 54 
Hình 3.5. Đáp ứng vị trí cẩu treo theo trục z 54 
Hình 3.6a. Đáp ứng góc lắc của dây cáp theo các phương ,x y khi chưa có 
bất định mô hình 54 
Hình 3.6b. Đáp ứng góc lắc của dây cáp theo các phương ,x y khi đã có bất 
định mô hình (tại thời điểm 50 giây) 
Hình 3.7. Sơ đồ mô phỏng trên nền Simulink hệ cẩu treo 3D sử dụng điều 
khiển trượt bậc hai 59 
Hình 3.8. Kết quả mô phỏng với 1 4 và 2 3.5 60 
Hình 3.9: Kết quả mô phỏng với 1 0.2 và 2 0.2 . 61 
Hình 3.10. Kết quả mô phỏng với 1 2 0.5 62 
Hình 3.11. Kết quả mô phỏng với 1 2 4 63 
Hình 3.12. Phân tích quỹ đạo trạng thái dưới tác động bộ điều khiển siêu xoắn 70 
Hình 3.13. Mô hình mô phỏng hệ cẩu treo 3D 72 
Hình 3.14. Mô hình mô phỏng bộ điều khiển trượt siêu xoắn 72 
Hình 3.15. Sơ đồ mô phỏng bộ điều khiển trượt bậc cao siêu xoắn theo mô 
hình đối tượng cẩu treo 3D gốc 73 
Hình 3.16. Sơ đồ xác định vị trí trọng tải từ các biến trạng thái [ST2] 73 
Hình 3.17. Quỹ đạo di chuyển của tải 75 
Hình 3.18. Đáp ứng của các biến trạng thái , ,x y l 75 
Hình 3.19. Đáp ứng góc x 76 
ix 
Hình 3.20. Đáp ứng góc y 76 
Hình 3.21. Lực điều khiển 76 
Hình 3.22. Mặt trượt s 77 
Hình 3.23. Đạo hàm của mặt trượt s 77 
Hình 3.24. Quỹ đạo s ds 77 
Hình 3.25. Kết cấu cơ khí bàn thí nghiệm cẩu treo 3D 79 
Hình 3.26. Hệ thống điều khiển 81 
Hình 3.27. Cảm biến đo dòng điện 81 
Hình 3.28. Sơ đồ mạch vòng trong 82 
Hình 3.29. Cảm biến góc 83 
Hình 3.30. Sơ đồ mạng truyền thông trong hệ thống 86 
Hình 3.31. Giao diện GUI điều khiển và thu thập số liệu 88 
Hình 3.32. Hình ảnh hệ thực nghiệm 1 89 
Hình 3.33. Hình ảnh hệ thực nghiệm 2 89 
Hình 3.34. Tọa độ xà đỡ nằm ngang 90 
Hình 3.35. Tọa độ của xe cẩu trên xà đỡ nằm ngang 90 
Hình 3.36. Góc x 91 
Hình 3.37. Góc y 91 
Hình 3.38. C ... 
function eTransmitter_CreateFcn(hObject, eventdata, handles) 
if ispc && isequal(get(hObject,'BackgroundColor'), 
get(0,'defaultUicontrolBackgroundColor')) 
 set(hObject,'BackgroundColor','white'); 
end 
% --- Executes on button press in bConnect. 
function bConnect_Callback(hObject, eventdata, handles) 
global i; 
global adc adc1; 
global s; 
global s1; 
IsConnect = handles.status_com; 
if (IsConnect == 0), 
 IsConnect = 1; 
 s = serial(get_stringPopup(handles.pComPort)); 
 s.BaudRate = get_doublePopup(handles.pBaudRate); 
 s.DataBits = get_doublePopup(handles.pDataBit); 
 s.Parity = get_stringPopup(handles.pParityBit); 
 s.StopBit = get_doublePopup(handles.pStopBit); 
 s.BytesAvailableFcnCount = 4; 
 s.BytesAvailableFcnMode = 'terminator'; 
 s.BytesAvailableFcn = @BytesAvailable_Callback; 
 s.OutputEmptyFcn = @OutputEmpty_Callback; 
 s.BreakInterruptFcn = @BreakInterrupt_Callback; 
 s.ErrorFcn = @Error_Callback; 
 s.PinStatusFcn = @PinStatus_Callback; 
125 
 s.BreakInterruptFcn = @BreakInterrupt_Callback; 
 %s.TimerPeriod = 1; 
 s.TimerFcn = @Timer_Callback; 
 fopen(s); 
 s1 = serial(get_stringPopup(handles.pComPort1)); 
 s1.BaudRate = get_doublePopup(handles.pBaudRate); 
 s1.DataBits = get_doublePopup(handles.pDataBit); 
 s1.Parity = get_stringPopup(handles.pParityBit); 
 s1.StopBit = get_doublePopup(handles.pStopBit); 
 s1.BytesAvailableFcnCount = 4; 
 s1.BytesAvailableFcnMode = 'terminator'; 
 s1.BytesAvailableFcn = @BytesAvailable1_Callback; 
 s1.OutputEmptyFcn = @OutputEmpty1_Callback; 
 s1.BreakInterruptFcn = @BreakInterrupt1_Callback; 
 s1.ErrorFcn = @Error1_Callback; 
 s1.PinStatusFcn = @PinStatus1_Callback; 
 s1.BreakInterruptFcn=@BreakInterrupt1_Callback; 
 %s1.TimerPeriod = 0.1; 
 s1.TimerFcn = @Timer1_Callback; 
 fopen(s1); 
 temp = s.status; 
 temp1= s1.status; 
 if ((temp == 'open')&(temp1=='open')), 
 set(handles.bConnect,'String','Disconnect'); 
 set(handles.eStatusConnect,'String','Connected'); 
 set(handles.pComPort,'Enable','off'); 
 set(handles.pComPort1,'Enable','off'); 
 set(handles.pBaudRate,'Enable','off'); 
 set(handles.pDataBit,'Enable','off'); 
 set(handles.pStopBit,'Enable','off'); 
 set(handles.pParityBit,'Enable','off'); 
 set(handles.eRecordName,'Enable','off'); 
 else 
 set(handles.eStatusConnect,'String','A Problem occour..'); 
 end; 
126 
else 
 %s=handles.com; 
 set(handles.bConnect,'String','Connect'); 
 set(handles.eTranferStatus,'String',''); 
 IsConnect = 0; 
 set(handles.eStatusConnect,'String','Disconnected'); 
 record(s,'off'); 
 record(s1,'off'); 
 %s=handles.com; 
 save('data.mat','adc'); 
 save('data1.mat','adc1'); 
 fclose(s); 
 fclose(s1); 
 delete(s); 
 delete(s1); 
 set(handles.pComPort,'Enable','on'); 
 set(handles.pComPort1,'Enable','on'); 
 set(handles.pBaudRate,'Enable','on'); 
 set(handles.pDataBit,'Enable','on'); 
 set(handles.pStopBit,'Enable','on'); 
 set(handles.pParityBit,'Enable','on'); 
 set(handles.eRecordName,'Enable','on'); 
 %%%%clearvars global adc ; 
end 
global hand; 
hand = handles; 
handles.file=get(handles.eRecordName,'String'); 
handles.com = s; 
handles.status_com = IsConnect; 
guidata(hObject,handles); 
function BytesAvailable_Callback(obj,event) 
 global hand; 
 global adc; 
 global i; 
 ind = fscanf(obj); 
 dau=1; 
 a(1)='0'; 
127 
 k=1; 
 z=1; 
 m=1; 
 for k=1:length(ind) 
 if ((ind(k)>='0')&&(ind(k)<='9')) 
 a(z)=ind(k); 
 z=z+1; 
 end; 
 switch ind(k) 
 case '+' 
 dau=1; 
 case '-' 
 dau=-1; 
 end; 
 if(ind(k)==' ') 
 z=1; 
 adc(i,m)=dau*str2num(a); 
 dau=1; 
 m=m+1; 
 clear a; 
 a(1)='1'; 
 end; 
 if (k==length(ind)) 
 adc(i,m)=dau*str2num(a); 
 end; 
 end; 
 % evalin('base',['plot(adc(:,2),adc(:,1),adc(:,2),adc(:,3))']); 
 % plot(adc(:,2),adc(:,1),adc(:,2),adc(:,3)) 
 set(hand.eReceiver,'String',ind); 
 i=i+1; 
 %{ 
 global nhans 
 nhans=1; 
 if (nhans1) 
 controlvongtron(); 
 end; 
 %} 
 function BytesAvailable1_Callback(obj,event) 
128 
 global adc1; 
 global hand; 
 global i1; 
 ind = fscanf(obj); 
 dau=1; 
 a(1)='0'; 
 k=1; 
 z=1; 
 m=1; 
 for k=1:length(ind) 
 if ((ind(k)>='0')&&(ind(k)<='9')) 
 a(z)=ind(k); 
 z=z+1; 
 end; 
 switch ind(k) 
 case '+' 
 dau=1; 
 case '-' 
 dau=-1; 
 end; 
 if(ind(k)==' ') 
 z=1; 
 adc1(i1,m)=dau*str2num(a); 
 dau=1; 
 m=m+1; 
 clear a; 
 a(1)='0'; 
 end; 
 if (k==length(ind)) 
 adc1(i1,m)=dau*str2num(a); 
 end; 
 end; 
 % evalin('base',['plot(adc(:,2),adc(:,1),adc(:,2),adc(:,3))']); 
 % plot(adc(:,2),adc(:,1),adc(:,2),adc(:,3)) 
 %set(hand.eReceiver,'String',ind); 
 % if (mod(i1,100)==0) 
 % plot(adc(:,1),adc(:,3)); 
 % end; 
 i1=i1+1; 
 % control(); 
 % global nhans1 nhans 
129 
 % nhans1=1; 
 % control(); 
 % if (nhans) controlvongtron(); 
 %end 
 % if (adc(:,1)>20) fprintf(handles.com,) 
%Specify the M-file callback function to execute when the output buffer 
is empty 
function OutputEmpty_Callback(obj,event) 
 global hand; 
 function OutputEmpty1_Callback(obj,event) 
 global hand; 
%Specify the M-file callback function to execute when an error event 
occurs 
function Error_Callback(obj,event) 
 global hand; 
 set(hand.eTranferStatus,'Send Fail'); 
 function Error1_Callback(obj,event) 
 global hand; 
 set(hand.eTranferStatus,'Send Fail'); 
%Specify the M-file callback function to execute when the CD, CTS, DSR, 
or 
%RI pins change state 
function PinStatus_Callback(obj,event) 
 global hand; 
 function PinStatus1_Callback(obj,event) 
 global hand; 
%Specify the M-file callback function to execute 
%when a predefined period of time passes 
function Timer_Callback(obj,event) 
 %{ 
 global s; 
 fprintf(s,num2str('BZE')); 
130 
 %} 
 function Timer1_Callback(obj,event) 
 %{ 
 global s1; 
 fprintf(s1,'BZE'); 
 %} 
% --- Executes on button press in bExit. 
function bExit_Callback(hObject, eventdata, handles) 
 global s 
 global adc adc1 
 IsConnect = handles.status_com; 
 user_response = modaldlg('Title','Exit tut4'); 
 switch lower(user_response) 
 case 'no' 
 % do nothing 
 case 'yes' 
 if (IsConnect == 1) 
 %s = handles.com; 
 save('data.mat','adc'); 
 save('data1.mat','adc1'); 
 fclose(s); 
 clear s; 
 end; 
 close(tut4chuto); 
 clear all; 
 end 
function bSend_Callback(hObject, eventdata, handles) 
 global s; 
IsConnect = handles.status_com; 
%s = handles.com; 
if (IsConnect == 1) 
 set(handles.eTranferStatus,'String','Sending... '); 
 strTX = get(handles.eTransmitter,'String'); 
 fprintf(s,strTX); 
 set(handles.eTranferStatus,'String','Success '); 
end 
%handles.com = s; 
131 
guidata(hObject,handles); 
function stringPopup = get_stringPopup(hObject,handles) 
 val = get(hObject,'Value'); 
 str = get(hObject, 'String'); 
 stringPopup = str{val}; % convert from cell array 
 % to string 
% Function to 
function doublePopup = get_doublePopup(hObject,handles) 
 val = get(hObject,'Value'); 
 str = get(hObject, 'String'); 
 string = str{val}; 
 doublePopup = str2double(string); 
% --- Executes on button press in button_ClearTX. 
% --- Executes during object deletion, before destroying properties. 
function figure1_DeleteFcn(hObject, eventdata, handles) 
% hObject handle to figure1 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
 global adc adc1 
 IsConnect = handles.status_com; 
 if (IsConnect == 1), 
 %s = handles.com; 
 record(s,'off') 
 save('data.mat','adc'); 
 save('data1.mat','adc1'); 
 fclose(s); 
 delete(s); 
 clear s; 
end 
delete(hObject); 
% --- Executes when user attempts to close figure1. 
function figure1_CloseRequestFcn(hObject, eventdata, handles) 
132 
% hObject handle to figure1 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
global adc adc1; 
IsConnect = handles.status_com; 
if (IsConnect == 1), 
 %s = handles.com; 
 save('data.mat','adc'); 
 save('data1.mat','adc1'); 
 fclose(s); 
 delete(s); 
 clear s; 
end 
% Hint: delete(hObject) closes the figure 
delete(hObject); 
% --- Executes during object creation, after setting all properties. 
%empty - handles not created until after all CreateFcns called 
% --- Executes on selection change in pComPort1. 
function pComPort1_Callback(hObject, eventdata, handles) 
% hObject handle to pComPort1 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
% Hints: contents = cellstr(get(hObject,'String')) returns pComPort1 
contents as cell array 
% contents{get(hObject,'Value')} returns selected item from 
pComPort1 
% --- Executes during object creation, after setting all properties. 
function pComPort1_CreateFcn(hObject, eventdata, handles) 
% hObject handle to pComPort1 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles empty - handles not created until after all CreateFcns 
133 
called 
% Hint: popupmenu controls usually have a white background on Windows. 
% See ISPC and COMPUTER. 
if ispc && isequal(get(hObject,'BackgroundColor'), 
get(0,'defaultUicontrolBackgroundColor')) 
 set(hObject,'BackgroundColor','white'); 
end 
% --- Executes on key press with focus on pcomport1 and none of its 
controls. 
function pComPort1_KeyPressFcn(~, eventdata, handles) 
% hObject handle to pcomport1 (see GCBO) 
% eventdata structure with the following fields (see 
MATLAB.UI.CONTROL.UICONTROL) 
% Key: name of the key that was pressed, in lower case 
% Character: character interpretation of the key(s) that was pressed 
% Modifier: name(s) of the modifier key(s) (i.e., control, shift) 
pressed 
% handles structure with handles and user data (see GUIDATA) 
function text_x_Callback(hObject, eventdata, handles) 
% hObject handle to text_x (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
% Hints: get(hObject,'String') returns contents of text_x as text 
% str2double(get(hObject,'String')) returns contents of text_x 
as a double 
function text_y_Callback(hObject, eventdata, handles) 
% hObject handle to text_x (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
% Hints: get(hObject,'String') returns contents of text_x as text 
134 
% str2double(get(hObject,'String')) returns contents of text_x 
as a double 
% --- Executes during object creation, after setting all properties. 
function text_x_CreateFcn(hObject, eventdata, handles) 
% hObject handle to text_x (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles empty - handles not created until after all CreateFcns 
called 
% Hint: edit controls usually have a white background on Windows. 
% See ISPC and COMPUTER. 
if ispc && isequal(get(hObject,'BackgroundColor'), 
get(0,'defaultUicontrolBackgroundColor')) 
 set(hObject,'BackgroundColor','white'); 
end 
% --- Executes during object creation, after setting all properties. 
function text_y_CreateFcn(hObject, eventdata, handles) 
% hObject handle to text_y (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles empty - handles not created until after all CreateFcns 
called 
% Hint: edit controls usually have a white background on Windows. 
% See ISPC and COMPUTER. 
if ispc && isequal(get(hObject,'BackgroundColor'), 
get(0,'defaultUicontrolBackgroundColor')) 
 set(hObject,'BackgroundColor','white'); 
end 
% --- Executes on button press in bx. 
function bx_Callback(hObject, eventdata, handles) 
% hObject handle to bx (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
%s = handles.com; 
135 
 global hand 
 global s 
 x_ref = get(handles.text_x,'String'); 
 if (x_ref(1)~='-') 
 x_gui=strcat('B1+',x_ref,'E'); 
 else 
 x_gui = strcat('B1',x_ref,'E'); 
 end 
 fprintf(s,x_gui); 
 set(hand.eTransmitter,'String',x_gui); 
%handles.com = s; 
% --- Executes on button press in bxy. 
function by_Callback(hObject, eventdata, handles) 
% hObject handle to by (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
 global hand 
 global s 
 y_ref =get(handles.text_y,'String'); 
 if (y_ref(1)~='-') 
 y_gui = strcat('B2+',y_ref,'E'); 
 else 
 y_gui = strcat('B2',y_ref,'E'); 
 end 
 fprintf(s,y_gui); 
 set(hand.eTransmitter,'String',y_gui); 
function control() 
 global s1 s 
 global x_ref 
 global p_u err_p0 err_p1 
 global adc i adc1 i1 
 global hand 
 err_p0=err_p1; 
 err_p1=x_ref-adc1(i1-1,1); 
 p_u=(p_u+err_p1*0.3754-err_p0*0.3700); 
 if (p_u>2800) p_u=2800; 
 end 
136 
 if (p_u<-2800)p_u=-2800; 
 end 
 if (p_u<0) 
 dienap_gui=strcat('Bu',num2str(p_u),'E'); 
 else 
 dienap_gui=strcat('Bu+',num2str(p_u),'E'); 
 end 
 tic; 
 fprintf(s1,'%d',1234567); 
 toc 
 % set(hand.eTransmitter,'String',dienap_gui); 
 %function controlvongtron() 
% --- Executes on button press in bPloty. 
function bPloty_Callback(hObject, eventdata, handles) 
% hObject handle to bPloty (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
global adc; 
plot(adc(:,1),adc(:,5),adc(:,1),adc(:,6)); 
% --- Executes on button press in bPlotx. 
function bPlotx_Callback(hObject, eventdata, handles) 
% hObject handle to bPlotx (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
global adc; 
plot(adc(:,1),adc(:,2),adc(:,1),adc(:,3)); 
% --- Executes on button press in bsendy. 
function bsendy_Callback(hObject, eventdata, handles) 
% hObject handle to bsendy (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
global s; 
IsConnect = handles.status_com; 
global s1 
%s = handles.com; 
137 
if (IsConnect == 1) 
 set(handles.eTranferStatus,'String','Sending... '); 
 strTX = get(handles.eTransmitter,'String'); 
 fprintf(s1,strTX); 
 set(handles.eTranferStatus,'String','Success '); 
end 
%handles.com = s; 
guidata(hObject,handles); 
% --- Executes on button press in bplotxy. 
function bplotxy_Callback(hObject, eventdata, handles) 
% hObject handle to bplotxy (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 
global adc 
plot(adc(:,2),adc(:,5),adc(:,3),adc(:,6)); 

File đính kèm:

  • pdfluan_an_nghien_cuu_xay_dung_phuong_phap_dieu_khien_thich_ngh.pdf