构建IEC61499实时控制网络

Posted 姚家湾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建IEC61499实时控制网络相关的知识,希望对你有一定的参考价值。

如果道路上的车辆和行人是同步有序地行进的话,我们还需要红绿灯吗?

-写在前面的话

          本文研究基于IEC61499 的时间关键分布式系统(time-critical Distributed System)的若干问题。

        对于航空航天,高铁,汽车,自动化系统而言,时间对可靠性至关重要。要确保控制程序在时间上的可靠性。IEC61499 是分布式控制和测量系统的事件驱动功能块模型, IEC61499 是否适合时间关键的应用场合,比如航空,交通运输,工业控制等领域的运动控制系统,分布式大规模数据采集系统?需要什么样的时间关键的网络和协议?网络上关于这方面的文章相对比较少。我们进行了试探性地研究。

     本文提出的观点是,物理时间是一个连续的变量。而事件是某一时刻产生的某种状态的变化,时钟将时间转化为周期发生的事件。从这个意义上,我们可以认为时钟本质上是一个事件的模型,在实时系统的研究中,都提到时间触发和事件触发的概念。这两个概念其实是同样的事情。

        在时间关键的应用系统,特别是工业控制领域,人们提出了各种适合时间关键应用场合的通信协议。它们的一个重要的目的是实现所谓时间触发通信(time trigger communication)。其基础是通信领域的时分复用技术(TDMA)。常见的EtherCAT,Powerlink,到目前热门的时间敏感网络(tsn)技术都是如此。为什么需要采用这种时间触发网协议呢?笔者认为主要是由于控制设备中的程序中缺乏了时间同步。这就好比如果道路上的车辆与行人是定时出发,同步行进的话,我们还需要红绿灯吗?如果一个系统的所有个体都是自律的话,个体之间的信息交换就不需要复杂的控制,只要提供足够的带宽就可以了。

        由此我们得出了一个重要的推断,控制领域之所以需要采取各种复杂的现场协议,其中一个主要的原因是控制设备中的软件是不自律的。

一些基本概念

        时间关键性分布式应用也称为实时系统(RealTime System),奥地利赫尔曼-科佩茨教授的《实时系统-分布式嵌入式应用的设计原理》一书有深入的论述(已由北航教授翻译成中文版)。 Hermann Kopetz是维也纳科技大学的教授,奥地利科学院的院士。 1994年,他因为对容错实时系统的贡献而被任命为IEEE院士。他也是TTTech公司的创始人之一。目前TTTech 在时间触发网络,时间敏感网络领域十分活跃。在这一节我们首先描述他书中的一些基本概念。

何为实时计算机系统

        实时计算机系统的行为正确性不仅取决于它的逻辑计算结果,也取决于计算结果的输出物理时间。系统按时间产生的输出称为系统行为。

          时间十分重要,许多学科中,时间是决定系统状态变化序列的一个变量,物理学中的基本常量的定义都与标准时间相关。

硬实时与软实时

        必须满足一个硬截止时间的实时计算机系统称为硬实时计算机系统,或者安全关键实时系统。如果果一个系统没有硬截止时间称为软实时系统。

实时系统的时域需求

        一个实时系统在时间方面的需求称为时域需求。它包括了两个方面

时间约束

         对系统状态的变化在规定的时间内响应。也就是我们通常所说的响应时间,或者是感知时间。不同的应用系统对于时间约束的要求是不同的。

时间序

        牛顿物理学真实时间是连续的,可以通过有向时间轴来描述。时间轴上的任意一个点,称为时刻。两个不同时刻之间的时间区间称为时间区间。一个事件总是在某一个时刻发送的,如果两个时间是在同一个时刻发生的,那么他们被认为是同时发送的两个事件。而不同时刻发送的事件,具有先后关系。

时钟

        时钟用来度量事件之间的时间间隔。数字物理时钟包含一个计数器和一个物理振荡器。用于周期性产生时间事件(钟摆事件),每次钟摆事件的到来增加计数器值。这个周期性事件被称为时钟的节拍。

时间粒度

        数字物理时钟的两个连续事件之间的时间间隔称为时间粒度(即最小的时间度量单位) ,显然,如果要测量一个给定时钟的时间粒度,就一定需要有一个时间粒度更小的时钟。

全局时钟

        在典型的实时应用中,分布式计算机系统中同时执行不同的功能,例如监控实时实体(读取值及其变化,检测报警条件,向操作者展示观察结果,执行多种算法,为控制回路设置新的设置点(set-points)。为了保证整个分布式系统的行为一致性,必须保证所有的节点按照一致的顺序执行,需要一个全局的时钟,同步地检测硬件状态,并且按照事件发生的时序来处理所有事件。这就像在所以数字控制系统(比如计算机)中都有一个主时钟。它由一个晶体振荡器产生的高速脉冲。系统中其它时钟序列(比如CPU的指令执行周期)都是由主时钟分频产生的。

触发(trigger)

        它是一个时域控制信号,表示在某一个时刻来启动某个活动,触发信号可能与一些事件的发生关联,我们称为事件触发(event trigger)或者与时间轴上一个特定时刻的到来关联,我们称为时间触发(time triggrt)。

        前面我们已经提到,使用时钟来衡量时间间隔,数字时钟周期性地产生时间事件。由此看出,时间触发本质上是一个周期性事件。事件触发和时间触发本质上是相同的。

组件

        一个处理单元执行一个算法的过程称为一次计算或者一个任务,计算由一个组件完成。组件是一个完整,独立的软、硬件单元或者部件,并通过消息交换与其环境进行相互作用。

一个组件通过其外部环境的接口所产生的输出消息时间序列称为该组件在该接口上的行为

一个组件的预期行为称为服务,非预期行为称为故障。组件内部的结构,无论是简单还是复杂,组件的使用者都既可以不见,也不关心。

  组件在上电后进入Ready状态,等待触发信号来启动相关计算。

影响系统实时性的主要因素

许多因素将影响分布式系统的实时性,它们主要包括下面几个重要的因素:

 硬件的性能

 CPU 的性能

      CPU的主频,字长, 数据总线以及流水线结构。 比如IntelCPU终于攻克4GHz大关,近日Intel发布了一款双核Xeon处理器,其默认主频高达4.4GHz。而NXP 双核i.MX RT1170采用主频达1GHz CPU,

存储器性能

内存的访问时间和容量。

IO 性能

总线 DMA,中断方式等技术都致力于改善计算机的处理性能。

软件的性能

实时操作系统

        实时操作系统的调度算法与响应外围设备的IO响应,重要线程的调度非常重要,通常在PLC 产品中使用Vxworks OS。

应用软件 

        应用程序采取什么编程语言,软件的架构和编程技巧将直接影响实时系统的性能。

计算机网络

        对于一个分布式系统而言,网络的性能也是影响系统实时性的主要因素。同样地,它包括了网络的硬件传输性能和软件协议的实时性。

软硬件的适配

        嵌入式系统的软件和硬件在产品出厂时确定的。这一点非常重要,在产品开发阶段就充分地考虑到所有的软件都能够在硬件平台上以规定的时间约束下完成。通过产品的严格测试,保证软件的最长执行路径都能够在规定的的时间间隔内执行完成IO输出控制信号。人们总是觉得PLC是可靠的。而软件PLC(softPLC) 是不可靠的。这除了PLC 的硬件设计能够符合工业现场恶劣环境下运行(比如宽范围的电源抗干扰能力,电磁兼容性等)。而软件PLC 在PC机或者工业PLC 上运行。其实完全能够设计出高可靠性的工业电脑。但是不可或略的是,软件PLC 可以装入各种软件运行,甚至是用户编写的程序。这增加了控制设备可靠性的变数。

        我们经常会遇到,新买来的计算机或者手机会非常流畅和快速,但是几年下来,会越来越慢,是因为硬件老化了么?不是,是你装的软件太多了,而且软件不断地增加功能,对硬件的要求不同造成的。嵌入式控制设备固定的软件,能够保证软件可靠性的同时,并且与硬件适配。我们发现目前PLC 大厂相对比较封闭,其中的运行时,功能块都是由原厂提供的,用户不能参与功能块,程序库的开发。这除了商业上的策略之外,确保可靠性也是一个因素。

        另一方面,对于近阶段流行起来的边缘服务器和开放性控制系统而言(我们后面提到的IEC61499 控制系统同样如此),用户或者第三方参与程序的开发会带来可靠性,一致性方面的不确定性风险,即便是用户开发的程序逻辑上是正确的,也可能计算量超出硬件的能力而产生运行时间减慢,系统响应能力下降等风险。如何保证用户或者第三方开发者的软件与硬件适配,并且为用户提供软件性能检测工具是一个非常大的挑战。

PLC 61131-3执行模型

        PLC 61131-3 执行模型基于时间触发,在一个时间周期中,PLC硬件从左到右,从上到下执行一遍应用程序。 编写的程序要确保能够在一个周期内执行完成。

        PLC 61131-3 的执行模型的时间触发的模式。软件组件执行时间顺序是功能块在程序中的位置确定,左上方的功能块首先被执行。外部事件的采集和捕获的时间顺序也是由IO 功能块的排列顺序确定的。

        由此看出,在PLC内部,程序是时间同步的。但是我们也知道PLC 程序是单机运行的。没有考虑分布式系统中,设备之间信息交换的同步和协调。

IEC61499 实时执行模型

        IEC61499 的应用程序是一个功能块网络。功能块使用前面提到的组件模型。完成一个单一的计算或者任务。

功能块的主要特点

  1. 每个功能块的算法都是由输入事件触发执行。输出的消息时间序列包括了事件和数据。事件是时间特征,而数据是逻辑特征。
  2. 功能块内部包含一个状态机,记录过去的行为所形成的状态。
  3. 功能块根据触发事件,输入数据以及内部状态来确定执行的算法或者任务,并且根据算法/任务的执行结果产生输出事件和数据。

功能块分类

 基本功能块(Basic FB)

服务接口功能块(SIFB)

        服务接口功能块(SIFB)内部算法、任务能够访问设备底层的操作系统或者硬件。他们包括GUI,通信和IO接口。服务接口功能块是由其输入事件触发的。

复合功能块

内部使用多个功能块构建的功能块。

实时性IEC61499 应用

       是否能够将IEC61499 应用于实时应用领域?这是笔者经常被问到的,比如,是否能够在运动控制领域使用?据说未来的IEC61499 标准中将会包含PLCopen 的运动控制功能块库。我关心的是技术上如何实现,性能如何?

根据直觉,将IEC61499 功能块模型应用与实时系统,至少需要解决下面几个问题:

1 全局时钟

        分布式系统具有一个全局时钟,产生同步的节拍事件,访问硬件的服务接口功能块的触发事件是节拍时钟或者其分频时钟形成的具有时间顺序的事件序列。

        我们曾经提出,IEC61499 功能块网络类似与数字电路中的集成电路图,其中功能块类似于集成电路,而事件类似于时钟信号,在时钟的控制下确定时钟和数据的流向和顺序。

        举一个不完全贴切的比喻,传统PLC 就好比是由继电器构成的早期逻辑电路,而IEC61499 类似大规模集成电路图。当然,现代PLC 以及逐步加入了许多的集成电路,但是其控制逻辑仍然没有摆脱早期继电器逻辑控制的模型。

        在功能块网络中, 服务功能块和时钟功能块(E_CYCYLE)输出事件将触发网络中其它连接功能块的执行,并且沿着事件连接,执行一连串功能块。

2 事件的响应在确定的时间间隔内完成

        例如,当温度超过告警门限时要求在规定的时间间隔内做出停止加温的操作。

3 访问硬件底层IO状态的时钟事件的时间间隔要足够地短,以保证能够采集到硬件状态的高速变化

        例如,开灯是一个事件,开门是另一个紧随的事件。开门事件的处理中需要判断是否开灯,因此当开门事件到达之前,开灯事件必须执行完成。

        一个外部事件响应会引发产生多个事件,形成一个事件序列, 这些事件的响应操作会最终导致系统趋于新稳定,等待响应的事件序列变为零。等待新的外部事件的到来。

        外部事件引发的最长事件序列的总响应时间称为该外部事件的响应时间。

        有些场合,在功能块网络中功能块执行过程中也会产生类似于硬件时序电路中的时序竞争的问题,为了保证功能块网络中功能块执行顺序的确定性,要采取特殊的措施。

4 实时性网络

我们在下一节讨论。

实时网络技术

如果实时系统是一个分布式系统的话,那么对网络及其协议就提出了实时性要求。

实时性要求

  1. 短的消息传输时延
  2. 最小化传输时间抖动
  3. 时钟同步
  4. 保持消息的时间顺序,保持接收消息的顺序与发送消息的顺序一致性。

实时分布式计算机系统对通信网络提出的实时性要求。常见的通信网包括

点对点星型通信网

         通过点对点同步通信链路连接两台计算机。这种方式实现同步比较方便,但是需要的通信线路多,成本高。只能在少量计算机联网时使用。HDLC 协议是点对点同步通信协议。

总线型通信网

        所谓总线型通信网络是只在一对或者两对通信线路上并行连接多台计算机设备的网络。在计算机网络技术的发展过程中,出现了下列几类重要的总线型通信网络技术

-时分多址复用网(TDMA)

        为每个节点预分配一个时间槽,通信节点只有在自己的时间槽传输数据。如果总的传输速率是m,n个节点,时间槽时间间隙为t。那么每个节点的速率是m/n,每次传输的延时为t*(n-1)。TDMA 的速率和延时是恒定的,通道利用率不高。

-令牌网

谁拿到令牌谁可以发送消息。目前不常见了。

 -基于冲突检测多路复用(CSMA/CD)

        以太网,CAN都是采用这种技术。相比时分复用网络而言,CSMA/CD 的传输效率高,只有需要发送消息的节点才占用通信通道。

  由于在过去的几十年间,以太网技术在计算机网络中获得了广泛的应用,几乎所有的MCU 上都具有以太网接口,以太网设备的价格大幅度下降,因此,人们更倾向开发基于以太网物理接口的实时通信协议。满足实时通信网络的需要。

   以太网技术用于实时通信的主要问题是冲突可能无法保证传输时延的恒定,非实时大数据传输可能影响时间敏感消息的实时性传输。

  以太网实时通信协议的主要方法是各种形式的时分复用方法:

  • 时间触发以太网(Time trigger ethernet)
  • 预留带宽方法

网络时钟同步

        为了实现全局时钟同步,要实现网络中的所有节点时钟同步。

NTP(Network Time Protocol, RFC 1305)

主要目标是实现互联网上分布式系统的时钟同步,目标精度通常为几毫秒。

IEEE 1588 (PTP-Precision Time Protocol

网络上的精确时钟同步协议。目标精度低于一毫秒。

        为什么 IEEE 1588 如此准确?主要是由于硬件时间戳。当消息离开或到达网络端口时,特殊硬件会根据本地时钟生成时间戳,通常在数据链路层 (MAC) 和物理层 (PHY) 之间的媒体独立接口中。这消除了操作系统和其他软件不可预测的缓慢响应。

        在以太网的MAC控制器或者PHY 器件中实现一个硬件的时钟。定义一个特殊类型的以太网帧,主控制器定时周期性地发送一个·SYNC 同步报文,当同步报文进入MAC或者PHY 时,由硬件插入时间标签,在接收端,MAC或者PHY 器件收到SYNC 报文时,自动地接收发送端的时间标签,调整本地计数器的值,达到时间调整的目的。

   PTP 协议

        除了·硬件时间戳机制以外,IEEEE1588 定义的PTP 协议。IEEE1588标准的全称是“网络测量和控制系统的精密时钟同步协议标准(IEEE 1588 Precision Clock Synchronization Protocol)”,简称PTP(Precision Timing Protocol),它的主要原理是通过一个同步信号周期性的对网络中所有节点的时钟进行校正同步,可以使基于以太网的分布式系统达到精确同步,IEEE 1588PTP时钟同步技术也可以应用于任何组播网络中。

        同步的基本原理包括时间发出和接收时间信息的记录,并且对每一条信息增加一个“时间戳”。有了时间记录,接收端就可以计算出自己在网络中的时钟误差和延时。为了管理这些信息,PTP协议定义了4种多点传送的报文类型和管理报文,包括同步报文(Sync),跟随报文(Follow_up),延迟请求报文(Delay_Req),延迟应答报文(Delay_Resp)。

在一个嵌入式设备中要实现IEEE1588 精确时钟,首先MAC或者PHY 要支持硬件时间戳。

   为了使用网络同步的全局时钟源,在硬件中要使用一个额外的定时器(例如在STM32F处理器中的TIM2),该定时器由MAC IEEE1588 定时器触发计数。实时应用程序要基于这个时钟定时,而不是系统的滴答时钟。

事件触发网络(event trigger communication)

        前面我们提到事件是在某一个时刻产生的,当一个事件产生时刻引发网络传输的方式就是事件触发网络。

时间触发网络(Time Trigger communication)

        时间触发网络其实类似于在分组通信网(比如以太网)上实现的时分多址网络

  系统拥有一个统一的全局时钟(Global Time),通过时钟同步网络协议实现所有节点的本地时钟(Local Time)与全局时钟同步。

        每个节点都分配一个时隙,只有在分配给本节点的时隙中传输数据。实际传输的时间应该小于时隙的长度。

使用时间触发协议的网络协议

TTP/C :航空领域。用于飞机A380,波音787,。。。

FlexRay :用于BMW,也用于Audi A8.。将成为汽车工业的领域时间触发标准

TT-CAN :低成本现场总线

SAFEbus 用于波音777

SPIDER(ROBUS) 由NASA 开发

事件触发以太网:由TTTech 开发

西门子ProfiNet 用于工业自动化

以太网Powerlink 用于工业自动化

在时间敏感网络中,

时间敏感网络(tsn Network)

        与时间触发网络不同,时间敏感网络是一种带宽预留的通信方式。为实时数据安排预留的带宽,保证实时数据的传输。实现的基本方法与时间触发网络是类似的。

     实时消息和非实时消息隔离

        现代工业控制系统越来越多地需要与服务器,边缘服务器,甚至云端服务器交换数据,虽然大多数工业网络协议将实时消息与非实时消息采取分时段传输的方法。

        例如下面是Powerlink 的方法,前面一段是时分复用,后一段是异步方式,异步方式可以承载UDP和TCP 帧。EtherCAT 也有类似的机制。

     这样做的一个缺点是即便是非实时消息的服务器或者云端访问,也需要使用符合powerlink 协议,在许多场合实际上是做不到的。比如IEC61499 的IDE 需要下载每个设备的功能块网络,并且对IEC61499 功能块网络的执行监控。我们无法要求大量的IT设施的软件使用Powerlink 协议。即便是自行编写软件,powerlink 这样的API 的使用也是不容易的。

所以,在设计控制器是最好的方式是将实时控制网络与非实时网络分离。

 

为什么实时网络?

        为什么在时间关键的分布式系统中需要使用实时网络和协议的。这是由于在一个复杂的分布式控制系统中,各种变量和状态的改变是时间不确定的,也就是说,系统中事件产生是不定时的。这将会造成网络中的信息传输是不确定的。当两个发送事件同时发生时,在一个共享总线上就容易造成碰撞。这将造成传输时间的不确定性。

        基于TDMA 的实时网络的作用就是即便是两个事件同时发生,也将会将这两个事件触发的消息在两个时隙内发送。

                显然,这是由于设备内部的程序访问网络没有约束造成,如果一个系统的每一个个体都是自律的,那么系统的信息传输就不需要控制和约束。只需要提供足够的带宽就可以了。

        之所以我们需要使用各种时间触发网络或者时间敏感网,是因为计算机的内部程序是异步执行的,程序发送数据也是异步的,突发性的。

IEC61499 的实时通信

     在IEC61499 标准中,并没有具体规定分布式设备之间的通信方式和协议。 通过上面的分析,我们对如何构建一个时间关键的分布式控制系统有了一个清晰的脉络。

   首先我们需要在系统中有一个全局时钟,实现全网设备的时钟同步,其次是在IEC61499 功能块网络时钟内插入同步与全局时钟的时钟功能块。它们包括周期时钟功能块(RT_CYCLE),延时器(RT_DELAY),计数器(RT_CTU,RT_CTD),对关键事件(例如Publish,Request等网络发送功能块)实行时间约束。通过这些措施,我们能够实现对功能块的时间约束,保证通信网络的分时均衡访问。

        在上图中,虽然硬件状态事件是同时产生的,但是功能块的同步机制使这两个事件对应的功能块输出事件的时刻分别延时t1 和t2 时间间隙,从而保证了网络上传输的信息是错开的。不会产生冲突。

          由于IEEE1588 机制下,每个设备的本地时钟是不断地根据全局时钟周期性地调整的,所以并不会产生定时器的积累误差。只要t1和t2 选择合理。能够保持这种同步机制。

         对IEC61499 功能块实行时间带来的另外的好处是能够检测系统的故障,实现系统的安全监控。

全局时钟

         前面已经提到,普遍使用的精确时钟同步的网络协议是IEEE1588。使用IEEE1588 PTP 协议实现全局时钟,使所有的设备时钟同步。这是实现实时网络的基础。

 IEC61499 的定时功能块(E_CYCLE和E_DELAY)使用基于1588 的时钟源。也可以额外定义实时功能块库。它们至少由下面几个重要的功能块

  1. RT_CYCLE
  2. RT_DELAY
  3. RT_REQUEST
  4. RT_PUBLISH
  5. RT_SUBSCRIBE

        在分布式系统中拥有了全局时钟之后,IEC61499 的功能块网络完全能够演变成为一个时钟同步的网络。如果采取硬件时序数字电路的设计方法来构建IEC61499 功能块网络的话,我们能够设计出同步时序的的IEC61499 应用。而且可以是网络的传输的有序的,避免了网络的冲突。我们能够在一个普通的网络上实现时间触发网或者tsn网络的传输性能。

        这样的方法带来的好处是显而易见的。事实上,在4diac 的Forte 运行时中包含了对Powerlink 的支持,但是它只是支持对powerlink 网络的访问,并不是使用powerlink 作为IEC61499 的基础网络。如何将IEC61499 的功能块事件和数据动态地映射到powerlink 的PDO对象上,仍然是一个极为复杂的事情。

   下面我们通过一些实例来说明如何构建时钟同步的IEC61499 功能块网络应用。

PID 控制回路,定时执行和输出。

        在该例子中,以200us 的周期读取硬件接口的数据,通过PID 功能块进行调节,PID 功能块的计算时间可能是不确定的。但是在100us 之后,输出结果。

        如果我们增加一点功能块,可以检测PID 是否会产生超时故障:

E_D_FF 的Q 反映了是否超时的状态,Q=0表示当100us 延时到达时,PID 还没有计算完成。

例2 三台控制器,其中两台控制器接收数据,并将结果传送到第三台控制器处理。

 示意的功能块网络如下图所示:

        上中下三行,分别部署在三个控制器中,它们通过publish/subscribe 实现数据交换,上面两个控制器分别是在100us 和200us 的时刻发送数据给第三台控制器进一步地计算。值得注意的是,两个控制器分别使用了两个E_CYCLE 时钟,但是它们基于全局时钟源,是同步的。

我们可以画出类似与硬件时序的功能块执行时序图

结束语

          本文提出了一个重要的观点,在一个分布式系统中,如果每个个体都能够自律和同步的话,在普通网络上,只要能够保证足够的带宽,使用标准的协议就能够实现实时通信。

         通过分析进一步提出,IEC61499 事件驱动功能块信息模型有利于构建时间关键的分布式控制应用·。 IEEE1588 PTP 实现全局时钟后,通过增加基于全局时钟的时序功能块。能够实现分布式同步控制网络,这将大大简化现场实时控制网络的复杂性。在普通的网络上就能够保持系统的实时性传输。

   尽管文章写的比较粗糙,存在许多的错误和不严谨。但是我觉得这是一个非常有趣的课题。我们将尝试做进一步的实际的测试,这是一个非常有趣的课题。结果将在后续的博文中报告。

以上是关于构建IEC61499实时控制网络的主要内容,如果未能解决你的问题,请参考以下文章

实时IEC61499漫谈-实时功能块,运行时和OS

实时IEC61499漫谈-实时功能块,运行时和OS

如何构建一个基于IEC61499 的“云化PLC“

构建OPC UA 可执行模型

构建OPC UA 可执行模型

是否有使用 OPA UA 传输数据的 IEC 61131 / IEC 61499 PLC 功能块?