我們有時(shí)需要多次調(diào)用某些功能塊,每次調(diào)用都需要生成一個(gè)背景數(shù)據(jù)塊,但是這些背景數(shù)據(jù)塊中的變量又很少,這樣在項(xiàng)目中就出現(xiàn)了大量的背景數(shù)據(jù)塊“碎片”。在用戶程序中使用多重背景可以減少背景數(shù)據(jù)塊的數(shù)量。
S7-1200的定時(shí)器和計(jì)數(shù)器都是功能塊,使用它們時(shí)也需要指定背景數(shù)據(jù)塊。S7-1200也能使用多重背景。
《S7-300/400 PLC應(yīng)用技術(shù)》的“發(fā)動(dòng)機(jī)控制”例程中,用FB1控制汽油機(jī)和柴油機(jī),分別使用了背景數(shù)據(jù)塊DB1和DB2。在例程“多重背景”的FB10的變量聲明表中聲明數(shù)據(jù)類型為FB 1的兩個(gè)靜態(tài)變量,它們就是所謂的多重背景。它們具有FB1的全部屬性,包括程序和局部變量,它們的數(shù)據(jù)存儲(chǔ)在FB10的背景數(shù)據(jù)塊DB10中。因此使用多重背景可將多次調(diào)用FB1的背景數(shù)據(jù)存放在FB10的背景數(shù)據(jù)塊中。
有個(gè)讀者在學(xué)習(xí)多重背景的時(shí)候問(wèn)我:“我按書(shū)中做的例子中,就是汽油機(jī)和柴油機(jī)控制的例子,在FB10中定義靜態(tài)變量時(shí),變量的數(shù)據(jù)類型為FB1,定義后變?yōu)樗姆?hào)“發(fā)動(dòng)機(jī)控制”,為什么這幾個(gè)字是紅色的??” 他同時(shí)把有問(wèn)題的項(xiàng)目文件發(fā)給我。
圖1:
打開(kāi)他發(fā)來(lái)的項(xiàng)目,發(fā)現(xiàn)FB10的屬性有問(wèn)題。
下面是我的回答:“這幾個(gè)字為紅色表示定義的這個(gè)靜態(tài)變量有問(wèn)題。在管理器里用右鍵點(diǎn)擊FB10,執(zhí)行出現(xiàn)的快捷菜單中的“屬性”命令,在“屬性”對(duì)話框可以看到“無(wú)多實(shí)例能力”(無(wú)多重背景功能)。”
圖2:
為了解決這個(gè)問(wèn)題,在生成FB10的時(shí)候一定要選中“多重背景功能”多選框。
圖3:
用郵件把上述回答發(fā)給了他,他來(lái)郵件說(shuō)按我的建議重新生成有多重背景功能的FB10后,還是不能生成數(shù)據(jù)類型為FB1的靜態(tài)變量。他把修改后的項(xiàng)目發(fā)給了我。
經(jīng)檢查我發(fā)現(xiàn)他生成的FB1也沒(méi)有多重背景功能,問(wèn)題可能就出在這里。重新生成有多重背景功能的FB1后,就可以在FB10中生成數(shù)據(jù)類型為FB1的多重背景了。
最后可以得出結(jié)論:為了使用多重背景,有關(guān)的功能塊(FB1和FB10)都必須設(shè)置為有多重背景功能!
過(guò)去我是這樣做的,但是因?yàn)樽龅煤茼樌瑳](méi)有發(fā)現(xiàn)這個(gè)規(guī)則?!笆∈浅晒χ浮保覀兊慕?jīng)驗(yàn)是在遇到問(wèn)題和解決問(wèn)題的過(guò)程中積累起來(lái)的,這是成為高手的必由之路,但是還必須善于總結(jié)經(jīng)驗(yàn)教訓(xùn),不然下一次又會(huì)犯同樣的錯(cuò)誤。
最后介紹一個(gè)STEP7幫助提供的訣竅:
如果沒(méi)有創(chuàng)建具有多重背景功能的功能塊,而又希望該功能塊具有這種屬性,可以根據(jù)功能塊生成一個(gè)源文件,隨后刪除其中的塊屬性CODE_VERSION1,重新對(duì)功能塊進(jìn)行編譯,該功能塊就有多重背景功能了。
S7-1200的定時(shí)器和計(jì)數(shù)器都是功能塊,使用它們時(shí)也需要指定背景數(shù)據(jù)塊。S7-1200也能使用多重背景。
《S7-300/400 PLC應(yīng)用技術(shù)》的“發(fā)動(dòng)機(jī)控制”例程中,用FB1控制汽油機(jī)和柴油機(jī),分別使用了背景數(shù)據(jù)塊DB1和DB2。在例程“多重背景”的FB10的變量聲明表中聲明數(shù)據(jù)類型為FB 1的兩個(gè)靜態(tài)變量,它們就是所謂的多重背景。它們具有FB1的全部屬性,包括程序和局部變量,它們的數(shù)據(jù)存儲(chǔ)在FB10的背景數(shù)據(jù)塊DB10中。因此使用多重背景可將多次調(diào)用FB1的背景數(shù)據(jù)存放在FB10的背景數(shù)據(jù)塊中。
有個(gè)讀者在學(xué)習(xí)多重背景的時(shí)候問(wèn)我:“我按書(shū)中做的例子中,就是汽油機(jī)和柴油機(jī)控制的例子,在FB10中定義靜態(tài)變量時(shí),變量的數(shù)據(jù)類型為FB1,定義后變?yōu)樗姆?hào)“發(fā)動(dòng)機(jī)控制”,為什么這幾個(gè)字是紅色的??” 他同時(shí)把有問(wèn)題的項(xiàng)目文件發(fā)給我。
圖1:
打開(kāi)他發(fā)來(lái)的項(xiàng)目,發(fā)現(xiàn)FB10的屬性有問(wèn)題。
下面是我的回答:“這幾個(gè)字為紅色表示定義的這個(gè)靜態(tài)變量有問(wèn)題。在管理器里用右鍵點(diǎn)擊FB10,執(zhí)行出現(xiàn)的快捷菜單中的“屬性”命令,在“屬性”對(duì)話框可以看到“無(wú)多實(shí)例能力”(無(wú)多重背景功能)。”
圖2:
為了解決這個(gè)問(wèn)題,在生成FB10的時(shí)候一定要選中“多重背景功能”多選框。
圖3:
用郵件把上述回答發(fā)給了他,他來(lái)郵件說(shuō)按我的建議重新生成有多重背景功能的FB10后,還是不能生成數(shù)據(jù)類型為FB1的靜態(tài)變量。他把修改后的項(xiàng)目發(fā)給了我。
經(jīng)檢查我發(fā)現(xiàn)他生成的FB1也沒(méi)有多重背景功能,問(wèn)題可能就出在這里。重新生成有多重背景功能的FB1后,就可以在FB10中生成數(shù)據(jù)類型為FB1的多重背景了。
最后可以得出結(jié)論:為了使用多重背景,有關(guān)的功能塊(FB1和FB10)都必須設(shè)置為有多重背景功能!
過(guò)去我是這樣做的,但是因?yàn)樽龅煤茼樌瑳](méi)有發(fā)現(xiàn)這個(gè)規(guī)則?!笆∈浅晒χ浮保覀兊慕?jīng)驗(yàn)是在遇到問(wèn)題和解決問(wèn)題的過(guò)程中積累起來(lái)的,這是成為高手的必由之路,但是還必須善于總結(jié)經(jīng)驗(yàn)教訓(xùn),不然下一次又會(huì)犯同樣的錯(cuò)誤。
最后介紹一個(gè)STEP7幫助提供的訣竅:
如果沒(méi)有創(chuàng)建具有多重背景功能的功能塊,而又希望該功能塊具有這種屬性,可以根據(jù)功能塊生成一個(gè)源文件,隨后刪除其中的塊屬性CODE_VERSION1,重新對(duì)功能塊進(jìn)行編譯,該功能塊就有多重背景功能了。