本發(fā)明涉及計(jì)算機(jī)軟件技術(shù)領(lǐng)域,特別是一種通過網(wǎng)絡(luò)在線更新程序的工業(yè)控制板及其更新方法。
背景技術(shù):
現(xiàn)今的工業(yè)現(xiàn)場等生產(chǎn)建筑領(lǐng)域,需要采用各類設(shè)備進(jìn)行自動(dòng)化運(yùn)作,其中,工業(yè)控制板作為各類設(shè)備的核心部分,起著至關(guān)重要的作用。
工業(yè)控制板中的主控芯片可采用dsp28335芯片,dsp28335芯片內(nèi)置應(yīng)用程序用于自動(dòng)化控制,這些程序需要在使用前先燒寫在dsp28335芯片內(nèi),然后工業(yè)控制板才能運(yùn)行,同時(shí)在之后的運(yùn)行中,可能也需要更新應(yīng)用程序。
以往寫入這些應(yīng)用程序是通過使用仿真器的方式,通過專用仿真接口與dsp28335芯片建立連接,然后在ccs集成開發(fā)環(huán)境中操作更新程序。還有的方式是通過can總線或串口,向dsp更新程序。如果在工業(yè)現(xiàn)場使用仿真器方式燒寫,需要專門的仿真器設(shè)備,并且需要將仿真器移動(dòng)到設(shè)備旁邊操作,非常不便。如果通過can總線或串口向dsp更新,也需要專門的通訊轉(zhuǎn)換裝置(比如usb轉(zhuǎn)can、usb轉(zhuǎn)串口等等),且距離有限,同樣不夠方便。
同時(shí)以往通過網(wǎng)絡(luò)更新應(yīng)用程序的工業(yè)控制板內(nèi)部芯片沒有有效地配合,并且在更新方法上比較簡單,使得應(yīng)用程序在錄入時(shí)容易出現(xiàn)錯(cuò)亂,影響之后的控制效果。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明的目的是提供一種通過網(wǎng)絡(luò)在線準(zhǔn)確更新程序的工業(yè)控制板及其更新方法。
本發(fā)明采用的技術(shù)方案是:
一種通過網(wǎng)絡(luò)在線更新程序的工業(yè)控制板,包括網(wǎng)絡(luò)控制芯片、主控芯片以及數(shù)據(jù)存儲(chǔ)芯片,主控芯片分別與網(wǎng)絡(luò)控制芯片、數(shù)據(jù)存儲(chǔ)芯片電性連接,網(wǎng)絡(luò)控制芯片用于使主控芯片與外部的計(jì)算機(jī)網(wǎng)絡(luò)通訊連接,以使計(jì)算機(jī)能夠?qū)⒏碌膽?yīng)用程序?qū)懭胫骺匦酒校?/p>
主控芯片內(nèi)具有boot運(yùn)行模式以及應(yīng)用程序運(yùn)行模式,boot運(yùn)行模式下,主控芯片將寫入來自計(jì)算機(jī)的更新的應(yīng)用程序,應(yīng)用程序運(yùn)行模式下,主控芯片根據(jù)應(yīng)用程序驅(qū)動(dòng)外部設(shè)備運(yùn)行;
數(shù)據(jù)存儲(chǔ)芯片用于保存運(yùn)行模式數(shù)據(jù),計(jì)算機(jī)改寫運(yùn)行模式數(shù)據(jù),該主控芯片根據(jù)運(yùn)行模式數(shù)據(jù)決定主控芯片進(jìn)入boot運(yùn)行模式或應(yīng)用程序運(yùn)行模式。
所述主控芯片包括boot程序存儲(chǔ)區(qū)塊以及應(yīng)用程序存儲(chǔ)區(qū)塊,boot程序存儲(chǔ)區(qū)塊保存有用于引導(dǎo)主控芯片在boot運(yùn)行模式下運(yùn)作的boot程序,并且將更新的應(yīng)用程序保存在應(yīng)用程序存儲(chǔ)區(qū)塊中。
所述數(shù)據(jù)存儲(chǔ)芯片還保存有用于記錄更新的應(yīng)用程序成功寫入主控芯片的標(biāo)志數(shù)據(jù)。
一種通過網(wǎng)絡(luò)在線更新程序的工業(yè)控制板的更新方法,包括以下步驟(a)主控芯片初始化;
步驟(b)主控芯片讀取數(shù)據(jù)存儲(chǔ)芯片內(nèi)的運(yùn)行模式數(shù)據(jù),判斷運(yùn)行模式,若為boot運(yùn)行模式,則進(jìn)入步驟(c),若為應(yīng)用程序運(yùn)行模式,則進(jìn)入步驟(d);
步驟(c)接收計(jì)算機(jī)傳輸?shù)母碌膽?yīng)用程序并且寫入主控芯片中;
步驟(e)將數(shù)據(jù)存儲(chǔ)芯片內(nèi)的boot運(yùn)行模式修改為應(yīng)用程序運(yùn)行模式;
步驟(f)重啟主控芯片,返回步驟(a);
步驟(d)主控芯片根據(jù)應(yīng)用程序驅(qū)動(dòng)外部設(shè)備運(yùn)行。
所述步驟(b)與步驟(c)之間還包括步驟(c1)主控芯片讀取數(shù)據(jù)存儲(chǔ)芯片中的ip地址和/或mac地址。
所述步驟(c1)與步驟(c)之間還包括
步驟(c2)復(fù)位并初始化網(wǎng)絡(luò)控制芯片,開啟網(wǎng)絡(luò)服務(wù);
步驟(c3)主控芯片檢測是否與計(jì)算機(jī)構(gòu)成網(wǎng)絡(luò)連接,若否,則返回步驟(c2),若是,則進(jìn)入步驟(c)。
所述步驟(c3)與步驟(c)之間還包括步驟(c4)接收來自計(jì)算機(jī)的控制指令并且判斷控制指令,控制指令包括寫入更新的應(yīng)用程序或轉(zhuǎn)到應(yīng)用程序運(yùn)行模式或讀取主控芯片中的應(yīng)用程序,若控制指令為寫入更新的應(yīng)用程序,則進(jìn)入步驟(c),若控制指令為轉(zhuǎn)到應(yīng)用程序運(yùn)行模式,則進(jìn)入步驟(e),若控制指令為讀取主控芯片中的應(yīng)用程序則進(jìn)入步驟(c5);
步驟(c5)主控芯片將應(yīng)用程序發(fā)送到計(jì)算機(jī),并且返回步驟(c3)或(c4)。
所述步驟(c)與步驟(e)之間還包括步驟(e2)向數(shù)據(jù)存儲(chǔ)芯片內(nèi)寫入用于記錄更新的應(yīng)用程序成功寫入應(yīng)用程序存儲(chǔ)區(qū)塊的標(biāo)志數(shù)據(jù),并且進(jìn)入步驟(e)或者步驟(c3)或者步驟(c4)。
所述步驟(c)與步驟(e2)之間還包括步驟(e1)判斷更新的應(yīng)用程序是否成功寫入應(yīng)用程序存儲(chǔ)區(qū)塊,若是,則進(jìn)入步驟(e2),若否,則進(jìn)入步驟(c3)。
所述步驟(b)與所述步驟(d)之間還包括步驟(d1)讀取數(shù)據(jù)存儲(chǔ)芯片內(nèi)的標(biāo)志數(shù)據(jù),判斷更新的應(yīng)用程序是否成功寫入應(yīng)用程序存儲(chǔ)區(qū)塊,若是,則進(jìn)入步驟(d),若否,則進(jìn)入步驟(c1)。
本發(fā)明的有益效果:
本發(fā)明通過網(wǎng)絡(luò)在線更新程序的工業(yè)控制板,通過網(wǎng)絡(luò)控制芯片、主控芯片以及數(shù)據(jù)存儲(chǔ)芯片的組合,計(jì)算機(jī)與主控芯片構(gòu)成網(wǎng)絡(luò)通訊連接,計(jì)算機(jī)改寫數(shù)據(jù)存儲(chǔ)芯片中的運(yùn)行模式數(shù)據(jù),以準(zhǔn)確控制主控芯片的運(yùn)行狀態(tài),計(jì)算機(jī)控制主控芯片進(jìn)入boot運(yùn)行模式,并且向主控芯片輸入更新的應(yīng)用程序,主控芯片保存更新的應(yīng)用程序,在保存成功后,計(jì)算機(jī)控制主控芯片進(jìn)入應(yīng)用程序運(yùn)行模式,主控芯片在應(yīng)用程序運(yùn)行模式下,根據(jù)應(yīng)用程序驅(qū)動(dòng)外部設(shè)備運(yùn)行,本設(shè)計(jì)解決了以前需要專門的燒寫或通訊轉(zhuǎn)換裝置,以及受物理距離限定無法遠(yuǎn)程操作更新工業(yè)控制板內(nèi)應(yīng)用程序的問題極大提高了易用性和效率,使得操作更方便。
主控芯片內(nèi)劃分boot程序存儲(chǔ)區(qū)塊以及應(yīng)用程序存儲(chǔ)區(qū)塊,boot程序以及應(yīng)用程序分開區(qū)域存放,使得程序不易發(fā)生錯(cuò)亂,保證運(yùn)行的穩(wěn)定性。
更新應(yīng)用程序后,在數(shù)據(jù)存儲(chǔ)芯片中保存記錄更新的應(yīng)用程序成功寫入主控芯片的標(biāo)志數(shù)據(jù),并且在主控芯片運(yùn)行過程中可對標(biāo)志數(shù)據(jù)進(jìn)行查檢,確定更新的應(yīng)用程序正確無誤地錄入主控芯片中,保證主控芯片運(yùn)行的穩(wěn)定性。
附圖說明
下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式做進(jìn)一步的說明。
圖1是本發(fā)明工業(yè)控制板的原理圖。
圖2是本發(fā)明工業(yè)控制板boot運(yùn)行模式的示意流程圖。
圖3是本發(fā)明工業(yè)控制板應(yīng)用程序運(yùn)行模式的示意流程圖。
具體實(shí)施方式
如圖1所示,本發(fā)明通過網(wǎng)絡(luò)在線更新程序的工業(yè)控制板,包括,網(wǎng)絡(luò)控制芯片1、主控芯片2以及數(shù)據(jù)存儲(chǔ)芯片3,主控芯片2分別與網(wǎng)絡(luò)控制芯片1、數(shù)據(jù)存儲(chǔ)芯片3電性連接,網(wǎng)絡(luò)控制芯片1用于使主控芯片2與外部的計(jì)算機(jī)4網(wǎng)絡(luò)通訊連接,以使計(jì)算機(jī)4能夠?qū)⒏碌膽?yīng)用程序?qū)懭胫骺匦酒?中;
主控芯片2內(nèi)具有boot運(yùn)行模式以及應(yīng)用程序運(yùn)行模式,boot運(yùn)行模式下,主控芯片2將寫入來自計(jì)算機(jī)4的更新的應(yīng)用程序,應(yīng)用程序運(yùn)行模式下,主控芯片2根據(jù)應(yīng)用程序驅(qū)動(dòng)外部設(shè)備運(yùn)行;
數(shù)據(jù)存儲(chǔ)芯片3用于保存運(yùn)行模式數(shù)據(jù),計(jì)算機(jī)4改寫運(yùn)行模式數(shù)據(jù),該主控芯片2根據(jù)運(yùn)行模式數(shù)據(jù)決定主控芯片2進(jìn)入boot運(yùn)行模式或應(yīng)用程序運(yùn)行模式。
其中,主控芯片可以是dsp28335芯片,網(wǎng)絡(luò)控制芯片可以是w5300芯片、數(shù)據(jù)存儲(chǔ)芯片為fram存儲(chǔ)芯片,dsp28335芯片與w5300芯片之間使用16位總線連接,dsp28335芯片與fram存儲(chǔ)芯片之間使用i2c總線連接。
由w5300芯片控制網(wǎng)口通訊,工業(yè)控制板的網(wǎng)口接入計(jì)算機(jī)網(wǎng)絡(luò),與同樣接入網(wǎng)絡(luò)的計(jì)算機(jī)實(shí)現(xiàn)基于tcp/ip協(xié)議的網(wǎng)絡(luò)互聯(lián),此處工業(yè)控制板可持續(xù)監(jiān)聽502、503、504等多個(gè)網(wǎng)絡(luò)服務(wù)端口,實(shí)現(xiàn)冗余可用性,同時(shí)計(jì)算機(jī)客戶端軟件基于modbustcp協(xié)議向工業(yè)控制板發(fā)送命令和數(shù)據(jù),兼容性強(qiáng),可以與工業(yè)現(xiàn)場其他控制軟件無縫集成,并可按照協(xié)議接口,實(shí)現(xiàn)dsp程序自動(dòng)化批量更新,并且由tcp協(xié)議自帶校驗(yàn)和軟件計(jì)算校驗(yàn)兩種方式,可以在之后對更新的應(yīng)用程序的正確性做雙重驗(yàn)證。
計(jì)算機(jī)可以是本地計(jì)算機(jī)或者遠(yuǎn)程計(jì)算機(jī),本地計(jì)算機(jī)以及通過安全連接接入網(wǎng)絡(luò)的遠(yuǎn)程計(jì)算機(jī)可使用同一區(qū)域網(wǎng)絡(luò),與控制芯片在同一網(wǎng)絡(luò)內(nèi)相互訪問。
本設(shè)計(jì)通過網(wǎng)絡(luò)控制芯片1、主控芯片2以及數(shù)據(jù)存儲(chǔ)芯片3的組合,計(jì)算機(jī)4與主控芯片2構(gòu)成網(wǎng)絡(luò)通訊連接,計(jì)算機(jī)4改寫數(shù)據(jù)存儲(chǔ)芯片3中的運(yùn)行模式數(shù)據(jù),以準(zhǔn)確控制主控芯片2的運(yùn)行狀態(tài),計(jì)算機(jī)4控制主控芯片2進(jìn)入boot運(yùn)行模式,并且向主控芯片2輸入更新的應(yīng)用程序,主控芯片2保存更新的應(yīng)用程序,在保存成功后,計(jì)算機(jī)4控制主控芯片2進(jìn)入應(yīng)用程序運(yùn)行模式,主控芯片2在應(yīng)用程序運(yùn)行模式下,根據(jù)應(yīng)用程序驅(qū)動(dòng)外部設(shè)備運(yùn)行,本設(shè)計(jì)解決了以前需要專門的燒寫或通訊轉(zhuǎn)換裝置,以及受物理距離限定無法遠(yuǎn)程操作更新工業(yè)控制板內(nèi)應(yīng)用程序的問題極大提高了易用性和效率,使得操作更方便。
主控芯片2包括boot程序存儲(chǔ)區(qū)塊21以及應(yīng)用程序存儲(chǔ)區(qū)塊22,boot程序存儲(chǔ)區(qū)塊21保存有用于引導(dǎo)主控芯片2在boot運(yùn)行模式下運(yùn)作的boot程序,并且將更新的應(yīng)用程序保存在應(yīng)用程序存儲(chǔ)區(qū)塊22中,例如,在dsp28335芯片中,在flash中進(jìn)行定義,將1、2區(qū)作為boot程序存儲(chǔ)區(qū)塊21,3、4、5、6、7、8區(qū)作為應(yīng)用程序存儲(chǔ)區(qū)塊22。此處,將主控芯片2內(nèi)劃分boot程序存儲(chǔ)區(qū)塊21以及應(yīng)用程序存儲(chǔ)區(qū)塊22,boot程序以及應(yīng)用程序分開區(qū)域存放,使得程序不易發(fā)生錯(cuò)亂,保證運(yùn)行的穩(wěn)定性。
除此之外,數(shù)據(jù)存儲(chǔ)芯片3還保存有用于記錄更新的應(yīng)用程序成功寫入主控芯片2的標(biāo)志數(shù)據(jù),更新應(yīng)用程序后,在數(shù)據(jù)存儲(chǔ)芯片3中保存記錄更新的應(yīng)用程序成功寫入主控芯片2的標(biāo)志數(shù)據(jù),并且在主控芯片2運(yùn)行過程中可對標(biāo)志數(shù)據(jù)進(jìn)行查檢,確定更新的應(yīng)用程序正確無誤地錄入主控芯片中,保證主控芯片2運(yùn)行的穩(wěn)定性。
如圖2、圖3所示,而基于本設(shè)計(jì)的通過網(wǎng)絡(luò)在線更新程序的工業(yè)控制板,其更新程序的方法為,包括以下步驟:
步驟(a)主控芯片初始化;
步驟(b)主控芯片讀取數(shù)據(jù)存儲(chǔ)芯片內(nèi)的運(yùn)行模式數(shù)據(jù),判斷運(yùn)行模式,若為boot運(yùn)行模式,則進(jìn)入步驟(c),若為應(yīng)用程序運(yùn)行模式,則進(jìn)入步驟(d);
步驟(c)接收計(jì)算機(jī)傳輸?shù)母碌膽?yīng)用程序并且寫入主控芯片中;
步驟(e)將數(shù)據(jù)存儲(chǔ)芯片內(nèi)的boot運(yùn)行模式修改為應(yīng)用程序運(yùn)行模式;
步驟(f)重啟主控芯片,返回步驟(a);
步驟(d)主控芯片根據(jù)應(yīng)用程序驅(qū)動(dòng)外部設(shè)備運(yùn)行。
其中,步驟(b)與步驟(c)之間還包括步驟(c1)主控芯片讀取數(shù)據(jù)存儲(chǔ)芯片中的ip地址和/或mac地址,主控芯片讀取ip地址和/或mac地址,使得主控芯片能夠準(zhǔn)確接入計(jì)算機(jī)網(wǎng)絡(luò)。
然后,步驟(c1)與步驟(c)之間還可以包括步驟(c2)復(fù)位并初始化網(wǎng)絡(luò)控制芯片,開啟網(wǎng)絡(luò)服務(wù);步驟(c3)主控芯片檢測是否與計(jì)算機(jī)構(gòu)成網(wǎng)絡(luò)連接,若否,則返回步驟(c2),若是,則進(jìn)入步驟(c)。
再者,步驟(c3)與步驟(c)之間還包括步驟(c4)接收來自計(jì)算機(jī)的控制指令并且判斷控制指令,控制指令包括寫入更新的應(yīng)用程序或轉(zhuǎn)到應(yīng)用程序運(yùn)行模式或讀取主控芯片中的應(yīng)用程序,若控制指令為寫入更新的應(yīng)用程序,則進(jìn)入步驟(c),若控制指令為轉(zhuǎn)到應(yīng)用程序運(yùn)行模式,則進(jìn)入步驟(e),若控制指令為讀取主控芯片中的應(yīng)用程序則進(jìn)入步驟(c5);
步驟(c5)主控芯片將應(yīng)用程序發(fā)送到計(jì)算機(jī),并且返回步驟(c3)或(c4)。
步驟(c)與步驟(e)之間還包括步驟(e2)向數(shù)據(jù)存儲(chǔ)芯片內(nèi)寫入用于記錄更新的應(yīng)用程序成功寫入應(yīng)用程序存儲(chǔ)區(qū)塊的標(biāo)志數(shù)據(jù),并且進(jìn)入步驟(e)或者步驟(c3)或者步驟(c4),本設(shè)計(jì)在步驟(e2)后會(huì)返回到步驟(c3)檢測是否與計(jì)算機(jī)構(gòu)成網(wǎng)絡(luò)連接,并且重新接收計(jì)算機(jī)傳來的控制指令,此時(shí)控制指令一般為轉(zhuǎn)到應(yīng)用程序運(yùn)行模式,則進(jìn)入到步驟(c3),也相當(dāng)于,在步驟(c)接收計(jì)算機(jī)傳輸?shù)母碌膽?yīng)用程序并且寫入主控芯片后,最終會(huì)到達(dá)步驟(e),使得工業(yè)控制板更新程序完畢,進(jìn)入到應(yīng)用程序運(yùn)行模式。
步驟(c)與步驟(e2)之間還包括步驟(e1)判斷更新的應(yīng)用程序是否成功寫入應(yīng)用程序存儲(chǔ)區(qū)塊,若是,則進(jìn)入步驟(e2),若否,則進(jìn)入步驟(c3),此處證明有部分更新的應(yīng)用程序?qū)懭霊?yīng)用程序存儲(chǔ)區(qū)塊失敗,因此維持在boot運(yùn)行模式,重新檢測是否與計(jì)算機(jī)構(gòu)成網(wǎng)絡(luò)連接。
此處步驟(e1)與步驟(e2)中,如dsp28335芯片為例,3、4、5、6、7、8區(qū)每一個(gè)區(qū)完成寫入應(yīng)用程序均在數(shù)據(jù)存儲(chǔ)芯片3中寫入標(biāo)志數(shù)據(jù)。
在步驟(e)后,步驟(f)重啟主控芯片,返回步驟(a),此時(shí)步驟(b)中檢測到的是應(yīng)用程序運(yùn)行模式,則進(jìn)入步驟(d)。
步驟(b)與所述步驟(d)之間還包括步驟(d1)讀取數(shù)據(jù)存儲(chǔ)芯片內(nèi)的標(biāo)志數(shù)據(jù),判斷更新的應(yīng)用程序是否成功寫入應(yīng)用程序存儲(chǔ)區(qū)塊,若是,則進(jìn)入步驟(d),若否,則進(jìn)入步驟(c1),確保更新程序成功寫入主控芯片中,保證工業(yè)控制板運(yùn)行的安全性。
而在步驟(d)中,初始化工業(yè)控制板,并且在應(yīng)用程序運(yùn)行模式下驅(qū)動(dòng)外部設(shè)備運(yùn)作,同時(shí)循環(huán)檢測,運(yùn)行步驟(d2)檢查是否有計(jì)算機(jī)發(fā)來更新程序的命令,若否,則返回步驟(d)中循環(huán)檢測,若是,則進(jìn)入步驟(d3)將數(shù)據(jù)存儲(chǔ)芯片內(nèi)的應(yīng)用程序運(yùn)行模式修改為boot運(yùn)行模式,并且進(jìn)入步驟(f)。
以上所述僅為本發(fā)明的優(yōu)先實(shí)施方式,本發(fā)明并不限定于上述實(shí)施方式,只要以基本相同手段實(shí)現(xiàn)本發(fā)明目的的技術(shù)方案都屬于本發(fā)明的保護(hù)范圍之內(nèi)。