freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

自動(dòng)測(cè)試分選機(jī)軟件研發(fā)與人機(jī)界面設(shè)計(jì)-資料下載頁(yè)

2025-03-26 03:33本頁(yè)面
  

【正文】 測(cè)試系統(tǒng)正常復(fù)位 time = 0。 // 計(jì)時(shí)清0 run = 0。 // 停止 return true。 // 正常禁用 } return false。 // 有異常} 測(cè)試模塊復(fù)位程序設(shè)計(jì)bool CActTester::Reset(void){ = 0。 // 關(guān)閉清0 = 0。 // 不使能 = 0。 // 未開始 if ( CActTester::_OutputControl() ){ // 正常輸出控制字 return true。 } return false。 // 異常} 測(cè)試模塊初始化程序設(shè)計(jì)bool CActTester::Initialize(void){ if ( CActTester::_OutputNP() ){ // 輸出電平定義 = 1。 // 清0,上升延 = 1。 // 使能 if ( CActTester::_OutputControl() ){ // 輸出控制字 return true。 // 操作正常 } } return false。 // 異常} 測(cè)試模塊開始測(cè)試程序設(shè)計(jì)bool CActTester::StartUp(void){ = 0。 // 清0,下降延 = 1。 // 開始,上升延 if ( CActTester::_OutputControl() ){ // 輸出控制字 return true。 // 操作正常 } return false。 // 異常} 測(cè)試模塊讀取結(jié)果程序設(shè)計(jì)bool CActTester::ReadResult(void){ if ( CActTester::_InputControl() ){ // 讀入控制字 if ( ){ // 測(cè)試結(jié)束 if ( CActTester::_InputResult() ){ // 讀入測(cè)試結(jié)果 return true。 // 操作正常 } } } return false。 // 異常} 測(cè)試模塊結(jié)束程序設(shè)計(jì)bool CActTester::End(void){ if ( CActTester::Reset() ){ // 復(fù)位測(cè)試系統(tǒng) return true。 // 操作正常 } return false。 // 異常} 測(cè)試模塊錯(cuò)誤檢測(cè)程序設(shè)計(jì)void CActTester::ErrCheck(void){ switch ( run ) { case 0: errstr = _T()。 break。 case 0xe1: errstr = _T(聯(lián)機(jī)超時(shí))。 break。 case 0xee: errstr = _T(聯(lián)機(jī)信號(hào)出錯(cuò))。 break。 case 0xef: default: errstr = _T(未知錯(cuò)誤)。 break。 }} 測(cè)試模塊運(yùn)行控制程序設(shè)計(jì)int CActTester::Run(void){ if ( run != 0xff){ // 非測(cè)試結(jié)束 time += DELAY_LOOP。 } if ( time = DELAY_TESTERROR ){ // 超時(shí) CActTester::Disable()。 err = 0xe1。 } switch ( run ) // 根據(jù)當(dāng)前狀態(tài)進(jìn)行指定操作 { case 0: break。 case 1: // 第1步,復(fù)位 time = 0。 if ( CActTester::Reset() ){ // 正常復(fù)位 run = 2。 // 進(jìn)行初始化 } else { err = 0xee。 } break。 case 2: // 第2步,初始化 if ( CActTester::Initialize() ){ // 正常初始化 run = 3。 // 開始測(cè)試 } else { err = 0xee。 } break。 case 3: // 第3步,開始測(cè)試 if ( CActTester::StartUp() ){ // 測(cè)試速開始 run = 4。 // 讀取結(jié)果 } else { err = 0xee。 } break。 case 4: // 第4步,讀取結(jié)果 if ( CActTester::ReadResult() ){ // 正常讀取測(cè)試結(jié)果 run = 5。 // 結(jié)束測(cè)試 return 0xdd。 // 顯示信息 } else { err = 0xee。 } break。 case 5: // 第5步,測(cè)試結(jié)束 if ( CActTester::End() ){ // 正常結(jié)束測(cè)試 run = 0xff。 } else { err = 0xee。 } break。 case 0xff : break。 default : err = 0xef。 // 未定義錯(cuò)誤 break。 } return run。} 本章小結(jié)本章主要實(shí)現(xiàn)了自動(dòng)測(cè)試分選機(jī)的測(cè)試功能程序設(shè)計(jì),該模塊主要要與測(cè)試系統(tǒng)配合,設(shè)計(jì)了讀入控制信號(hào),讀入測(cè)試結(jié)果,輸出控制信號(hào),輸出電平定義,禁用測(cè)試,測(cè)試模塊復(fù)位、初始化、開始測(cè)試、讀取結(jié)果,結(jié)束,錯(cuò)誤檢測(cè)、運(yùn)行控制這一系列程序。第5章 TO220自動(dòng)測(cè)試分選機(jī)分選模塊設(shè)計(jì)與實(shí)現(xiàn) 分選模塊設(shè)計(jì)原理與思路 分選模塊設(shè)計(jì)思路分選電機(jī)轉(zhuǎn)一圈1000步,總共25個(gè)料桶,每個(gè)料桶對(duì)應(yīng)轉(zhuǎn)40步。根據(jù)TS測(cè)試系統(tǒng)和JUNO測(cè)試系統(tǒng)讀取的測(cè)試結(jié)果,根據(jù)分選程序得出目標(biāo)料桶號(hào),根據(jù)當(dāng)前料桶號(hào)和目標(biāo)料桶號(hào)計(jì)算出分選電機(jī)轉(zhuǎn)距和轉(zhuǎn)動(dòng)方向。 電機(jī)轉(zhuǎn)動(dòng)算法電機(jī)轉(zhuǎn)動(dòng)算法:1正轉(zhuǎn)料桶數(shù)=(目標(biāo)料桶號(hào)+25-當(dāng)前料桶號(hào))%25.=目標(biāo)料桶號(hào),則電機(jī)保持不動(dòng).>12,則反轉(zhuǎn).電機(jī)正轉(zhuǎn)步數(shù)=正轉(zhuǎn)料桶數(shù)40-緩沖步數(shù)電機(jī)反轉(zhuǎn)步數(shù)=(25-正轉(zhuǎn)料桶數(shù)) 40緩沖步數(shù)電機(jī)步距數(shù)高字節(jié)=轉(zhuǎn)動(dòng)脈沖數(shù)/256電機(jī)步距數(shù)低字節(jié)=轉(zhuǎn)動(dòng)脈沖數(shù)%256注:緩沖步數(shù)=10,由于數(shù)據(jù)總線只有8位,電機(jī)步距數(shù)可能超過256,所以對(duì)電機(jī)步距數(shù)分高、低字節(jié)傳輸。 分選模塊設(shè)計(jì)原理圖 分選模塊函數(shù)定義 struct CODER{ // 寫入 │ 讀取 unsigned char Code:5。 // 電機(jī)目標(biāo)編碼 │電機(jī)當(dāng)前編碼 bool Place:1。 // 定位點(diǎn) │定位點(diǎn) bool Res:1。 // 復(fù)位(置為1) │是否已停止 bool Start:1。 // 置數(shù)(高電平脈沖) │落管狀態(tài) }incoder,outcoder。 struct CONTROL{ // 0 │ 1 bool Enable:1。 // 使能端 禁用│使能 bool Dir:1。 // 正反轉(zhuǎn) 正轉(zhuǎn)│反轉(zhuǎn) bool Lock:1。 // 鎖定 松開│鎖定 bool ClearDown:1。 // 清除落管狀態(tài)(高電平脈沖) bool EnableDown:1。 // 落管感應(yīng)使能 禁用│使能 char _null:3。 }control。 分選模塊程序設(shè)計(jì) 分選模塊讀取電機(jī)當(dāng)前位置程序設(shè)計(jì)bool CActMotor::LoadCurrent(void){ if ( CActMotor::_InputCoder() ){ // 讀入編碼盤狀態(tài) if ( ){ // 在一個(gè)位置 motocur = 。 // 讀入當(dāng)前位置 return true。 // 狀態(tài)正常 } } else { motocur = 0。 // 讀取當(dāng)前位置出錯(cuò) err = 0xe1。 // 有錯(cuò)誤 } return false。} 分選模塊電機(jī)控制相關(guān)計(jì)算程序設(shè)計(jì)bool CActMotor::Calculate(void){ int t。 t = ( motodes + _boxnum motocur ) % _boxnum。 // 正轉(zhuǎn)所需步數(shù) if ( t == 0 ){ // 目標(biāo)與當(dāng)前位置一致,無需轉(zhuǎn)動(dòng) = 0。 pulse = 0。 } else if ( 2 * t _boxnum ){ // 正轉(zhuǎn)超過半圈,反轉(zhuǎn) = 1。 // 反轉(zhuǎn) pulse = int ( ( _boxnum t ) * _step ) _buffer。 // 脈沖數(shù)計(jì)算 } else { = 0。 // 正轉(zhuǎn) pulse = int ( t * _step ) _buffer。 // 脈沖數(shù)計(jì)算 } pulh = pulse 8。 // 脈沖數(shù)高8位 pull = pulse amp。 0x00ff。 // 脈沖數(shù)低8位 return true。} 分選模塊禁用電機(jī)(松開電機(jī)) 程序設(shè)計(jì)bool CActMotor::Disable(void){ = 0。 // 電機(jī)使能關(guān)閉 = 0。 // 正轉(zhuǎn) = 0。 // 電機(jī)松開 = 0。 // 清0信號(hào)低電平 = 0。 // 落管使能關(guān)閉 downen = false。 // 禁止落管 if ( CActMotor::_OutputControl() ){ return true。 // 正常關(guān)閉電機(jī) } return false。 // 異常} 分選模塊鎖定電機(jī)程序設(shè)計(jì)bool CActMotor::LockUp(void){ = 0。 // 關(guān)閉電機(jī)轉(zhuǎn)動(dòng)使能 = 1。 // 電機(jī)鎖定 if ( CActMotor::_OutputControl() ){ return true。 // 正常鎖定電機(jī) } return false。 // 異常} 分選模塊設(shè)置目標(biāo)位置程序設(shè)計(jì)bool CActMotor::SetDestination(void){ = motodes。 // 電機(jī)目標(biāo)位置 = 0。 // 電機(jī)定位點(diǎn) = 0。 // 電機(jī)非復(fù)位狀態(tài) = 0。 // 電機(jī)未啟動(dòng) if ( CActMotor::_OutputCoder() ){ Sleep(1)。 = 1。 // 電機(jī)啟動(dòng),Start信號(hào)上升沿 if ( CActMotor::_OutputCoder() ){ return true。 } } return false。 // 異常} 分選模塊電機(jī)初始化程序設(shè)計(jì)bool CActMotor::Initialize(void){ if ( run != MOTO_INIT ){ // 狀態(tài)異常 err = 0xe1。 return false。 // 異常 } = 0。 // 關(guān)閉落管使能 if ( !CActMotor::LockUp() ){ // 鎖住電機(jī) return false。 // 異常 } downen = false。 // 禁止落管 if ( !CActMotor::LoadCurrent() ){ // 讀取當(dāng)前位置 return false。 // 異常 } if ( !CActMotor::Calculate() ){ // 計(jì)算相關(guān)數(shù)據(jù) return false。 // 異常 } if ( (pulse == 0) amp。amp。 ( == 0) ){ // 當(dāng)前位置與目標(biāo)位相同,電機(jī)轉(zhuǎn)動(dòng)完成 run = MOTO_END。 } else if ( == 0 ){ // 當(dāng)前位置與目標(biāo)位置不同,且已正常讀取位置 if ( !CActMotor::SetDestination() ) { // 設(shè)置電機(jī)目標(biāo)位置 return false。 // 異常 } else { run = MOTO_START。 // 進(jìn)入下一步動(dòng)作 } } else { // 電機(jī)不在一個(gè)位置 run = MOTO_REINIT。 // 重初始化 } return true。 // 正常} 分選模塊啟動(dòng)電機(jī)程序設(shè)計(jì)bool CActMotor::StartUp(void){ if ( run != MOTO_START ){ // 狀態(tài)異常 err = 0xe1。 return false。 } if ( !CActMotor::_OutputPulse() ){ // 輸出脈沖數(shù) return false。 } = 0。 if ( !CActMotor::_OutputCoder() ){ // 輸出編碼盤 return false。 } = 1。 // 電機(jī)轉(zhuǎn)動(dòng)使能 if ( CActMotor::_OutputControl() ){ // 啟動(dòng)電機(jī) run = MOTO_ENDCHECK。 // 進(jìn)入下一步 return true。 } return false。 // 異常} 分選
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1