标准化程序模板做好了,现在一个新的项目来了。要在模板基础上建立新的项目程序。
首先第一步是建立符号表,在设备位号列表基础上,用EXCEL表格,并充分利用EXCEL的各种技巧,整理好PLC符号表,并导入到PORTAL程序中。
我们当下的任务,这些电机和阀门以及更多的其它类型的设备,通过调用上次已经建立好的库函数,来生成这些设备的实例。
我们可没有心情,对着变量表一个个的逐个调用,并在管脚上绑上输入输出。我们希望的是能快速生成。不在这种不需要动脑子的地方浪费太多时间。
首先,需要给这些设备建立背景数据块的实例。但是,即便最新的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
联系客服