各位编程高手,你们好!
我编了一个测速程序,用于测定电机的转速。电机为2极,最高转速为2900转/分。用I0.0为转速输入端,定时器T32为定时中断,中断时间为12秒。
程序如下:
MAIN:
NETWORK 1
LD SM0.1
CALL SBR_0
NETWORK 2
LDN M0.0
TON T32, +12000 //T32定时器预置为12秒
NETWORK 3
LDN M0.1
R M0.0, 1
SBR_0:
NETWORK 1
LD SM0.1
MOVB 16#F8, SMB37 //Set control bits: count UP;
MOVD +0, SMD38 //Load CV
MOVD +10000000, SMD42 //Load PV
HDEF 0, 0
ATCH INT_0, 21 //Interrupt int_0:
ENI
HSC 0
INT_0:
NETWORK 1
LDN M0.1
S M0.0, 1
MOVD HC0, VD0 //Set control bits: write current;
MOVB 16#C0, SMB37 //CV = 0;
MOVD +0, SMD38
HSC 0
CRETI
该程序现在总是存在着如下问题:
用变频器控制电机低速运行,如运行频率为5HZ , (为的是便于观察)
可以测速2~3个周期,即每隔12秒进入1次中断,以及中断程序把计数值传输到V0中去。但是进入了2~3次中断以后,中断程序就会失灵。中断程序的第一句M0.0置1不执行,因而使得T32定时器到了预置时间无法清零,从而造成了测速程序死机。
该程序的问题我一直没有能够解决,请高手先生们一定帮忙,看看问题在哪里?如何修改?
在此表示感谢了!