当前位置:首页 > 新闻
FPGA加强控制设计
点击:6249来源: ceasia-china.com作者:Kenny Fu
时间:2019-12-17 15:53:59

Viewpoint Systems

现场可编程门阵列是一种可编程序的逻辑设备,可以支持数以千计的门。有些工程师已经使用FPGA来设计控制。其他的也听说过FPGA,但是没有考虑过使用它。尽管FPGA的使用如此频繁,但是最好先了解你正在做的事情,和将要做的事情。所以,第一个问题是:为什么要优先使用FPGA。

广告

自动化经验交流

过去两年的五月,来自主要机器制造商的机械自动化专家小组与主要的方案供应商针对一系列战略上的问题进行了面对面的交流。一对一的会议计划找出原始设备制造商最迫切的需要。关于这项只接受邀请柬盛会的更多信息,请访问AutomationXchange.com,或是联系事务主管Andy Wuebben。

FPGA是快速的,今天的FPGAs可以执行大量的过程处理,也能够执行完全并行的过程,打破了单一处理器执行的序列化。在10MHz和更快速度处理器上运行的算法都是常见的,反应时间是以纳秒计算—现时的应用会更快。

FPGA是灵活的,其可以跨越模拟世界和数字世界。FPGA设备在完全数字世界会表现得更好。但是如果你加入模拟到数字的转换器和数字到模拟的转换器,你就有了一个确定性的,高性能的复合电脑平台。功能的组合合并到FPGA的结构中可以方便控制设计人员。应用的变化可以下载到FPGA中,而不需要重新设计电路板。

我对FPGA的兴趣不是在其现场可编程的特点,虽然那也是非常重要的。对我来说更有吸引力的是灵活性和性能。只要控制的问题存在,对更高性能的要求就一直有。“希望控制器要更快,更易编程,或是更有能力”是平常的抱怨。每个设计都是性能,制造成本,开发成本的平衡的结果。如果这些平衡的界限需要完全重新界定,那要怎么办呢?

有趣的功能

“我们需要引入一项可以提供给我们所需功能的技术,其需要封装在一个可维护数据包里面,同时有一个合理的价格”英国Orwell的Product Technology Partners公司主管Martin Saxon解释到,该公司致力于特定的控制,测试,测量系统的研究,开发和生产。“我们要求以每秒10万个采样速度的多渠道数据获取,并与在两个轴上的闭环液压伺服控制同步,且有采用高达20KHz的环路更新率的安全检测。我们要求控制器有采用高级控制算法的能力—非线性多元适应自适应控制—同时也有简单的增益调度的PID控制”PTP的目标是在每个可能的地方运用现有的硬件产品。

“当进行设计的时候,我们不在意其他任何的单一产品可以提供相同的能力,因为我们使用的是FPGA产品”Saxon说,“我们也可以运用其他产品组合来达到同样的目的,但是这样会带来额外的费用,且增加系统的复杂性,我们采用了National Instruments的FPGA产品,所以这意味着完全不用从空白的FPGA开始。”

对于任何已有的应用,电子信号的调节来连接FPGA和外部世界依然是必要的。但是你常常可以简化调节的形式。有些元件可以去除,其功能可以融入到FPGA代码中去。设计人员可以应用计数器,脉宽调制(PWM)发生器,信号发生器,过滤器和直接存储在FPGA里面的算法。比如,你可以用LDVT的反馈,来实现一个完整的闭环液压促动器控制,其中仅仅只有两个工作的外部调节元件—一个来驱动LVDT励磁线圈的电压缓冲器,和给液压伺服阀的电压-电流驱动。FPGA可以给LVDT提供励磁波形,解调LDVT的反馈来生成位置参数,用位置参数来计算速度,从而实现闭环控制模块,并输出计算的数值给伺服器。加入一个模拟压力的输入,你就可以建立一个带速度限制或关闭保护的强制控制器。

编程的灵活性

“我们需要一个时序要求严格的过程来生成准确的脉宽调制(PWM)信号” Havells Sylvania公司比利时灯泡制造工厂研发部门的过程开发工程师,Danny Hendrikx解释到。“同样,当紧急制动被激发,我们的安全条例不允许软件驱动常规的开关跳闸。我常常要求在FPGA上进行的过程操作是要符合安全条例的,因为FPGA是硬件,不是软件。根据安全条例,FPGA可以给予你很多的灵活性,你可以编程一个时序驱动的关闭程序,当紧急停止被触发。没有FPGA,你必须要有一个复杂的电子设备,其也需要可以和软件通讯,这样就会降低灵活性的等级。”

通常是模拟输入速度会限制控制环路的效率,而不是处理器速度。反馈滞后将牢牢地被控制和调节,从理论上的最小值到任何数值,而不是任凭任何的外部验波回路的摆布。

一旦功能性完成了,你就可以加入更多的元件。位置的预设值是模拟数值还是数字的通讯协议?其可以是两者之一或者两者兼顾。你可以较容易地把数字通讯并入进去。外力之间的关系是线性的吗?还是和其他外部信号有着几何关系?

用户可以按要求来混合和比较位移传感器,如LVDTs,RVDTs,分解器,译码器,绝对译码器,SSI译码器,微分译码器,声音译码器。要获取温度,阻抗,电压,电流,外力,压力,流动,频率,加速度测量也是可能的,再把所得计算成其他数值,比如RMS电压,电量,三相电能和感应系数。

如果你不想要使用FPGAs作为首要控制器,但是需要其做为专门的协作处理器,使用FPGA作为一个有诸如串行外围接口的数字接口的子设备,这也是完全很平常的。如果需要,你也可以运用如上描述的整个系统作为PIC芯片的子设备。

FPGAs在数字控制上是比较杰出的。如果你的控制器是数字的,主要处理螺线管,离合器,标志旗,译码器和诸如纸张或包裹装卸机的近距离传感器。FPGA将在计算,电子传动,时间和复杂关系上给你非常精确的控制。电能供应的精确数字控制或是无刷式马达是FPGAs的一个自然目标。FPGA并行过程的特点意味着就算随着I/O模块数量的变大,性能也不会降低。这样促使了FPGA在控制设计中下一个重要的应用—模拟。

安全的模拟

一旦你给你的控制器,甚至是一个传统的控制器编制了程序,你已经准备好要测试或调试。你真的愿意把其装置在你非常昂贵的机器上吗?用另外一个FPGA来模拟这个机器怎么样呢?这样,你可以在控制的条件下,测试你的控制器的逻辑运算,相互关系,错误解决。如果模拟做得不是非常好,这样可以暴露很多基本的问题,不用冒烧掉昂贵仪器的危险。

在控制条件下,用FPGA模拟设备是很耗时间的,但是其他供选方案可能会更差。在测试阶段,损坏仪器看起来比开发一个模拟试验台要昂贵得多。相比较在真实的仪器上触发一个同等的故障,用模拟器进行故障注入的测试会相对容易些。

我们为客户开发了一个模拟器,而该用户正在开发控制器,需要对控制器进行大量的测试。而实际上,不可能在实机上进行这种测试的。

模拟过程包含了从控制器上接受一个螺线管的命令,等待一段时间,同时加速到一个模拟的位置,直到得到需要的速度,把模拟位置变换成模拟的脉冲输出,其需要与轮齿近距离传感器的读数,同其他一些这个机械系统的功能,如控制器的输入输出共同计算出来的结果是相同的。通过加入特定的故障测试,比如低速或是长传递测试,就可以测试控制器是否符合它的要求,而不用实机测试。但控制器真正地连上实机时,最后的综合测试会进行得相对顺利。在实机上测试之前,控制器的变化需要首先在模拟器上验证。

一个FPGA模块可以模拟大多数现实世界的传感器和控制。由于FPGA的速度,模拟的精确性通常非常好。针对不同目的,信号的高速输出、高分辨率都可以模拟模拟信号。

你可以根据需求,实现特定的并行功能。比如,你可能需要从轮齿式近距离传感器生成的脉冲中心来估计震动。你的相关测试显示单一的门槛中心并不是相关的,所以你需要更多的外来的门槛时间插入估算。这需要的不是硬件上的更改,只是程序上的变更。设备之间特定关系的创建是使用FPGAs的重要优势之一。当成品元件没有你的应用需要的功能的时候,你也可以越过传统的方式来实现你所要求的功能,往往也能得到更好的结果。

需求认可度

为什么没有更多的工程师在控制应用中使用FPGAs?原因是编写FPGAs程序并不是那么容易。目前,FPGA程序需要专门的技术和时间来实现要求的性能。当编程工具改进的同时,FPGA的认可度也大有机会得到改善。

“当编写FPGA程序时,软件编程人员的心态的改变是一个很大的障碍。”瑞士Geneva Spinx Technologies公司的首席科技官和创立者Piero Zucchelli警示。Spinx Technologies公司为生命科学的研究,引入了一个新型的软件可程序化的芯片实验室平台(图1)。“虽然工具使得过渡更加容易,在过渡后面的贯彻实行是远远不同的。比如,过渡面临的状况越少,过渡就会越快。你设计的工作流程越是并行的,你的程序就会越快。任何传统的速度改良方案很难奏效,去了解在FPGA模块上每个单独的VIs的真实性能是达到好效果的关键。”

对于多数的FPGA嵌入式应用,开发工具都是基于VHDL (图2) 或是Verilog (图3)。FPGA的供应商,如Xilinx会提供不同的开发工具套装。其他诸如CoDeveloper的开发工具主要针对的是那些熟悉C语言的开发人员。

[caption id="attachment_1214" align="aligncenter" width="569" caption="VHDL供选择的界面"][/caption]

LabView帮助创建FPGAs程序,减少在VHDL中书写代码。

来源:NATIONAL INSTRUMENTS

就个人而言,针对NI的FPGA产品,我使用LabView FPGA来开发FPGA代码,LabView 是一款图形界面编程语言,其自然支持并行,流水线,64位数据和定点数运算。LabView在同一编程环境中,也支持视窗,嵌入式编程和FPGA编码

[caption id="attachment_1215" align="aligncenter" width="524" caption="VERILOG的对等界面"][/caption]

VERILOG的代码被LabView程序所取代

来源:NATIONAL INSTRUMENTS

“LabView的FPGA工具非常的特别” Zucchelli赞同。“没有现存的其他方案允许非专业的工程师都可以开发快速计算的方案。没有其他方案可以使用确定的16位数分辨度,以每秒100万次的速度来计算我们系统的角度位置。模拟电子元件可能受制于校准度和解析度,而基于软件的计算方式可能会失去1000倍的过程处理速度。”

进行数学计算

无论你将要用什么工具,你首先要需要确定下面的疑问:训练,编码,调试,验证和重复使用。训练可以是正式的或不正式的,但是你需要熟练应用工具来运用FPGAs很好地解决问题。

编码,调试,验证是同一过程的所有部分,但是你使用的工具可能使得这些项目变得简单,困难或极其复杂。对代码应用的最大挑战之一是不仅仅是简单逻辑和整数计算在处理工业单位的。两个最普遍的解决方法是预放缩整数值和定点数运算。他们其实是相关概念,但是对于前者,编程人员需要注意分辨率,以及说明放缩参数。结果是在编程中,这通常都很难去跟踪和调试。如果你采用定点数运算来编程的话,代码会更有可读性,也更容易概念化。你同样也需要担心数据溢出,下溢和数据的范围。但是对比放缩整数算法,我还是更喜欢定点数算法。

最适当的例子是输入为10000线的译码器,一个范围为±2的模拟位移,一个16位的解析度(其数值是65536中任意一个),上面每个数字的比特重是不同的。如果你要一个数字减去另一个数字,并得到一个有意义的结果,那么两个数字需要有相同的隐含小数点。或者你可以使用定点数运算。把译码器的数值乘以~1.638,这样你就有一个有同样比特重和隐含小数点的数。在定点数运算中就更加简单了,只是把译码器的数值乘以0.0001[32, -12],符号[32, -12]代表有12位整数的32位定点数值。对于整数运算,是(译码器数值*107374)远远大于16,这里107374是由(32768/20000)*216得来的。

在对FPGAs编程中少有缺点,因为我们习惯于在灵活的视窗编程环境中工作。Hendrikx警告“你必须编译程序,这个过程根据程序大小会花一些时间,你不可以用断点和标识来调试程序,因为它是一个编成程序,当你使用数字的时候,你必须遵循32位的编译方法,这可能给你在计算上带来些问题。”

Saxon也有同样的关于计算的告诫“FPGA程序与配置一个成品伺服液压控制器是完全不一样的,”他解释到,“开始的时候完全是张白纸,需要一些时间来开发应用的结构,虽然有大量的现有模块给予帮助。对于编程人员,困难主要是定位数计算的限制,同时浮点计算也不可以使用了。所以复杂算法的实现都要求有非常有效的算法设计来确保其准确性”

一旦你搞明白以上的代码,以及怎样调试和测试代码来证明运算的结果是你所期待的?对于我,LabView平台允许在把算法代码下载到FPGA前,做测试和验证。如RMS、过滤器和积分的复杂算法可以在使用前,先做验证。而不是在其后的实机测试过程中得到意外的结果,再来诊断原因。

一旦你投入到整个过程中,如果你一直设计你的元件都是可以再利用的,那么未来的应用和修改会更容易。你可以购买IP核心或是IP模块,连接进你的应用中,以得到许多不同的功能。即使你不购买IP核心,你也需要考虑在结构上开发内部IP核心,如此,你会发现你不需要一遍又一遍地彻底改造你的结构。为了内部使用,我们一直收集、整理、发布IP核心。这样每个后续的应用可以比以前的开发得更加迅速。

“在不同个案上,我们会考虑特定方案结构的成本效用”Saxon说“根据功能、可维护性和价格,FPGA方案对于某些应用有相当大的优势。但是这也不是完全正确的。也有很多其他项目,我们还是使用更多传统的伺服控制和数据采集产品。”

因为FPGA技术和混合处理器/FGPA技术变得越来越普遍,其对控制设计的影响也越来越重要。元件数量的减少,灵活性,设计周期的缩短以及改良的性能,这些全部对未来控制设计都是经济上的驱动。那些预先享受了FPGA技术优势的公司,对于那些没有这项技术的公司,绝对是更有竞争力上的优势。

> 相关阅读:
> 评论留言:
联系地址:北京丰台区广安路9号国投财富广场4号楼3A19
企业邮箱:tiger.lin@fbe-china.com
©2019 版权所有©北京中福必易网络科技有限公司 
热线电话:+(86)10 63308519