“新型工业焊接机械臂”在控制方案上采用了基于ARM Cortex-M3的单片嵌入式控制系统。主要包括硬件设计和软件设计两大部分。
1.嵌入式硬件系统设计
(1)硬件架构规划 工业机器人现行的控制系统硬件架构主要有以下几种,分别为以工控机为核心的控制系统,以PLC为控制核心的控制系统和完全嵌入式控制系统。
传统的硬件系统架构策略以工控机为核心的控制系统使用工控PC和相应的多轴运动控制卡实现主要的控制功能。该种架构具有性能强大、软件开发及维护方便、人机界面构造简易、可移植性和泛用性好、系统可拓展性和弹性较大等优点。但是劣势也很显著,首先是成本高昂,而且很难针对被控对象的特性对控制系统进行裁剪来控制成本;其次,工控PC和运控卡组成的系统体积相对较大,示教系统不便于移动使用;此外,工控机系统对于电源和工况要求相对较高,这一点对电源管理系统将产生额外的成本。
随着PLC控制性能的提高,不同类型的PLC都采用了模块化设计,其中比较突出的有日本恒河公司的FA-M3 PLC,模块化设计的PLC十分便于方案设计和根据成本进行裁剪。对于机械臂控制,常用的模块为:电源模块、CPU模块、位置控制模块、I/O模块。位置控制模块是针对机械臂运动控制的核心部分,相当于工控机架构中的多轴运控卡,可以在PLC中直接实现运动学计算、轨迹规划和原点搜索等算法。
完全的嵌入式控制系统是近年来新产生的一种机器人控制系统架构形式,以ARM、DSP为代表的嵌入式控制器的性能日益强大,已经足以满足工业机器人多轴运动控制的需要。早期的完全嵌入式控制架构受限于CPU的性能,在使用ARM运行操作系统的同时,往往需要辅以DSP或者FPGA来进行数据运算和多轴联动并行控制。随着硬件技术的继续发展,尤其是ARM Cortex-M系列32位工业控制IP核的问世,以及各大半导体器件商的大力支持,产生了以NXP的LPC3000系类和意法半导体的STM32系列为代表的高性能工控MCU。强大的CPU、功能完备的外设,再加上独立的FPU(浮点运算单元)等高性能的运算协处理器构成的MCU,为单片嵌入式控制系统的实现提供了坚实可靠的硬件支持。完全嵌入式控制架构具有成本低廉,架构极端紧凑(甚至只使用一枚MCU配合少数接口功能IC即可实现功能),架构适应性强,可随意拓展、裁剪。缺点是相对于工控机和PLC架构,起步阶段开发难度较大,门槛高,且可移植性较差。
针对本作品本身定位为低成本的小型操作臂,因此必须对成本进行优先考虑,而且使用PLC和工控机架构,都属于应用开发,不涉及底层运控算法,不利于技术储备。综上所述,本设计最终选择了完全嵌入式的控制系统硬件架构。硬件控制系统层级架构图如图6-13所示。硬件控制系统分为嵌入式控制系统和上位机系统两个层级。其中嵌入式控制系统在单机运作时可以独立工作,当多机协同工作时,通过上位机系统进行调度和统一控制。
图6-13 硬件控制系统层级架构图
(2)硬件功能分配 确定了控制系统硬件架构后,就可以具体展开针对硬件控制系统的功能性设计和器件选型工作。首先针对需求分析的六个功能进行功能性分配。
1)电源管理:电源主要负责保障机械臂和控制系统的电源供应,“新型机械臂”使用的RX24F舵机使用的是12V直流供电方案,控制系统使用的5V和3.3V电源可以通过12V电源使用线性稳压元件获得。
2)安全防护与电源管理可整合设计,通过独立的双路开关和串联的急停开关实现手动的急停功能。
3)运动控制算法在实验阶段使用更易实现系统抽象和矩阵、矢量运算的Matlab m语言脚本实现,在上位机运行,通过通信接口在嵌入式控制系统进行实物仿真。后期调试完成后,经过m语言到C语言的算法代码翻译,移植入嵌入式控制系统运行。
4)指令存取主要包括NC代码的读取、编辑和译码,在前期可作为运动控制的一部分,后期移植入嵌入式控制系统,需要解决闪存文件读写的问题。
5)人机界面可以通过在嵌入式控制系统中外挂屏幕模块的方式直接实现输出显示,输入方面对于效应要求较高、较常用的指令使用硬件键盘以中断的方式实现,对于操作灵活性、交互性要求较高的操作部分由触屏来实现。
6)接口通信方面主要对控制系统提出以下具体功能要求:首先是针对舵机通信的RS485异步串行总线接口;其次是用于与上位机通信调试的RS232串行通信接口;最后是用于多机协同和组网控制的LAN以太网接口。
(3)器件选型和框架设计
1)MCU选型:首先进行嵌入式系统核心的MCU选型,微控制器需要具有两路独立的UART通过电平转换来分别实现RS232和RS485通信;需要又能够驱动屏幕的16位高速并行总线;需要具有外扩flash进行数据保存的扩展性能;同时需要有能够在MCU执行运动控制算法的性能。综合以上几点,最终选定意法半导体公司的STM32F103VET6,具体相关性能参数如下:
①内核:ARM32位的CortexTM-M3CPU,最高72MHz工作频率,在存储器的0等待周期访问时可达1.25DMips/MHz(Dhrystone 2.1),单周期乘法和硬件除法。
②存储器:512K字节的闪存程序存储器,64K字节的SRAM,带4个片选的静态存储器控制器。支持CF卡、SRAM、PSRAM、NOR和NAND存储器。并行LCD接口,兼容8080/6800模式。
③ADC:3个12位模/数转换器,1μs转换时间(多达21个输入通道),转换范围:0~3.6V,三倍采样和保持功能,独立温度传感器。
④DMA:12通道DMA控制器,支持的外设:定时器、ADC、DAC、SDIO、I2S、SPI、I2C和USART。
⑤13个通信接口:2个I2C接口(支持SMBus/PMBus);5个USART接口(支持ISO7816,LIN,IrDA接口和调制解调控制);3个SPI接口(18Mbit/s),2个可复用为I2S接口;1个CAN接口(2.0B主动);1个USB2.0全速接口;1个SDIO接口。
2)电源系统选型:如6.3.1小节所述,12V额定电压下,RX24F的堵转电流为2.4A。系统的极限功耗(相对于伺服部分,控制系统功耗可以忽略不计)计算如下
Pmax=UInK=12V×2.4A×7×150%=302.4W
式中,n为驱动单元数,“新型机械臂”具有7个自由度;K为功率余量系数,取1.5的功率余量。
电源选用12V、300W的AC-DC开关电源,5V供电使用DC-DC功率变换模块经12V电源降压获得,3.3V电源使用LDOLM1117-3.3经5V降压获得。
3)Flash选型:由于STM32F103VET6具有512Kb的板载flash,所以硬件驱动程序、操作系统和运控算法程序可以实现片内固化。但是NC文件需要更加便捷的读写,所以控制系统仍然需要设计独立的非易失存储系统。一般嵌入式系统常使用外挂的I2C EEPROM或者flash,或者使用CF、SD等具有专用接口的闪存卡来作为系统的扩展存储系统。对于使用STM32作为主控MCU的系统,由于同时有使用屏幕,需要占用FSMC并行总线,而且STM32有独立的SDIO接口外设,具有直接驱动SD 2.0协议标准设备的能力,所以闪存不宜再占用系统总线。因此本设计系统最终采用符合SD 2.0协议标准,且体积更小的TF卡作为存储介质。
4)屏幕选型:常见的嵌入式控制系统使用的触屏模块有320×240,480×272,800×480几种分辨率,屏幕驱动芯片常见的为ILI93xx系列或SSD19xx系列,支持16位RGB565颜色编码格式。根据实际的人机界面设计需要,本控制系统最终选用了4.3英寸480×272分辨率的TFT触屏模块。
5)接口模块选型:STM32具有3个可同时使用的UART外设单元。通过MAX3232和MAX3485进行电平转换后直接进行RS232和RS485通信。但是片上没有LAN外设,所以为了实现以太网通信,需要额外的TCP/IP硬件协议栈,本控制系统选用了通过SPI总线驱动的以太网控制器ENC28J60。通过简单的外围电路设计和具有脉冲变压器的HR911105A网线插头就可以直接工作。其他的数字量、模拟量控现场I/O由STM32I/O口直接驱动。
(4)硬件电路设计 通过硬件选型,控制系统的功能分配已经完成,之后开始进入具体的功能性设计和实现。根据硬件选型和功能分配建立的控制系统硬件框图如图6-14所示。
图6-14 控制系统硬件框图
硬件控制系统PCB设计如图6-15所示,原理图如图6-16所示。(www.xing528.com)
图6-15 硬件控制系统PCB设计
图6-16 硬件控制系统原理图
在PCB设计过程中,系统遵循强弱电共存的EMC设计规则,将功率地和控制地相互隔离,在电源处通过磁珠跨接一点接地,磁珠等效一个固有频率可变的电感电阻串联系统,比起普通的电感有更好的高频滤波特性,对功率地线上的高频文波串扰起到了良好的扼流作用,防止其对控制地造成干扰,造成器件损坏或总线通信不稳定。设计的第一版实验系统如图6-17所示。
图6-17 第一版实验系统
2.嵌入式软件系统设计
嵌入式控制系统的功能性要求主要包括以下几个方面:
1)LCD、触屏、各个模块接口等底层硬件驱动程序。
2)NC代码和控制指令存取所需的文件系统管理程序。
3)嵌入式操作系统。
4)GUI界面控制。
5)超越函数和矩阵运算所需的DSP算法。
(1)底层硬件驱动设计 在构建底层硬件驱动时,尽可能地使用了STM32丰富强大的片内外设,不占用CPU资源,不使用CPU模拟任何控制逻辑与控制时序。将CPU完全解放给系统层次,以进一步提升了系统的实时响应性。该部分具体的外设配置使用意法半导体开发的固件库STM32F10x_StdPeriph_Lib_V3.3进行设计,以适应意法半导体器件配置寄存器众多的特点。使用固件库配置外设的一般步骤为:定义外设对应_InitStructure初始化结构体,使能外设和对应IO口时钟,赋值相应_InitStructure结构体元素,使用_Init函数调用相应_InitStructure初始化外设。之后就可以通过功能函数或者中断服务使用外设功能。
以RS232串口配置代码为例。
至此USART工作模式配置结束,对应的功能函数调用方式为(代码中变量ch为待读、写unsigned char类型变量):
其他外设的配置方式原理相同,在此不再赘述。
(2)文件系统管理程序移植 NC代码文件为.nc格式的文本文件。如需实现对文本文件的高效率读写编辑,需要在嵌入式系统中构建文件系统。本软件系统通过对FATFS开源文件系统库进行移植,在系统内建立了FAT32文件系统。FATFS具有紧凑、可移植性好等特点,只需要修改diskio.c下的disk_read与disk_write两个函数中具体指向的设备读写命令,即可完成文件系统移植。通过建立文件系统,一方面可以统一高效的进行系统内的数据管理,另一方面FAT32在PC端有良好的支持,解决了数据接口的问题。
(3)嵌入式操作系统移植 针对嵌入式控制系统中任务繁杂、调度频繁的特点,在嵌入式控制系统内需要建立操作系统进行资源调度与分配。“新型机械臂”作为被控对象对控制系统的实时性有严格的要求,最终在操作系统选择上排除了WinCE和Linux,选择了嵌入式实时操作系统uCOS/Ⅱ,以保证系统具有实时的中断响应能力和1ms的事件响应能力(由系统时钟Cortex-M3时钟SysTick决定),且对任务调度有硬实时性的约束力。
(4)GUI移植 嵌入式系统中可用的通用GUI库效果有限,而且往往与操作系统存在一定兼容性问题,本控制系统最终在uCOS/Ⅱ实时操作系统基础之上,移植了与之完全兼容的uCGUI图形界面系统,可以建立媲美桌面系统的对话框界面和各种GUI控件。
(5)DSP算法实现 运控算法是嵌入式控制系统的核心部分。现行的主流解决方式是使用DSP做协处理,但是这样的系统设计会使成本大幅增加,有悖于设计简约高效的单片嵌入式控制系统的创新理念。Cortex-M3的指令集拥有部分功能强大的DSP指令,直接使用标准C对浮点数进行运算,并不能有效地利用这些指令资源,结果会造成极大的系统资源额外开销。因此细化为两个实现层次。
1)实现层次1为底层超越函数的实现。STM32在72MHz系统中使用标准C的math库进行平方根运算的时间为113μs。以50Hz的插补频率,远远不能满足运动学计算所需要的运算速度。因此在超越函数层,本设计引入了德州仪器公司为Cortex-M3核心开发的IQMATH定点函数库。通过对汇编指令的优化,将运算速度提升了两个数量级。移植后包括定点数格式转换所需的时间如下:
①平方根运算时间:3.48μs。
②正弦函数运算时间:2.44μs。
2)实现层次2为上层矩阵运算层。通过对CMSIS(Cortex M Software Interface Standard)2.0下DSP库的支持,实现了涉及运动学逆解的各种矩阵运算函数,使得运控系统具有更强的算法描述能力和数学建模能力。
通过以上途径,在嵌入式控制系统中实现了从底层硬件驱动到算法优化的全部软件功能。NC代码解码的操作界面如图6-18所示。
图6-18 在嵌入式控制系统中进行NC代码解码的操作界面
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。