找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3913|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

精通S7-200子程序形參和實參的調(diào)用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:26188 發(fā)表于 2015-5-28 01:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一個完整的程序要實現(xiàn)多個功能,我們可以只用一個主程序來實現(xiàn),還可以分多個子程序單獨來實現(xiàn)再由主程序分別調(diào)用;如果只用一個主程序就會顯得很紛亂,而且調(diào)試修改效率低,而使用子程序可以一目了然,快速的確定問題所在。所以首選使用子程序來編程。


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

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



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


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

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

上邊提到過,因為使用的是全局變量,就不需要再輸入?yún)?shù),這個子程序就是直接調(diào)用的關(guān)系。




下面說一下功能塊中遇到的一些問題:
我們都知道這樣的程序:



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









分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表