基于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 的功能块应用?这将会使事情变得复杂
- PLC 的组态工具能够将梯形图,功能块网络编译成为Verilog/HDL代码
- 借助于FPGA 开发工具(例如vivado)综合,实现FPGA的bitstream。
- PLC 程序完全由FPGA 在同步时钟的驱动下硬件实现,软件主要完成网络通信, 监控等非实时任务。
- 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 硬件运行时的实现相关推荐
- 讯琥科技基于FPGA 的区块链硬件加速服务性能直逼100,000 TPS
区块链是一种防篡改的去中心化账本,可建立必要的信任机制,从而在免去中间环节的情况下交换价值.据IDC预测,到2025年,全球物联网(IoT)设备数将达到416亿台.当前,物联网行业高度碎片化.相互孤立 ...
- 基于FPGA的高性能视频硬件编码器
基于高性能视频编解码技术的解决方案,可以实现高清画质更快的压缩速度.更少的带宽消耗,在满足用户高清画质要求的前提下有效降低运营成本.阿里巴巴达摩院XG实验室,高级算法专家杨名远在LiveVideoSt ...
- 目标检测YOLO实战应用案例100讲-基于FPGA的目标检测硬件加速技术及其应用研究
目录 基于FPGA的目标检测加速器设计 目标检测算法与加速方法 2.1 YOLO v2算法
- 基于FPGA音乐播放器硬件电路设计
语言是VHDL语言 音乐硬件演奏电路基本原理 硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音.乐曲中 ...
- 为基于spring-boot的应用添加根据运行时操作系统环境来提示用户选择active profile的功能...
spring-boot有一个根据JVM变量-Dspring.profiles.active来设置运行时的active profile的功能,但是有些时候我们也许会不小心忘记设置这个变量,这样在生产环境 ...
- 计算机组成 vhdl cpu 实验 西安交大,基于FPGA的VHDL计算机组成实验平台的设计与实现...
摘要: <计算机组成原理>是计算机系的一门核心课程.但是它涉及的知识面非常广,内容包括中央处理器,指令系统,存储系统,总线和输入输出系统等方面,学生在学习该课程时,普遍觉得内容抽象难于理解 ...
- 云原生运行时的下一个五年
文|马振军(花名:古今 ) 在基础架构领域耕耘多年 目前在蚂蚁集团中间件团队 负责 MOSN.Layotto 等项目的开发工作 校对|卓与.齐天 本文 9053 字 阅读 18 分钟 |前言| 在过去 ...
- 科维PLC运行时系统ProConOS embedded CLR 2.2 特定应用
ProConOS embedded CLR是新型的开放式标准化PLC运行时系统,符合IEC 61131标准,可执行不同的自动化任务(PLC.PAC.运动控制.CNC.机器人和传感器). 通过采用国际标 ...
- 电子技术课程设计基于FPGA的音乐硬件演奏电路的设计与实现
wx供重浩:创享日记 对话框发送:乐曲电路 免费获取完整无水印论文报告(包含电路图) 文章目录 一.设计任务要求 二.总体框图 三.选择器件 四.功能模块 五.总体设计电路图 六.结束语 一.设计任务 ...
最新文章
- 瞄准VR游戏市场,这款数据手套还提供模块化定制
- mac、linux 查看端口占用程序
- if some one want to buy it
- VRRP协议简介与实例配置
- es6 includes(), startsWith(), endsWith()
- 网易数帆发布轻舟低代码平台2.0,聚焦中等复杂度企业级应用
- matlab 排课代码,matlab遗传算法排课问题,程序一直有错,求解答
- 多平台移动项目开发工具Elements发布v9.1,支持Visual Studio 2017
- Flink Remote Shuffle 开源:面向流批一体与云原生的 Shuffle 服务
- LINQToSQL中如何更好的手动设置导航字段,并返回实名类型而不是匿名类型
- Java面试题全集(上)
- zlog日志使用说明
- AE光效效果插件:Trapcode Shine
- 支付宝支付(cordova-plugin-alipay-v2 ) 报错AL138173
- hash+跳表,玩转Redis有序集合
- 这五款小众软件你肯定不知道
- MMA-关于mathematica中添加注释的一些方法(包括排版技巧)
- html+js 实现 推箱子 贪吃蛇和简单的飞机大战
- 第10章 集成MyBatis
- mysql 复合索引 总结
热门文章
- js判断当前设备及获取设备、浏览器的宽度和高度
- 看完这篇,请不要再说不懂MOSFET!
- 测试用例(微信发朋友圈/评论 /点赞/搜索/购物车)
- 【转】一款已上市MMO手游地图同步方案总结
- WPF.UIShell UIFramework之自定义窗口的深度技术
- mount挂载失败出现Structure needs cleaning
- 计算机教室课外活动简报,广州图书馆·活动报道·电子阅览室“自助学习月”活动简讯...
- 两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
- IO系列学习总结八:以Netty的聊天室程序为例,再聊聊拆包粘包的解决方案
- Elasticsearch的基本使用