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

正文內(nèi)容

多個串口設(shè)備數(shù)據(jù)的連續(xù)采集-wenkub

2023-06-10 06:17:12 本頁面
 

【正文】 回: PV、 SV、 MV、 4FH、 4BH 其中 PV為測量值、 SV為設(shè)定值、 MV為輸出值,各占兩個字節(jié),低字節(jié)在前高字節(jié)在后。每幀數(shù)據(jù)包含 1個起始位(第 0位), 8個數(shù)據(jù)位(第 18位), 1個 “ 尋址 /數(shù)據(jù) ” 選擇位(第 9位,決定指令類別), 1個停止位,共 11位,數(shù)據(jù)采用 16進(jìn)制表達(dá)。 JW2A扭矩儀的數(shù)據(jù)處理流程如圖 。上位機(jī)應(yīng)按上述讀模擬通道量程的順序依次將16個字節(jié)寫回去。每個量程 2個字節(jié),共 16個字節(jié)。低 14位表示數(shù)值大小,最高 2位表示小數(shù)點(diǎn)位置。 13:讀模擬通道量程。 12:寫扭矩參數(shù)。注意,寫零點(diǎn)不能少于 60字節(jié)。每個零點(diǎn) 6個字節(jié)(前 4個字節(jié)是零點(diǎn),浮點(diǎn)數(shù),后 2個字節(jié)是轉(zhuǎn)速,無符號整數(shù),高位在前),共 60個字節(jié)。低 14位表示數(shù)值大小,最高 2位表示小數(shù)點(diǎn)位置。狀態(tài)字節(jié)各位的定義如表 。 6:調(diào)零操作。 8 工控程序設(shè)計 4:扣除 /不扣除轉(zhuǎn)換。 2:讀儀器存儲的數(shù)據(jù)數(shù)組。扭矩、轉(zhuǎn)速為浮點(diǎn)數(shù),每個參數(shù) 4個字節(jié)。受到命令后,根據(jù)命令執(zhí)行不同的任務(wù)。波特率可用跳線選擇 4800bps或 2400bps。 從儀表讀數(shù)據(jù)的指令格式為: EOT+儀表地址編號 +52H+參數(shù) +ENQ 表 發(fā)送給 HC100的數(shù)據(jù)格式 EOT 儀表編號(十位) 儀表編號(個位) R 參數(shù) ENQ 04H 30H 31H 52H 30H 30H 05H 5 工控程序設(shè)計 儀表返回數(shù)據(jù)的格式為: STX+儀表地址編號 +符號位 +測量值 +校驗碼+ETX。在鉆機(jī)性能測試系統(tǒng)中,還需要使用 JW2A扭矩儀、 HC100智能測控儀、 LU902M位式調(diào)節(jié)儀來采集其它參數(shù)的值,而這些設(shè)備的數(shù)據(jù)通信規(guī)則不同,所以必須對每種設(shè)備編寫通信程序,并同步、連續(xù)地采集多個設(shè)備的數(shù)據(jù)。 該教學(xué)情景中先針對上位機(jī)主動通信模式設(shè)計基類CActiveCOMHelper,再分別對三種不同的儀器分別設(shè)計派生類來進(jìn)行數(shù)據(jù)管理,實現(xiàn)對多個不同設(shè)備進(jìn)行同步、連續(xù)的數(shù)據(jù)采集。 其中的數(shù)據(jù)參數(shù)值為符號位 +4位有效位 +小數(shù)點(diǎn) , 共 6位 , 校驗碼為前面發(fā)送的 9個字節(jié)之和 。奇偶位在這里做地址和數(shù)據(jù)判別位, 1為地址, 0為數(shù)據(jù)。命令為一個字節(jié)。采樣時間為整數(shù), 2個字節(jié)。在非存儲狀態(tài)收到此命令,將向上位機(jī)傳送春初數(shù)據(jù)的數(shù)組。在扣除狀態(tài)收到此命令,將退出扣除狀態(tài);在非扣除狀態(tài)收到此命令,將進(jìn)入扣除狀態(tài)。儀器才測量狀態(tài)收到此命令,將啟動調(diào)零操作。 表 JW2A通信協(xié)議 Bit位置 等于 1的情況 等于 0的情況 bit0 存儲狀態(tài) 非存儲狀態(tài) bit1 釋放狀態(tài) 非釋放狀態(tài) bit2 扣除狀態(tài) 非扣除狀態(tài) bit3 外轉(zhuǎn)速狀態(tài) 內(nèi)轉(zhuǎn)速狀態(tài) bit4 調(diào)零狀態(tài) 非調(diào)零狀態(tài) bit5 外轉(zhuǎn)速通道為小電機(jī)轉(zhuǎn)速 外轉(zhuǎn)速通道為外轉(zhuǎn)速 bit6 外轉(zhuǎn)速通道有信號 外轉(zhuǎn)速通道無信號 bit7 儀器處于設(shè)置狀態(tài) 儀器處于測量狀態(tài) 9 工控程序設(shè)計 8:讀模擬通道數(shù)據(jù)。小數(shù)點(diǎn)位置為 0,有 0位小數(shù)點(diǎn);小數(shù)點(diǎn)位置為 1,有 1位小數(shù)點(diǎn);小數(shù)點(diǎn)位置為 2,有 2位小數(shù)點(diǎn)。 10:寫零點(diǎn)。 11:讀扭矩參數(shù)。儀器收到命令后準(zhǔn)備接受 11個參數(shù),共 24個字節(jié)的數(shù)據(jù)。儀器收到命令后向上位機(jī)依次傳送 8個通道的量程值。小數(shù)點(diǎn)位置為 0,有 0位小數(shù)點(diǎn);小數(shù)點(diǎn)位置為 1,有 1位小數(shù)點(diǎn),小數(shù)點(diǎn)位置為 2,有 2位小數(shù)點(diǎn)。數(shù)據(jù)類型是無符號整數(shù),高位在前。需要注意的是:寫模擬通道量程不能少于 16字節(jié)。 開 始結(jié) 束 清 理 緩 存 發(fā) 送 指 令接 收 數(shù) 據(jù)設(shè) 備 是 否 成 功 激 活NY 激 活 設(shè) 備等 待 完 整 返 回分 析 提 取 數(shù) 據(jù)圖 JW2A數(shù)據(jù)處理流程 12 工控程序設(shè)計 另外,儀器處于釋放狀態(tài)時,每釋放一組數(shù)據(jù)都會將數(shù)據(jù)從串口發(fā)送出來。在每個通訊指令中,儀表最后返回信息 4FH、 4BH表示通訊成功,返回 3FH, 3FH表示通訊失敗。 3)讀參數(shù)指令 指令格式: 52H + 參數(shù)代碼 儀表返回:參數(shù)值 + 4FH、 4BH 4)寫參數(shù)指令 指令格式: 57H + 參數(shù)代碼 + 參數(shù)值 儀表返回: 4FH、 4BH 5)結(jié)束指令 指令格式: 4FH或第 9位為 “ 1‖的非本機(jī)尋址指令 儀表無返回 13 工控程序設(shè)計 2 數(shù)據(jù)幀的校驗 數(shù)據(jù)幀校驗的目的是為了檢查接收到的數(shù)據(jù)幀的完整性和準(zhǔn)確性。串口通信中常用的校驗方式有累加和校驗、異或和校驗、循環(huán)冗余校驗等。實際應(yīng)用時,發(fā)送端計算出校驗碼值并附加在數(shù)據(jù)幀中發(fā)送給接收端,接收端對收到的數(shù)據(jù)重新計算校驗碼并與收到的校驗碼相比較,若兩個值不同,則說明數(shù)據(jù)通訊出現(xiàn)錯誤,要求發(fā)送端重新發(fā)送。 3)CRC寄存器向右移一位, MSB(最高有效位)補(bǔ)零,移出并檢查 LSB(最低有效位)。 6)重復(fù)第 2至第 5步直到所有數(shù)據(jù)全部處理完成。 (1)累加和校驗碼的計算 累加和校驗碼可以取累加和的低 8位( 1個字節(jié))或低 16位(兩個字節(jié)),在下位機(jī)處理能力允許的情況下采用兩個字節(jié)作校驗碼可以提高校驗的準(zhǔn)確度。 i++) sum += b[i]。 byte[] tmp = new byte[2]。 //數(shù)組元素累加求和 tmp[0] = (byte)(sum amp。 //高 8位在后 return tmp。 //附加在字節(jié)數(shù)組末尾 18 工控程序設(shè)計 下面的測試程序調(diào)用 CheckSum_2方法,計算出長度為兩個字節(jié)的累加和校驗碼,并附加在字節(jié)數(shù)組末尾: byte[] b ={0x41,0x42,0x43,0,0}。 (2)異或和校驗碼的計算 下面的 C代碼將異或和校驗碼生成功能封裝到 CCheck類的方法中,方法名為 XorSum: class CCheck { //函數(shù)功能: //計算字節(jié)數(shù)組 b中從 offset位置開始的 count個元素的單字節(jié)異或和校驗碼 //參數(shù): //b:要計算累加和的字節(jié)數(shù)組 //offset:要參與計算校驗碼的元素的起始位置 //count:要參與計算校驗碼的連續(xù)元素個數(shù) //返回值:異或和( 8位, 1個字節(jié)) 19 工控程序設(shè)計 public static byte XorSum(byte[] b, int offset, int count) { byte sum = 0。 //依次和每個元素進(jìn)行按位異或運(yùn)算 return sum。 //附加在字節(jié)數(shù)組末尾 20 工控程序設(shè)計 (3)循環(huán)冗余校驗碼的計算 下面的 C代碼將 CRC16校驗碼生成功能封裝到 CCheck類的方法中,方法名為 CRC16: class CCheck { //函數(shù)功能: //計算字節(jié)數(shù)組 b中從 offset位置開始的 count個元素的循環(huán)冗余校驗碼 //參數(shù): //b:要計算累加和的字節(jié)數(shù)組 //offset:要參與計算校驗碼的元素的起始位置 //count:要參與計算校驗碼的連續(xù)元素個數(shù) // CrcPoly: CRC多項式對應(yīng)的 16位二進(jìn)制編碼 //返回值:長度為 2的字節(jié)數(shù)組,第 1個元素為校驗碼的低 8位 //第 2個元素為校驗碼的高 8位 21 工控程序設(shè)計 public static byte[] CRC16(byte[] b, int offset, int count, ushort CrcPoly) { ushort CrcReg = 0xFFFF。 i offset + count。 n++) //進(jìn)行 8次邏輯移位 { LSB = CrcReg amp。 } } 22 工控程序設(shè)計 tmp[0] = (byte)(CrcReg amp。 //高 8位在后 return tmp。 //附加在字節(jié)數(shù)組末尾 b[] = sum[1]。 CCommand類實現(xiàn)代碼如下: public class CCommand { public string mandName。//回復(fù)內(nèi)容 24 工控程序設(shè)計 public int replyLength。 UI模塊首先查詢前一個命令是否完成( isCompleted是否為 true),若已經(jīng)完成,就設(shè)置下一條命令的名字、內(nèi)容、校驗方式、回復(fù)內(nèi)容的規(guī)定長度,交給 CActiveCOMHelper對象去執(zhí)行; CActiveCOMHelper對象執(zhí)行完命令后,把回復(fù)內(nèi)容填好,并將完成標(biāo)志 isCompleted設(shè)置為 true。//接收數(shù)據(jù)超時毫秒數(shù) public string portName。 private CCommand mand。 = baudRate。//默認(rèn) 3000毫秒讀取超時 = new CCommand()。 stopFlag = false。 (this)。 = 。 return cmd。 } protected virtual bool checkReply(string cmdType, byte[] bRecv) { return false。 } 29 工控程序設(shè)計 catch { return。 if ( == false) try { = readTi
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1