TwinCAT3 with Matlab-simulink 配置及使用
这几天忙项目的事,需要用到TwinCAT3这个平台,这是倍福(backoff)公司的一个产品,基于PC的控制软件,并且可以用来编译matlab-simulink下的模块。不过实在要吐槽一下,软件的安装和配置真的很LJ,各种不兼容,各种出错。
TwinCAT3的安装
由于TwinCAT3是基于Visual Studio的,因此需要先把VS的环境装好,推荐VS2015英文版!
安装TwinCAT3的TC31-FULL-Setup.3.1.4022.27.exe,安装过程一路下一步,有一步需要勾选要嵌入到哪个VS中,记得选择事先安装好的VS2015。
安装插件”Windows Driver Kit“,下载地址: http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=36a2630f-5d56-43b5-b996-7633f2ec14ff ,只需要选择安装里面的Build Environment,然后再一路确认下去。
在系统属性里修改环境变量, 新建变量名:WINDDK7 变量值:C:\WinDDK\7600.16385.1
为了能配置matlab-simulink或者C++使用,需要安装测试证书,管理员权限打开VS的命令窗,输入
1
makecert -r -pe -ss PrivateCertStore -n CN=MyTestSigningCert MyTestSigningCert.cer
然后回车会出现succeed,这一步如果有错说明你的VS没有装好,然后cmd输入certmgr.msc看PrivateCertStore里面是否创建成功;成功后再以管理员权限打开VS命令窗口激活测试证书
1
bcdedit/set testsigning yes
再添加系统环境变量,变量名:TWINCATTESTCERTIFICATE 变量值:MyTestSigningCert
如果以上都ok了,电脑桌面右下角会出现测试模式。
Matlab中的设置
- matlab版本需要高于VS,不然会找不到编译器,如果还是找不到编译器,说明VS没装好!重新安装把。
- 安装 TE1400-Target-for-Matlab-Simulink,链接:http://www.beckhoff.com/english/download/tc3-download-te1xxx.htm?id=1957281419487556 ,一路安装下去,选择完整版,前提是需要安装好TwinCAT3。
在Matlab编译模型
管理员身份运行matlab
选择VS编译器:运行TwinCAT / Functions / TE1400 / SetupTwinCATTarget.p
打开已有的simulink文件,配置模型参数simulation/Model Cogfiguration Parameter
左侧选择Solver,在Solver options的Type选择Fixed-step。
左侧选择Code Generation,在System target file选择TwinCAT.tlc
左侧选择Tc Build,输入模块名,勾选Publish binaries for platform “TwinCAT RT (x86)” 以及 Publish binaries for platform “TwinCAT RT (x64)”
左侧选择Tc Advanced,修改
1 2 3 4
ask assignment:Manualconfig; CallBy:CyclicTask; Step size:UseTaskCycleTime; PLC Function Block:None;
并勾选:
1 2 3 4
Export block diagram Resolve masked Subsystems Export block diagram debug information Show parameter table in XAE
如果不要周期执行,要让PLC条件调用,对应下面的方案二则
1 2
CallBy: Module; PLC Function Block: Module specific FB with properties for all parameters
在matlab-simulink中编译模型,成功后在 TwinCAT/3.1/CustomConfig/Modules 路径下会生成对应的文件夹
在TwinCAT中运行模型
创建TC3新项目,点击右侧SYSTEM,右键TcCOM Objects然后选择Add New Item,在TE1400的列表中选择刚在matlab编译出来的模型
方案一(周期执行)
- 点击右侧SYSTEM,右键Tasks然后选择Add New Item
- 点击刚才load进来的那个object,选择Context,在Result窗格里的Task选择刚才新建的Task地址
- 工具栏activate configuration,然后Login,然后运行Star
方案二(PLC调用)
新建PLC项目, 右键 POUs 点击 Import PLCopenXML,选择刚才模块目录下生成的xxxPlcOpenPOUs.xml
在MAIN中写程序
变量定义,对象实例化
1 2 3 4 5 6
PROGRAM MAIN VAR i,j:INT; in1,in2,in3,in4,out1:LREAL:=1; testobj:FB_test(oid:=16#01010010); %指定对象id END_VAR
下面程序中写相应调用规则
1 2 3
testobj.Execute(); %执行 testobj.stInput.In1:=5; % 输入端口值 out1:=testobj.stOutput.Out1; % 输出端口值
点击刚才load进来的那个object,选择Context,在Result窗格里的Task选择PlcTask
工具栏activate configuration,然后Login,然后运行Star