PLC用户普遍反映编程困难,这里面的一个重要原因是程序的可重用性太差。
在其他计算机行业中,程序都是划分成模块来开发的。首先开发许多函数和过程,然后把它们组装成完整的程序。整个程序呈现出一个良好的层次性结构,程序复杂性得到良好的控制。此外,程序开发中可以大量使用前人开发的程序库,所以,复杂的任务也可以通过简单的方式来解决。
在PLC程序语言中,虽然也有过程和函数机制,但是程序员很少使用它们进行编程。许多PLC任务也不方便用函数和过程来表达。
比如,中华工控网上的一个案例:用一个按钮控制n(n=10)个灯的开关:
http://bbs.gongkong.com/Details/201212/2012121822254300001-1.shtml
如果是在计算机的其他领域,类似的问题肯定会用一个带参数n的过程来写,设置n=10就控制10个灯,
设置n=5,就控制5个灯。可是在这个题目的众多解决方案中,没有一种是采用这种方式书写的。
带参数的过程可以保留起来,便于在其他场合重新使用。使用者也不必知道
程序的具体实现原理,只需要调用这个过程,设定参数,就可以使用这个过程。这样一来,程序设计
就得到简化。再进一步,人们可以用大量过程和函数构造程序库,把常见工作归结在程序库中,其他
用户在需要时直接调用程序库中的程序,极大地方便了编程。
但是在PLC领域中,构造过程并不方便,因此也就更不能构造程序库。所以,每次编程都需要从头做起,
这样一来,编程当然就困难了。
为了解决这样的问题,我们的建议是构造可重用的程序,下面是我们做的一个网页:
http://www.lingcore.com/plc/lib/
这个网页上把一个按钮控制n个灯的问题做成一个参数化的程序,用户输入灯的个数,
输入变量名字,第一个输出变量名字,一个对应的程序就自动生成出来。比如,
设灯的个数为8,输入变量为I0.2,输出变量为Q0.3,按下提交键,在文本框中就出现一个控制8个灯
的S7-200指令表程序。把这个程序复制并粘贴到编辑器中,然后保持到一个.awl文件。
在MicroWin软件中导入这个文件,就可以看到这个程序的梯形图。
如果在你的程序中需要这一功能,就设置一组合适的参数,然后把得到的程序插入到自己
的程序块中,实现程序重用。
如果有网友希望把自己的程序通过这种方式做成参数化的可重用程序,我们可以提供帮助。
在集成电路行业,现在的电路设计方法并不是从头开始设计,而是使用IP。一部分人
专门写IP,另一部分人把IP组装起来成为最终设计。
未来的PLC设计也可能采用类似IP组装的方式进行开发,一部分人开发可重用的PLC的IP,
另一部分人直接使用IP做系统开发。