Simulink của MATLAB là vô song về khả năng mô phỏng các hệ thống phi tuyến tính phức tạp. Nó cung cấp trải nghiệm đơn giản để thiết kế các mô hình động như thường thấy với Thiết kế hệ thống điều khiển và người máy
Tuy nhiên, Simulink tụt lại phía sau về khả năng cung cấp hỗ trợ rộng rãi cho các Khung học tập sâu và do đó dẫn đến sự phức tạp khi thiết kế Bộ điều khiển thông minh cho Mô hình Simulink
Python là vô song về khả năng hỗ trợ cho Deep Learning Frameworks và các công cụ tính toán số nhưng không thể mô hình hóa các hệ thống phi tuyến tính phức tạp
Chúng ta không thể sử dụng đồng bộ cả Python và Simulink để tận dụng lợi ích của từng công cụ này nhằm giảm thiểu những thách thức do công cụ kia đưa ra sao?
Trong bài viết này, chúng ta sẽ xem xét việc thiết lập giao tiếp giữa MATLAB và Python và từ đó thiết kế Bộ điều khiển PI đơn giản bằng Python cho Mô hình trong Simulink
điều kiện tiên quyết- MATLAB v2013 trở lên [Tác giả đã sử dụng 2018b]
- Python v3. 6
Làm theo hướng dẫn trên liên kết https. //Trong. toán học. com/help/matlab/matlab_external/install-the-matlab-engine-for-python. html để cài đặt Matlab Engine API cho Python cho hệ điều hành của bạn. Đó là nó
Mô hình SimulinkTrong Simulink, tạo mô hình lựa chọn mong muốn trong Simulink và đặt một khối không đổi ở mỗi nơi bạn muốn thực thi hành động kiểm soát từ Python. Trong trường hợp này, một hằng số có tên 'u' với giá trị ban đầu là 0 đã được thêm vào như một hành động điều khiển cho mô hình. Các biến mà Python cần để nhìn thấy phải được gửi đến Không gian làm việc thông qua Khối 'Tới Không gian làm việc'
trong đó Tmp là dấu thời gian của mỗi lần tạm dừng
Tmp=get_param[bdroot,'SimulationTime']
Khối xác nhận chứa các hướng dẫn sau
set_param[bdroot,'SimulationCommand','pause']
Bằng cách này, quá trình mô phỏng tạm dừng sau mỗi bước, tôi. e. [clockTime-Tmp]=thời gianBước
Bây giờ, tôi tạo một tập lệnh Python khởi động mô phỏng [xem câu trả lời được chấp nhận] và lặp lại như thế này
Chạy thử phần mềm trong vòng lặp với Simulink trở nên tính thời gian với chi phí Matlab & Simulink. Có nhiều cách để giảm nó [Tham khảo mô hình, v. v. ] tuy nhiên không có gì nhanh bằng thư viện chia sẻ được biên dịch trước
Python có một bộ công cụ và gói rất hoàn hảo để kiểm tra tự động
Thử nghiệm có thể được phân phối cho các máy không có giấy phép Matlab/Simulink
Ngày càng có nhiều nhà phát triển Python. Có thể chuyển giao thư viện Simulink để sử dụng thêm, có một tính năng tốt
Trường hợp sử dụng
- Sử dụng Python và hệ thống sinh thái của nó để chạy các mô hình Simulink phức tạp
- Sử dụng Python &
pytest
để chạy thử nghiệm Phần mềm trong vòng lặp [SIL] trên các hệ thống con Simulink - Tặng thuật toán Simulink cho nhà phát triển không có bản quyền sử dụng Matlab/Simulink
- Sử dụng các hành động GitHub/GitLab và Python để kiểm tra tự động trên đám mây
- Bắt đầu cuộc chiến lập trình ngôn ngữ lập trình tại công ty của bạn
từ chối trách nhiệm
Kho lưu trữ này là một tập hợp các hướng dẫn, với các ví dụ, về cách tạo trình bao bọc Pythonic cho các mô hình Simulink. Nó không phải là một mô-đun Python chìa khóa trao tay để làm điều này
import simulinkdll simulinkdll.run["my_model.slx"] do_stuff[]
Đối với một thư viện hoặc mô hình định trước, việc định cấu hình Python chỉ cần được thực hiện khi Tham số/Tín hiệu Simulink thay đổi. Sau đó, nhà phát triển cuối cùng sẽ có thể thực hiện được import simulink_model
, nhưng phải mất thời gian phát triển
Hướng dẫn cao cấp
- Tạo thư viện sử dụng chung trong Simulink
- Tạo các biểu tượng Python của tất cả các mục trong tiêu đề tệp
- Mở thư viện bằng chung [
.dll
,.so
] bằng Python và chạy mô hình
Export DLL đơn giản
- Để minh họa chức năng dll tối thiểu và các bước cần thiết để chạy một mô hình trong Python
- Chứng minh sự việc triển khai
0 so vớiTmp=get_param[bdroot,'SimulationTime']
1 trong các biếnTmp=get_param[bdroot,'SimulationTime']
0 vàset_param[bdroot,'SimulationCommand','pause']
0set_param[bdroot,'SimulationCommand','pause']
Hàm truyền rời bỏ
Hàm truyền rời bỏ đơn giản. Được biên dịch với bộ lọc cấp thấp hơn 1
Có hai cửa sổ tay ví dụ cho Ví dụ 2
- Ví dụ đơn giản - Trình bao bọc ctypes cấp thấp đơn giản
- Ví dụ về Pythonic - Sử dụng đường cú pháp Python để tạo lớp python TransferTF cấp cao để tương tác với mô hình. Add the data write and set the results of the architecture
Ví dụ 2 cũng bao gồm các bài kiểm tra
pytest
mẫu trong thư mụcpytest
0. Điều này cho thấy cách bạn có thể sử dụngpytest
để kiểm tra các mô hình Simulink. Mẫu kết quả kiểm tra được hiển thị trong Example2/test_results. mdCác thử nghiệm cũng có thể được chạy trên các hành động GitHub. Một ví dụ về tệp đường ống được cung cấp. . github/quy trình công việc/trống. yml
This is a Huy hiệu ví dụ
Chạy mô phỏng trong Simulink cũng có một số chi phí. Bằng cách biên dịch mô hình thành một thư viện sử dụng chung và thực thi nó, chi phí này đã bị loại bỏ
pytest
2 đánh giá mô hình bằng cách kiểm tra các bước thời gian ngày càng nhỏ hơn. Sau đó, mô hình được biên dịch và thử nghiệm bằng Python và thời gian tương ứng được ghi lại bên dưới
Dự án này cũng đóng vai trò là bằng chứng về khái niệm sử dụng các kỹ thuật phát triển CI/CD với Mô hình Simulink. Có một pytest
3 sẽ xây dựng từng ví dụ và lưu trữ các hiện vật