PLC中定时器是怎么实现的?

专注于机械行业、专业、职业信息分享

服务于制造业 百万工程师

【专业知识】常用紧固件的选用原则,搞机械设计都用得到

【产品设计】超级干货!钣金设计知识一,巩固你的知识小金库!

【科普视频】这种钣金连接技术谁用过,看着很厉害的样子,一次性完成

【专业知识】机械设计中如何取基准?超全干货资料,整理的明明白白!

西门子PLC占据了全球PLC市场的半壁江山,如今,又在系统集成架构和网络组态上发力,一轮新的抢占和瓜分市场的战役已经拉开序幕,并且愈演愈烈。作为工控行业PLC第一品牌,对其进行多角度全面了解非常有必要。我们一起来探讨西门子PLC常见的20个问题。

1、使用定时器加自复位做一个不断重复的计时,调用其他功能或子程序时,为何看起来工作不规律?

请注意《S7-200西门子PLC系统手册》中,关于三种定时器刷新规律的描述。

按这种方法使用定时器时,定时器的置位、复位可能与程序扫描周期不配合,存在造成上述问题的机制。定时比较短的定时任务应使用“定时中断”功能,这样更为可靠。

2、编了一个利用定时器的程序,在编译时已经通过,为何下载到CPU中时提示出错?

这种情况往往是调用的定时器号与定时器类型不配合造成的。参见帮助的表格,如T7只能用作TONR,而不能用于TON或TOF。

3、定时中断(SMB34/SMB35)最长定时为255ms,如何实现更长时间的定时?

可以采用T32/T96中断,最长时间可到32.767s。在定时中断服务程序中对进入中断的次数进行计数,也能实现更长时间的中断延时。

4、定时中断个数不够怎么办?

每个定时中断服务程序不一定只能处理一项定时任务,可以把几个任务放在一个定时中断服务程序中。

对于定时间隔不同的任务,可以计算出它们的定时长度的最大公约数,以此作为定时中断的时间设置。在中断服务程序内部对中断事件进行计数,据此编程别处理不同的任务。

5、使用子程序时,为何动作只能执行一次,或者某些状态不能结束?

如果发生动作不能重复执行,或者状态不能结束(像锁死了一样),而这些功能都与子程序有关时,请检查是否有条件调用子程序。调用子程序的条件在上述动作执行后,或者进入某个状态后不再有效,无法再次“激活”,而脱离上述状态或复位的指令正好在子程序内,必然造成上述的现象。

6、带形式参数的子程序,定义为OUT类型的变量为何会在多次调用子程序时互相干扰?

那是因为定义为OUT类型的形式参数又在子程序内部参与了运算。凡是此类参数都应当定义为IN_OUT类型。

7、与中断服务程序有关的计算任务,为何会偶尔得出不正确的结果?

出现这种现象的原因多是在主(子)程序和中断程序之间传递数据的机制不当。

中断程序可能在任何时刻执行,如果此时主程序(或子程序)正在对中断程序使用的数据进行操作,其中间结果可能带入中断程序,造成计算结果的变化;同样地,在中断程序中产生数据也对主(子)程序中的计算有类似影响。

8、中断服务程序看起来没有执行?

可以在中断程序中加一个测试程序段,如使用SM0.0(常为“1”)将一个输出点置位(使用Set指令),观察是否进入中断服务程序。中断程序不执行,多数原因是初始化(连接中断事件和中断程序)的问题,或者没有“开中断”。应该使用SM0.1(或沿触发)执行一次初始化,然后开中断。

TP170默认的时钟格式与S7-200西门子PLC时钟指令所读取的时间日期格式有所区别,读出的时钟需要改变格式才能与TP170等做时钟同步。在TP170的组态软件ProTool的在线帮助中有相关的介绍。

10、高速计数器怎样占用输入点?

高速计数器根据被定义的工作模式,按需要占用CPU上的数字量输入点。每一个计数器都按其工作模式占用固定的输入点。在某个模式下没有用到的输入点,仍然可以用作普通输入点;被计数器占用的输入点(如外部复位),在用户程序中仍然访问到。

11、为什么高速计数器不能正常工作?

在程序中要使用初次扫描存储器位SM0.1来调用HDEF指令,而且只能调用一次。如果用SM0.0调用或者第二次执行HDEF指令会引起运行错误,而且不能改变第一次执行HDEF指令时对计数器的设定。

12、对高速计数器如何寻址?为什么从SMDx中读不出当前的计数值?

可以直接用HC0;HC1;HC2;HC3;HC4;HC5对不同的高速计数器进行寻址读取当前值,也可以在状态表中输入上述地址直接监视高速计数器的当前值。SMDx不存储当前值。高速计数器的计数值是一个32位的有符号整数。

13、高速计数器如何复位到0?

选用带外部复位模式的高速计数器,当外部复位输入点信号有效时,高速计数器复位为0也可使用内部程序复位,即将高速计数器设定为可更新初始值,并将初始值设为0,执行HSC指令后,高数计数器即复位为0.

14、高速计数器的值在复位后是复位到初始值还是“0”值?

外部复位会将当前值复位到0值而不是初始值;内部复位则将当前值复位到初始值。如果你设定了可更新初始值,但在中断中未给初始值特殊寄存器赋新值,则在执行HSC指令后,它将按初始化时设定的初始值赋值。

15、为何给高速计数器赋初始值和预置值时后不起作用,或效果出乎意料?

高速计数器可以在初始化或者运行中更改设置,如初始值、预置值。其操作步骤应当是:

1)设置控制字节的更新选项。需要更新哪个设置数据,就把控制字节中相应的控制位置位(设置为“1”);不需要改变的设置,相应的控制位就不能设置。

2)然后将所需的值送入初始值和预置值控制寄存器。

16、使用PTO/PWM发生器的功能应使用什么类型的CPU?

应使用24VDC晶体管输出的CPU,继电器输出的绝对不行。

17、PTO或PWM输出的幅值是多少?

PTO或PWM输出的幅值为24V(高电平有效,共负端连接),若想实现输出其他电压的幅值,需自己加转换器来实现。

18、在PTO脉冲串执行过程中,你能否通过PLS指令改变其周期值?

不行,必须终止PTO输出后才能改变周期值。

19、如何强制停止PTO或PWM输出?

可以通过编程将控制字节中的使能位SM66.7或SM76.7清零,然后执行PLS指令,便可立即停止PTO或PWM输出。

20、为何输出信号的指示灯已亮,却没有良好的电压波形输出,或者有时丢脉冲?

PTO或PWM输出负载最小不能低于额定负载的10%;即在输出为高电平的状态下,负载电流不低于140mA。

关注公众号,回复“ 软件目录”查看下载 工程师常用软件

申请加入机械工程师微信群

免责声明:本文系网络转载,版权归原作者所有。如涉及版权,请联系删除!文中内容仅代表作者个人观点,转载不同于本平台认同或者持有相同观点。

关注 机械工程师 获取更多机械专业知识

    1、我想在程序中20个地方使用定时器的常开触点可以吗?如果定时器定时时间到,这20个常开触点是一起动作吗?
    答:可以,因为定时器的触点(常开或常闭)是一个编程软元件。它可以在程序中使用无限次。相当于有无线个触点供你使用。这20个触点不是一起动作的。PLC的程序运行是逐行逐行扫描执行的,扫描到那一行,那一行的触点才动作。因此,严格地讲,这20个触点是动作有限有后的,不是一起动作的。
    2、书上说,定时器只有通电延时触点,我想用断电延时触点怎么办?
    答:定时器只有通电延时触点,如果想使用断电延时触点,只有通过编制断电延时程序才能做到,下图为一断电延时断开的程序,供参考。
    答:定时器T5D100的定时器时间设定值就是数据寄存器D100的值。这是定时器定时时间间接设定方式。间接设定的好处是只要改变D100的值,就等于改变了定时器定时设定值。
    答:当定时器被驱动开始计时后,其数值是从0开始变化,一直变化到设定值为止,这个不停变化的值就叫做定时器的当前值。当前值给用户提供了一种定时器的使用功能,即与触点比较指令相配合,可以在设定值范围内任一时间点对输出进行控制。
    答:定时器根据计数时钟分为100ms,10ms和1ms三种,它们的区别在于定时时间的程序不同。100ms定时器是按照0.1s的程序变化的,而1ms定时器是按照0.001s的程序变化的。如果要提高定时器的精度,就选用1ms定时器。
    答:定时器的三要素是指定时器的启动、触点动作和复位。
    7、我一直不明白为什么在子程序中,要使用T192-T199定时器?难道使用其他定时器不行吗?
    答:在子程序中,既可以使用普通定时器,也可以使用子程序专用定时器T192-T199。他们两者的区别是普通定时器仅在执行子程序是才计时,如果不执行子程序,计时会中断。这样,就影响了计时的准确性,发生计时误差。而T192-T199则不会。在子程序中启动了专用定时器,即使子程序不执行了。定时器仍然继续计时,这样就保证了计时的准确性。
    答:积算型定时器又叫断电保持型定时器,这和通用定时器的区别在于积算型定时器在定时过程中,如果驱动条件断开或断电引起计时停止时,能保持计时当前值。而等到驱动条件接通或上电后,会在原来计时基础上继续计时,直到计时达到设定值为止。
    答:定时器复位根据其复位方式不同而不同,对通用型定时器来说,其启动和复位均由驱动条件来决定。驱动条件由导道变为复位时,定时器马上复位。另外,当PLC发生断电时,定时器也自动复位。对积算型定时器来说,其不因驱动条件断开或断电而复位,必须使用RST指令复位。当然,普通定时器也可以用RST指令复位。
    答:定时器的定时设定值是设定值乘以定时器的时钟脉冲的时钟脉冲周期。不同编址的定时器其时钟脉冲周期是不一样的。所有定时器分为100ms,10ms和1ms三种时钟脉冲周期。同样的设定值,但因编址不同因定时时间设定值而不同,例如:
    答:在程序中,定时器的当前值正要是作为功能指令的操作数出现的。其表示为定时器的编址。例如:
    2、定时器的触点恢复为Z初的状态(即常开为常开,常闭为常闭)
    13、请教前辈,当定时器计时达到设定值后,如果驱动条件仍然成立,定时器会继续计时吗?
    答:当定时器定时达到设定值后,如果驱动条件仍然成立,定时器的当前值不再发生变化,保持设定值不变。不会继续计时。等待定时器复位。
    答:定时器的设定值寄存器是一个16位的数据寄存器,其Zda值为K32767。而K40000已经超过了这个Zda值,所以不能输入梯形图。
    答:定时器的定时值不能设定为负值,如果设定为负值,则规定它的定时时间设定为0秒。
    17、老师,我看大一台设备上有两个数字开关,工人告诉我说,这是用来修改时间设定的,我想弄明白,它是如何改变时间设定的?
    答:利用数字开关可以从外部改变定时器设定值。其设定步骤是:
    18、老师,我不想用触摸屏改变定时器的设定值,因为太贵,能不能给我介绍一下其他方法从外部改变定时器的设定值。
    答:除了用文本显示器和触摸屏来改变定时器的设定值之外,早期的PLC的定时器设定值是通过输入端外接各种开关来改变设定值的,这些方法简单,实用,成本低,缺点是占用输入外接各种开关来改变设定值的,这些方法简单,实用,成本低,缺点是占用输入口比较多,现介绍如下:
    1、外接按钮输入:设计程序。使用按钮每按1下增加或减少定时时间(0.1秒或1秒),这样通过两个按钮动作次数就可以基本估计定时时间的多少。
    2、外接开关输入:设计程序,利用开关的不同组态输入预光设定的定时时间。
    3、外接一组拨码开关;拨码开关可以组成一组二进制数(N为开关个数),PLC通过指令把该N位二进制数送入内存,作为定时器的设定值。这就是PLC早期人机对话方式,比较上面三种方法,拨码开关程序设计简单,设定值准确。
    4、外接数字开关;程序中使用功能指令BIN直接把数字开关的十进制值送入PLC的内存作为定时器的设定值。这是目前仍然在大量使用的一种方法。
    5、外接按钮输入:在输入端按入10个按键(常复位)的开关。通过功能指令TKY讲外部按键输入顺序送入PLC内存作为定时器的设定值。
    上诉几种方法的讲解、外部接线和程序编制详见李金城老师编著《三菱FX3UPLC应用基础与编程入门》一书第4章
    19、我的控制对象是以小时延时控制的,如果用多个定时器接力方式完成,又感到太复杂,有没有其他的方式呢?
    答:多个定时器按理可以延长定时时间,但用到的定时器较多。还要进行准确计算。如果只是精确到小时,可以利用计时器指令HOUR,它的基本功能是当驱动条件成立后,对驱动条件的闭合时间进行累加检测,当时间到达设定时间时,驱动事先设定的指令,HOUR指令的设定时间总以小时计。
    答:是的。程序中使用某个计数器前,必须先对它清零,因为计数器在上一次使用后其残留的计数值不会自动清除,一定要通过RST指令进行清零,否则必然会影响后面计数。
    答:这是学员利用定时器概念来理解计数器是所产生的问题。定时器的驱动条件也是定时器复位的条件,定时器不论是在运行中还是计数到设定值后,只要驱动条件一断开,定时器就复位。而计时器的驱动条件是计数器的计数对象。即驱动条件通断一次,计数器计数一次。而计时器的复位必须用RST指令进行。
    23、老师,我用一个计数器C10对一个开孔码盘进行计数,可是当码盘转快时,发现计数很不准确,为什么?
    答:PLC是采用循环扫描工作方式,对PLC外部端口的状态,一个扫描周期集中采集一次。因此,在用户程序执行过程中。如果外部端口状态发生了变化,PLC是不会理会的。如果使用计数器对外部输入的变化使不能被计时器能接受。这就产生了计数误差。你能提到的码盘速度较快时。脉冲输入的时间已经短过PLC的扫描时间,许多脉冲已不能被计数器所计数。产生了计数不准确的现象。
    答:三菱FXPLC的计数器对脉冲输入的频率是有要求的。对内部信号计数器来说,要求脉冲信号的周期要大于2倍PLC扫描周期。例如一个扫描周期为50ms的PLC,其输入端口的脉冲输入频率应不超过10HZ。对于高速计数器,它是采用中断方式工作的,与PLC的扫描周期无关,因此,它的输入脉冲频率大小由硬件和软件滤波的影响,一般可达到几十KHZ
    答:所谓环形计数器是指计数器的计数时无止境的,可以不断地计数下去,不过这种计数是沿着一定的计数方式循环计数的,即叫环形计数器。计数当前值不断地增加,当增加到32767时(16位计数器),如果在增加一次脉冲,当前值不是32768而变成了-32768.继续计数,就会由-32768变为0,在继续由0变为32767.如此循环,永无止境。减法计数则相反。环形计数器的计数如下图所示。
    26、我的一个学友说,计数器的设定值可以设定为负数,是吗?那设置为负数是什么意思?
    答:当计数器为32位加减计数器时,其设定值可以设置为负数,加减计数器时一个环形计数器,其当前值在到达预置设定值后,仍然会发生变化,是按照环形计数方式进行的。可以计数到负值。因此,加减计数器是可以设定为负值的。设定值为负值仅仅是一个计数比较设置点而已。没有特别的含义。
    27、计数器在计数过程中,突然改变了计数器的当前值,计数器会如何继续工作?
    答:计数器在计数过程中,突然改变了当前值,则会对计数过程产生一定的影响。对增量计数器来说,如果改变后的当前值继续计数下去。如果改变后的当前值大于设定值,则当前值马上变为设定值,且触点也马上动作。对32位加减计数器,计数器会在改变后的当前值继续计数下去,触点不会动作,触点动作的时间仍按原有规定执行。
    答:所有计数器必须用RST指令对其进行复位。另外,增量计数器在断电后会自动复位。
    29、计数器的预置设定值是不是输入动作脉冲到了设定值后,其触点就动作?
    答:对增量计数器来说,一般是这样理解的,即计数从0开始,到达设定值后触点动作,可以达到计数的目的。但对于32位加减计数器来说。其设定值实际上是一个比较值,计数中间可以任意改变其方向,形成加减计数器。当前值达到比较设定值时,触点才按规定执行动作。
    30、对于增量计数器,他的设定值是与触点动作的关系,我感觉很清楚,可是对于32位加减计数器,我始终弄不懂触点动作的规律,老师,你能给我讲一下吗?
    答:的确,32位加减计数器的触点动作手册上写的不是很清楚,其动作规律也的确复杂一些,加减计数器的触点动作分为加计数和减计数到达的不同,触点动作对常开触点(常闭触点相反)来说,在加计数到达设定值时,触点动作,由OFF变为ON,如果原来为ON,则保持为ON。在减计数到达设定值时,触点由ON变为OFF,如果原来为OFF,则保持为OFF。无论是在加计数还是在减计数。如果给计数器RST信号,计数器当前值马上复位为0,期触点也恢复原态。
    31、当计数器达到设定值后,如果仍然有脉冲信号输入,其当前值会变化吗?
    答:当计数器计数到达设定值后,如果仍然有脉冲输入,增量式计数器则保持当前设定值不变,而32位加减计数器仍然发生计数变化。
    32、计数器对技术脉冲波形有什么要求吗?如图两种脉冲波形都能计数吗?
    答:计数器对计数脉冲波形没有任何要求,与脉冲波形是不是周期脉冲,脉冲周期的大小均没有任何关系。它只对输入驱动条件的ON/OFF进行统计而已。

-专业服务平台,设备交易网,仪器行业专业网络宣传媒体。

第一种使用基本指令中的N定时器;
第二种则在FB块的静态变量中定义数据类型是IEC_TIMER的变量"t1",然后指定定时器的类型也是TON;
如图中所示,那么请问这两种的区别在哪里,在使用中更推荐哪一种方式,或者还有哪些定时器实现的方法呢?

我要回帖

更多关于 plc定时器最长时间 的文章

 

随机推荐