S7-200系列的PLC有三种分辨率的定时器,每一种分辨率的定时器,其刷新方式是不一样的。那么什么是定时器的刷新?个人的理解就是对定时器当前值的更新。
1ms定时器是每隔1ms对定时器进行一次刷新,10ms定时器是每个扫描周期的开始对定时器的刷新,这两种分辨率的定时器的刷新跟PLC的程序扫描没有关系,而对于100ms的定时器来讲,是每次执行到定时器指令时才进行刷新。
PLC定时器
-
- Posts: 178
- Joined: 30 Apr 2009 06:31
Re: PLC定时器
100ms定时器的定时范围为0.1~3276.7s,10ms定时器的定时范围为0.01~327.67s。
积算定时器的线圈断电时不会复位,需要用X2的常开触点使T250强制复位。 定时器的精度与程序的安排有关,如果定时器的触点在线圈之前,精度将会降低。平均误差约为1.5倍扫描周期。最小定时误差为输入滤波器时间减去定时器的分辨率,1ms,10ms和100ms定时器的分辨率分别为1ms,10ms和100ms。
如果定时器的触点在线圈之后,最大定时误差为2倍扫描周期加上输入滤波器时间。如果定时器的触点在线圈之前,最大定时误差为3倍扫描周期加上输入滤波器时间。
线圈:PLC的输出点
积算定时器的线圈断电时不会复位,需要用X2的常开触点使T250强制复位。 定时器的精度与程序的安排有关,如果定时器的触点在线圈之前,精度将会降低。平均误差约为1.5倍扫描周期。最小定时误差为输入滤波器时间减去定时器的分辨率,1ms,10ms和100ms定时器的分辨率分别为1ms,10ms和100ms。
如果定时器的触点在线圈之后,最大定时误差为2倍扫描周期加上输入滤波器时间。如果定时器的触点在线圈之前,最大定时误差为3倍扫描周期加上输入滤波器时间。
线圈:PLC的输出点
-
- Posts: 178
- Joined: 30 Apr 2009 06:31
Re: PLC定时器
定时器
TON,一有信号,输出Q就是false,直到PT(PASS TIME)结束。此后Q一直保持TRUE,直到输入信号消失;
TOF,等待过程中Q是true,结束后Q是false
Q就是表示亮灯的状态
使用timer比较容易实现一亮一灭交替,但是如何产生多种亮灭模式,还是有问题,比如。
亮1s,灭1s,亮0.2s,灭0.2s。重复
TON,一有信号,输出Q就是false,直到PT(PASS TIME)结束。此后Q一直保持TRUE,直到输入信号消失;
TOF,等待过程中Q是true,结束后Q是false
Q就是表示亮灯的状态
使用timer比较容易实现一亮一灭交替,但是如何产生多种亮灭模式,还是有问题,比如。
亮1s,灭1s,亮0.2s,灭0.2s。重复
-
- Posts: 178
- Joined: 30 Apr 2009 06:31
Re: PLC定时器
fbTON1(IN:=bEnable AND NOT fbTOF1.Q, PT:=tTimeOff1,Q=>,ET=>);
fbTOF1(IN:=fbTON1.Q,PT:=tTimeOn1,Q=>bPulse, ET=>);
fbTOF1(IN:=fbTON1.Q,PT:=tTimeOn1,Q=>bPulse, ET=>);
-
- Posts: 178
- Joined: 30 Apr 2009 06:31
Re: PLC定时器
1 second on, off
a:
//fbTON1(IN:=NOT fbTOF1.Q, PT:=T#0.5S,Q=>bTest,ET=>t);
//fbTOF1(IN:=fbTON1.Q,PT:=T#0.5S,Q=>bStart, ET=>t1);
b:
fbTON1(IN:=NOT fbTOF1.Q AND t<>T#1S, PT:=T#1S,Q=>bTest,ET=>t);//fbTON1.Q always false but when ET reached.
c:
fbTOF1(IN:=(NOT fbTOF1.Q) OR (T=T#0.98S),PT:=T#0.98S,Q=>bTest, ET=>T);// fbTOF1.Q always true but when ET reached.
nt_GetTime(NETID:='',START:=NOT bTest, TIMESTR=>presetTime);
// when the PT set to 0.98s, the presetTime is just 1 second
a:
//fbTON1(IN:=NOT fbTOF1.Q, PT:=T#0.5S,Q=>bTest,ET=>t);
//fbTOF1(IN:=fbTON1.Q,PT:=T#0.5S,Q=>bStart, ET=>t1);
b:
fbTON1(IN:=NOT fbTOF1.Q AND t<>T#1S, PT:=T#1S,Q=>bTest,ET=>t);//fbTON1.Q always false but when ET reached.
c:
fbTOF1(IN:=(NOT fbTOF1.Q) OR (T=T#0.98S),PT:=T#0.98S,Q=>bTest, ET=>T);// fbTOF1.Q always true but when ET reached.
nt_GetTime(NETID:='',START:=NOT bTest, TIMESTR=>presetTime);
// when the PT set to 0.98s, the presetTime is just 1 second