quote:以下是引用yanxiao在2012-11-21 21:36:43的发言:
如果我要帮你找问题,需要一条一条语句去分析,要翻书。还是你自已每条加上注释吧。
电机能转到3600RPM需要一个过程,没有按要求以合适的坡度平稳升速,就不能让电机成功转起来。
谢谢斑主,我用的代码就是一个三段脉冲输出的示例代码(是step 7 自带的代码,只是改变了加减速和脉冲数量),
NETWORK 1 // 子程序0开始
// 预载PTO轮廓表
LD SM0.0
MOVB 3 VB500 // 将轮廓表段数设为3
// 段1:
MOVW +500 VW501 // 将段1的初始周期设为500毫秒
MOVW -2 VW503 // 将段1的每脉冲周期递减设为2毫秒
MOVD +200 VD505 // 将段1中的脉冲数设为200
// 段2:
MOVW +100 VW509 // 将段2的初始周期设为100毫秒
MOVW +0 VW511 // 将段2的闹芷谏栉?毫秒
MOVD +3400 VD513 // 将段2中的脉冲数设为3400
// 段3:
MOVW +100 VW517 // 将段3的初始周期设为100毫秒
MOVW +1 VW519 // 将段3每脉冲周期递减设为1毫秒
MOVD +400 VD521 // 将段3中的脉冲数设为400
NETWORK 2
LD SM0.0
MOVB 16#A8 SMB67 // 设置控制字节:
// - 选择PTO操作
// - 选择多段操作
// - 选择毫秒增加
// - 启用PTO功能
MOVW +500 SMW168 // 将轮廓表的该起始地址
// 指定为V500。
ATCH INT_0 19 // 将中断例行程序0定义为
// 处理PTO完成中断的中断。
ENI // 全局中断启用
PLS 0 // 激活PTO操作,PLS0 => Q0.0
MOVB 16#89 SMB67 // 预载控制字节,用于随后的
// 周期改动。
在低速时,只要最高速不超过11.1KB,电机运转正常,比如我用下面的代码是没问题的
Network 1 // Network Title
// Network Comment
LD SM0.0
MOVB 3, VB500
MOVW +1000, VW501
MOVW -2, VW503
MOVD 450, VD505
MOVW +100, VW509
MOVW +0, VW511
MOVD +20000, VD513
MOVW +100, VW517
MOVW +2, VW519
MOVD +450, VD521
Network 2
LD SM0.0
MOVB 16#A0, SMB67 //脉冲周期用微秒计算
MOVW +500, SMW168
ATCH INT0, 19
ENI
PLS 0
MOVB 16#89, SMB67
这样最高速为10K,电机运转正常,但只要最高速超过11.1K,电机就不正常,具体是,
一开始电机慢慢加速,加速到一定速度时,电机就转不过来了,只是发出嘯叫声.
但是如果我对步进驱动器细分,比如设为1/2,电机运转以正常.
也许大家会说可能是电机的问题,但我的电机运行3600转是可以的,用三菱PLC的PLSR指令(带加减速脉冲输出),最高6000RPM也可以