n
1 WinAC Target 概述
1.1 什么是WinAC Target
在自动化与控制工程中,来自于MathWorks公司的Matlab/Simulink软件频繁的应用于图形化模型、过程仿真以及PID控制器。越来越多的需求是将Simulink模型应用到可编程控制器中。MathWorks提供了一个选项用来将Simulink 模型编译成C/C++嵌入式代码。这些代码进而集成到WinAC ODK项目中并且在S7程序中通过DLL/RTDLL进行调用和执行。n
WinAC Target是西门子提供的用于Matlab/Simulink的一个插件,用来从Simulink模型中创建DLL/RTDLL文件以及SCL源文件。n
集成Simulink 模型,过程如图1-1 所示。n
图1-1 集成Simulink的过程n
1) 在Matlab/Simulink中创建模型并测试n
2) 使用WinAC Target将Simulink模型编译成SCL源代码和一个DLL/RTDLL文件n
3) 将SCL源代码导入到S7程序中n
4) 将DLL/RTDLL拷贝到安装有WInAC RTX的IPC中n
5) 下载S7 程序到WinAC RTX中并运行n
1.2 优势及益处
WinAC Target具有如下优势:n
l Simulink模型集成到WinAC RTX非常简单n
l 采用Simulink的External mode 可以在运行时监视并修改集成模型的参数。n
l 在STEP 7的用户程序中可以操作内部模型参数。n
用户可以获得如下益处:n
l 简单易用,节省开发时间n
l 优化了集成Simulink模型到WinAC RTX流程n
l 使用Simulink以及External mode实现了高效的调试和诊断过程n
l 可通过STEP 7 程序在运行期间灵活的修改内部模型参数n
图 1-2 使用External moden
1) 图形化在线视图显示运行过程n
2) 使用Simulink修改内部模型参数n
1.3 WinAC Target 与 WinAC S2O(Simulink to ODK)
WinAC Target的当前版本为V1.1 ,支持数组数据类型,SCL 源代码中使用符号名以及STEP 7访问用户自定义模型参数。n
WinAC S2O 为WinAC Target的V1.0版本,为最初版本。目前建议使用WinAC Target V1.1版本,故WinAC S2O将不再提供下载。n
WinAC Target的下载链接如下:n
http://support.automation.siemens.com/CN/view/en/56969417
本文将以风机主控模型在WinAC RTX 中的集成为例,介绍WinAC Target的安装及使用方法。n
2 WinAC Target 的安装及在Matlab中的启用
2.1安装基本软件
需要在编程设备中安装下表中的软件。n
序号 | 操作 | 说明 |
1 | 安装 Simulink V8.0n MATLAB Coder V2.3n Simulink Coder V8.3n Embedded Coder V6.3 | - |
2 | 安装 | - |
3 | 选项,安装 | 只有需要创建RTDLL时才需要安装 |
4 | 安装 或者安装 或n STEP7 V12 Professional | 手册: |
5 | 安装 | 手册: |
表 2‑1 编程设备中软件安装说明n
在运行系统(譬如: IPC427C)中安装如下的软件。n
表2‑2 运行系统中软件安装说明n
序号 | 操作 | 说明 |
1 | 安装 | 手册: 更新:n |
2.2安装 WinAC Target
在编程设备中安装下表中的软件。n
表 2-3 WinAC Target 安装说明n
序号 | 操作 | 说明 |
1 | 安装n WinAC Target (运行 setup.exe)n | 需要:n Windows XP Professional SP3 STEP 7 V5.5 与 S7-SCL V5.3 WinAC ODK V4.2 SP1 |
2.3集成 WinAC Target 到 Simulink
为了在Simulink中正常使用WinAC Target,首先需要将WinAC Target集成。执行一次下面的操作。n
表 2-4 WinAC Target集成到Simulink-安装说明n
序号 | 操作 | 说明 |
1 | 打开 “MATLAB”。n | - |
2 | 在 “Current Folder”中,找到 WinAC Target installation folder。此文件夹包含 “startup.m”文件。右键点击并且选择运行此文件。WinAC Target将被集成到Simulink中。 | - |
说明 | 在初次使用WinAC Target时上述操作仅需操作一次即可。 |
3 风机模型概述
首先将风机全部或部分对象或功能建模并仿真,如图3-1所示。n
图3-1风机建模及仿真n
关于Matlab/Simulink的建模及仿真本文不展开介绍,具体操作可参考Mathworks公司的相关技术资料。n
本文所用风机模型下载链接如下:n
http://www.mathworks.cn/matlabcentral/fileexchange/25752-wind-turbine-model
西门子提供了基于WinAC及MicroBox 427C的软硬件平台,用于实现风能算法的集成,实现风机主控、变桨、偏航控制以及系统的状态监控。n
图3-2基于WinAC及MicroBox427C实现风能算法的集成n
4 WinAC Target的使用
4.1典型功能介绍
WinAC Target与早期版本WinAC S2O相比,增加了一些新功能。典型的功能有三个:n
· External mode,可以实现Matlab与运行系统之间的通信,实现在Matlab中进行控制系统的运行监控和通过Matlab修改参数。n
· Parameter access with STEP7,此功能将Matlab对应模型的所有参数以DB块的形式开放给STEP 7 用户程序。n
· Inline可以实现Matlab模型中用户自定义的变量以DB块的形式开放给STEP 7 用户程序。n
4.1.1 External mode
Simulink的External mode可以实现系统运行时监控模型并且可以在线修改模型的内部参数。n
为了保证Simulink与导出到运行系统的模型通过External mode能够正常通信,在编码前一定要激活External mode。这样,编译的代码中除了控制算法外还包括Simulink与运行系统模型通信的程序代码。两者基于TCP/IP进行通信。
图4-1 Simulink与 WinAC RTX中的模型间的通信n
注意 | 如果需要与RTDLL文件进行通信,在运行系统中需要运行额外的服务。 |
启用 External mode,需要做如下设置:n
1. 打开风电模型:“Wind_Turbin_Mode”。n
2. 设置 “Simulation stop time” 为 “inf” ,并设置“Simulation Mode” 为 “External”。如图4-2 所示。n
图 4-2 External mode 设置n
3. 在菜单中,点击 “Code – C/C++ Code – Code Generation Options …”。n
4. 在弹出窗口中,“Code Generation” 参数设置为默认值。n
5. 设置如下参数:n
“Code Generation” 导航项n
– System target file: WinAC_Target.tlcn
“Interface” 导航项n
– Data exchangen
· Interface: External Moden
· Transport layer: tcpipn
· MEX-file arguments: ‘192.168.0.2’
(运行系统的IP地址 )n
图4-3 “Interface” 导航项设置n
4.1.2 Parameter access with STEP7
WinAC Target可通过STEP 7 程序在运行期间灵活的修改内部模型参数。n
只有当”Parameter access with STEP7” 在WinAC Target设置界面中勾选后 “Model_param” 与 “Write_model_param” 输入才会被额外创建。n
图4-4 创建的SCL 源文件对应的FBn
4.1.3 Inline
在Optimization-Signals and parameter 下勾选Inline parameters 并点击Configure按钮,可以选择模型中自定义的变量(需要预先设置,本文此部分内容不做介绍)开放给Step 7用户程序,实现模型参数的自定义访问。n
图4-5 自定义变量配置n
4.2 代码创建前的准备工作--参数设置
1. 打开风电模型:“Wind_Turbin_Mode”,选择主控模型。n
2. 在菜单中,点击 “Code – C/C++ Code – Code Generation Options …”n
图4-6 Code Generation Optionsn
3. 在弹出窗口中,设置如下参数,其他采用默认设置:n
“Code Generation” 导航项n
–System target file: WinAC_Target.tlcn
4-7 设定System target filen
4. 选择WinAC Target后如下的参数自动完成了设置:n
“Solver” 导航项n
–Type: Fixed-stepn
–Solver: discrete (no continuous states)n
–Fixed-step size: auton
“Interface” 导航项n
–Data exchangen
· Interface: External Moden
· Transport layer: tcpipn
· MEX-file arguments: ‘192.168.0.2’
(运行系统的IP地址)n
“Data Import/Export” 导航项n
–Save to workspace:
不勾选 Time, States, Output, Final states variablesn
4-8 “Data Import/Export” 导航项设置n
“WinAC Options” 导航项n
–在 “WinAC ODK project type”中,可以选择创建Windows DLL(DLL)或者实时的DLL (RTDLL)。默认设置是Windows DLL。n
–在“STEP 7 Version”中,可以选择稍后使用的自动化编程软件。默认设置是STEP 7 V5.5 。n
–在 “Data cycle time (Extended mode) [ms]”中, 可以按实际需求设定External mode 的循环周期。默认设置为“50”。n
–在 “STEP 7 Function Block name”中,可以设置功能块的名称。默认名称为Simulink 模型的名称。n
–在 “Parameter access with STEP 7”中,可以开启STEP 7用户程序对模型参数的访问。n
4-9 勾选“Parameter access with STEP 7”n
4.3代码创建
将Simulink 模型编译成C++代码并生成DLL/RTDLL和SCL文件,过程如下:n
1. 在 Simulink 模型菜单中,点击 “Code – C/C++ Code – BuildModel”.n
2. 在本例中,风电demo的主控算法被编译成C/C++代码,然后WinAC Target进一步将此源文件生成DLL和SCL源文件。n
3. The “...Turbine_WinAC_Target_Output” Simulink 模型路径下包含如下创建的代码:n
· “Binary” 文件夹: DLL/RTDLL 文件(本例中为DLL)n
· “SCL_Source” 文件夹: SCL 源文件n
4-10 WinAC Target的输出文件n
4.4 数据类型
由于STEP 7,WinAC ODK以及嵌入式代码使用不同的数据类型,所以在程序接口中不可避免的要进行类型转换。WinAC Target识别C/C++程序嵌入式代码的数据类型并在WinAC ODK的程序和STEP 7程序(SCL源文件)中调整。运行WinAC Target时进行了类型转换。下表显示了相关的数据类型。n
表4-1 数据类型概览n
C/C++ | C/C++ | Bytes | STEP7 |
boolean_T | bool | 1 bit | BOOL |
int8_T, unint8_T, char_T, uchar_T, byte_T | char | 1 | CHAR |
int16_T, uint16_T | short | 2 | INT |
int32_T, uint32_T, int_T, uint_T | long | 4 | DINT |
ulong_T | long | 4 | DINT |
real_T | float | 4 | à REAL (4 Byte) |
real32_T | float | 4 | REAL |
“type”_T [“length”] | “type” [“length”] | 取决于数组大小以及数据类型 | Array [lo .. hi] of type |
5 代码在Step7中的集成
5.1概述
采用WinAC Target,通过下图选择设置STEP 7 版本,可以创建适用于STEP 7 V5.x 或V1x(TIA Portal)的SCL 源代码。下面分别介绍代码在STEP 7不同版本软件中的集成。n
图5-1 STEP 7 版本设置n
5.2 在STEP7 V5.5中的集成
1. 新建Step7项目。n
图5-2 新建Step7项目n
2. 打开WinAC ODK Library。n
图5-3打开WinAC ODK Libraryn
3. 将SFB65001、SFB65002以及SFB65003拷贝到新建的Step7项目中。n
图5-4 拷贝ODK 系统功能块n
4. 点击此项目程序左侧导航栏文件夹。n
5. 导入WinAC Target创建的SCL源文件,本例中为Turbine_dll。n
图5-5 导入SCL 源文件n
6. 打开SCL源文件,并在菜单中点击Options – Customize…”。n
7. 勾选 “Create block numbers automatically” 并点击“OK”按钮确认。n
图5-6 Create block numbers automaticallyn
8. 点击“File – Compile”创建FB。n
9. 在OB100中添加刚生成的FB(MainCtrl),并分配背景数据块,分配输入参数,初始化DLL。n
图5-7 OB100中调用FB并初始化DLLn
10. 在OB35中再次插入此FB(MainCtrl),并分配背景数据块,分配输入及输出参数。n
图5-8 OB35中调用FBn
11. 下载程序到 WinAC RTX。n
12. 拷贝DLL或RTDLL到安装有WinAC RTX的PC机C盘根目录下(本例为Turbin.dll)如果为RTDLL则需要注册。n
13. 运行WinLC RTX 。n
说明 | 如果使用不同的DLL/RTDLL文件的存储路径,此路径也需要在SCL源文件中进行修改:n Variable: “DLL_name”n 或者,可以在已经生成的FB中直接进行修改:n “Interface – Static – DLL_name” |
说明 | 如果在WinAC RTX中调用了RTDLL,拷贝RTDLL到运行系统后,要在IntervalZero运行系统中注册。n 在PC中,选择 “Start - Programs - IntervalZero - RTX2009 - Tools – RtssRun”。 |
5.3 在STEP7 V11/V12 (TIAPortal)中的集成
1. 打开 TIA Portal V11或V12(本文以V11为例),创建项目。n
2. 在 “PC-System_1 [IPC427C PN/IE]”下展开项目树。n
3. 在 “External source files” 下双击“Add new external file”。n
图5-9 导入外部文件n
4. 选择并导入 “SCL Sources (*.scl)”。n
图5-10 选择WinAC Target创建的SCL源文件n
5. 右键点击 “Turbine_dll.scl” SCL 源文件。在弹出窗口中,选择 “Generate Blocks”。FB块将被创建并存储在 “ProgramBlocks” 下。n
图5-11 创建块n
6. 打开 “COMPLETE RESTART [OB100]” 并以拖拽的方式将创建的FB插入到network 1。分配背景数据块,分配输入及输出参数。n
图5-12 OB100中调用FB并初始化DLLn
7. 打开 “CYC_INT5 [OB35]” 并以拖拽的方式将创建的FB插入到network 1。分配背景数据块,分配输入及输出参数。n
图5-13 OB35中调用FBn
8. 下载程序到 WinAC RTX。n
9. 拷贝DLL或RTDLL到安装有WinAC RTX的PC机C盘根目录下(本例为Turbin.dll)如果为RTDLL则需要注册。n
10. 运行WinLC RTX 。n
说明 | 如果使用不同的DLL/RTDLL文件的存储路径,此路径也需要在SCL源文件中进行修改:n Variable: “DLL_name”n 或者,可以在已经生成的FB中直接进行修改: “Interface – Static – DLL_name” |
说明 | 如果在WinAC RTX中调用了RTDLL,拷贝RTDLL到运行系统后,要在IntervalZero运行系统中注册。 在PC中,选择 “Start - Programs - IntervalZero - RTX2009 - Tools – RtssRun”。 |
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc328572.html