模块化设计更能考虑到完整的自动化项目,以及可靠性、可扩展性和维护性代码。
模块化自动化一般使用面向对象的编程体系和技术。虽然面向目标的自动化的呼声在业界并不是很高,即使一些自动化公司在不断推动,也许目前仍稍显超前,但对未来的控制程序而言,这仍然是一个非常重要的工具。
就技术而言,一般有两种标准International Electrotechnical Commission (IEC)和Unified Modeling Language (UML)。IEC 61499功能模块是离散控制中的主要标准,而IEC61804则聚焦在过程行业。
在面向对象的编程中,每个程序的任务需要考虑到对象和他们相互之间的关系。一个对象就是个完整的可执行的编码。它包含了功能和算法(或方法)所需要的数据,这些功能和算法能对数据进行处理。对象的一个重要的特性是"遗传性(inheritance)",也就是说,一个新的对象可由一个现有的对象产生。一个"类(CLASS)"可被看作是一个繁殖新的对象的模板,以相似的方式快速地产生特定的对象案例
例如,电机中的算法。一个程序员能建立一个电机类。这些编码包含重要的电机的输入、输出和控制代码,并对需控制的数据的类型进行描述,或由自身运行产生。当一个特顶的电机在各种自动化项目中被采用时,程序员使用电机类目标创建一个特定的电机对象。一旦建立和存储,这个对象被程序员采用,或在这个电机被使用的任何时候采用。
模块化的另一个特性是封装保密。对于一个对象来说,它不需要将它的方法和数据向外界公布。也许只需要提供数据界面以及将数据和事件作为输出。一般,供应商自有的算法都是独立隐藏的。
NI的自动化市场经理Don Holley指出,使用模块式设计和运行的自动化系统有三种好处:可重复性、可扩展性和可维护性。"一个程序员能开发、测试和管理软件元件,然后确认是否能再其他的应用中再次使用。模块能将一个应用中的各功能独立和分离,这种能力使得更容易地将一个自动化系统的各个不同的部分剥离开来。对于大型的、单电路应用在检错时有些困难,在支持和维护上费用也较高。"
Automation Intelligence的软件开发经理Brian Martinicky补充,"良好的软件项目会隐藏一些低层次的细节,使得高层次、更多组织性的方法能解决复杂的控制问题。数十年的控制经验能囊括在目标系统中,使得控制工程师不需要具备丰富的经验就能熟练地处理实现各种方案。"
如果对象是以图表表示的,那么控制工程师就能制定一个项目计划,并将这个计划转化成代码。这个计划对于项目的整体规划是十分重要的,而且对于通信和检错也十分重要。
Wonderware的VP及总经理Kevin Tock认为,"工厂是数以百计和千计的模块在共同工作,所以为什么我们不能模拟一个工厂,以软件模块描述工厂设备和功能。"
UML是一种模型工具。使用一个编程工具,程序员能用图形的形式描述一个控制系统,增加功能、数据和其他重要的成分,然后程序产生了代码,一般是采用C语言。
对象管理组织(Object Management Group,OMG) 的UML修正任务组(Revision Task Force)的主席Chris Kobryn一直支持开发标准核心技术结构库。这样的一个库中能帮助促使这些工具的实施,如模型驱动结构体系(Model Driven Architecture,MDA) 在不同公司的软件中应用。
Kobryn指出,模型驱动开发具有革命性,考虑到其他行业的相似性时,例如从CAD到CAM。这样,由模型中能生成最终产品--性能代码。基础库是一个各种可重新反复使用的集合,我们希望表示为制造和过程控制行业的最终用户结构的上层结构。
给模型增加一些更高级的算法,可实现更为复杂的模型和控制。MathWorks的市场主管Mike Dickens认为,在汽车、航空和工业自动化行业中,模型和仿真工具目前广泛应用于控制系统。这些工具用于对整个系统的动态运行过程建立模型,包括车间设备和控制器。
对于控制工程师而言,模块化技术的存在为他们改善了工作环节。随着开发的不断增加,自动化系统的模型建立和控制将越来越方便。