網(wǎng)友秀全說:“我編寫的功能fc1里邊有一個(gè)sr置位復(fù)位塊,在ob1調(diào)用4次fc1,怎么搞也不行,后來我把它改為分開的置位、復(fù)位指令就好了。我怎么也想不明白怎么回事?!?br>下圖是他的fc的局部程序。
首先要注意sr觸發(fā)器用來對(duì)圖中的m0.0置位和復(fù)位,同時(shí)也對(duì)q輸出端可選的bool變量置位和復(fù)位。程序中的m0.0和局部變量#zuudianyuan(主電源)的作用是重復(fù)的,可以只用其中之一。
sr觸發(fā)器有記憶和保持的功能。調(diào)用一次fc1,m0.0用來記憶一臺(tái)設(shè)備的啟動(dòng)、停止命令。調(diào)用兩次fc1,能用m0.0同時(shí)記憶兩臺(tái)設(shè)備的啟動(dòng)、停止命令嗎?當(dāng)然不行。
要想多次調(diào)用fc,其中有記憶功能的變量不能使用絕對(duì)地址,也不能使用局部變量中的臨時(shí)變量。
最簡(jiǎn)單的解決方法是刪除圖中的線圈,將m0.0改為要控制的#zuudianyuan。
對(duì)于s7-300來說,sr方框上的地址可以使用輸出參數(shù)。但是對(duì)于s7-200的子程序(相當(dāng)于s7-300的fc),如果使用輸出參數(shù),多次調(diào)用該子程序時(shí)就會(huì)出錯(cuò)。應(yīng)改為in_out參數(shù)。