西門子官網應用中心鏈接:SIMATIC S7‑PLCSIM Advanced 通過 API 的聯合仿真
摘要:
simulink可實現較為復雜的仿真模型,通過Plcsim Advanced提供的API與simulink實現數據交換,即實現聯合仿真。
0 前言
Plcsim Advanced提供的動態鏈接庫文件支持通過C,C++,C#及FORTRAN語言進行調用,官網示例文件展示了三種與simulink實現聯合仿真的方法。使用的控制對象是一個擺錘的角度控制模型——通過給定風扇在擺弧切線上的牽引力控制擺臂的角度。這里不再對這個示例做過多介紹了,說明數和程序源文件都可以在官網下載。現在簡單介紹一下通過API與simulink進行通訊的使用方法,關於C++的s-function的內部實現后面進行介紹。
1 軟件版本
示例的版本為:
MATLAB R2016a;STEP V14 Professional;S7-PLCSIM Advanced 1.0;VS2010
本文使用的軟件版本:
MATLAB R2017b;STEP V15 Professional;S7-PLCSIM Advanced 2.0;VS2017
示例程序中使用PLCSIM中的PID做控制器,simulink中建立被控模型,在simulink中通過C++實現的S函數調用API與PLCSIM交換數據,PLC內部還整合了OPC UA示例部分等內容,因此看起來內容較多。下面,盡量簡單的介紹一下使用方法。
2 使用方法
(1)在官網下載的三個示例文件夾中,打開“Simulink_Usecase1“——”S-Function“文件夾。
里面包含三個文件如下圖
其中,”PLCSimAdvancedBlockLibrary.slx“是已經封裝完成的函數文件。在simulink中打開文件,並將其復制到自己的simulink文件中。
命令空間中提示如下內容:”[PLCSIM Advanced S-Function]: mdlInitializeSizes“。
(2)打開博途軟件,新建一個項目,添加1511-1PLC:
右鍵,屬性,設置如下:
在”PLC變量“——”默認變量表“中添加兩個變量:
在PLCSIM_Adv中建立一個PLC,命名為”test_1“,將程序下載到PLC中,並啟動仿真;
(3)打開simulink中調用的函數塊,將名稱更改為"test_1"。
matlab命令空間中提示如下:
將仿真時間設置為”Inf“,啟動仿真。在博途中將plc打到在線狀態,並在監控表中添加兩個變量,可以看到數據狀態。
注意:如果提示錯誤,可以matlab先關掉,先啟動PLCSIM Adv然后再設置simulink。
將matlab以管理員方式運行。