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或其他对象。