博途PORTAL里面快速生成模块批量调用

您所在的位置:网站首页 step7导入导出源文件 博途PORTAL里面快速生成模块批量调用

博途PORTAL里面快速生成模块批量调用

#博途PORTAL里面快速生成模块批量调用| 来源: 网络整理| 查看: 265

我们当下的任务,这些电机和阀门以及更多的其它类型的设备,通过调用上次已经建立好的库函数,来生成这些设备的实例。

我们可没有心情,对着变量表一个个的逐个调用,并在管脚上绑上输入输出。我们希望的是能快速生成。不在这种不需要动脑子的地方浪费太多时间。

首先,需要给这些设备建立背景数据块的实例。但是,即便最新的PORTAL V15的软件,也不支持用表格批量式的建立数据块。这一点反而不如STEP7 V5.5 。

找到了一个办法,利用外部源文件。

我们先试着建立一个电机NM块的调用。使用SCL语言的FC块中,跳出的数据块名称输入NM-1101

管脚上面绑上物理I/O地址之后,生成的程序:

未用到的,翘空的管脚已经自动隐藏了。

程序留着备用,去看程序块的文件夹中多了一个NM-1101的DB块,鼠标右键,选择从块生成源仅所选块…

在桌面上生成了一个NM-1101.DB的文件,用记事本打开,看到其内容为:

精简一下,去掉缺省的不重要的内容,并去掉换行, 简练到一行内:

DATA_BLOCK "NM-1101" "NM"BEGIN END_DATA_BLOCK

然后把其中的NM-1101替换为AAAA, NM替换为BBBB:

DATA_BLOCK "AAAA""BBBB" BEGIN END_DATA_BLOCK

复制到EXCEL的第一列中,把项目的设备位号表复制到第2列中,在第3列中标明其匹配的库函数名字,比如NM-1101就是NM。(NM本来就是MOTOR,我为了简单,直接把其库函数的名字改了。)部分表格如下:

然后在第4列的第1行,输入公式:

=SUBSTITUTE(SUBSTITUTE(RC[-3],"AAAA",RC[-2]),"BBBB",RC[-1])

公式的目的即把第1列的内容中的AAAA替换为第2列的内容,而其中的BBBB则替换为第3列的内容。

得到正确的脚本之后,将公式复制到下面所有的表格中,由此生成批量化的建立IDB的脚本:

把第4列的所有内容复制回记事本中,并在PORTAL软件中找到“外部源文件”的文件夹,通过添加新的外部文件,把DB文件添加进来:

然后在文件的右键中选择从源生成块,确认各种提示对话框后,几百个背景数据块就批量全部生成了。

这些DB块实在太多,占用目录树太多空间,所以在A100的文件夹中再建立一个IDB的文件夹,存放它们:

回到刚才生成的SCL程序,

"NM-1101"(FB_ON :="NM-1101:FB",

QCMD_ON => "NM-1101:Run");

如法炮制,精简到一行,并把位号替换以AAAA。前面的生成IDB的EXCEL页,复制一份,其中NM的部分的第一列,替换为现在的内容。

同样的办法,每个类型的设备,均调用一次,并编辑生成替换模板,在EXCEL中生成SCL程序文本。

复制第4列的内容到PORTAL软件的SCL程序中来,则生成了所有设备的调用程序。

由此,所有设备的手动部分就完成了。而且WINCC的接口也全都准备好了。只要连上WINCC,瞬间所有变量就完成了。如果这个项目没有任何自动逻辑,那基本上可以收工了。因为有自动逻辑,那我现在可以静心搞L3工艺层的自动逻辑了。

我连带摸索上面的技巧,到完成手动程序,总计用了不到4个小时。几百个设备。工作如此之轻松愉悦,我甚至还有心情同时整理一篇文章。

这个用于自动生成IDB以及SCL程序的EXCEL文件,我还可以保留,以后的项目再用,就不需要从头摸索模板了。那时,时间或许能从几个小时缩减到几十分钟。

这就是模块化标准化方法编程的魅力。在我上一篇文章《SMART 200也能做标准化编程》中,我看到有人回帖,不能理解我所宣扬的标准化是什么。我有些哑口无言,表示不知该如何作答。不知道你,如果有缘分能读到本文,是否能懂一些我们在做什么了?

要想更直接的进行交流,可自行联系作者。

附:作者:万泉河:微信号:TM178616417

来源/万泉河知识分享返回搜狐,查看更多



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3