IEC 61131-3的优势在于它成功地将现代软件的概念和现代软件工程的机制用于PLC传统的编程语言。具体表现为:
1)采用现代软件模块化原则。
★编程语言支持模块化,将常用的程序功能划分为若干单元,并加以封装,构成编程的基础。
★模块化时只设置必要的、尽可能少的输入和输出参数,尽量减少交互作用,尽量减少内部数据交换。
★模块化接口之间的交互作用,均采用显性定义。
★将信息隐藏于模块内,对使用者来讲只需了解该模块的外部特性(即功能,输入/输出参数),而无需了解模块内算法的具体实现方法。
2)IEC 61131-3支持自顶而下(top-down)和自底而上(bottom-up)程序开发方法。用户可先进行总体设计,将控制应用划分若干个部分,定义应用变量,然后编各个部分的程序(这就是自顶而下)。用户也可以先从底部开始编程,例如先导出函数和功能块,再进行按照控制要求编制程序(这就是自底而上)。无论选择何种开发方法,IEC 61131-3所创建的开发环境均会在整个编程过程中给予强有力的支持。
3)IEC 61131-3所规范的编程系统独立于任一个具体的目标系统,它可以最大限度地在不同的PLC目标系统中运行。这样就创造了一种具有良好开放性的氛围,奠定了PLC编程开放性的基础。
4)将现代软件概念浓缩,并加以运用,例如:
★数据使用DATA_TYPE说明机制。
★函数使用FUNCTION说明机制。
★数据和函数的组合使用FUNCTION_BLOCK说明机制。(www.daowen.com)
在IEC 61131-3中,功能块并不只是FBD语言的编程机制,它还是面向对象组件的结构基础。一旦完成了某个功能块的编程,并通过调试和试用证明了它确能正确执行所规定的功能,那么就不允许用户再将它打开,改变其算法。即使是一个功能块因为其执行效率有必要再提高,或者是在一定的条件下其功能执行的正确性存在问题,需要重新编程,我们只要保持该功能块的外部接口(输入/输出定义)不变,仍可照常使用。同时,许多原创设备制造厂(OEM)将它们的专有控制技术压缩在用户自定义的功能块中,既可以保护知识产权,又可以反复使用,不必一再地为同一个目的而编写和调试程序。
5)标准要求严格的数据类型定义。这意味着,IEC 61131-3编程语言为减少程序开发人员对一个变量做出错误的数据类型定义创造了有效的限制。
在软件工程中,许多编程的错误往往发生在程序的不同部分其数据的表达和处理不同。IEC 61131-3从源头上避免了这类低级的错误,虽然采用的方法可能会导致效率降低一点,但换来的价值却是程序的可靠性、可读性和可维护性。IEC 61131-3采用以下方法防止这些错误:
★限制函数与功能块之间的互连范围:只允许兼容的数据类型与功能块之间互连。
★限制运算只可对其数据类型已明确定义的变量进行。
★禁止隐含的数据类型变换。比如,实型数不可执行按位运算。若要运算,编程者必须先通过显式变换函数REAL_TO_WORD,把实型数变换为WORD型位串变量。标准中规定了多种标准固定字长的数据类型,包括位串、带符号位和不带符号位的整数型(8位、16位、32位和64位字长)。
6)对程序执行具有完全的控制能力。传统的PLC只能按扫描方式顺序执行程序,对程序执行的多样性要求如由事件驱动某一段程序的执行,程序的并行处理等均无能为力。IEC61131-3允许程序的不同部分,在不同的条件(包括时间条件)下,以不同的比率并行执行。即允许对一个程序的不同部分规定不同的执行次数、不同的执行时间和并行执行的方式。这意味着,以“任务”控制的方式可让一个程序的不同部分以不同的扫描周期进行扫描。
7)提供灵活的编程语言选择。有三种图形化语言和两种文本化语言可在表达一个控制应用程序的不同部分时,让程序编制人员有很大的自由度去选用他认为合适的语言来设计。换句话说就是,程序的不同部分可用上述五种语言的任意一种来表达。
8)支持数据结构的定义。由于支持数据结构,所以相关的数据元素即便属于不同的数据类型,也可在程序不同的部分传送,就如它们是一个单一的实体。在不同程序组织单元(POU)之间传送复杂信息,如同传送单一变量一样。这不但改善了程序的可读性,而且保证了相关数据的存取准确无误。
9)完全支持顺序控制的各种描述,再复杂的顺序行为也可轻而易举地用顺序功能图(SFC)这样的图形化语言加以分解、描述及编程。顺序控制过程的每一步都可用步(steps)、动作(actions)和转移(transitions between steps)准确描述。
当然,IEC 61131-3沿用了直接表示与硬件有关的变量方法,这就妨碍了均符合标准的PLC系统之间做到真正意义上的程序可移植。由于不同机种有自己的输入、输出定义(这些均与硬件相关),如果想把一个在某个厂商的PLC中运行得很好的程序原封不动地搬到另一个PLC厂商的机器,必须先从技术文件中找到有关与硬件相关变量的定义,然后再在另一个机型中对此重新定义。至少可以这样说,不存在与硬件相关变量之间的变换。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。