Luận án Nghiên cứu tổng hợpđiều khiểnhệ thống truyền động bám cho các đối tượng chuyển động chậm
Hệ thống truyền động bám công nghiệp và khí tài quân sự được sử dụng
trong các hệ thống kỹ thuật cao như: hệ thống bánh lái tàu thuỷ, hệ thống
pháo tàu, hệ thống điều khiển khí cụ bay, hệ truyền động của máy đo xa Laze,
tay máy công nghiệp và máy cắt gọt kim loại CNC. Hệ thống truyền động
bám thường sử dụng động cơ có đặc tính mô men tốt như động cơ BLDC,
động cơ PMSM với hai dạng (surface-mounted PMSM là SPMSM) và
(interior PMSM là IPMSM). Động cơ này đang có ưu thế nổi bật về tính linh
hoạt, khả năng điều khiển mô men, tốc độ với độ chính xác cao, hiệu suất tốt,
giảm chi phí vận hành, đáp ứng được yêu cầu về mô men điều khiển, điện áp,
tốc độ, hiệu suất, độ chính xác, độ ổn định và độ cứng đặc tính cơ cho HTB
điện cơ [13], [40], [41], [45]
Tóm tắt nội dung tài liệu: Luận án Nghiên cứu tổng hợpđiều khiểnhệ thống truyền động bám cho các đối tượng chuyển động chậm
BỘ GIÁO DỤC ĐÀO TẠO BỘ QUỐC PHÒNG
HỌC VIỆN KỸ THUẬT QUÂN SỰ
TRẦN ĐỨC CHUYỂN
NGHIÊN CỨU TỔNG HỢP ĐIỀU KHIỂN HỆ THỐNG TRUYỀN ĐỘNG BÁM
CHO CÁC ĐỐI TƯỢNG CHUYỂN ĐỘNG CHẬM
LUẬN ÁN TIẾN SỸ KỸ THUẬT
HÀ NỘI - NĂM 2016
BỘ GIÁO DỤC ĐÀO TẠO BỘ QUỐC PHÒNG
HỌC VIỆN KỸ THUẬT QUÂN SỰ
TRẦN ĐỨC CHUYỂN
NGHIÊN CỨU TỔNG HỢP ĐIỀU KHIỂN HỆ THỐNG TRUYỀN ĐỘNG BÁM
CHO CÁC ĐỐI TƯỢNG CHUYỂN ĐỘNG CHẬM
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. PGS. TS ĐÀO HOA VIỆT
2. TS NGUYỄN THANH TIÊN
HÀ NỘI - NĂM 2016
i
LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của tôi dưới sự hướng dẫn
của PGS. TS Đào Hoa Việt và TS. Nguyễn Thanh Tiên. Các số liệu, kết quả
nêu trong luận án là trung thực và chưa từng được ai công bố trong bất kỳ
công trình nào.
Tác giả
Trần Đức Chuyển
ii
LỜI CẢM ƠN
Trước hết, tôi xin bày tỏ lòng biết ơn chân thành đến thầy giáo hướng
dẫn khoa học, PGS.TS Đào Hoa Việt và TS Nguyễn Thanh Tiên, đã hướng
dẫn, vạch ra những nội dung cần giải quyết, sau đó kiểm tra kết quả nghiên
cứu, giúp đỡ và khuyến khích tôi hoàn thành luận án này.
Tôi cũng xin chân thành cảm ơn các nhà khoa học và tập thể cán bộ giáo
viên Bộ môn Kỹ thuật điện / Khoa Kỹ thuật điều khiển đã quan tâm đóng góp
ý kiến giúp tôi hoàn thiện nội dung nghiên cứu.
Tôi chân thành cảm ơn các đồng nghiệp trong Khoa Điện / Trường ĐH
Kinh tế Kỹ thuật Công nghiệp / Bộ Công Thương, đã tạo điều kiện giúp đỡ về
mặt khối lượng công việc để tôi có thời gian tập trung thực hiện luận án.
Cuối cùng, tôi xin chân thành cảm ơn gia đình, bạn bè và đồng nghiệp đã
luôn thông cảm, động viên, khuyến khích giúp tôi có thêm nghị lực để hoàn
thành nội dung luận án.
iii
MỤC LỤC
Trang
LỜI CAM ĐOAN ........................................................................................... i
LỜI CẢM ƠN ................................................................................................ ii
MỤC LỤC .................................................................................................... iii
DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU..................................... vi
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ ........................................................ xi
MỞ ĐẦU ....................................................................................................... 1
Chương 1. TỔNG QUAN VỀ HỆ THỐNG TRUYỀN ĐỘNG BÁM LÀM
VIỆC Ở CHẾ ĐỘ CHẬM .............................................................................. 5
1.1. Khái quát về một số hệ thống truyền động bám cho các đối tượng có chế
độ chuyển động chậm..................................................................................... 5
1.1.1. Khái quát chung về hệ truyền động bám ......................................... 5
1.1.2. Chế độ chậm trong một số hệ thống truyền động bám phức tạp ..... 6
1.2. Xây dựng mô hình hệ truyền động bám làm việc ở chế độ chậm ............. 9
1.2.1. Xây dựng mô hình phần cơ hệ thống truyền động........................... 9
1.2.2. Mô hình động học đối tượng điều khiển phi tuyến với động cơ chấp
hành xoay chiều đồng bộ kích từ nam châm vĩnh cửu .................................. 19
1.3. Mô hình hệ truyền động bám làm việc ở chế độ chậm và những yếu tố
ảnh hưởng .................................................................................................... 21
1.4. Những nghiên cứu trong nước và ngoài nước ........................................ 27
1.5. Đặt vấn đề nghiên cứu ........................................................................... 30
1.6. Kết luận chương ................................................................................... 32
Chương 2. CƠ SỞ TỔNG HỢP ĐIỀU KHIỂN BACKSTEPPING TRƯỢT
THÍCH NGHI CHO HỆ THỐNG TRUYỀN ĐỘNG BÁM PHI TUYẾN.. .. 34
2.1. Xây dựng phương pháp tổng hợp bộ quan sát trượt mô men cản ........... 34
2.1.1. Phương pháp Backstepping trượt (Backstepping - Sliding mode) .... 34
iv
2.1.2. Tổng hợp bộ quan sát trượt ............................................................ 38
2.1.3. Bộ quan sát trạng thái trong chế độ trượt đánh giá thành phần không
xác định........................................................................................................ 43
2.2. Phương pháp Backstepping trượt thích nghi cho hệ thống bám phi tuyến.. 45
2.3. Kết luận chương ................................................................................... 61
Chương 3. NGHIÊN CỨU TỔNG HỢP BỘ ĐIỀU KHIỂN HỆ THỐNG
BÁM PHI TUYẾN ĐỘNG CƠ IPMSM LÀM VIỆC Ở CHẾ ĐỘ CHẬM ... 63
3.1. Tổng hợp vòng điều khiển tốc độ backstepping trượt thích nghi cho hệ
truyền động bám làm việc ở chế độ chậm sử dụng động cơ IPMSM ............ 63
3.1.1. Xây dựng thuật toán tổng hợp điều khiển backstepping trượt thích
nghi cho vòng điều khiển tốc độ................................................................... 64
3.1.2. Thiết kế bộ quan sát mô men cản.................................................. 71
3.2. Xây dựng hệ kín cho hệ thống bám theo vòng vị trí sử dụng động cơ
IPMSM trên cơ sở bộ điều khiển backstepping trượt thích nghi ................... 73
3.3. Kết luận chương ................................................................................... 78
Chương 4. MÔ PHỎNG VÀ THỰC NGHIỆM ĐÁNH GIÁ CHẤT LƯỢNG
ĐIỀU KHIỂN BACKSTEPPING TRƯỢT THÍCH NGHI HỆ THỐNG
TRUYỀN ĐỘNG BÁM LÀM VIỆC Ở CHẾ ĐỘ CHẬM............................ 79
4.1. Mô phỏng hệ thống truyền động bám phi tuyến với BĐK tốc độ trên cơ
sở phương pháp backstepping trượt thích nghi sử dụng động cơ IPMSM .... 80
4.2. Mô phỏng hệ thống truyền động bám phi tuyến với BĐK vị trí trên cơ sở
phương pháp backstepping trượt thích nghi sử dụng động cơ IPMSM ......... 90
4.2.1. Nghiên cứu mô phỏng hệ thống truyền động bám vị trí trên cơ sở
phương pháp backstepping trượt thích nghi với bộ điều khiển PI ................. 90
4.2.2. Nghiên cứu mô phỏng hệ thống truyền động bám vị trí trên cơ sở
phương pháp backstepping trượt thích nghi với bộ điều khiển PID ........... 100
4.3. Khảo xát đánh giá trên mô hình thực nghiệm với động cơ IPMSM ..... 104
v
4.3.1. Xây dựng mô hình thực nghiệm.................................................. 104
4.3.2. Các kết quả thực nghiệm............................................................. 106
4.4. Kết luận chương ................................................................................. 110
KẾT LUẬN CHUNG................................................................................. 111
DANH MỤC CÔNG TRÌNH CỦA TÁC GIẢ .......................................... 114
TÀI LIỆU THAM KHẢO .......................................................................... 116
PHỤ LỤC .................................................................................................. 127
Phụ lục 1: Nghiên cứu mô phỏng, phân tích ảnh hưởng yếu tố phi tuyến và
thông số biến thiên đến sự làm việc của HTB ở chế độ chậm với bộ điều
khiển kinh điển PID.................................................................................... 127
Phụ lục 2: Các sơ đồ mô phỏng trong Matlab - Simulink ........................... 130
Phụ lục 3: Các tham số mô phỏng và code chương trình lập trình trong Matlab
Simulink cho BĐK backstepping trượt thích nghi ...................................... 135
Phụ lục 4: Code chương trình lập trình cho DSP TMS320F28069.............. 137
vi
DANH MỤC CÁC CHỮ VIẾT TẮT VÀ CÁC KÝ HIỆU
1. Chữ viết tắt Ý Nghĩa
TĐĐ Truyền động điện
HTB Hệ thống truyền động bám
CNC Computer Numerical Control: Máy gia công CNC
BLDC Brusless DC motor: động cơ một chiều không chổi than
IPMSM Interior Permanent Magnet Synchronous Motor: Động cơ đồng
bộ kích từ nam châm vĩnh cửu (có Ld khác Lq)
HTĐK Hệ thống điều khiển
LabVIEW Laboratory Virtual Instrusment Engineering Workbench
DAQ Data Acqusition: phần cứng thu thập dữ liệu và điều khiển
NI National Instrument
VSC Variable Structure Control: bộ điều khiển có cấu trúc biến đổi
SVM Space vector modulation: mô hình không gian véc tơ
DSP digital signal processing: bộ xử lý tín hiệu số
DLL Dynamic Link Library: Thư viện liên kết động
P Bộ điểu khiển tỷ lệ
PI Bộ điểu khiển tỷ lệ, tích phân
PD Bộ điểu khiển tỷ lệ, đạo hàm
PID Bộ điểu khiển tỷ lệ, tích phân và đạo hàm
DI đạo hàm và tích phân
PWM Bộ điều chế độ rộng xung
PC Personal computer: máy tính cá nhân
PLD Programmable Logic Devices: Vi mạch logic lập trình được
ASIC Application Specific Intergrated Circuits: các mạch tích hợp
ứng dụng riêng
vii
Osc Oscilloscope: máy hiện sóng
KĐCS Khuếch đại công suất
QTQĐ Quá trình quá độ
LF Hàm Lyapunov (Lyapunov Function)
CLF Hàm điều khiển Lyapunov (Control Lyapunov Function)
ĐTTSLG Đặc tính tần số logarit
BĐK Bộ điều khiển
2. Ký hiệu Ý nghĩa
; ;
;
L dh
dc c
M M
M M
Mô men tải, mô men đàn hồi, mô men động cơ, mô men cản [Nm]
( )BM t Mô men nhiễu [Nm]
1
W ( )s Hàm truyền đạt của khối lượng thứ nhất
2
W ( )s Hàm truyền đạt của khối lượng thứ hai
1
( )A Đặc tính biên độ tần số pha
J1 Mô men quán tính của truyền động chấp hành [kgm2]
J2 Mô men quán tính còn lại của đối tượng bộ truyền cơ và tải [kgm2]
J Mô men quán tính tổng cộng [kgm2]
C Hệ số đàn hồi [Nm/rad]
hdF Lực đàn hồi [N]
n Tốc độ (vòng/phút)
1 và 2 Vận tốc góc của động cơ và vận tốc góc trên tải [rad/s]
'
1 ;... ' ';n j Véc tơ hồi quy
;d r Góc [rad]
sgn; sign Hàm dấu
q Biến dạng góc
viii
S Biến dạng dài
i Hàm phi tuyến
,s rL L Điện cảm stato và rô to [H]
,d qL L Điện kháng trục-d, điện kháng trục-q của động cơ điện [H]
,s rR R Điện trở stato và rô to động cơ điện [ ]
,sd sqi i Dòng điện tọa độ trục d, dòng điện trục q [A]
,sd squ u Các thành phần của véc tơ điện áp stato trên hệ trục tọa độ dq
m Từ thông liên kết
, Các độ khuếch đại thích nghi
i Tỷ số truyền hộp đổi tốc
Tham số hằng chưa biết
BL Góc độ rộng khe hở [rad], (backlash angle).
F Thành phần ước tính xấp xỉ bằng luật thích nghi
i Sai số đánh giá
ry Tín hiệu tham số chuẩn [rad]
,i j Hàm hiệu chỉnh
iz Sai số hiệu chỉnh
X Véc tơ trạng thái của hệ thống
Y Véc tơ đầu ra của hệ thống
A Ma trận hệ thống
B Ma trận đầu vào
V Hàm Lyapunov
iV Hàm Lyapunov thứ i
ix Trạng thái thứ i của hệ thống điều khiển
, ,ic Các hằng số dương
ix
i Điều khiển ảo
i Đại lượng hiệu chỉnh bộ quan sát
i Sai số bộ quan sát
Ma trận có kích cỡ thích hợp
Q Ma trận đối xứng
R Tập các số thực
R+ Tập các số thực dương
C Tập các số phức
T Hằng số thời gian của một khâu
T Hằng số thời gian của cả vòng điều chỉnh tốc độ
3. Chỉ số trên Ý nghĩa
0 Độ
1T Chuyển vị
Đánh giá
4. Chỉ số dưới Ý nghĩa
i Số nguyên
dh Đàn hồi
xn Xoắn
dc Động cơ
max Cực đại
min Cực tiểu
Tổng
,d dat Đặt trước
ms; masat Ma sát
sd;sq tọa độ trục d, tọa độ trục q
x
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
STT Tên hình vẽ, đồ thị Trang
1 Hình 1.1. Sơ đồ khối HTB pháo AK230 trên tàu hải quân 7
2 Hình 1.2. Mô hình động học pháo tàu với mục tiêu di động
(máy bay)
8
3 Hình 1.3. Sơ đồ động học thể hiện mối quan hệ các phần tử
trong phần cơ
9
4 Hình 1.4. Mô hình hai khối lượng có liên hệ đàn hồi 10
5 Hinh 1.5. Sơ đồ cấu trúc hệ thống hai khối lượng có liên hệ
đàn hồi
11
6 Hình 1.6 a, b. Biến đổi sơ đồ cấu trúc từ hình 1.5 11
7 Hình 1.7. Sơ đồ cấu trúc phần cơ hệ truyền động 13
8 Hình 1.8 a), b). Kết quả khảo sát mô phỏng ĐTTSLG của hệ
thống 2 khối lượng có liên hệ đàn hồi trên Matlab - Simulink
14
9 Hình 1.9. Mô hình mô men ma sát phụ thuộc vào tốc độ 18
10 Hình 1.10. Mô hình điều khiển động cơ IPMSM 19
11 Hình 1.11. Sơ đồ khối hệ thống truyền động bám vị trí 21
12 Hình 1.12. a), b) Đặc tính mô men cản của HTB làm việc ở
chế độ chậm
22
13 Hình 2.1. Sơ đồ cấu trúc bộ quan sát trên cơ sở các bước quan
sát
41
14 Hình 2.2. Sơ đồ bộ quan sát trên cơ sở phương pháp phân
chia chuyển động
42
15 Hình 2.3. Sơ đồ khối hệ thống Backstepping trượt thích nghi 45
16 Hình 2.4. Hệ thống có dạng phản hồi thuần túy 46
17 Hình 3.1. Hệ thống tính toán bộ điều khiển backstepping trượt 70
xi
thích nghi
18 Hình 3.2. Sơ đồ khối bộ quan sát mô men tải 71
19 Hình 3.3. Sơ đồ khối cấu trúc hệ thống bám 72
20 Hình 3.4. Sơ đồ khối hệ thống truyền động bám điện cơ làm
việc ở chế độ chậm sử dụng động cơ IPMSM
73
21 Hình 3.5. a), b) Biến đổi sơ đồ cấu trúc bộ điều khiển vị trí 75
22 Hình 4.1. Sơ đồ mô phỏng sự phụ thuộc của mô men ma sát
vào tốc độ
79
23 Hình 4.2. Đặc tính mô men ma sát theo tốc độ 80
24 Hình 4.3. Mô hình mô phỏng bộ điều khiển backstepping
trượt thích nghi hệ truyền động phi tuyến có kể đến phần cơ
của cơ cấu công tác
81
25 Hình 4.4. Mô hình mô phỏng bộ điều khiển backstepping
trượt thích nghi hệ truyền động phi tuyến trên Matlab-
Simulink
81
26 Hình 4.5. a) Tốc độ đặt d và tốc độ thực của động cơ, b)
tốc độ đặt d và tốc độ thực của cơ cấu công tác trường
hợp 1
82
27 Hình 4.6. a) sai số bám sát theo tốc độ và b) ˆ;L LM M ở trường
hợp 1
82
28 Hình 4.7. Đáp ứng dòng điện: a) isq, b) isd ở trường hợp 1 83
29 Hình 4.8. a) Tốc độ đặt d và tốc độ thực của động cơ, b)
mô men đặt LM và mô men ước lượng ˆ LM trường hợp 2
83
30 Hình 4.9. Sai số bám sát theo tốc độ trường hợp 2 84
31 Hình 4.10. Đáp ứng dòng điện: a) isq, b) isd trường hợp 2 84
32 Hình 4.11. a) Tốc độ đặt d và tốc độ thực của động cơ, b) 85
xii
mô men đặt LM và mô men ước lượng ˆ LM trường hợp 3
33 Hình 4.12. Sai số bám sát theo tốc độ trường hợp 3 85
34 Hình 4.13. Đáp ứng dòng điện: a) isq, b) isd trường hợp 3 86
35 Hình 4.14. a) Tốc độ đặt d và tốc độ thực của động cơ, b)
mô men đặt LM và mô men ước lượng ˆ LM trường hợp 4
86
36 Hình 4.15. Sai số bám sát theo tốc độ trường hợp 4 86
37 Hình 4.16. Đáp ứng dòng điện: a) isq, b) isd trường hợp 4 87
38 Hình 4.17. a) Tốc độ đặt d và tốc độ thực của động cơ, b)
mô men đặt LM và mô men ước lượng ˆ LM trường hợp 5
87
39 Hình 4.18. Sai số bám sát theo tốc độ trường hợp 5 88
40 Hình 4.19. Đáp ứng dòng điện: a) isq, b) isd trường hợp 5 88
41 Hình 4.20. Sơ đồ mô phỏng hệ truyền động bám phi tuyến với
BĐK vị trí có tính đến yếu tố phi tuyến mô men ma sát và đàn
hồi sử dụng khâu PI
89
42 Hình 4.21. Sơ đồ mô phỏng thực nghiệm nhận dạng khâu bậc
hai
90
43 Hình 4.22. Xây dựng đặc tính vào ra theo tốc độ 90
44 Hình 4.23. Đáp ứng vào ra BĐK vị trí: a) theo góc, b) bộ
quan sát mô men tải ˆ;L LM M trường hợp 1
92
45 Hình 4.24. Sai số bám sát theo góc trường hợp 1 93
46 Hình 4.25. Thành phần dòng điện BĐK vị trí: a) isd, b) isq
trong trường hợp 1
93
47 Hình 4.26. Đáp ứng vào ra BĐK vị trí: a) theo góc, b) bộ
quan sát mô men tải ˆ;L LM M trường hợp 2
94
48 Hình 4.27. Sai số bám sát theo gó ... }}');
legend('\it\color{black} d_1','\it\color{red} d_1','Location',[.80 .45
0.07 0.02],'Orientation','Vertical');
set(legend, 'Box', 'off');
subplot(125);
plot(t,iqs-0.1,'LineWidth',2.5);
grid on;
set(gca,'Fontname','Arial','Fontsize',20,'LineWidth',3,'FontWeight','bold
');
axis([0.4 0.8 -2 3]);
xlabel('Time(sec)');
ylabel('{i_{qs}}(A)');
%ylabel('{i_{a}}(A)');
subplot(126);
plot(t,idsd,'k:',t,ids,'r','lineWidth',2.5);
grid on;
%plot(t,ids,'r-',t,iqs,'k:','lineWidth',2.5);
set(gca,'Fontname','Arial','Fontsize',20,'LineWidth',3,'FontWeight','bold
');
{i_{d}}','Color','r','FontWeight','bold','Fontsize',20);
% text(0.5,-5, 'Dashed :
{i_{dsd}}','Color','b','FontWeight','bold','Fontsize',20);
axis([0.4 0.8 -3 3]);
%axis([0 1 -20 3]);
xlabel('Time(sec)');
ylabel('i_{ds}(A)');
legend('\it\color{black} i_{dsd}','\it\color{red} i_{ds}','Location',[.80
.25 0.07 0.02],'Orientation','Vertical');
set(legend, 'Box', 'off');
3.3. Chương trình lập trình code trên S_funtion:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [sys,x0,str,ts] = sch_chuongtrinh(t,x,u,flag)
switch flag
case 0,
[sys,x0,str,ts] = mdlInitializeSizes;
case 3,
sys = mdlOutputs(t,x,u);
case {1,2,4,9}
sys = [];
otherwise
error(['unhandled flag = ',num2str(flag)]);
end
sizes.NumInputs = 2;% vsq,vsd
137
sizes.NumSampleTimes = 1; sys = simsizes(sizes);
x0 = [];% Khoi tao bien trang thai
str = [];
ts = [-1 0];
function sys = mdlOutputs(t,x,u)
Vdc = 110;
va = 2*Vdc/3;
vb = va;
ts = 1/5e3;
a = abs(u(1))+abs(u(2))/sqrt(3);
b = abs(u(1))-abs(u(2))/sqrt(3);
c = 2*abs(u(2))/sqrt(3);
% for case us_alpha <0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if u(2) <0
if u(1)<0
if b <0
s = 5; vr = a;
vl = -b;
:
s = 4; vr = b;
vl = c;
end
else
if b < 0
s = 5;
vr = -b; vl = a;
else
s = 6;
vr = c;
vl = b;
end
end
else
if u(1) <0
if b<0
s = 2;
vr = -b; vl = a;
else
s = 3;
vr = c;
vl = b;
end
else
if b<0
s = 2;
vr = a;
vl = -b;
else
s = 1;
vr = b;
vl = c;
end
end
138
end
ta = vr*ts/va;
tb = vl*ts/vb;
t0 = ts-ta-tb;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if t0 <0
ta = ta*ts/(tb+ta);
tb = tb*ts/(tb+ta);
t0 = 0;
end
y = [ta;tb;t0;s];
sys = y;
end
end
end
Phụ lục 4: Code chương trình lập trình cho DSP TMS320F28069
4.1. Chương trình code phần PWM
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*
PwmSv.cc
*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "Inc.h"
#define DC_VOLT 310
#define DC_EFF DC_VOLT * 0.606 * 0.7
#define PHASE_0 0
#define PHASE_120 2.094
#define PHASE_240 4.189
#define BASE_FREQ 2
#define PI 3.141592
#define STEP_ANGLE (BASE_FREQ * 2 * PI) / (PWM_FREQ * xx00)
Float fSinA,fSinB,fSinC;
Float fTmpData, fTmp;
Float fStepAngle;
139
_iq qStepAngle;
_iq qThetaA;
_iq qThetaB;
_iq qThetaC;
_iq qVan;
_iq qVbn;
_iq qVcn;
Float fVan,fVbn,fVcn;
Float fTa,fTb,fTc;
Float fFreq,fVdc;
pwmSvInfoType pwmSvInfo;
void pwmSvInit(void)
{
pwmSvInfo.fVm = DC_VOLT;
pwmSvInfo.fVdcEff = DC_EFF;
pwmSvInfo.fThetaA = PHASE_0;
pwmSvInfo.fThetaB = PHASE_120;
pwmSvInfo.fThetaC = PHASE_240;
qThetaA = _IQ(PHASE_0);
qThetaB = _IQ(PHASE_120);
qThetaC = _IQ(PHASE_240);
}
void pwmSvUpdate(pwmSvInfoType *p)
140
{
fFreq = _IQtoF(p->Freq);
fVdc = _IQtoF(p->Vdc);
qStepAngle = _IQmpy(_IQ(STEP_ANGLE),p->Freq);
if(qThetaA >= _IQ(2*PI))
qThetaA = 0;
else
qThetaA += qStepAngle;
if(qThetaB >= _IQ(2*PI))
qThetaB = 0;
else
qThetaB += qStepAngle;
if(qThetaC >= _IQ(2*PI))
qThetaC = 0;
else
qThetaC += qStepAngle;
fSinA = _IQtoF(_IQsin(qThetaA));
fSinB = _IQtoF(_IQsin(qThetaB));
fSinC = _IQtoF(_IQsin(qThetaC));
p->fVan = (_IQtoF(p->Vdc) * p->fVm) * _IQtoF(_IQsin(qThetaA));
p->fVbn = (_IQtoF(p->Vdc) * p->fVm) * _IQtoF(_IQsin(qThetaB));
p->fVcn = (_IQtoF(p->Vdc) * p->fVm) * _IQtoF(_IQsin(qThetaC));
qVan = _IQmpy(_IQmpy(p->Vdc,_IQ(p->fVm)),_IQsin(qThetaA));
qVbn = _IQmpy(_IQmpy(p->Vdc,_IQ(p->fVm)),_IQsin(qThetaB));
141
qVcn = _IQmpy(_IQmpy(p->Vdc,_IQ(p->fVm)),_IQsin(qThetaC));
fVan = _IQtoF(qVan);
fVbn = _IQtoF(qVbn);
fVcn = _IQtoF(qVcn);
if(p->fVan >= p->fVbn) {
p->fVmax = p->fVan;
p->fVmin = p->fVbn;
}
else {
p->fVmax = p->fVbn;
p->fVmin = p->fVan;
}
if(p->fVcn > p->fVmax) p->fVmax = p->fVcn;
else if(p->fVcn fVmin) p->fVmin = p->fVcn;
#if SET
fTmpData = p->fVmax - p->fVmin;
if(fTmpData > p->fVdcEff) {
fTmp = p->fVdcEff / fTmpData;
p->fVmax = p->fVmax * fTmp;
p->fVmin = p->fVmin * fTmp;
p->fVan = p->fVan * fTmp;
p->fVbn = p->fVbn * fTmp;
p->fVcn = p->fVcn * fTmp;
}
142
p->fVsn = -((p->fVmax + p->fVmin) * 0.5);
p->fVan_ref = p->fVan + p->fVsn;
p->fVbn_ref = p->fVbn + p->fVsn;
p->fVcn_ref = p->fVcn + p->fVsn;
p->fTa = 0.5 - (p->fVan_ref / p->fVm);
p->fTb = 0.5 - (p->fVbn_ref / p->fVm);
p->fTc = 0.5 - (p->fVcn_ref / p->fVm);
fTa = 0.5 - (p->fVan_ref / p->fVm);
fTb = 0.5 - (p->fVbn_ref / p->fVm);
fTc = 0.5 - (p->fVcn_ref / p->fVm);
}
End of PwmSv.c
..
4.2. Chương trình code phần chuyển đổi tọa độ alpha beta sang dq
===============================================================
File name: C.Cs (IQ version)
Originator: Digital Control Systems Group
Alphascription: chuyen Transformation
===============================================================
History:
-------------------------------------------------------------------------------------
04-15-2014 Version 3.20
-------------------------------------------------------------------------------------
#include "IQmathLib.h" Include header for IQmath library
Don't forget to set a proper GLOBAL_Q in "IQmathLib.h" file
#include "park.h"
void park_calc(PARK *v)
{
143
_iq Cosine,Sine;
Using look-up IQ sine table
Sine = _IQsinPU(v->Angle);
Cosine = _IQcosPU(v->Angle);
v->Qs = _IQmpy(v->Alpha,Cosine) + _IQmpy(v->Beta,Sine);
v->Ds = _IQmpy(v->Alpha,Sine) - _IQmpy(v->Beta,Cosine);
if (v->Ds > _IQ(0.5)) v->Ds = _IQmpy(v->Ds,_IQ(0.01));
if (v->Ds Ds = _IQmpy(v->Ds,_IQ(-0.01));
}
.......
4.3. Code chương trình tính toán đầu ra
/********************************************************************
* Outputs calculation
*
*********************************************************************
********************************************************************/
//Constant
gamma1 = 0.067;
gamma2 = 0.01;
gamma3 = 0.01;
muyd = 268 ; //muyd > 0
muyq = 126;
etad = 0.01;
etaq = 0.01;
kq = 30;
//Main calculation
F1Estimated = F1Estimated + (- gamma1*(sq*M1 + sd))*Tsamp;
F2Estimated = F2Estimated + (- gamma2*sq*M2)*Tsamp;
F3Estimated = F3Estimated + - gamma3*(k1 - M3)*sq;
idd_k = -lam_mo/(2*(Ldo - Lqo)) - sqrt(lam_mo^2/(4*(Ldo - Lqo)^2) +
iq^2)
idd_dev = (idd_k - idd_kminus1)/Tsamp;
Omegad_devdev = (Omegad_k - 2*Omegad_kminus1 +
Omegad_kminus2)/Tsamp^2;
Omegad_dev = (Omegad_k - Omegad_kminus1)/Tsamp;
vd = Ldo*(idd_dev - f1o - F1Estimated + Ksd*e2_k +
etad*sd/(Absolute(sd) + muyd));
144
vq = (Lqo/M2)*(k1*Omegad_dev - k1*(f3o + F3) + Omegad_devdev -
M1*(f1o + vd/Ldo0) - M2*f2o + M3*f3o - M1*F1Estimated -M2*F2Estimated
+ M3*F3Estimated - k1*F3Estimated + kq*sq +
etaq*sq/(Absolute(sq)+muyq)) //trang 78 - delta unknown
..
//For next Loop
idd_kminus1 = idd_k;
Omegad_kminus1 = Omegad_k;
Omegad_kminus2 = Omegad_kminus1;
///////////////////////////////////////////////////////
// Additional Functions
//
//
double Sign(double inVar){
double outVar;
if (inVar > 0) outVar = 1;
if (inVar < 0) outVar = -1;
if (inVar == 0) outVar = 0;
return outVar;
}
double Absolute(double inVar){
double outVar;
if (inVar > 0) outVar = inVar;
if (inVar < 0) outVar = -inVar;
if (inVar == 0) outVar = 0;
return outVar;
}
........
4.4. Chuong trình lập trình tính toán tốc độ phản hồi từ cảm biến góc
TI File $Revision: /main/9 $
Chuyn $Date: April 21, 2014 15:42:23 $
########################################################################
FILE: DSP_posspeed.c
TITLE: Pos/speed measurement using EQEP peripheral
DESCRIPTION:
This file includes the EQEP initialization and position and speed caculation
functions called by DSP_28xxxEqep_posspeed.c. The position and
speed calculation steps performed by POSSPEED_Calc() at SYSCLKOUT = 150 MHz
and 100 MHz are described in detail below:
145
For 150 MHz Operation:
---------------------------------------------------------------------------------------------------
1. This program calculates: **theta_mech**
theta_mech = QPOSCNT/mech_Scaler = QPOSCNT/xx00, where xx00 is the number of
counts in 1 revolution.(xx00/4 = xx00 line/rev. quadrature encoder)
2. This program calculates: **theta_elec**
theta_elec = (# pole pairs) * theta_mech = 2*QPOSCNT/xx00 for this example
3. This program calculates: **SpeedRpm_fr**
SpeedRpm_fr = [(x2-x1)/xx00]/T - Equation 1
Note (x2-x1) = difference in number of QPOSCNT counts. Dividing (x2-x1) by
100 gives position relative to Index in one revolution.
If base RPM = xx00 rpm: xx00 rpm = [(x2-x1)/xx00]/10ms - Equation 2
= [(x2-x1)/xx00]/(.01s*1 min/60 sec)
= [(x2-x1)/xx00]/(1/xx00) min
max (x2-x1) = xx00 counts, or 1 revolution in 10 ms
If both sides of Equation 2 are divided by xx00 rpm, then:
1 = [(x2-x1)/xx00] rev./[(1/xx00) min * xx00rpm]
Because (x2-x1) must be <xx00 (max) for
QPOSCNT increment,
(x2-x1)/xx00 < 1 for CW rotation
And because (x2-x1) must be >-xx00 for QPOSCNT decrement,
(x2-x1)/xx00>-1 for CCW rotation
speed_fr = [(x2-x1)/xx00]/[(1/xx00) min * xx00rpm]
= (x2-x1)/xx00 - Equation 3
146
To convert speed_fr to RPM, multiply Equation 3 by xx00 rpm
SpeedRpm_fr = xx00rpm *(x2-x1)/xx00 - Final Equation
:
.
4. **min rpm ** = selected at 10 rpm based on CCPS prescaler options available (128 is
greatest)
5. **SpeedRpm_pr**
SpeedRpm_pr = X/(t2-t1) - Equation 4
where X = QCAPCTL [UPPS]/xx00 rev. (position relative to Index in 1 revolution)
If max/base speed = xx00 rpm: xx00 = (32/xx00)/[(t2-t1)/(150MHz/128)]
where 32 = QCAPCTL [UPPS] (Unit timeout - once every 32 edges)
32/xx00 = position in 1 revolution (position as a fraction of 1 revolution)
t2-t1/(150MHz/128), t2-t1= # of QCAPCLK cycles, and
1 QCAPCLK cycle = 1/(150MHz/128)
= QCPRDLAT
So: xx00 rpm = [32(150MHz/128)*60s/min]/[xx00(t2-t1)]
t2-t1 = [32(150MHz/128)*60 s/min]/(xx00*xx00rpm) - Equation 5
= 94 CAPCLK cycles = maximum (t2-t1) = SpeedScaler
Divide both sides by (t2-t1), and:
1 = 94/(t2-t1) = [32(150MHz/128)*60 s/min]/(xx00*xx00rpm)]/(t2-t1)
Because (t2-t1) must be < 94 for QPOSCNT increment:
94/(t2-t1) < 1 for CW rotation
And because (t2-t1) must be >-94 for QPOSCNT decrement:
94/(t2-t1)> -1 for CCW rotation
speed_pr = 94/(t2-t1)
or [32(150MHz/128)*60 s/min]/(xx00*xx00rpm)]/(t2-t1) - Equation 6
147
To convert speed_pr to RPM:
Multiply Equation 6 by xx00rpm:
SpeedRpm_fr = xx00rpm * [32(150MHz/128)*60 s/min]/[xx00*xx00rpm*(t2-t1)]
= [32(150MHz/128)*60
s/min]/[xx00*(t2-t1)]
or [(32/xx00)rev * 60 s/min]/[(t2-t1)(QCPRDLAT)]- Final Equation
For 100 MHz Operation:
----------------------
The same calculations as above are performed, but with 100 MHz
instead of 150MHz when calculating SpeedRpm_pr.
The value for freqScaler_pr becomes: [32*(100MHz/128)*60s/min]/(xx00*xx00rpm) = 63
More detailed calculation results can be found in the Example_freqcal.xls
spreadsheet included in the example folder.
This file contains source for the posspeed module
########################################################################
Original Author: SDchuye
$TI Release: DSP320F28xxx/DSP320F28xxx C/C++ .
$Release Date: August 4, 2014 $
########################################################################
#include "DSP28x_Project.h" Device Headerfile and Examples Include File
#include "Example_posspeed.h" Example specific Include file
void POSSPEED_Init(void)
{
#if (CPU_FRQ_150MHZ)
EQep2Regs.QUPRD=1500xxx;
Unit Timer for 100Hz at 150 MHz SYSCLKOUT
#endif
#if (CPU_FRQ_100MHZ)
EQep2Regs.QUPRD=1000xxx; Unit Timer for 100Hz at 100 MHz SYSCLKOUT
#endif
EQep2Regs.QDECCTL.bit.QSRC=00; QEP quadrature count mode
EQep2Regs.QEPCTL.bit.FREE_SOFT=2;
EQep2Regs.QEPCTL.bit.PCRM=00; PCRM=00 mode - QPOSCNT reset on index
148
event
EQep2Regs.QEPCTL.bit.UTE=1; Unit Timeout Enable
EQep2Regs.QEPCTL.bit.QCLM=1; Latch on unit time out
EQep2Regs.QPOSMAX=0x2710;
EQep2Regs.QEPCTL.bit.QPEN=1; QEP enable
EQep2Regs.QCAPCTL.bit.UPPS=7; 1/4 for unit position
EQep2Regs.QCAPCTL.bit.CCPS=5; 1/16 for CAP clock
EQep2Regs.QCAPCTL.bit.CEN=1; QEP Capture Enable
}
void POSSPEED_Calc(POSSPEED *p)
{
long tmp;
unsigned int pos16bval; ,temp1; _iq Tmp1,newp,oldp;
**** Position calculation - mechanical and electrical motor angle ****
p->DirectionQep = EQep2Regs.QEPSTS.bit.QDF; Motor direction: 0=CCW/reverse,
1=CW/forward
pos16bval=(unsigned int)EQep2Regs.QPOSCNT; capture position once per QA/QB
period
p->theta_raw = pos16bval+ p->cal_angle;
raw theta = current pos. + ang. offset from QA
The following lines calculate p->theta_mech ~= QPOSCNT/mech_scaler [current cnt/(total
cnt
in 1 rev.)]
where mech_scaler = 4000 cnts/revolution
tmp = (long)((long)p->theta_raw*(long)p->mech_scaler); Q0*Q26 = Q26
tmp &= 0x03FFF000;
p->theta_mech = (int)(tmp>>11); Q26 -> Q15
p->theta_mech &= 0x7FFF;
The following lines calculate p->elec_mech
p->theta_elec = p->pole_pairs*p->theta_mech; // Q0*Q15 = Q15
p->theta_elec &= 0x7FFF;
Check an index occurrence
if (EQep2Regs.QFLG.bit.IEL == 1)
{
p->index_sync_flag = 0x00F0;
EQep2Regs.QCLR.bit.IEL=1; // Clear interrupt flag
:
.
..
File đính kèm:
luan_an_nghien_cuu_tong_hopdieu_khienhe_thong_truyen_dong_ba.pdf

