暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用Variant Management实现同系列机型的程序统一

Lizzy的倍福园地 2021-07-13
556

在工作中实践总结

在朋友圈分享讨论

做最接地气的公众号



客户需求

现有机型是CX2030EtherCAT总线带8个伺服控制器,派生机型需要9个或10个从站。有没有什么方法可以激活或取消EtherCAT从站,而不需要修改硬件配置。我项目的程序以后可以写成一个版本(不需要分8910不同从站)。

另外我想在HMI操作,直接切换配置,这样用户如果配置有所改变,只需要进行HMI设置即可实现,不用我们到现场在进行现在程序。


解决办法

TwinCAT 3.1.4024及以上版本支持VariantManagement(变体管理)功能,可以在开发电脑上用同一套项目文件(.tszip)生成不同硬件、软件选项的Runtime配置和运行程序,下载到n个派生机型。

说明:这里重点是同一套TwinCAT项目文件,适用不同的机型。如果这个系列的机型都要程序升级换代,那么就只要在这一套项目文件里修改就可以了。与n个项目文件对应n个机型相比,程序升级不仅要做n次,还要确保它们的一致性。


以下是该文档的缩略版(截图不齐),全文4279字,阅读约需要5分钟。
完整的PDF版请参考倍福虚拟学院-开学第一课——陈老师课程专区:
https://tr.beckhoff.com.cn/mod/folder/view.php?id=1878


正文

1      1个变体管理的实例

1.1    项目需求

在客户要求的基础上简化为:
基本机型“Base”,含8个基本轴Axis[1]Axis[8]
派生机型“Ex_1”,含8个基本轴和扩展轴Axis_Ex1,硬件是EL7201带伺服电机
派生机型“Ex_2”,含8个基本轴和扩展轴Axis_Ex2,硬件是EL7047带步进电机
派生机型“Ex_12”,含8个基本轴和扩展轴Axis_Ex1Axis_Ex1

1.2    TwinCAT项目启用变体管理

1.2.1   准备工作

-开发电脑上安装TwinCAT 3.1.4024.10
-运行TwinCAT XAE并显示Variant Management工具条
如下图1处在菜单栏区域右键菜单中选中TwinCAT XAE Project Variants”,然后就会显示Variant Management工具条如图中2处。        

1.2.2   打开或者新建项目

因为几个派生机型的轴数不同,按VariantManagement的功能是可以在PLC里实现声明不同的轴数以及某个变体下才执行某些代码的。
1.2.3   新建4个变体

-打开项目变体管理器

新建4Variants,再建两个Group分别是MinimumMaximumMaximum表示轴最多的时候10Axis,包含的变体是BaseMinimum表示轴最少的时候,包含的变体是Base。注意,Ex_1是指Axis9启用,Ex_2Axis10启用,所以包括这两个变体的Maximum就是Axis9Axis10都启用。

补充:实际上因为PLC程序只在内存里运行,所以变量或者轴数声明多了,代码多了,并不影响大局。这里为了演示变体管理功能在PLC变量声明和程序里的应用,采用了实际多少物理轴就声明多少PLC轴和NC轴的做法,具体见1.3节。

 

1.3    PLC程序中的变体设置

1.3.1   PLC项目的Define属性启用变体管理

PLC项目的属性中Project Variants下的Define设置为True
此时 PLC项目图标右上角出现蓝色,代表启用项目Variant Management功能,并且Defines的条件可以直接使用前面变体管理器中声明过的变体Variants,换言之变体可以直接作为Define的编译条件。

1.3.2   变量声明中的条件编译

要在不同变体下,某些轴变量存在,而某些不存在,就采用VAR_GLOBAL中的方式;
要在不同变体下,直接修改数组变量的个数,就采用VAR_GLOBALCONSTANT的方式; 

1.3.3   PLC代码中的条件编译

此代码仅供演示,具体到应用项目,也可以选择在不同变体下所有变量都无条件声明,所有代码都无条件编译,只是部份变量不链接到NC轴或者硬件即可。 

1.3.4   设置PLC程序的Define

写完程序之后,链接PLC变量到NC或者IO通道之前,要编译PLC程序。对于启用于变体管理的PLC项目,在编译之前要选择编译条件——基于哪个变体来编译,具体的做法是在PLC项目的Project页面的CompilerDefine中进行设置:

默认的选项是勾选Implicit,而Manual为空。此时,变体管理工具栏中显示的当前变体就会自动出现在Implicit栏,如果该变体还被包含于某个Group,则这个Group也会出现在这里。
如果不勾选Implicit,则把要编译的变体写在Manual栏,有多个就以逗号隔开。在本例中如果同Manual中填Ex_1,Ex_2,编译的结果就等效于Ex_12
提示:虽然ManualImplicit可以同时使用,但是建议一种机型对应一种变体,对于第一次使用变体管理功能,一一对应的方式比较简单,不容易在多种变体组合与多种机型对应的时候产生混乱。
例如,Manual处填写BaseEx_1,编译结果就是:

1.4    NC轴的变体设置

1.4.1   TwinCAT NC中配置10个轴

其中Axis 9作为将链接到Ex_1轴,Axis10将链接到Ex_2轴。

1.4.2   设置Axis9Axis10属性中的Project VariantsDisable项为True

Project Variants中的Disable项为True表示轴的Disable属性启用了变体管理——当前的Disable属性仅对现在这个变体适用。

1.4.3   设置Axis9Axis104个变体下的Disable属性

先设置Axis9在变体Base中的属性:

上图表示TwinCAT项目用于Base变体的机型时,Axis9是禁用的。
杂项下的Disabled是指属性是否禁用,在这里选择Disabled等效于从轴的右键菜单Disable 
同样的办法设置Axis9Axis104个变体下的Disabled属性

Axis 9

Axis 10

Base

Disable

Disable

Ex_1

Enable

Disable

Ex_2

Disable

Enable

Ex_12

Enable

Enable

 

1.5    IO Device的变体设置

在本例中,基本的8个轴都设置为虚轴,仅仅把Axis9Axis10用作物理轴,计划分别链接到EL7201(伺服驱动模块)和EL7047(步进驱动模块)。

1.5.1   先扫描 IO硬件或者打开现有的TwinCAT项目定位到IO Device

1.5.2   设置可选硬件的Project VariantsDisable项为True

本例中就是EL7201EL7047

1.5.3   设置硬件的Disabled属性

杂项下的Disabled是指属性是否禁用,在这里选择Disabled等效于从轴的右键菜单Disable 
同样的办法设置EL7201EL70474个变体下的Disabled属性

EL7201

EL7047

Base

Disable

Disable

Ex_1

Enable

Disable

Ex_2

Disable

Enable

Ex_12

Enable

Enable

 

1.6    变量链接

1.6.1   NC与伺服链接

无论当前选择什么变体,所有NC轴和IO模块、伺服从站都会出现,虽然有的可能打上了禁用标记,但是仍然可以参与变量映射。 

1.6.2   PLC变量与NCIO的映射

由于PLC变量按不同的变体进行条件编译,生成的TMC文件中的IO变量可能不同,所以PLC变量与NCIO的映射,必须在PLC条件编译完成以后来进行。

1.7    System的变体设置

1.7.1   设置Real-time的属性启用变体管理

如果一套TwinCAT程序用到几个机型上,并且分别使用单核、双核、四核控制器,那就需要用变体管理把Realtime设置也管起来。具体做法是,

 (1)   Project VariantsParameter设置为True

Real-time的属性页面把Project VariantsParameter设置为True,如图:

这样Settimg页面的所有设置都只对于当前的变体有效。

 (2)   选择不同的变体,编辑Setting页面的各项

如果这套TwinCAT程序只使用了1CPU内核,那么也不是必须启用Real Time变体管理。总的来说,推荐的做法是通过变体管理,把运行在高性能CPU上的TwinCAT任务周期缩短,在低性能的CPU上时则任务周期加长。

如果使用这套程序的机型,有的是单核CPU,有的是多核CPU,为了充分发挥TC3的性能,在多核CPU上就有必要分配部分任务到非第一核。这时就一定要用到变体管理了。

 

1.7.2   设置System属性启用变体管理

 (1)   SystemProject Variants属性的Target Address项设置为True

TwinCAT项目可以保存当前的目标控制器,如果调试的时候几个机型的控制器都在线上,可以使用变体功能来选择控制器。
个人感觉这个功能应该很少使用,因为通常都是一次调一台机,而且一台机型也可能不只一台机,用变体选择目标控制器意义不大。

 (2)   切换变体,选择目标控制器

例如变体Base用于LocalEx_1用于CX-3BD290


1.8    激活配置,创建引导程序

1.8.1   步骤

 (1)   拆装硬件(EL7201或者EL7047

 (2)   选择与硬件匹配的变体(BaseEx_1Ex_2或者Ex_12

 (3)   编译PLC程序,并链接好NC或者IO变量

 (4)   链接NCIO变量

 (5)   激活配置

 (6)   PLC程序下载运行

 (7)   调试完成,创建引导程序 

1.8.2   结果

4种机型可以使用同一套TwinCAT程序,维护方便。

 

2       关于变体管理的补充说明

2.1     通用说明

 (1)    变体管理功能是TwinCAT 3开发环境的功能,对控制器没有要求。

经测试,在TwinCAT 3.1.4024.10的环境下,使用变体管理功能的TwinCAT测试程序下载到CX5130+TC3.1.4022.30,也可以运行起来。既然与控制器TwinCAT 版本无关,也就无须授权。
当然这仅仅是测试,首推的做法还是使用与控制器匹配的TwinCAT XAE或者RM
又测试在TwinCAT 3.1.4024.10的环境下,装载4022.27RM,此时开发环境中变体管理的工具栏不可用了:

 (2)    切换变体即更换硬件、软件的选项,只能在TwinCAT 3开发环境中完成,

切换变体后,必须激活生效,激活后必然会覆盖当前的TwinCAT配置。

所以不能直接在HMI实现。 

 (3)    变体管理可以实现以下几方面的选项:

PLC代码和变量声明;

硬件IO模块启用及参数配置;
NC轴的启用及参数配置;
系统配置,包括目标控制器地址(TargetAddress)和Realtime选项(TwinCAT TaskCPU核的分配,隔离核设置等)

2.2     变体选项:Parameter

 (1)    NC轴参数的变体管理

大部分用户希望用变体管理实现硬件“有”或者“没有”的切换,实现上变体管理还可以实现参数的切换。比如一个机型某个NC轴的丝杠导程是10mm,另一个机型的导程是5mm,那个NC轴的脉冲当量就可以用变体管理来设置。
先把轴的属性中Project Variants下面的Parameter设置Selected–see PV column

这里选择None是说没有变体管理,这个轴在所有变体下的参数都是一样的;
All是说所有参数都由变体来管理
最常用的是Selected –see PV column,表示只有在PV列勾选中的参数才随变体切换而改变。选中该项后,NC的参数就多了一列PV

 (2)    EL模块参数的变体管理

先把轴的属性中Project Variants下面的Parameter设置为True

然后就可以设备EL模块分别在不同变体下的StartupList了,比如在变体Base下,EL7201的速度环增益设置为134,而在变体Ex_1下,速度环增益设置为150
在变体Ex_1下,EL7201的速度环增益设置为150
在变体Base下,EL7201的速度环增益设置为134

 

2.3    变体选项:Mapping

变体管理可以管理的内容还包括Mapping关系。启用该功能需要设置属性Project Variants中的MappingTrue,然后分别设置不同变体下轴的与PLC或者伺服的映射关系:

 (1)    场景ANC轴映射到不同型号的伺服

NC轴与PLC变量的对应关系一般不变。但是不同机型选择的伺服驱动器的型号、功率甚至品牌不一样都是有可能的,这时候用变体管理来切换一个NC轴对应的驱动器就很方便。

 (2)    场景B:办公司调试时NC轴不映射到硬件

用变体管理切换Mapping另一个应用是用实现虚轴与实轴的切换。比如工程师在车间调试的时候要带实轴,在办公室调试的时候要用虚轴。如果新建一个变体Virtual,在该变体下,所有NC轴都不链接硬件,并且EtherCAT网络禁用,目标控制器是Local,那么工程师在办公室调试时只要打开原项目切换到Virual变体就可以工作了。

 

3       最终用户在HMI上实现变体切换

思路:综合应用变体管理与Boot文件夹管理
做法:在出厂前用同一套TwinCAT项目,选择不同的变体,生成多套Boot,例如BootABootBBootC,在HMI上做按钮令PLC调用不同的.bat文件,实现从BootABootBBootC复制内容到\TwinCAT\Boot\文件夹),此后HMIPLC调用TwinCAT重启命令或者操作工人重启控制器,都可以令硬件配置和程序换成变体对应的组合。
优势:与不用变体管理,直接用3TwinCAT项目生成3boot文件夹相比,节约的是开发工程师的时间,以及程序版本升级、后期维护的效率,降低出错机会。
局限性:此法必须固定各机型的Boot文件夹名称,并且仅适用于标准Windows,因为CE系统不能直接执行.bat文件。 
变通的方法:不用.bat而用高级语言写一个.exe文件,可以在标准WindowsCE上运行,实现类似功能。如果工程师会高级语言,这种方式实际上更加灵活,可以在HMI实现文件夹名称的列表、选择、确认,让exe去复制特定的文件夹,而不必在.bat文件中绑死各机型的Boot文件夹名称。

 

**以上仅仅是提供一个思路,有兴趣的用户可以自行实现。

 



效果


遗留问题



用IE浏览器可访问本文的PDF完整版:

http://www.baclizzy.com.cn

按日期查找即可;

喜欢本文?识别二维码,可关注公众号


文章转载自Lizzy的倍福园地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论