广东梅州西门子PLC模块供应商
均在Step7Template.mwp中编写,CPU类型选西门子S7—200系列226CN。
先说程序,测低速(每分钟1000转以下):LDI0.0
LDM20.1
CTUC0,+5000//设定增计数器上限
LDSM0.0
AM20.0
TONT37,+30//立即接通,延时三秒断开
LDSM0.0
OM20.0#p#分页标题#e#
ANT37
=M20.0//设定T37定时器复位信号
LDM20.0
LDM20.1
CTUC1,+20//设定增计数器C1上限
LDC1
MOVWC0,VW200
=M20.2
LDM20.2=M20.1//设定增计数器C1的复位信号
外围电路下面介绍,先讲程序。由I0.0作输入口,T37延时三秒后给C1一个信号,C1计1,T37被复位,再延时,3秒后C1计2,…
直到C1计到20。20个三秒就是一分钟,期间I0.0口的脉冲信号由C0计数器计数,计满一分钟就把结果移到VW200中。脉冲信号由外围电路得到。
以上程序能测一千以下的转速,实验时上限是一千四百多吧。由于该程序用的是低速计数器,转速较高时,受PLC时钟周期影响,在一分钟时转速还未记好,C0就被清零,会有上限。我们用PLC内部不受时钟周期影响的高速计数器来测高速(一千转以上):
LDSM0.1
CALLSBR_0//调用高速计数器初始化子程序
LDSM0.0
AM20.0
TONT37,+100//设定计时器值,延时10秒
LDSM0.0
OM20.0ANT37
=M20.0//立即接通延时十秒断开
LDT37
MOVDHC0,VD100//I0.0为高速计数器HC0输入口,计数结果移入VD100
MOVDVD100,VD200
MUL+6,VD200//计数结果乘以6,放入VD200
LDT37
CALLSBR_0//T37计时到,调用高速计数器初始化子程序
SBR_0//高速计数器初始化子程序#p#分页标题#e#
LDSM0.0
MOVB16#F8,SMB37//设置控制位:增计数;已使能;
MOVD+0,SMD38//装载CV
MOVD+0,SMD42//装载PV
HDEF0,0
HSC0
以上程序测速范围为1000转以上,实验时测得zui高为2500+,因实验条件有限,上限未知。有人会有疑问:你怎么采用的是测10秒,将计数结果乘以6当做一分钟的转速,而不直接测一分钟的转速呢?因为转速结果zui后要用数码管显示出来,对观察者来说,10秒以后显示与一分钟后显示相比,前者更好一些。zui后我们采用的是6乘以10的策略。
zui后来说说外围电路吧。外围电路把转速转换成脉冲信号输入PLC,上面两段程序用的都是I0.0口。信号的转换和采集用霍尔传感器,