Giải phương trình, bất phương trình 21

Một phần của tài liệu Điều khiển mô hình con lắc ngược đôi bằng phương pháp LQG (Trang 38)

Dùng lệnh: solve(eqn, var)

Trong đó: eqn là phương trình hoặc bất phương trình ẩn x. Để giải phương trình đệ quy ta dùng lệnh rsolve.

2.1.7.9 Giải hệ phương trình, hệ bất phương trình

Dùng lệnh: solve(f1, f2)

Với f1 và f2 là các phương trình.

Giải gần đúng: phương trình hoặc bất phương trình ta dùng lệnh: fsolve( eqns, vars, options ); eqns là phương trình hoặc hệ phương trình.

vars là tập hợp ẩn.

options là tham số điều khiển lời giải như: complex, a..b, …

2.1.7.10 Định nghĩa hàm số mới

Ngoài các hàm số đã được định nghĩa sẵn, Maple cung cấp cho người sử dụng công cụ để tạo them các hàm số mới theo cú pháp sau:

Tên Hàm Số: = (DanhSáchBiến) -> Công Thức Hàm Số; Hàm đệ quy:

If Điều Kiện then Công thức 1 else CôngThức2 fi; hoặc

If Điều Kiện 1 then Công thức 1 elseif Điều Kiện 2 then Công Thức 2 else Công Thức 3 fi;

Trong đó các từ in đậm là từ khóa bắt buộc phải có.

2.1.7.11 Đạo hàm cấp 1

2.1.7.12 Đạo hàm cấp n

Đạo hàm cấp 2: diff(f(x), x, x); hay diff(f(x), x$2) Đạo hàm cấp n: diff(f(x), x$n);

2.1.7.13 Tích phân

Câu lệnh:

int(expr, x) : Tích phân bất định.

int(expr, x=a..b, ...) : Tích phân xác định. Int(expr, x) : Ký hiệu tích phân bất định.

Int(expr, x=a..b, ...) : Ký hiệu tích phân xác định. Trong đó:

expr – một biểu thức đại số. x – tên biến tích phân. a, b – cận tích phân. ... – tùy chọn.

2.1.7.14 Tích phân bội

Để tính tích phân kép, trước tiên ta dùng lệnh: with(student) để mở tiện ích student cho phép dùng các lệnh sau :

Doubleint(g, x, y);

Doubleint(g, x=a..b, y=c..d); Doubleint(g, x, y, Domain); Trong đó:

g: biểu thức cần tích phân.

x, y: biến tích phân và chú ý đến thứ tự biến lấy tích phân. Domain: tên miền tích phân.

2.1.7.15 Tích phân bội ba

Tương tự tích phân kép chỉ khác dùng lệnh: Tripleint(g, x, y, z);

Tripleint(g, x, y, z, Domain);

2.1.7.16 Tổng riêng – chuỗi số

sum(f,k); Tính tổng của f(k) theo công thức g(k) thỏa: g(k+1)-g(k)=f(k) mọi k. sum(f,k=m..n); Tính tổng: f(m) + f(m+1) + ... + f(n)

sum(f,k=alpha); Tính tổng biểu thức f(k) với k = alpha là nghiệm của đa thức, thường dùng lệnh RootOf.

2.1.7.17 Chuỗi taylor

series(expr, eqn) series(expr, eqn, n) trong đó:

expr – một biểu thức hay hàm theo x cần khai triển thành chuỗi. eqn – tên biến x hoặc phương trình dạng x=a để khai triển tại 0 hay a.

n – (tùy chọn) là số nguyên không âm n, khai triển đến cấp n, giá trị ngầm định n=6. 2.1.7.18 Tạo ma trận Câu lệnh: matrix(L) matrix(m, n) matrix(m, n, L) matrix(m, n, f) trong đó: m, n - số nguyên dương chỉ số hàng và số cột. L - Danh sách hoặc vectơ

f - một hàm số dùng để tạo các phần tử của ma trận.

2.1.7.19 Ma trận chuyển vị

transpose(M); Với M là ma trận.

2.1.7.20 Định thức Câu lệnh: det(M); 2.1.7.21 Hạng ma trận Câu lệnh: rank(M); 2.2 Phần mềm Labview 2.2.1 LabVIEW là gì?

LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench) là một phần mềm máy tính được phát triển bởi National Instruments. LabVIEW dùng trong hầu hết các phòng thí nghiệm, lĩnh vực khoa học kỹ thuật như tự động hóa, điều khiển, điện tử, cơ điện tử, hàng không, hóa sinh, điện tử y sinh ở các nước đặc biệt là Mỹ, Hàn quốc, Nhật Bản [5].

Ngôn ngữ lưu đồ đồ họa của LabVIEW hấp dẫn các kỹ sư và nhà khoa học trên toàn thế giới như một phương pháp trực giác hơn trong việc tự động hóa các hệ thống đo lường và điều khiển. Ngôn ngữ lưu đồ kết hợp với I/O gắn liền và điều khiển giao diện người sử dụng tương tác cùng đèn chỉ báo làm cho LabVIEW trở thành một sự lựa chọn lý tưởng cho kĩ sư và nhà khoa học [5].

2.2.2 Khả năng điều khiển và giao tiếp với thiết bị ngoại vi

LabVIEW đã tích hợp nhiều công cụ và tính năng hơn giúp kỹ sư điều khiển tự động dễ dàng thực hiện các bài toán về điều khiển. Cho phép thực hiện các thuật toán điều khiển như PID, Logic mờ (Fuzzy), một cách nhanh chóng thông qua các chức năng tích hợp sẵn trong LabVIEW. Cho phép kết hợp với nhiều ngôn ngữ truyền thống như C, C++ [5].

Giao tiếp với các thiết bị ngoại vi thông qua nhiều chuẩn giao tiếp thông qua các cổng giao tiếp: RS232, RS485, USB, PCI, Enthernet [5].

2.2.3 Tổng quan về phần mềm LabView 2.2.3.1 Front Panel 2.2.3.1 Front Panel

Front panel là một panel tương tự như panel của thiết bị thực tế. Ví dụ các nút bấm, nút bật, các đồ thị và các bộ điều khiển. Từ Front Panel người dùng chạy và quan sát kết quả có thể dùng chuột, bàn phím để đưa dữ liệu vào sau đó cho chương trình chạy và quan sát. Front Panel thường gồm các bộ điều khiển (Control) và các bộ hiển thị (Indicator) [5].

Control là các đối tượng được đặt trên Front Panel để cung cấp dữ liệu cho chương

trình. Nó tương tự như đầu vào cung cấp dữ liệu. Indicator là đối tượng được đặt trên Front Panel dùng để hiện thị kết quả, nó tương tự như bộ phận đầu ra của chương trình [5].

2.2.3.2 Block Diagram

Block diagram của một VI là một sơ đồ được xây dựng trong môi trường LabVIEW, nó có thể gồm nhiều đối tượng và các hàm khác nhau để tạo các cấu trúc lệnh để chương trình thực hiện. Block Diagram là một mã nguồn đồ họa của một VI. Các đối tượng trên Front Panel được thể hiện bằng các thiết bị đầu cuối trên Block Diagram, không thể loại bỏ các thiết bị đầu cuối trên Block Diagram. Các thiết bị đầu cuối chỉ mất đi sau khi loại bỏ đối tượng tương ứng trên Front panel [5].

Cấu trúc của một Block Diagram gồm các thiết bị đầu cuối (Terminal), nút (Node) và các dây nối (wire) [5].

Khác với những ngôn ngữ lập trình khác, ngôn ngữ lập trình LabVIEW ngoài những menu quen thuộc giống như những ngôn ngữ khác. LabVIEW còn sử dụng các bảng: Tools Palette, Controls Palette, Function Palette, chính những bảng này làm cho LabVIEW khác với các ngôn ngữ sử dụng những câu lệnh rườm rà khó nhớ. Các bảng đó cung cấp các chức năng để người sử dụng có thể tạo và thay đổi trên Front Panel và Block Diagram bằng các biểu tượng, các hình ảnh trực quan giúp cho việc sử dụng trở nên dễ dàng, linh động hơn [5].

2.2.3.3 Tool palette

Tool Panel xuất hiện trên cả Font Panel và Block Diagram. Bảng này cho phép người sử dụng có thể xác lập các chế độ làm việc đặc biệt của con trỏ chuột. Khi lựa

chọn một công cụ, biểu tượng của con trỏ sẽ được thay đổi theo biểu tượng của công cụ đó. Nếu thiết lập chế độ tự động lựa chọn công cụ và người sử dụng di chuyển con trỏ qua các đối tượng trên Front Panel hoặc Block Diagram, LabVIEW sẽ tự động lựa chọn công cụ phù hợp trên bảng Tool Palette [5].

Hình 2.10 Cửa sổ block diagram

2.2.3.4 Controls Palette (bảng điều khiển)

Bảng điều khiển chỉ duy nhất xuất hiện trên Front panel. Bảng điều khiển chứa các bộ điều khiển (control) và các bộ hiển thị (Indicator). Bảng điều khiển đầy đủ được minh họa như hình bên đưới. Để mở bảng controls palette ta vào menu View, chọn controls palette [5].

Bảng điều khiển được sử dụng để người sử dụng thiết kế cấu trúc mặt hiển thị gồm các thiết bị ví dụ: các công tắc, các loại đèn, các loại màn hình hiển thị… Với bảng điều khiển này, người sử dụng có thể chọn các bộ thiết bị chuẩn do hãng sản xuất cung cấp ví dụ công tắc nhưng cũng có thể chọn các thiết bị do người sử dụng tự xây dựng. Bảng điều khiển dùng để cung cấp dữ liệu đầu vào và hiển thị kết quả đầu ra [5].

Trên bảng controls palette thể hiện khá phong phú các bộ điều khiển khác nhau như trên hình.

2.2.3.5 Function palette

Bảng Functions Palette chỉ xuất hiện trên Block Diagram. Bảng này chứa các VI và các hàm mà người sử dụng thiết kế để tạo dựng nên các khối lưu đồ. Với bảng Function Palette, người lập trình thực hiện các lệnh khác nhau bằng các lưu đồ như: các phép tính số học, các biểu thức toán học, các vòng lặp, phép lựa chọn thông qua các nhóm hàm, chức năng đã được cung cấp bên cạnh đó bảng này có thể tạo ra và sử dụng lại các hàm, chức năng mà người sử dụng tự xây dựng. Các hàm toán học được minh họa thông qua các biểu tượng. Khi muốn lựa chọn thực hiện một hàm nào đó thì người sử dụng chọn biểu tượng thể hiện cho hàm đó và có thể kéo thả ở bất kỳ vị trí nào trên Block Diagram sau đó xác định những đầu vào và đầu ra cần thiết [5].

Hình 2.12 Controls Palette

Hình 2.13 Function palette

2.2.3.6 Các phép toán cơ bản

Cộng, Trừ, Nhân, Chia, Cộng 1, Trừ 1, Bình phương, Đảo dấu, Hàm Random, Dịch bit, ….

2.2.3.7 Các phép so sánh

So sánh hơn, so sánh bằng, bằng 0, khác 0, lấy số dư….

2.2.3.8 Các phép logic

And, or, xor, not, true, false…

2.2.3.9 Các hàm toán học phức tạp

Lũy thừa, Logarit, hàm lượng giác, hàm với các ma trận, hàm nội suy, hàm tối ưu...

2.2.3.10 Các hàm về mảng

Trong việc lập trình đôi khi chúng ta cần xử lý một số các dãy số mà mỗi phần tử trong đó có thể được xử lý như từng thành phần riêng biệt, vì vậy mà ta cần tới mảng. Các mảng ở đây có thể là mảng một chiều (một cột hoặc một véc tơ), mảng 2 chiều, mảng 3 chiều.

Array Max & Min: Hàm này có chức năng tìm kiếm số lớn nhất và số nhỏ nhất của các số trong mảng. Hàm này thường trả về kết quả để hiển thị.

Build array: Hàm này xây dựng mảng hoặc phần từ mảng.

Index array: Hàm này trả về một phần tử hoặc phân đoạn của mảng. Array subset: Trả về một mảng theo yêu cầu.

Array Size: Tìm kích thước mảng.

Delete From Array: Xóa phần tử trong mảng. Insert Into Array: Chèn phần tử trong mảng.

2.2.3.11 Thời gian thực thi vòng lặp và các hàm Delay

Để có thể thiết lập thời gian thực thi cho các vòng lặp này một cách gần đúng, ta sử dụng các hàm Delay.

Hàm Wait thực hiện phép Delay thời gian cho trước sau khi thực hiện các tác vụ trong hàm While, còn hàm Wait Until ms Multiple cố định thời gian thực hiện

các tác vụ trong hàm While với khoảng thời gian định trước, bất kể các tác vụ trong hàm là gì [5].

2.2.3.12 Các cấu trúc điều khiển luồng chương trình

Trong bất cứ ngôn ngữ lập trình nào, ta cũng hay thường gặp và làm việc với các phần tử điều khiển luồng chương trình, đó là các cấu trúc (Structures). Các cấu trúc điều khiển luồng chương trình trong một VI có 5 cấu trúc là: For Loop, While Loop, Case Structure, Sequence Structure và Fomula Node.

Các cấu trúc đó thực hiện tự động khi dữ liệu đầu vào của chúng có sẵn và thực hiện các công việc theo ý muốn cho tới khi hoàn thành thì mới cung cấp dữ liệu tới các dây nối dữ liệu đầu ra. Tuy nhiên, mỗi cấu trúc thực hiện theo các quy tắc riêng (Sub Diagram) của nó.

SubDiagram là tập hợp của các Node, Wire và Terminal bên trong đường viền của Structure. Mỗi cấu trúc For Loop và While loop có một SubDiagram.

Cấu trúc Case và Sequence có thể có nhiều SubDiagram, nhưng chỉ có một SubDiagram có thể thực hiện tại một thời điểm. Cách xây dựng các SubDiagram cũng giống như việc xây dựng các Block diagram mức đầu.

Việc truyền dữ liệu vào và ra các Structure thông qua các Terminal mà được tự động tạo ra ở nơi dây nối đi qua đường viền của cấu trúc, các Terminal này được gọi là các đường ống (Tunel) [5].

2.3 Tìm phương trình trạng thái bằng Maple 2.3.1 Hệ phương trình trạng thái 2.3.1 Hệ phương trình trạng thái

Các phương trình không gian trạng thái tuyến tính là

x Ax Bu

y Cx Du

Trong đó x là trạng thái, u là đầu vào điều khiển, A, B, C và D là ma trận không gian trạng thái. Đối với hệ thống con lắc ngược đôi, trạng thái và đầu ra được xác định [9]

x = [  α   α  ] Và

y = [ x x x ]

Thay vì sử dụng cơ học cổ điển, phương pháp Lagrange được sử dụng để tìm các phương trình chuyển động của hệ thống. Phương pháp hệ thống này thường được sử dụng cho các hệ thống phức tạp hơn như các bộ điều khiển robot có nhiều khớp [9].

Cụ thể hơn, các phương trình mô tả chuyển động của cánh tay quay và con lắc ngược đôi liên quan đến điện áp động cơ servo, tức là động lực học, sẽ được lấy bằng cách sử dụng phương trình Euler-Lagrange [9]:

 -  = Q

Các biến qi được gọi là tọa độ tổng quát. Đối với hệ thống này là: q t = [ (t) α(t) (t) ]

Vận tốc tương ứng là

q t == [    ]

Chú thích: Quy ước dấu chấm cho đạo hàm thời gian sẽđược sử dụng trong toàn

bộ tài liệu này, ví dụ: = d/dt. Biến thời gian t cũng sẽđược loại bỏ từ, α và , tức là,

= (t), α = α(t), = (t).

Với các tọa độ tổng quát được xác định, các phương trình Euler-Lagrange cho hệ thống con lắc ngược đôi là :

 -   = Q

 -  = Q

 -  = Q

L = T – V

Trong đó T là tổng động năng của hệ và V là tổng thế năng của hệ. Do đó, Lagrangian là sự khác biệt giữa động năng và thế năng của một hệ thống.

Các lực tổng quát Q được sử dụng để mô tả các lực không bảo toàn (ví dụ: ma sát) được áp dụng cho một hệ thống đối với các tọa độ tổng quát. Trong trường hợp này, lực tổng quát tác dụng lên cánh tay quay là:

Q =  - D 

Và tác dụng lên con lắc dưới và trên cùng là Q = - D α

Q = - D 

Mô-men xoắn được áp dụng tại đế của tay quay (tức là, tại bánh răng tải) được tạo ra bởi động cơ servo như được mô tả bởi phương trình:

 =   

Biến điều khiển là điện áp động cơ servo đầu vào . Đối lập với mô-men xoắn ứng dụng là mô-men ma sát nhớt, hoặc giảm xóc nhớt. Vì con lắc không được kích hoạt, lực duy nhất tác dụng lên liên kết là giảm xóc. Hệ số giảm độ nhớt của các con lắc dưới và trên được ký hiệu là D và D [9].

Để giải bài toán ta cần tìm các ma trận chuyển đổi sau: T_0_1, T_1_2, T_1_h, T_h_3 T_0_2 = T_0_1 * T_1_2 T_0_h= T_0_1 * T_1_h T_0_3= T_0_h * T_h_3 Vị trí cartesian: x T_0_1 1,4 y T_0_1 2,4 T_0_1 3,4 Tại

x T_0_2 1,4 y T_0_2 2,4 z T_0_2 3,4 Tại x T_0_h 1,4 y T_0_h 2,4 z T_0_h 3,4 Tại X T_0_3 1,4 y T_0_3 2,4 z T_0_3 3,4 Tại Đạo hàm vị trí: ( 1, 1, 1), ( 2, 2, 2 ), ( h, h, h ), ( 3, 3, 3) Tính tổng thế năng: V = 0 : tại O1 V = m g z : tại O2 V = m g z : tại Oh V = m g z : tại O3 V= V + V + V + V Tính tổng động năng:

Tr1 = Jr : Động năng chuyển động quay tại O1 Tt1 = 0 : Động năng chuyển động thẳng tại O1 Tr2 = 0 : tại O2 Tt2 = mp1[ ( 2)2 + ( 2)2 + ( 2)2 ] : tại O2 Trh = 0 : tại Oh Tth = mh[ ( h)2 + ( h)2 + ( h)2 ] : tại Oh Tr3 = 0 : tại O3 Tt3 = mp2[ ( 3)2 + ( 3)2 + ( 3)2 ] : tại O3  T = Tr1 + Tt1 + Tr2 + Tt2 + Trh + Tth + Tt3 + Tr3 Dùng maple để tính tổng động năng, thế năng của hệ.

Sau khi tuyến tính hóa các phương trình chuyển động phi tuyến, giải các thuật ngữ gia tốc, tức là , α , và thay thế trạng thái đã cho, chúng ta có được các ma trận không gian trạng thái(xem thêm chương trình tạo các ma trận không gian trạng thái ở phụ lục).

2.4 Ứng dụng Labview vào nghiên cứu

Tính toán mô hình không gian trạng thái thực từ phương trình trạng thái được tính bởi Maple.

Mô phỏng mô hình không gian trạng thái thực, quan sát các cực trên mặt phẳng phức. Mô phỏng mô hình không gian trạng thái thực với ma trận điều khiển K (được tính bởi phương pháp điều khiển LQR), quan sát độ ổn định của hệ thống.

CHƯƠNG 3 : NGHIÊN CỨU MÔ HÌNH

3.1 Mô hình không gian trạng thái thực

Sau khi tìm được mô hình không gian trạng thái dưới dạng các biến phương trình, ta có thể nhập các ma trận A, B, C, D vào các phần mềm để tính toán như maple, matlab, labview…Ở đây người dùng sử dụng labview để tính toán các ma trận A, B, C, D.

Một phần của tài liệu Điều khiển mô hình con lắc ngược đôi bằng phương pháp LQG (Trang 38)

Tải bản đầy đủ (PDF)

(93 trang)