当前位置: 首页 > news >正文

TwinCAT3+MATLAB - sky

现有技术方案分析

主要实现方案

  • TwinCAT Target for Simulink/MATLAB(TE1400/TE1401)
    允许在 Simulink 和 MATALB 中设计控制算法,并将其直接集成到 TwinCAT 实时环境中。
    使用 TE1401,可以在 TwinCAT 3 中利用 MATLAB 脚本语言开发的函数。这些函数通过 MATLAB Coder 的帮助自动转换为 C/C++ 代码,并使用 TwinCAT 3 Target for MATLAB 编译成 TwinCAT 对象。
    使用 TE1400,可以在 TwinCAT 3 中利用在 Simulink 中开发的模型。各种工具箱,如 Simscape、Stateflow 或 MATLAB 功能块,可以嵌入到 Simulink 中。这些模型通过 Simulink Coder 的帮助自动转换为 C/C++ 代码,并使用 TwinCAT 3 Target for Simulink 编译成 TwinCAT 对象。
    这些对象可以在 TwinCAT 3 工程中无缝使用,例如扩展 PLC 源代码以构建整个项目,进行调试,并与现场总线设备连接。自动生成的模块可以作为 TcCOM 对象和 PLC 功能块集成到 TwinCAT 解决方案中。插入的模块会随完整的 TwinCAT 项目一起下载到 TwinCAT 3 运行时中,并在实时环境中像其他所有对象一样被执行。

他们本质都是将 MATLAB 代码转成 C++,然后使用 TE140x 模块编译成 TwinCAT 对象。所以其实 MATLAB 代码或 Simulink 转成 C++ 后集成到 TwinCAT 中也是一种方案。但是编译阶段可能会遇到一些问题

  • 通过 ADS 通信接口 TwinCAT 3 Interface for MATLAB and Simulink(TE1410)
    TwinCAT 支持 ADS(Automation Device Specification)通信协议,MATLAB 可以通过 Beckhoff 提供的 ADS API 访问 TwinCAT 的变量,实现数据交互。
    TwinCAT 3 Interface for MATLAB and Simulink 使得 MATLAB 和 TwinCAT 运行时之间以及 Simulink 和 TwinCAT 运行时之间的数据交换成为可能。对于 Simulink,Simulink 库中提供了可以在 Simulink 项目中简单集成和配置的 ADS 客户端块。因此,可以从 Simulink 环境中写入数据到 TwinCAT 运行时,或者从中读取数据。在 Simulink 中使用 ADS 块的一个应用示例是软件在环仿真,其中在 TwinCAT 运行时执行的控制或反馈控制算法与在 Simulink 中执行的模型相连。
    对于 MATLAB,提供了一个可以在脚本环境中使用的 ADS Port 对象。该对象提供了多种方法用于 MATLAB 和 TwinCAT 运行时之间的数据交换。除了在 MATLAB 中使用 ADS 客户端(即 MATLAB 环境发起数据交换)之外,还可以在 MATLAB 中使用 ADS 服务器。后者提供了在 MATLAB 环境中编写 MATLAB 函数并通过 ADS 命令从 TwinCAT 调用它们的选项。在 MATLAB 中使用 ADS 客户端的一个应用示例是创建图形操作和监控界面,例如基于 MATLAB 应用程序。ADS 服务器可以用来执行非实时相关的任务,例如预测性维护系统或参数优化的组件。可以使用 MATLAB Compiler 来执行作为独立应用程序创建的程序在现场环境中,例如在边缘设备或直接在工业 PC 上。

在搜集资料的时候看见也有人使用 MATLAB 的 simulink PLC coder,把模型直接转成 ST 语言进行使用。

  • 通过 OPC UA 协议进行通信
    TwinCAT 提供 OPC UA 服务,MATLAB 支持 OPC UA 客户端功能,可以通过 OPC UA 协议实现两者之间的数据通信。

  • 通过 TCP/UDP 通信实现自定义协议
    在某些情况下,您可能需要使用自定义协议进行通信。可以利用 MATLAB 的 TCP/UDP 功能与 TwinCAT 建立通信。

  • 通过共享文件实现离线数据交换
    对于实时性要求不高的应用,可以通过共享文件的方式在 MATLAB 和 TwinCAT 之间交换数据。

  • 通过 MATLAB Automation Server 调用
    TwinCAT 还可以通过外部程序接口调用 MATLAB 的 Automation Server 功能,适用于需要在 TwinCAT 任务中运行 MATLAB 算法的场景。

协议原理

TwinCAT ADS

TE1400/TE1401

安装

我们的 TE14xx 相关的组件其实已经被封装到了一个 exe 里面,但是 TE14xx 的本质是依赖于 C++ 的一些组件的,所以需要依赖于微软的 C++ 编译组件,因此需要安装 VS 进行开发,后续内容将根据官方的手册安装:

TE1400_TC3_SIMULINK_ZH.pdf

因为我是先直接安装 TC3,没有先安装过 VS 的 C++ 组件,所以官方要求需要卸载 TC3 后重新安装,这里我根据卸载后安装的思路进行。

注意,TC3 最高支持 VS2019,请勿安装更高版本

TE40xx 只是一个安装包,安装后你能在 C:\TwinCAT\Functions\TE14xx-ToolsForMatlabAndSimulink 中找到。matlab 的 p 文件也是在其中,按照手册中的教程安装就行

授权和签名

最麻烦的地方也就在这里,授权使用试用授权就行了,在我们 Twincat 项目中的 System->License 中选择 TC1220 和 TF1400 就行了。

接下来是最麻烦的签名,不管后续是使用 C++ 还是 Matlab 的 ADS 还是将模型导入到 Twincat 中都需要签名(本质上导入的模型也是 C++)。因为其依赖的是 Twincat 的 TcCOM 进行在这里我们把他简单的理解为一个一个库就行。但是为了保证安全(为了卖钱),倍福需要每个模块都是进过签名的,保证确实来源于这些公司,所以会有 OEM 证书这一步。正常情况下如果要跑在实际的项目中,我们需要向倍福申请 TC0008 产品来购买自己厂商的 OEM 证书。当然也提供了试用的方式,但是要让操作系统进入测试模式,比较麻烦,资料也较少,我们一起来实践一下。

主要是三步:

  • 生成自己的证书

  • 打开测试模式

  • 给自己的模型签名

生成证书

我们首先需要用到倍福自己的证书生成工具,在 Twincat 中的 TwinCAT->Software Protection,CreatNew 证书。

OEM 的名字比如填 test,邮箱填你自己的,然后就能生成了。注意版本要选二代并把 C++ 包含进去。

如果需要将别人的产品导入到工程中,其实你只需要包含别人给你的 OEM 证书,在这里导入后就可以是用了。

打开测试模式

如果购买了 TE0008 的厂商或者其他厂商的就不需要打开测试模式了,主要是在测试模式中 Twincat 不检验证书

bcdedit /set testsigning yes

完成后重启电脑。重启后右下角会出现以下标志:

给自己的模型签名

这里之后的需要你已经将模型生成出来了。

这里使用倍福官方的工具 TcSigntool

一般是放在 C:\TwinCAT\3.1\sdk\Bin 文件夹下,然后运行:

TcSignTool sign /f "C:\TwinCAT\3.1\CustomConfig\Certificates\<OEM>.tccert" /p <password> "<filepath>\<driver-name>.tmx"

密码和证书名就是你刚刚设置的,至于生成的模型应该在 C:\TwinCAT\3.1\Repository 下,只需要对模型 TwinCAT RT (x64) 运行时文件夹下的 tmx 文件进行签名就行。

编辑注册表

其实你做完上面几步你继续进行编译或者运行还是会报错,会提示没有相关注册表。

文件会在项目第一次点击运行后报错后生成!

这里请后续第一次运行项目的时候进行操作。主要会弹出以下错误:

需要如图蓝色位置去运行注册表文件,将相关注册表添加到系统中。至此重启项目,再次运行,就可以发现系统正常运行,出现以下警告:

测试模式下忽略签名认证,至此,相关对象正常运行。

示例代码和学习

在 matlab 中使用 TwinCAT.ModuleGenerator.Samples.List 命令即可调出所有例程,可开始学习相关例程与生成方式。

TE1410

对于 TE1410 和前面的 TE140x 的安装一样,其实你在安装 TE140x 的时候就已经将 TE1410 安装好了。包括证授权都与前面一模一样,TE1410 其实主要就是在 Twincat 中集成了 ADS 通信的相关接口。他能帮我们减少我们自己用 C++ 实现 ADS 接口的开发量,并且能直接读取后在 matlab 中分析。

安装

对于检查是否已经成功安装上了 TE1410,最简单的方法就是查看 Simulink 中是否有相关库,里面有一部读写函数和相关模块:

至于在 Matlab 命令行中的模块主要就是 TwinCAT.ADS 模块。

基本使用方法

中文网站上的相关资料也比较少,所以在这里介绍一下 Simulink 中 ADS 的使用。更多的资料可以前往倍福官方:Beckhoff Information System – English

课程: TwinCAT 3 MATLAB/Simulink 编程入门 | 倍福虚拟学院

推荐:MATLAB 的 help 界面中选择 Supplemental Software 下的 TwinCAT Interface for MATLAB 进行学习。

注意:为了保持 Simulink 和 Twincat 的运行节奏一致,将 Simulink 的步长最好调整成定步长,并且将其周期调成与 Twincat 任务一致。但是因为 ADS 也不是实时通信协议,所以不改也没有什么问题,可以根据自己的需求调整

  • Tc Symbol Interface

这个是我们实际使用中最重要的模块,我们拖出来后就可以直接连接到 Twincat 并直接看见其中的变量:

具体也可以通过 Twincat 的 Target Browser 下看到相关的变量

我们使用方法就是将变量像 Simulink 一样拖到输入或者输出,他就可以获取对应变量的值了:

当然如果想调整一些具体的配置可以直接使用 Edit 去图形化编辑每个链接的变量。

这是一个最简单的 demo,就已经能实现基本的数据采集了。

  • Async ADS Read\Write\ReadWrite

这三个模块本质上是将 ADS 的配置接口暴露出来了将 ADS 的 NetId 和 Prot 都暴露出来了,可以根据自己的需求去配置什么时候采集数据,什么时候数据采集完成了。

这是一个简单的 demo 用异步采集数据:

http://www.jsqmd.com/news/726582/

相关文章:

  • 构建支持多模型后端的智能客服系统如何设计 API 调度层
  • Sunshine游戏串流:10分钟打造个人专属云游戏平台的完整实战指南
  • 探究不同架构下向 C 函数传递过少寄存器参数的后果,安腾架构更严格!
  • 精准计量新时代:电磁/涡街/涡轮流量计行业领先厂家与技术亮点 - 品牌推荐大师1
  • 外卖半价周末省钱小技巧,我看谁还不知道 - 速递信息
  • #2026最新售楼部固装定制厂家推荐!四川优质权威榜单发布,实力靠谱成都等地厂家可选 - 十大品牌榜
  • KeyPass密码管理架构解析:如何在本地构建企业级安全防线
  • Wand-Enhancer 完全指南:3步免费解锁WeMod Pro功能
  • R语言工程化重大突破:Tidyverse 2.0插件自动检测/下载/验证/热重载四步闭环(实测比旧版快4.7倍)
  • XAPK转APK完整指南:3步解决Android应用安装难题
  • 手把手教你用STM32CubeIDE搞定Acconeer A121毫米波雷达(附完整代码与避坑指南)
  • Sunshine游戏串流:构建个人云游戏平台的完整指南
  • 2026最新盘点:适合小空间的小型半自动咖啡机推荐 - 博客万
  • 2026主流田园管理机厂家综合实力排行:效率与服务对比 - 奔跑123
  • 别再踩坑了!uniApp微信小程序头像上传,用chooseAvatar的正确姿势(附完整代码)
  • 深度解析Crossref REST API:5步构建高性能学术元数据查询系统
  • 修改ck用户
  • 终极网盘直链下载助手:一键获取八大平台真实下载地址,告别限速烦恼
  • 长沙实了个验仪器制造有限公司公司介绍 - 实了个验
  • 你的论文要过哪个AIGC检测平台?4种情况对号入座选对降AI工具!
  • 使用 Taotoken 官方风格 SDK 在 Python 项目中实现多模型切换调用
  • 手把手教你用Zoho Mail的Catch-All功能,无限别名邮箱白嫖HeyGen数字人生成
  • 为 Claude Code 配置 Taotoken 作为其大模型服务提供商
  • MCP协议与mcp-use工具集:模块化配置管理的工程实践
  • Streamlit部署实战:从本地开发到免费上线Heroku/Render,完整避坑指南
  • 2026年贵州液肥叶面肥市场深度横评:龙娟农业如何赋能县乡经销商与种植户 - 企业名录优选推荐
  • 【必收藏】2026年大模型应用开发工程师详解!程序员/小白必看,高薪破局就靠它
  • 告别抢票焦虑:DamaiHelper大麦抢票脚本完整指南
  • BetterJoy:如何在5分钟内将Switch手柄变成PC游戏神器
  • 佛山市添明再生资源回收:佛山铁粉钢丸供应哪家好 - LYL仔仔