II. Trình tự thực hiện một q trình mơ phỏng
1. Xây dựng cấu trúc mô phỏng: Sơ đồ khối
- Như chúng ta đã biết, q trình tích phân là cốt lõi của quá trình mơ phỏng, và các khối tích phân hình thành cơ sở trung tâm của sơ đồ khối. Chính vì vậy việc xây dựng các sơ đồ khối bắt đầu bằng việc đưa vào số lượng chính xác các khối tích phân và sử dụng thư viện các khối để xây dựng các phương trình cân bằng. Cách thức nối kết các khối trong sơ đồ tổng thể và từ đó q trình mơ phỏng có thể thay đổi tuỳ thuộc vào phần mềm được chọn.
2. Xác lập giá trị các thơng số của mơ hình
- Ngay sau khi mơ hình được xây dựng xong,
giá trị của các thông số được xác lập. Trong SIMULINK, điều này được thực hiện bằng cách
nháy đúp chuột vào biểu tượng khối và điền các thơng số thích hợp vào hộp thoại được hiện ra. Một phương án khác là chúng ta có thể nhập tên biến, và các biến này sẽ được xác lập trong môi trường của MATLAB trước khi mô phỏng. Biện pháp này hết sức hiệu quả đặc biệt trong việc nghiên cứu sự thay đổi các thông số. -Trong một số hệ phức tạp, thơng số của mơ hình phân tích có thể phụ thuộc vào thời gian hoặc giá trị của biến trạng thái, khi đó chúng ta phải viết các m-file hoặc s-file để mơ tả sự biến đổi đó, sau đó sử dụng khối Matlab function để gọi các chương trình con này vào chương trình mơ phỏng.
3. Xác lập các điều kiện đầu
- Việc xác lập điều kiện đầu cũng hoàn toàn giống như việc xác lập các thơng số của sơ đồ khối, có nghĩa là chúng ta sẽ nhãy đúp chuột vào khối tương ứng và nhập vào giá trị điều kiện đầu (hoặc tên biến trong mơi trường MATLAB ) vào mục thích hợp trong hộp thoại hiện ra. - Trong một số trường hợp, hoạt động của hệ thống được chia ra nhiều pha, mỗi pha lại có một điều kiện đầu khác nhau (ví dụ như bài tốn va chạm). Trong trường hợp này thay cho việc đưa điều kiện đầu vào trong các khối tích phân, chúng ta đưa điều kiện đầu vào khối từ bên ngồi
4. Các kích động đưa vào hệ thống
- Trong các phần trước chúng ta đã biết, cấu trúc mô phỏng được định nghĩa bằng sơ đồ khối, giá trị các thông số của mơ hình và điều kiện đầu. Ba thành phần này bao hàm số lượng tối thiểu các thông tin cần thiết để thực thi q trình mơ phỏng. Do vậy nếu các thơng số đầu vào từ bên ngồi khơng được định nghĩa, q trình mơ phỏng sẽ chỉ đưa ra có thành phần tự do hoặc thuần nhất của nghiệm
- Simulink và các phần mềm khác cung cấp một thư viện hết sức đa dạng các kiểu kích thích từ bên ngồi. Các tín hiệu vào đơn giản như: kích
động hình sin, các sóng răng cưa, sóng chữ nhật được định nghĩa trong các thư viện khối. Các kích động khác như xung chữ nhật, có thể tạo ra bằng cách sử dụng 2 khối tín hiệu bước và 1 khối nối tổng. Khối tín hiệu bước thứ nhất xác định vị trí bắt đầu của xung, khối tín hiệu bước thứ 2 xác lập vị trí kết thúc của xung và cộng vào bước thứ nhất sau khi nhân với -1 - Cuối cùng các kích động đầu vào phức tạp cũng có thể được tạo ra từ các dữ liệu lưu trữ trong môi trường MATLAB. Điều này cho phép chúng ta sử dụng tín hiệu đầu vào từ những kết quả tính tốn từ một chương trình khác.
5. Lựa chọn cách thức xuất kết quả
- Công dụng cơ bản của việc sử dụng mơ phỏng máy tính là nghiên cứu phản ứng của hệ thống với các tín hiệu kích động và các điều kiện đầu. quá trình này được ngầm hiểu là việc tìm ra một hoặc nhiều biến hệ thống thơng qua kết quả của q trình mơ phỏng. Các phần mềm mơ phỏng cung cấp nhiều phương thức kiểm tra các kết quả của q trình mơ phỏng (màn hình, lưu trữ biến trong mơi trường làm việc, tệp dữ liệu...)
6. Điểu khiển việc thực thi quá trình mơ phỏng.
- Trong q trình mơ phỏng, sau khi xây dựng được sơ đồ mô phỏng một nhiệm vụ hết sức quan trọng của người dùng là xác lập các thông số điều khiển. Thực tế hầu hết các phần mềm mô phỏng đều cung cấp một bộ các thông số điều khiển cách thức mà phần mềm mơ phỏng giải phương trình vi phân, nếu chúng ta khơng có lựa chọn gì khác, máy sẽ chọn bộ thơng số mặc định cịn nếu như chúng ta nắm vững được bản chất và ý nghĩa của các thông số này, chúng ta có thể điều khiển các chương trình mơ phỏng thực thi theo mục đích cụ thể của mình - Đối với phần lớn các ứng dụng, 5 thông số sau sẽ điều khiển việc thực thi q trình mơ phỏng: a) Thời gian mô phỏng:
- Thời gian mô phỏng thường được xác lập bằng các trị số: thời điểm bắt đầu (start time) và thời điểm kết thúc (stop time). Thời điểm bắt đầu là thời điểm xác lập các điều kiện đầu trong các khối tích phân mặc định có giấ trị bằng 0. - Chú ý : thời gian mô phỏng là thời gian làm việc thực tế của hệ thống không phải là thời gian cần thiết để chạy chương trình mơ phỏng. ví dụ như thời gian mô phỏng đặt là 10 s, tuy nhiên để chạy chương trình mơ phỏng có thể mất một vài giờ.
b) Thuật tốn tích phân (thuật giải)
- Trong các chương trình mơ phỏng người ta sử dụng rất nhiều thuật giải khác nhau để giải các dạng hệ phương trình vi phân khác nhau. Một thuật giải này có thể rất hiệu quả đối với dạng phương trình này nhưng lại không thể dùng được đối với các loại phương trình khác. Để đảm bảo được độ chính xác của kết quả và tốn ít thời gian chạy máy nhất chúng ta cần phải chọn được thuật giải hợp lý nhất.
- Chúng ta có thể chọn thuật giải với bước thời gian cố định và bước thời gian thay đổi. Các thuật giải với bước thời gian thay đổi có thể biến đổi giá trị của bước thời gian trong q trình mơ phỏng, cung cấp khả năng điều khiển sai số cũng như kiểm tra việc cắt qua điểm 0 của nghiệm tìm được. Ngược lại thuật giải với bước tích phân cố định khơng thể điều khiển sai số cũng như kiểm tra việc cắt điểm 0 của nghiệm. Phần dưới đây chúng ta sẽ giới thiệu các thuật giải được dùng trong SIMULINK. Các thuật giải này cũng sẽ được dùng trong các chương trình mơ phỏng khác (có thể dưới tên gọi khác đi một chút)
Thuật giải mặc định:
- Trong Simulink nếu người dùng không chọn thuật giải, thuật giải mặc định sẽ được sử dụng tuỳ thuộc vào loại mơ hình đang phân tích: - Nếu mơ hình phân tích ở trạng thái liên tục, thuật giải ODE45 được sử dụng. ODE45 là
thuật giải đa chức năng tuy nhiên nếu hệ thống phân tích là hệ cứng và thuật giải này khơng cho được kết quả có thể chấp nhận, hãy thử dùng thuật giải ODE15S.
- Nếu mơ hình phân tích khơng ở trạng thái liên tục, SIMULINK sẽ sử dụng thuật giải với bước tích phân thay đổi có tên là "thuật rời rạc" (discrete) và hiển thị lời nhắc chỉ ra rằng thuật giải ODE45 không được sử dụng.
Các thuật giải với bước tích phân thay đổi: Trong SIMULINK chúng ta có thể lựa chọn nhiều thuật giải với bước tích phân thay đổi như: ODE45, ODE23, ODE113, ODE15S, ODE23S và thuật giải "discrete":
ODE45 là thuật giải dựa trên công thức Runge-Kuta bậc bốn, năm. Đó là thuật giải một bước: để tính ra y(tn) chỉ cần có giá trị nghiệm tại một thời điểm trước đó y( tn−1 ). Nói chung ODE45 là thuật giải được sử dụng nhiều nhất và được áp dụng như là phép thử đầu tiên khi chúng ta chưa chọn được thuật giải phù hợp. ODE23 cũng dựa trên cơ sở công thức Runge- Kuta(2,3). Thuật giải này có thể hiệu quả hơn thuật giải ODE45 với độ chính xác khơng yêu cầu cao và đối với hệ cứng trung bình. ODE23 cũng là thuật giải một bước.
ODE113 là thuật giải Adams-Bashforth-Moulton với bậc thay đổi. Nó có thể hiệu quả hơn thuật ODE45 ở độ chính xác tương đối cao. ODE113 là thuật giải nhiều bước có nghĩa là để xác định giá trị nghiệm ở một thời điểm cần có giá trị nghiệm tại nhiều thời điểm trước đó.
ODE15S là thuật giải dựa trên cơng thức đạo hàm số có bậc thay đổi (NDFs). Đây là công thức tương tự như công thức đạo hàm lùi (BDFs) - được biết đến với tên gọi "phương pháp Gear" nhưng hiệu quả hơn nhiều. Tương tự như thuật giải ODE113, thuật ODE15S cũng là thuật giải nhiều bước. Đối với các hệ thống "cứng", khi mà thuật giải ODE45 không sử dụng
được, hoặc sử dụng kém hiệu quả, hãy thử sử dụng ODE15S.
ODE23S được xây dựng trên cơ sở công thức Rosenbrock bậc 2, và đây là thuật giải một bước, nên nó có thể hiệu quả hơn giải thuật ODE15S khi mà u cầu về độ chính xác khơng cao. Thuật giải này cũng được dùng ở một vài hệ cứng khi mà thuật giải ODE15S tỏ ra không hiệu quả.
Ode23t áp dụng quy tắc hình thang với phép nội suy "tự do". Chúng ta sử dụng thuật giải này chỉ đối với các hệ thông tương đối cứng. Ode23tb sử dụng công thức Runge-Kuta ẩn (TR-BDF2) với giai đoạn đầu sử dụng quy tắc hình thang và giai đoạn hai sử dụng Công thức vi phân lùi bậc hai. Về cấu trúc cả hai bước đều sử dụng cùng một ma trận lặp. Cũng giống như thuật giải Ode23s, thuật giải này cũng hiệu quả hơn Ode15s khi yêu cầu về độ chính xác khơng cao.
Phương pháp rời rạc "Discrete" được sử dụng khi Simulink xác định được hệ thống ở trạng thái không liên tục.
Các thuật giải với bước cố định
Ode5 là phiên bản với bước cố định của thuật giải Ode45
Ode4 sử dụng công thức Runge - Kuta bậc 4 Ode3 là phiên bản với bước cố định của thuật giải Ode23
Ode2 sử dụng cơng thức tích phân của Heun, được biết đến như là công thức Euler cải tiến.
c) Độ lớn của bước tích phân
- Đối với các thuật giải với bước thay đổi chúng ta có thể lựa chọn giá trị lớn nhất của bước tích phân hoặc giá trị gợi ý của bước tích phân đầu tiên. Mặc định các thơng số này được xác lập một cách tự động
- Đối với các thuật giải với bước cố định chúng ta có thể xác lập chiều dài bước tích phân. Mặc định là giá trị Auto.
Giá trị lớn nhất của bước tích phân:
- Giá trị mặc định được xác định theo giá trị của thời gian bắt đầu và kết thúc quá trình mơ phỏng hmax=tstop−tstart
50 Thông thường giá trị mặc định này phù hợp với phần lớn các trường hợp. Trừ khi người dùng xác định được rằng giá trị này có thể gây ra sai lệch về hình dạng kết quả chúng ta có thể xác lập lại giá trị mới
- Nếu hệ phân tích có ứng xử biến đổi theo chu kỳ hoặc gần theo chu kỳ, chúng ta có thể xác lập giá trị lớn nhất của bước tích phân theo giá trị của chu kỳ (ví dụ =1/4 chu kỳ).
Để thay đổi số lượng điểm xuất chọn điều khiển kết quả xuất ra khác (ví dụ như SIMULINK sử dụng tham số "Refine Output"
Độ lớn bước tích phân khởi tạo (Initial step size)
- Độ lớn của bước khởi tạo thông thường được các thuật giải tự xác định trên cơ sở kiểm tra trạng thái đạo hàm tại thời điểm bắt đầu phân tích. Nếu giá trị bước khởi tạo được người dùng xác lập, máy sẽ thử sử dụng giá trị này nhưng sẽ sử dụng bước nhỏ hơn nếu độ chính xác khơng đảm bảo.
Bước thời gian bé nhất
- Thông số này xác lập giới hạn dưới của bước thời gian sử dụng cho thuật toán bước thời gian tự thích nghi, nó được xác lập bởi người dùng trên cở sở của hàng loạt các nhân tố kể cả hiệu quả tính tốn. Người sử dụng cần phải chờ thời gian dài để kết thúc q trình mơ phỏng nếu như xác lập bước thời gian quá bé. d) Sai số:
- Các thuật giải nói chung đều sử dụng kỹ thuật điều khiển lỗi cục bộ chuẩn để kiểm sốt lỗi tại mỗi bước tính. Trong mỗi bước tính, các thuật
giải sẽ tính ra các giá trị của biến trạng thái tại điểm cuối mỗi bước và đồng thời xác định sai số cục bộ để ước lượng sai số của các biến trạng thái này. Sau đó sẽ so sánh giá trị sai số này với sai số cho phép (là hàm số của thông số rtol- sai số tương đối và abstol - sai số tuyệt đối). Nếu giá trị sai số ước lượng lớn hơn giá trị cho phép, máy sẽ giảm giá trị bước tính và lặp lại q trình ở trên.
Sai số tương đối:
- Xác định giá trị sai số một cách tương đối so với giá trị của biến trạng thái tại mỗi điểm tích phân. Giá trị của nó bằng tỷ số của giá trị sai số tuyệt đối và giá trị của biến trạng thái tương ứng tại điểm xét. Trong SIMULINK mặc định sai số tương đối được chọn là 0.001
Sai số tuyệt đối:
- Là giá trị ngưỡng của sai số, chỉ ra giá trị sai số cho phép khi giá trị của biến trạng thái tiến dần tới không. Trong SIMULINK, nếu chúng ta sử dụng chế độ lựa chọn sai số mặc định, giá trị sai số tuyệt đối sẽ là 10-6 .
e) Các tuỳ chọn xuất kết quả
- Các tuỳ chọn xuất kết quả điều khiển lượng dữ liệu (số điểm) sẽ được chương trình mơ phỏng đưa ra. Trong SIMULINK chúng ta có các tuỳ chọn xuất kết quả sau đây:
Refine Output (chế độ xuất dữ liệu mịn) Produce additional Output (xuất thêm dữ liệu ở các điểm bổ sung)
Produce specified Output only (xuất dữ liệu chỉ tại những điểm yêu cầu)
Refine Output :
- Sẽ làm mịn dữ liệu xuất ra bằng cách thêm vào các dữ liệu kết quả trung gian khi mà dữ liệu đưa ra bởi SIMULINK quá thô. Tuỳ chọn này sẽ cho phép người dùng nhập vào một số nguyên chỉ ra số điểm trung gian cần thêm vào giữa 2 mốc tích phân kề nhau.
- Để nhận được kết quả xuất ra mịn hơn chúng ta nên thay đổi hệ số độ mịn (refine factor) thay cho việc chia nhỏ bước tích phân. Với việc thay
đổi hệ số độ mịn, chúng ta không làm tăng thời gian chạy máy vì việc thay đổi này khơng ảnh hưởng tới độ lớn của bước tích phân. - Việc thay đổi độ mịn của dữ liệu xuất ra đặc biệt thích hợp và hiệu quả khi chúng ta sử dụng thuật giải ODE45 vì thuật giải này có khả năng đưa ra các bước tích phân khá lớn và như vậy nếu đưa các kết quả tích phân ra ngồi màn hình ở dạng đồ thị, chúng ta có thể nhận được hình dạng sai khác nhiều so với thực tế.
Produce additional Output:
- Lựa chọn này sẽ cho phép người dùng chỉ định chính xác các điểm trung gian cần lấy kết quả. Khi lựa chọn chế độ này, Simulink sẽ đưa ra véc tơ thời gian mà tại đó nó sẽ xuất kết quả ra. Người dùng cần phải nhập vào một biểu thức của Matlab để đưa ra các điểm thời gian bổ sung. Các kết quả bổ sung sẽ được tạo ra bằng cách sử dụng một công thức mở rộng tại các thời điểm bổ sung. Khác với việc thay đổi hệ số độ mịn, tuỳ chọn này sẽ thay đổi chiều dài bước tích phân cho phù hợp với véc tơ thời gian được bổ sung.
Produce specified Output only:
- Tuỳ chọn này sẽ yêu cầu Simulink xuất ra dữ liệu kết quả chỉ tại các thời điểm chỉ định. Nó sẽ làm thay đổi độ lớn của bước tích phân cho phù hợp với véc tơ thời gian yêu cầu. Tuỳ chọn này được dùng chủ yếu khi chúng ta cần phải so sánh các kết quả mô phỏng khác nhau để đảm bảo rằng dữ liệu xuất ra giữa các lần mô