论文部分内容阅读
摘 要:西门子S7-200PLC具有接通延时、记忆延时、断开延时和1ms、10ms、100ms定时器等功能。在程序设计中,合理使用不同功能和不同分辨率的定时器,可以使我们的程序功能更完善实现更顺利,同时定时器除了定时功能外,还可以灵活运用,实现其它功能。
关键词:S7-200;PLC;编程;定时器
西门子S7-200 PLC内部,按功能分有三类定时器,分别是接通延时定时器(TON)、有记忆接通延时定时器(TONR)、断开延时定时器(TOF);按定时分辨率分同样有三类定时器,分别是1ms、10ms、100ms定时器。每个定时器有2个输入端,分别是使能输入端和预设值输入端。当使能输入端接通时,接通延时定时器(TON)和有记忆接通延时定时器(TONR)开始计时,当定时器的当前值大于等于预设值时,该定时器位被置位。当使能输入端断开时,接通延时定时器的当前值清0,而有记忆接通延时定时器的当前值则保持不变,在下次使能输入端接通时继续计时,利用这一点,我们可以用有记忆接通延时定时器来统计使能输入端的接通时间,在再次使用有记忆接通延时定时器之前,需要用复位指令清除当前值。对于断开延时定时器(TOF),当使能输入端接通时,定时器位立即接通,并把当前值设为0;当使能输入端断开时,定时器开始计时,当达到预设时间时,定时器位断开,并停止计时。由于断开延时定时器必须用输入端从接通到断开的跳变启动计时,如果输入端接通持续时间短于预设值,定时器位将保持接通,下次输入端接通后断开时才开始计时,在设计程序时需注意这一点。
西门子PLC程序执行一个循环称为一个扫描周期。CPU在一个扫描周期内执行以下任务:读输入、执行程序、处理通讯请求、执行CPU自诊断测试、写输出。这些任务是按一定顺序执行,而不是并行处理,在每个扫描周期开始时将数字输入值写入输入映像寄存器中,执行程序阶段则逐条执行指令,处理通讯请求阶段处理通讯端口的信息,自诊断阶段则检查硬件和程序存储器,在扫描周期的末尾将输出映像寄存器中的数据写入数字输出点,如图一所示。中断程序例外,它可以在扫描周期任意时间执行。
在同一个程序中,一个定时器不能同时作为TON和TOF使用。对于不同分辨率的定时器,除了定时最大值不同外,在程序中使用方法略有区别。1ms定时器启动后,定时器当前值每隔1ms刷新一次,不与扫描周期同步。10ms定时器启动后,定时器当前值在每次扫描周期的开始刷新,即在一个扫描周期内定时器位和当前值保持不变。100ms定时器启动后,定时器在每次扫描周期的开始将累计的100ms间隔数加到当前值中,但只有定时器指令执行时,其当前值才刷新,也就是说,如果100ms定时器激活,但在某一个周期没有执行定时器指令,定时器的当前值不刷新,从而造成时间丢失;同样的,如果在一个扫描周期内多次执行同一定时器指令,就会造成多计时间,因此在设计程序时必须保证同一个100ms定时器指令每个扫描周期只执行一次。
由上述描述我们可知,PLC定时器的定时时间是有误差的,在程序设计合理时,其误差最大值由其分辨率来决定。结合定时器更新方式和CPU的扫描周期,我们可以看出,对于1ms和10ms定时器,不可以用定时器自己的定时器位控制自身,而100ms定时器可以这么使用。
定时器除了定时功能外,还可以灵活运用,实现其它功能。如利用定时器实现硬件滤波,去除瞬间抖动,防止误操作;还可以利用定时器预设值和当前值实现不同周期和占空比的脉波输出,如图二程序和波形图所示,实现了周期0.5秒占空比0.4的脉冲输出。
在PLC程序设计中,合理使用定时器,可以避免不必要的问题。在我部门发射机自动化监控程序设计过程中,有一部需要使用自由口通信来采集发射机的模拟量和状态,它们采用了不同的采集频率,因此我们分别使用了两个定时器来控制。在调试过程中我们發现采集的数据误码率非常高,经常连续数次采集都是错误数据,排除了硬件问题后,我们仔细分析程序,发现两个定时器的启动不同步,造成的后果就是有可能两次采集间隔时间太短。我们修改了程序,将两个定时器启动同步后再测试,误码率大大降低,完全可以满足我们监控需求。
总之,在PLC程序设计中,合理使用不同分辨率的定时器,可以使我们的程序功能更完善实现更顺利。
参考文献:
[1]《S7-200系统手册》
作者简介:
宫兴广(1967-),男,汉族,山东济南人,本科,济南广播电视台科长,初级职称,主要研究方向:无线电工程。
关键词:S7-200;PLC;编程;定时器
西门子S7-200 PLC内部,按功能分有三类定时器,分别是接通延时定时器(TON)、有记忆接通延时定时器(TONR)、断开延时定时器(TOF);按定时分辨率分同样有三类定时器,分别是1ms、10ms、100ms定时器。每个定时器有2个输入端,分别是使能输入端和预设值输入端。当使能输入端接通时,接通延时定时器(TON)和有记忆接通延时定时器(TONR)开始计时,当定时器的当前值大于等于预设值时,该定时器位被置位。当使能输入端断开时,接通延时定时器的当前值清0,而有记忆接通延时定时器的当前值则保持不变,在下次使能输入端接通时继续计时,利用这一点,我们可以用有记忆接通延时定时器来统计使能输入端的接通时间,在再次使用有记忆接通延时定时器之前,需要用复位指令清除当前值。对于断开延时定时器(TOF),当使能输入端接通时,定时器位立即接通,并把当前值设为0;当使能输入端断开时,定时器开始计时,当达到预设时间时,定时器位断开,并停止计时。由于断开延时定时器必须用输入端从接通到断开的跳变启动计时,如果输入端接通持续时间短于预设值,定时器位将保持接通,下次输入端接通后断开时才开始计时,在设计程序时需注意这一点。
西门子PLC程序执行一个循环称为一个扫描周期。CPU在一个扫描周期内执行以下任务:读输入、执行程序、处理通讯请求、执行CPU自诊断测试、写输出。这些任务是按一定顺序执行,而不是并行处理,在每个扫描周期开始时将数字输入值写入输入映像寄存器中,执行程序阶段则逐条执行指令,处理通讯请求阶段处理通讯端口的信息,自诊断阶段则检查硬件和程序存储器,在扫描周期的末尾将输出映像寄存器中的数据写入数字输出点,如图一所示。中断程序例外,它可以在扫描周期任意时间执行。
在同一个程序中,一个定时器不能同时作为TON和TOF使用。对于不同分辨率的定时器,除了定时最大值不同外,在程序中使用方法略有区别。1ms定时器启动后,定时器当前值每隔1ms刷新一次,不与扫描周期同步。10ms定时器启动后,定时器当前值在每次扫描周期的开始刷新,即在一个扫描周期内定时器位和当前值保持不变。100ms定时器启动后,定时器在每次扫描周期的开始将累计的100ms间隔数加到当前值中,但只有定时器指令执行时,其当前值才刷新,也就是说,如果100ms定时器激活,但在某一个周期没有执行定时器指令,定时器的当前值不刷新,从而造成时间丢失;同样的,如果在一个扫描周期内多次执行同一定时器指令,就会造成多计时间,因此在设计程序时必须保证同一个100ms定时器指令每个扫描周期只执行一次。
由上述描述我们可知,PLC定时器的定时时间是有误差的,在程序设计合理时,其误差最大值由其分辨率来决定。结合定时器更新方式和CPU的扫描周期,我们可以看出,对于1ms和10ms定时器,不可以用定时器自己的定时器位控制自身,而100ms定时器可以这么使用。
定时器除了定时功能外,还可以灵活运用,实现其它功能。如利用定时器实现硬件滤波,去除瞬间抖动,防止误操作;还可以利用定时器预设值和当前值实现不同周期和占空比的脉波输出,如图二程序和波形图所示,实现了周期0.5秒占空比0.4的脉冲输出。
在PLC程序设计中,合理使用定时器,可以避免不必要的问题。在我部门发射机自动化监控程序设计过程中,有一部需要使用自由口通信来采集发射机的模拟量和状态,它们采用了不同的采集频率,因此我们分别使用了两个定时器来控制。在调试过程中我们發现采集的数据误码率非常高,经常连续数次采集都是错误数据,排除了硬件问题后,我们仔细分析程序,发现两个定时器的启动不同步,造成的后果就是有可能两次采集间隔时间太短。我们修改了程序,将两个定时器启动同步后再测试,误码率大大降低,完全可以满足我们监控需求。
总之,在PLC程序设计中,合理使用不同分辨率的定时器,可以使我们的程序功能更完善实现更顺利。
参考文献:
[1]《S7-200系统手册》
作者简介:
宫兴广(1967-),男,汉族,山东济南人,本科,济南广播电视台科长,初级职称,主要研究方向:无线电工程。