基于FPGA 的PLC/PAC 硬件运行时的实现

        许多人都将通用系统上实现的PLC 称为软件PLC,而将PLC 设备称为硬件PLC,其实这是一种误解,大多数PLC 的程序都是通过软件来运行的。

        许多PLC是采用通用MCU 实现,PLC 内部运行时是通过软件实现的。应用程序执行的方法有两种,一种是将IEC61131-3的梯形图,ST,IL转换成为一种中间语言,由PLC 运行时解释执行,另一种方法是将IEC61131-3 的应用直接通过编译器翻译成为PLC 内部MCU 的二进制执行代码,下载到PLC 内部存储器中直接执行。无论是哪一种方式,它们都是软件为主实现的。不同厂商的PLC 会采用不同的方式来提高运行时的执行效率,比如采取更高速率的MCU,RTOS和高速内部总线。

        与之类似的,基于IEC61499 功能块的PAC 与PLC 也十分类似。运行时也是由软件实现的。

        为了提高PLC 的运行效率,提高PLC 的实时性和确定性,现代PLC 中使用了FPGA 芯片。使用FPGA能够实现PLC中功能块的硬件加速。能够在控制周期中实现更加复杂的算法,比如数字滤波,FFT等。更进一步地,还能实现AI,图像识别需要算力的算法。

        但是,这仍然是一种软硬件混合的实现方式。FPGA只是加速了功能块的执行算法,功能块与功能块之间的调度,数据传递是依靠软件来完成的。所以说,它并不是“纯”硬件PLC 方法。

           软硬件混合模式具有一定的局限性,比如,一个PID 环,如果数据采集,信号处理,PID 算法和执行输出将会由多个功能块实现。即使功能块由FPGA 实现,功能块之间的数据交换和基于事件的调度,仍然由运行时程序完成,这样一来,运行时软件与FPGA 之间的数据交换将会影响执行速度。

        如何能够实现“纯”硬件执行PLC 的梯形图或者IEC61499 的功能块应用?这将会使事情变得复杂

  1. PLC 的组态工具能够将梯形图,功能块网络编译成为Verilog/HDL代码
  2. 借助于FPGA 开发工具(例如vivado)综合,实现FPGA的bitstream。
  3. PLC 程序完全由FPGA 在同步时钟的驱动下硬件实现,软件主要完成网络通信, 监控等非实时任务。
  4. FPGA 具有局部重构的能力。动态下载基于IEC61131-3/IEC61499的硬件逻辑

“纯”硬件PLC 的流程

 

一个折中的方案

         纯硬件实现显然不够灵活,而且增加了开发的难度。笔者认为,有一种折中的解决方案,就是将事件敏感的PLC 周期执行环路放置在复合功能块中,将这些实时复合功能块转换为HDL 语言,将HDL 转换成为FPGA的bitstream。

该方案的结构如下:

      PLC 复合功能块转换成为FPGA 内部逻辑,在全局时钟额驱动下实现周期化执行,并且通过接口与PLC CFB 交换信息。PLC-CFB也能够对硬件PLC 逻辑做参数设置。

硬件HDL 功能块库

            与软件runtime 类似。要建立“纯”硬件PLC ,基于HDL 的功能块库同样非常重要,我们要建立基本逻辑功能块和面向行业应用的功能块库。所谓PLC 梯形图转换成为FPGA 逻辑,其实是编写一个Top 模块。

结束语

        本文讨论了基于FPGA 的IEC61131-3、IEC61499 功能块应用的“纯”硬件实现。提出了功能块FPGA化和PLC 功能块化的两种方案。供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值