[西门子] 如何将博途SiVArc自动生成的HMI面板实例和画面按工位

[复制链接]
查看657 | 回复0 | 2024-4-27 17:02:44 | 显示全部楼层 |阅读模式


在这篇文章里,主要介绍了如何利用博途的SiVArc插件自动生成的HMI画面

博途SiVArc-自动生成HMI画面功能使用教程

然后前两天在跟群友交流的时候,群友向我请教了一个问题,如将自动生成的设备面板实例按工位分类,和将相同类型的设备的画面放在同一个文件夹里

例如,我一条线体,五台机器人,5个电器阀,分为两个工位(区域),工位1的设备有R1/R2/R3/R4,夹具1有阀1,阀2,剩下的设备为工位2的(夹具2),需要把工位1的设备的面板实例,自动分配到工位1画面里,然后,所有机器人的画面放一个文件夹里,阀的所有画面放到另外一个文件夹里

我在   博途SiVArc-自动生成HMI画面功能使用教程  这是教大家如何自动生成的HMI画面,并没有考虑到上述情况

后面,我有空研究了一下手册,发现是可以做到这个需求的。

以下是详细教程。

PLC程序:



OB1调用ST10和ST20的FC块



ST10_Main调用机器人和夹具程序



ST10_RobotControl 里调用三台机器人的控制块



ST10_A车型_夹具1 里调用2个阀的控制块



ST20工位的程序调用逻辑跟ST10工位一样的

HMI侧

我在   博途SiVArc-自动生成HMI画面功能使用教程  这篇文章中已经教大家如何自动生成的HMI画面了,如果我们需要实现如将自动生成的设备面板实例按工位分类,和将相同类型的设备的画面放在同一个文件夹里这个需求

就需要我们在设置模板的时候设置一些参数



生成模板后右键属性



选择名称



需求1:自动生成的设备面板实例按工位分类

我这里打算用ST工位的总调用FC作为工位的分类,因为每个ST只有一个,然后在前面加上Robot_001作为前缀 这个表达式为:"Robot_001_"&StructureBlock.SymbolicName

通过官方手册都实例可知:







我的理解是自动生成的设备画面按工位分类的原理就是通过读取画面规则中触发规则的功能块的某一级的调用的名称进行分类,这个某一级调用的FC或者FB在整个项目中只调用了一次。例如我现在的例子里ST10_Main这个FC作为工位分类的依据,它在触发规则的机器人功能块的调用结构里属于一级调用





在手册里,我们找到表示调用层级的第一级程序块的函数:StructureBlock

这个函数象对第一级块进行绝对寻址,可访问第一级块及其数据块的各种属性

下面是这个函数具体属性的用法
• “FolderPath”对象属性SubModuleBlock.FolderPath访问块在项目树的“程序块”文件夹中的路径,例如,“Plant\Plantsection\Productionline”• “Name”对象属性SubModuleBlock.Name 访问块的内部名称,例如,“FB1”。
  • “NetworkComment”对象属性
SubModuleBlock.NetworkComment  访问在块的程序段中输入的注释。
  • “NetworkTitle”对象属性
SubModuleBlock.NetworkTitle 访问用于对块进行实例化的程序段的标题。
  • “Number”对象属性
SubModuleBlock.DB.Number 访问块属性中的块编号。
  • “Parameters”列表
SubModuleBlock.Parameters("Activate").Value 访问块参数。
  • “SymbolComment”对象属性
SubModuleBlock.SymbolComment 访问块属性中用户自定义的注释。
• “SymbolicName”对象属性

SubModuleBlock.SymbolicName 访问用户自定义的块名称。

• “Title”对象属性

SubModuleBlock.Title 访问块属性中的块标题。

• “Version”对象属性 SubModuleBlock.Version

如果块是一个块类型的实例,则通过该表达式可访问库中块类型的类型版本。
我这里用的的是:StructureBlock.SymbolicName 访问用户自定义的块名称。并在前面加上Robot_001作为前缀。这样子就可以将自动生成的设备画面按工位分类了。需求2:将自动生成相同类型的设备的画面放在同一个文件夹里

选择画面组



输入:"SiVarc"&"\\001_Robot"这里的意思就是将该自动生成的画面放在命名为001_Robot的画面组里上面是机器人的画面,下面是阀的





阀这里我的程序架构采用的调用结构是一套夹具用一个FB块做主调用,FB里再调用每个阀阀的FB功能块,画面分类,我是打算按每套夹具进行分类通过调用结构得出,这个夹具的FB主调用功能块属于二级调用。在手册里,我们找到表示调用层级的第二级程序块的函数ModuleBlock这个函数访问块和相关数据块的各种属性下面是这个函数具体属性的用法
• “FolderPath”对象属性

ModuleBlock.FolderPath 访问块在项目树的“程序块”文件夹中的路径,例如,“Plant\Plantsection\Productionline”

• “Name”对象属性

ModuleBlock.Name 访问块的内部名称,例如,“FB1”。

• “NetworkComment”对象属性

ModuleBlock.NetworkComment 访问在块的程序段中输入的注释。

• “NetworkTitle”对象属性

ModuleBlock.NetworkTitle 访问用于对块进行实例化的程序段的标题。

• “Number”对象属性

ModuleBlock.DB.Number 访问块属性中的块编号。

• “Parameters”列表

ModuleBlock.Parameters("Activate").Value 访问块参数。

• “SymbolComment”对象属性

ModuleBlock.SymbolComment 访问块属性中用户自定义的注释。

• “SymbolicName”对象属性

ModuleBlock.SymbolicName 访问用户自定义的块名称。

• “Title”对象属性

ModuleBlock.Title 访问块属性中的块标题。

• “Version”对象属性

ModuleBlock.Version 如果块是一个块类型的实例,则通过该表达式可访问库中块类型的类型版本。

所以我这里用的的是:ModuleBlock.SymbolicName 访问用户自定义的块名称。并在前面加上Valve_002_作为前缀。

画面组的表达式为"SiVarc"&"\\002_Valve"

下面是自动生成后的完整的效果



SIVARC这个插件里还有很多实现其他功能的函数,有需要的朋友可以拿手册来研究一下,或者在本篇文章下留言,大家相互探讨学习学习


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则