新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 现场总线运动控制模块的设计及其在PLC系统中的应用

现场总线运动控制模块的设计及其在PLC系统中的应用

作者:时间:2010-02-26来源:网络收藏
1.3.1 G代码解码
  接收到工作指令后,开始进行G代码的解释执行任务。G代码存放在SD卡中,主器集成FAT文件,支持SD卡的文件读写。G代码读入后,逐行进行第一遍扫描(即指令预处理),期间将注释、空格、非法字符去除,小写字符转换成大写,以方便解码程序进行识别。
经过预处理的G代码指令逐行送入G代码解码程序,解释程序再逐字检查其是否为G代码的指令字符,若是,则提取关键字的后续数值,作为该指令的操作数,将其提取出来。其中用到了ANSI C的标准库函数sscanf( )(位于stdio.h中),可以方便地提取字符串中指定的信息,支持类正则表达式的格式字符串,非常灵活。同时因为使用了ANSI C的标准库函数,程序移植简单。
以下是G代码解码程序的部分代码:
/*遍历整个s字符串,找到字符后,提取后续数字,并存入中间代码中*/

本文引用地址:http://www.eepw.com.cn/article/152081.htm


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

  提取到每行G代码的关键信息后进行相关处理,计算出每行代码的起止坐标,将其通过SPI发送至NC芯片,控制电机
1.3.2 插补进给
  电机的插补运算、加减速和进给控制,由一个独立STM32微控制器完成,并称为NC运动控制芯片。
  目前市场上的运动控制芯片主要是日本和欧美公司的专用ASIC和各数控厂家自行开发的FPGA芯片,虽然性能优越,但价格不低。相对于使用ASIC芯片或FPGA芯片,完成同样的任务使用MCU方案,硬件生产成本和开发成本均具有明显优势,当STM32微控制器运行在其最高频率为72 MHz下时,性能完全可以满足中低端数控的要求。
  在三轴数控铣中,NC运动控制芯片需要实现三轴快速定位、二轴直线插补、二轴圆弧插补、三轴直线插补的功能。
  插补是在组成轨迹的直线段或曲线段的起点和终点之间,按一定的算法进行数据点的密化工作,以确定一些中间点,从而为轨迹控制的每一步提供逼近目标。在本控制器中,选用逐点比较法作为基本的插补算法,具有算法简单高效、进给速度均匀的特点,同时支持三轴的直线插补[1],满足本控制器对插补算法的要求。
  逐点比较直线插补,就是执行机构每走一步都要和给定运动轨迹上相应的坐标值相比较,比较的结果称为偏差函数F,根据偏差的正、负决定下一步的进给方向。实质上这是一种用阶梯折线来逼近直线的一种算法,它与规定运动轨迹之间的最大误差为1个脉冲当量(每走1步移动的距离)。因此,只要把脉冲当量得足够小,就可以达到运动精度的要求[2]。
1.4 Modbus-RTU协议的实现
  Modbus-RTU是Modicon公司开发的一种通信协议。它采用主从应答方式工作,其规范已公布在互联网上,是一种在工业领域被广为的真正开放的标准网络通信协议。由于它具有免收许可费用,易于集成不同的设备、简单易用、开发成本低、有着广泛的知识资源支持等特点,已经成为一种公认的通用工业标准。有了这个标准,不同厂商生产的控制设备可以连成工业网络,进行集中监控。Modbus PTU协议有2种传输模式:RTU模式和ASCII模式。其中RTU模式信息帧中的8 bit数据包括2个4 bit十六进制字符,相对于ASCII模式,RTU模式表达相同的信息需要较少的位数,且在相同通信速率下具有更大的数据流量。因此通常情况下,一般工业智能仪器仪表都是采用RTU模式的Modbus规约。
  Modbus-RTU协议以帧为通信的基本单位,帧格式为:地址码1 B;功能码1 B;数据区N B;错误校验2 B CRC码。
  本运动控制器在其RS-485接口上实现了Modbus-RTU协议,使用了当今流行的免费开源协议栈FreeModbus-RTU,从而保证了可靠的通信、节约了开发成本。
  FreeModbus是针对通用的Modbus协议栈在嵌入式系统中的实现,其遵循BSD开放源代码协议,并可以免费用于商业用途,成熟可靠。移植FreeModbus到STM32处理器只需要少量资源,除了1个双工USART外,只需要配置1个定时器进行超时判断即可。



评论


相关推荐

技术专区

关闭