您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 第6章工业控制编程语言标准IEC61131-3
监督控制与数据采集技术华东理工大学自动化系王华忠hzwang@ecust.edu.cnCh6工业控制编程语言标准IEC61131-3一、IEC61131-3标准的产生与特点1、传统PLC编程语言的不足梯形图语言规范不一致程序可复用性差缺乏足够的程序封装能力不支持数据结构程序执行具有局限性难以实现选择或并行等复杂顺控操作传统的梯形图编程在算术运算处理、字符串或文字处理等方面均不能提供强有力的支持2、IEC61131-3标准的产生1992年以后,IEC陆续颁布施行可编程序控制器国际标准IEC61131的各个部分。已正式颁布的有:IEC61131-1通用信息,2003年5月出版第二版)IEC61131-2装置要求与测试,2003年2月出版第二版)IEC61131-3编程语言,2003年1月出版第二版)IEC61131-4用户导则(1995)IEC61131-5通信服务规范2000)IEC61131-7模糊控制编程软件工具实施(2000)IEC61131-8IEC61131-3语言的应用和实现导则(2001)中国的工业过程测量和控制标准化委员会按与IEC国际标准等效的原则,组织翻译出版工作。1995年12月29日颁布了PLC的国家标准GB/T15969.1,15969.2,15969.3,15969.4,涉及IEC61131的第一、第二、第三和第四部分。GB/T15969.5《通信服务规范》在2003年5月颁布出版,GB/T15969.8《IEC61131-3语言的实现导则》,已于2007年8月实施。IEC61131-3是当今世界第一个为工业自动化控制系统的软件设计提供标准化编程语言的国际标准。此前,国际上没有出现过为制定通用的控制语言而开展的标准化活动。这显然是注意到由于DCS等以数字技术为基础的控制装置在发展进程中过于专有化,给用户带来的大量不便。这一标准为可编程控制器软件技术的发展,乃至整个工业控制软件技术的发展,起了举足轻重的推动作用。可以说,没有编程语言的标准化,便没有今天PLC走向开放式系统的坚实基础。这个标准将现代软件的概念和现代软件工程的机制与传统的PLC编程语言成功地结合,又对当代种类繁多的工业控制器中的编程概念及语言进行了标准化。3、特点IEC61131-3允许在同一个PLC中使用多种编程语言,允许程序开发人员对每一个特定的任务选择最合适的编程语言,还允许在同一个控制程序中不同的软件模块用不同的编程语言编制,以充分发挥不同编程语言的应用特点。标准中的多语言包容性很好地正视了PLC发展历史中形成的编程语言多样化的现实,为PLC软件技术的进一步发展提供了足够的技术空间和自由度。4、优势采用现代软件模块化原则,主要内容包括:编程语言支持模块化,将常用的程序功能划分为若干单元,并加以封装,构成编程的基础。模块化时,只设置必要的、尽可能少的输入和输出参数,尽量减少交互作用和内部数据交换。模块化接口之间的交互作用均采用显性定义。将信息隐藏于模块内,对使用者来讲只需了解该模块的外部特性(即功能、输入和输出参数),而无需了解模块内算法的具体实现方法。IEC61131-3支持自顶而下(TopDown)和自底而上(BottomUp)的程序开发方法。自顶而下的开发过程是用户首先进行系统总体设计,将控制任务划分为若干个模块,然后定义变量和进行模块设计,编写各个模块的程序;自底而上的开发过程是用户先从底部开始编程,例如先导出函数和功能块,再按照控制要求编制程序。无论选择何种开发方法,IEC61131-3所创建的开发环境均会在整个编程过程中给予强有力的支持。IEC61131-3所规范的编程系统独立于任一个具体的目标系统,它可以最大限度地在不同的PLC目标系统中运行。这样不仅创造了一种具有良好开放性的氛围,奠定了PLC编程开放性的基础,而且可以有效规避标准与具体目标系统关联而引起的利益纠葛,体现标准的公正性。将现代软件概念浓缩,并加以运用。例如:数据使用DATA_TYPE声明机制;功能(函数)使用FUNCTION声明机制;数据和功能的组合使用FUNCTION_BLOCK声明机制。完善的数据类型定义和运算限制。软件工程师很早就认识到许多编程的错误往往发生在程序的不同部分,其数据的表达和处理不同。IEC61131-3从源头上注意防止这类低级的错误,虽然采用的方法可能导致效率降低一点,但换来的价值却是程序的可靠性、可读性和可维护性。对程序执行具有完全的控制能力。传统的PLC只能按扫描方式顺序执行程序,对程序执行的其他要求,如由事件驱动某一段程序的执行、程序的并行处理等均无能为力。IEC61131-3允许程序的不同部分、在不同的条件(包括时间条件)下、以不同的比率并行执行对程序执行具有完全的控制能力。传统的PLC只能按扫描方式顺序执行程序,对程序执行的其他要求,如由事件驱动某一段程序的执行、程序的并行处理等均无能为力。IEC61131-3允许程序的不同部分、在不同的条件(包括时间条件)下、以不同的比率并行执行。结构化编程。对于循环执行的程序、中断执行的程序、初始化执行的程序等可以分开设计。此外,循环执行的程序还可以根据执行的周期分开设计。二、IEC61131-3标准的主要内容1、概述IEC61131-3编程语言标准分为两部分:公用元素、编程语言公用元素部分给出软件模型和编程模型,引入配置、资源、任务和存取路径等基本概念。说明各种编程语言中使用的字符集、标识符、关键字等,定义数据的外部表示、数据类型、变量和程序组织单元等,定义顺序功能表图的基本元素等。编程语言部分定义了两大类编程语言:文本化编程语言和图形化编程语言IEC61131-3标准公共元素编程语言数据类型定义变量软件模型元素软件模型程序组织单元顺序功能图文本语言图形语言配置资源任务程序指令表结构化文本梯形图功能块图图6.1IEC61131-3标准的层次与结构语言元素表6.1语言元素示例语言元素含义示例分界符具有不同含义的专用字符(,),=,+,-,*,$,;,:=,#,空格符关键字标准标识符,作为编程语言中的“字”RETAIN,CONFIGURATION,END_VAR,FUNCTION,PROGRAM直接量用于表示不同数据类型的数值78,4.372E-5,16#a5标识符字母数字字符串,用于用户指定的变量名、标号或POU等MW212,Doutput1,SwitchIn,realyout,P1_V3关键字关键字(keyword)是语言元素特征化的词法单元。关键字是标准标志符。在IEC61131-3标准中,关键字是结构声明和语句的固定符号表示法,其拼写和含义均由IEC61131-3标准明确规定。因此,关键字不能用于用户定义的变量或其他名称。这一点与高级编程语言是一致的。关键字不区分字母的大、小写。例如,关键字“FOR”和“for”是等价的。为了更好地进行区别,关键字通常以大写字母表示。表6.3所示为关键字及其含义。关键字主要包括:基本数据类型的名称、标准功能名、标准功能块名、标准功能的输入参数名、标准功能块的输入和输出参数名、图形编程语言中的EN和ENO变量、指令表语言中的运算符、结构化文本语言中的语言元素、顺序功能图语言中的语言元素。直接量直接量用来表示常数变量的数值,其格式取决于变量的数据类型。直接量有3种基本类型:数字直接量字符串直接量时间直接量标识符标识符(identifier)是字母、数字和下划线字符的组合。其开始必须是字母或下划线字符,并被命名为语言元素(LanguageElement)。标识符对字母的大、小写不敏感,所以标识符ABCD和abcD具有相同的意义。标识符用于表示变量、标号,以及功能、功能块、程序组织单元等名称。2、数据类型IEC61131-3对数据类型进行了定义,从而防止对数据类型的不同设置而发生出错。数据类型的标准化是编程语言开放性的重要标准。在IEC61131-3中定义一般数据类型和非一般数据类型两类。非一般数据类型又可分为基本数据类型和衍生数据类型。基本数据类型有21种。数据类型与它在数据存储器中所占用的数据宽度有关。一般数据类型的数据用前缀“ANY”标识,用于标准函数和标准功能块的输入和输出连接。它采用分级结构。衍生数据类型是由用户定义的数据类型,它建立在基本数据类型的基础上,也称为导出数据类型。这类数据类型所定义的变量是全局变量。它可用与基本数据类型所使用的相同方法对变量进行声明。在IEC61131-3标准中,变量分为单元素变量和多元素变量。3、变量与数据的外部表示相反,变量提供能够改变其内容的数据对象的识别方法。例如,可改变与PLC输入、输出或存储器有关的数据。变量可以被声明为基本数据类型、一般数据类型和导出数据类型。变量的类型和属性变量的附加属性三、程序组织单元1、程序组织单元及其组成PROGRAM主程序FUNCTIONBLOCK功能块FUNCTION功能图6.2程序组织单元表6.2IEC61131-3标准的3中POU及其含义类型关键字含义ProgramPROGRAM主程序,包括I/O的分配、全局变量和存取路径FunctionBlockFUNCTION_BLOCK带输入和输出变量的块FunctionFUNCTION具有功能值的块,用于扩展PLC的基本预算和操作集接口变量局部变量指令(POU主体)声明部分代码部分程序功能块功能图6.3POU元素构成2、功能功能是一种可以赋予参数,但没有静态变量的程序组织单元。有些书籍或文献也称功能为函数。当用相同的输入参数调用某一功能时,该功能总能够生成相同的结果作为其功能值。功能有多个输入变量,没有输出变量,但有一个功能值作为该功能的返回值。功能由功能名和一个表达式组成。功能分为标准功能和用户定义功能(衍生功能)。IEC61131-3标准定义了8类标准功能3、功能块功能块是在执行时能够产生一个或多个值的程序组织单元。功能块实例化是编程人员在功能块说明部分用指定功能块名和相应的功能块类型来建立功能块的过程。每个功能块实例有它的功能块名、内部变量、输出变量及可能的输入变量数据结构。该数据结构的输出变量和必要的内部变量的值能够从这次执行保护到下一次执行。功能块实例的外部只有输入和输出变量是可存取的。功能块内部变量对用户来说是隐藏的。功能块类型名变量名变量名变量名变量名功能块实例名变量类型变量类型变量类型变量类型形式参数功能块调用时用实际参数代替形式参数图6.5功能块的图形表示功能块包括标准功能块、衍生功能块和用户定义功能块。衍生功能块是利用标准功能块创造的新功能块。IEC61131-3允许用户利用已有的功能块和功能生成新的功能块。任意功能块均可采用便于管理且功能更简单的功能和/或功能块进行编程。IEC61131-3中定义了5种标准功能块。功能块段的文字形式可以表示为:FUNCTION_BLOCK功能块名功能块声明功能块体END_FUNCTION_BLOCK功能和功能块的主要区别在于,相同输入参数调用时,功能总是产生相同的结果(功能值),功能没有“记忆”特性。程序代表PLC用户的最高层,能存取PLC的I/O口,并能使它们能为其它程序组织单元所存取。IEC61131-3标准使用变量以存储信息。但是,它们的存储位置不再需要由用户自行定义,而是由编程系统自行进行管理,每个变量具有固定的数据类型。IEC61131-3规定若干数据类型,这些数据类型在位数量和符号的使用方面有所不同。4、程序程序是程序组织单元之一,它由功能和功能块组成。PROGRAM类型的程序组织单元称为主程序。在一个多CPU的PLC控制系统中,能同时执行多个主程序,这一点体现了程序与功能块的不同。程序以PROGRAM关键字开始,随后是程序名、程序声明和程序体,最后以END_PROGRAM关键字结束。与功能或功能块的声明类似,程序声明包括在整个程序声明中所使用变量的声明。四、软件、通信和功能模型1、软件模型资源任务任务程序程序FBFB资源任务任务程序程序FBFB变量变量进出路径全
本文标题:第6章工业控制编程语言标准IEC61131-3
链接地址:https://www.777doc.com/doc-1237005 .html