Simulink 模型生成C/C++代码到Twincat内核实施执行 个人使用总结

TE1400 作为 TwinCAT3 工程插件,其功能是利用 Simulink Coder Simulink 中的
模型生成实时 C/C++ 代码,并且进一步导出成自带输入输出接口的 TcCOM 模块
此模块可以在 TwinCAT3 项目中实例化,并且也可以对模块的参数进行修改,最
TwinCAT3 内核中实时执行
(1)configuration parameters 进行参数设定
(2)Solver,把其中的 Type 改成 Fixedstep
(3)Code Generation,把其中的 System target file 改成TwinCAT.tlc
(4)Tc Build,输入模块名 test_callbytask( 被 PLC 条件调用是 call by module),并且选择需要导出的模块平台种类,x86 还是 x64(电脑是 64 位都勾选)
(5)Tc Advanced,修改相应参数
Task assignment Manualconfig
CallBy:CyclicTask
Step size UseTaskCycleTime
PLC Function Block None
5.1    这次不希望模块自动周期执行,而是希望 被 PLC 条件调用   
(TE1400 生成模块 call by module)
1. 找到 CallBy ,设置为 Module
2.  在 Tc Advanced 中找到 PLC Function Block,设置成 Module specific FB with properties for all parameters  (具有所有参数属性的模块特定FB) ,这样就会在模块生成的时候自动创建 PLC 调用此模块的功能块
以上操作完成后点击左下角的 Apply
(6) build ,编译并且转换成 TcModule
(7)在 TwinCAT/3.1/CustomConfig/Modules 路径下会生成名字和案例模型名字一样的文件夹 test_callbytask            或者 call by module
(8)现里面有.tmc 描述文件,x64 和 x86 的二进制文件,以及 1 个 xml 文件,这些文件都是经过编译后的离线文件
Twincat:
(1)创建 TC3 新项目
(2) 打开 SYSTEM ,右键 TcCOM Objects 添加新项,TC3 会自动找到之前生成的模块
(3)添加好后我们可以发现 TcCOM Objects 下出现 matlab 生成的 Module,并且 3 个变量出现在 IO 位置,方便 和 PLC 程序或者硬件 IO 进行变量连接
(4) Tasks 添加新项,分配 Task 给模块
(5)active configuration 激活配置并下载程序,通过 block diagram 可以查看模块在线的状态
(6) 2 个输入一个值 setpointTemp 100 feedbackTemp 99

采用call by module的方法:

1. reload 重新上载下模块,并且选择新的模块进行添加

2. PLC 项目,右键 POUs 点击 Import PLCopenXM 

(在默认路径 C:\TwinCAT\3.1\CustomConfig\Modules\test_callbymodule 中 找到 test_callbymodule_PlcOpenPOUs.xml 并且点击 open 加入到 PLC 项目 中)

3. 开始写程序,首先对于模块接口功能块进行变量声明,在 oid 中输 入 TcCOM 中模块的 Object Id

Object ID 可以在 TcCOM 中加载的模块中
调用相应的 method 进行模块调用,并且也可以直 接访问到输入输出等参数进行赋值

 ——

 4. 分配模块 Task PlcTask(必须和所调用 PLC Task 一致)

模块自动周期执行下的task为:

 模块被 PLC 条件调用的task为:

 激活并下载程序后发现即使输入给了值,输出也没有变化

只有触发了 input ,使 execute 方法被调用才可以执行 simulink 模型

————————————————————————

Simulink与PLC MAIN的映射

 

PLC输入是simulink的输出u,simulink输出控制量映射到PLC的输入;

PLC输出是simulink的输入,simulink输出控制量映射到PLC的输出。

——————————————————————————————

——————————————————————————————————————

TcCOM实例的数据交换通过进程映像的映射进行。Simulink®输入和Simulink®输出被自动映射为过程图像中的输入或输出,并可以链接到I/O或其他对象。

 

 

 

 

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值