
前言
很多設備在實際使用中需要將設備運行中的部分數據保存,以便下一次運行時使用。被 保存的數據要求在設備斷電的情況下不丟失,也就是在某些PLC中所稱的“數據的掉電保存”,這一功能在Twido PLC可以很方便的實現。
Twido PLC全系列CPU本體中都內置有一個可充電的電池,在保證該電池完全充電(PLC連續通電時間大于15小時)時,并且在PLC的程序中未對%S0做輸出的情況下,PLC內部的%MW等中間數據全部具有掉電保存功能,保存時間約30天(見圖1);對于TWDLCA*40DRF的CPU本體,通過加裝外部電池TSXPLP01,可將掉電保存時間加長到3年以上;如果設備掉電的時間很長,或用戶希望掉電后數據的保存不依賴于內部電池或外部電池,那么可以利用Twido的內置Flash來實現數據的掉電保存功能。
圖1
具體描述
使用Twido的內置Flash來實現數據的掉電保存功能需要注意:被保存的數據是從%MW0開始的一個長度不超過512的區間,假定需要對300個數據進行掉電保存功能,那么要在程序中做合理的規劃,將要做掉電保存數據寄存器集中在%MW0~%MW299區間內。
另外,值得注意的地方是對Flash的寫的操作不太頻繁,如果程序設計的不合理,可能會對Flash造成永久性損壞。所以,找到合適的將數據寫入Flash的條件是非常重要的。
常見的寫數據到Flash的條件有很多種,例如當數據發生變化時(數據變化不頻繁時),或通過人機操作界面的某一個按鍵,或者當設備突然掉電時。在這里,主要介紹一下,當設備突然掉電時將數據寫入Flash的方法。
圖2 是一種比較可行的捕捉突然掉電的方法,同樣,對于使用AC220V電源的TWDLCA***DRF的產品也可以使用同樣的方法。
在某些特定的應用場合,PLC的電源供給是使用直流24V的蓄電池,如果作為電源供給的蓄電池回路突然中斷,而在這種條件下運行的設備很可能需要通過蓄電池突然中斷供電的測試,此時圖2中的捕捉電源掉電的方法就無法可靠使用。這時,要實現捕捉電源掉電,需要利用TWIDO的一些內部特性,首先來看一下使用DC24V電源的TWDLMDA*****/TWDLCDA**DRF的對供電電源的要求,見圖3。
使用DC24V電源的TWDLMDA*****/TWDLCDA**DRF的允許供電的直流24V電源發生10ms的中斷,而不會對PLC的運行造成影響,也就是說,在24V電源供給斷開的10ms內PLC還可以正常運行,再結合Twido的外部中斷(I0.2~I0.4,可在1ms內檢測到輸入的變化,微型繼電器從線圈斷電到觸點斷開需要4ms,剩余的5ms足夠完成數據寫入Flash的程序所需的時間)功能,可以完成電源突然中斷后將數據保存的要求。
相應的接線及設置見圖4、圖5及圖6。
圖2
圖3
圖5
圖6
注意,圖6中要將I0.2的濾波時間設置為“不使用”,這樣可以使用PLC更快地檢測到微型繼電器的觸點的斷開。
下面是為實現使用DC24V電源的TWDLMDA*****/TWDLCDA**DRF的供電掉電捕捉的Twido的測試程序,程序中使用I0.0、I0.1來改變MW288的數據,通過Q0.1的輸出來判斷數據是否被寫入到Flash。使用這三個輔助點是為了不斷地重復掉電前數據的變化及上電后觀察數據是否實現掉電保持功能,實際使用時可去掉這些測試部分內容。測試程序中保存MW0到MW299間的300個數據寄存器,因數據寫入Flash的操作在中斷程序中完成,所以與程序的大小無關,也就是完成保存數據的功能與PLC的掃描時間關系不大。
程序清單:
(* 初始化 *)
LD 1
MPS
AND( %S0
OR %S1
OR %S13
)
ST %S0
ST %M0
MPP
AND %S7
ST %M7
(* 開辟存儲空間 *)
LD 1
[ %MW1000 := 88 ]
STN %M255
(* 初始化后1.5秒,從FLASH中恢復數據 *)
BLK %TM127
LDN %M0
IN
OUT_BLK
LD Q
ST %M101
END_BLK
(* 防止頻繁對FLASH寫操作時間限制,時間限制在50MS內 *)
BLK %TM126
LDN %I0.0.2
IN
END_BLK
(* 恢復FLASH中的數據,M101為恢復條件,開機后1.5秒自動恢復數據 *)
(* *)
LDR %M101
[ %SW97 := 300 ]
ST %S95
(* Q0.1為測試指示,I0.1接通%MW288賦值88,Q0.1輸出,斷電后再通電,1.5秒后%Q0.0.1有輸出,說明%MW288保存有效 *)
(* 如檢測數據保存有效,接通I0.1,%MW288賦值0,Q0.1無輸出,斷電后再通電,1.5秒后%Q0.0.1無輸出,說明%MW288保存有效 *)
LD 1
MPS
AND %I0.0.0
[ %MW288 := 0 ]
MRD
AND %I0.0.1
[ %MW288 := 88 ]
MPP
AND [ %MW288 = 88 ]
AND %S12
ST %Q0.0.1
(* 主程序結束 *)
END
(* 數據保存子程序,SW97需保存的數據區長度(示范為300,允許范圍1~511) %I0.0.2為保存條件,此處取其下降沿 *)
(* 要保證寫入閃存的條件在正常運行時不能頻繁滿足,否則可能損壞閃存 *)
SR0:
LDN %TM126.Q
[ %SW97 := 300 ]
ANDN %SW96:X10
AND %SW96:X6
ST %SW96:X0
(* 子程序返回 *)
RET