專利名稱:可編程邏輯控制器及實現方法
技術領域:
本發明涉及可編程邏 輯控制器,更具體地說,涉及一種具有高可靠性的可編程邏輯控制器及實現方法。
背景技術:
中型PLC (Programmable Logic Controller,可編程邏輯控制器)的系統程序包括PLC的驅動代碼、操作系統、文件系統及單板程序,用戶數據包括用戶配置的用戶程序和數據。系統程序和用戶數據的可靠性是工業產品的一個重要指標。現有工業設備中,中型PLC的系統程序和用戶數據一般存儲在可讀寫、掉電有保存功能的介質中。現有的中型PLC中,通常將系統程序和用戶數據存儲于SD卡中,PLC的中央處理單元從SD卡中讀取系統程序運行,并加載SD卡中的用戶數據實現用戶功能。系統程序和用戶數據需要更新時,把更新的系統程序和數據存儲在SD卡中。另一種常用的方法是用存儲量大且便宜的NAND閃存存儲系統程序和用戶數據,系統程序和用戶數據需要更新時,把更新的系統程序和數據存儲在NAND閃存中。然而NAND閃存及SD卡由于其構造原因容易出現位交換現象,即一個比特位上的數據發生了翻轉,將導致存儲在其上的系統程序或用戶數據出現錯誤。因此,用SD卡或NAND閃存存儲系統程序和用戶數據的中型PLC設備在SD卡或NAND閃存中系統程序出現錯誤時會導致PLC不能啟動運行,需由廠家更新SD卡或重新燒錄NAND閃存;當用戶數據出現錯誤時,需要用戶重新下載用戶數據,對一些實時保存的數據,若出現了錯誤,沒有辦法修復,將對用戶造成很大的損失。并且,系統程序和用戶數據在SD卡或NAND閃存中一般只有一個存儲區,沒有備份,當對SD卡或NAND閃存進行擦寫時,若此時斷電或拔掉SD卡或NAND閃存,則造成程序被擦寫更新不完整,導致PLC無法啟動,只能原廠更新或更換。目前還有一種PLC中常見的系統程序和用戶數據存儲方法是使用NOR閃存,即使用NOR閃存存儲系統程序和用戶數據。然而,雖然NOR閃存不易出現位交換現象,但其價格昂貴,對于用戶數據需求日漸增大的設備將造成較大的成本壓力。
發明內容
本發明要解決的技術問題在于,針對上述中型PLC可靠性不高及成本較高的問題,提供一種可編程邏輯控制器及實現方法。本發明解決上述技術問題的技術方案是,提供一種可編程邏輯控制器,包括用于存儲系統程序的NOR閃存;所述系統程序包括第一級程序、第二級程序,其中第一級程序為無需更新的系統程序,第二級程序為需要更新的系統程序;所述NOR閃存包括用于存儲第一級程序的第一存儲區、用于存儲第二級程序的第二存儲區及用于存儲第二級程序的備份文件的第三存儲區。在本發明所述的可編程邏輯控制器中,所述可編程邏輯控制器包括第一校驗單元、第二校驗單元、第三校驗單元及第四校驗單元;所述NOR閃存包括第一標志位、第一校驗位、第二標志位及第二校驗位;所述第一校驗單元,用于在第一級程序啟動后讀取第一標志位并在第一標志位被置位時啟動第二校驗單元、否則使用第三存儲區中的第二級程序的備份文件更新第二存儲區;所述第二校驗單元,用于讀取第二存儲區中的第二級程序并在第二級程序的校驗值等于第一校驗位的值時啟動第三校驗單元、否則使用第三存儲區中的第二級程序的備份文件更新第二存儲區;所述第三校驗單元,用于讀取第二標志位并在所述第二標志位被置位時啟動第四校驗單元、否則使用第二存儲區中的第二級程序更新第三存儲區;所述第四校驗單元,用于讀取第三存儲區中的第二級程序的備份文件并在所述第二級程序的備份文件的校驗值與第二校驗位相同且該備份文件與第二存儲區中的第二級程序版本一致時啟動第二級程序、否則使用第二存儲區中的第二級程序更新第三存儲區。在本發明所述的可編程邏輯控制器中,所述可編程邏輯控制器包括用于更新第二存儲區中的第二級程序的第一更新單元、第一更新校驗單元以及用于更新第三存儲區中的第二級程序的備份文件的第二更新單元;所述第一更新單元在第二級程序更新前將第一標志位及第一校驗位清零并在第二級程序更新完成后將第一標志位置位、將第二級程序的校 驗值寫入第一校驗位及啟動所述第一更新校驗單元;所述第一更新校驗單元,用于在第一標志位被置位且第二存儲區中的第二級程序的校驗值等于第一校驗位的值時使第二更新單元更新第三存儲區的備份文件、否則使第一更新單元重新更新第二存儲區中的第二級程序;所述第二更新單元在第二級程序的備份文件更新前將第二標志位及第二校驗位清零并在所述備份文件更新完成后將第二標志位置位、將備份文件的校驗值寫入第二校驗位。在本發明所述的可編程邏輯控制器中,所述可編程邏輯控制器還包括用于存儲用戶數據的NAND閃存,所述NAND閃存包括用于存儲用戶數據區、備份數據區、第三標志位、第三校驗位、第四標志位及第四校驗位,所述可編程邏輯控制器包括第五校驗單元、第六校驗單元、第七校驗單元及第八校驗單元;所述第五校驗單元,用于在第二級程序啟動后讀取第三標志位并在所述第三標志位被置位時啟動第六校驗單元、否則使用備份數據區的數據更新用戶數據區;所述第六校驗單元,用于讀取用戶數據區并在所述用戶數據區的校驗值等于第三校驗位的值時啟動第七校驗單元、否則使用備份數據區的數據更新用戶數據區;所述第七校驗單元,用于讀取第四標志位并在所述第四標志位被置位時啟動第八校驗單元、否則使用用戶數據區的數據更新備份數據區;所述第八校驗單元,用于備份數據區并在備份數據區的校驗值與第四校驗位不同或該備份數據區中的數據版本與用戶數據區中數據的版本不一致時使用用戶數據區中的數據更新備份數據區、否則啟動用戶數據區的數據。在本發明所述的可編程邏輯控制器中,所述可編程邏輯控制器包括用于更新用戶數據區的第三更新單元、第二更新校驗單元以及用于更新備份數據區的第四更新單元;所述第三更新單元在用戶數據區更新前將第三標志位及第三校驗位清零并在用戶數據區更新完成后將第三標志位置位、將用戶數據區的校驗值寫入第三校驗位及啟動所述第二更新校驗單元;所述第二更新校驗單元,用于在第三標志位被置位且用戶數據區的校驗值等于第三校驗位的值時使第四更新單元更新備份數據區、否則使第三更新單元重新更新用戶數據區;所述第四更新單元在備份數據區更新前將第四標志位及第四校驗值清零并在所述備份數據區更新完成后將第四標志位置位并將備份數據區的校驗值寫入第四校驗位。本發明還提供一種可編程邏輯控制器的實現方法,包括以下步驟
(a)將第一級程序存儲到NOR閃存的第一存儲區,其中所述第一級程序為無需更新的系統程序;(b)將第二級程序存儲到NOR閃存的第二存儲區,所述第二級程序為需要更新的系統程序;(c)將第二級程序的備份文件存儲到NOR閃存的第三存儲區。在本發明所述的可編程邏輯控制器的實現方法中,所述步驟(b)包括將所述NOR閃存中的第一標志位置位并將第二級程序的校驗值寫入第一校驗位;所述步驟(C)包括將所述NOR閃存中的第二標志位置位并將備份文件的校驗值寫入第二校驗位;該方法還包 括載入系統程序且載入系統程序包括以下步驟(d)在第一級程序啟動后讀取第一標志位并在第一標志位被置位時執行步驟(e),否則執行步驟(f);(e)讀取第二存儲區中的第二級程序并計算該第二級程序的校驗值,在所述第二級程序的校驗值等于第一校驗位的值時執行步驟(g),否則執行步驟(f);(f)使用第三存儲區中的第二級程序的備份文件更新第二存儲區,并返回步驟Cd);(g)讀取第二標志位并在所述第二標志位被置位時執行步驟(i);否則執行步驟
(h);(h)使用第二存儲區中的第二級程序更新第三存儲區,并執行步驟(i);( i )讀取并計算第三存儲區中的備份文件的校驗值并在所述備份文件的校驗值與第二校驗位相同且所述備份文件與第二存儲區中的第二級程序版本一致時啟動第二級程序,否則返回步驟(h)。在本發明所述的可編程邏輯控制器的實現方法中,該方法還包括更新系統程序且更新系統程序包括以下步驟(j)將第一標志位及第一校驗位清零并更新第二級程序,在第二級程序更新完成后將第一標志位置位并將第二級程序的校驗值寫入第一校驗位;(k)判斷第一標志位是否被置位及第二存儲區中的第二級程序的校驗值是否等于第一校驗位的值,并在第一標志位被置位且第二存儲區中的第二級程序的校驗值等于第一校驗位的值時執行步驟(1),否則返回步驟(j);(I)將第二標志位及第二校驗位清零并更新第二級程序的備份文件,并在所述備份文件更新完成后將第二標志位置位并將備份文件的校驗值寫入第二校驗位。在本發明所述的可編程邏輯控制器的實現方法中,該方法還包括將用戶數據存儲到NAND閃存的用戶數據區,同時將NAND閃存的第三標志位置位并將用戶數據區的校驗值寫入NAND閃存的第三校驗位;將用戶數據的備份文件存儲到備份數據區,同時將NAND閃存的第四標志位置位并將備份數據區的校驗值寫入NAND閃存的第四校驗位;該方法還包括載入用戶數據且載入用戶數據包括以下步驟(m)在第二級程序啟動后讀取第三標志位并在所述第三標志位被置位時執行步驟(n),否則執行步驟(O);(n)讀取用戶數據區并在所述用戶數據區的校驗值等于第三校驗位的值時執行步驟(P),否則執行步驟(0);(o)使用備份數據區的數據更新用戶數據區,并執行步驟(n);(P)讀取第四標志位并在所述第四標志位被置位時執行步驟(q),否則執行步驟Cr);(q)讀取備份數據區并計算備份數據區的校驗值,在備份數據區的校驗值與第四校驗位相同且備份數據區中的用戶數據版本與用戶數據區的用戶數據版本一致時啟動用戶數據區的用戶數據,否則執行步驟(r);(r)使用用戶數據區的數據更新備份數據區,并返回步驟(q)。在本發明所述的可編程邏輯控制器的實現方法中,該方法還包括更新用戶數據且更新用戶數據包括
(S)將第三標志位及第三校驗位清零并更新用戶數據區,在用戶數據區更新完成后將第三標志位置位并將用戶數據區的校驗值寫入第三校驗位;(t)判斷第三標志位是否被置位及用戶數據區中數據的校驗值是否等于第三校驗位的值,并在第三標志位被置位且用戶數據區的校驗值等于第三校驗位的值時執行步驟U),否則執行步驟(S);(u)將第四標志位及第四校驗位清零并更新備份數據區,在所述備份數據區更新完成后將第四標志位置位并將備份數據區的校驗值寫入第四校驗位。本發明的可編程邏輯控制器及實現方法,通過將系統程序分級存儲NOR閃存的不同存儲區,提高了可編程邏輯控制器的可靠性。并且,本發明通過PLC系統程序加載及更新過程中的自動判斷及自動修復,可進一步提高系統可靠性。此外,本發明將用戶數據存儲在NAND閃存,并提供用戶數據載入及更新時的自動判斷及自動修復,不僅降低了產品成本,而且提高了系統的可靠性。
圖I是本發明可編程邏輯控制器實施例的示意圖。圖2是本發明可編程邏輯控制器系統程序加載及更新部分的示意圖。圖3是本發明可編程邏輯控制器用戶數據加載及更新部分的示意圖。圖4是本發明可編程邏輯控制器實現方法實施例的流程示意圖。圖5是本發明可編程邏輯控制器實現方法的系統程序加載的流程圖。圖6是本發明可編程邏輯控制器實現方法的系統程序更新的流程圖。圖7是本發明可編程邏輯控制器實現方法的用戶數據加載的流程圖。圖8是本發明可編程邏輯控制器實現方法的用戶數據更新的流程圖。
具體實施例方式為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。如圖I所示,是本發明可編程邏輯控制器實施例的示意圖。本實施例中的可編程邏輯控制器(PLC)包括用于存儲系統程序的NOR閃存。由于NOR閃存為非易失性存儲設備,且在數據存儲時不易出現位交換現象,因此可保證數據存儲的可靠性。同時,在可編程邏輯控制器中,系統程序占有的數據量較小,且更新頻度較低,因此采用NOR閃存存儲系統程序不會過多增加系統成本。上述NOR閃存包括第一存儲區11、第二存儲區12及第三存儲區13 ;而系統程序則包括第一級程序、第二級程序,其中第一級程序為無需更新的系統程序(例如初始化基本硬件、下載接口以及根據第二級程序的完整性做相應處理的程序等),第二級程序為需要更新的系統程序(例如系統驅動程序和單板應用程序等)。上述NOR閃存的第一存儲區11用于存儲第一級程序;第二存儲區12用于存儲第二級程序;第三存儲區13及用于存儲第二級程序的備份文件。通過將需更新的系統程序進行備份,可進一步提高系統的可靠性。上述NOR閃存中的系統程序可通過一個燒錄模塊完成,即通過該燒錄模塊將第一級程序寫入NOR閃存的第一存儲區、將第二級程序寫入NOR閃存的第二存儲區、將第二級程 序的備份文件寫入第三存儲區。如圖2所示,本發明的可編程邏輯控制器還可包括加載模塊,相應地,上述NOR閃存除了三個存儲區,還包括第一標志位、第一校驗位、第二標志位及第二校驗位。上述第一標志位、第一校驗位、第二標志位及第二校驗位與系統程序同時寫入到NOR閃存(例如通過燒錄模塊)。本實施例中的加載模塊包括第一校驗單元21、第二校驗單元22、第三校驗單元23及第四校驗單元24。上述加載模塊可由可編程邏輯控制器的中央處理單元執行第一級程序中的代碼實現(由于第一級程序不會更新,因此可保證其執行時不會出現異常),也可通過單獨的硬件和軟件實現。第一校驗單元21用于在第一級程序啟動后讀取第一標志位并在第一標志位被置位時(表示第二存儲區12中的第二級程序完整)啟動第二校驗單元22、否則使用第三存儲區13中的第二級程序的備份文件更新第二存儲區12 (包括重新寫入第一標志位及第一校驗位的值,即自動修復第二級程序)并重新啟動第一校驗單元21。第二校驗單元22用于讀取第二存儲區12中的第二級程序并計算該第二級程序的校驗值,在上述校驗值等于第一校驗位的值時啟動第三校驗單元23、否則使用第三存儲區13中的第二級程序的備份文件更新第二存儲區12 (包括重新寫入第一標志位及第一校驗位的值)并重新啟動第一校驗單元21。第三校驗單元23用于讀取第二標志位并在第二標志位被置位時(表示備份文件完整)啟動第四校驗單元24、否則使用第二存儲區中的第二級程序更新第三存儲區(包括重新寫入第二標志位及第二校驗位,實現備份文件校驗)并重新啟動第三校驗單元23。第四校驗單元24用于讀取第三存儲區13中的第二級程序的備份文件并計算該備份文件的校驗值,在上述校驗值與第二校驗位的值相同且該備份文件的版本與第二存儲區中的第二級程序版本一致時啟動第二級程序、否則使用第二存儲區中的第二級程序更新第三存儲區并重新啟動第三校驗單元23。在上述的可編程邏輯控制器中,還可包括更新模塊,且該更新模塊第一更新單元31、第一更新校驗單元32以及第二更新單元33。上述更新模塊也可由可編程邏輯控制器的中央處理單元執行第一級程序中的代碼實現,或通過單獨的硬件和軟件實現。更新模塊可先把更新的系統程序放置到內存中,然后通過第一更新單元31、第一更新校驗單元32以及第二更新單元33將內存中的系統程序更新第二存儲區12和第三存儲區13,并把程序完整標志及校驗值寫入相應標志位和校驗位。第一更新單元31用于更新第二存儲區12中的第二級程序。該第一更新單元31在第二級程序更新前將第一標志位及第一校驗位清零并在第二級程序更新完成后將第一標志位置位、將第二級程序的校驗值寫入第一校驗位。第一更新校驗單元32在第一更新單元31寫入第一校驗值完畢之后,檢測第一標志位是否被置位并檢測第二存儲區中的第二級程序的校驗值是否等于第一校驗位的值。若第一標志位被置位且第二級程序的校驗值準確,則使第二更新單元33更新第三存儲區13,否則使第一更新單元31重新更新第二存儲區。第二更新單元33用于更新第三存儲區中的第二級程序的備份文件。該第二更新單元33在第二級程序的備份文件更新前將第二標志位及第二校驗位清零并在備份文件更 新完成后將第二標志位置位、將備份文件的校驗值寫入第二校驗位。在第二更新單元33更新完畢,也可再通過一個更新校驗單元(與第一更新校驗單元相同)對備份文件的更新進行相同的校驗。通過在系統程序更新時的可靠性設計,保證了第二存儲區12和第三存儲區13中必有一個分區的第二級程序是正確的(即在檢驗第二存儲區12更新正確后才更新第三存儲區13)。由于總是先更新第二存儲區12的系統程序,因此第二存儲區12中的系統程序版本號不會比第三存儲區13中的系統程序低。在上述可編程邏輯控制器中,還可包括用于存儲用戶數據(包括用戶程序和數據)的NAND閃存,該NAND閃存包括用于存儲用戶數據區(用于存儲PLC正常運行時的用戶數據)、備份數據區(用作用戶數據區的備份)。由于可編程邏輯控制器中用戶數據容量較大,采用NAND閃存存儲該部分數據可有效降低系統成本。該NAND閃存中包括第三標志位、第三校驗位、第四標志位及第四校驗位,用于標識用戶數據區及備份數據區的完整性和準確性。上述NAND閃存中的數據(包括用戶數據、標志位、校驗位)也可通過燒錄模塊寫入。為實現NAND閃存中用戶數據的加載,上述加載模塊還可包括第五校驗單元25、第六校驗單元26、第七校驗單元27及第八校驗單元28。第五校驗單元25用于在第二級程序啟動后(即系統程序啟動后)讀取NAND閃存中的第三標志位并在該第三標志位被置位時(即用戶數據區完整)啟動第六校驗單元26、否則使用備份數據區的數據更新用戶數據區并重新啟動第五校驗單元25。第六校驗單元26用于讀取用戶數據區數據并計算該用戶數據區的數據的校驗值,在上述校驗值等于第三校驗位的值時啟動第七校驗單元27、否則使用備份數據區的數據更新用戶數據區(即用戶數據自動修復)并重新啟動第五校驗單元25。第七校驗單元27用于讀取第四標志位并在第四標志位被置位時(即備份數據區完整)啟動第八校驗單元28、否則使用用戶數據區的數據更新備份數據區(即備份數據區自動修復)并重新啟動第七校驗單元27。第八校驗單元28用于讀取備份數據區的數據并計算該數據的校驗值,在備份數據區的校驗值與第四校驗位相同且備份數據區中的用戶數據版本與用戶數據區的用戶數據一致時啟動用戶數據、否則使用用戶數據區中的數據更新備份數據區。為更新NAND閃存中的用戶數據,可編程邏輯控制器的更新模塊可包括第三更新單元34、第二更新校驗單元35以及第四更新單元36。
第三更新單元34用于更新用戶數據區的用戶數據。該第三更新單元34在用戶數據區更新前將第三標志位及第三校驗位清零并在用戶數據區更新完成后將第三標志位置位、將用戶數據區的校驗值寫入第三校驗位。第二更新校驗單元35用于在第三校驗值寫入完成后,檢測第三標志位是否被置位及用戶數據區的校驗值是否等于第三校驗位的值,并在第三標志位被置位且用戶數據區校驗值準確時使第四更新單元更新備份數據區、否則使第三更新單元34重新更新用戶數據區。第四更新單元36用于更新備份數 據區。該第四更新單元36在備份數據區更新前將第四標志位及第四校驗值清零并在備份數據區更新完成后將第四標志位置位并將備份數據區的校驗值寫入第四校驗位。在第四更新單元36更新備份數據區完成后,也可采用一個更新校驗單元對備份數據區的用戶數據進行校驗。用戶數據更新時的可靠性設計保證了用戶數據區和備份數據區必有一個分區的用戶數據是正確的。如圖4所示,是本發明可編程邏輯控制器實現方法實施例的流程示意圖,該方法包括以下步驟步驟S41 :將第一級程序存儲到NOR閃存的第一存儲區,其中第一級程序為無需更新的系統程序(例如初始化基本硬件、下載接口以及根據第二級程序的完整性做相應處理的程序等)。步驟S42 :將第二級程序存儲到NOR閃存的第二存儲區,第二級程序為需要更新的系統程序(例如系統驅動程序和單板應用程序等)。該步驟中可包括將NOR閃存中的第一標志位置位并將第二級程序的校驗值寫入第一校驗位,上述第一標志位及第一校驗位分別用于標識第二存儲區中的第二級程序是否完整及第二級程序的校驗值。步驟S43 :將第二級程序的備份文件存儲到NOR閃存的第三存儲區。該步驟中可包括將NOR閃存中的第二標志位置位并將第二級程序的備份文件的校驗值寫入第二校驗位,上述第二標志位及第二校驗位分別用于標識第三存儲區中的第二級程序的備份文件是否完整及備份文件的校驗值。上述步驟S41-43可在可編程邏輯控制器出廠之前執行。如圖5所示,是本發明可編程邏輯控制器實現方法的系統程序加載的流程圖。該系統程序的加載過程包括以下步驟步驟S51 :在第一級程序啟動后讀取第一標志位并在第一標志位被置位時執行步驟S52,否則執行步驟S53。步驟S52 :讀取第二存儲區中的第二級程序并計算該第二級程序的校驗值,在第二級程序的校驗值等于第一校驗位的值時執行步驟S54,否則執行步驟S53。步驟S53 :使用第三存儲區中的第二級程序的備份文件更新第二存儲區,并返回步驟S51。步驟S54 :讀取第二標志位并在第二標志位被置位時執行步驟S56 ;否則執行步驟S55。步驟S55 :使用第二存儲區中的第二級程序更新第三存儲區,并執行步驟S56。步驟S56 :讀取并計算第三存儲區中的備份文件的校驗值并在所述備份文件的校驗值與第二校驗位相同且所述備份文件與第二存儲區中的第二級程序版本一致時執行步驟S57,否則執行步驟S55。步驟S57 :啟動第二級程序。如圖6所示,是本發明可編程邏輯控制器實現方法的系統程序更新的流程圖。如圖所示,更新系統程序包括以下步驟步驟S61 :將第一標志位及第一校驗位清零并更新第二級程序,在第二級程序更新完成后將第一標志位置位并將第二級程序的校驗值寫入第一校驗位。步驟S62 :判斷第以標志位是否被置位及第二存儲區中的第二級程序的校驗值是否等于第一校驗位的值在第一標志位被置位且第二存儲區中的第二級程序的校驗值等于 第一校驗位的值時執行步驟S63,否則返回步驟S61。步驟S63 :將第二標志位及第二校驗位清零并更新第二級程序的備份文件,并在備份文件更新完成后將第二標志位置位并將備份文件的校驗值寫入第二校驗位。在可編程邏輯控制器出廠前,可將用戶數據存儲到NAND閃存的用戶數據區,同時將NAND閃存的第三標志位置位并將用戶數據區的校驗值寫入NAND閃存的第三校驗位;將用戶數據的備份文件存儲到備份數據區,同時將NAND閃存的第四標志位置位并將備份數據區的校驗值寫入NAND閃存的第四校驗位。此時,如圖7所示,加載用戶數據包括以下步驟步驟S71 :在第二級程序啟動后讀取第三標志位并在第三標志位被置位時執行步驟S72,否則執行步驟S73。步驟S72 :讀取用戶數據區并在用戶數據區的校驗值等于第三校驗位的值時執行步驟S74,否則執行步驟S73。步驟S73 :使用備份數據區的數據更新用戶數據區,并執行步驟S71。步驟S74 :讀取第四標志位并在第四標志位被置位時執行步驟S75,否則執行步驟S76。步驟S75 :讀取備份數據區并計算備份數據區的校驗值,在備份數據區的校驗值與第四校驗位相同且備份數據區中的用戶數據版本與用戶數據區的用戶數據版本一致時執行步驟S77,否則執行步驟S76。步驟S76 :使用用戶數據區的數據更新備份數據區,并返回步驟S74。步驟S77 :啟動用戶數據區的用戶數據。如圖8所示,是本發明可編程邏輯控制器實現方法的用戶數據更新的流程圖。更新用戶數據具體包括步驟S81 :將第三標志位及第三校驗位清零并更新用戶數據區,在用戶數據區更新完成后將第三標志位置位并將用戶數據區的校驗值寫入第三校驗位。步驟S82 :判斷第三標志位是否被置位及用戶數據區的校驗值是否等于第三校驗位的值,并在第三標志位被置位且用戶數據區的校驗值等于第三校驗位的值時執行步驟S83,否則執行步驟S81。步驟S83 :將第四標志位及第四校驗位清零并更新備份數據區,在備份數據區更新完成后將第四標志位置位并將備份數據區的校驗值寫入第四校驗位。以上所述,僅為本發明較佳的具體實施方式
,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技 術人員在本發明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求的保護范圍為準。
權利要求
1.一種可編程邏輯控制器,其特征在于包括用于存儲系統程序的NOR閃存;所述系統程序包括第一級程序、第二級程序,其中第一級程序為無需更新的系統程序,第二級程序為需要更新的系統程序;所述NOR閃存包括用于存儲第一級程序的第一存儲區、用于存儲第二級程序的第二存儲區及用于存儲第二級程序的備份文件的第三存儲區。
2.根據權利要求I所述的可編程邏輯控制器,其特征在于所述可編程邏輯控制器包括第一校驗單元、第二校驗單元、第三校驗單元及第四校驗單元;所述NOR閃存包括第一標志位、第一校驗位、第二標志位及第二校驗位;所述第一校驗單元,用于在第一級程序啟動后讀取第一標志位并在第一標志位被置位時啟動第二校驗單元、否則使用第三存儲區中的第二級程序的備份文件更新第二存儲區;所述第二校驗單元,用于讀取第二存儲區中的第二級程序并在第二級程序的校驗值等于第一校驗位的值時啟動第三校驗單元、否則使用第三存儲區中的第二級程序的備份文件更新第二存儲區;所述第三校驗單元,用于讀取第二標志位并在所述第二標志位被置位時啟動第四校驗單元、否則使用第二存儲區中的第二級程序更新第三存儲區;所述第四校驗單元,用于讀取第三存儲區中的第二級程序的備份文件并在所述第二級程序的備份文件的校驗值與第二校驗位相同且該備份文件與第二存儲 區中的第二級程序版本一致時啟動第二級程序、否則使用第二存儲區中的第二級程序更新第三存儲區。
3.根據權利要求2所述的可編程邏輯控制器,其特征在于所述可編程邏輯控制器包括用于更新第二存儲區中的第二級程序的第一更新單元、第一更新校驗單元以及用于更新第三存儲區中的第二級程序的備份文件的第二更新單元;所述第一更新單元在第二級程序更新前將第一標志位及第一校驗位清零并在第二級程序更新完成后將第一標志位置位、將第二級程序的校驗值寫入第一校驗位及啟動所述第一更新校驗單元;所述第一更新校驗單元,用于在第一標志位被置位且第二存儲區中的第二級程序的校驗值等于第一校驗位的值時使第二更新單元更新第三存儲區的備份文件、否則使第一更新單元重新更新第二存儲區中的第二級程序;所述第二更新單元在第二級程序的備份文件更新前將第二標志位及第二校驗位清零并在所述備份文件更新完成后將第二標志位置位、將備份文件的校驗值寫入第二校驗位。
4.根據權利要求1-3中任一項所述的可編程邏輯控制器,其特征在于所述可編程邏輯控制器還包括用于存儲用戶數據的NAND閃存,所述NAND閃存包括用于存儲用戶數據區、備份數據區、第三標志位、第三校驗位、第四標志位及第四校驗位,所述可編程邏輯控制器包括第五校驗單元、第六校驗單元、第七校驗單元及第八校驗單元;所述第五校驗單元,用于在第二級程序啟動后讀取第三標志位并在所述第三標志位被置位時啟動第六校驗單元、否則使用備份數據區的數據更新用戶數據區;所述第六校驗單元,用于讀取用戶數據區并在所述用戶數據區的校驗值等于第三校驗位的值時啟動第七校驗單元、否則使用備份數據區的數據更新用戶數據區;所述第七校驗單元,用于讀取第四標志位并在所述第四標志位被置位時啟動第八校驗單元、否則使用用戶數據區的數據更新備份數據區;所述第八校驗單元,用于備份數據區并在備份數據區的校驗值與第四校驗位不同或該備份數據區中的數據版本與用戶數據區中數據的版本不一致時使用用戶數據區中的數據更新備份數據區、否則啟動用戶數據區的數據。
5.根據權利要求4所述的可編程邏輯控制器,其特征在于所述可編程邏輯控制器包括用于更新用戶數據區的第三更新單元、第二更新校驗單元以及用于更新備份數據區的第四更新單元;所述第三更新單元在用戶數據區更新前將第三標志位及第三校驗位清零并在用戶數據區更新完成后將第三標志位置位、將用戶數據區的校驗值寫入第三校驗位及啟動所述第二更新校驗單元;所述第二更新校驗單元,用于在第三標志位被置位且用戶數據區的校驗值等于第三校驗位的值時使第四更新單元更新備份數據區、否則使第三更新單元重新更新用戶數據區;所述第四更新單元在備份數據區更新前將第四標志位及第四校驗值清零并在所述備份數據區更新完成后將第四標志位置位并將備份數據區的校驗值寫入第四校驗位。
6.一種可編程邏輯控制器的實現方法,其特征在于包括以下步驟 Ca)將第一級程序存儲到NOR閃存的第一存儲區,其中所述第一級程序為無需更新的系統程序; (b)將第二級程序存儲到NOR閃存的第二存儲區,所述第二級程序為需要更新的系統程序; (c)將第二級程序的備份文件存儲到NOR閃存的第三存儲區。
7.根據權利要求6所述的可編程邏輯控制器的實現方法,其特征在于所述步驟(b)包括將所述NOR閃存中的第一標志位置位并將第二級程序的校驗值寫入第一校驗位;所述步驟(c)包括將所述NOR閃存中的第二標志位置位并將備份文件的校驗值寫入第二校驗位;該方法還包括載入系統程序且載入系統程序包括以下步驟 (d)在第一級程序啟動后讀取第一標志位并在第一標志位被置位時執行步驟(e),否則執行步驟(f); (e)讀取第二存儲區中的第二級程序并計算該第二級程序的校驗值,在所述第二級程序的校驗值等于第一校驗位的值時執行步驟(g),否則執行步驟(f); (f)使用第三存儲區中的第二級程序的備份文件更新第二存儲區,并返回步驟(d); (g)讀取第二標志位并在所述第二標志位被置位時執行步驟(i);否則執行步驟(h); (h)使用第二存儲區中的第二級程序更新第三存儲區,并執行步驟(i); (i )讀取并計算第三存儲區中的備份文件的校驗值并在所述備份文件的校驗值與第二校驗位相同且所述備份文件與第二存儲區中的第二級程序版本一致時啟動第二級程序,否則返回步驟(h)。
8.根據權利要求7所述的可編程邏輯控制器的實現方法,其特征在于該方法還包括更新系統程序且更新系統程序包括以下步驟 (j)將第一標志位及第一校驗位清零并更新第二級程序,在第二級程序更新完成后將第一標志位置位并將第二級程序的校驗值寫入第一校驗位; (k)判斷第一標志位是否被置位及第二存儲區中的第二級程序的校驗值是否等于第一校驗位的值,并在第一標志位被置位且第二存儲區中的第二級程序的校驗值等于第一校驗位的值時執行步驟(1),否則返回步驟(j); (I)將第二標志位及第二校驗位清零并更新第二級程序的備份文件,并在所述備份文件更新完成后將第二標志位置位并將備份文件的校驗值寫入第二校驗位。
9.根據權利要求6-8中任一項所述的可編程邏輯控制器的實現方法,其特征在于該方法還包括將用戶數據存儲到NAND閃存的用戶數據區,同時將NAND閃存的第三標志位置位并將用戶數據區的校驗值寫入NAND閃存的第三校驗位; 將用戶數據的備份文件存儲到備份數據區,同時將NAND閃存的第四標志位置位并將備份數據區的校驗值寫入NAND閃存的第四校驗位; 該方法還包括載入用戶數據且載入用戶數據包括以下步驟 (m)在第二級程序啟動后讀取第三標志位并在所述第三標志位被置位時執行步驟(n),否則執行步驟(O); (n)讀取用戶數據區并在所述用戶數據區的校驗值等于第三校驗位的值時執行步驟(P),否則執行步驟(0); (0 )使用備份數據區的數據更新用戶數據區,并執行步驟(n ); (P)讀取第四標志位并在所述第四標志位被置位時執行步驟(q),否則執行步驟(r);(q)讀取備份數據區并計算備份數據區的校驗值,在備份數據區的校驗值與第四校驗位相同且備份數據區中的用戶數據版本與用戶數據區的用戶數據版本一致時啟動用戶數據區的用戶數據,否則執行步驟(r); (r)使用用戶數據區的數據更新備份數據區,并返回步驟(q)。
10.根據權利要求9所述的可編程邏輯控制器的實現方法,其特征在于該方法還包括更新用戶數據且更新用戶數據包括 (S)將第三標志位及第三校驗位清零并更新用戶數據區,在用戶數據區更新完成后將第三標志位置位并將用戶數據區的校驗值寫入第三校驗位; (t)判斷第三標志位是否被置位及用戶數據區中數據的校驗值是否等于第三校驗位的值,并在第三標志位被置位且用戶數據區的校驗值等于第三校驗位的值時執行步驟U),否則執行步驟(S); (U)將第四標志位及第四校驗位清零并更新備份數據區,在所述備份數據區更新完成后將第四標志位置位并將備份數據區的校驗值寫入第四校驗位。
全文摘要
本發明提供了一種可編程邏輯控制器,包括用于存儲系統程序的NOR閃存;所述系統程序包括第一級程序、第二級程序,其中第一級程序為無需更新的系統程序,第二級程序為需要更新的系統程序;所述NOR閃存包括用于存儲第一級程序的第一存儲區、用于存儲第二級程序的第二存儲區及用于存儲第二級程序的備份文件的第三存儲區。本發明還提供一種可編程邏輯控制器的實現方法。本發明通過將系統程序分級存儲NOR閃存的不同存儲區,提高了可編程邏輯控制器的可靠性。
文檔編號G05B19/05GK102968089SQ20121040754
公開日2013年3月13日 申請日期2012年10月23日 優先權日2012年10月23日
發明者孫盼 申請人:深圳市匯川控制技術有限公司, 深圳市匯川技術股份有限公司, 蘇州匯川技術有限公司