伴随着计算机的普及,PC的性能、可靠性及应用环境也已经今非昔比,在工业领域方面PC拥有大量的支持软件用以改善用户界面、图形显示、动态仿真、故障诊断、网络通讯等诸多功能,此外,在总线的开发也因PC丰富的接口资源和模块化设计而变得简单。因此,基于PC的开放式数控系统绝对是未来控制系统主流主流方向,发展开放式和形成具有自主产权软件型数字控制系统,是我国数控发展迈出实质性突破和赶超世界先进水平的一次良机。因此,文中研究课题主要对数控系统实际要求出发,结合PC和高性价比的ARM系列芯片,利用模糊控制算法,设计一款性能稳定,高精度的伺服控制器,为推进伺服技术的发展具有重要意义。
1 系统结构
本系统采用的是“PC+运动控制卡”形式。其中,计算机机作为上位机,可以满足控制环节多、轨迹复杂、强柔性的设备的控制要求。
以ARM为核心的控制卡作为下位机,主要负责总线通信、步进和伺服电机的控制,这样就形成了以ARM的CPU和计算机CPU主从式双CPU控制模式。计算机的多任务调度和强大的处理能力,加上微处理芯片的现场适应能力及高性价比,使得系统开放性好,可靠性高,并基本满足现阶段绝大多数工业控制的要求。
2 运动控制卡硬件设计
2.1 双口RAM与STM和CH365的连接
本文基于PCI总线的运动控制卡硬件方面主要包括2个部分:1)STM32最小系统,2)PCI总线。选用双口RAM芯片IDT7025作为STM32与CH365双向通讯的缓冲芯片。
本设计中,双口RAM IDT7025作为STM32与PC都可以读写RAM中的数据,RAM右端与PCI通信芯片CH365连接,这样就可以映射到CH365的存储空间;左端口则与STM32相连,便于STM32的随时访问。其中IDT7025需要5 V电压供电,而ARM芯片的供电电压时3.3 V,所以需要电压转换,这里选择了SN74LVTH16245。这部分的连接如图2所示。本文将双口RAM分成两个独立的存储空间;高4 k空间用于计算机向STM32传送控制指令,低4 k空间用于STM32向PC传递反馈的数据。
2.2 CH365与PCI接口实现
CH365与PCI部分的连接如图3所示。图中,电容C1~C4完成电源的去耦,C2~C4是大小为0.1 μF的高频瓷片电容,PCB设计过程中就近并联在芯片CH365的三组电源输入输出引脚上。而地址线A15~A0作为偏移地址,数据总线D7~D0配置为读操作时的数据输入,以及写操作时的数据输出。IOP_RD为提供I/O读操作时片选脉冲信号,同样,IOP_WR用于提供I/O写操作时的片选信号,MEM_RD用于提供存储器读选通脉冲信号,MEM_WR用于提供存储器写选通脉冲信号,上述引脚的读写选通脉冲信号都是低电平有效。在I/O读写过程中,CH365的A7~A0输出I/O端口提供给其他设备的有效的位偏移地址,偏移地址也可以被译码产生二级片选信号去适应控制的要求。同样,在I/O读写过程当中,CH365的A15~A10的电平保持恒定,内部寄存器可以在输出之前决定要输出状态,A9~A8负责完整的输出PCI总线地址,通过对CH365的A9~A0的输出地址的译码就可以使用芯片拥有的本地硬件定址功能,通过MER_WR引脚向CH365芯片发送本地定址的请求,最终实现与ISA总线相兼容的地址范围内的I/O端口定址。因此,在读写操作发生的过程中,CH365的A14~A0输出提供的有效偏移地址;CH365的A15电平维持不变,由内部寄存器提前设定电平高低,用实现地址线扩展或者页面选择;而区分各个端口则通过CH365的A7~A0的地址译码来完成。
3 运动控制卡软件设计
3.1 参数自调整在线插值模糊控制算法
经典的在线模糊PID算法的实现实质上是一个查表输出的过程,因为误差与误差变化率均被不可避免的模糊量化相对取整,使控制器凋节出现死区,控制参数的分区会引起的调节不细。从理论上讲,只要不断增加控制模糊化量个数,进行等级细分,但它势必受计算机字长限制,使模糊控制没有了优势。
在线插值算法等同于将论域内的分档趋于无穷大,即通过线性插值的方式在控制规则表相邻分档之间增添无穷个新的、细分化的控制规则,对原有的控制规则加以完善,是一种快速精确的而且切实可行的控制算法。[page]
参数自调整在线插值模糊控制器如图4所示。量化参数、比例系数Ku都会影响系统动、静态性能,调节比例因子的因果关系很直观,最终也会起到影响Ke和Kec的作用,选择在线自调整Ku值能够起到良好的效果,不至系统过于复杂而影响实时性。
文中利用在线差值控制算法的特点,设计了算法实现的软件流程,如图5所示。
3.2 操作系统下的功能实现
为满足多任务的调度和系统实时性的要求,软件的整体实现,本设计引入μC/OS-Ⅱ操作系统。
3.2.1 RTL8019AS底层驱动程序
通常情况下,用户根据硬件芯片型号找到RTL8019AS底层驱动程序库的编写所需要的文档资料即可编写相关的底层函数,其主要功能函数如下:
NicInit()一RTL8019AS的初始化;
NicClose()一关闭RTL8019AS芯片数据收发功能;
NicReset()一复位RTL8019AS芯片;
EtherOutput()一数据包输出;
Etherlnput()一数据包接收。
网络通信还需要底层RTL8019AS驱动程序支持,参考R,rL8019AS以及AT91FR40162,即可编写出针对此系统的RTL8019AS底层驱动程序。
3.2.2 基于μC/OS-Ⅱ实时操作系统主函数及相关任务的编写与嵌入
4 结束语
对上述的程序进行调试后,并结合硬件调试表明文中所设计的运动控制卡能够实现准确的位置及速度控制,受控电机运行平稳,基本能实现对电机的控制功能,通信稳定。对于长期的稳定性测试,现在浙江绍兴某袜机公司的试着运营阶段,初期表现良好。
关键字:PCI总线 STM32 运动控制卡
引用地址:
基于PCI总线的STM32运动控制卡的设计
推荐阅读最新更新时间:2024-03-16 13:34
stm32的DMA1通道一览表,stm32使用DMA的相关操作
DMA(Direct Memory Access)常译为“存储器直接存取”。早在Intel的8086平台上就有了DMA应用了。 一个完整的微控制器通常由CPU、存储器和外设等组件构成。这些组件一般在结构和功能上都是独立的,而各个组件的协调和交互就由CPU完成。如此一来,CPU作为整个芯片的核心,其处理的工作量是很大的。如果CPU先从A外设拿到一个数据送给B外设使用,同时C外设又需要D外设提供一个数据。。。这样的数据搬运工作将使CPU的负荷显得相当繁重。 严格的说,搬运数据只是CPU的比较不重要的一种工作。CPU最重要的工作室进行数据运算,从加减乘除到一些高级的运算,包括浮点、积分、微分、FFT等。CPU还需要负责复杂的中断
[单片机]
STM32 CubeMX输入捕获测量PWM波形频率与占空比
使用的开发板是官方的STM32F412ZGTx NUCLEO开发板。本次主要是为了对PWM波形进行脉宽和频率的测量。很多的工程使用的是软件对同一个通道进行3次捕获,比较耗费系统资源,本次介绍使用硬件进行捕获,尽可能降低代码的工作量。 首先打开CubeMX,做如下设置: 1.先设置定时器10,用于输出PWM波形。 2.设置TIM2,用来进行输入捕获 至于为什么这么设置,我们放在最后面说明,此处使用一路信号进行两次捕获,可以降低软件的工作量。 3.其他的串口设置,这里不做说明。时钟树设置如下: 4.对定时器10进行如下设置: TIM10使用的频率为100M,这里分频为20M,按照图中设置的周期,输出的P
[单片机]
STM32单片机按键电路设计
以前GPIO上接的电路都是低电平触发的那种,新画了个板子有一个按键设计的是高电平触发,结果IO口设置成上拉输入后,怎么读都不正确,按键电路如图1。无奈只能去调试一下,发现当设置为上拉输入后,其ODR(GPIO输出数据寄存器)相应的也置为1,百思不得其解。 图1 按键电路 于是去看一下GPIO的结构图: I/O引脚结构图 由图可以发现其实输出寄存器与输入寄存器之间在I/O引脚处是线与状态,在GPIO设置成上位输入时,其上拉电阻闭合,这时如果输出寄存器设置为0那么在IO口内部就会自己损耗电流,而这些电流的损耗是会增加功耗的。因此当GPIO设置成上拉输入时,相应的输出寄存器也设置为1. 将按键电路与I/O
[单片机]
STM32学习012_产品研发流程(二)
3用户接口要求 需要确定产品硬件接口的种类和数量,电源接口,指示灯以及开关类型,复位按钮和显示屏幕,从而可以确定PCB的外围轮廓, 常用的用户接口主要有,JTAG接口,DB9串口(公头和母头),USB接口,Console接口,RJ45以太网接口,HDMI接口,VGA接口,SATA&IDE接口,PS2接口,CPCI接口,PCI以及PCI-E接口RJ11接口,S-Video视频接口,RCA视频接口(俗称莲花头),YPbPr/YCrCb视频色差输入接口,SD/TF卡接口,CF卡接口,SIM卡接口,RF射频端子,SCART接口,SPDIF数字音频接口,DisplayPort接口和光口, 常用的数据协议接口主要有SPI ,UART,LVDS
[单片机]
stm32功能严重异常的几个常见原因
我们在从事MCU应用开发过程中,难免会碰到MCU芯片异常的问题。比如异常复位,表现为复位脚有电平跳变或者干脆处于复位电平;在做代码调试跟踪时,发现代码往往进不到用户main()程序;或者时不时感觉芯片死掉了,功能完全不可控等。 针对类似严重异常情况的原因我在这里大致总结下,与大家分享。 1、时钟问题。一般表现在时钟配置异常,比方配置超出芯片主频工作范围。【对于STM32系列MCU,如果使用STM32CUBEMX图形化工具做配置,基本可以回避这个问题】 2、电源问题。比方电源质量差,纹波过大,尤其开关电源供电时;或者供电芯片质量差,输出不稳定;或者系统供电能力不足而引起电源波动等。 3、BOOT脚配置问题。对于ARM
[单片机]
基于STM32的RA8806控制器LCD设计
0 引言 在现代电子设备中,触摸屏的应用使电子设备更智能化、人性化。在手机、导航仪、电子仪器、咨询终端等设备中,作为信息交流的媒介,触摸屏具有界面编程灵活、反应速度快、功耗低、体积小的特点。 RA8806是一个文字与绘图模式相结合的点矩阵液晶显示控制器,最大能驱动640×240或320×480分辨率的LCD液晶触摸屏,可以显示文字、图片、符号等复杂信息,支持文字、图片混合显示和区域卷动,支持90°,180°,270°的文字旋转显示,支持4/8 b的8080和6800系列两种MPU接口,提供4×8或8×8的键盘扫描接口,提供使用者自行创建字型及符号的功能,可以进行文字对齐、设置粗体字、设置行间距和LCD对比度、背光调节。
[单片机]
STM32的DAC深入探究之一
1、简述: 12位数字输入,电压输出,DAC可以配置为8位或12位模式。有2个输出通道。在双DAC模式下,两个通道可以独立地工作。 特殊功能: 噪声波形生成,三角波形生成,外部触发转换,双DAC同时或者分别转换;每个通道都有DMA功能; 参考电压:2.4V~ 3.3V 因为一旦使能DAC通道,那么相应的GPIO便自动地连接到DAC转换器,因此,模拟输出前应该设置成模拟输入,目的是避免寄生的干扰和额外的功耗; 2、函数介绍: (1)缺省函数 DAC_Init(); (2)DAC_Init(DAC_Channel_1,&DAC_InitStructure);初始化函数 DAC_InitTypeDef
[单片机]
如何利用定时器产生PWM波
摘要:利用定时器产生PWM波。然后利用32的外部中断和定时器来测量32输出的波形硬件:STM32F103C8T6核心板、示波器、串口调试助手所用到的的引脚为PA8和PA0。 测量方案:在第一次外部中断(上升沿触发)到之时,开启定时器,同时计数器清零。然后等待第二次中断到来,在第二次外部中断(上升沿触发)到之时,获取计数器的计数值,同时关闭计数器。因为知道了计数器计数一个数的时间,所以在第二次外部中断(上升沿触发)到之时,获取计数器的计数值,通过这个值就知道一个脉冲的时间周期。时间周期的倒数就是外部信号的频率。 一、利用TIM1的CH1产生PWM波 pwm.c #include pwm.h voidTIM1_PWM_Init
[单片机]