工控编程之小懒人展示二(代码批量生成小工具) 点击:303 | 回复:0



beiyies

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 12回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2012年4月05日
发表于:2014-03-21 22:24:59
楼主

亲爱的各位朋友们,欢迎浏览此交流贴。如何快速、高效、准确完成代码,我一直在探索。


本人是一位自控工程师,主要从事新系统的设计及工程服务。在工作过程中,发现经常要重复编写许多结构完全相同的程序段,如果一次一次复制、更改,将显得特别繁琐,特容易出错。此时,使用文本类编程语言实现起来将显得特别便捷。


   下面给出一段我自动批量生成文本代码的实例,希望各位同仁彼此交流、探讨工作经验。例如在ABB控制器中,从第三方设备通讯过来大量数据,其中要对部分数据进行报警组态。要编写以下代码:

AlarmCondBasic_1( Signal := ZXA_2001,   (*进站紧急切断阀故障指示*)

                 SrcName := ScNam1,

                 CondName := CndNam,

                 Message := Message1 );

AlarmCondBasic_2( Signal := FRA_0001, (*全站火灾报警*)

                 SrcName := ScNam2,

                 CondName := CndNam,

                 Message := Message2 );  

AlarmCondBasic_3( Signal := ZXA_5001,   (*出站紧急切断阀故障指示*)

                SrcName := ScNam3,

                 CondName := CndNam,

                 Message := Message3 );


例如上述实例中,红色字体 ZXA_2001 / FRA_0001 / ZXA_5001 为直接从点表中复制,注释部分 (*进站紧急切断阀故障指示*)也是直接从点表中复制。用黑色字体显示的部分,是按数字递增规律命名的中间变量(该中间变量在Init中引用点表拷贝的内容)。


   运行CodeCopyer.exe软件,打开绝对引用列表,将通讯点表相关内容拷贝到绝对引用列表中。如下图所示:



然后在代码区中写出两组示例代码,选择一组基准代码的行数,如下图,对于引用从点表拷贝的部分,用绝对引用符$$A/$$B/$$C/$$D代替。单击Generate,将会自动生成出所需的代码:



其实上述变量ScrNam1/SrcName2/SrcNam3……的Init值应该分别设成 'ZXA_2001'/ 'FRA_0001' / 'ZXA_5001' 也完全能够通过 事例代码 '$$A' 的方式实现(基组行数设成1)。

   上述代码仿写基组行数可以自由设定,当设为1时,与Excel拖动类似,但codeCopyer支持多个数据同时变化。如

001_AI2_BI1_5_1_1

002_AI2_BI2_5_2_1将按以下规律复制:

003_AI2_BI3_5_3_1

004_AI2_BI4_5_4_1


以上工具是本人根据工程中常用的需求自己用VB写出来的,要是有需要的朋友,共享给大家使用。如附件无法下载,可以到CSDN搜索CodeCopyer,或Mail给我igetty@tom.com   欢迎给出批评建议。谢谢各位朋友,如果感觉有一丁丁用处,帮忙顶一下

正在下载,请等待……
下载附件需0积分!



热门招聘
相关主题

官方公众号

智造工程师