西门子S7-200 plc子程序反复调用时 子程序中的定时器,计数器对各次调用有没有影响?

子程序中用到了几个定时器,而这个子程序会被主程序调用好几次。就会有的这种调情况:有的中子程序里的定时器动作了,而另一些调用中,定时器不满足执行条件不应该动作,这时动作的定时器会对这个不满足执行条件的产生影响吗?

1、反复调用子程序,对定时器和计数器是有影响的,定时器会不停的响应最近的一次调用。计数器的影响是把各次的调用逻辑操作做总的累加或累减。
2、对于200来说定时器和计数器不能做成接口函数,但是可以做成FB类型的实参函数调用。
3、S7—200PLC的定时器为增量型定时器,用于实现时间控制,可以按照工作方式和时间基准(时基)分类,时间基准又称为定时精度和分辩率。
1) 工作方式
按照工作方式,定时器可分为通电延时型(TON)、有记忆的通电延时型(TONR)、断电延时型(TOF)3种类型,我们要根据实际需要来选择。
2) 时基标准
按照时基标准,定时器可分为1ms.10ms.100ms3种类型,不同的时基标准,定时精度.定时范围和定时器的刷新方式不同,我们使用的时候要注意它们之间的区别。
3) 定时器工作方式及类型

通电延时型(TON)
使能端输入有效时,定时器开始计时,当前值从0开始递增,大于或等于预置值时,定时器输出状态位置1(输出触点有效),当前值的最大值为32767。使能端无效时,定时器复位(当前值清零,输出状态位置0)。
有记忆通电延时型(TONR)
使能端(IN)输入有效时,定时器开始计时,当前值递增,当前值大于或等于预置值(PT)值,输出状态位置1。使能端输入无效时,当前值保持,使能端再次接通有效时,在原记忆值的基础上递增计时。有记忆通电延时型定时器采用线圈的复位指令(R)进复位操作,当复位线圈有效时,定时器当前值清零,输出状态位置0。
断电延时型(TOF)
使能端(IN)输入有效时,定时器输出状态位立即置1,当前值复位。使能端断开时,开始计时,当前值从0递增,当前值达到预置值时,定时器状态位复位置0,并停止计时,当前值保持。
4、西门子S7-200PLC的计数器共有255个计数器(不包括高速计数器)可以
使用,计数的形式可以分为“加计数”、“减计数”与“加减计数”3类。
1)加计数(CTU)
加计数是通过获取计数输入信号的上升沿进行加法计数的计数方法。计数输
入信号每出现一次上升沿,计数器从0开始加“1”,当计数达到设定值(PV)时,
计数器的输出触点接通。计数达到设定值如果继续输入计数信号,计数值仍然增加,输出触点保持接通状态。计数器具有清除信号(R)输入,当清除信号为“1”时,现行计被清
“0”,设定值写入,输出触点强制断开。
2)减计数(CTD)
减计数是通过获取计数输入信号的上升沿进行减法计数的计数方法。
计数输入信号每出现一次上升沿,计数器从设定值开始减“l”,当现行计数值减到“0”时,计数器的输出触点接通。计数值为“0”后如果继续输入计数信号,计数值保持“0”,输出触点保持接通状态。计数器具有清除信号(R)输入,当清除信号为“1”
时,设定值被写入并作为现行计数值,输出触点强制断开。
3)加减计数(CTUD)
加减计数具有加计数与减计数两个输入端,通过获取对应计数输入信号的上升沿,进行加法、减法计数。加减计数的本质与加计数相同,计数输入信号每出现一次上升沿,计数器从0开始加“1”,当计数达到设定值(PV)时,计数器的输出触点接通。计数达到设定值如果继续输入计数信号,计数值仍然增加,输出触点保持接通状态。当现行值加到最大值32767后,如果再输入加计数信号,现行值变为-32768,再继续进行加计数。同时,减计数输入信号也起作用,减计数输入每出现一次上升沿,计数器从现行值开始减“1”。当现行值减到最小值-32768后,如果再输入减计数信号,现行值变为+32767,再继续进行减计数。计数器具有清除信号(R)输入,当清除信号为“l”
时,现行计数值被清“0”,设定值写入,输出触点强制断开。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-04
这就是定时器不能再子程序中供多次调用的原因,解决这个子程序内用形参来传递定时器的方法就是自己制作定时器,用V区来计时,然后在子程序内调用系统时钟来递增,这样就能自由发挥了。一种情况下定时器可以放在子程序中调用,就是主程序每次扫描都只调用一次且每次调用一个子程序。追问

这样子行吗?
还有不明白的地方:1、如何在子程序中使用常数。2、刚调用子程序时局部变量的初始值是什么(都是零吗)?返回主程序后,子程序中各局部变量释放是指数值归零、状态复位吗?3、局部变量表中只能定义16个变量?不够用怎么办?
Network 1 // 网络标题
// 网络注释
LD SM0.0
LPS
A SM0.5
INCW LW3
LPP
AW>= LW3, LW0
= L2.0

追答

1)子程序中使用常数就你直接写aw>= lw2, 200
2)子程序局部变量初始化需要自己写,一般是用外部形参,系统默认不是零,是LW的上次调用赋值,子程序使用完LW后是仍在那里不管他
3)如果参数需要大于60Byte的数据区,可以传递数据块(连续的比如LW0-LW98)的首地址指针到子程序内,子程序使用取地址运算*,来操作变量

追问

手上没有PLC 试不了,上面写的定时器有没有问题?再就是如果参数大于16个就不能在局部变量表中定义了,对不?

追答

建议去有硬件的教室实地操作,毕竟模拟器官方的没有给出,必须用硬件,局部变量表一共64Byte,真正可以使用60Byte,如果超出60Byte的话建议用符号表来定义一个数据块,然后把数据块首地址指针传入子程序,那么子程序内调试的话就用符号表中的变量了,可以用状态表监控

本回答被网友采纳
第2个回答  2015-07-14
肯定是有影响的,主程序里条件接通,子程序被调用,子程序里的定时器或计数器才可以工作
龙丰自动化
第3个回答  2012-05-04
在S7-200的子程序中,计数器,定时器貌似只能用-绝对地址-赋值(300/400中可以用-符号-赋值),也就是说,它是个全局变量,在其它程序调用中,对应触点肯定已经改变了,但调用条件不满足,应该没有输出!追问

对啊,子程序中如果是局部变量的话返回主程序后都会复位的,但定时器不是一全局变量吗?不会在另外的调用中直接保持当前的状态吗?

第4个回答  2012-05-04
不会

s7200多个子程序L存储单元规则
子程序不能同时重复使用。S7-200 PLC 2009年系统手册中文版204页说:"当子程序在同一个周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器指令。有些子程序反复调用没有任何问题,但是有一个子程序,在调用时,有每次每个循环里面第一个调用该子程序的命令起作用,而第二次调用则完全无效。

请问西门子PLC的S7-200中的定时器,上次定时没清零,会影响下次定时...
这种时候(在到达预定时间后和到达最大计数值前又需要定时)应选用其他定时器定时,因为一个定时器在程序中只使用一次。西门子PLC的S7-200中的定时器有100多个,干嘛盯着一个不放呢!这样编程是不对的!

西门子S7\/200的PLC。用时钟指令控制。使其在8:00~23:00运行急求求详细梯...
M0.0就是输出控制点;时间直接在[菜单]-[PLC]-[实时时钟]里设置。

西门子PLC是如何做上升沿逻辑判断的?
边沿检测是靠检测两个相邻扫描周期的状态来实现的。西门子PLC手册里强调“当子程序在同一个周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器指令。”原因是重复调用的 S7-200的子程序的边沿触发指令无法正确记录上一周期的状态。如果子程序只调用一次的话沿指令可以正常使用,其效果等同于写...

告别混乱,西门子PLC定时器讲解
这通常是由于使用的定时器号与定时器类型不匹配造成的。另外,子程序中的定时器和计数器不工作或工作异常,可能是因为在同一时刻被多次调用或不同子程序间共享同一定时器资源导致。通过了解和正确应用定时器的功能和注意事项,用户可以更高效地实现对时间控制的需求,确保程序的稳定性和可靠性。

PLC中的定时器 计数器的使用个数受限制吗?
有限制的,不同品牌的PLC,计数器和定时器的数量也不一样,同一品牌不同型号的数量有时也不相同。一般都有很多,足够使用。但触点数使用没有限制。

关于西门子s7-200plc子程序重复调用的问题
不能多次调用 想多次调用里边需要全是临时变量 300没有这个问题

西门子S7-200 SMART PLC功能指令学习及实例分析
S7-200 SMART PLC 提供了丰富的功能指令,包括定时器、计数器和循环指令,以满足各种控制需求。首先,对于定时器,有接通延时定时器(TON)、保持型接通延时定时器(TONR)和断开延时定时器(TOF)。定时器的编号与分辨率需根据具体型号确定,它们在工业控制中常用于定时操作和延时控制。例如,TON可以用来设定一...

西门子PLC S7-200程序里带记忆延时接通继电器问题
1ms,10ms和100ms的都可以自己刷新的,刚才我用你的方法试验了一次,是可以驱动计数器计数的,你在仔细查看一下你的程序,估计是你的程序存在问题! 编程的时候考虑一下时序的问题(即扫描的先后顺序)。程序里很多的故障点出现在时序方面!!!

西门子plc s7-200 主程序和子程序局部变量占用相同地址有什么影响
他们的影响在于:系统不会自动清除局部(临时)区域的内容,因此,当你在于主程序或者子程序中调用局部数据时,如果不遵守以下原则,可能会读到非正确的数据。这个原则就是:对于临时区数据,遵循先赋值,后使用的原则。

相似回答