quote:[b]以下是引用1&0在2012-04-12 09:46:03的发言:
[COLOR=RED]When a subroutine is called more than once in the same cycle, the edge/up, edge/down, timer and counter instructions should not be used.
当子程序在同一个周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器指令。[/COLOR]
系统手册,204页 2008年8月版
2009年系统手册中文版204页有同样的话:“当子程序在同一个周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器指令。”
S7-300/400可以将定时器、计数器的编号设置为块的输入参数,在每次调用时指定不同编号的定时器和计数器作为实参。S7-200则没有这个功能,只能在子程序中使用固定的定时器编号。如果对多个被控对象多次调用子程序,不同被控对象同时使用同一个定时器计数器,将会产生灾难性的结果。
S7-300/400的上升沿、下降沿指令需要指定保存前一扫描周期的位地址。S7-200的上升沿、下降沿指令前一扫描周期的状态是操作系统保存的。但是因为只能保存一个位变量的前一扫描周期的状态,所以子程序在同一个周期内被多次调用时,不能使用上升沿、下降沿指令。
我认为系统手册是我们使用产品的依据,用户应该遵循手册中的规定,而不是挑战它,除非你是顶尖高手,对有关的问题有透彻的了解。