串口通信在雙機(jī)冗余系統(tǒng)中應(yīng)用論文

串口通信在雙機(jī)冗余系統(tǒng)中應(yīng)用論文

ID:25363899

大?。?0.00 KB

頁(yè)數(shù):7頁(yè)

時(shí)間:2018-11-19

串口通信在雙機(jī)冗余系統(tǒng)中應(yīng)用論文_第1頁(yè)
串口通信在雙機(jī)冗余系統(tǒng)中應(yīng)用論文_第2頁(yè)
串口通信在雙機(jī)冗余系統(tǒng)中應(yīng)用論文_第3頁(yè)
串口通信在雙機(jī)冗余系統(tǒng)中應(yīng)用論文_第4頁(yè)
串口通信在雙機(jī)冗余系統(tǒng)中應(yīng)用論文_第5頁(yè)
資源描述:

《串口通信在雙機(jī)冗余系統(tǒng)中應(yīng)用論文》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、串口通信在雙機(jī)冗余系統(tǒng)中應(yīng)用論文摘要:本文扼要分析了當(dāng)今帶專(zhuān)用檢測(cè)轉(zhuǎn)換電路的雙機(jī)冗余系統(tǒng)存在的可靠性問(wèn)題,提出了利用雙機(jī)的串行口代替專(zhuān)用檢測(cè)轉(zhuǎn)換電路,通過(guò)串行通信相互檢測(cè)主備機(jī)工作狀態(tài),由軟件完成備機(jī)切換成主機(jī)的新型設(shè)計(jì)思想,為計(jì)算機(jī)在工業(yè)實(shí)時(shí)監(jiān)控系統(tǒng)應(yīng)用中的可靠性開(kāi)辟新思路。關(guān)鍵詞:雙機(jī)冗余軟件切換1、引言冗余技術(shù)是計(jì)算機(jī)系統(tǒng)可靠性設(shè)計(jì)中常用的一種技術(shù),是提高計(jì)算機(jī)系統(tǒng)可靠性的最有效方法,同時(shí)也是鑒別各類(lèi)計(jì)算機(jī)控制系統(tǒng)好壞的標(biāo)志之一。故世界各地廠(chǎng)商推出的新產(chǎn)品都或多或少帶有冗余技術(shù)。如美國(guó)的Honeyeout用于設(shè)定以毫秒

2、為單位的超時(shí)間隔,而Update,.freels的定時(shí)中斷(采用QueryPerformanceCounter((LARGE_INTEGER*)endtime)計(jì)數(shù)方式),每次中斷將全局變量timeout的值減1,減到0時(shí)即關(guān)閉定時(shí)器0。所有需要軟件超時(shí)機(jī)制或延時(shí)功能的程序模塊都可在設(shè)定timeout的值后開(kāi)啟定時(shí)器0,并通過(guò)判斷該變量的值是否為0而實(shí)現(xiàn)定時(shí)功能。定時(shí)器1產(chǎn)生每隔55ms的定時(shí)中斷(采用SetTime(55)函數(shù))。每次中斷,主備單元的中斷服務(wù)程序都向?qū)Ψ絾卧l(fā)送表示自身工作狀態(tài)正常的OK字符,同時(shí)也接收對(duì)方

3、單元發(fā)送的OK字符,若連續(xù)三次都未能成功接收,則本單元認(rèn)為對(duì)方單元出了故障,并將表示對(duì)方單元工作狀態(tài)的全局變量Failure置為常量Yes,否則,置為No;若為備機(jī),還將表示主備身份的標(biāo)志變量CpuStatus的值置為Main,從而為備機(jī)程序切換和給出原主機(jī)故障提示設(shè)置判斷標(biāo)志。若備機(jī)在中斷服務(wù)程序中接收到字符REQ,則置表示備份數(shù)據(jù)是否更新的標(biāo)志變量Update為Yes,并立即退出中斷服務(wù)程序,以便主程序及時(shí)接收備份數(shù)據(jù)幀。主函數(shù)在完成應(yīng)用系統(tǒng)的公共初使化,主備單元的定時(shí)器1在后臺(tái)產(chǎn)生定時(shí)中斷并通過(guò)串行通信進(jìn)行相互檢測(cè),由

4、于規(guī)定兩個(gè)單元的上電時(shí)間間隔大于500ms,因此,利用中斷服務(wù)程序的檢測(cè)結(jié)果必能自動(dòng)確定初使的主備身份。主函數(shù)延時(shí)500ms后,即根據(jù)當(dāng)前的主備身份自動(dòng)進(jìn)入主(備)機(jī)的前臺(tái)監(jiān)控例程,主機(jī)的前臺(tái)監(jiān)控例程除完成應(yīng)用功能外,當(dāng)應(yīng)用功能改變了需要備份的數(shù)據(jù)時(shí),則調(diào)用send_frame函數(shù)關(guān)閉定時(shí)器1的中斷并發(fā)送備份數(shù)據(jù)幀。當(dāng)備機(jī)的前臺(tái)監(jiān)控例程判斷出需要接收備份數(shù)據(jù)時(shí),調(diào)用receive_frame函數(shù)關(guān)閉定時(shí)器1的中斷并接收備份數(shù)據(jù)幀。當(dāng)備機(jī)的前臺(tái)監(jiān)控例程監(jiān)視到主機(jī)故障時(shí),備機(jī)的前臺(tái)監(jiān)控循環(huán)自動(dòng)切換進(jìn)入主機(jī)的前臺(tái)監(jiān)控循環(huán)。主函數(shù)中

5、的監(jiān)控切換代碼較難理解,應(yīng)結(jié)合并發(fā)執(zhí)行的定時(shí)器1的中斷服務(wù)程序一起分析。函數(shù)send_char和receive_char通過(guò)串行口直接發(fā)送和接收單個(gè)字符。函數(shù)send_frame和receive_frame分別發(fā)送和接收備份數(shù)據(jù)幀。VC++中用通訊控件開(kāi)發(fā)串行通信程序,通訊控件的工作原理類(lèi)似與中斷方式,當(dāng)有通訊事件發(fā)生時(shí)(如發(fā)送數(shù)據(jù)、接收數(shù)據(jù)等),就會(huì)觸發(fā)Onm事件,在該事件的處理函數(shù)中調(diào)用GetmEvent()函數(shù),通過(guò)返回值即可確定是那類(lèi)事件,再作出相應(yīng)的處理。通信成功時(shí)返回1,否則返回0。Delay為以毫秒數(shù)為調(diào)用參數(shù)

6、的延時(shí)函數(shù)。限于篇幅,本文僅給出完成檢測(cè)切換功能的主函數(shù)和定時(shí)器1的中斷服務(wù)函數(shù),以及相關(guān)數(shù)據(jù)的代碼,其它函數(shù)僅給出函數(shù)原型。代碼如下:#include"stdafx.h"#include"Try.h"#include"TryDoc.h"#include"TryVieeout;boolUpdate,Failure;charCpuStatus12,voiddelay(unsignedinttime);voidCTryDlg::Send_char(unsignedcharch){if(!m_m.GetPortOpen()){m_

7、m.SetPortOpen(TRUE);//打開(kāi)串口m_m.SetOutput(COleVariant(ch));//發(fā)送數(shù)據(jù)}}voidCTryDlg::receive_char(unsignedchar*ch){VARIANTm_input1;if(m_m.GetInBufferCount()){m_input1=m_m.GetInput();//讀取緩沖區(qū)內(nèi)的數(shù)據(jù)ch=m_input1.bstrVal;//將VARIANT型變量轉(zhuǎn)換為CString型變量return1;}elsereturn0;}mian(){和應(yīng)用系

8、統(tǒng)相關(guān)的公共初使化程序段;Updata=false;Failure=true;Delay(500);/*等待與對(duì)方建立通信連接,通信由定時(shí)器1的中斷例程完成*/If(Failure)/*在定時(shí)器1的中斷例程判斷出初使主備狀態(tài)后*/{CpuStatus=MAIN;和應(yīng)用系統(tǒng)實(shí)現(xiàn)相關(guān)的主機(jī)初使

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。