3.2 Nios II软核设计 在本控制器中利用 CPU控制灵活的功能用来接受并处理外界控制号再将处理过的控制信号送到各个功能 模块,因此Nios II软核采用了经济型即Nios II/e,加入了用于输入输出端口(PIO)、片上 存储器模块(On chip Memory)。控制器程序流程图软件程序工作流程如图7所示。

图7 CPU控制流程图
CPU内部程序采用C++语言编写,并对电机的控制状态建立类。通过对电机的控制状态对象的操作,即可输出各种控制命令到接口模块和CP脉冲发生模块,控制电机状态;同时在程序主循环中监视用户的各种输入,更新电机的控制状态对象的成员变量。
3.3 CP发生器模块和查表控制模块
PatternGenerator模块根据设置的电机转速产生相应的CP脉冲和在该转速下的最适宜的细分等级,并把这些信号传送给查表控制模块。CP发生器模块和查表控制模块如图8所示。

图8 CP 发生器模块和查表控制模块
查表控制模块(interface)内部例化了一个只读存储器,存放一个周期的正弦数据表。正弦表数据宽度与系统数据流数据宽度一致,因此选择14位宽度。正弦表深度决定了驱动器的最大细分等级,关系式表示为:NMAX=2N,当N=12时,达到最高细分等级4096细分。外部输入CP和CCW信号后,通过顺序的给出三相绕组对应的地址数据,即可查得三相相电流的给定数据,并同时更新三个给定数据寄存器,送入下一个环节。转向交换也在本模块实现。输入的CCW信号将控制一个路选择器,控制正弦表的查表方向来改变步进电机转向。本模块通过输入的细分等级信号和CP脉冲信号共同决定三相绕组的地址数据的每次增量大小。当细分等级最高时,地址计数器每次增1或减1;当处于非最高细分精度时,地址计数器每次递增2的N次幂,N由当前的细分等级确定。
3.4 AD采样模块与C相电流计算模块
步进电机A、B两相电流通过霍尔元件进行采集,AD采样模块通过采集采样电阻上的电压来将电机A、B两相电流的模拟量转换为数字量,C相电流模块由基尔霍夫电流定律ia+ib+ic=0计算得到。图9为两模块的端口。

图9 AD采样模块与C相电流计算模块
|