基于FPGA与AD5422的PLC模拟量扩展单元设计与研究

本文设计了一种以FPGA为核心,基于AD5422实现多路高精度输出的PLC模拟量扩展单元模块。相比于传统的模拟量扩展单元模块,本系统具有处理速度快,方便,灵活,电路精简,抗干扰能力强等优点。

系统总体设计

1.1 方案论述

    工业自动化控制系统经常需要用到4-20mA 或者±5V等模拟量信号,用以控制变频器等需要模拟信号输入控制的设备,而模拟量扩展单元也是PLC产品重要的扩展单元之一。一个良好的模拟量扩展单元产品的设计希望不仅能够保证系统运行的可靠性,还希望系统设计能够非常精简,有足够的鲁棒性,和可扩展性,在成本,性能等各方面组合成一个最优的结果。是PLC模拟量扩展单元产品设计一直追求和努力的方向。

    传统的模拟量输出扩展单元结构如图1,其工作原理是1:FPGA将扩展通信总线上的数据通过SPI通信隔离器进行电器隔离,然后将数据与MCU交互,2:由MCU负责数据的转换和进行相关的配置工作,并通过MCU的SPI接口控制输出的DAC获得相应的模拟电压或者电流输出值。

图1  传统的模拟量输出扩展单元结构

    显然,如果能把MCU的工作都集成到FPGA内完成,设计方案就可以省略了MCU,由FPGA直接控制DAC实现功能。但是在省略MCU前要对现有方案做以下进一步的分析。

1.2 实现多DAC的SPI接口级联方式

   在使用传统MCU控制DAC的回路设计时,MCU有足够的IO口可以单独或者级联控制DAC芯片,但是如果换用FPGA来控制,则要考虑核算隔离通道的成本,也就是每一路控制信号都需要进行隔离,高速信号需要高速的隔离器或者光隔离器,低速的控制信号可以通过低速的光耦隔离,这样的话,再使用独立IO驱动方式,势必会造成成本上升。鉴此,若想FPGA直接控制DAC 则最好所有的DAC能进行级联设计,既通过一个SPI隔离器和少数光耦实现全部的通信和控制功能。

    参考AD5422 芯片数据手册,实际上该芯片具有多片菊花链连接方式,只要设计得当,多个DAC就可以在同一个SPI接口上级联工作,图2是AD5422的原厂数据表关于菊花链连接的结构图[1]

图2  AD5422的原厂数据表关于菊花链连接的结构图

1.3:每个DAC的硬件清零信号处理方法

    应对开机复位或者某些紧急情况,DAC需要实现硬件清零工作。关于DAC硬件清零脚的设计,可以通过低成本的低速光耦隔离后,用FPGA闲置的IO脚来控制它。当然若想每个DAC都可以独立完成清零的工作,则需要由软件通信的方法控制相应的寄存器来实现软件清零。

1.4: MCU需要完成的任务内容

    从PLC编程给模拟量输出扩展的数据以及相应的AD5422原厂数据表看, MCU需要在这个中间环节完成以下几个任务:

1)复位,取消复位,清零,初始化DAC芯片;

2)拆分SPI数据,完成各DAC量程,输出使能等相关的配置工作;

3)完成数据转换:包括单极性和双极性数据转换,数据位数扩充,数据加偏移量等工作;

4)完成DAC状态相关回读工作,包括DAC电流输出断线报警,芯片过热等异常情况;

1.5  FPGA直接控制DAC的设计方案

   综合以上的设计分析,经过修改的方案如图3所示:

图3  由FPGA直接控制DAC的设计方案

FPGA内部具体设计实现的方案

2.1 FPGA的数据处理流程

    表1列举了模拟量输出规格,包括量程,用户分辨率,用户编程的数据范围等。

表1 模拟量输出规格

输出通道

2通道

输出信号范围

-10~10V      0~20mA

0~10V        4-20mA

1~5V         -5V~5V

用户分辨率

1/12000(满量程)

D/A转换输入数据

16位二进制(4位十六进制)

-10V~10V与-5V~5V:E890 to 1770 Hex

其余量程:0000 to 2EEO Hex

超量程功能

允许用户数据和输出有10%的超量程

    显然,PLC编程的数据和最终送给AD5422芯片的数据有一定的区别,则对于数据处理来说需要完成以下几个功能:

1)识别数据有效性:PLC给用户1/12000的分辨率和控制字并不能占用0x0000-0xFFFF全部范围内的数据,也就是说存在一部分的输入数据是非法的无效的,需要在经过处理前,识别出来,避免后续处理出错,FPGA设计通过数据比较输出数据有效或者无效判断,当然设计可以选择无效数据丢失或者输出报警信号;

2)双极性转换:对应双极性输出数据中的-10V-+10V的数据范围是十六进制的0xE890到0x1770 对应十进制的-6000到+6000 而AD5422的-10V-+10V对应的数据范围是十六进制的0x000-0xFFFF是单极性的,所以先要给双极性的原始数据加上十进制的6000 ,统一输入为十六进制的0x0000-0x2EE0 对应十进制的0-12000;

3)数据扩充:通过乘法器实现输入数据的扩充,从给用户的十六进制0x0000-0x2EE0需要对应转换到十六进制0x0000-0xFFFF 特别的对于1-5V量程来说因为输出有个1V的基准量,在适用AD5422的0-5V量程时候通过扩展到AD5422对应的0-4V量程即十六进制的0x0000-0xCCCC 当然这一步的处理需要在FPGA内部设计硬件乘法器,使得每个量程都能乘上响应的系数完成数据扩充工作;

4)添加偏移量:对于1-5V量程来说这个1V的基准量是始终存在的这就需要在完成数据扩充后添加偏移量,其他量程则不需要这个偏移量的添加;

2.2 FPGA其余需要添加的功能块还包括

1)控制字识别模块:针对获得的命令控制字,需要能甄别,并且分离出每个通道的量程和使能信息,在获得合法的控制字后才能通知初始化模块开始正常的数据运行。对于非法的控制字信息也能报错并停机。

2)初始化模块:在上电后初始化每一个DAC芯片,包括复位芯片,开启菊花链使能,清空输出数据寄存器等操作[1]

3)SPI接口模块:该模块能自动的将处理完成的数据添加字头地址并发送,而且能够配合初始化模块完成DAC的初始化工作。在完成数据发送后最好还可以自动回读DAC的状态信息了解DAC是否过热,电流环开路等信息。在处理完成所有工作后,自动的提供一个帧复位信号给状态机完成一帧数据的处理工作。

4)时钟控状态机:该模块能协调每个模块的工作顺序,使这个机制在数据帧能顺利工作并且自动复位。

5)通道识别模块:对于多通道数据使用同一个数据处理线来说,要有效的识别通道,通知各模块装载对应的量程控制字和控制SPI模块的菊花链数据装载顺序。

图4是FPGA内部整体处理机制的结构图如下:

图4  FPGA内部整体处理机制的结构图

3 FPGA仿真测试与样机运行

    通过Verilog HDL语言编写相关的硬件描述语言模块,并综合生成实例。图5是FPGA内部实现DAC数据转换处理的实例模块,也是本设计的核心模块,其相应的输入端口包括:模块复位rst_n;模块主时钟输入mclki;通道1的总线送来的十六位数据BUSdata1[15:0];通道2的总线送来的十六位数据BUSdata2[15:0];2个DAC通道的配置数据(包括量程和使能信号)configdata[7:0] ;转换使能信号start;相应的输出信号包括送往SPI通信模块发送给DAC1的数据Txdata1[15:0]; 发送给DAC2的数据Txdata2[15:0];以及转换完成的使能信号TXok;  

图5  FPGA 内部DAC数据处理实例

    之后使用ModelSim软件对FPGA内部的处理机制进行仿真测试,图6是SPI端口对DAC进行初始化的时序仿真结果。这里包括发送0x560001 进行复位功能,发送0x560000 取消复位功能,发送0x550008 开启菊花链使能等操作。

图6 SPI端口DAC进行初始化的时序仿真结果

    图7显示了FPGA内部数据转换的仿真测试结果,我们先预设了DAC工作在-10V~10V量程下,并在该模式下给FPGA送去了十进制的6000 对应0x1770 代表要求DAC要求输出正10V满量程,计算结果输出是有符号数的0x7FFF说明和预期结果一致,说明这部分功能模块可以正常工作。

图7  -10V~10V量程下FPGA内部数据转换仿真测试结果

4结束语

    本设计凭借FPGA强大的硬件可编程能力,在硬件设计方面直接省略了一颗MCU处理器及相关配套的硬件,既可以极度的精简物料表。提升整体硬件可靠性,降低系统功耗,又不用担心MCU会存在死机等实际运行的风险。

    对于数据处理交由FPGA来实现,既可更严格的管理完善整体系统运行的时序。而且输入输出数据的关联性更差,这样整个设计具有更好的保密性。FPGA内部设计硬件乘法器,加法器等硬件模块可以极大的提升数据处理速度,从而提升系统响应时间[3]

    当然说缺点就是FPGA使用硬件处理机制,其对FPGA内部硬件容量需求会大一些,而且设计中可能会遇到的问题也会由此增加。

参考文献:

[1]:AD5422 Datasheet[Z] Analog Devices, Inc.

[2]:于笑凡. 费树岷.基于FPGA 与AD5422 的多功能信号发生器的设计[J] 信息技术与信息化.2013(6): 53-55.

[3]:周维龙.基于FPGA 的智能变送器的设计与开发[D].长沙:湖南大学.2010:18-22.

评价!您认为该篇文章:

非常好          一般           没有价值

无需注册,直接提交,定期抽奖,祝您好运!

  • 转发至:
  • 收藏到QQ书签

相关报导