在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于CAN-bus 總線的模擬空調(diào)溫/濕度控制系統(tǒng)

            基于CAN-bus 總線的模擬空調(diào)溫/濕度控制系統(tǒng)

            作者: 時(shí)間:2012-07-11 來源:網(wǎng)絡(luò) 收藏

            ‘轉(zhuǎn)換Out_SendID到字符型
            ifOut_SendID=255then
            Out_SendID=Out_SendID+1
            else
            Out_SendID=0
            endif
            Out_CANData1=!I2Hex(Out_SendID)
            if!Len(Out_CANData1)>2thenOut_CANData1="0"+Out_CANData1
            Out_CANData2=Out_CANData1
            ‘轉(zhuǎn)換Out_Extern和Out_Remote到字符型
            Out_CANData1=!I2Hex(Out_Extern)+!I2Hex(Out_Remote)
            Out_CANData2=Out_CANData2+Out_CANData1
            ‘轉(zhuǎn)換Out_ID到字符型
            Out_CANData1=!I2Hex(Out_ID)
            Lenght=!Len(Out_CANData1)
            whileLenght8
            Out_CANData1="0"+Out_CANData1
            Lenght=!Len(Out_CANData1)
            endwhile
            Out_CANData2=Out_CANData2+Out_CANData1
            ‘轉(zhuǎn)換Out_DataLen到字符型
            Out_CANData1=!I2Hex(Out_DataLen)
            if!Len(Out_CANData1)>2thenOut_CANData1="0"+Out_CANData1
            Out_CANData2=Out_CANData2+Out_CANData1
            ‘轉(zhuǎn)換Out_Data07到字符型
            Out_CANData1=!I2Hex(Out_Data0)
            if!Len(Out_CANData1)>2thenOut_CANData1="0"+Out_CANData1
            Out_CANData2=Out_CANData2+Out_CANData1
            Out_CANData1=!I2Hex(Out_Data1)
            if!Len(Out_CANData1)>2thenOut_CANData1="0"+Out_CANData1
            Out_CANData2=Out_CANData2+Out_CANData1
            Out_CANData1=!I2Hex(Out_Data2)
            if!Len(Out_CANData1)>2thenOut_CANData1="0"+Out_CANData1
            Out_CANData2=Out_CANData2+Out_CANData1
            Out_CANData1=!I2Hex(Out_Data3)
            if!Len(Out_CANData1)>2thenOut_CANData1="0"+Out_CANData1
            Out_CANData2=Out_CANData2+Out_CANData1
            Out_CANData1=!I2Hex(Out_Data4)
            if!Len(Out_CANData1)>2thenOut_CANData1="0"+Out_CANData1
            Out_CANData2=Out_CANData2+Out_CANData1
            Out_CANData1=!I2Hex(Out_Data5)
            if!Len(Out_CANData1)>2thenOut_CANData1="0"+Out_CANData1
            Out_CANData2=Out_CANData2+Out_CANData1
            Out_CANData1=!I2Hex(Out_Data6)
            if!Len(Out_CANData1)>2thenOut_CANData1="0"+Out_CANData1
            Out_CANData2=Out_CANData2+Out_CANData1
            Out_CANData1=!I2Hex(Out_Data7)
            if!Len(Out_CANData1)>2thenOut_CANData1="0"+Out_CANData1
            Out_CANData2=Out_CANData2+Out_CANData1

            這樣,以后要將In_CANData的數(shù)據(jù)提取到In_*變量中,只需在腳本中按!setstgy(StringToObject)就可以了。而要將Out_*數(shù)據(jù)合并到Out_CANData,可先調(diào)用!setstgy(ObjectToString),然后再把Out_CANData2的值賦給Out_CANData。

            四、協(xié)議及報(bào)文格式

            因?yàn)镸CGS不便于編寫復(fù)雜的腳本程序,所以傳輸協(xié)議的設(shè)計(jì)以簡(jiǎn)單為原則。本系統(tǒng)使用HiLon協(xié)議A。HiLon協(xié)議A是一個(gè)通用的協(xié)議,基于非對(duì)稱型主從式網(wǎng)絡(luò)結(jié)構(gòu),支持廣播和點(diǎn)對(duì)點(diǎn)傳送命令數(shù)據(jù),命令數(shù)據(jù)包可長(zhǎng)達(dá)256字節(jié),非常適合用作本系統(tǒng)的通信協(xié)議HiLon協(xié)議以CAN2.0A幀結(jié)構(gòu)為基礎(chǔ)。下圖是幀報(bào)文格式,一個(gè)CAN2.0A標(biāo)準(zhǔn)幀由11位ID、1位RTR、4位DLC、數(shù)據(jù)區(qū)(最多8個(gè)字節(jié))組成。

            HiLonA報(bào)文格式
            圖4HiLonA報(bào)文格式

            DIR:方向位。方向位決定一半的優(yōu)先級(jí)而剩余的優(yōu)先級(jí),由節(jié)點(diǎn)地址決定低地址優(yōu)先級(jí)高。當(dāng)方向位為“1”時(shí),地址域是源節(jié)點(diǎn)地址(從節(jié)點(diǎn)到主節(jié)點(diǎn)),優(yōu)先級(jí)由地址決定;當(dāng)方向位為“0”時(shí),地址域是目標(biāo)節(jié)點(diǎn)地址(主節(jié)點(diǎn)到從節(jié)點(diǎn)),優(yōu)先級(jí)由地址決定。從節(jié)點(diǎn)也可使用地址濾波技術(shù)從而減少需處理的網(wǎng)絡(luò)信息量,因而能有效節(jié)省CAN節(jié)點(diǎn)控制器資源,提高控制器效率。

            Address:目標(biāo)地址,表示節(jié)點(diǎn)地址,范圍只能設(shè)定為0~125
            TYPE:幀類型。見下表中的幀類型說明。

            表2HiLon幀類型
            HiLon幀類型

            DLC:每幀字節(jié)數(shù)(1~8)
            Index:索引字節(jié)。對(duì)于單幀數(shù)據(jù),該字節(jié)表示傳輸數(shù)據(jù)的第一個(gè)字節(jié);對(duì)于多幀數(shù)據(jù),此字節(jié)表示索引字節(jié),即此幀數(shù)據(jù)在數(shù)據(jù)包中的位置。
            Data:數(shù)據(jù)

            在本系統(tǒng)中,數(shù)據(jù)中心要對(duì)各個(gè)房間的溫/濕度進(jìn)行監(jiān)控并修各個(gè)房間的溫/濕度SV值,因此給各個(gè)控制室分配唯一的標(biāo)志符;在下位機(jī)向上位機(jī)發(fā)送的數(shù)據(jù)報(bào)文中攜帶的數(shù)據(jù)是房間的溫/濕度值;上位機(jī)向下位機(jī)發(fā)送的命令報(bào)文攜帶命令號(hào)及控制室的溫/濕度SV值。本系統(tǒng)的傳輸數(shù)據(jù)量較小,且MCGS的采樣周期本系統(tǒng)取5ms相對(duì)下位機(jī)來說較長(zhǎng),因此,本系統(tǒng)選擇使用單幀(點(diǎn)對(duì)點(diǎn))類型幀。利用HiLon報(bào)文的特點(diǎn),將7位Address分配給房間ID,每一個(gè)房間ID對(duì)應(yīng)一個(gè)Address,地址0保留。當(dāng)數(shù)據(jù)方向是從節(jié)點(diǎn)到主節(jié)點(diǎn)時(shí),8字節(jié)數(shù)據(jù)的前4字節(jié)用于傳遞房間溫度,后4字節(jié)用于傳遞房間濕度,當(dāng)數(shù)據(jù)方向是主節(jié)點(diǎn)到從節(jié)點(diǎn)時(shí),8字節(jié)數(shù)據(jù)的前4字節(jié)作為命令I(lǐng)D,后4字節(jié)用于傳遞命令參數(shù)(房間溫/濕度SV值)。報(bào)文幀的格式如圖1所示。

            報(bào)文幀格式
            圖5報(bào)文幀格式

            對(duì)主節(jié)點(diǎn)到從節(jié)點(diǎn)的命令I(lǐng)D的定義如下:

            表3控制命令類型及其參數(shù)
            控制命令類型及其參數(shù)

            本系統(tǒng)要監(jiān)控的數(shù)據(jù)是各房間的溫度和濕度及它們的SV值。要將這些數(shù)據(jù)在總線上傳輸,必須將它們裝入報(bào)文幀。為了使傳輸?shù)臄?shù)據(jù)只占用較小的空間而達(dá)到較高的精確度,在報(bào)文中每一種數(shù)值都分配了4字節(jié)的空間,數(shù)據(jù)按IEEE-754標(biāo)準(zhǔn)的float數(shù)據(jù)類型的格式存儲(chǔ)。這樣,在下位機(jī)進(jìn)行編程就比較方便。但是,上位機(jī)的處理程序是用類似VB腳本的語言寫的,數(shù)據(jù)對(duì)象的類型只有數(shù)值型、開關(guān)型和字符型三種,不能直接使用接收到的數(shù)據(jù)。因此,要對(duì)接收到的數(shù)據(jù)進(jìn)行轉(zhuǎn)換。

            按IEEE-754標(biāo)準(zhǔn),一個(gè)浮點(diǎn)數(shù)用兩個(gè)部分表示:尾數(shù)和2的冪。例如:

            尾數(shù)代表浮點(diǎn)上的數(shù)據(jù)二進(jìn)制數(shù)。

            二的冪代表指數(shù)。指數(shù)的保存形式是一個(gè)0到255的8位值。指數(shù)的實(shí)際值是保存值0到255減去127,一個(gè)范圍在127到-128之間的值。

            尾數(shù)是一個(gè)24位值(代表大約7個(gè)十進(jìn)制數(shù)),最高位(MSB)通常是1,因此,不保存。一個(gè)符號(hào)位表示浮點(diǎn)數(shù)是正或負(fù)。在尾數(shù)的左邊有一個(gè)省略的二進(jìn)制點(diǎn)和1。這個(gè)數(shù)在浮點(diǎn)數(shù)的保存中經(jīng)常省略。

            浮點(diǎn)數(shù)保存的字節(jié)格式如下:

            IEEE-754標(biāo)準(zhǔn)float存儲(chǔ)格式
            圖6IEEE-754標(biāo)準(zhǔn)float存儲(chǔ)格式

            這里:
            S代表符號(hào)位,1是負(fù),0是正。
            E冪,偏移127。
            M24位的尾數(shù)(保存在23位中)。
            零是一個(gè)特定值,表示冪是0,尾數(shù)是0。

            在運(yùn)行策略中新建一個(gè)名為SplitFloat的用戶策略,新增一策略行并添加以下腳本程序,用于將數(shù)值型對(duì)象float轉(zhuǎn)換到4字節(jié)存儲(chǔ)單元Byte0Byte3:

            ‘計(jì)算浮點(diǎn)數(shù)的冪(二進(jìn)制數(shù)小數(shù)點(diǎn)的位置)
            exponent=0
            float1=!abs(float)
            whilefloat1>0
            float1=!BitRShift(float1,1)
            exponent=exponent+1
            endwhile
            exponent=exponent-1
            ‘計(jì)算浮點(diǎn)數(shù)的底數(shù)
            mantissa=!abs(float)*(!BitLShift(2,23-(exponent+1)))-8388608
            exponent=exponent+127
            Byte0=!BitRShift(exponent,1)
            ifroom1tempsv0then
            Byte0=!BitOr(Byte0,128)
            endif
            Byte1=!BitAnd(!BitOr(!BitRShift(mantissa,16),!BitLShift(exponent,7)),255)
            Byte2=!BitAnd(!BitRShift(mantissa,8),255)
            Byte3=!BitAnd(mantissa,255)



            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉