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

TwinCAT项目打包

注:本人不常维护CSDN的账号,如果你发现需要VIP才能看,或者在开发机或者手机上希望不登录账号也需要复制代码,你可以进入我的个人博客查看

这里从我们熟悉的Twincat C++项目开始,记录一下在多机下的使用情况。

基础知识

tmc和tmx

TwinCAT Module Class (TMC):
官网链接:Beckhoff Information System - English
-用途:TMC文件定义TwinCAT模块的类信息,包括数据类型定义及其应用。用于指定模块接口和行为。
-创建和使用:开发人员使用TwinCAT TMC editor创建TMC文件。然后,可以通过它生成基础的C++接口代码,这些代码将被应用到TwinCAT项目中,以建立模块的结构和接口。
-发布:其在发布后将用于描述TcCOM模块的接口信息(直观理解就是我们Twincat开发中可以链接的变量栏),并且记录着相关tmx可执行文件的存储位置等信息。

TwinCAT Module Executeable (TMX):
官网链接:Beckhoff Information System - English
-用途:TMX文件用于打包TwinCAT对象(例如TcCOM模块和PLC库),以便于在工程计算机上轻松分发和安装。它们有助于在不同系统之间共享和部署已编译的TwinCAT模块。甚至其内也打包了一份TMC文件。用于在其他安装了Twincat XAE的电脑上使用
-创建和使用:开发和编译TwinCAT模块后,可以生成TMX文件,其中包含所有必要的组件。然后,可以在目标工程系统上执行这个文件。

环境搭建

运行环境

这里是不能使用TwinCAT的XAR的,在XAR中有说明在第三方提供商的PC上使用TwinCAT Runtime(XAR)时,无法保证完美的实时行为。跑XAR最好有完整的从硬件和BIOS到操作系统的保驾护航,但是如果用来跑跑ADS,安装XAR会很合适
链接XAR

根据安装XAE的方法进行安装,没有什么不同,拿着安装包一直点就行了。这里如果只是跑打包好的TMX是不用安装C++环境的。有基础的TwinCAT XAE就行。

开发环境

见:TwinCAT3 和 C++

项目构建

新建项目

对于安装好相关的C++开发环境后一定要注意项目的选择,这里选错了会导致没有版本信息,打包后无法在其他的电脑上加载和跑起来。
在新建项中需要新建TwinCAT Versioned C++ Project,否则会出现无版本信息的问题,且无法通过后续修改完成。
官网链接:TwinCAT 3 C++常见问答: 激活C++项目之后报错“AdsError:1820”,以及“Error Starting TwinCAT System” | 倍福虚拟学院
这个虽然问题不一样,但是无版本在后续发布的时候会有一个错误。

类模版可以根据使用场景自行选择

完成后进入tmc编辑器,在Vendor Classfactor中设置名字和版本,如果不设置后续publish会报错,报错可详见报错汇总

完成后进行 TMC初次代码生成 和 编译,查看输出文件类型,请检查输出类型是否为tmx。注意不能编译成sys为输出文件,如果sys会导致找不到对应执行文件,可看报错汇总

更新:改一下这里

签名证书生成

然后进行证书OEM证书的创建。在软件保护选项卡下创建一个。

输入公司名字和邮箱。记得需要勾选上签名tmx文件,不然这个是不能给tmx文件签名的。密码建议填上,后续签名的时候需要,当然也可以直接取消,创建一个无密码签名。然后重启软件

项目签名配置

接下来需要保证输出文件进行签名。在C++项目的属性页中的将Tc Sign下的TwinCAT signing的否改成是,然后在下面的证书中填写刚刚生成的证书名字和密码。其在生成的时候会自动签名
不然输出的TcCOM会在执行时报错,报错没有签名,详细可以看错误汇总。

输出成exe(建议)

这个时候在C:\TwinCAT\3.1\Repository\C++ Module Vendor文件夹下应该能看见对应的项目发布的代码了,但是这个时候的tmc和tmx还是分开的,传输的时候需要以压缩包的形式传,下一个人又要把他解压下来放到系统(就是前面那个)的Repository文件夹下,是很费事的。TwinCAT为我们提供了一个exe的形式,在其他电脑上直接执行,自动复制到相应文件夹下。
要打成exe格式,还是需要在属性页下Tc Publish下将Archive设置成你想输出的可执行文件的名字。然后你能在项目的C++源代码目录下找到,或者自行设置或者看输出过程中打印出的文件目录。

接下来就可以开始换到执行电脑运行了

换到运行环境

原电脑输出证书

我们需要输出两个证书,一个是系统的证书,一个是TwinCAT软件保护的OEM证书(买了TC0007/8才需要,没买在测试证书模式中不需要)。
系统证书的输出最详细的在这个文档的10-11页的2.2中有详细描述:
TwinCAT3_C++_Simulink教程V3.11.pdf(大家自己上网搜索一下)

因为搭建开发环境的时候系统证书也是按照这个教程生成的,这里就不单独写了,按照这个教程来就行。

配置运行电脑证书

系统证书的按照最详细的也是在这个文档的12-15页的2.2中有详细描述:
TwinCAT3_C++_Simulink教程V3.11.pdf(大家自己上网搜索一下)

因为没有买TC0007或者TC0008,在没有官方签名授权的情况下就是需要进测试证书模式下的,这个没办法,暂时花点时间配置一下,如果后续买了后就没有这些麻烦事了。
(买了TC0007/8才需要,没买在测试证书模式中不需要)对于TwinCAT软件保护的OEM证书进入软件保护的配置,Import进去就行,他会自动复制到C:\TwinCAT\3.1\CustomConfig\Certificates
然后重启软件

如果不安装软件证书运行TcCOM的时候将会被识别不信任的OEM厂商,在测试模式下你需要手动添加一个注册表,严格来说不算一个报错,具体报错看下面错误汇总。

TcCOM安装

如果是exe文件,直接安装就行,如果是压缩包,记得自行解压后放在C:\TwinCAT\3.1\Repository\C++ Module Vendor

运行

新建一个项目,在TcCOM下就能看见对应的C++模块了,如果看不到Reload一下。如果更新了文件,不管变没变版本号,这里一定要点一下Reload

注意,如果你安装了新版本的代码,请一定要Reload一下,然后在对应Object下选择Reload TMC File。然后将新版本的TMC文件选择一下。不管有没有改版本号,只要更新了文件,都需要在这里也选择一下新的文件。同时,也可以把object下面的Auto Reload TMC勾选上(不能保证万无一失)。最好删掉_Boot文件夹,让其重新加载一下。当然最好的方法还是不同版本记得用不同版本号。

接下来他就会成为像C++开发时候的接口一样,自行链接变量就行

然后第一次运行可能会报一个错误。
certificate currently not trusted. Import '...' to add OEM to trusted list
买了TC0007/8加了软件保护的信任OEM列表就没有这个报错,没买在测试证书模式中会提示你需要将对应注册表添加到系统中,这个是正常的流程,不要惊慌。只有在测试模式下才会有这个报错,TwinCAT才会自动生成那个注册表。
下面错误汇总我也会同步写进去。
到Import '...' to add OEM to trusted list提示的路径下找到注册表文件,执行以下就行。
接下来运行相关OEM签名的TcCOM就都不需要再执行了!正常运行和开发就行。

错误汇总

error : The library name must be specified when publishing a versioned library.

这是在TMC中没有设置版本号,需要有版本号后才可以发布
完成后进入tmc编辑器,在Vendor Classfactor中设置名字和版本。

path/file not found/ AdsError: 1820 (0x71c, ADS ERROR: invalid class id) << failed!

这个在sys的可执行文件的时候会出现这个错误,TMX文件暂时没有发现这个问题,但感觉其本质不出在sys文件上。

遇到这种情况暂时先保证使用TMX文件作为输出可执行文件,正常创建项目后第一次编译就能看见输出文件格式,一般就是TMX,至于为什么会出现sys暂时测试中没有出现过。
更新:改一下这里

no certificate found in PE image file

这个就是发布的文件到另一个项目或者文件中时,如果tmx没有签名,会出现这个报错

出现这个问题需要保证输出文件进行签名。在C++项目的属性页中的将Tc Sign下的TwinCAT signing的否改成是,然后在下面的证书中填写刚刚生成的证书名字和密码。其在生成的时候会自动签名。

certificate currently not trusted. Import '...' to add OEM to trusted list

这个是因为没有不信任模块对应的OEM证书。买了TC0007/8,在软件保护中添加了证书就不会有这个报错。且只有在测试模式下才会有这个报错,TwinCAT才会自动生成那个注册表。

到Import '...' to add OEM to trusted list提示的路径下找到注册表文件,执行以下就行。
如果买了TC0007/8在软件保护中Import一下OEM证书。

Error loading repository driver '...' - unsigned certificate (only accepted in test mode)

这个是因为没有进入测试模式,是不能使用不信任的OEM厂商的TcCOM的

如果买了TC0007/8那不应该出这个错,检查一下是否在软件保护中信任OEM证书。如果没买,在保证MyTestSigningCert证书添加成功的情况下,CMD管理员模式输入bcdedit /set testsigning yes命令后重启就行。

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

相关文章:

  • 【2026实战】AI Agent技术全景与核心组件解析:Python+Go构建企业级AI Agent实战指南
  • 避坑指南:2ASK解调中的均值滤波与同步判决,如何用HLS在FPGA上稳定实现?
  • 爬虫开发者必备:claw-shield反反爬虫工具核心架构与实战配置指南
  • 别再死磕UDF了!Fluent内置Lee模型搞定沸腾冷凝,手把手教你从零配置
  • 针对你日志中 Referer 为空 的情况,这里做一个详细解释
  • 拆解物料管理erp系统的核心功能,看物料管理erp系统如何解决库存积压与缺料难题
  • golang如何理解协程调度抢占机制_golang协程调度抢占机制技巧
  • Java 篇-项目实战-黑马点评-笔记汇总
  • 一颗IPM如何省去8颗分立元件从工程计算看智能功率模块的设计价值
  • idea中使用免费claude code的claude-opus-4-6模型202604
  • 别再只盯着PCIe配置空间了!手把手带你玩转CXL RCRB与MMIO寄存器
  • MoltGrid:分子构象生成与3D网格化工具在AI药物发现中的应用
  • 【LeetCode: 划分字母区间】贪心算法
  • 时间晶体管理:软件测试从业者的前沿视角
  • 量子计算在数据可视化中的革命性应用
  • 终极跨平台模组下载方案:WorkshopDL让非Steam平台玩家也能畅享创意工坊
  • 洛谷 P1305:新二叉树 ← DFS + 哈希表优化
  • Windows上的安卓应用安装神器:APK Installer全面指南
  • 【超详细】Allan偏差+PSD八大可视化一文吃透:随机游走频率噪声从原理到画图全流程(附公式与工程避坑)
  • 魔兽争霸3终极助手:WarcraftHelper完整配置与功能详解指南
  • 倒计时126天:谷歌静默更新将彻底剥夺你的安卓所有权
  • 2026届学术党必备的降重复率网站横评
  • ARM中断控制器优先级寄存器解析与实战
  • 2026年围挡仿真草坪厂家选型推荐:仿真植物景观哪家好,仿真绿植造景,仿真草坪公司,仿真草坪哪家好,排行一览! - 优质品牌商家
  • 2026年Q2出国务工派遣服务核心能力深度解析 - 优质品牌商家
  • 5步掌握semi-utils:专业照片批量水印处理终极指南
  • 批量图片下载终极指南:3分钟学会高效采集Google、Bing、百度图片资源
  • 别再只会ChatGPT了!用Langchain+文心大模型,5步搭建你的专属知识库AI助手
  • Beyond Compare 5密钥生成器:三步获取永久授权的终极指南
  • 深入解析Google API变迁:从Plus到People