




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、測控網絡課程設計一、實踐要求本次實踐以開發DCS測控系統為最終目的,要求掌握DCS測控系統的工作原理,學習組態王工控組態軟件的使用方法,根據要求完成工程組態;掌握MODBUS通信協議的原理,開發具有MODBUS通訊功能的智能儀表,最終完成和組態工程之間的通訊。二、實踐內容分為兩大部分:1、組態王基本操作 2、 MODBUS通訊具體內容:(1) 熟悉組態王軟件安裝,基本開發環境,采用構建簡單的工程(采用仿真數據和設備,工程應包含PID功能),計劃時間1天;(2) 根據罐區工藝的要求,完成相應的組態工程,實現對原油儲罐的監控,計劃時間2天;(3) 掌握MODBUS通訊協議的工作原理,在MSP430
2、F5438單片機上編程實現MODBUS客戶端服務程序,要求通過串行口將現場的溫度、泵狀態、流量等參數上傳到上位機上,計劃時間3天。(4) 在單片機上編程實現流量、溫度上下限及儀表地址和波特率等參數設置功能,同時能從上位機對儀表參數進行設置,計劃時間2天。(5) 優化設計,要求當出現通訊錯誤時在上位機和單片機上都要做出相應的反應,計劃時間0.5天。(6) 上位機采用高級語言編程,實現對現場智能儀表的控制。 熟悉現場總線測控網絡系統,搭建PROFIBUS網絡,實現對ET200S和S7-200的控制。組態王部分一、設計要求根據罐區工藝的要求,完成相應的組態工程,實現對原油儲罐的監控。1、罐區工藝流程
3、圖2- 儲油罐進口電動閥;3- 儲油罐排污電動閥;4- 儲油罐出口電動閥;5- 泵圖1:罐區工藝流程圖2、具體要求(1)監測各罐的液位(0-20m)/ (0-1m)/溫度(0-100度)(現場儀表4-20mA輸出)。(2)根據各罐液位控制各罐出口電動閥(H>16m, 關進口閥,選擇最低液位的罐進油;H<2m,關出口閥,選擇最高液位的罐出油),手動遙控排污閥。液位H>15.5m高報警, H>17m高高報警; 液位H<2m低報警, H<1.5m低低報警。 界位>1m高報警, 界位>1.5m高高報警; 界位<0.5m低報警, H<0.2m低
4、低報警;(3)啟動泵組設置出入口流量(100M3/h,200M3/h,250M3/h)二、設計內容(一)組態數據庫: 數據庫-數據詞典(二)組態畫面畫面1:工藝流程總畫面對畫面的基本說明:主要功能:對油罐液位的監測。泵總開關控制進口的3個泵的總開和總關;泵總關閉控制出口的3個泵的總關和總開;當同時按下泵提示和某一個泵的按鈕,顯示該泵的詳細信息; 液位報警和界位報警時記錄相應的報警事件;液位實時和歷史曲線記錄油罐液位的變化情況。畫面2:各泵彈出式放大畫面(包括參狀態/型號等),點擊總畫面上的泵彈出此畫面1、編寫事件命令語言:當同時按下泵提示和某一個泵的按鈕,顯示該泵的參數信息。2、彈出畫面畫面3
5、:液位/界位報警畫面報警設置:低低、低、高、高高報警值設置:液位報警畫面:畫面4:液位/溫度/界位各一個實時趨勢圖和歷史趨勢圖實時趨勢圖: 選擇工具箱中的 工具,在畫面上繪制一實時趨勢曲線窗口。在曲線定義選項卡中選擇要實時反映的變量。歷史趨勢圖: 對于要以歷史趨勢曲線形式顯示的變量,必須設置變量的記錄屬性。在“定義變量”對話框中單擊“記錄和安全區”屬性頁,將不記錄改為數據變化記錄,變化靈敏為:0。在工程瀏覽器窗口左側的“工程目錄顯示區”中雙擊“系統配置”中的“歷史數據記錄”選項,彈出“歷史記錄配置”對話框。實時和歷史趨勢圖:畫面4:報表畫面(液位,溫度,界位)報表分為實時數據報表和歷史數據報表
6、。(3)優化設置1、組態操作權限優先級分 1999 級,1 級最低999 級最高。每個操作者的優先級別只有一個。系統安全區共有64 個,用戶在進行配置時。每個用戶可選擇除“無”以外的多個安全區,即一個用戶可有多個安全區權限。設置油罐用戶組,將管理員、操作員看成用戶,并設置管理員優先級最高,并設置相應的密碼。 配置 運行現象 登陸界面2、通過鏈接切換畫面增加報警畫面、趨勢圖、報表畫面,通過右側鏈接(4)畫面命令語言變量說明:g1、g2、g3、g4代表每個油罐的液位,in代表泵總開,out代表泵總關,in1、in2、in3、in4代表每個油罐的入口閥門,out1、out2、out3、out4代表每
7、個油罐的出口閥門,clear1、clear2、clear3、clear4代表手動排污閥。bengin1,2,3和bengout1,2,3代表進口泵和出口泵。num代表泵輸入總流量的比num=bengin1*1 + bengin2*2 + bengin3*2.5;num1代表泵輸出總流量的比num1=bengout1*1 + bengout2*2 + bengout3*2.5;設置每個油罐跟液位相關的系數值xishu1=0.25;xishu2=0.2;xishu3=0.15;xishu4=0.3;if(in=1 && num>0)如果油罐1液位最低,增加油罐1的液位if(g
8、1<=g2 && g1<=g3 && g1<=g4 && g1<16)in1=1;in2=0;in3=0;in4=0;g1=g1+num*xishu1; else 如果油罐2液位最低,增加油罐2的液位if(g2<g1 && g2<=g3 && g2<=g4 && g2<16)in1=0;in2=1;in3=0;in4=0;g2=g2+xishu2*num;else如果油罐3液位最低,增加油罐3的液位if(g3<g1 && g3&l
9、t;g2 && g3<=g4 && g3<16)in1=0;in2=0;in3=1;in4=0;g3=g3+xishu3*num;else如果油罐4液位最低,增加油罐4的液位if(g4<g1 && g4<g2 && g4<g3 && g4<16)in1=0;in2=0;in3=0;in4=1;g4=g4+xishu4*num;if(out=1 && num1>0)如果油罐1液位最高,降低油罐1的液位if(g1>=g2 && g1>
10、=g3 && g1>=g4 && g1>2)out1=1;out2=0;out3=0;out4=0;g1=g1-xishu1*num1;else如果油罐2液位最高,降低油罐2的液位if(g2>=g1 && g2>=g3 && g2>=g4 && g2>2)out1=0;out2=1;out3=0;out4=0;g2=g2-xishu2*num1;else如果油罐3液位最高,降低油罐3的液位if(g3>=g1 && g3>=g2 && g
11、3>=g4 && g3>2)out1=0;out2=0;out3=1;out4=0;g3=g3-xishu3*num1;else如果油罐4液位最高,降低油罐4的液位if(g4>=g1 && g4>=g2 && g4>=g3 && g4>2)out1=0;out2=0;out3=0;out4=1;g4=g4-xishu4*num1;if(clear1=1 | clear2=1 | clear3=1 | clear4=1)手動排污g1=g1-clear1*0.1;g2=g2-clear2*0.1;g
12、3=g3-clear3*0.1;g4=g4-clear4*0.1;/jiewei1=jiewei1-0.1*clear1;/jiewei2=jiewei2-0.1*clear2;/jiewei3=jiewei3-0.1*clear3;/jiewei4=jiewei4-0.1*clear4;如果液位大于16,關閉相應的進口閥if(g1>=16)in1=0;if(g2>=16)in2=0;if(g3>=16)in3=0;if(g4>=16)in4=0;如果液位小于2,關閉相應出口閥if(g1<=2)out1=0;if(g2<=2)out2=0;if(g3<
13、=2)out3=0;if(g4<=2)out4=0;if(num=0)in1=0;in2=0;in3=0;in4=0;if(num1=0)out1=0;out2=0;out3=0;out4=0;(5)運行總畫面(6)與PLC通信設置在工程瀏覽器中選擇設備com1新建,如下圖,配置com口跟PLC連接。設置bengin1,2,3和bengout1,2,3分別與Q0.0等相聯系,可觀察到PLC輸出指示燈會隨著這些變量的改變和改變。三、組態王部分總結組態王是組態王軟件是一種通用的工業監控軟件,它融過程控制設計、現場操作以及工廠資源管理于一體,將一個企業內部的各種生產系統和應用以及信息交流匯集在
14、一起,實現最優化管理,操作方便,界面美觀。組態王軟件結構由工程管理器、工程瀏覽器及運行系統三部分構成。通過這次課程設計,我們學會了如何建立一個組態王工程,如何設計界面,編寫命令語言、以及報警事件、趨勢曲線和報表的相關制作,權限的設置,以及與實際設備的簡單通信,通過本次實習,我想在以后工作中,我們會更好的應用此例軟件,完成工業監控。智能儀表部分一、MODBUS ASCII和MODBUS RTU通訊協議簡介Modbus 協議是應用于電子控制器上的一種通用語言。通過此協議,控制器相互之間、控制器經由網絡(例如以太網)和其它設備之間可以通信。此協議定義了一個控制器能認識使用的消息結構,而不管它們是經過
15、何種網絡進行通信的。它描述了控制器請求訪問其它設備的過程,如果回應來自其它設備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內容的公共格式。兩種串行傳輸模式:RTU 模式和 ASCII 模式。RTU傳輸模式:當設備使用RTU (Remote Terminal Unit) 模式在Modbus 串行鏈路通信, 報文中每個8位字節含有兩個4 位十六進制字符。這種模式的主要優點是較高的數據密度,在相同的波特率下比ASCII 模式有更高的吞吐率。每個報文必須以連續的字符流傳送。RTU 模式每個字節( 11 位 ) 的格式為 :編碼系統: 8位二進制,報文中每個8 位字節含有兩個4 位十六進制字符(
16、09, AF。)Bits per Byte: 1 起始位,8 數據位,首先發送最低有效位,1 位作為奇偶校驗,1停止位。ASCII傳輸模式當 Modbus 串行鏈路的設備被配置為使用ASCII (American Standard Code for Information Interchange) 模式通信時, 報文中的每個 8 位子節以兩個ASCII 字符發送。ASCII 模式每個字節( 10 位 ) 的格式為 :編碼系統: 十六進制,ASCII 字符 0-9,A-F。報文中每個ASCII 字符含有1 十六進制字符。Bits per Byte: 1 起始位,7 數據位,首先發送最低有效位,1
17、 位奇偶校驗,1 停止位。03讀保持寄存器上位機發送數據格式:“ : ” ADDRESS 03 ADDRH ADDRL NUMH NUML LRC 0X0D 0X0A正確時變頻器返回數據格式:“ : “ ADDRESS 03 BYTECOUNT DATA1 DATA2 DATA3 DATAN LRC 0D 0A06 寫單個保持寄存器值上位機發送數據格式:“ : “ ADDRESS 06 ADDRH ADDRL DATAH DATAL LRC 0X0D 0X0A正確時變頻器返回數據格式:“ : “ ADDRESS 06 ADDRH ADDRL DATAH DATAL LRC 0X0D 0X0A二
18、、MODBUS ASCII編程以及與組態王通信1、變量定義unsigned char ERR21= " Input LRC ERROR!" /出錯時顯示字符unsigned char RX32; /單片機接受數據數組unsigned char TX32; /03功能時單片機發送數據數組unsigned char TX632; /06功能時單片機發送數據數組unsigned char Buf10; /存儲數據的數組unsigned int flag; / 上位機發送數據標志位unsigned int flag1; /單片機應答數據標志位unsigned int flow; /
19、 流量值unsigned int temperature; /溫度值unsigned char LRC; /上位機發送數據校驗碼unsigned char LRCt; /單片機應答數據校驗碼2、通過UART中斷完成上位機給單片機發送編程思路: 通過UART中斷,實現上位機給單片機發送數據,當單片機接受到:,表示上位機要向單片機發送指令,相應標志位置1,當再次發生中斷時,就開始接受數據,同時存入RX32的數組里,直到接收到回車換行符,則發送命令結束。此時發送標志位置1,進入應答程序。#pragma vector=USCI_A1_VECTOR_interrupt void USCI_A1_ISR(
20、void) while (!(UCA1IFG & UCTXIFG); / 判斷是否發送完畢 if(UCA1RXBUF = ':') /:為起始標志,如果開始,標志位flag置位 flag = 1; if(flag=1) /當標志位flag置位說明發送命令開始,開始接受命令數據 RX0 = ':' if(UCA1RXBUF != 0x0D && UCA1RXBUF != 0x0A ) /只要不是回車換行符,就依次將數據存入接受數組RX中,同時計數變量tempnumb加1 tempnumb+; RXtempnumb = UCA1RXBUF ;
21、 if(UCA1RXBUF = 0x0D) /若是回車 tempnumb+; RXtempnumb = 'D' ; if(UCA1RXBUF = 0x0A) /若是換行 tempnumb+; RXtempnumb = 'A' ; flag=0; /接受標志位清零 flag1=1; /發送標志位置1 TTXX(); /調用發送數據函數 3、單片機通過UART中斷向上位機發送應答指令編程思路: 先計算上位機發送數據的校驗碼,如果和發送的校驗碼相同,單片機再應答。設置寄存器地址0001,存儲流量數據;設置寄存器0002,存儲溫度數據。然后判斷是03號功能還是06號功能
22、,若是03號功能,按照相應的格式發送數據,若是06號功能,按照命令更改數據,并返回應答命令。void TTXX()int i; int j; unsigned int b; unsigned int c; unsigned int d; In_LRC(); /計數上位機發送命令校驗碼 if(RX8='1') /如果地址為寄存器0001,發送流量數據 shitohex(flow); if(RX8='2') /如果地址位寄存器0002,發送溫度數據 shitohex(temperature); if(RX3='0' && RX4=
23、39;3') /如果是03號功能 if(LRCHi = RXtempnumb-3) &&(LRCLo = RXtempnumb-2) /如果上位機發送校驗碼正確 for(b=0;b<=4;b+) TXb = RXb; temp = asciitohex(RXtempnumb-4); /計算單片機要發送數據的字節數 TX5 = hextoascii(temp*2)>>4)&0x0F); TX6 = hextoascii(temp*2)&0x0F); for(i=0;i<temp*4;i+=2) TX7+i = hextoascii(
24、Bufi); /要發送的數據 TX8+i = hextoascii(Bufi+1); tempnumt = 7+i; /統計數據長度,用于計算校驗碼 Out_LRC(); /計算單片機發送數據校驗碼 TX7+i = LRCtHi; TX8+i = LRCtLo; TX9+i = 0x0D; TX10+i = 0x0A; for(j=0;j<=(10+i);j+) /單片機發送數據 while (!(UCA1IFG & UCTXIFG); / 判斷是否發送完畢 UCA1TXBUF=TXj; else /如果校驗碼不正確,返回錯誤代碼 Input LRC ERROR!只能通過串口調試
25、看到 ERR19='8' ERR20=TX4; for(d=0;d<=20;d+) while (!(UCA1IFG & UCTXIFG); / 判斷是否發送完畢 UCA1TXBUF=ERRd ; else if(RX3='0' && RX4='6') /如果是06號功能 for(c=0;c<=tempnumb;c+) TX6c = RXc; while (!(UCA1IFG & UCTXIFG); / 判斷是否發送完畢 UCA1TXBUF=TX6c; selflow(TX610); /設置流量值 se
26、ltemp(TX611); /設置溫度值 flag1=0; /單片機發送標志位清零 tempnumb=0; /上位機發送數據計算值清零 4、輔助模塊部分(1)、LRC校驗模塊編程思路 :LRC 的計算, 對報文中的所有的連續8 位字節相加,忽略任何進位,然后求出其二進制補碼。unsigned char *auchMsg; 指向含有用于生成LRC 的二進制數據報文緩沖區的指針,unsigned short usDataLen; 報文緩沖區的字節數.unsigned char MODBUS_LRC(unsigned char *auchMsg, unsigned short usDataLen)u
27、nsigned char uchLRC = 0 ; / LRC 初始化while (usDataLen-) / 完成整個報文緩沖區uchLRC += *auchMsg+ ; /緩沖區字節相加,無進位return (unsigned char)(-(char)uchLRC) ; / 返回二進制補碼(2)發送和應答校驗碼計數程序void In_LRC()unsigned int a;for(a=1;a<(tempnumb-3);a+=2) tempRX(a-1)/2 = (asciitohex(RXa)<<4) | asciitohex(RXa+1);LRC=MODBUS_LRC
28、(&tempRX0,(tempnumb-4)/2); /進行LRC效驗計算LRCHi = hextoascii(LRC>>4)&0x0F);LRCLo = hextoascii(LRC&0x0F);void Out_LRC()unsigned int c;for(c=1;c<tempnumt;c+=2) tempTX(c-1)/2 = (asciitohex(TXc)<<4); tempTX(c-1)/2 = (asciitohex(TXc)<<4) | asciitohex(TXc+1);LRCt=MODBUS_LRC(&am
29、p;tempTX0,(tempnumt-1)/2); /進行LRC效驗計算LRCtHi = hextoascii(LRCt>>4)&0x0F);LRCtLo = hextoascii(LRCt&0x0F); (3)進制之間轉換程序由于發送和讀取的數據是字符,而寄存器中數據多按照十六進制存儲,故需要各種進制間的相互轉換。/十六進制數轉換為ASCII碼unsigned char hextoascii(unsigned char hex) if(hex<=0x09) return hex+0x30; else return hex+0x37;/ASCII碼轉換為十六
30、進制的數unsigned char asciitohex(unsigned char ascii) if(ascii<=0x39) return ascii-0x30; else return ascii-0x37;/十進制轉十六進制,由于組態王通信時會自動將十六進制數轉換位十進制數,因此需要在單片機內將十進制數轉換位十六進制數,這樣組態王讀到的就是十進制的數據。unsigned char shitohex(unsigned int shi) int i,b,d,c;int a=0; d=4; char shiliu10; while (shi) /shi代表相應的十進制數 c=shi%
31、16; /每次除以16取余求得相應的十六進制數 shi=shi/16; shiliua = c; a+; for(i=a;i<=4;i+) /得到的數據首位倒置,才是要求的十六進制數 shiliui=0; for(b=0;b<4;b+) d-; Bufb=shiliud; return 0;(4)波特率,流量、溫度的設置 /選定流量void selflow(unsigned char selflow)switch(selflow)case '0':flow=100; break;case '1':flow=1799; break; case '
32、;2':flow=5000; break;default:flow=1799; break; /選定溫度void seltemp(unsigned char seltemp)switch(seltemp)case '0':temperature=1;break;case '1':temperature=20; break; case '2':temperature=100; break;default:temperature=20; break;/設定波特率void selbps(unsigned char selbps)switch(s
33、elbps) case '0': UCA1CTL1 |= UCSSEL_1; / 時鐘源選擇 UCA1BR0 = 0x1B; /1200 UCA1BR1 = 0x00; UCA1MCTL = 04; break; case '1': UCA1CTL1 |= UCSSEL_1; / 時鐘源選擇 UCA1BR0 = 0x0D; /2400 UCA1BR1 = 0; UCA1MCTL = 0X0A; break; case '2': UCA1CTL1 |= UCSSEL_1; / 時鐘源選擇 UCA1BR0 = 6; /4800 UCA1BR1 = 0
34、; UCA1MCTL = 0x0C; UCA1CTL1 &= UCSWRST; / 使能串口功能 UCA1IE |= UCRXIE; / 使能接收中斷 _BIS_SR(GIE); break; case '3': UCA1CTL1 |= UCSSEL_1; / 時鐘源選擇 UCA1BR0 = 3; /9600 UCA1BR1 = 0; UCA1MCTL = 06; UCA1CTL1 &= UCSWRST; / 使能串口功能 UCA1IE |= UCRXIE; / 使能接收中斷 _BIS_SR(GIE); break; default:UCA1CTL1 |= UC
35、SSEL_1; / 時鐘源選擇 UCA1BR0 = 3; / 32768hz/3=9600 UCA1BR1 = 0; UCA1MCTL = 06; break; 5、實驗現象: 測試IO設備界面組態王畫面:實現讀寫功能三、MODBUS RTU編程以及與組態王通信1、變量定義int R_flag=1; / 延時3.5字符標志int R_flag1=0;int R_flag2=1;unsigned char Crc_RX32; /存儲上位機發送的字符的數組unsigned char Crc_TX32; /存儲單片機應答的字符的數組unsigned int crcnumt; / 統計上位機發送字符數
36、據長度unsigned int crcnumr; /統計單片機應答數據長度unsigned char CRCHi8; /上位機發送數據的校驗碼高位unsigned char CRCLo8; /上位機發送數據的校驗碼低位unsigned char CRCtHi8; /單片機發送數據的校驗碼高位unsigned char CRCtLo8; /單片機應答數據的校驗碼低位unsigned char Buf10; /測試數據2、設計延時3.5字符控制發送和接受數據的開始和接受 while (1) /接收 起始 結束 判斷函數 if(R_flag1=1) if(count_leg=300) /此時間遠大于
37、3.5個字符,確保通信的正確 RTU_T(); R_flag = 1; count_leg=0; R_flag1=0; else count_leg=count_leg+1; 3、通過UART中斷完成上位機給單片機發送編程思路:通過UART中斷完成上位機給單片機發送,當延時大于3.5個字符,R_flag=1,依次將值存入 Crc_RX數組中 ,再判斷,若延時大于3.5個字符,則發送結束,R_flag1=1。#pragma vector=USCI_A1_VECTOR_interrupt void USCI_A1_ISR(void) if(R_flag=1) Crc_RXcrcnumr = UCA
38、1RXBUF; crcnumr+; if(crcnumr=8) R_flag1=1; R_flag=0; 4.通過UART中斷完成單片機應答上位機首先計算校驗碼,若校驗碼正確,計算應答指令每位的值,存入Crc_TX中。void RX_TX() unsigned int b;In_CRC(); /計算上位機發送數據的校驗碼 if(CRCHi8 = Crc_RXcrcnumr-2)&&(CRCLo8 = Crc_RXcrcnumr-1) /若校驗碼正確 for(b=0;b<2;b+) Crc_TXb = Crc_RXb; Bytenum(); /計算單片機應答的字節數 Out
39、_CRC(); /計算單片機應答數據的校驗碼 void RTU_T() /通過該程序將Crc_TX發送到上位機 int i; int j; RX_TX(); for(j=0;j<=200;j+) ; / 延時4毫秒發送開始 for(i=0;i<=(crcnumt+1);i+) while (!(UCA1IFG & UCTXIFG); / 判斷是否發送完畢 UCA1TXBUF =Crc_TXi; for(j=0;j<=200;j+) ; / 延時4毫秒發送結束 crcnumr=0; 5、輔助模塊(1)CRC校驗程序編程思路:1. 將一個16 位寄存器裝入十六進制FFFF
40、 (全1). 將之稱作CRC 寄存器.2. 將報文的第一個8位字節與16 位CRC 寄存器的低字節異或,結果置于CRC 寄存器.3. 將CRC 寄存器右移1位(向LSB 方向), MSB 充零. 提取并檢測LSB.4. (如果LSB 為0): 重復步驟3 (另一次移位).(如果LSB 為1): 對CRC 寄存器異或多項式值0xA001 (1010 0000 0000 0001).5. 重復步驟3 和 4,直到完成8 次移位。當做完此操作后,將完成對8位字節的完整操作。6. 對報文中的下一個字節重復步驟2 到5,繼續此操作直至所有報文被處理完畢。7. CRC 寄存器中的最終內容為CRC 值.8.
41、 當放置CRC 值于報文時,如下面描述的那樣,高低字節必須交換。數據表:static unsigned char auchCRCHi = 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
42、0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
43、0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01,
44、 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41
45、, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x8
46、1, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 ;/* CRC低位字節值表*/static char auchCRCLo = 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,0x08,
47、 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,0x3C, 0xFC
48、, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,0x61, 0xA1, 0x6
49、3, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,0x8A, 0x4A, 0x4E, 0x
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 棗陽頂管施工方案公司
- 雕花蠟燭美術課件
- 殯葬行業生命教育
- 吐魯番職業技術學院《鋼琴基礎(一)》2023-2024學年第一學期期末試卷
- 遼寧現代服務職業技術學院《傳感器原理及應用》2023-2024學年第二學期期末試卷
- 蘇州大學《化工儀表》2023-2024學年第二學期期末試卷
- 農田石灰改造方案范本
- 《正宗新疆棉花被》課件
- 債權訴訟方案范本
- 沈陽音樂學院《排水工程》2023-2024學年第一學期期末試卷
- 2025年鐵路車輛鉗工(高級)職業技能鑒定參考試題庫(含答案)
- 跨越高原勇敢前行 課件 2025屆高考學習的高原期主題班會
- 2024年鄭州鐵路職業技術學院單招職業傾向性測試題庫必考題
- 企業水果禮盒采購合同樣本
- 移動業務代辦協議書
- 解除租賃合同的協議
- 2025年03月國家林業和草原局直屬單位公開招聘246人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 常德煙草機械有限責任公司招聘考試真題2024
- 2025屆天津市十二區重點學校高三下學期畢業聯考(一)英語試題(含答案)
- DB44-T 2623-2025 道路工程高韌超薄磨耗層技術規范
- 2025-2030中國機器人碼垛系統行業市場發展趨勢與前景展望戰略研究報告
評論
0/150
提交評論