这几天忙项目的事,需要用到TwinCAT3这个平台,这是倍福(backoff)公司的一个产品,基于PC的控制软件,并且可以用来编译matlab-simulink下的模块。不过实在要吐槽一下,软件的安装和配置真的很LJ,各种不兼容,各种出错。

TwinCAT3的安装

  1. 由于TwinCAT3是基于Visual Studio的,因此需要先把VS的环境装好,推荐VS2015英文版

  2. 安装TwinCAT3的TC31-FULL-Setup.3.1.4022.27.exe,安装过程一路下一步,有一步需要勾选要嵌入到哪个VS中,记得选择事先安装好的VS2015。

  3. 安装插件”Windows Driver Kit“,下载地址: http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=36a2630f-5d56-43b5-b996-7633f2ec14ff ,只需要选择安装里面的Build Environment,然后再一路确认下去。

  4. 在系统属性里修改环境变量, 新建变量名:WINDDK7 变量值:C:\WinDDK\7600.16385.1

  5. 为了能配置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

  6. 如果以上都ok了,电脑桌面右下角会出现测试模式。

Matlab中的设置

  1. matlab版本需要高于VS,不然会找不到编译器,如果还是找不到编译器,说明VS没装好!重新安装把。
  2. 安装 TE1400-Target-for-Matlab-Simulink,链接:http://www.beckhoff.com/english/download/tc3-download-te1xxx.htm?id=1957281419487556 ,一路安装下去,选择完整版,前提是需要安装好TwinCAT3。

在Matlab编译模型

  1. 管理员身份运行matlab

  2. 选择VS编译器:运行TwinCAT / Functions / TE1400 / SetupTwinCATTarget.p

  3. 打开已有的simulink文件,配置模型参数simulation/Model Cogfiguration Parameter

    1. 左侧选择Solver,在Solver options的Type选择Fixed-step。

    2. 左侧选择Code Generation,在System target file选择TwinCAT.tlc

    3. 左侧选择Tc Build,输入模块名,勾选Publish binaries for platform “TwinCAT RT (x86)” 以及 Publish binaries for platform “TwinCAT RT (x64)”

    4. 左侧选择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
    5. 如果不要周期执行,要让PLC条件调用,对应下面的方案二

      1
      2
      
      CallBy: Module;
      PLC Function Block: Module specific FB with properties for all parameters
  4. 在matlab-simulink中编译模型,成功后在 TwinCAT/3.1/CustomConfig/Modules 路径下会生成对应的文件夹

在TwinCAT中运行模型

  1. 创建TC3新项目,点击右侧SYSTEM,右键TcCOM Objects然后选择Add New Item,在TE1400的列表中选择刚在matlab编译出来的模型

  2. 方案一(周期执行)

    1. 点击右侧SYSTEM,右键Tasks然后选择Add New Item
    2. 点击刚才load进来的那个object,选择Context,在Result窗格里的Task选择刚才新建的Task地址
    3. 工具栏activate configuration,然后Login,然后运行Star
  3. 方案二(PLC调用)

    1. 新建PLC项目, 右键 POUs 点击 Import PLCopenXML,选择刚才模块目录下生成的xxxPlcOpenPOUs.xml

    2. 在MAIN中写程序

      1. 变量定义,对象实例化

        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
      2. 下面程序中写相应调用规则

        1
        2
        3
        
        testobj.Execute();   %执行
        testobj.stInput.In1:=5;   % 输入端口值
        out1:=testobj.stOutput.Out1;  % 输出端口值
      3. 点击刚才load进来的那个object,选择Context,在Result窗格里的Task选择PlcTask

      4. 工具栏activate configuration,然后Login,然后运行Star