亲爱的各位朋友们,欢迎浏览此交流贴。如何快速、高效、准确完成代码,我一直在探索。
本人是一位自控工程师,主要从事新系统的设计及工程服务。在工作过程中,发现经常要重复编写许多结构完全相同的程序段,如果一次一次复制、更改,将显得特别繁琐,特容易出错。此时,使用文本类编程语言实现起来将显得特别便捷。
下面给出一段我自动批量生成文本代码的实例,希望各位同仁彼此交流、探讨工作经验。例如在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 欢迎给出批评建议。谢谢各位朋友,如果感觉有一丁丁用处,帮忙顶一下