首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

stm32+fpga的运动控制器

stm32+fpga的运动控制器

因为fpga的高速、高同步、纯硬件的特点,可以很好的实现多轴的同步和单轴任意频率脉冲的生成,远远比stm32自带的定时器好用。结合f407的高性能,高可靠,方便的开发环境,可以组合在一起做成类似dsp+fpga的运动卡,但是价格低廉,用户入门容易。



Stm32采用stm32f407,不扩展内存sram,外部fpga采用ep4ce6,引脚采用多的那种(黑金的那种),板子上使用rtc电池,用来保持断电保护的sram内容。


stm32板子支持以太网,mac使用f407自带的mac器件。
支持usb,232c,485,can通讯。
usb用来实现和pc机的连接,232c和485则可以使用modbus-rtu协议,以太网则实现econ的协议。



Stm32 <==fsmc==>fpga,数据总线为8,数据总线为88为数据总线可以寻找256字节空间,对于模块来说完全够用了。如果空间不够用,还可以采用简易的协议扩展方式来做

Stm32上运行ucos或者freertosfpga简单的采用quartus运行纯逻辑,代码采用verilog语言,fpga不运行nios,因为nios很不好用,不可靠,不能用于生产环境。

运动逻辑采用stm32来做,fpga是执行机构,由于stm32的小内存,无法将曲线全部计算出来,只能采用buff或者采用先计算出规划,然后stm32每个伺服周期计算下个周期的数据,然后下发给fpga执行,fpga主要是实现速度控制,同时统计发送的脉冲数量,并可以在fpga内部做做简单的位置环控制。


参考欧姆龙的位置控制模块接口

绝对移动
相对移动
中断给进
当前位置设置
定位完成
忙标识

位置
速度
加速时间
减速时间
当前位置



每轴的状态
1,是否对零
2,当前位置
3,忙标识
4,是否就位

对于ptp的运动曲线指令,分为几个状态,
1,计算曲线范围和特征,然后记忆
2,计算完成后,每个伺服周期,根据范围和特征,计算下个伺服周期的速度值,并发给fpga
3,如果伺服周期范围执行完成或者位置指令完成,那么停止当前指令执行,切入空闲态

JOG移动:速度,tats,正反转移动
停止JOG
绝对PTP移动:速度,tats,绝对位置
相对PTP移动:速度,tats,相对位置
Servo任务划分为两个任务,一个任务计算并写数据到fpga,然后等量外一个专门的任务发同步时间消息,因为另外一个任务是专门的空闲定时任务,所以时钟是很准的,专门负责按伺服周期通知另外一个任务同步信号。同步信号工作原理如下
周期计算任务                                     定时器任务
写普通数据到fpga                              
等同步信号  《===============================发出同步触发信号                                      
写同步信号数据到fpga
伺服接口负责提供给别的任务使用

运动轴的状态
0 空闲 1点到点 2运动停止 3点动 4和编码器或者虚拟轴同步
继承事业,薪火相传
返回列表