昭通市西門子中國總代理昭通市西門子中國總代理
應(yīng)用采用集成wincc方式做,從集成方便考慮,,1.需要跟上位機(jī)交換數(shù)據(jù)的功能塊,,就用FB,畢竟FB管腳可以設(shè)置s7_m_c屬性,,跟上位交換的數(shù)據(jù)全部為背景數(shù)據(jù)自動編譯上去了,。而且管腳不用全部去填寫。2.只是單純的下位數(shù)據(jù)計算,,用fc,。3。功能區(qū)劃分用fc,,例如FC100為套設(shè)備所有程序,,F(xiàn)C200為第二套設(shè)備所有程序。 檢驗FC,、FB編寫水平的一個重要指標(biāo)是它的可移植性(可重用性),。編程員在*的編程過程中,,不斷積累了大量的FC和FB。如果它們內(nèi)部全部使用局部變量,不用全局變量,,不作任何修改,就可以將它們移植到其他項目,,通過調(diào)用與被調(diào)用的關(guān)系,,可以迅速生成新的項目程序如果子程序的任務(wù)不能在一個掃描周期完成,需要在兩次調(diào)用之間保存某些變量的值,,則應(yīng)選用FB,,而不是FC。因為這種情況下FC需要用全局變量(例如共享數(shù)據(jù)塊和M區(qū))來保存這些變量的值,,但是這樣會影響FC的可移植性,。如果塊的內(nèi)部使用了全局變量,在移植時需要考慮每個塊使用的全局變量是否會與別的塊產(chǎn)生地址沖突(同一地址重復(fù)使用)。如果這樣的FC很多,,移植是附加的工作量將會很大,,也很容易出錯。
前面講了可以給功能塊用背景數(shù)據(jù)塊保存的局部變量(不包括TEMP)設(shè)置初始值,。如果變量需要設(shè)置的值與它的初始值(或稱默認(rèn)值)相同,,調(diào)用FB時則不用設(shè)置這類輸入、輸出參數(shù)的值,。如果在OB100中設(shè)置了變量的初始值,,以后調(diào)用它們時可以不設(shè)置該變量的值,這時將使用背景數(shù)據(jù)塊中用OB100設(shè)置的初始值,,或上一次執(zhí)行FB后該變量的值,。FC的變量因為沒有的存儲區(qū),調(diào)用FC時應(yīng)給所有的形參實參,。
與FB相比,,F(xiàn)C的局部變量多了一個RET_VAL(返回值)。它實際上是輸出參數(shù),。默認(rèn)的情況它是沒有數(shù)據(jù)類型的,,在調(diào)用FC時也看不到這個輸出參數(shù)。只要在局部變量表中設(shè)置RET_VAL的數(shù)據(jù)類型,,在調(diào)用時就能看到它在方框的右邊出現(xiàn),,所以它是一個輸出參數(shù)。我很長時間一直不解為什么要設(shè)置這樣一個局部變量,,而不是將它納入輸出參數(shù),。后來偶然在一個資料上看到,這時為了和PLC編程語言的標(biāo)準(zhǔn)IEC 6116-3一致而設(shè)置的,。功能FC的英語為Function,,也可以像博途那樣,將Function翻譯為函數(shù),。IEC的函數(shù)和C語言的函數(shù)一樣,,執(zhí)行后會產(chǎn)生一個返回值。IEC 6116-3的FC也只有一個返回值,,不用設(shè)置它的名稱,,返回值的名稱和FC的名稱相同。因此IEC 6116-3的FC只有一個輸出參數(shù),。西門子的FC沒有對輸出參數(shù)個數(shù)的限制,,比IEC 6116-3的FC更好用一些。我認(rèn)為其實沒有必要為了和IEC 6116-3一致而設(shè)置一個RET_VAL,,這沒有什么實質(zhì)性的意義,,反而容易把初學(xué)者弄糊涂,。
在S7-200中,沒有FB也沒有背景數(shù)據(jù)塊,;在S5中也沒有背景數(shù)據(jù)塊,;可它們的子程序都能實現(xiàn)需要2個周期或幾個周期實現(xiàn)的功能;在S7-300,、400中并非只有FB才能實現(xiàn),,同樣FC也能實現(xiàn)并進(jìn)行移植。
西門子PC/PPI電纜哪里有賣
在實際項目應(yīng)用中:選擇FC還是選擇FB,,還沒有看到給出明確的定論,。其實也沒有必要下定論,用戶可以根據(jù)對其掌握的熟練程度進(jìn)行選擇應(yīng)用,。FB需要對其聲明的形參(TEMP變量除外)生成相應(yīng)的背景數(shù)據(jù)塊,,而FC只需要對其形參分配內(nèi)存(共享DB或者位存儲器M);對于同一個功能而言,,F(xiàn)C消耗的內(nèi)存資源較少,。如果WinCC或者PCS7集成于STEP7中,F(xiàn)B的優(yōu)勢較為明顯,,F(xiàn)B形參可以設(shè)置s7_m_c屬性,顯得較為方便,,但付出了較大內(nèi)存的代價,。
綜上所述,使用FB可少設(shè)置大量的參數(shù),,在FB的參數(shù)很多的情況下(例如PID控制器FB41),,用戶可以減少調(diào)用時設(shè)置參數(shù)的工作量。 FC有兩種功能,,一種是優(yōu)化程序結(jié)構(gòu),,使程序結(jié)構(gòu)能夠清晰明了;還有一種可以編寫中間變量不需要保存的程序(一般是簡單程序),,可以重復(fù)調(diào)用,,減少工作量;FB好處就是可以暫存中間變量,,可以讓程序在幾個循環(huán)周期內(nèi)正確的執(zhí)行,,但是用分配不同的DB給它,一般情況下DB都是夠用,,所以寫子程序都用FB來寫,,再按功能或者結(jié)構(gòu)分FC來調(diào)用這些FB
一開始用300的時候,全部用FC塊,,發(fā)現(xiàn)也全部能完成任務(wù),。我不習(xí)慣于一開始編程的時候就用M區(qū),。后來逐漸了解了FB 塊。在應(yīng)用中發(fā)現(xiàn)用FB更方便,。比如當(dāng)你需要一個新的變量的時候,,你只需要在FB 的靜態(tài)變量里創(chuàng)建就可以了。不用像FC 那樣需要自己創(chuàng)建一個 單獨(dú)的DB塊,。剩去了一步工作?,F(xiàn)在,在有WINCC 的場合,,更加堅定地去使用FB ,。因為FB 可以設(shè)置S7_M_C .用多了FB的靜態(tài)變量,開始擔(dān)心使用FC TEMP 區(qū)會不會造成錯誤,。