许多人都将通用系统上实现的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 功能块化的两种方案。供参考。

基于FPGA 的PLC/PAC 硬件运行时的实现相关推荐

  1. 讯琥科技基于FPGA 的区块链硬件加速服务性能直逼100,000 TPS

    区块链是一种防篡改的去中心化账本,可建立必要的信任机制,从而在免去中间环节的情况下交换价值.据IDC预测,到2025年,全球物联网(IoT)设备数将达到416亿台.当前,物联网行业高度碎片化.相互孤立 ...

  2. 基于FPGA的高性能视频硬件编码器

    基于高性能视频编解码技术的解决方案,可以实现高清画质更快的压缩速度.更少的带宽消耗,在满足用户高清画质要求的前提下有效降低运营成本.阿里巴巴达摩院XG实验室,高级算法专家杨名远在LiveVideoSt ...

  3. 目标检测YOLO实战应用案例100讲-基于FPGA的目标检测硬件加速技术及其应用研究

    目录 基于FPGA的目标检测加速器设计 目标检测算法与加速方法 2.1 YOLO v2算法

  4. 基于FPGA音乐播放器硬件电路设计

    语言是VHDL语言 音乐硬件演奏电路基本原理 硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音.乐曲中 ...

  5. 为基于spring-boot的应用添加根据运行时操作系统环境来提示用户选择active profile的功能...

    spring-boot有一个根据JVM变量-Dspring.profiles.active来设置运行时的active profile的功能,但是有些时候我们也许会不小心忘记设置这个变量,这样在生产环境 ...

  6. 计算机组成 vhdl cpu 实验 西安交大,基于FPGA的VHDL计算机组成实验平台的设计与实现...

    摘要: <计算机组成原理>是计算机系的一门核心课程.但是它涉及的知识面非常广,内容包括中央处理器,指令系统,存储系统,总线和输入输出系统等方面,学生在学习该课程时,普遍觉得内容抽象难于理解 ...

  7. 云原生运行时的下一个五年

    文|马振军(花名:古今 ) 在基础架构领域耕耘多年 目前在蚂蚁集团中间件团队 负责 MOSN.Layotto 等项目的开发工作 校对|卓与.齐天 本文 9053 字 阅读 18 分钟 |前言| 在过去 ...

  8. 科维PLC运行时系统ProConOS embedded CLR 2.2 特定应用

    ProConOS embedded CLR是新型的开放式标准化PLC运行时系统,符合IEC 61131标准,可执行不同的自动化任务(PLC.PAC.运动控制.CNC.机器人和传感器). 通过采用国际标 ...

  9. 电子技术课程设计基于FPGA的音乐硬件演奏电路的设计与实现

    wx供重浩:创享日记 对话框发送:乐曲电路 免费获取完整无水印论文报告(包含电路图) 文章目录 一.设计任务要求 二.总体框图 三.选择器件 四.功能模块 五.总体设计电路图 六.结束语 一.设计任务 ...

最新文章

  1. 瞄准VR游戏市场,这款数据手套还提供模块化定制
  2. mac、linux 查看端口占用程序
  3. if some one want to buy it
  4. VRRP协议简介与实例配置
  5. es6 includes(), startsWith(), endsWith()
  6. 网易数帆发布轻舟低代码平台2.0,聚焦中等复杂度企业级应用
  7. matlab 排课代码,matlab遗传算法排课问题,程序一直有错,求解答
  8. 多平台移动项目开发工具Elements发布v9.1,支持Visual Studio 2017
  9. Flink Remote Shuffle 开源:面向流批一体与云原生的 Shuffle 服务
  10. LINQToSQL中如何更好的手动设置导航字段,并返回实名类型而不是匿名类型
  11. Java面试题全集(上)
  12. zlog日志使用说明
  13. AE光效效果插件:Trapcode Shine
  14. 支付宝支付(cordova-plugin-alipay-v2 ) 报错AL138173
  15. hash+跳表,玩转Redis有序集合
  16. 这五款小众软件你肯定不知道
  17. MMA-关于mathematica中添加注释的一些方法(包括排版技巧)
  18. html+js 实现 推箱子 贪吃蛇和简单的飞机大战
  19. 第10章 集成MyBatis
  20. mysql 复合索引 总结

热门文章

  1. js判断当前设备及获取设备、浏览器的宽度和高度
  2. 看完这篇,请不要再说不懂MOSFET!
  3. 测试用例(微信发朋友圈/评论 /点赞/搜索/购物车)
  4. 【转】一款已上市MMO手游地图同步方案总结
  5. WPF.UIShell UIFramework之自定义窗口的深度技术
  6. mount挂载失败出现Structure needs cleaning
  7. 计算机教室课外活动简报,广州图书馆·活动报道·电子阅览室“自助学习月”活动简讯...
  8. 两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
  9. IO系列学习总结八:以Netty的聊天室程序为例,再聊聊拆包粘包的解决方案
  10. Elasticsearch的基本使用