TwinCAT项目打包
注本人不常维护CSDN的账号如果你发现需要VIP才能看或者在开发机或者手机上希望不登录账号也需要复制代码你可以进入我的个人博客查看这里从我们熟悉的Twincat C项目开始记录一下在多机下的使用情况。基础知识tmc和tmxTwinCAT 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 RuntimeXAR时无法保证完美的实时行为。跑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命令后重启就行。