TO自動測試分選機軟件研發(fā)與人機界面設計_第1頁
TO自動測試分選機軟件研發(fā)與人機界面設計_第2頁
TO自動測試分選機軟件研發(fā)與人機界面設計_第3頁
TO自動測試分選機軟件研發(fā)與人機界面設計_第4頁
TO自動測試分選機軟件研發(fā)與人機界面設計_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

分類號密級UDC學位論文TO220自動測試分選機軟件研發(fā)與人機界面設計(題名和副題名)易華波(作者姓名)指導教師姓名康波副教授電子科技大學成都 胡澤高級工程師深圳深愛半導體有限公司深圳(職務、職稱、學位、單位名稱及地址)申請專業(yè)學位級別碩士專業(yè)學位類別工程碩士工程領域名稱軟件工程提交論文日期2010.08論文答辯日期2010.12學位授予單位和日期電子科技大學答辯委員會主席評閱人2010年8月日注1:注明《國際十進分類法UDC》的類號摘要全文總結TO220自動測試分選機測試模塊設計與實現(xiàn)設計思路三極管經(jīng)過導軌,由氣缸和傳感器配合動作,檢測落入測試工位,分選機對測試系統(tǒng)發(fā)出測試請求信號,等待測試系統(tǒng)測試,測試結束反饋分類信號,氣缸再動作,三極管落入下一工位測試。Clear:對站板緩沖器清零Enable:使能Start:測試請求信號設計原理圖測試模塊函數(shù)定義#pragmaonceclassCActTester{public: CActTester(unsignedshortadd_np,unsignedshortadd_control, unsignedshortadd_result); ~CActTester(void); structCONTROL{ //測試工位控制信號定義 boolStart:1; //開始測試 boolEnable:1; //使能 boolClear:1; //清零 char_null1:1; boolEnd:1; //測試結束 char_null2:3; }control,incontrol; //聯(lián)機測試控制信號 structNP{ //信號電平結構體 boolReq:1; //開始測試信號 boolBin:1; //分選信號 boolEnd:1; //測試結束信號 char_null:5; }np; inttime; //時間 intrun; //運動狀態(tài) interr; //錯誤狀態(tài) unsignedcharresult; //測試結果 CStringerrstr; //錯誤信息protected: unsignedshort_control; //控制字地址 unsignedshort_np; //電平定義字地址 unsignedshort_result; //測試結果地址 bool_InputControl(void); //讀入控制信號 bool_InputResult(void); //讀入測試結果 bool_OutputControl(void); //輸出控制信號 bool_OutputNP(void); //輸出電平定義public: boolDisable(void); //禁用測試系統(tǒng) boolReset(void); //復位 boolInitialize(void); //初始化 boolStartUp(void); //開始測試 boolReadResult(void); //讀取結果 boolEnd(void); //結束 voidErrCheck(void); //錯誤檢測 intRun(void); //運行控制};externboolinput(unsignedshort,PDWORD,BYTE); //端口輸入函數(shù)externbooloutput(unsignedshort,PDWORD,BYTE);//端口輸出函數(shù)測試模塊程序設計 測試模塊讀入控制信號程序設計boolCActTester::_InputControl(void){ if(input(_control,(PDWORD)&incontrol,1)){ //正常讀入控制字 returntrue; } err=0xee; //異常 returnfalse;}測試模塊讀入測試結果程序設計boolCActTester::_InputResult(void){ if(input(_result,(PDWORD)&result,1)){ //正常讀入測試結果 returntrue; } err=0xee; //異常 returnfalse;}測試模塊輸出控制信號程序設計boolCActTester::_OutputControl(void){ if(output(_control,(PDWORD)&control,1)){ //正常輸出控制字 returntrue; } err=0xee; //異常 returnfalse;}測試模塊輸出電平定義程序設計boolCActTester::_OutputNP(void){ if(output(_np,(PDWORD)&np,1)){ //正常輸出電平定義 returntrue; } err=0xee; //異常 returnfalse;}測試模塊禁用測試系統(tǒng)程序設計boolCActTester::Disable(void){ if(CActTester::Reset()){ //測試系統(tǒng)正常復位 time=0; //計時清0 run=0; //停止 returntrue; //正常禁用 } returnfalse; //有異常}測試模塊復位程序設計boolCActTester::Reset(void){ control.Clear=0; //關閉清0 control.Enable=0; //不使能 control.Start=0; //未開始 if(CActTester::_OutputControl()){ //正常輸出控制字 returntrue; } returnfalse; //異常}測試模塊初始化程序設計boolCActTester::Initialize(void){ if(CActTester::_OutputNP()){ //輸出電平定義 control.Clear=1; //清0,上升延 control.Enable=1; //使能 if(CActTester::_OutputControl()){ //輸出控制字 returntrue; //操作正常 } } returnfalse; //異常}測試模塊開始測試程序設計boolCActTester::StartUp(void){ control.Clear=0; //清0,下降延 control.Start=1; //開始,上升延 if(CActTester::_OutputControl()){ //輸出控制字 returntrue; //操作正常 } returnfalse; //異常}測試模塊讀取結果程序設計boolCActTester::ReadResult(void){ if(CActTester::_InputControl()){ //讀入控制字 if(incontrol.End){ //測試結束 if(CActTester::_InputResult()){ //讀入測試結果 returntrue; //操作正常 } } } returnfalse; //異常}測試模塊結束程序設計boolCActTester::End(void){ if(CActTester::Reset()){ //復位測試系統(tǒng) returntrue; //操作正常 } returnfalse; //異常}測試模塊錯誤檢測程序設計voidCActTester::ErrCheck(void){ switch(run) { case0: errstr=_T(""); break; case0xe1: errstr=_T("聯(lián)機超時"); break; case0xee: errstr=_T("聯(lián)機信號出錯"); break; case0xef: default: errstr=_T("未知錯誤"); break; }}測試模塊運行控制程序設計intCActTester::Run(void){ if(run!=0xff){ //非測試結束 time+=DELAY_LOOP; } if(time>=DELAY_TESTERROR){ //超時 CActTester::Disable(); err=0xe1; } switch(run) //根據(jù)當前狀態(tài)進行指定操作 { case0: break; case1: //第1步,復位 time=0; if(CActTester::Reset()){ //正常復位 run=2; //進行初始化 } else{ err=0xee; } break; case2: //第2步,初始化 if(CActTester::Initialize()){ //正常初始化 run=3; //開始測試 } else{ err=0xee; } break; case3: //第3步,開始測試 if(CActTester::StartUp()){ //測試速開始 run=4; //讀取結果 } else{ err=0xee; } break; case4: //第4步,讀取結果 if(CActTester::ReadResult()){ //正常讀取測試結果 run=5; //結束測試 return0xdd; //顯示信息 } else{ err=0xee; } break; case5: //第5步,測試結束 if(CActTester::End()){ //正常結束測試 run=0xff; } else{ err=0xee; } break; case0xff: break; default: err=0xef; //未定義錯誤 break; } returnrun;}本章小結本章主要實現(xiàn)了自動測試分選機的測試功能程序設計,該模塊主要要與測試系統(tǒng)配合,設計了讀入控制信號,讀入測試結果,輸出控制信號,輸出電平定義,禁用測試,測試模塊復位、初始化、開始測試、讀取結果,結束,錯誤檢測、運行控制這一系列程序。TO220自動測試分選機分選模塊設計與實現(xiàn)分選模塊設計原理與思路分選模塊設計思路分選電機轉(zhuǎn)一圈1000步,總共25個料桶,每個料桶對應轉(zhuǎn)40步。根據(jù)TS測試系統(tǒng)和JUNO測試系統(tǒng)讀取的測試結果,根據(jù)分選程序得出目標料桶號,根據(jù)當前料桶號和目標料桶號計算出分選電機轉(zhuǎn)距和轉(zhuǎn)動方向。電機轉(zhuǎn)動算法電機轉(zhuǎn)動算法:1正轉(zhuǎn)料桶數(shù)=(目標料桶號+25-當前料桶號)%25.2.若當前料桶號=目標料桶號,則電機保持不動.3.正轉(zhuǎn)料桶數(shù)>12,則反轉(zhuǎn).電機正轉(zhuǎn)步數(shù)=正轉(zhuǎn)料桶數(shù)×40-緩沖步數(shù)電機反轉(zhuǎn)步數(shù)=(25-正轉(zhuǎn)料桶數(shù))×40-緩沖步數(shù)電機步距數(shù)高字節(jié)=轉(zhuǎn)動脈沖數(shù)/256電機步距數(shù)低字節(jié)=轉(zhuǎn)動脈沖數(shù)%256注:緩沖步數(shù)=10,由于數(shù)據(jù)總線只有8位,電機步距數(shù)可能超過256,所以對電機步距數(shù)分高、低字節(jié)傳輸。分選模塊設計原理圖分選模塊函數(shù)定義 structCODER{ // 寫入 │ 讀取 unsignedcharCode:5; //電機目標編碼 │電機當前編碼 boolPlace:1; //定位點 │定位點 boolRes:1; //復位(置為1) │是否已停止 boolStart:1; //置數(shù)(高電平脈沖) │落管狀態(tài) }incoder,outcoder; structCONTROL{ // 0 │1 boolEnable:1; //使能端 禁用│使能 boolDir:1; //正反轉(zhuǎn) 正轉(zhuǎn)│反轉(zhuǎn) boolLock:1; //鎖定 松開│鎖定 boolClearDown:1; //清除落管狀態(tài)(高電平脈沖) boolEnableDown:1; //落管感應使能 禁用│使能 char_null:3; }control;分選模塊程序設計分選模塊讀取電機當前位置程序設計boolCActMotor::LoadCurrent(void){ if(CActMotor::_InputCoder()){ //讀入編碼盤狀態(tài) if(incoder.Place){ //在一個位置 motocur=incoder.Code; //讀入當前位置 returntrue; //狀態(tài)正常 } } else{ motocur=0; //讀取當前位置出錯 err=0xe1; //有錯誤 } returnfalse;}分選模塊電機控制相關計算程序設計boolCActMotor::Calculate(void){ intt; t=(motodes+_boxnum-motocur)%_boxnum; //正轉(zhuǎn)所需步數(shù) if(t==0){ //目標與當前位置一致,無需轉(zhuǎn)動 control.Dir=0; pulse=0; } elseif(2*t>_boxnum){ //正轉(zhuǎn)超過半圈,反轉(zhuǎn) control.Dir=1; //反轉(zhuǎn) pulse=int((_boxnum-t)*_step)-_buffer; //脈沖數(shù)計算 } else{ control.Dir=0; //正轉(zhuǎn) pulse=int(t*_step)-_buffer; //脈沖數(shù)計算 } pulh=pulse>>8; //脈沖數(shù)高8位 pull=pulse&0x00ff; //脈沖數(shù)低8位 returntrue;}分選模塊禁用電機(松開電機)程序設計boolCActMotor::Disable(void){ control.Enable=0; //電機使能關閉 control.Dir=0; //正轉(zhuǎn) control.Lock=0; //電機松開 control.ClearDown=0; //清0信號低電平 control.EnableDown=0; //落管使能關閉 downen=false; //禁止落管 if(CActMotor::_OutputControl()){ returntrue; //正常關閉電機 } returnfalse; //異常}分選模塊鎖定電機程序設計boolCActMotor::LockUp(void){ control.Enable=0; //關閉電機轉(zhuǎn)動使能 control.Lock=1; //電機鎖定 if(CActMotor::_OutputControl()){ returntrue; //正常鎖定電機 } returnfalse; //異常}分選模塊設置目標位置程序設計boolCActMotor::SetDestination(void){ outcoder.Code=motodes; //電機目標位置 outcoder.Place=0; //電機定位點 outcoder.Res=0; //電機非復位狀態(tài) outcoder.Start=0; //電機未啟動 if(CActMotor::_OutputCoder()){ Sleep(1); outcoder.Start=1; //電機啟動,Start信號上升沿 if(CActMotor::_OutputCoder()){ returntrue; } } returnfalse; //異常}分選模塊電機初始化程序設計boolCActMotor::Initialize(void){ if(run!=MOTO_INIT){ //狀態(tài)異常 err=0xe1; returnfalse; //異常 } control.EnableDown=0; //關閉落管使能 if(!CActMotor::LockUp()){ //鎖住電機 returnfalse; //異常 } downen=false; // 禁止落管 if(!CActMotor::LoadCurrent()){ //讀取當前位置 returnfalse; //異常 } if(!CActMotor::Calculate()){ //計算相關數(shù)據(jù) returnfalse; //異常 } if((pulse==0)&&(incoder.Place==0)){ //當前位置與目標位相同,電機轉(zhuǎn)動完成 run=MOTO_END; } elseif(incoder.Place==0){ //當前位置與目標位置不同,且已正常讀取位置 if(!CActMotor::SetDestination()){ //設置電機目標位置 returnfalse; //異常 } else{ run=MOTO_START; //進入下一步動作 } } else{ //電機不在一個位置 run=MOTO_REINIT; //重初始化 } returntrue; //正常}分選模塊啟動電機程序設計boolCActMotor::StartUp(void){ if(run!=MOTO_START){ //狀態(tài)異常 err=0xe1; returnfalse; } if(!CActMotor::_OutputPulse()){ //輸出脈沖數(shù) returnfalse; } outcoder.Start=0; if(!CActMotor::_OutputCoder()){ //輸出編碼盤 returnfalse; } control.Enable=1; //電機轉(zhuǎn)動使能 if(CActMotor::_OutputControl()){ //啟動電機 run=MOTO_ENDCHECK; //進入下一步 returntrue; } returnfalse; //異常}分選模塊檢測電機是否已轉(zhuǎn)到位程序設計boolCActMotor::EndCheck(void){ if(run!=MOTO_ENDCHECK){ //狀態(tài)異常 err=0xe1; returnfalse; } if(CActMotor::_InputCoder()){ if(incoder.Res==0&&incoder.Code==motodes){ //已轉(zhuǎn)到位 run=MOTO_END; motoretry=0; //電機重試計數(shù)清0 CActMotor::DownClear(); //鎖住電機,并清除落管 } returntrue; } returnfalse; //異常}分選模塊電機重新初始化程序設計boolCActMotor::ReInit(void){ if(run!=MOTO_REINIT){ //狀態(tài)異常 err=0xe1; returnfalse; } outcoder.Res=1; //置RES位為1 outcoder.Start=0; if(CActMotor::_OutputCoder()){ Sleep(1); outcoder.Start=1; if(CActMotor::_OutputCoder()){ //Start信號上升沿,電機啟動 control.EnableDown=0; //落管使能關閉 downen=false; //禁止落管 if(CActMotor::LockUp()){ //鎖定電機 run=MOTO_RESTART; //進入下一步 returntrue; } } } returnfalse; //異常}分選模塊電機重啟動程序設計boolCActMotor::ReStart(void){ if(run!=MOTO_RESTART){ //狀態(tài)異常 err=0xe1; returnfalse; //異常 } pulh=0; //設置脈沖數(shù)為0 pull=0; run=MOTO_START; //啟動電機 if(CActMotor::StartUp()){ run=MOTO_FINDPLACE; //進入下一步 returntrue; } returnfalse;}分選模塊尋找定位點程序設計boolCActMotor::FindPlace(void){ if(run!=MOTO_FINDPLACE){ //狀態(tài)異常 err=0xe1; returnfalse; } if(CActMotor::_InputCoder()){ //讀入編碼盤狀態(tài) if(incoder.Place==0){ //在一個定位點 run=MOTO_INIT; //電機初始化 returntrue; } } returnfalse; //異?;蛭凑业蕉ㄎ稽c}分選模塊清除落管并鎖定電機程序設計boolCActMotor::DownClear(void){ if(run!=MOTO_END){ err=0xe1; returnfalse; } control.ClearDown=1; //清0,Clear信號上升沿 control.EnableDown=0; //關閉落管使能 if(CActMotor::LockUp()){ Sleep(1); control.ClearDown=0; //清0,Clear信號下降沿 control.EnableDown=1; //打開落管使能 if(CActMotor::LockUp()){ //鎖定電機 downok=false; //未落管 downen=true; //允許落管 time_down=0; //落管計時清0 returntrue; } } returnfalse; //異常}分選模塊落管檢測程序設計boolCActMotor::DownCheck(void){ if(downen&&!downok){ //允許落管且管子未落下 time_down+=DELAY_LOOP; //計時增加一個周期 if(CActMotor::_InputCoder()){ //讀入編碼盤狀態(tài) if(incoder.Start){ //已落管 downok=true; //正常落管 returntrue; //已完成落管 } } } if(time_down>=3000){ //落管超時 err=0xed; } returnfalse; //異常}分選模塊錯誤檢測程序設計voidCActMotor::ErrorCheck(void){ switch(err) { case0: errstr=_T(""); break; case0xe1: errstr=_T("電機控制信號出錯."); break; case0xe2: errstr=_T("電機控制超時."); break; case0xed: errstr.Format(_T("三極管未落入第%d檔."),motodes); break; default: errstr=_T(""); break; }}分選模塊運行控制程序設計intCActMotor::Run(void){ //MOTO_INIT:電機初始化 MOTO_START:啟動電機 MOTO_ENDCHECK:檢測電機是否已轉(zhuǎn)到位 //MOTO_REINIT:重新初始化 MOTO_RESTART:重啟動 MOTO_FINDPLACE:尋找定位點 //MOTO_END:電機轉(zhuǎn)動結束 //0xe1:電機控制異常 0xe2:電機動作超時 0xed:落管超時錯誤 if(run!=MOTO_END){ //電機轉(zhuǎn)動未完成,計時增加 time+=DELAY_LOOP; } if(err==0xe1){ //電機控制異常 CActMotor::Disable(); //禁用電機 } elseif(time>=DELAY_MOTOERROR){ //電機動作超時 CActMotor::Disable(); //禁用電機 err=0xe2; } elseif(time>=DELAY_MOTOANCHORERROR){ //電機動作超過單次時間 ++motoretry; //重試計數(shù)增加 if(motoretry<4){ //重試次數(shù)未達到3次 run=MOTO_REINIT; //重試 CActMotor::ReInit(); //重新初始化電機 } } if(err!=0){ CActMotor::Disable(); run=0; } switch(run) { case0: break; caseMOTO_INIT: time=0; CActMotor::Initialize(); break; caseMOTO_START: CActMotor::StartUp(); caseMOTO_ENDCHECK: CActMotor::EndCheck(); break; caseMOTO_REINIT: CActMotor::ReInit(); break; caseMOTO_RESTART: CActMotor::ReStart(); break; caseMOTO_FINDPLACE: CActMotor::FindPlace(); break; caseMOTO_END: if(CActMotor::DownCheck()){ return0xdd; } break; case0xed: break; default: err=0xe1; break; } returnrun;}本章小結本章主要實現(xiàn)了三極管分選功能。該模塊主要控制分選電機轉(zhuǎn)向和步距,以及檢測落管。設計了讀取電機當前位置,電機控制相關計算,禁用電機(松開電機),鎖定電機,設置目標位置,電機初始化,啟動電機,檢測電機是否已轉(zhuǎn)到位,電機重新初始化,電機重啟動,尋找定位點,清除落管并鎖定電機,落管檢測,錯誤檢測,運行控制這一系列程序。TO220自動測試分選機人機界面模塊設計與實現(xiàn)人機界面模塊設計原理與思路人機界面模塊包括三大部分:系統(tǒng)測試運行界面、系統(tǒng)分選程序界面和系統(tǒng)功能設置界面。系統(tǒng)測試運行界面系統(tǒng)測試運行主界面實現(xiàn)功能,如圖7-1所示:圖7-1,系統(tǒng)測試運行主界面界面功能介紹:顯示24個料桶的當前數(shù)量和顯示當前總數(shù)。顯示各主要傳感器狀態(tài)和氣缸狀態(tài)。顯示當前調(diào)用分選程序信息。顯示A、B、C三個工位測試結果、當前系統(tǒng)信息和報警出錯信息提示。按鈕設置:運行、停止、復位、裝料啟動、整形夾啟動、退出、記數(shù)清零。系統(tǒng)分選程序界面系統(tǒng)分選程序界面實現(xiàn)功能分析,如圖7-2所示:圖7-2,分選程序編輯界面測試工位數(shù)量選擇:單工位、雙工位、三工位,分別A對應常規(guī)工位,B對應開關時間工位,C對應熱阻工位。一般選擇A和B雙工位,因為JUNO測試系統(tǒng)常規(guī)測試中可以帶熱阻測試功能。分選程序的新建、打開、保存、另存為。根據(jù)常規(guī)和開關時間的搭配組合,對應箱號即為所選常規(guī)分類和開關時間分類的組合??偣?5個箱,可以有25個分類選擇。其中,默認箱是排料復測箱。根據(jù)邏輯關系編輯分選程序并可實現(xiàn)加密/解密功能,防止意外更改。圖7-3,分選程序解鎖功能介紹:權限定義:操作員調(diào)用權限;工藝員修改權限;設備維護員修改權限。為了防止操作員意外修改,操作員在打開已編寫好的分選程序時,分選程序編輯處于鎖定狀態(tài),只能調(diào)用分選程序而不能修改程序。此時點擊“加密/解密”,則是分選程序解鎖,如圖7-3所示,需要輸入舊密碼,才能進入分選程序修改的界面。工藝員和設備維護員編寫和修改分選程序時,輸入舊密碼,即可進入分選程序編輯狀態(tài),如圖7-4所示,此時點擊“加密/解密”,默認則是更改密碼。輸入舊密碼和新密碼實現(xiàn)更改密碼功能。圖7-4,分選程序更改密碼4)在更改密碼對話框中,如圖7-5所示,此時點擊“刪除密碼”,則是輸入舊密碼即可刪除密碼。圖7-5,分選程序刪除密碼5)刪除密碼后,分選程序處于解密狀態(tài)。此時點擊“加密/解密”,則是設置新密碼,如圖7-6所示,輸入新密碼即可加密。圖7-6,分選程序加密系統(tǒng)功能設置程序界面系統(tǒng)功能設置界面中箱滿數(shù)量設置,如圖7-7所示:圖7-7,箱滿數(shù)量設置功能介紹:24個料桶的箱滿數(shù)量設定,根據(jù)三極管的大小,箱滿數(shù)量相應變化。一般TO220箱滿設定數(shù)為500個,TO126箱滿設定數(shù)為1000個,TO92箱滿設定數(shù)為3000個。系統(tǒng)功能設置界面中聯(lián)機信號設置,如圖7-8所示:圖7-8,聯(lián)機信號設置功能介紹:聯(lián)機信號設置測試請求信號、測試結束信號、測試分類信號。根據(jù)測試系統(tǒng)和自動分選機的信號,聯(lián)機信號需要匹配,才能使自動分選機得到對應的測試系統(tǒng)反饋信號結果。系統(tǒng)功能設置界面中數(shù)量清零設置,如圖7-9所示:圖7-9數(shù)量清零設置功能介紹:點擊每個箱號后的“清零”按鈕可以分別針對當前24個料桶數(shù)量單獨清零,點擊總數(shù)后的“清零”按鈕對當前總數(shù)單獨清零,點擊“所有箱清零”可以一次性對當前24個料桶數(shù)量全部清零。部分程序設計: //TODO:在此添加額外的初始化 if((file.encrypt&0x03)==0x01){ //已加密,已解鎖,默認為要更改密碼 file.encrypt=0x05; } CDlgEditerPassword::InitDisplay(); returnTRUE;//returnTRUEunlessyousetthefocustoacontrol //異常:OCX屬性頁應返回FALSE}voidCDlgEditerPassword::InitDisplay(void){ m_oldpw=""; m_newpw=""; m_checkpw=""; switch(file.encrypt&0x0D) { case0: //未加密,要加密 m_Edit_Old.EnableWindow(false); m_Edit_New.EnableWindow(true); m_Edit_Check.EnableWindow(true); m_delpw.ShowWindow(SW_HIDE); m_delpw.SetCheck(BST_UNCHECKED); m_changepw.ShowWindow(SW_HIDE); m_changepw.SetCheck(BST_UNCHECKED); SetDlgItemText(IDOK,_T("加密")); SetWindowText(_T("加密")); break; case1: //已加密,要解鎖 m_Edit_Old.EnableWindow(true); m_Edit_New.EnableWindow(false); m_Edit_Check.EnableWindow(false); m_delpw.ShowWindow(SW_SHOW); m_delpw.SetCheck(BST_UNCHECKED); m_changepw.ShowWindow(SW_SHOW); m_changepw.SetCheck(BST_UNCHECKED); SetDlgItemText(IDOK,_T("解鎖")); SetWindowText(_T("解鎖")); break; case5: //已加密,已解鎖,要更改密碼 m_Edit_Old.EnableWindow(true); m_Edit_New.EnableWindow(true); m_Edit_Check.EnableWindow(true); m_delpw.ShowWindow(SW_SHOW); m_delpw.SetCheck(BST_UNCHECKED); m_changepw.ShowWindow(SW_SHOW); m_changepw.SetCheck(BST_CHECKED); SetDlgItemText(IDOK,_T("更改密碼")); SetWindowText(_T("更改密碼")); break; case9: //已加密,已解鎖,要刪除密碼 m_Edit_Old.EnableWindow(true); m_Edit_New.EnableWindow(false); m_Edit_Check.EnableWindow(false); m_delpw.ShowWindow(SW_SHOW); m_delpw.SetCheck(BST_CHECKED); m_changepw.ShowWindow(SW_SHOW); m_changepw.SetCheck(BST_UNCHECKED); SetDlgItemText(IDOK,_T("刪除密碼")); SetWindowText(_T("刪除密碼")); break; default: m_Edit_Old.EnableWindow(false); m_Edit_New.EnableWindow(false); m_Edit_Check.EnableWindow(false); m_delpw.EnableWindow(false); m_changepw.EnableWindow(false); GetDlgItem(IDOK)->EnableWindow(false); SetWindowText(_T("密碼狀態(tài)未知,請聯(lián)系相關人員")); }}本章小結本章主要介紹了TO220自動測試分選機的人機界面設計,通過系統(tǒng)測試運行界面、系統(tǒng)分選程序界面和系統(tǒng)功能設置界面三個界面設定,實現(xiàn)對分選機操作與運行。全文總結對本系統(tǒng)已完成部分的說明該系統(tǒng)平臺的設計主要采用了提出問題、分析問題、解決問題的理論基礎、解決問題的方法,具體問題的設計開發(fā)和軟件實現(xiàn)部分進行功能設計的模式。本系統(tǒng)主要從系統(tǒng)軟件控制方面運用VISUALC++6.0軟件自行研發(fā)設計了自動測試分選機的送料模塊、測試模塊、分選模塊以及人機界面模塊這四大模塊。通過實時控制,對每個模塊的傳感器、氣缸以及電機的狀態(tài)進行檢測,判斷各個模塊現(xiàn)在所處的狀態(tài),進而系統(tǒng)控制各個模塊的下一個運行狀態(tài)。存在問題的說明與發(fā)展方向和展望由于時間有限,原本計劃在人機界面模塊中設計出自動測試分選機的自檢模塊,可對設備的各個模塊的傳感器感應是否正常、氣缸動作是否正常,測試電機和分選電機轉(zhuǎn)動是否正常,以及配合編碼盤進行電機尋位是否轉(zhuǎn)到位,與測試系統(tǒng)的聯(lián)機狀態(tài),振盤和信號燈是否正常一一都可以進行自檢,方便

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論