“S7-200的子程序中,有那些指令不可以采用? 我做了好多子程序,有些子程序反复调用没有任何问题,但是有一个子程序,在调用时,有每次每个循环里面第一个调用该子程序的命令起作用,而第二次调用则完全无效。 如果把这个子程序再重新复制一下,也是一个子程序,里面内容完全不一样,仅仅子程序号不同, 则两个调用都正常。是否是因为子程序中用到了EU命令?用到R或S应该没有问题吧。”
S7-200 PLC 2009年系统手册中文版204页说:“当子程序在同一个周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器指令。”
S7-300/400可以将定时器、计数器的编号设置为块的输入参数,在每次调用时指定不同编号的定时器和计数器作为实参。S7-200则没有这个功能,只能在子程序中使用固定的定时器编号。如果对多个被控对象多次调用子程序,不同被控对象同时使用同一个定时器计数器,将会产生灾难性的结果。
是否有上升沿和下降沿,必须经过两个扫描周期来判断,即前一个扫描周期读取触发信号,并存储到一个位地址内,再与本次扫描周期的触发信号的状态相比较。
S7-300/400的上升沿、下降沿指令需要指定保存前一扫描周期的位地址。S7-200的上升沿、下降沿指令前一扫描周期的状态是操作系统保存的。但是因为只能保存一个位变量的前一扫描周期的状态,所以子程序在同一个周期内被多次调用时,不能使用上升沿、下降沿指令。
楼主最近还看过