IEC 61131-3编程标准(GBT 15969.3)

IEC 61131-3

IEC 61131是国际电工委员会(IEC) 制定的可编程逻辑控制器标准。在IEC编号系统更改以前,称为IEC 1131.
IEC 61131 标准区分成以下几个部分:

  • 第1部分:一般资讯
  • 第2部分:设备需求与测试
  • 第3部分:编程语言
  • 第4部分:使用者指引
  • 第5部分:讯息服务规格
  • 第6部分:透过fieldbus通讯(尚等待 fieldbus 标准的完成)
  • 第7部分:模糊控制程式编辑 第8部分:编程语言应用与导入指引
    IEC 61131-3属于第三部分编程语言。

工控编程语言IEC 61131-3的现状和发展

1993年国际电工委员会(IEC)正式颁布了可编程控制器的国际标准IEC 1131(以后改称IEC 61131),其中的第三部分关于编程语言的标准,规范了可编程控制器的编程语言及其基本元素。这一标准为可编程控制器软件技术的发展,乃至整个工业控制软件技术的发展,起了举足轻重的推动作用。它是全世界控制工业第一次制定的有关数字控制软件技术的编程语言标准。此前,国际上没有出现过有实际意义的,为制定通用的控制语言而开展的标准化活动。这显然是注意到由于DCS(分散控制系统)等以数字技术为基础的控制装置在发展进程中过于专有化,给用户带来的大量不便。可以说,没有编程语言的标准化便没有今天PLC走向开放式系统的坚实基础。

国际标准IEC 61131概况

1992年以后,可编程序控制器国际标准IEC 61131的各个部分陆续颁布施行。已正式颁布的有:

  • IEC 61131-1 通用信息 (1992)
  • IEC 61131-2 装置要求与测试 (1992)
  • IEC 61131-3 编程语言 (1993)
  • IEC 61131-4 用户导则 (1995)
  • IEC 61131-5 通信服务规范 (2000)
  • IEC 61131-7 模糊控制编程软件工具实施 (2000)
  • IEC 61131-8 IEC 61131-3语言实现导则 (2001)

2000年8月由PLCopen组织向IEC提出增加IEC61131-X 功能安全性,这主要是依据《IEC 61508与安全有关的电气/电子/可编程电子系统的功能安全性》,结合PLC的具体情况提出。
  中国的工业过程测量和控制标准化委员会按与IEC国际标准等效的原则,组织翻译出版工作。于1995年12月29日以GB/T15969.1,15969.2,15969.3,15969.4 颁布了PLC的国家标准。
  该标准只涉及IEC 61131的第一、第二、第三和第四部分,没有纳入1995年以后出版的第五部分通信服务规范 ,第七部分模糊控制编程软件工具,第八部分IEC 61131-3语言的实现导则。目前正在启动该标准的修订和补充工作,为第二版的正式颁布进行准备。传统的梯形图编程语言的严重不足传统的PLC最常用的编程语言是梯形图。它虽然遵从了广大电气自动化人员的专业习惯,易学易用,但是也存在许多难以克服的缺点:

  • 不同厂商的PLC产品其梯形图的符号和编程规则均不一致。程序的可移植性差。
  • 程序可复用性差。为了减少重复劳动,现代软件编程特别强调程序的可重复使用。传统的梯形图编程很难在调用子程序时通过变量赋值实现相同的逻辑算法和策略的反复使用。
  • 缺乏足够的程序封装能力。一般要求将一个复杂的程序分解为若干个不同功能的程序模块。或者说,人们在编程时希望用不同的功能模块组合成一个复杂的程序,梯形图编程难以实现个程序模块之间具有清晰接口的模块化,也难以对外部隐藏程序模块内部数据从而实现程序模块的封装。
  • 不支持数据结构。梯形图编程不支持数据结构,无法实现将数据组织成如Pascal、C语言等高级语言中的数据结构那样的数据类型。对于一些复杂应用的编程,它几乎无能为力。
  • 程序执行具有局限性。由于传统PLC按扫描方式组织程序的执行,因此整个程序的指令代码完全按顺序逐条执行。对于要求即时响应的程序应用(如执行事件驱动的程序模块),具有很大的局限性。
  • 进行顺序控制功能编程时,一般只能为每一个顺控状态定义一个状态位,难以实现选择或并行等复杂顺控操作。
  • 传统的梯形图编程在算术运算处理、字符串或文字处理等方面均不能提供强有力支持。在IEC 61131-3标准的制定过程中就面临着在突破旧有的编程语言的不足的同时,又要继承其合理和有效的部分。解决好这个问题,会大大地推动PLC编程工具的发展,推动PLC的开放性。

兼容并蓄是IEC 61131-3成功的基础

IEC 61131-3的制定,集中了美国、加拿大、欧洲(主要是德国、法国)以及日本等7家国际性工业控制企业的专家和学者的智慧,以及数十年在工控方面的经验。在制定这一编程语言标准的过程中,PLC正处在其发展和推广应用的鼎盛时期。
  主要是在北美和日本,普遍运用梯形图(LD)语言编程;
  在欧洲,则使用功能块图(FBD)和顺序功能图(SFC);
  德国和日本,又常常采用指令表(IL)对PLC进行编程。
  
  为了扩展PLC的功能,特别是加强它的数据处理、文字处理,以及通信功能的能力,许多PLC还允许使用高级语言(如BASIC语言、C语言)。因此,制定这一标准的首要任务就是把现代软件的概念和现代软件工程的机制应用于传统的PLC编程语言。
  IEC 61133-3规定了二大类编程语言:文本化编程语言和图形化编程语言。前者包括指令清单语言(IL)和结构化文本语言(ST),后者包括梯形图语言(LD)和功能块图语言(FBD)。至于顺序功能图(SFC),标准不把它单独列入编程语言的一种,而是将它在公用元素中予以规范。这就是说,不论在文本化语言中,或者在图形化语言中,都可以运用SFC的概念、句法和语法。于是,在我们现在所使用的编程语言中,可以在梯形图语言中使用SFC,也可以在指令清单语言中使用SFC。
  IEC 61131-3允许在同一个PLC中使用多种编程语言,允许程序开发人员对每一个特定的任务选择最合适的编程语言,还允许在同一个控制程序中其不同的软件模块用不同的编程语言编制。这一规定妥善继承了PLC发展历史中形成的编程语言多样化的现实,又为PLC软件技术的进一步发展提供了足够的空间。
  自IEC 61131-3正式公布后,它获得了广泛的接受和支持:

  • 国际上各大PLC厂商都宣布其产品符合该标准的规范(尽管这些公司的软件工具距离标准的IEC 61131-3语言尚有一定距离),在推出其编程软件新产品时,遵循该标准的各种规定。
  • 许多稍后推出的DCS产品,或者DCS的更新换代产品,也遵照IEC 61131-3的规范,提供DCS的编程语言,而不像以前每个DCS厂商都搞自己的一套。
  • 以PC为基础的控制作为一种新兴控制技术正在迅速发展,大多数PC控制的软件开发商都按照IEC 61131-3的编程语言标准规范其软件产品的特性。
  • 正因为有了IEC 61131-3,才真正出现了一种开放式的可编程控制器的编程软件包,它不具体地依赖于特定的PLC硬件产品,这就为PLC的程序在不同机型之间的移植提供了可能。
      总部设在荷兰的国际性组织PLC open在推广该标准的应用并开发相关的软件产品,以及谋求该标准的进一步发展进行了不懈的努力,获得了广泛的响应和优秀的成绩。以上这些事实有力地说明了这个编程语言标准的生命力。

IEC软件模型是面向未来的开放系统

IEC 61131-3提出的软件模型是整个标准的基础性的理论工具,帮助人们完整地理解除编程语言以外的全部内容。
  配置本软件模型,在其最上层把解决一个具体控制问题的完整的软件概括为一个“配置”。它专指一个特定类型的控制系统,包括硬件装置、处理资源、I/O通道的存贮地址和系统能力,等同于一个PLC的应用程序。在一个由多台PLC构成的控制系统中,每一台PLC的应用程序就是一个独立的“配置”。
  资源在一个“配置”中可以定义一个或多个“资源”。可把“资源”看作能执行IEC程序的处理手段,它反映PLC的物理结构,在程序和PLC的物理I/O通道之间提供了一个接口。只有在装入“资源”后才能执行IEC程序。一般而言,通常资源放在PLC内,当然它也可以放在其它支持IEC程序执行的系统内。
  任务在一个资源内可以定义一个或多个任务。任务被配置后可以控制一组程序或功能块。这些程序和功能块可以是周期地执行,也可以由一个事件驱动予以执行。
  程序一个IEC程序可以用符合IEC 61131-3规定的编程语言来编写。典型的IEC程序由许多互连的功能块和/或函数组成,每个功能块之间可相互交换数据。函数与功能块是基本的组成单元,其内包括一个数据结构和一种算法。
  下面我们将IEC 61131-3软件模型与传统的PLC模型(包括一个资源,运行一个任务,控制一个程序,且运行于一个封闭系统中)进行比较。
  可以看出,IEC软件模型在传统PLC的软件模型的基础上增加了许多内容:

  • IEC 61131-3的软件模型是一种分层结构,每一层均隐含其下层的许多特征。
  • 它奠定了将一个复杂的程序分解为若干个可以进行管理和控制的小单元,而这些被分解的小单元之间存在着清晰而规范的界面。
  • 可满足由多个处理器构成的PLC系统的软件设计。
  • 可方便地处理事件驱动的程序执行(传统的PLC的软件模型仅为按时间周期执行的程序结构)
  • 对以工业通信网络为基础的分散控制系统(例如由现场总线将分布于不同硬件内的功能块构成一个具体的控制任务)尤其是软逻辑/PC控制这些正在发展中的新兴控制技术,该软件模型均可覆盖和适用。由此可见,该软件模型足以映像各类实际系统:
  • 对于只有一个处理器的小型系统,其模型只有一个配置、一个资源和一个程序,与现在大多数PLC的情况完全相符。对于有多个处理器的中、大型系统,整个PLC被视作一个配置,每个处理器都用一个资源来描述,而一个资源则包括一个或多个程序。对于分散型系统,将包含多个配置,而一个配置又包含多个处理器,每个处理器用一个资源描述,每个资源则包括一个或多个程序。

IEC 61131-3的优势与缺陷

IEC 61131-3的优势在于它成功地将现代软件的概念和现代软件工程的机制用于PLC传统的编程语言。而它的不足却是因为它在体系结构上和硬件上依赖于传统的PLC的体系结构所形成的“先天不足”。
  
先讨论IEC 61131-3的优势
  
1.采用现代软件模块化原则。

  • 编程语言支持模块化,将常用的程序功能划分为若干单元,并加以封装,构成编程的基础。
  • 模块化时只设置必要的、尽可能少的输入和输出参数,尽量减少交互作用,尽量减少内部数据交换。
  • 模块化接口之间的交互作用,均采用显性定义。
  • 将信息隐藏于模块内,对使用者来讲只需了解该模块的外部特性(即功能,输入输出参数),而无需了解模块内算法的具体实现方法。

2.IEC 61131-3支持自顶而下(top-down)和自底而上(bottom-up)程序开发方法
户可先进行总体设计,将控制应用划分若干个部分,定义应用变量,然后编各个部分的程序: 这就是自顶而下。用户也可以先从底部开始编程,例如先导出函数和功能块,再进行按照控制要求编制程序: 这是自底而上。无论选择何种开发方法,IEC 61131-3所创建的开发环境均会在整个编程过程中给
予强有力的支持。
3.IEC 61131-3所规范的编程系统独立于任一个具体的目标系统,它可以最大限度地在不同的PLC目标系统中运行。这样就创造了一种具有良好开放性的氛围,奠定了PLC编程开放性的基础。
4.将现代软件概念浓缩,并加以运用,例如:
  ★数据使用DATA_TYPE说明机制
  ★函数使用FUNTION说明机制
  ★数据和函数的组合使用FUNTION_BLOCK说明机制。
  
  在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只能按扫描方式顺序执行程序,对程序执行的多样性要求如由事件驱动某一段程序的执行,程序的并行处理等均无能为力。IEC 61131-3允许程序的不同部分,在不同的条件(包括时间条件)下,以不同的比率并行执行。即允许对一个程序的不同部分规定不同的执行次数、不同的执行时间和并行执行的方式。这意味着,以“任务”控制的方式可让一个程序的不同部分以不同的扫描周期进行扫描。
7.提供灵活的编程语言选择
  有三种图形化语言和两种文本化语言可在表达一个控制应用程序的不同部分时,让程序编制人员有很大的自由度去选用他认为合适的语言来设计。换句话说就是,程序的不同部分可用上述五种语言的任意一种来表达。
8.支持数据结构的定义
  由于支持数据结构,所以相关的数据元素即便属于不同的数据类型,也可在程序不同的部分传送,就如它们是一个单一的实体。在不同程序组织单元POU之间传送复杂信息,如同传送单一变量一样。这不但改善了程序的可读性,而且保证了相关数据的存取准确无误。
9.完全支持顺序控制的各种描述
再复杂的顺序行为也可轻而易举地用顺序功能图SFC这样的图形化语言加以分解、描述及编程。顺序控制过程的每一步都可用步(steps)、其动作(actions)和转移(transitions between steps)准确描述。

至于IEC 61131-3的缺陷主要是以下两点:
1.IEC 61131-3沿用了直接表示与硬件有关的变量的方法
  这就妨碍了均符合标准的PLC系统之间做到真正意义上的程序可移植。由于不同机种有自己的输入、输出的定义(这些均与硬件相关),如果想把一个在某个厂商的PLC中运行得很好的程序原封不动地搬到另一个PLC厂商的机器,必须先从技术文件中找到有关与硬件相关变量的定义,然后再在另一个机型中对此重新定义。至少可以这样说,不存在与硬件相关变量之间的变换。
2.IEC 61131-3只给出一个单一的集中PLC系统的配置机制
  这显然不能适应分布式结构的软件要求。由于工业通信技术的飞速发展,特别是现场总线和以太网在工业中的实际应用,给工业自动化的体系结构带来了巨大影响。因此,IEC 61131-3必须适应客观形势的发展,在这方面进行突破。它应该允许功能块不一定集中常驻在单个硬件中,允许分散于不同硬件的功能块,通过通信方式也可以构成一个控制程序。这就是正处于制定中的IEC 61499的主攻方向。

结论

  • IEC 61131-3已获得国际工控界的广泛承认和支持。
  • IEC 61131-3正在加速推广应用,不但成为PLC的编程标准,而且成为DCS、PC控制、SCADA、运动控制等事实上的标准。
  • 为适应现场总线和工业以太网的高速发展,IEC 61131-3和IEC 61499结合,使分布式PLC有了真正实现的路径。

你可能感兴趣的:(编程,工控,PLC,其他)