Giao diện trăn simulink

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
  1. MATLAB v2013 trở lên [Tác giả đã sử dụng 2018b]
  2. Python v3. 6
Cài đặt

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 Simulink

Trong 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

    1. 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
    2. 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
    3. 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
    4. Sử dụng các hành động GitHub/GitLab và Python để kiểm tra tự động trên đám mây
    5. 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

    1. Tạo thư viện sử dụng chung trong Simulink
    2. Tạo các biểu tượng Python của tất cả các mục trong tiêu đề tệp
    3. Mở thư viện bằng chung [.dll, .so] bằng Python và chạy mô hình
    ví dụ

    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
      Tmp=get_param[bdroot,'SimulationTime']
      
      0 so với
      Tmp=get_param[bdroot,'SimulationTime']
      
      1 trong các biến
      set_param[bdroot,'SimulationCommand','pause']
      
      0 và
      set_param[bdroot,'SimulationCommand','pause']
      
      0

    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

    1. Ví dụ đơn giản - Trình bao bọc ctypes cấp thấp đơn giản
    2. 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ục pytest0. Điều này cho thấy cách bạn có thể sử dụng pytest để 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. md

    • Cá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ỏ

    pytest2 đá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

    Bước thời gian [các] Thời lượng Simulink [các] Thời lượng Python [s]1e-40. 59050. 061e-51. 04610. 611e-68. 19916. 081e-778. 990160. Tự động hóa nhà 18Jenkins

    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 pytest3 sẽ xây dựng từng ví dụ và lưu trữ các hiện vật

    Chủ Đề