建议在中断里面进行编程,比如OB35,可以将中断周期 设置的小点,比如20毫秒。
然后,你的硬件上最好能够达到 转一圈有4个脉冲信号 进来这样测速比较准确分辨率高。
你可以编写一个子程序,在OB35里调用,做一个脉冲输入点(Pulse_In),当然也需要 速度的计算周期(Speed_Cal_Period单位秒INT型),和每圈多少脉冲(PulsePerLap)以及速度(Speed)
其中速度计算周期以秒为单位是20毫秒的整数倍。
在程序内部首先计算出,速度计算周期 ,需要多少个OB35循环,每次脉冲点来之后,脉冲计数值加1,当计算周期到达后,开始计算速度,简单程序如下。
L Speed_Cal_Period
L 20 //Ob35中断周期
/I
T OB35Cycles//FC里某个临时变量,INT型
L OB35Cycles
L MW102
==I
JCN SPC
L 60.0
L Speed_Cal_Period
ITD
DTR
/R
L MW100
ITD
DTR
*R
L PulsePerLap
ITD
DTR
/R
T Speed
L 0
T MW100
T MW102
SPC:NOP 0
A Pulse_In
fp m20.0
jcn PC
L MW100//脉冲累积值
L 1
+I
T MW100
PC:NOP 0
L MW 102
L 1
+I
T MW102
以上是最基本算法,在一定时间内 累积的脉冲数,除以计算周期,就得到了,每秒多少脉冲,乘以60得到每分钟多少脉冲,再除以 没转一圈有多少脉冲进PLC,这样就得到了 转速 没分钟多少圈。
为了 提高通用型,尽量做IN_OUT接口 来代替里面的MW100,MW102和M20.0
温馨提示:答案为网友推荐,仅供参考