FC功能塊如何使用
發(fā)布于2022-11-18 13:44
40
1
標(biāo)簽:功能介紹
如果邏輯塊執(zhí)行完后不需要保存它內(nèi)部的數(shù)據(jù),可以用功能FC來(lái)編程。與功能塊FB 相比較,F(xiàn)C不需要配套的背景數(shù)據(jù)塊。
1. 生成功能
用鼠標(biāo)右鍵點(diǎn)擊SIMATIC管理器左邊窗口中的“塊”,執(zhí)行出現(xiàn)的快捷菜單中的“插入新對(duì)象”→“功能”,生成一個(gè)新的功能。在出現(xiàn)的功能屬性對(duì)話框中,采用系統(tǒng)自動(dòng)生成的功能的名稱FC1,設(shè)置梯形圖(LAD)為功能默認(rèn)的編程語(yǔ)言。
2. 功能的局部變量
雙擊SIMATIC管理器中FC1的圖標(biāo),打開程序編輯器(見圖4-16)。
與功能塊的變量聲明表(見圖4-13)相比,功能沒(méi)有靜態(tài)變量(STAT),退出FC后不能保存它的臨時(shí)局部變量。功能多了一個(gè)返回值RET_VAL,它實(shí)際上是一個(gè)輸出參數(shù)。返回值的設(shè)置與IEC6113-3標(biāo)準(zhǔn)有關(guān),該標(biāo)準(zhǔn)的功能沒(méi)有輸出參數(shù),只有一個(gè)返回值。

功能FC1用來(lái)控制發(fā)動(dòng)機(jī)的風(fēng)扇,要求在發(fā)動(dòng)機(jī)運(yùn)行信號(hào)Engine_On變?yōu)?時(shí)起動(dòng)風(fēng)扇,發(fā)動(dòng)機(jī)停車后,用輸出的BOOL變量Fan_On控制的風(fēng)扇繼續(xù)運(yùn)行30s后停機(jī)。
在FCI中,用延時(shí)斷開定時(shí)器S_OFFDT(見圖4-16)來(lái)定時(shí)。在功能的變量聲明表中定義的輸入?yún)?shù)Timer_Function是延時(shí)斷開定時(shí)器的編號(hào),數(shù)據(jù)類型為Timer,在調(diào)用FC1 時(shí)用它來(lái)為不同的發(fā)動(dòng)機(jī)指定不同的定時(shí)器。
3. 功能與功能塊的區(qū)別
FB和FC均為用戶編寫的子程序,局部數(shù)據(jù)均有IN、OUT、IN_OUT和TEMP,臨時(shí)變量TEMP儲(chǔ)存在局部數(shù)據(jù)堆棧中。
1)FC的返回值RET_VAL實(shí)際上是輸出參數(shù),因此有無(wú)靜態(tài)變量(STAT)是二者的局部變量的本質(zhì)區(qū)別,功能塊的靜態(tài)變量用背景數(shù)據(jù)塊來(lái)保存。如果功能有執(zhí)行完后需要保存的數(shù)據(jù),只能存放在全局變量(I/Q、PI/PQ、M、T、C和共享數(shù)據(jù)塊)中,但是這樣會(huì)影響功能的可移植性。如果功能或功能塊的內(nèi)部不使用全局變量,只使用局部變量,不需要做任何修改,就可以將塊移植到其他項(xiàng)目。如果塊的內(nèi)部使用了全局變量,在移植時(shí)需要重新統(tǒng)一分配它們內(nèi)部使用的全局變量的地址,以保證不會(huì)出現(xiàn)地址沖突。當(dāng)程序很復(fù)雜,子程序和中斷程序很多時(shí),這種重新分配全局變量地址的工作量非常大,也很容易出錯(cuò)。如果邏輯塊有執(zhí)行完后需要保存的數(shù)據(jù),顯然應(yīng)使用功能塊,而不是功能。
2)功能塊的輸出參數(shù)不僅與來(lái)自外部的輸入?yún)?shù)有關(guān),還與用靜態(tài)變量保存的內(nèi)部狀態(tài)數(shù)據(jù)有關(guān)。功能因?yàn)闆](méi)有靜態(tài)變量,相同的輸入?yún)?shù)產(chǎn)生的執(zhí)行結(jié)果是相同的。
3)功能塊有背景數(shù)據(jù)塊,功能沒(méi)有背景數(shù)據(jù)塊。只能在功能內(nèi)部訪問(wèn)功能的局部變量,其他邏輯塊和人機(jī)界面可以訪問(wèn)背景數(shù)據(jù)塊中的變量。
4)不能給功能的局部變量設(shè)置初始值,可以給功能塊的局部變量(不包括TEMP)設(shè)置初始值。在調(diào)用功能塊時(shí)如果沒(méi)有設(shè)置某些輸入?yún)?shù)的實(shí)參,將使用背景數(shù)據(jù)塊中的初始值,或上一次執(zhí)行后的值。調(diào)用功能時(shí)應(yīng)給所有的形參指定實(shí)參。
4. 組織塊與其他邏輯塊的區(qū)別
發(fā)生事件或故障時(shí),由操作系統(tǒng)調(diào)用對(duì)應(yīng)的組織塊,其他邏輯塊是用戶程序調(diào)用的。組織塊有自動(dòng)生成的20B臨時(shí)局部數(shù)據(jù),包含了與觸發(fā)組織塊的事件有關(guān)的信息。它們是操作系統(tǒng)提供的。組織塊中的程序是用戶編寫的,用戶可以自己定義和使用組織塊20B 之后的臨時(shí)局部數(shù)據(jù)。