基于ARM+Linux的直流伺服控制系统设计

基于ARM+Linux的直流伺服控制系统设计

张海波1,2,陈 涛1,王建立1,李洪文1,邓永停1,2 时间:2012年10月09日 来源:电子技术应用2012年第8期
字 体:     

摘  要: 目前大多伺服控制系统依赖计算机实现,系统体积功耗大、成本高。针对此问题,以ARM9 S3C2440芯片和CPLD EPM570T144芯片为硬件平台,在嵌入式Linux操作系统下设计了直流伺服控制系统。ARM实现控制算法,得出控制量给CPLD ,CPLD主要用作控制接口扩展和信号处理。详细介绍了Linux设备驱动设计和伺服控制应用程序设计。实验结果证明,系统能够实现等速跟踪、位置跟踪和正弦跟踪等控制功能,并能实现复杂控制算法,以满足控制系统实时性和高速性要求。
关键词: ARM9;嵌入式Linux;CPLD;Linux设备驱动;伺服控制

    随着数字信息技术的不断发展,人们对伺服控制系统的实时性、稳定性和复杂性的要求越来越高,单靠顺序结构的软件设计已经不容易满足上述要求。目前很多伺服控制系统的控制器采用PC/104结构或依赖上位计算机,根据实际的控制系统需要扩展相应的控制电路,使得系统体积大、成本高、可靠性不易保证,且用户交互性不好。嵌入式Linux操作系统由于具有代码开源、可移植性、软硬件可裁剪性、资源丰富及支持多种硬件平台和接口等特点,并且从2.6版本以后的Linux实时性有了很大的提高,正被越来越多地应用于伺服控制系统中。通过嵌入式Linux操作系统对控制系统的软硬件资源进行分配、调度、控制和协调,能够充分发挥控制系统的性能。ARM处理器以其体积小、低功耗、低成本、高性能、文档丰富及嵌入式软件多等优点而得到广泛的应用。因此,本文以ARM9和CPLD为硬件平台,在嵌入式Linux操作系统下设计了直流伺服控制系统。
1 硬件平台
    系统原理框图[1]如图1所示。系统以ARM作为主控芯片,主要负责运行操作系统并实现控制算法、人机交互和多机通信等。CPLD EPM570T144主要负责从ARM接收数据,产生相应的PWM波;接收编码器输出信号,并对其进行处理,得到编码器的值,将其送给ARM,从而实现电机的闭环控制。CPLD和ARM之间通过地址总线(13根)、数据总线(16根)、控制总线(片选、读写使能信号等)与GPIO口(作为外部中断使用)连接,即CPLD类似于ARM的一个外部存储器(CPLD挂接在ARM的bank1存储空间上,地址空间为0x08000000~0x10000000),ARM和CPLD的数据交换类似于对存储器的读写操作。这种总线方式扩展,使得系统数据交换快速、操作简单。控制板通过JTAG、UART、USB和网口与上位机连接,在目标板和上位机之间建立交叉开发环境,可在控制板和上位机之间实现程序下载调试、文件传输和通信等,便于系统软件开发和调试。

2 CPLD程序设计
    CPLD程序分为电机辨向、四倍频、编码器脉冲计数、PWM波生成和总线数据读写5个模块,如图2所示。采用VHDL语言,依据自底向上设计的方法,以便于程序开发和移植。

    采用增量式编码器,需对编码器输出的ABZ码进行处理[2],经过辨向、倍频、计数后得到编码器值。ARM与CPLD之间通过双向总线交换数据,CPLD读取ARM写入数据总线的数据,产生对应的PWM波。当CPLD中的编码器值可读后,CPLD采用中断方式通知ARM,然后将编码器值写到数据总线上供ARM读取。由于CPLD与ARM的其他外设共用数据总线,所以在CPLD对总线进行操作时要特别注意,除了CPLD往总线上写数据外,其他时刻都应该将总线置为高阻态,以让出总线的使用权,否则其他外设(如网口、ADC接口等)会因CPLD一直占用总线而不能正常工作。
    CPLD应用计数法产生PWM波[3],CPLD时钟频率为100 MHz,设置PWM总计数值为8 000。CPLD根据ARM给定的0~8 000的计数值对时钟计数,产生两路反相的PWM波。为防止功率放大器的H桥同一侧上下同时导通,一般设置有3~5 μs的死区,本设计中设置为5 μs的死区。
3 设备驱动设计
3.1 设备驱动简介

    设备驱动是连接应用程序与硬件设备的桥梁,驱动程序为应用程序提供了接口函数,用户在应用程序中调用相应的接口函数便可实现对硬件设备的操作,因此,驱动程序的开发是嵌入式系统开发的关键环节。Linux设备驱动分为字符设备驱动、块设备驱动和网络设备驱动[4]。本文中控制板上移植了Linux2.6操作系统,该操作系统下需设计ARM读写CPLD的数据及对CPLD产生的中断信号响应的驱动,这一要求采用字符设备驱动来实现。应用程序通过系统调用对设备文件进行诸如read、write等操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取设备驱动程序中初始化的file_operations结构体,获取相应操作(read/write等)对应的函数指针,接着把控制权交给该函数。因此,编写设备驱动程序的主要工作就是编写这些文件操作的接口函数,并填充file_operations的各个域。
3.2 设备驱动程序设计
    为便于开发和调试,设备驱动使用模块的方式动态加载到内核中去。加载模块的方式与以往的应用程序开发有很大的不同。以往在开发应用程序时都有一个main()函数作为程序的入口点,而在驱动开发时却没有main()函数,模块在调用insmod命令时被加载,此时的入口点为module_init()函数,在该函数中完成设备的注册、设备文件的创建和相关内存及寄存器的地址映射。同样,模块在调用rmmod命令时被卸载,此时的入口点为module_exit()函数,在该函数中将不用的资源返还给操作系统,把注册的设备、创建的设备文件及IO内存映射等注销掉。在设备完成注册和加载之后,用户的应用程序就可以对该设备进行一定的操作,如read、write等。而驱动就是用于实现这些操作,在用户应用程序调用相应入口函数时执行相关的操作,module_init()入口点函数则不需要完成其他如read、wirte之类的功能。驱动程序需要定义和实现open、read、write等函数,并填充到file_operations结构中,file_operations结构把应用程序中的系统调用与驱动中对应的函数联系在一起。file_operations结构体如下所示:
static struct  file_operations    cpld_drv_fops = {
    .owner    = THIS_MODULE,
    .write    = cpld_drv_write,
    .read    = cpld_drv_read,
    .open    = cpld_drv_open,
    .release    = cpld_drv_close,
    .fasync    = cpld_drv_fasync,
};
其中,write()函数实现向CPLD中写入数据,read()函数实现ARM从CPLD读取数据。设备驱动运行在内核空间,而应用程序运行在用户空间,设备驱动程序不能直接访问用户空间的地址,在read()和write()函数中分别调用内核函数copy_to_user()和copy_from_user()实现数据的转移。read函数实现读取CPLD中的编码器值,write函数实现将产生PWM波的计数值写入CPLD中,这两个函数实现了内核空间与用户空间的数据交换。从驱动程序结构看,驱动程序由三部分组成:结构体struct file_operations及其成员函数的实现、设备初始化module_init()和设备注销module_exit()。
    读写CPLD需要对内存进行读写操作[5]。CPLD产生的读中断信号连接到ARM的GPF1口,CPLD的使能信号由ARM的GPF0产生,因此需要配置相应的寄存器。驱动程序中需要对内存和寄存器进行操作,本操作系统下不能直接对内存和寄存器的物理地址进行操作,需先将相应的内存和寄存器的物理地址映射到内核的虚拟地址空间,通过对映射后的虚拟地址进行操作实现对寄存器和内存的操作。
    ARM对CPLD的读操作采用异步通知和内核中断方式[5]实现,这样可减少系统开支。首先在驱动的open()函数中调用request_irq()函数注册内核中断,并在内核中实现中断处理函数,在内核中断处理函数中调用kill_fasyn()函数给指定的应用程序发送信号,通知应用程序CPLD中的编码器值可读。当CPLD无可读中断产生时,将read()函数放入等待队列,主程序一直处于睡眠状态,而不是应用程序主动去调用read()函数来等待中断的产生,即采用异步通知方式,调用内核中的fasync_helper()函数来实现。当CPLD有可读中断产生时,在中断处理函数中通过kill_fasync()函数,向进程发送信号SIGIO,触发应用程序中signal声明的异步触发函数,使用POLL_IN表明有数值可以读取。另外,要注意,在进入中断服务程序后,首先通过中断自旋锁spin_lock_irq()关闭所有中断,以防止其他中断源中断kill_fasync的工作,在中断服务程序结束时,再通过spin_unlock_irq()打开中断。中断处理函数部分代码如下:
spinlock_t lock;
static irqreturn_t eint1_irq(int irq, void *dev_id)
//中断服务程序
{
    spin_lock_irq(&lock);//关闭中断
    kill_fasync (&eint1_async, SIGIO, POLL_IN);
//产生中断后,驱动向应用程序发送数据可读信号
    spin_unlock_irq(&lock);//开中断
    return IRQ_RETVAL(IRQ_HANDLED);
}
4 应用程序设计


转自:http://www.chinaaet.com/article/199909

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
现代直流伺服控制技术及其系统设计 目 录 代序言 前 言 第1章 绪论 1直流伺服控制技术的发展 2现代直流PWM伺服驱动技术的发展 2.1国内外发展概况 2.2直流PWM伺服驱动装置的工作 原理和特点 2.3功率控制元件的应用及控制 电路集成化 2.4PWM系统发展中待研究的 问题 3现代伺服控制技术展望 第2章 不可逆直流PWM系统 1无制动状态的不可逆PWM系统 1.1电流连续时PWM系统控制特性 分析 1.2电流断续时PWM系统控制特性 分析 2带制动回路的不可逆PWM 系统 第3章 可逆直流PWM系统 1双极模式可逆PWM系统 1.1T型双极模式PWM控制 原理 1.2H型双极模式PWM控制 原理 1.3双极模式PWM控制特性 分析 2单极模式可逆PWM系统 2.1H型单极模式同频可逆PWM 控制 2.2H型单极模式倍频可逆PWM 控制 3受限单极模式可逆PWM 系统 3.1受限单极模式同频可逆PWM 控制系统 3.2工作特性的定量分析 3.3计算机辅助分析 3.4受限单极模式倍频可逆PWM 控制 4控制方案的对比 第4章 PWM功率转换电路设计 1PWM功率转换用GTR 1.1开关特性 1.2GTR的功率损耗及PWM功率 转换电路对其特性的要求 1.3GTR存储时间对PWM系统的 影响 2GTR的损坏和保护 2.1GTR的耐压与损坏 2.2GTR的二次击穿和安全 工作区 2.3GTR暂态保护 3达林顿复合型功率模块的 应用 3.1复合型达林顿模块的电路 结构 3.2达林顿模块作为开关使用 3.3达林顿模块并行驱动 3.4达林顿模块的应用 4缓冲器设计和负载线整形 4.1缓冲器的必要性 4.2负载线分析 4.3在PWM系统中的缓冲器设计 举例 第5章 PWM系统控制电路 1脉宽调制器的一般特性及电路 1.1脉宽调制器的一般特性 1.2恒频波形发生器 1.3脉宽调制器 2保护型脉宽调制及脉冲分配电路 2.1双门限延迟比较的V/W电路 2.2二极管电桥反馈式窗口V/W 电路 2.3具有阻容延迟的PWM变换电路 2.4脉冲分配逻辑延时电路 3保护电路 3.1电流保护型式与特点 3.2保护电流的实时取样和霍尔效应电流 检测装置设计 3.3欠电压、过电压保护 3.4瞬时停电保护 3.5保护电路举例 4基极驱动电路 4.1基极恒流驱动 4.2基极电流自适应驱动电路 4.3自保护型基极驱动电路 4.4典型基极驱动电路 5控制电路集成化、模块化 5.1一种新型SG1731型PWM集成 电路 5.2晶体管驱动模块简介 5.3应用举例 第6章 PWM系统工程设计中的有关 问题 1功率转换电路供电电源的设计 问题 1.1泵升电压对功率转换电路及供电电源 的影响 1.2PWM系统中的反馈能量 1.3反馈能量的存储及其耗散 2PWM系统电流波形系数与电动机的有效出 力 3PWM开关频率的选择 4电枢回路附加电感的设计原则 5浪涌电流和电压抑制 5.1合闸浪涌电流的抑制 5.2浪涌电压吸收 第7章 PWM系统电磁兼容性设计 1电磁干扰模型分析和干扰传递 1.1干扰源 1.2敏感单元 1.3干扰传递方式 2抑制或消除干扰的方法 2.1PWM功率转换电路中GTR开关干 扰源抑制 2.2元器件的合理布局与布线 2.3接地设计 2.4屏蔽与隔离 2.5滤波 3PWM系统电磁兼容性设计导则 3.1电源 3.2电动机 3.3GTR固态开关 3.4开关控制器件 3.5模拟电路 3.6数字电路 3.7微型计算机 第8章 现代直流伺服控制元件与 线路 1直流伺服电动机 1.1对直流伺服电动机的要求 1.2直流伺服电动机的分类 1.3直流伺服电动机的数学模型 1.4直流伺服电动机开环驱动的稳态和 动态特性 1.5直流伺服电动机具有速度反馈驱动的 动态特性 2测速元件与电路 2.1模拟测速元件——直流测速 发电机 2.2数字测速元件——光电脉冲 测速机 2.3光电脉冲测速机在模拟速度闭环中 的应用 3位置测量元件与其轴角编码 3.1正余弦旋转变压器及其轴角编码 3.2同步机及其轴角编码 3.3感应同步器及其轴角编码 3.4数字/分解器(D/R)转换 3.5用单片微处理机实现轴角/数字 转换 4模块化轴角/数字转换器及转换器 系统的设计与应用 4.1模块化自整角机/旋转变压器-数字 转换器的工作原理 4.2模块化轴角/数字转换器的选用和 系统设计中的有关问题 4.3模块化转换器的典型应用举例 5无惯性快速相敏解调器 6直流伺服系统中的运算放大器 第9章 PWM直流伺服电动机控制 系统设计 1PWM系统设计概述 1.1系统设计步骤 1.2对伺服系统的主要技术要求 1.3选择方案的基本考虑 2执行电动机的选择和传动装置的 确定 2.1典型负载的分析与计算 2.2伺服电动机的选择 2.3传动比的选择和分配原则 2.4驱动装置选择方法归纳 3伺服检测装置的确定 3.1速度控制系统测量装置的选择 3.2位置控制系统测量装置的选择 4校正网络和调节器补偿形式的 选取 4.1串联校正 4.2并联校正 4.3反馈校正 4.4复合控制 4.5校正方式对比 5PWM驱动装置的设计 5.1伺服系统对PWM驱动装置 的要求 5.2功率转换电路型式的选择 5.3功率转换电路主要器件的选取 原则 5.4PWM控制电路的选取原则 5.5PWM开关频率的选取原则 5.6辅助装置的选择 6直流伺服系统工程设计(频域法) 6.1对数幅频特性的绘制及约束条件 6.2校正装置的计算 6.3多环路(从属控制)系统的设计 6.4复合控制系统设计 7一个现代PWM直流伺服电动机控制 系统的分析与设计实例 7.1系统设计概述 7.2主要元器件和部件的选择与设计 7.3系统静、动态设计计算 第10章 PWM系统的微处理机 控制 1微处理机控制伺服系统的设计 和综合 1.1连续校正网络的等效数字滤波器 设计法 1.2ω平面上的频域设计法 1.3控制算法及流程的实现 1.4小结 2微处理机数字伺服控制系统的 工程实现 2.1微处理机控制PWM伺服系统的方案 确定 2.2A/D转换器、CPU和D/A转换器的主要性 能参数选择 2.3数字伺服系统的数据预处理 2.4比例因子的配置和溢出保护 2.5采样频率的选择 3微处理机与伺服元件、执行机构的 界面接口 3.1模拟量输入通道的设计 3.2直接数字测速的接口与实现 3.3微处理机与PWM功率转换装置的 匹配 第11章 单片数字信号处理器及其在现代 伺服控制系统中的应用 1单片数字信号处理器简介 1.1概述 1.2TMS32010的结构 1.3TMS32010指令集 1.4TMS32020简介 2用TMS320实现伺服系统补偿控制 2.1DSP的选择与系统开发周期以及开发 支援工具 2.2数字补偿器实现中的几个问题 2.3用TMS32010来实现补偿器和 滤波器 2.4TMS320系列DSP外围接口考虑 3TMS32010DSP在速率积分陀螺伺服稳 定系统中的应用 3.1系统描述 3.2系统模型与控制补偿 3.3数字控制器的硬件和软件结构 3.4程序编制举例 3.5DSP数字控制系统性能评价 第12章 专用集成电路构成的直流 PWM伺服系统设计 1L290、L291和L292功能简介 1.1L290转速/电压变换器 1.2L291数/模转换器及放大器 1.3L292PWM直流电机驱动器 2L292PWM直流电机驱动器对直流伺服 电机的速度控制 2.1模拟直流电压速度控制系统 2.2数字控制速度系统 2.3L292驱动功率扩展 3L290~L292直流伺服控制系统设计 指南 3.1电流调节回路的设计 3.2L290/L291外部参数选择和速度调节 回路设计 3.3位置环的设计 3.4误差分析 第13章 伺服系统的可靠性设计 1伺服系统可靠性的基本概念 1.1伺服系统的可靠性定义 1.2度量可靠性的指标 2伺服系统可靠性计算 2.1可靠性结构图的构成 2.2串、并联结构的可靠性特征量 计算 2.3伺服系统可靠性评价 3伺服系统可靠性工程设计导则和 方法 3.1元器件的选择和控制 3.2降额设计 3.3可靠的电路设计 3.4冗余设计 3.5电气互连技术 3.6自动故障检测设计 3.7小结 4伺服系统可靠性试验及其评定 方法 4.1伺服系统可靠性试验计划 4.2伺服系统可靠性试验方法简介 附录 附录A BESK-FANUC永磁直流伺服 电动机组技术性能参数 附录B 光电编码器技术性能参数 附录C 国产轴角/数字、数字/轴角转换 模块的技术性能参数及国外互换 型号对照。 附录D PWM系统常用大功率晶体管、模块 及驱动电路技术性能参数 附录E LEM电流电压传感器模块的 技术性能参数及应用 参考文献

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值