Plcsim Advanced和Simulink联合仿真——通过API

西门子官网应用中心链接: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“文件夹。

Plcsim Advanced和Simulink联合仿真——通过API

里面包含三个文件如下图

Plcsim Advanced和Simulink联合仿真——通过API

其中,”PLCSimAdvancedBlockLibrary.slx“是已经封装完成的函数文件。在simulink中打开文件,并将其复制到自己的simulink文件中。

Plcsim Advanced和Simulink联合仿真——通过APIPlcsim Advanced和Simulink联合仿真——通过API

 

 命令空间中提示如下内容:”[PLCSIM Advanced S-Function]: mdlInitializeSizes“。

(2)打开博途软件,新建一个项目,添加1511-1PLC:

Plcsim Advanced和Simulink联合仿真——通过API

右键,属性,设置如下:

Plcsim Advanced和Simulink联合仿真——通过APIPlcsim Advanced和Simulink联合仿真——通过API

在”PLC变量“——”默认变量表“中添加两个变量:

Plcsim Advanced和Simulink联合仿真——通过API

在PLCSIM_Adv中建立一个PLC,命名为”test_1“,将程序下载到PLC中,并启动仿真;

 

 Plcsim Advanced和Simulink联合仿真——通过API

 

 (3)打开simulink中调用的函数块,将名称更改为"test_1"。

Plcsim Advanced和Simulink联合仿真——通过API

 

 matlab命令空间中提示如下:Plcsim Advanced和Simulink联合仿真——通过API

 

 将仿真时间设置为”Inf“,启动仿真。在博途中将plc打到在线状态,并在监控表中添加两个变量,可以看到数据状态。

Plcsim Advanced和Simulink联合仿真——通过API

 

 Plcsim Advanced和Simulink联合仿真——通过API

注意:如果提示错误,可以matlab先关掉,先启动PLCSIM Adv然后再设置simulink。

将matlab以管理员方式运行。

个人见解, 如有错误请指教。需要文件可以私信。