- UID
- 1029342
- 性别
- 男
|
因为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,数据总线为8,8为数据总线可以寻找256字节空间,对于模块来说完全够用了。如果空间不够用,还可以采用简易的协议扩展方式来做。
Stm32上运行ucos或者freertos,fpga简单的采用quartus运行纯逻辑,代码采用verilog语言,fpga不运行nios,因为nios很不好用,不可靠,不能用于生产环境。
运动逻辑采用stm32来做,fpga是执行机构,由于stm32的小内存,无法将曲线全部计算出来,只能采用buff或者采用先计算出规划,然后stm32每个伺服周期计算下个周期的数据,然后下发给fpga执行,fpga主要是实现速度控制,同时统计发送的脉冲数量,并可以在fpga内部做做简单的位置环控制。
参考欧姆龙的位置控制模块接口
绝对移动
相对移动
中断给进
当前位置设置
定位完成
忙标识
位置
速度
加速时间
减速时间
当前位置
每轴的状态
1,是否对零
2,当前位置
3,忙标识
4,是否就位
对于ptp的运动曲线指令,分为几个状态,
1,计算曲线范围和特征,然后记忆
2,计算完成后,每个伺服周期,根据范围和特征,计算下个伺服周期的速度值,并发给fpga
3,如果伺服周期范围执行完成或者位置指令完成,那么停止当前指令执行,切入空闲态
JOG移动:速度,ta,ts,正反转移动
停止JOG:
绝对PTP移动:速度,ta,ts,绝对位置
相对PTP移动:速度,ta,ts,相对位置
Servo任务划分为两个任务,一个任务计算并写数据到fpga,然后等量外一个专门的任务发同步时间消息,因为另外一个任务是专门的空闲定时任务,所以时钟是很准的,专门负责按伺服周期通知另外一个任务同步信号。同步信号工作原理如下
周期计算任务 定时器任务
写普通数据到fpga
等同步信号 《===============================发出同步触发信号
写同步信号数据到fpga
伺服接口负责提供给别的任务使用
运动轴的状态
0 空闲 1点到点 2运动停止 3点动 4和编码器或者虚拟轴同步 |
|