PLCopen 运动控制功能块在IEC61499 中的实现

        目前,运动控制器已经完全无缝集成到了PLC 中了,在这个过程中,PLCopen 的运动控制功能块库功不可没。几乎大多数商业化的PLC 运动控制模块都是基于PLCopen 运动控制功能块实现的。这给使用者带来了便利,系统工程师能够采用同样的方式来构建基于不同厂商PLC 的运动控制应用系统。在我之前的博文中曾经探讨过将PLCopen 运动功能块库融合到IEC61499 分布式·控制系统中的问题。但是具体实现起来还有许多问题有待思考。最近,我们在研究具体的实现方案,在此分享我们的一些想法。希望感兴趣的人共同研究。

我对PLCopen 运动控制并不熟悉,因此文章中难免错误。希望批评指正。

          在单轴,或者是非同步多轴运动控制系统中, IEC61499 融合PLCopen 是比较容易的。只需要将PLCopen MC 功能块移植到IEC61499 中就可以了。

 了解IEC61499 功能块的读者会发现,实现这样的转换并不困难,尤其是对于单轴控制而言,但是对于多轴同步运动系统而言,情况将变得复杂许多,这涉及到轴间同步的问题。

多轴系统

     PLCopenMCL 提供了一组管理和控制功能块,用于协调多轴运动。 在PLCopen中,多轴控制使用主从轴关系,这种关系定义在真实的或虚拟的

      主轴和一个或多个从轴。主轴保持了它的实际状态,从轴处于“同步运动”的方式‘。这样的同步关系可以分为两种:

  1.     根据轴位置(凸轮)
  2.     根据轴速度(齿轮)
  3.     从轴与主轴保持相位关系

这种关系一旦建立后,对主轴的任何命令都会导致适当从轴运动。

下面是电子凸轮的实现示意图

集中式

       所谓集中式运动控制是指在一个设备上实现多轴运动控制。进一步地细分,又可以分为有一个CPU 实现多轴控制,或者内部多个CPU构成的多轴控制。通常一个CPU 实现一个轴的控制。

     由一个CPU 实现多轴运动控制的典型例子是PC机+运动控制卡模式。运动控制卡通过PCI 总线与X86 CPU 相连接。Intel CPU 提供强大的算力足够支持几十到几百个轴的运动控制。对于实时性要求高的场合,比如CNC 系统,PC+运动控制块模式仍然具有非常强的优势,其中轴间同步时间是线程之间的切换时间来决定的。而一般高端的PC为基础的运动控制的windows 是微软公司定制的,具有非常强大的实时性。在一些所谓中型,或者大型PLC 中,也采用了Intel CPU+PCI 总线的物理架构,实现高性能多轴控制自然也不在话下。

   在一些以微处理器为基础的多模块运动控制系统中,需要通过外部的现场总线来实现多个轴运动控制模块之间的实时通信,例如SERCOS,EtherCAT ,CANBUS FD或者Ethernet+IEEE1588等方式。

       在这种方式下,伺服控制器物理上通过同步网络实现的分布式是控制,但是由于IEC61131-3 本质是支持单一设备的编程,因此,基于PLCopen 的运动控制系统是一个集中控制的方式系统,    通常使用一个PLC 或者工业电脑实现多轴运动控制的主控设备。而伺服控制器作为从设备。

分布式

在分布式控制系统中采用PLCopen PLC 是有局限性的。例如在一个分布式的多轴应用系统中,多个从轴同步与一个主轴,但是从轴控制又需要根据某些IO状态做出变化,例如油缸位置,压力或者阀门。那么油缸位置,压力传感器的IO模块挂在哪一个总线上呢?这将有两种方式。

       第一种方式下,油缸位置,压力传感器的IO模块挂在同步总线上,由集中控制的PLC 来读取这些传感器的参数,并且做出判断之后发送参数给从伺服控制器做出改变。这样做增加了传感器相应的时间延时,而且由于增加了同步网络的信息传输,需要增加额外的带宽,或者加剧了时延。

        而在第二种方式下,连接传感器的IO模块通过伺服控制器的本地IO控制线(例如SPI)读取传感器的数据,实时性提高了,但是带来了另外一个问题,运动控制模块的可变因素增加了,无论是是采用组态或者功能块来配置从伺服控制器的参数都变得异常复杂,而且失去了灵活性。最好的解决方式是在伺服运动控制器中实现部分PLC 可编程功能。例如构建梯形图。这样一来,同步多轴控制系统演变成为了分布式实时PLC系统。显然,IEC61499 是原生的分布式控制技术。更具有优势。

在这种架构之下,每个运动控制器内部带有一个IEC61499 运行时.多轴运动控制器的同步问题转变成为IEC61499 功能块的同步之下问题.

 传统的PLC 运动控制系统转变成为IEC61499 分布式运动控制系统

基于IEC61499 的分布式多轴运动控制系统

       将传统的伺服运动控制器中增加了IEC61499 运行时,就能够构建分布式多轴运动控制系统了,不过还有许多的问题需要进一步考虑。

其中最关键的问题是适合实现多轴运动控制器之间的同步通信?

IEC61499 能实现同步通信么?

许多人认为IEC61499 是一种基于事件的异步通信方式。它有别于传统PLC 的同步周期性通信和执行方式。那么,IEC61499 到底能否实现同步执行呢?其实完全是可以的,而且它能够实现分布式同步执行。

 我们以下面的例子来说明IEC61499 的同步执行方式

在这个系统中有三个IEC61499 PAC ,其中一个称为主控制器Forte_PC,另外两个是从控制器PFC200,PFC201.

 我们编写了一个简单的应用程序

将E_CYCLE 映射到Forte_PC ,将E_WSITCH 和E_CTU 映射到PFC200,而将E_WSITCH_1和E_CTU_1映射到PF201 .

 在运行过程中,每当E_CYCLE 产生一个EO 事件,会通过UDP 广播的方式发送给PF200和PF201 两个控制器,这两个控制器内部的功能块收到EO 事件后会执行计数。如果网络足够快的话,他们是同步的!正如我之前提到过的,如果你是一个硬件工程师的话,你完全可以将功能块看作是集成电路组件,而事件就是脉冲和逻辑信号。统一的时钟信号能够实现集成电路之间的同步,基于事件的功能块也自然能够实现同步执行.

    我们十分兴奋地看到IEC61499 是一个原生的同步网络。如果我们采用千兆以太网,或者TSN 网络,我们可以为IEC61499 的事件通信预分配带宽。就能够保证时钟事件的传输时延足够地短。

      我们可以开发一个时钟事件功能块(tsnPubulish和tsnSubscribe),来区分实时通信,还是非实时通信.

多轴系统的时间同步 

    仔细的分析就可以看出,IEC61499 能够实现分布式系统的事件同步(event sync) ,许多场合这种同步已经满足应用的要求了.比如每个从轴控制器根据主轴控制器的周期性事件(E_Cycle 功能块产生的) 启动一个控制环的执行.如果涉及多个精确时间同步的控制信号的话,往往要求多个控制器之间实现时钟同步,那就需要实现时钟同步,这可以通过IEEE 1588 协议,或者ntp 协议来实现时间同步.为此,我们可以开发一个PTP_Request和PTP_Response 功能块实现IEEE1588 协议.也可以在tsnPublish 功能块的数据帧中添加时间标签来实现不同控制器之间的时间同步.

在时间敏感网络中,可按照内容的实时性等级来分配不同通信功能块的优先级.

 结论

  1.  在IEC61499 分布式控制系统中导入PLCopen 运动控制功能块库是可行的.
  2. 对于分布式多轴运动控制系统中,IEC61499 具有天然优势,比基于IEC61131-3 的PLC 更加灵活,可编程.
  3. 时间敏感网络与IEC61499时间同步功能块能够实现分布式运动控制系统的同步.比起EtherCAT 协议更具有优势和灵活性.

猜你喜欢

转载自blog.csdn.net/yaojiawan/article/details/120683249