发布于 2009-03-24 20:20:53
0楼
哪位专业高手能帮我解决上面这个问题吗?
我用实例再阐述下:
例如:
网络1
LD I0.0
EU
MOVB 16#C3, SMB67
MOVW 30, SMW68
MOVW 20, SMW70
PLS 0
网络2
LD I0.1
EU
MOVB 16#A5, SMB67
MOVW 500, SMW168
CALL SBR_0:SBR0
PLS 0
子程序SBR_0(其中周期增量的值是错误的,在此只是为了举例才用-1和1凑个数)
网络1
LD SM0.0
MOVB 4, VB500
网络2
LD SM0.0
MOVW 40, VW501
MOVW -1, VW503
MOVD 2000, VD505
网络3
LD SM0.0
MOVW 8, VW509
MOVW 0, VW511
MOVD 55000, VD513
网络4
LD SM0.0
MOVW 8, VW517
MOVW 1, VW519
MOVD 2000, VD521
网络5
LD SM0.0
MOVW 40, VW517
MOVW 0, VW519
MOVD 11000, VD521
以上的程序有存在两个问题!
问题1:在I0.0触发后脉冲以PWM模式持续发出,当I0.1被触发时,此时寄存器SMB67的控制字节被改为:16#A3,但脉冲还是以PWM模式输出,而不会变成多段速的PTO模式输出。只有先把PWM模式停止,再触发I0.1时,脉冲才以PTO多段管线模式输出。
问题2:在子程序SBR_0中,按照我的电机速度需求,第一段的加速过程,我的周期时间得从40us减少到8us.但按照周期增量计算公式(见上一问题)算出来的周期增量是个小数(0.016),所以无法写入寄存器。第三段减速过程同样存在这种问题。
就这一点东西搞得我一头雾水,不知如何处理,所以烦请知道如何处理的高手们指导指导啊!
成功并不是拥有更多,而是能否将拥有的挖掘出最大价值。