標(biāo)題: 精通S7-200子程序形參和實(shí)參的調(diào)用 [打印本頁(yè)]

作者: hujia    時(shí)間: 2015-5-28 01:16
標(biāo)題: 精通S7-200子程序形參和實(shí)參的調(diào)用
一個(gè)完整的程序要實(shí)現(xiàn)多個(gè)功能,我們可以只用一個(gè)主程序來(lái)實(shí)現(xiàn),還可以分多個(gè)子程序單獨(dú)來(lái)實(shí)現(xiàn)再由主程序分別調(diào)用;如果只用一個(gè)主程序就會(huì)顯得很紛亂,而且調(diào)試修改效率低,而使用子程序可以一目了然,快速的確定問(wèn)題所在。所以首選使用子程序來(lái)編程。


   在實(shí)際的項(xiàng)目中有很多類似的功能,像這樣的就可以使用子程序,而不用多次復(fù)制相同的語(yǔ)句,而選擇調(diào)用相同的子程序。
   在編寫(xiě)子程序時(shí),子程序中可以使用全局變量(實(shí)際參數(shù)),而功能塊中用到的都是局部變量L(形式參數(shù)),兩者的另一個(gè)區(qū)別是:在調(diào)用子程序時(shí)不用給子程序任何的輸入,只要一個(gè)使能調(diào)用就可以。而在調(diào)用功能塊時(shí)就要給功能塊輸入一些參數(shù),一般編好的功能塊是有輸入輸出的,至于功能塊中使用了那些變量我們不用去考慮,還有一個(gè)優(yōu)點(diǎn)就是功能塊內(nèi)的變量是自動(dòng)分配的,在變量中想添加一變量時(shí)可以直接插入而不用管它占用了那些變量地址。所以要想實(shí)現(xiàn)某個(gè)功能就可以調(diào)用功能模塊,我們只需要給幾個(gè)參數(shù),然后就直接取輸出就可以了,很方便快捷,這樣下來(lái)我們的程序就是由一個(gè)一個(gè)的功能塊完成了,直觀。就在子程序的下圖內(nèi)創(chuàng)建我們需要的局部變量:

   子程序變量名稱中的“#”表示局部變量,是編程軟件自動(dòng)添加的。輸人局部變量時(shí)不用輸入
“#”
號(hào)。不能使用跳轉(zhuǎn)語(yǔ)句跳人或跳出子程序。



  在主程序中調(diào)用子程序的功能塊:


只要在子程序中寫(xiě)一遍程序,在主程序內(nèi)可以多次調(diào)用并填寫(xiě)實(shí)際數(shù)據(jù),這樣就可以減少工作量。

   在主程序中調(diào)用使用全局變量的子程序 :

上邊提到過(guò),因?yàn)槭褂玫氖侨肿兞,就不需要再輸入(yún)?shù),這個(gè)子程序就是直接調(diào)用的關(guān)系。




下面說(shuō)一下功能塊中遇到的一些問(wèn)題:
我們都知道這樣的程序:



如果I0.0閉合,Q0.0輸出確實(shí)0;I0.0斷開(kāi),Q0.0輸出是1.在功能塊中也有這樣的特點(diǎn),就是功能塊的輸出變量如果不能執(zhí)行就會(huì)最后輸出為零,無(wú)論之前是否輸出變量賦值。所以我們?cè)诰幊虝r(shí)要注意,功能塊是否執(zhí)行的判斷語(yǔ)句不要放到功能塊的內(nèi)部開(kāi)頭部分,而要放到功能塊的外部,變?yōu)槭欠裾{(diào)用功能塊而不是調(diào)用后再判斷是否執(zhí)行。














歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1