集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 6021|回复: 18

数控系统内置式PLC的FPGA实现方法

[复制链接]
小舍YZ 发表于 2017-3-21 14:29:32 | 显示全部楼层 |阅读模式
数控系统内置式PLC的FPGA实现方法

  为了扩展数控系统逻辑功能的可编程能力,通常在数控系统中配置PLC功能。并采用独立PLC或内置式PLC两种方式。但目前内置式PLC一般使用软件实现。有一套特有的编程与配置方法,这对使用者熟悉新功能提出了额外的要求。现场可编程逻辑器件FPGA具有很强的在线逻辑编程能力。常被应用于实现某些逻辑控制中。比如交通信号灯控制:近来也有用FPGA实现PLC的尝试。即将与需要实现的控制功能对应的梯形图直接做成FPGA硬连线逻辑。但这些应用都没有脱离FPGA本身的现场可编程特性。用户如需修改控制逻辑。就需要掌握VHDL语言及FPGA的EDA设计方法。否则不能提供更加友好、通用的PLC编程界面。

 本文介绍了一种新的数控系统中内置式PLC的FPGA实现方法。它能较好地解决上述技术难题,也便于实际应用。
1 基于ARM和FPGA的数控系统

  机床数控系统由控制系统、伺服驱动系统和伺服电机组成。控制系统生成的坐标轴运动指令,被发送到伺服驱动系统。然后由伺服驱动系统形成伺服电机的运转控制令。从而使伺服电机完成相应的动作。
  图1是基于ARM+FPGA的数控系统的FPGA部分结构框图,下载接口、配置器件及FPGA 3个部分组成了FPGA自身的开发调试环境。可以方便地与PC组成开发调试平台。机床控制单元MCU使用32位的ARM嵌入式处理器。运行uC/0S实时操作系统,实现控制系统的大量分析和计算工作。比如G代码解析,根据加工要求形成坐标轴的运动指令以及数控系统的人机界面等。FPGA除了完成对运动指令进行细插补之外。同时还实现了数控系统键盘电路的扫描模块、编码计数器模块和驱动器控制模块的功能。本文要介绍的数控系统内置式PLC也是在FPGA内部实现的。

图1 数控系统中的FPGA结构框图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-3-21 14:30:09 | 显示全部楼层
2 用FPGA实现PLC的软硬件架构

  为了有更好的人机界面。更符合工程习惯。采用与主流商业PLC兼容的编程语言进行编程。内置式PLC可以接受最终用户输入的PLC指令表(一个特定的子集)。并最终实现相应的逻辑控制功能。FPGA内部是硬件逻辑。显然无法识别PLC指令,因此,为了实现这种构想。必须设计一套指令集。该指令集定义了FPGA可以执行的最小操作的集合。然后根据指令集来设计编译器和FPGA内部的PLC逻辑。其软硬件架构如图2所示。PLC指令被编译后,生成FPGA可执行的指令代码。然后将指令代码下载到FPGA内部,由执行逻辑对代码进行逐条执行。最终实现PLC的逻辑控制功能。
 楼主| 小舍YZ 发表于 2017-3-21 14:31:53 | 显示全部楼层
图2 基于FPGA的PLC软硬件架构

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-3-21 14:32:16 | 显示全部楼层
  PLC核心逻辑是一个状态机。可以根据不同的输入指令执行不同的操作。在设计中。首先应确定需要执行的指令集合,即状态机的指令集设计。然后根据指令集来设计编译器和PLC逻辑功能。PLC指令编译器源程序使用C语言编写。这样。此编译器可以方便地移植到PC、ARM或别的任何支持C编程的平台上。基于图2中的软硬件架构的PLC不能独立运行。需要MCU对其进行相应的设置和辅助。如图3所示。在MCU端。需要一个专门处理与PLC接口的任务(对于多任务操作系统)或程序。
 楼主| 小舍YZ 发表于 2017-3-21 14:33:51 | 显示全部楼层
图3 PLC逻辑的工作过程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-3-21 14:34:07 | 显示全部楼层
  在MCU端,可以提供相应的PLC人机界面,提供PLC梯形图或指令表的编辑、编译甚至排错界面,当编译完成后。生成可供FPGA内部的PLC逻辑执行的“PLC中间操作码”。当要执行PLC功能时,首先MCU配置FPGA处于“代码下载状态”。并由MCU将编译后的代码下载到FPGA的RAM中:下载完成后。MCU将FPGA设置为“PLC运行状态”。开始依次读入输入和输出端口的状态。并根据所要执行的指令更新状态。最后输出刷新状态。FPGA还有一个“监控状态”。此时。ARM处理器可以直接设置PLC的输入输出10寄存器的值。并可以单步运行PLC中间操作码。ARM结合返回信息。并配合相应的界面,即实现了对PLC的调试。
 楼主| 小舍YZ 发表于 2017-3-21 14:34:21 | 显示全部楼层
3 PLC逻辑的EDA设计方法

  新型FPGA器件及新的EDA设计软件和工具是这种数控系统内置式PLC实现方式的前提。没有EDA设计流程和方法的支撑。是很难完成相应设计工作的。

  图4是典型的EDA设计流程。主要包括设计输入、功能仿真、综合与优化、映射和布局布线以及最后的下载验证等环节。EDA设计流程中。最重要的环节便是仿真。因为所设计的对象在FPGA内部很难在硬件上进行测试。必须利用诸如Active—HDL。ModelSim等仿真工具进行功能仿真、综合后仿真以及布局布线后仿真。设计过程和仿真过程是交叉同步进行的。而且最好设计一个模块。即对一个模块的功能进行仿真,确保其正确后,才可以集成到更高层面的设计中去。仿真的主要任务就是检验HDL是否能满足设计所提的要求。检验的方式是编写测试平台。在测试平台上给模块输入条件。观察或检验其输出。从而验证是否满足设计要求。Active—HDL的Generate TestBench功能还可以生成测试向量的模板。大大加速了设计过程。
 楼主| 小舍YZ 发表于 2017-3-21 14:35:26 | 显示全部楼层
图4 EDA设计流程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-3-21 14:36:22 | 显示全部楼层
图5 PLC原型机逻辑仿真结果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-3-21 14:36:42 | 显示全部楼层
  总之,掌握并正确使用EDA设计方法。是使用FPGA进行逻辑设计成功的关键。

4 在数控系统中的实现与分析

  基于FPGA的PLC实现方法在我们自主研发的基于ARM+FPGA的数控系统中得到了应用。形成了PLC原型机,实现了基本的PLC逻辑控制功能。能够与数控系统集成在一起。结合相应的控制界面。可以对机床的各逻辑开关量进行PLC编程控制。更重要的是。这种框架下的PLC具有开放式结构。可根据需要不断完善。实现更复杂的功能。如图5所示,PLC有2个主要状态。即输入输出刷新(pc status=0)和运行状态(pc status=1)。在pc status=0时,输入被采样,输出映像被置位:当pc status=1时,PLC开始运行,pc pointer为PLC内部指令的指针,在每个时钟周期,PLC执行一条指令,并将指令指针后移,当执行完所有指令后,outputfresh置高,允许输出映像寄存器的结果输出到端口plc io out中去。以上过程反复进行,便实现了PLC的最基本逻辑功能。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-5-18 07:18 , Processed in 0.081368 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表