FC塊與FB最大的區(qū)別就是FB塊擁有自己的DB塊來(lái)存儲(chǔ)數(shù)據(jù),而FC卻沒(méi)有,所以在多次調(diào)用同一個(gè)FC塊有時(shí)出現(xiàn)錯(cuò)誤,譬如將FC寫(xiě)成一個(gè)定器,
當(dāng)多次調(diào)用改FC塊編寫(xiě)的定時(shí)器時(shí),由于每次調(diào)用時(shí)設(shè)定的時(shí)間不同,則會(huì)對(duì)計(jì)時(shí)造成影響。解決這個(gè)問(wèn)題可以使用STEP中FB塊的一個(gè)功能多重背景數(shù)據(jù)。
多重背景數(shù)據(jù)簡(jiǎn)單說(shuō)就是為每次調(diào)用的功能塊分別獨(dú)立的數(shù)據(jù)存儲(chǔ)區(qū),互不干擾。
一、 CPU自帶的clock memory(也就是系統(tǒng)時(shí)鐘功能)
1、在硬件組態(tài)中 CPU---屬性----時(shí)鐘脈沖器---勾選時(shí)鐘存儲(chǔ)器---填寫(xiě)字節(jié)0及MB0
如下圖所示 MB0中7個(gè)位對(duì)應(yīng)的時(shí)間脈沖(此時(shí)間脈沖為方波,不是上升沿)
2、然后書(shū)寫(xiě)程序由于設(shè)置的系統(tǒng)時(shí)鐘為方波型,不能直接用于計(jì)時(shí),需要做成上升沿(每隔N秒一次上升沿)
3、通過(guò)用ADD_I指令來(lái)實(shí)現(xiàn)計(jì)時(shí),將之前做的每隔一秒鐘導(dǎo)通的上升沿作為使能,每隔1S中自加1一次,來(lái)實(shí)現(xiàn)計(jì)時(shí)
二、利用多重背景數(shù)據(jù)來(lái)建立定時(shí)器
1、新建一個(gè)FB塊FB50 “勾選多重背景功能” 并書(shū)寫(xiě)定時(shí)器的程序
2、再建立另一個(gè)FB塊FB51用來(lái)存放之前的編寫(xiě)功能的FB塊
3、打開(kāi)第二步建立的FB塊 在“STAR”類(lèi)型下的“數(shù)據(jù)類(lèi)型”選擇為“FB
4、“數(shù)據(jù)類(lèi)型”填寫(xiě)第一步建立的FB50
5、在“多重背景”選項(xiàng)欄中可以找到第四步建立的數(shù)據(jù)塊,并將它們拖入FB51中,然后填寫(xiě)在各個(gè)引腳上填寫(xiě)數(shù)據(jù)
6、最后OB1中調(diào)用存放著功能塊的FB塊FB51;并分配一個(gè)背景DB塊,如下圖DB32
7、進(jìn)入DB32 可以看到每個(gè)功能塊所分配了不同的地址
8、測(cè)試 在變量表中對(duì)各個(gè)定時(shí)器設(shè)定時(shí)間,然后監(jiān)控,各個(gè)定時(shí)器設(shè)定值各不相同;互不干擾。