微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于PLC系统的现场总线运动控制模块的设计和实现

基于PLC系统的现场总线运动控制模块的设计和实现

时间:09-07 来源:互联网 点击:

  计算机数字通信技术及信息技术的发展,推动了自动化技术的进步;特别是近十年来兴起的现场总线技术(Filedbus),是计算机数字通信技术向工业自动化领域的延伸,它的发展将促使自动化系统结构发生重大变革,是传统的基于PLC及DCS控制技术系统发展的必然归宿。

  现场总线技术的一个显着特点是其开放性,允许并鼓励不同厂家按照现场总线技术标准,自主开发具有特点及专有技术的产品。依照现场总线技术规范,不同厂家产品可以方便完成组态与集成,构成面向行业、适合行业特点的自主控制系统。这一特点为更多的自动化产品制造商自主开发并推出自主知识产权的自动化系统提供了可能。也为自动化系统集成商开发面向行业应用的成套技术和自动化系统提供了机会。

  现场总线技术以其先进性、实用性、可靠性、开放性的优点,必然成为未来自动化技术发展的主流。基于现场总线技术的控制系统(Filedbus Control System-FCS)与人们预想的一样,对传统的PLC、DCS系统形成了巨大的冲击。FCS已不再是一种预测、一种设想,而是实实在在的作为先进控制系统产品出现在市场上。本文将描述传统PLC控制系统向基于现场总线控制系统的演变过程,以现场总线PROFIBUS为背景,描述一个基于现场总线控制系统的结构组成,并分析系统的市场前景。

  1 运动控制模块的研制

  本设计中,运动控制模块负责电机的驱动、多轴联动、G代码解释等工作,是数控系统的"大脑".因此运动控制器的性能直接关系到整个机床的性能。

  1.1 总体结构

  为实现高性能数控计算,系统采用双MCU结构,主控MCU负责G代码读写与解释、人机界面、网络通信等任务;NC运动控制MCU(即运动控制芯片)作为一个专用数字芯片,负责三轴电机的速度控制、定位、多轴直线和圆弧插补等任务,以保证运动控制模块在完成复杂的工作时仍能提供良好的性能。运动控制模块结构如图1所示。


  模块采用SD卡作为G代码文件的存储器。SD卡具有大容量、小体积、支持热插拔等特点,尤其是其兼容SPI总线读写,省去了主控制器作为USB盘读写的硬件,降低了成本。

  运动控制模块具有现场总线通信功能,支持RS-485和CAN总线2种现场总线物理层规范。以可靠性为设计原则,总线接口与主控制器进行了电气隔离,并加入保护元件提高其抗瞬态干扰能力。图2、图3分别是模块RS-485和CAN总线的隔离接口原理图。其中使用了TI公司的高速数字隔离器ISO7221进行数字信号的电气隔离,同时在接口端设置了瞬态抑制二极管(TVS管)进行保护,确保了硬件在各种环境下的可靠性。


  1.2 Cortex-M3与STM32简介

  Cortex-M3是一个32位的核,在传统的单片机领域中,有一些不同于通用32位CPU应用的要求。谭军举例说,在工控领域,用户要求具有更快的中断速度,Cortex-M3采用了Tail-Chaining中断技术,完全基于硬件进行中断处理,最多可减少12个时钟周期数,在实际应用中可减少70%中断。

  基于Cortex-M3核的STM32F103系列MCU,运行于最高72 MHz的总线频率,可以获得1.25 DMIPS/MHz的运算性能、单周期乘法指令、硬件除法器,带有容量至少为32 KB的Flash及6 KB的SRAM、2个12位A/D、7通道DMA、6路16位定时器及PWM、SPI、I2C、USART、USB、CAN等高性能模块,并具有最高18 MHz输出频率的高速GPIO.在电机和运动控制的应用中,可以充分发挥其先进内核的性能和丰富的模块资源特性。

  1.3 工作流程

  运动控制器工作流程总体示意图如图4所示。

  1.3.1 G代码解码

  运动控制模块接收到工作指令后,开始进行G代码的解释执行任务。G代码存放在SD卡中,主控制器集成FAT文件系统,支持SD卡的文件读写。G代码读入后,逐行进行第一遍扫描(即指令预处理),期间将注释、空格、非法字符去除,小写字符转换成大写,以方便解码程序进行识别。

  经过预处理的G代码指令逐行送入G代码解码程序,解释程序再逐字检查其是否为G代码的指令字符,若是,则提取关键字的后续数值,作为该指令的操作数,将其提取出来。其中用到了ANSI C的标准库函数sscanf( )(位于stdio.h中),可以方便地提取字符串中指定的信息,支持类正则表达式的格式字符串,非常灵活。同时因为使用了ANSI C的标准库函数,程序移植简单。

  以下是G代码解码程序的部分代码:

  /*遍历整个s字符串,找到字符后,提取后续数字,并存入中间代码中*/



  其中,CurrentGMidCode是预定义的结构体变量,用于保存每行G代码提取出来的指令及其操作数,结构如下:


  提取到每行G代码的关键信息后进行相关处理,计算出每行代码的运动起止坐标,将其通过SPI总线发送至NC控制芯片,控制电机运动。

  1.3.2 插补进给

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top