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