Simulink模型转为TwinCAT3可以运行的ST程序

@Simulink PLC Coder :将Simulink模型转为TwunCAT程序

1 先把simulink程序封装为一个子系统subsystem,标注好输入输出端口
参考链接:
https://ww2.mathworks.cn/help/plccoder/ug/plc-coder-general.html#bsemuq2-1
在这里插入图片描述

2 程序内不能包含任何连续状态的模块(比如微分,积分模块),而且有不支持的等simulink模块(比如Clock模块),因此需要用离散状态的功能块替代,或者编写MATLAB function 代替。
3 选中Subsystem右键,点击Block Parameters(Subsystem),先勾选上Treat as atomic unit
在这里插入图片描述
在这里插入图片描述

4 继续右键Subsystem,选中PLC Coder–> Options,Target IDE 选为TwinCAT3
在这里插入图片描述
5 继续右键Subsystem,选中PLC Coder—>Generate Code for Subsystem
6 没问题的话会生成两个文件夹:有问题的话一般是程序中存在连续的状态,对应离散化即可。
在这里插入图片描述

7 生成的xml描述文件和st程序一般在默认的plcsrc文件夹中
在这里插入图片描述

8 打开TwinCAT3软件,新建项目,扫描设备
在这里插入图片描述

9 新建PLC项目
在这里插入图片描述
10 选中 POUs 右键 选 Import PLCopenXML导入simulink生成的XML文件。
即可导入由Simulink模型转化的ST程序。
在这里插入图片描述

11 此例中选simulink PLC Coder生成的test1 xml
在这里插入图片描述

12 点右下角OK
在这里插入图片描述

13 程序导入成功,接下来是要为程序声明输入输出变量并分配物理内存地址。
在主程序的变量声明区,先对需要调用的功能块进行声明,并创建输入输出变量,并在主程序变量声明区为需要链接Beckhoff模块的输入输出变量分配物理内存地址!。(具体操作方式参照TwinCAT3 入门教程V4.17—P50页)
在这里插入图片描述

14 随后在主程序的程序编写窗口(下面的那个窗口)按 F2,在左侧选中 实例调用 中的 Subsystem3后点击右下角的 确定。
在这里插入图片描述

15 在主程序编写区,将所调功能块的局部输入输出变量与主程序的输入输出变量对应起来。
在这里插入图片描述

16 程序写完后右键PLC项目build进行编译
在这里插入图片描述

17 输出窗口没有报错后,进行下一步链接变量:例如:将程序的输出值Voltage_Command链接到EL4008的Channel1。
在这里插入图片描述
18 变量链接好之后,先激活配置,将程序下载到控制器,然后Login载入运行
在这里插入图片描述
19 程序运行:
在这里插入图片描述

总结:
1、Simulink模型转为TwinCAT3可以运行的ST程序,首先需要用到Simulink的PLC Coder,这一步在matlab 的帮助文档有部分参考示例。
2、Simulink程序首先要符合转化的要求,不能包含连续的状态(比如微分du/dt,和一阶滤波1/(S+1)),也有部分Simulink模块不支持转为PLC程序(比如Clock定时模块);对于这部分不合适转化的部分,一方面,可以将连续状态的进行离散化,可以查看帮助文档的c2d(Continuous-Discrete Conversion Methods)指令;另一方面,对于不支持的模块,以Clock定时模块为例,可以以Matlab Function编写替代函数解决(定时器本质就是一个累加器,具体参照Simulink中计时器的5种实现方式:https://zhuanlan.zhihu.com/p/179205039)
3、程序转化成功会得到一个xml文件和一个st文件,不需要手动复制程序到Twincat主程序,只需要在PLC项目下POUs右键,导入xml文件。即完成了程序功能块的导入。
4、剩下需要做的是编写主程序,先在主程序变量声明区对需要调用的子程序(功能块)进行声明,然后创建需要用到的输入输出变量,并对需要实际链接到输入输出模块的变量进行物理内存分配,具体分配方式参照TwinCAT3 入门教程V4.17—P50页。
5、编写主程序,在主程序编写区域,按下F2,进行实例调用,将主程序声明的全局变量与子程序的局部变量进行对应。
6、链接输入输出模块,比如将输入变量(传感器的电压值)连接到EL3068,将输出变量链接到EL4008。
7、生成PLC项目,激活硬件配置,载入程序到控制器,即可运行。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
C和Simulink是两种常用的编程语言和开发环境,而TwinCAT是一种用于自动化控制系统的实时软件平台。在使用Simulink和TwinCAT进行开发时,可以通过联合使用它们来实现实时控制系统的设计和仿真。 SimulinkMatlab的附加模块,提供了一种图形化编程环境,用于建立并模拟动态系统模型。它基于模块化设计的思想,可以通过连接各种预定义的模块来构建复杂的系统模型。用户可以使用Simulink内置的图形库来创建各种不同的模块,并通过线条连接这些模块以建立系统模型。在建立好模型后,用户可以使用Simulink进行仿真,观察系统在不同输入条件下的动态响应。 TwinCAT是Beckhoff开发的实时控制系统软件平台。它基于Windows操作系统,并提供了实时扩展功能,可以在普通的PC上实现实时控制应用。TwinCAT提供了多种编程接口,包括C、C++、VB和Matlab/Simulink等。使用Simulink与TwinCAT结合,可以通过将Simulink模型转化为TwinCAT代码,将多个工程师的工作整合到一个整体中,进一步简化和加速实时控制系统的开发过程。 总之,通过联合使用Simulink和TwinCAT,可以实现方便快捷的实时控制系统开发和仿真。Simulink提供了图形化编程环境,让用户能够更直观地设计和建立系统模型。而TwinCAT则提供了实时环境,能够运行和测试这些模型,并最终实现实时控制。这些功能的结合使得使用Simulink和TwinCAT的开发过程更加高效和可靠。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

途 中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值