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

本文设计的PLC模拟量扩展单元模块,具有处理速度快,方便,灵活,电 路精简,抗干扰能力强等优点。

系统总体设计

1.1 方案论述

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

传统的模拟量输出扩展单元结构如图1,其工作原理是1 :FPGA 将扩展通信总线上的数据通过SPI 通信隔离器进行电器隔离, 然后将数据与MCU 交互,2 :由MCU 负责数据的转换和进行相关的配置工作,并通过MCU 的SPI 接口控制输出的DAC 获得相应的模拟电压或者电流输出值。显然,如果能把MCU 的工作都集成到FPGA 内完成,设计方案就可以省略了MCU,由FPGA 直接控制DAC 实现功能。但是在省略MCU 前要对现有方案做以下进一步的分析。

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

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 列举了模拟量输出规格,包括量程,用户分辨率,用户编程的数据范围等。

显然,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 芯片,包括复位芯片,开启菊花链使能,清空输出数据寄存器等操作。

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

评价!您认为该篇文章:

非常好          一般           没有价值

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

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

相关报导