您现在的位置是:首页 > PLC技术 > PLC技术

S7-200 PLC定时器功能及定时器指令的实现

来源:艾特贸易2017-06-05

简介首先就是要实现一个实时时钟,在程序中使用 C8051F020 的 TIMERO 16 位定时/计数器方式产生 1ms 定时中断。由于 PLC 系统中需要 1ms 定时器个数较少,所以在中断程序中处理 PLC 的 1ms 定时

    首先就是要实现一个实时时钟,在程序中使用C8051F020TIMERO 16位定时/计数器方式产生1ms定时中断。由于PLC系统中需要1ms定时器个数较少,所以在中断程序中处理PLC1ms定时器。对于10ms定时器,以变量记录一个扫描周期内10ms总计数。而对于100ms定时器,则是以变量来记录两次定时器指令执行的时间间隔的100ms总计数。    另外由于S7-200还提供以1s1min为周期的时钟脉冲,所以系统也在此中断程序中实现。如图1-72所示。
PLC运行系统定时中断服务子程序设计流程
    1-72    PLC运行系统定时中断服务子程序设计流程    PLC系统需要来看,三种PLC的定时器的个数都是不同的,而且由于100ms定时器用户需要使用的最多,因此系统需要提供的也最多。以S7-200为例,有256个定时器,其中1ms定时器有4个,10ms定时器有16个,其余236个为100ms定时器,并且每种定时器还有具体功能上的分类(通电延时、断电延时、保持型通电延时等)。因此使用C51实现PLC运行系统时就要考虑定时器实现上的可扩展性。另外,由于每个定时器都必须独立运行,相关的参数比较多,例如,定时器的工作状态(启动与否)、相应线圈的动作状态(闭合与否)、定时器的设定值、定时器的当前值等。综合考虑以上因素,可使用在C8051F020内部4KB RAM(使用关键字xdata定义)里存储的结构体变量来实现多个定时器状态及参数的记录。    结构体TIMER包括5个成员,分别是定时器类型(timer type)、定时器预设值(set value)、定时器当前值(current value)、定时器线圈状态(action state)以及定时器工作状态(启动与否)(working start)。用户使用的每一个定时器都是一个TIMER结构体变量。总结起来,定时器功能实现程序都以C51函数形式提供给上位机,主要包括以下三项。    ①定时中断服务子程序。使用单片机的定时器TIMERO获得1ms中断,对于1ms定时器处理立刻进行。对于10ms定时器,记录一个扫描周期内的累计计数;对于100ms定时,则记录其指令执行周期内的累计计数,图1-72为定时中断服务子程序流程图。
定时器处理子程序
    1-73    定时器处理子程序    ②定时器处理子程序。程序流程图如图1-73所示,程序中使用结构体变量指针作为参数,用户使用几个定时器就在相应位置调用几次此子程序。对于不同分辨率定时器,可使用同一个处理子程序,但是调用此程序的位置不尽相同,对于1ms定时器,子程序应该在1ms中断子程序内调用,1ms定时器个数不能够太多(提供Ims定时器的个数越多,定时中断服务子程序越长,对定时精度影响越大);对于10ms定时器,需要在每个扫描周期的开始调用定时器处理子程序;对于100ms定时器,则在执行定时器指令的时候,调用定时器处理子程序。对于中断子程序中记录三种定时时段的总计数(见图1-72)的清零处理:1ms累计计数变量在定时中断服务子程序中计到满10(10ms)时清零,一个扫描周期内10ms累计计数在扫描周期初定时器累加刷新完毕时清零,一个扫描周期内100ms累计计数则在扫描周期最后清零(在保证多定时器同时使用的情况下,误差可以降到最低)。    ③定时器指令实现的子程序。指令对三种定时器都是相同的,有三种:TONTOF以及TONR,分别是通电延时定时器指令、断电延时定时器指令以及保持型通电延时定时器。但是针对三种定时器的类型不同,要进行不同的处理,这一点前面也已经分析过了。定时器指令实现相关C51函数如表1-5所示。
定时器TON指令实现子程序
    1-74    定时器TON指令实现子程序    1-5    定时指令实现相关C51函数
定时指令实现相关C51函数
    TON指令为例,程序流程如图1-74所示,此子程序使用定时器指令的两个参数:固定定时器的结构体变量指针及设定值作为参数,图中虚线框的意思是对于三种定时器都要运行此部分程序。    用户使用定时器时要注意,由于可以在1ms内的任意时刻启动定时器,预设值必须设为比最小要求定时器间隔大一个时间间隔,例如,使用1ms定时器时,为了保证时间间隔至少为56ms,则预设时间值应设为5710ms100ms定时器有同样的问题,例如,使用10ms定时器时,为了保证时间间隔至少为140ms,则预设时间值应设为15。使用100ms定时器时,为了保证时间间隔至少为2100ms,则预设时间值应设为22    在分析研究S7-200的三种定时器的定时器位及定时器当前值刷新原理的基础上,介绍了如何对于PLC定时器功能及指令进行C51实现,并且给出了关键程序的设计流程图。