从PLC到IEC 61499系统

50 篇文章 24 订阅
36 篇文章 20 订阅

目录

从PLC 历史谈起

PLC标准化-IEC 61131-3

PLCOpen

IEC 61499标准

IEC 61499与IEC 61131-3,的不同

IEC 61499 功能块

IEC 61499的编程方式

IEC61499的开发者

IEC61499 开源项目Eclipse 4 diac

对IEC 61499 开发的看法


从PLC 历史谈起

PLC (可编程逻辑控制器)是美国汽车行业Bedford 协会的一位聪明的雇员Richard E. Morley在1968年发明的。起初的名称为模块化数字控制器(Modular Digital Controller MODICON),在GE 公司的一个咨询项目中,采用Programmable Logic Controller (PLC)的名称,Bedford协会也更名为Modicon PLC。成为世界上第一个PLC 供应商。第一台商业应用PLC 产品MODICON084。

Morley先生为了使当时的技术人员和维修电工易于理解和编程PLC。采用了类似继电器接线图的,也就是梯形图来为PLC编程。这种方式一直延续到现在微处理器时代。自动控制工程师接受的培训和工作经验都是基于梯形图编程方式。

目前PLC 已经成为使用最为广泛的制动控制设备。在生产线控制,机床设备,动车,地铁中,PLC产品几乎无处不在。

PLC 可编程逻辑控制器一直是中国自动控制厂商心中的梗。PLC领域长期以来都是欧,美,日企业把控的地盘。 在上个世纪80年代我曾经有机会在英国的Allen-Bradley公司学习PLC技术,回国后也曾极力地宣传PLC 的重要性,但是并没有被多少人认可,不久,无锡轻工系统的一家国企曾引进GE公司的PLC 产品(大散件组装,实际上就是整机引进),而Allen-Bradley 公司在厦门设立了独资公司。逐步在中国推广PLC产品和技术。后来西门子,日本三菱等公司也相继进入中国市场。之后的几十年间,也有一些公司尝试开发国产的PLC 产品,不过终究没有成为气候。目前少数国内PLC 公司。他们的产品主要是面向“自主可控”的重点领域。在普通工业市场没有竞争力。

从硬件上来看,PLC 并不是十分复杂的工业电脑。也没有多少专用电路。开发上并没有多少不可逾越的地方。问题主要出在软件上。编程环境,可靠的嵌入式程序还是有难度的,成为了PLC 产品的护城河之一。

事实上,在国外PLC 产品的软件也大多数并不是硬件厂商开发,而是第三方软件公司开发的。比较集中的是Taylor Software,和 ICOM。其它软件公司不是被硬件设备公司收购了,就是倒闭了。后来Taylor Software,被Total Control Products收购,之后这家公司又被GE Fanuc收购,而施耐德公司购买了Taylor 的一部分软件。

现在许多的PLC 厂商是购买的CoDeSys 公司的编程工具和嵌入式运行时程序(runtime)。 目前很多厂商的PLC控制器使用的都是Codesys系统,比如汇川技术的中型PLC,德国倍福的控制器,日本欧姆龙以及法国施耐德等等主流厂家也都有基于codesys平台二次开发的控制器产品。

PLC标准化-IEC 61131-3

各家PLC厂商的编程环境和语言是相互不兼容的。也就是为西门子PLC 编写的程序无法再三菱PLC上运行。为了解决这一困境。国际电工委员会IEC 于1982 年,发布了IEC 61131-3 标准。致力于PLC 标准化工作。IEC 61131-3标准很重要,因为它为所有符合该标准的软件产品带来了一致性。无论集成开发环境(IDE)的品牌或用户界面桌面的名称如何,功能和功能块看起来都一样,并具有相同的定义的输入和输出,从而使工程师或维护人员能够从任何制造商的软件中快速了解逻辑和程序流程。

该标准定义了五种编程语言:

  1. 梯形图LD
  2. 功能块(FBD)
  3. 顺序功能图(SFC)
  4. 结构化文本(ST)
  5. 指令表 IL 类似于计算机的汇编指令

IEC 61131-3定义了标准数据类型,命名约定,程序流程和各种其他编程元素。当PLC OEM声明其编程软件符合IEC 61131-3时,通常意味着该软件符合部分标准。IEC声明,要符合要求,编程包必须至少支持五种语言中的一种。CoDeSys可能是唯一支持所有这五个平台的编程平台。

PLCOpen协会

人们意识到仅有一个标准是不够的,还有许多的事情要做。于是成立了PLCOpen 协会。来推广,论证和进一步规范IEC 61131-3标准。

     PLCopen是一个独立的全球组织,可根据用户需求提供工业自动化效率。它成立于1992年,总部位于荷兰,在美国,日本,中国和韩国设有支持办事处。

前面提到,在IEC 61131-3中,除了传统的梯形图和指令表以外,提出了功能块图编程(FBD)方式。这是一种基于图型的编程方式。

      FBD 类似于硬件的电路图,一个PLC 程序是由若干个功能块用线连接起来的。功能块都有一个或多个输入和输出。块的功能是其输入和输出状态之间的关系。下面是一个FBD的例子,是不是很像硬件的原理图?

类似于原理图,基本的功能块相当于小规模集成电路。基础的功能块包括了

  1. -标准功能块
  2. 位逻辑功能块
  3. 双稳态功能块
  4. 边缘检测
  5. -定时器功能块
  6. -计数器功能块
  7. -比较功能块
  8. -选择功能块

除了这些在  IEC 61131-3 标准中规范的核心功能块以外,在PLC 中还有大量的功能块。例如

  1. 算术功能块
  2. 移位功能块
  3. 字符串功能块
  4. 转换功能块
  5. 通讯功能块

还可以有许多许多,事实上用户可以编写自己的功能块,它们可以使用梯形图,结构化语言或者其它程序设计语言来实现。复杂功能块提升了PLC 的能力,例如电机控制,PID和运动控制类的功能模块。未来也许会有AI 功能块。但是功能块就像程序库那样。如何能保证不同厂商开发的功能块相互兼容,是一个需要相互规范和协调的事情。PLCOpen 在功能块设计等方面,提出了更进一步的规范。例如软件构造指南,运动控制用户指南和安全用户指南等。

按照IEC 61131-3 标准编写的PLC程序要最终在PLC中运行,需要通过翻译成硬件可执行的机器指令,或者一种中间代码在PLC 运行程序中解释执行。对于机器代码和中间代码的规范并没有在IEC 61131-3 中明确规范,具体的做法有两种:

1 将PLC 程序翻译成为C或者C++ 语言,使用C语言编译器编译成为机器代码

2 输出中间代码,由PLC运行时解释执行(就像JAVA的JVM那样)。

   各个厂商的中间代码是格式不开放。这对软件仿真,调试,版本控制等带来的不便。于是PLCOpen 成立了一个名为TC6 for XML(可扩展标记语言)的工作组。形成了IEC 61131-3的XML格式。

不同厂商的IDE 软件可以输出XML 文档。然后将XML文档进一步转换成为特定PLC的输出代码。

综上所述,PLCOpen 协会致力于IEC 61131-3 的进一步规范。不过,它并没有开源任何PLC 开发环境和PLC 运行时。它只是一些规范而已。

网络上有一个OpenPLC 项目,名字经常会和PLCOpen 混淆。其实OpenPLC 是一个开源项目,将树莓派改造称为PLC ,不够它相对简陋,还是停留再业余爱好者水平。

 

IEC 61499标准

    IEC 61131-3只是一个设备上的程序的标准。但是现代控制系统走向分散数字控制系统时。IEC 61131-3显得不够了。

  于是,IEC 与2008年首先发布了面向分布式控制系统的标准IEC61499.

       IEC 61499定义了一种特定领域的建模语言,用于开发分布式工业控制解决方案。IEC 61499通过改进软件组件的封装来扩展IEC 61131-3,以提高可重用性,提供与供应商无关的格式,并简化对控制器到控制器通信的支持。它的分发功能和对动态重新配置的固有支持为Industry 4.0和工业IoT应用程序提供了必需的基础结构。

     基于IEC 61499的控制技术可用于对整个工厂和设备进行编程,即使在分布式控制系统中具有多个控制器也是如此。

IEC 61499与IEC 61131-3,的不同

IEC 61499

  1. 事件驱动程序执行
  2. 完整系统的编程
  3. 实时启用
  4. 使用其他IEC 61499工程工具创建的程序无需导入/导出即可进行处理
  5. 控制逻辑可以分配给多个控制器。定义了控制器之间的通讯
  6. 任何符合IEC 61499的工程工具均可使用不同供应商的库

IEC 61131

  1. 循环程序执行
  2. 单个控制器的编程
  3. 实时启用

IEC 61499 功能块

IEC61499 标准使用基于功能块图形编程方法,功能块(FB)是其重要的概念。

 

和IEC 61131-3 中的功能块类似,61499 的功能块有数据输入和数据输出(底部)。与61131 不同的是 61499 的功能块具有事件输入和输出端(顶部)。这是反映了两种标准不同的控制方式。

在PLC 中,是采取循环程序控制方式,或者称为扫描(Scanning)控制方式。在一个循环周期(通常为1ms)中,PLC 读取所以的输入端,将输入端子的状态存放在存放在内存,然后执行梯形图一次,修改内部和输出状态。

在IEC 61499 控制器中,外部输入产生一个事件信号,每个功能块只有输入事件发生变化时,内部功能才运行一次。同时输出新的事件和输出新的数据。由此可以看出,61499 控制器采取的一种异步控制方式。系统中的事件和数据也许在一个控制器内部传递,也可能通过网络在系统的多个设备之间传递。61499 系统的通信机制更适合采纳发布订阅模式(publish/subscribe)。

IEC 61499定义了在开发应用程序时可以使用的三种类型的FB:

  1. 基本功能块(BFB)
  2. 基本功能块(BFB)
  3. 服务功能块(SFB)

 

IEC 61499的编程方式

在一个分布式系统中,我们通常的方式是定义每个控制器的功能以及控制器之间的通信协议,数据格式,API,然后分别开发各个控制器内部程序和服务器程序。而在IEC 61499 中则不同,它是从系统的角度开发一个有各种功能块组成的程序。然后将程序中的各个功能块映射到每一个物理控制中。这个过程称为Mapping。

      IEC 61499 使设计者从系统的角度开发应用程序。设计者不再关心设备之间的接口和通信。这样做的好处是提高的程序开发的效率。不像传统方式开发分布式控制系统那么碎片化。

 

IEC61499的开发者

            和PLC 控制程序类似,IEC61499 开发工具同样由少数的第三方公司开发,其中比较著名的是奥地利的nxtControl公司,它是符合IEC 61499分布式系统控制技术领域的全球领导者。公司成立于2007年,过去十年来,公司已在这项技术上投入近1500万欧元。2017年nxtControl 公司被施耐德公司收购

   利用nxtControl的建筑和工业自动化软件,可使用拖放功能在多个控制器之间轻松实现整个工厂的控制智能化。交互通信的实现是完全自动的。基础标准IEC 61499的事件驱动执行模型更易于将控制逻辑集成到更高层次的IT系统和云应用中,创建一个从现场层到管理层的无缝数据高速通道。

 

 

IEC61499 开源项目Eclipse 4 diac

 

值得幸喜的是,与IEC 61131-3 不同,IEC61499 标准的开发工具出现了一个开源项目-Eclipse 4 diac。

4diac 是基于eclipse IDE 框架和Java 开发的ICE611499.它包括四个部分 :

  1. IDE 开发环境-使用Java编写
  2. FORTE – 一个运行时,使用C++编写
  3. 功能块库
  4. 系统实例

对IEC 61499 开发的看法

  1. 相对古老的PLC而言,IEC 61499控制系统还比较年轻,传统的制动控制厂商还没有完全成熟的产品。如果现在加快研发投入,有机会弯道超车。
  2. 出现了Eclipse 4 diac 这样的开源项目,能够大大帮助我们进入IEC61499 控制系统的开发领域。当然在开源项目上完善和优化还有许多的工作要做。毕竟,开源项目为我们指明了方向,让我们知道从哪里开始。
  3. 硬件模块化,标准化很重要。IEC61499 的功能块实现了硬件和软件的分离,硬件的虚拟化,参数化,但是所以的功能块最终还是要mapping 到控制器的硬件上去运行。硬件不规范和模块化,很难去开发针对所有接口的功能块。之前,我们尝试开发基于图形化的开发工具,经验告诉我们,开发一些AND ,OR,Counter 等基础功能块比较容易,但是一旦开发复杂一点的功能块,就必须和硬件模块开发同步进行。每开发一个硬件模块,就同步地开发一个或者几个功能块。
  4. 要从某个具体的行业开始。和上面第3点类似,如果漫无目标地开发同样的功能块。你会发现工作量非常大,而且到具体的应用时总发现还缺一个。所以一开始针对某个特定领域比较合适,nxtControl好像也是从建筑自动化开始的。做好一个行业,再做一个行业。让你的功能块满足特定行业的所有应用场景。
  5. 如果我们现在什么也不做,PLC的今天,就是IEC61499 控制系统的明天,我们永远进入不了自动控制的高端领域。什么工业4.0,工业物联网,中国制造2025 都将是浮云。
  6. 梯形图,组态软件的概念在控制工程师心中已经根深蒂固。其它方式他们难以接受。IT工程师和自动控制工程师就像鸡和鸭对话,尿不到一个壶里。IT 工程师只有妥协,才有机会。

        如果有人点赞,我将继续这个话题。国内网络中,这个课题的文章并不多。

  • 67
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: IEC 61499是一种面向领域的开放标准,用于实现分布式控制系统的编程。在IEC 61499中,系统被建模为一个或多个组件的网络,每个组件都包含了一个或多个功能块。 IEC 61499运行态的实现依赖于存储在功能块内部的功能算法和事件驱动机制。在系统运行时,每个组件可以独立地处理输入事件并生成输出事件。这些事件通过连接功能块的数据和事件连接进行传输和处理。 在IEC 61499运行态中,功能块通过事件传递和数据交换进行通信。事件传递可以是同步的或异步的,具有优先级和时间戳。数据交换可以是通过输入输出变量或数据连接进行。 IEC 61499标准还引入了代理,用于描述组件之间的逻辑关系。代理是两个组件之间的连接模板,定义了事件传递的规则和条件。代理通过不同类型的事件连接将不同类型的呈现从一个组件传递到另一个组件。 在IEC 61499运行态的实现中,需要一个运行时环境来管理组件、事件传递和数据交换。运行时环境负责检测事件的到达并触发相应的功能块进行计算和处理。它还负责处理代理之间的事件传递和数据交换。 总的来说,IEC 61499运行态的实现涉及到组件的建模和定义、事件传递和数据交换的处理以及运行时环境的管理。这一实现使得分布式控制系统能够实现灵活、可重用、可扩展和可维护的控制逻辑。 ### 回答2: IEC 61499运行态是指根据IEC 61499标准定义的一种工业自动化系统的实现方式。IEC 61499标准是国际电工委员会(IEC)制定的工业自动化分布式控制系统(DCS)标准,通过定义一种分布式控制执行模型来实现系统中不同设备的协同工作。 在IEC 61499运行态实现中,系统根据定义的函数块(Function Block,FB)进行建模。函数块是自包含的计算单元,具有输入和输出端口以及内部变量。系统中的各个设备被抽象为函数块,并且可以在运行时动态添加或删除设备。 在运行态中,函数块通过事件触发执行。当一个函数块接收到一个事件时,它会执行相应的代码进行计算,并将输出发送到其他函数块。这种基于事件的执行模型允许并行执行多个任务,提高了系统的灵活性和实时性能。 此外,IEC 61499运行态还支持状态机和图形化编程方式。状态机允许将复杂的控制逻辑分解为不同的状态和转换,便于理解和维护。图形化编程方式提供了直观的界面,使得用户可以通过拖拉、连接等操作来设计和配置系统,减少了编程的复杂性。 IEC 61499运行态的实现可通过各种编程语言和工具来完成,如C++、Java、Python等。通过遵循IEC 61499标准,可以实现工业自动化系统中设备之间的高效协同工作,提高生产效率和质量。 ### 回答3: IEC 61499运行态是指基于国际电工委员会(IEC)制定的IEC 61499标准,实现了分布式控制系统的运行过程。在IEC 61499中,控制系统被划分为一个个的功能块(Function Block, FB)和资源(Resource)组成的网络。每个功能块都有自己的输入和输出,通过消息传递的方式实现功能块之间的通信和协作。 在IEC 61499运行态中,功能块被实例化为运行实例,即运行时的对象。每个运行实例都有自己的状态和数据。功能块之间的通信通过事件(Event)和数据(Data)的传递来实现。当一个事件被触发时,相应的功能块会执行相应的操作,并可能产生新的事件和数据,触发其他功能块执行相应的操作。这种事件驱动的执行模型使得控制系统可以灵活地响应外部的变化。 IEC 61499运行态还提供了资源管理和调度功能,确保系统中的资源能够被合理分配和利用。资源可以是硬件设备(如传感器、执行器等)或软件模块(如函数库、驱动程序等)。资源管理器负责管理和调度资源的使用,通过资源的共享和分配,提高系统的效率和可靠性。 IEC 61499运行态的实现可以使用不同的编程语言和工具,如C++、Java、PLC编程软件等。开发人员可以根据具体的应用需求选择适合的语言和工具来实现。同时,也可以借助现有的工程平台和开发环境,如4DIAC-IDE、CODESYS等,来简化和加速开发过程。 总之,IEC 61499运行态的实现使得分布式控制系统能够更加灵活、高效地响应外部变化,提高了系统的可编程性和可扩展性。通过合理的资源管理和调度,确保系统的稳定性和可靠性。它在自动化控制领域具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值