嵌入式操作系统
现场总线运动控制模块的设计及其在PLC系统中的应用
数控系统广泛应用于现代制造加工业、机器人、电子机械、办公设备等,是21世纪最有发展前景的技术之一。本文使用2个Cortex-M3内核单片机STM32进行G代码解释和电机运动控制,研发了极低成本的运动控制模块,并通过PLC现场总线对多块运动控制模块进行全局管理控制,形成高效可靠的机床控制网络。
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简介
ARM Cortex-M3是一种基于ARM7架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下,数据和指令共用1条总线),在成本和功耗方面,Cortex-M3具有相当好的性能。
基于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 插补进给
电机的插补运算、加减速和进给控制,由一个独立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个定时器进行超时判断即可。
2 基于C200HE型PLC的运动控制网络实验平台设计
2.1网络结构
欧姆龙(OMRON)公司的C200HE-CPU42型PLC带有RS-232口和通信板。通信板支持各种通信协议,如上位链接、RS-232通信、1:1链接、NT链接(1:1、1:N)以及协议宏功能等,并能根据需要进行切换。通过协议宏功能,用PMCR指令,通过指定按标准设置的顺序,就能设置成Modbus协议。
运动控制系统的网络结构体系分为3个层次:管理层、控制层和器件层,如图5所示。
(1) 管理层:是最高层,负责系统的管理与决策。其中PLC是整个控制网络的核心,它作为Modbus网络的主设备,通过Modbus网络与各运动控制器之间传输生产管理信息、质量管理信息及CNC的运行情况等数据。上位计算机运行组态软件,通过RS-232串行通信口与PLC通信,实时监控系统的运行。
(2) 控制层:是整个网络系统的中间层,各运动控制模块挂接在Modbus网络上成为其从节点,负责下面CNC运行过程的监控、协调和优化。
(3) 器件层:雕刻机是整个网络的最低层,是现场总线网络中直接面对现场的器件和设备,为网络的终端执行机构。
2.2 用协议宏功能实现Modbus协议
在协议宏软件CX-Protocol上创建工程,选择正确的设备名称、型号及网络类型。然后创建通信序列和接收序列,并下载到PLC通信板中。在PLC中编写程序,用PMCR指令调用指定的通信序列,实现与运动控制模块的通信。通信协议宏主要由发送/接收数据程序构成,每个通信协议最多包含0~999个发送/接收数据程序,每个发送/接收程序最多由16步构成。协议宏结构如图6所示[3]。
2.2.1创建通信序列
将通信序列号设为“000”,在通信序列中要设置PLC与通信板链接字、传输控制参数、响应接收方式、数据接收监控时间、数据接收完成监控时间、数据发送完成监控时间等内容。
(1) 创建通信步(Step)
在通信序列“000”中创建Step00和Step01 2个通信步。Step00用于控制运动控制模块的运行,Step01用于查询运行状态。在每一个通信步中包括步号(Step)、重复计数器(Repeat)、命令(Command)、重试次数(Retry)、发送信息(Send Message)、接收信息(Recv Message)、是否响应(Response)、出错处理方式(Error)等内容。
(2)创建发送和接收信息
发送信息与接收信息必须严格按照Modbus协议格式编写,需要设置校验码(Check Code)、数据长度(Length)、地址(Address)和数据(Data)等信息。
(3)创建接收阵列
PLC向运动控制模块发送指令时,模块可能返回运行正常或错误响应信息,在接收数据时,使用阵列的形式加以区分。系统创建了2种可能接收的信息“Run Normal”和“Error”,并针对每一种情况设定不同的处理方法(Next Process),用于可能出现的各种响应信息的处理。
2.2.2 通信实现
(1) 通信设置
PLC的通信参数设定必须与运动控制模块的参数一致。对通信板上的开关做调整时,设SW1置于ON侧,使用RS-485方式;SW2设定为ON,接入120 Ω的终端电阻;设定通信板端口A为通信协议宏方式。
(2) 编写通信程序
通信协议宏的调用程序段如图7所示,图中:289.08为通信板端口A操作标志,当289.08为OFF时,表示可以使用端口A进行通信。通信过程中289.08置为ON,通信结束后,289.08置为OFF状态;当2.00由OFF变为ON、且289.08为OFF时,调用通信板上的通信序列,通过端口A发送和接收数据。通信序列号、发送和接收数据的存放区由PMCR指令的3个操作数指定,其梯形图见图7。
使用2片32位高性能单片机组成双核系统实现运动控制模块的功能,兼顾了性能和价格。同时因为使用了ANSI C的标准库函数,程序移植性好,数控解释程序中的关键技术G代码解释器的开发难度大大降低。在运动控制模块中移植Modbus协议,从而使其能简单地与PLC系统组成运动控制网络。采用欧姆龙通信协议宏实现控制多台运动控制模块,简化了现场布线,达到了设计要求,取得了很好的效果。
全部0条评论
快来发表一下你的评论吧 !