以前是用FX1S系列PLC的,用来控制步进电机,有用到PLSR带加减速脉冲输出,测试时,电机最高速可达6000RPM(当然只是试试,实际是没什用的,电机在如此高速下是没力的),现在用西门子224CPU,也进行这样的测试,结果电机加速到一定转速(1320转)时竟然不转只是尖叫.我用的是五相电机,这时的脉冲频率为11.1K(224CPU可以最高输出20K).
我用的测试代码是STEP 7 MICRO/WIN 帮助文档中自带的三段加减速的脉冲输出的代码,只是原来的速度慢,我改快一点.
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也可以
这是什么原因呢