labview串口好資料與屬性節(jié)點(diǎn)電子教案_第1頁
labview串口好資料與屬性節(jié)點(diǎn)電子教案_第2頁
labview串口好資料與屬性節(jié)點(diǎn)電子教案_第3頁
labview串口好資料與屬性節(jié)點(diǎn)電子教案_第4頁
labview串口好資料與屬性節(jié)點(diǎn)電子教案_第5頁
已閱讀5頁,還剩86頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。labview串口好資料與屬性節(jié)點(diǎn)-第13章LabVIEW串口通信程序設(shè)計(jì)以PC作為上位機(jī),以調(diào)制解調(diào)器(Modem)、串行打印機(jī)、各種監(jiān)控模塊、PLC、攝像頭云臺、數(shù)控機(jī)床、單片機(jī)及智能設(shè)備等作為下位機(jī)廣泛應(yīng)用于測控領(lǐng)域。本章舉幾個典型實(shí)例,詳細(xì)介紹利用LabVIEW實(shí)現(xiàn)PC與各種下位機(jī)設(shè)備串口通信的程序設(shè)計(jì)方法。13.1PC與PC串口通信當(dāng)兩臺串口設(shè)備通信距離較近時(shí),可以直接連接,最簡單的情況,在通信中只需三根線(發(fā)送線、接收線、信號地線)便可實(shí)現(xiàn)全雙工異步串行通信。本設(shè)計(jì)通過兩臺PC串口三線連接,

2、介紹了串口通信的基本編程方法。13.1.1PC與PC串口通信硬件線路當(dāng)兩臺RS-232串口設(shè)備通信距離較近時(shí)(15m)時(shí),需附加調(diào)制解調(diào)器(Modem)。在RS-232的應(yīng)用中,很少嚴(yán)格按照RS-232標(biāo)準(zhǔn)。其主要原因是因?yàn)樵S多定義的信號在大多數(shù)的應(yīng)用中并沒有用上。在許多應(yīng)用中,例如Modem,只用了9個信號(兩條數(shù)據(jù)線、6條控制線、一條地線);在其他一些應(yīng)用中,可能只需要5個信號(兩條數(shù)據(jù)線、兩條握手線、一條地線);還有一些應(yīng)用,可能只需要數(shù)據(jù)線,而不需要握手線,即只需要3個信號線。因?yàn)樵诳刂祁I(lǐng)域,在近距離通信時(shí)常采用RS-232,所以這里只對近距離通信的線路連接進(jìn)行討論。當(dāng)通信距離較近時(shí),

3、通信雙方不需要Modem,可以直接連接,這種情況下,只需使用少數(shù)幾根信號線。最簡單的情況,在通信中根本不需要RS-232C的控制聯(lián)絡(luò)信號,只需三根線(發(fā)送線、接收線、信號地線)便可實(shí)現(xiàn)全雙工異步串行通信。在實(shí)際使用中常使用串口通信線將兩個串口設(shè)備連接起來。串口線的制作方法非常簡單:準(zhǔn)備兩個9針的串口接線端子(因?yàn)橛?jì)算機(jī)上的串口為公頭,因此連接線為母頭),準(zhǔn)備3根導(dǎo)線(最好采用3芯屏蔽線),按圖13-1所示將導(dǎo)線焊接到接線端子上。圖13-1串口通信線的制作圖13-2所示中的2號接收腳與3號發(fā)送腳交叉連接是因?yàn)樵谥边B方式時(shí),把通信雙方都當(dāng)作數(shù)據(jù)終端設(shè)備看待,雙方都可發(fā)也可收。在這種方式下,通信雙方

4、的任何一方,只要請求發(fā)送RTS有效和數(shù)據(jù)終端準(zhǔn)備好DTR有效就能開始發(fā)送和接收。圖13-2PC與PC串口通信線路在計(jì)算機(jī)通電前,按圖13-2所示將兩臺PC的COM1口用串口線連接起來。連接串口線時(shí),計(jì)算機(jī)嚴(yán)禁通電,否則極易燒毀串口。13.1.2設(shè)計(jì)任務(wù)利用LabVIEW編寫程序?qū)崿F(xiàn)PC與PC串口通信。任務(wù)要求如下。兩臺計(jì)算機(jī)互發(fā)字符并自動接收,如一臺計(jì)算機(jī)輸入字符串“收到信息請回字符abc123”,單擊“發(fā)送字符”命令,另一臺計(jì)算機(jī)若收到,就輸入字符串“收到,abc123”,單擊“發(fā)送字符”命令,信息返回到第一組的計(jì)算機(jī)。實(shí)際上就是編寫一個簡單的雙機(jī)聊天程序。13.1.3任務(wù)實(shí)現(xiàn)1建立新VI程

5、序啟動NILabVIEW程序,選擇新建(New)選項(xiàng)中的VI項(xiàng),建立一個新VI程序。2程序前面板設(shè)計(jì)在前面板設(shè)計(jì)區(qū)空白處單擊鼠標(biāo)右鍵,顯示控件選板(Controls)。(1)添加一個字符串輸入控件:控件(Controls)新式(Modern)字符串與路徑(String&Path)字符串輸入控件(StringControl),將標(biāo)簽改為“發(fā)送區(qū):”。(2)添加一個字符串顯示控件:控件(Controls)新式(Modern)字符串與路徑(String&Path)字符串顯示控件(StringIndicator),將標(biāo)簽改為“接收區(qū):”。(3)添加一個串口資源檢測控件:控件(Controls)新式(M

6、odern)I/OVISA資源名稱(VISAresourcename);單擊控件箭頭,選擇串口號,如COM1或ASRL1:。(4)添加一個確定(OK)按鈕控件:控件(Controls)新式(Modern)布爾(Boolean)確定按鈕(OKButoon),將標(biāo)題改為“發(fā)送字符”。(5)添加一個停止(Stop)按鈕控件:控件(Controls)新式(Modern)布爾(Boolean)停止按鈕(StopButoon),將標(biāo)題改為“關(guān)閉程序”。圖13-3程序前面板設(shè)計(jì)的程序前面板,如圖13-3所示。3框圖程序設(shè)計(jì)添加函數(shù)進(jìn)入框圖程序設(shè)計(jì)界面,在設(shè)計(jì)區(qū)的空白處單擊鼠標(biāo)右鍵,顯示函數(shù)選板(Functi

7、ons)。添加的所有函數(shù)及其布置如圖13-4所示。詳細(xì)步驟介紹如下。(1)添加一個配置串口函數(shù):編程(Programming)儀器I/O(InstrumentI/O)串口(Serial)VISA配置串口(VISAConfigureSerialPort)。圖13-4框圖程序函數(shù)添加與布置(2)添加4個數(shù)值常量:編程(Programming)數(shù)值(Numeric)數(shù)值常量(數(shù)值常量(NumericConstant),值分別為9600(波特率)、8(數(shù)據(jù)位)、0(校驗(yàn)位,無)、1(停止位)。(3)添加兩個關(guān)閉串口函數(shù):編程(Programming)儀器I/O(InstrumentI/O)串口(Ser

8、ial)VISA關(guān)閉(VISAClose)。(4)添加一個循環(huán)結(jié)構(gòu):編程(Programming)結(jié)構(gòu)(Structures)While循環(huán)(WhileLoop)。添加理由:隨時(shí)監(jiān)測串口接收緩沖區(qū)的數(shù)據(jù)。以下添加的函數(shù)或結(jié)構(gòu)放置在While循環(huán)結(jié)構(gòu)框架中。(5)添加一個時(shí)鐘函數(shù):編程(Programming)定時(shí)(Timing)等待下一個整數(shù)倍毫秒(WaitUntilNextmsMultiple)。添加理由:以一定的周期監(jiān)測串口接收緩沖區(qū)的數(shù)據(jù)。(6)添加一個數(shù)值常量:編程(Programming)數(shù)值(Numeric)數(shù)值常量(NumericConstant),將值改為500(時(shí)鐘頻率值)。

9、(7)添加一個VISA串口字節(jié)數(shù)函數(shù):編程(Programming)儀器I/O(InstrumentI/O)串口(Serial)VISA串口字節(jié)數(shù)(VISABytesatSerialPort),標(biāo)簽為“PropertyNode”。(8)添加一個數(shù)值常量:編程(Programming)數(shù)值(Numeric)數(shù)值常量(NumericConstant),將值為0(比較值)。(9)添加一個比較函數(shù):編程(Programming)比較(Comparison)不等于?(NotEqual?)。添加理由:只有當(dāng)串口接收緩沖區(qū)的數(shù)據(jù)個數(shù)不等于0時(shí),才將數(shù)據(jù)讀入到接收區(qū)。(10)添加一個布爾函數(shù):編程(Progr

10、amming)布爾(Boolean)非(Not)函數(shù)。添加理由:當(dāng)關(guān)閉程序時(shí),將關(guān)閉按鈕真(True)變?yōu)榧伲‵alse),退出循環(huán)。如果將循環(huán)結(jié)構(gòu)的條件端子設(shè)置為“真時(shí)停止(StopifTrue)”,則不需要添加非(Not)函數(shù)。(11)添加兩個條件結(jié)構(gòu):編程(Programming)結(jié)構(gòu)(Structures)條件結(jié)構(gòu)(CaseStructure)。添加理由:發(fā)送字符時(shí),需要單擊按鈕“發(fā)送字符”,因此需要判斷是否單擊了發(fā)送按鈕;接收數(shù)據(jù)時(shí),需要判斷串口接收緩沖區(qū)的數(shù)據(jù)個數(shù)是否不為0。(12)添加一個串口寫入函數(shù):編程(Programming)儀器I/O(InstrumentI/O)串口(S

11、erial)VISA寫入(VISAWrite),并拖入條件結(jié)構(gòu)(上)的真(True)選項(xiàng)框架中。(13)添加一個串口讀取函數(shù):編程(Programming)儀器I/O(InstrumentI/O)串口(Serial)VISA讀取(VISARead),并拖入條件結(jié)構(gòu)(下)的真(True)選項(xiàng)框架中。(14)將字符輸入控件圖標(biāo)(標(biāo)簽為“發(fā)送區(qū):”)拖入條件結(jié)構(gòu)(上)的真(True)選項(xiàng)框架中,將字符顯示控件圖標(biāo)(標(biāo)簽為“接收區(qū):”)拖入條件結(jié)構(gòu)(下)的真(True)選項(xiàng)框架中。(15)分別將確定(OK)按鈕控件圖標(biāo)(標(biāo)簽為“確定按鈕(OKButton)”)、停止(Stop)按鈕控件圖標(biāo)(標(biāo)簽為“停

12、止按鈕(StopButton)”)拖入循環(huán)結(jié)構(gòu)框架中。4框圖程序設(shè)計(jì)連線使用連線工具,將所有函數(shù)連接起來,如圖13-5所示。圖13-5框圖程序連線(1)將VISA資源名稱(VISAresourcename)函數(shù)的輸出端口分別與串口配置(VISAConfigureSerialPort)函數(shù)、串口字節(jié)數(shù)(VISABytesatSerialPort)函數(shù)、串口寫入(VISAWrite)函數(shù)、串口讀取(VISARead)函數(shù)的輸入端口VISA資源名稱(VISAresourcename)相連。(2)將數(shù)值常量9600、8、0、1分別與串口配置(VISAConfigureSerialPort)函數(shù)的輸入端

13、口波特率(baudrate)、數(shù)據(jù)比特(databits)、奇偶(parity)、停止位(stopbits)相連。(3)將數(shù)值常量(值為500)與等待下一個整數(shù)倍毫秒(WaitUntilNextmsMultiple)函數(shù)的輸入端口毫秒倍數(shù)(millisecondmultiple)相連。(4)將確定按鈕圖標(biāo)“OKButton”與條件結(jié)構(gòu)(上)的選擇端子?相連。(5)將串口字節(jié)數(shù)(VISABytesatSerialPort)函數(shù)的輸出端口NumberofbytesatSerialport與不等于?(NotEqual?)函數(shù)的輸入端口x相連。將串口字節(jié)數(shù)(VISABytesatSerialPort)

14、函數(shù)的輸出端口NumberofbytesatSerialport與串口讀取(VISARead)函數(shù)的輸入端口字節(jié)總數(shù)(bytecount)相連。(6)將數(shù)值常量(值為0)與不等于?(NotEqual?)函數(shù)的輸入端口y相連。(7)將不等于?(NotEqual?)函數(shù)的輸出端口x!=y?與條件結(jié)構(gòu)(下)的選擇端子?相連。(8)在條件結(jié)構(gòu)(上)中將字符輸入控件圖標(biāo)(標(biāo)簽為“發(fā)送區(qū):”)與串口寫入(VISAWrite)函數(shù)的輸入端口寫入緩沖區(qū)(writebuffer)相連。(9)在條件結(jié)構(gòu)(下)中將串口讀取(VISARead)函數(shù)的輸出端口讀取緩沖區(qū)(readbuffer)與字符顯示控件圖標(biāo)(標(biāo)簽為

15、“接收區(qū):”)相連。(10)將停止按鈕(StopButton)函數(shù)與非(Not)函數(shù)的輸入端口x相連。(11)將非(Not)函數(shù)的輸出端口.not.x?與循環(huán)結(jié)構(gòu)的條件端子相連。(12)在條件結(jié)構(gòu)(上)中將串口寫入(VISAWrite)函數(shù)的輸出端口VISA資源名稱輸出(VISAresourcenameout)與串口關(guān)閉(VISAClose)函數(shù)(上)的輸入端口VISA資源名稱(VISAresourcename)相連。(13)在條件結(jié)構(gòu)(下)中將串口讀取(VISARead)函數(shù)的輸出端口VISA資源名稱輸出與關(guān)閉串口函數(shù)VISAClose(下)的輸入端口VISA資源名稱相連。(14)進(jìn)入兩個條

16、件結(jié)構(gòu)的假(False)選項(xiàng),將VISA資源名稱函數(shù)的輸出端口分別與串口關(guān)閉(VISAClose)函數(shù)(上、下)的輸入端口VISA資源名稱相連,如圖13-6所示。5運(yùn)行程序進(jìn)入程序前面板,保存設(shè)計(jì)好的VI程序。單擊快捷工具欄“運(yùn)行(Run)”按鈕,運(yùn)行程序。兩臺計(jì)算機(jī)同時(shí)運(yùn)行本程序。在一臺計(jì)算機(jī)程序窗體中發(fā)送字符區(qū)輸入要發(fā)送的字符,比如“收到信息請回字符abc123”,單擊“發(fā)送字符”按鈕,發(fā)送區(qū)的字符串通過COM1口發(fā)送出去。如果聯(lián)網(wǎng)通信的另一臺計(jì)算機(jī)程序收到字符,則返回字符串,如“收到,abc123”;如果通信正常該字符串將顯示在接收區(qū)中。程序運(yùn)行界面如圖13-7所示。圖13-6框圖程序連

17、線圖13-7程序運(yùn)行界面6單PC雙串口互通信程序如果只有一臺計(jì)算機(jī)且具有兩個串口,那么可以通過串口線將兩個串口直接連接起來,如圖13-8所示,編寫程序?qū)崿F(xiàn)雙串口互通信。圖13-9是單PC雙串口互通信程序的前面板。圖13-10是單PC雙串口互通信程序的后面板。(a)(b)圖13-8雙串口直接連接圖13-9單PC雙串口互通信程序的前面板圖13-10單PC雙串口互通信程序的后面板13.2PC與單片機(jī)串口通信程序設(shè)計(jì)目前,在許多單片機(jī)應(yīng)用系統(tǒng)中,上、下位機(jī)分工明確,作為下位機(jī)核心器件的單片機(jī)往往只負(fù)責(zé)數(shù)據(jù)的采集和通信,而上位機(jī)通常以基于圖形界面的Windows系統(tǒng)為操作平臺。為便于查詢和保存數(shù)據(jù),還需

18、要數(shù)據(jù)庫的支持,這種應(yīng)用的核心是數(shù)據(jù)通信,它包括單片機(jī)和上位機(jī)之間、客戶端和服務(wù)器之間以及客戶端和客戶端之間的通信,而單片機(jī)和上位機(jī)之間數(shù)據(jù)通信則是整個系統(tǒng)的基礎(chǔ)。圖13-11單片機(jī)實(shí)驗(yàn)板單片機(jī)和PC的通信是通過單片機(jī)的串口和PC串口之間的硬件連接實(shí)現(xiàn)的。圖13-11所示是本設(shè)計(jì)使用的單片機(jī)實(shí)驗(yàn)板。有關(guān)單片機(jī)實(shí)驗(yàn)板的詳細(xì)信息請查詢電子開發(fā)網(wǎng)/。13.2.1PC與單片機(jī)串口通信程序設(shè)計(jì)硬件線路PC圖13-12PC與單片機(jī)串口通信線路如圖13-12所示,數(shù)據(jù)通信的硬件上采用3線制,將單片機(jī)和PC串口的3個引腳(RXD、TXD、GND)分別連在一起,即將PC和單片機(jī)的發(fā)送數(shù)據(jù)線TXD與接收數(shù)據(jù)RXD

19、交叉連接,兩者的地線GND直接相連,而其他信號線,如握手信號線均不用,采用軟件握手的方式,這樣既可以實(shí)現(xiàn)預(yù)定的任務(wù)又可以簡化電路設(shè)計(jì)。但由于單片機(jī)的TTL邏輯電平和RS-232C的電氣特性完全不同,RS-232C的邏輯0電平規(guī)定為+3V+15V之間,邏輯1電平為3V15V之間,因此在將PC和單片機(jī)的RXD和TXD交叉連接時(shí)必須進(jìn)行電平轉(zhuǎn)換,這里使用的是MAX232電平轉(zhuǎn)換芯片。單片機(jī)系統(tǒng)有LED顯示器模塊、繼電器輸出模塊、蜂鳴器模塊等。13.2.2PC與單片機(jī)串口通信程序設(shè)計(jì)任務(wù)利用KeilC51和LabVIEW編寫程序?qū)崿F(xiàn)PC與單片機(jī)串口通信。任務(wù)要求有以下幾方面。1設(shè)計(jì)任務(wù)一PC通過串行口

20、將數(shù)字(00,01,02,03.,F(xiàn)F,十六進(jìn)制)發(fā)送給單片機(jī),單片機(jī)收到后回傳這個數(shù)字,PC接收到回傳數(shù)據(jù)后顯示出來,若發(fā)送的數(shù)據(jù)和接收到的數(shù)據(jù)相等,則串行通信正確,否則有錯誤。啟始符是數(shù)字00,結(jié)束符是數(shù)字FF。2設(shè)計(jì)任務(wù)二(1)測試通信狀態(tài)。先在文本框中輸入字符串“Hello”,單擊“測試”按鈕,將字符串“Hello”發(fā)送到單片機(jī),若PC與單片機(jī)通信正常,在PC程序的文本框中顯示字符串“OK!”,否則顯示字符串“ERROR!”。(2)循環(huán)計(jì)數(shù)。單擊“開始”按鈕,文本框中數(shù)字從0開始累加,0、1、2、3,并將此數(shù)發(fā)送到單片機(jī)的顯示器上顯示。當(dāng)累加到10時(shí),回到0重新開始累加,依次循環(huán)。任何

21、時(shí)候,單擊“停止”按鈕,PC程序中和單片機(jī)顯示器都停止累加;再單擊“開始”按鈕,接著停下的數(shù)繼續(xù)累加。(3)控制指示燈。在單片機(jī)繼電器接線端子的兩個通道上分別接上兩個指示燈,在PC程序畫面上選擇指示燈號,如1號燈,單擊畫面“打開”按鈕,單片機(jī)上1號燈亮,同時(shí)蜂鳴器響;單擊畫面“關(guān)閉”按鈕,1號燈滅,蜂鳴器停止響,同樣控制2號燈的亮滅(蜂鳴器同時(shí)動作)。單片機(jī)和PC通信,在程序設(shè)計(jì)上涉及兩個部分的內(nèi)容。一是單片機(jī)的C51程序,二是PC的串口通信程序和界面的編制。13.2.3任務(wù)實(shí)現(xiàn)利用KeilC51實(shí)現(xiàn)單片機(jī)與PC串口通信任務(wù)一KeilC51軟件是眾多單片機(jī)應(yīng)用開發(fā)的優(yōu)秀軟件之一,它集編輯、編譯

22、、仿真于一體,支持匯編、PLM語言和C語言的程序設(shè)計(jì),界面友好,易學(xué)易用。啟動KeilC51,出現(xiàn)編輯界面。1建立一個新工程單擊Project菜單,在彈出的下拉菜單中選中NewProject選項(xiàng),出現(xiàn)CreateNewProject對話框,然后選擇要保存的路徑、文件夾,輸入工程文件的名字,如pc_com(后綴名默認(rèn)),單擊“保存”按鈕。這時(shí)會彈出一個“SelectDeviceforTargetTarget1”對話框,要求用戶選擇單片機(jī)的型號,可以根據(jù)使用的單片機(jī)來選擇,KeilC51幾乎支持所有的51核的單片機(jī)。這里選擇Atmel的89C51。選擇89C51之后,右邊一欄是對這個單片機(jī)的基本的

23、說明,然后單擊“確定”按鈕。2編寫程序單擊“File”菜單,再在下拉菜單中單擊“New”選項(xiàng)。此時(shí)光標(biāo)在編輯窗口里閃爍,這時(shí)可以鍵入用戶的應(yīng)用程序了,但建議首先保存該空白的文件。單擊菜單上的“File”項(xiàng),在下拉菜單中選中“SaveAs”選項(xiàng),在“文件名”欄右側(cè)的編輯框中鍵入欲使用的文件名,同時(shí),必須鍵入正確的擴(kuò)展名,如pc_com.c,然后單擊“保存”按鈕。如果用語言編寫程序,則擴(kuò)展名為(.c);如果用匯編語言編寫程序,則擴(kuò)展名必須為(.asm)?;氐骄庉嫿缑婧?,單擊“Target1”前面的“”號,再在“SourceGroup1”上單擊鼠標(biāo)右鍵,彈出快捷菜單,然后單擊“AddFiletoGr

24、oupSourceGroup1”。選中pc_com.c,然后單擊“Add”按鈕,再單擊“Close”按鈕。此時(shí)注意到“SourceGroup1”文件夾中多了一個子項(xiàng)“pc_com.c”。子項(xiàng)的多少與所增加的源程序的多少相同?,F(xiàn)在,請輸入C語言源程序。在輸入程序時(shí),讀者可以發(fā)現(xiàn)事先保存待編輯的文件的好處,即KeilC51會自動識別關(guān)鍵字,并以不同的顏色提示用戶加以注意,這樣會使用戶少犯錯誤,有利于提高編程效率。3編譯程序單擊“Project”菜單,在下拉菜單中選擇“OptionsforTargetTarget1”選項(xiàng),出現(xiàn)對話框;選擇Output選項(xiàng)卡,選中“CreateHEXFiles”項(xiàng),單

25、擊“確定”按鈕。再單擊“Project”菜單,在下拉菜單中選擇“BuiltTarget”選項(xiàng)(或者使用快捷鍵F7),進(jìn)行編譯。若有錯誤會在output窗口提示,可根據(jù)此提示,找出錯誤并修改,直至編譯通過,如圖13-13所示。圖13-13KeilC51編譯界面至此,用KeilC51上做了一個完整工程,其中,生成一個編程器燒寫文件pc_com.hex。4燒錄程序?qū)T89C51芯片安裝在編程器插座上,運(yùn)行編程器程序。選擇單片機(jī)芯片類型AT89C51,讀入IntelHex文件pc_com.hex,執(zhí)行自動編程指令,將pc_com.hex文件燒錄入AT89C51芯片中。將燒錄好的AT89C51芯片安裝

26、到單片機(jī)實(shí)驗(yàn)板上,就可以用串口調(diào)試助手程序?qū)λM(jìn)行測試了。以下是完成單片機(jī)與PC串口通信任務(wù)1的C51參考程序:#pragmadbcode#include#defineucharunsignedcharvoidrece(void);voidinit(void);ucharre17;/*主程序*/voidmain(void)uchartemp;init();dowhile(RI=0);temp=SBUF;if(temp=0 x00)rece();elsebreak;while(1);/*串口初始化*/voidinit(void)TMOD=0 x20;/定時(shí)器1-方式2PCON=0 x80;/電源

27、控制SCON=0 x50;/方式1TL1=0 xF3;TH1=0 xF3;/22.1184MHz晶振,波特率為48000 xf396000 xfa192000 xfdTR1=1;/*接收返回?cái)?shù)據(jù)*/voidrece(void)chari;i=0;dowhile(RI=0);rei=SBUF;RI=0;SBUF=rei;while(TI=0);TI=0;i+;while(rei-1!=255);利用LabVIEW實(shí)現(xiàn)PC與單片機(jī)串口通信任務(wù)一1建立新VI程序啟動NILabVIEW程序,選擇新建(New)選項(xiàng)中的VI項(xiàng),建立一個新VI程序。2程序前面板設(shè)計(jì)在前面板設(shè)計(jì)區(qū)空白處單擊鼠標(biāo)右鍵,顯示控件

28、選板(Controls)。(1)添加一個字符串輸入控件:控件(Controls)新式(Modern)字符串與路徑(String&Path)字符串輸入控件(StringControl),將標(biāo)簽改為“發(fā)送數(shù)據(jù)(十六進(jìn)制)”,在該控件上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“十六進(jìn)制顯示(HexDisplay)”。(2)添加一個字符串顯示控件:控件(Controls)新式(Modern)字符串與路徑(String&Path)字符串顯示控件(StringIndicator),將標(biāo)簽改為“返回?cái)?shù)據(jù)(十六進(jìn)制)”,在該控件上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“十六進(jìn)制顯示(HexDisplay)”。(3)

29、添加一個字符顯示控件:控件(Controls)新式(Modern)字符串與路徑(String&Path)字符串顯示控件(StringIndicator),將標(biāo)簽改為“通信狀態(tài)”。(4)添加一個串口資源檢測控件:控件(Controls)新式(Modern)I/OVISA資源名稱(VISAresourcename);單擊控件箭頭,選擇串口號,如ASRL1:或COM1。圖13-14程序前面板(5)添加一個確定按鈕控件:控件(Controls)新式(Modern)布爾(Boolean)確定按鈕(OKButoon),將標(biāo)題改為“發(fā)送”。(6)添加一個停止按鈕控件:控件(Controls)新式(Moder

30、n)布爾(Boolean)停止按鈕(StopButoon),將標(biāo)題改為“關(guān)閉”。設(shè)計(jì)的程序前面板如圖13-14所示。3框圖程序設(shè)計(jì)添加函數(shù)與連線進(jìn)入框圖程序設(shè)計(jì)界面,在設(shè)計(jì)區(qū)的空白處單擊鼠標(biāo)右鍵,顯示函數(shù)選板(Functions)。(1)添加一個配置串口函數(shù):編程(Programming)儀器I/O(InstrumentI/O)串口(Serial)VISA配置串口(VISAConfigureSerialPort)。(2)添加4個數(shù)值常量:編程(Programming)數(shù)值(Numeric)數(shù)值常量(NumericConstant),值分別為4800(波特率)、8(數(shù)據(jù)位)、0(校驗(yàn)位,無)、1

31、(停止位)。(3)添加一個While循環(huán)結(jié)構(gòu):編程(Programming)結(jié)構(gòu)(Structures)While循環(huán)(WhileLoop)。(4)添加一個關(guān)閉串口函數(shù):編程(Programming)儀器I/O(InstrumentI/O)串口(Serial)VISA關(guān)閉(VISAClose)。(5)在While循環(huán)結(jié)構(gòu)中添加一個條件結(jié)構(gòu):編程(Programming)結(jié)構(gòu)(Structures)條件結(jié)構(gòu)(CaseStructure)。(6)在條件結(jié)構(gòu)中添加一個順序結(jié)構(gòu):編程(Programming)結(jié)構(gòu)(Structures)層疊式順序結(jié)構(gòu)(StackedSequenceStructure)

32、。將其幀(Frame)設(shè)置為4個(序號0-3)。設(shè)置方法:選中StackedSequenceStructures上邊框,單擊鼠標(biāo)右鍵,執(zhí)行在后面添加幀(AddFrameAfter)選項(xiàng)3次。(7)在順序結(jié)構(gòu)的Frame0中添加一個串口寫入函數(shù):編程(Programming)儀器I/O(InstrumentI/O)串口(Serial)VISA寫入(VISAWrite)。(8)將控件“發(fā)送數(shù)據(jù)(十六進(jìn)制)”的圖標(biāo)拖入順序結(jié)構(gòu)的Frame0中,分別將確定按鈕(OKButton)、停止按鈕(StopBuffon)的圖標(biāo)拖入循環(huán)結(jié)構(gòu)中。(9)將VISA資源名稱(VISAresourcename)函數(shù)的輸

33、出端口分別與串口配置(VISAConfigureSerialPort)函數(shù)、串口寫入(VISAWrite)函數(shù)(在順序結(jié)構(gòu)Frame0中)、串口關(guān)閉(VISAClose)函數(shù)的輸入端口VISA資源名稱(VISAresourcename)相連。(10)將數(shù)值常量4800、8、0、1分別與VISA配置串口(VISAConfigureSerialPort)函數(shù)的輸入端口波特率(baudrate)、數(shù)據(jù)位(databits)、奇偶(parity)、停止位(stopbits)相連。(11)右鍵選擇循環(huán)結(jié)構(gòu)的條件端子,設(shè)置為“真時(shí)停止(StopifTrue)”,圖標(biāo)變?yōu)椤⑼V拱粹o(StopBuffon)

34、與循環(huán)結(jié)構(gòu)的條件端子相連。(12)將確定按鈕(OKButton)與條件結(jié)構(gòu)的選擇端子?相連。(13)將函數(shù)“發(fā)送數(shù)據(jù)(十六進(jìn)制)”與串口寫入(VISAWrite)函數(shù)的輸入端口寫入緩沖區(qū)(writebuffer)相連。連接好的框圖程序如圖13-15所示。(14)在順序結(jié)構(gòu)的Frame1中添加一個時(shí)鐘函數(shù):編程(Programming)定時(shí)(Timing)等待下一個整數(shù)倍毫秒(WaitUntilNextmsMultiple)。(15)在順序結(jié)構(gòu)的Frame1中添加一個數(shù)值常量:編程(Programming)數(shù)值(Numeric)數(shù)值常量(NumericConstant),將值改為200(時(shí)鐘頻率

35、值)。(16)在順序結(jié)構(gòu)的Frame1中將數(shù)值常量(值為200)與等待下一個整數(shù)倍毫秒(WaitUntilNextmsMultiple)函數(shù)的輸入端口毫秒倍數(shù)(millisecondmultiple)相連。連接好的框圖程序如圖13-16所示。圖13-15框圖程序連線1圖13-16框圖程序連線2(17)在順序結(jié)構(gòu)的Frame2中,添加一個串口字節(jié)數(shù)函數(shù):編程(Programming)儀器I/O(InstrumentI/O)串口(Serial)VISA串口字節(jié)數(shù)(VISABytesatSerialPort),標(biāo)簽為“PropertyNode”。(18)在順序結(jié)構(gòu)的Frame2中,添加一個串口讀取函

36、數(shù):編程(Programming)儀器I/O(InstrumentI/O)串口(Serial)VISA讀取(VISARead)。(19)將控件“返回?cái)?shù)據(jù)(十六進(jìn)制)”的圖標(biāo)拖入順序結(jié)構(gòu)的Frame2中。(20)將VISA串口字節(jié)數(shù)(VISABytesatSerialPort)函數(shù)的輸出端口VISA資源名稱(VISAresourcename)與VISA讀?。╒ISARead)函數(shù)的輸入端口VISA資源名稱(VISAresourcename)相連。(21)將VISA串口字節(jié)數(shù)(VISABytesatSerialPort)函數(shù)的輸出端口NumberofbytesatSerialport與串口讀?。╒

37、ISARead)函數(shù)的輸入端口字節(jié)總數(shù)(bytecount)相連。(22)將VISA讀取(VISARead)函數(shù)的輸出端口讀取緩沖區(qū)(readbuffer)與控件“返回?cái)?shù)據(jù)(十六進(jìn)制)”的輸入端口相連。連接好的框圖程序如圖13-17所示。圖13-17框圖程序連線3(23)在順序結(jié)構(gòu)的Frame3中,添加兩個局部變量:編程(Programming)結(jié)構(gòu)(Structures)局部變量(LocalVariable)。選擇局部變量,單擊鼠標(biāo)右鍵,在彈出的快捷菜單的(SelectItem)選項(xiàng)下,為局部變量分別選擇對象:“返回?cái)?shù)據(jù)(十六進(jìn)制)”和“發(fā)送數(shù)據(jù)(十六進(jìn)制)”,將其讀寫屬性設(shè)置為“轉(zhuǎn)換為讀取

38、(ChangeToRead)”。(24)在順序結(jié)構(gòu)的Frame3中,添加一個比較函數(shù):編程(Programming)比較(Comparison)等于?(Equal?)。(25)在順序結(jié)構(gòu)的Frame3中,添加一個條件結(jié)構(gòu):編程(Programming)結(jié)構(gòu)(Structures)條件結(jié)構(gòu)(CaseStructure)。(26)將局部變量“返回?cái)?shù)據(jù)(十六進(jìn)制)”和“發(fā)送數(shù)據(jù)(十六進(jìn)制)”分別與比較函數(shù)等于?(Equal?)的輸入端口x和y相連。(27)將比較函數(shù)等于?(Equal?)的輸出端口x=y?與條件結(jié)構(gòu)的選擇端子?相連。(28)在條件結(jié)構(gòu)的真(True)選項(xiàng)中,添加一個字符串常量:編程(

39、Programming)字符串(String)字符串常量(StringConstant),將其值改為“通信正常!”。(29)將控件“通信狀態(tài)”拖入條件結(jié)構(gòu)中。(30)將字符串常量“通信正常!”與控件“通信狀態(tài)”的輸入端口相連。(31)在條件結(jié)構(gòu)的假(False)選項(xiàng)中,添加一個字符串常量,將其值改為“通信異常!”。(32)在條件結(jié)構(gòu)的假(False)選項(xiàng)中,添加一個局部變量,為局部變量選擇對象“通信狀態(tài)”,屬性默認(rèn)為:“寫”。(33)將字符串常量“通信異常!”與局部變量“通信狀態(tài)”相連。連接好的框圖程序如圖13-18所示。圖13-18框圖程序連線44運(yùn)行程序圖13-19程序運(yùn)行界面進(jìn)入程序前面

40、板,保存設(shè)計(jì)好的VI程序。單擊快捷工具欄中的“運(yùn)行(Run)”按鈕,運(yùn)行程序。程序運(yùn)行界面如圖13-19所示。在“發(fā)送數(shù)據(jù)”框中輸入兩位的十六進(jìn)制數(shù)字(00,01,02,03.,F(xiàn)F),單擊“發(fā)送”按鈕,將數(shù)據(jù)發(fā)送給單片機(jī);單片機(jī)收到后回傳這個數(shù)字,PC接收到回傳數(shù)據(jù)后在“返回?cái)?shù)據(jù)”框中顯示出來(十六進(jìn)制),若發(fā)送的數(shù)據(jù)和接收到的數(shù)據(jù)相等,則在“通信狀態(tài)”框中顯示“通信正常!”,否則顯示“通信異常!”。當(dāng)發(fā)送“FF”后,要想繼續(xù)發(fā)送數(shù)據(jù),必須先發(fā)送“00”。利用KeilC51實(shí)現(xiàn)單片機(jī)與PC串口通信任務(wù)二。利用LabVIEW實(shí)現(xiàn)PC與單片機(jī)串口通信任務(wù)二。13.3PC與智能儀器串口通信案例目前

41、儀器儀表的智能化程度越來越高,大量的智能儀器都配備了RS-232通信接口,并提供了相應(yīng)的通信協(xié)議,能夠?qū)y試、采集的數(shù)據(jù)傳輸給計(jì)算機(jī)等設(shè)備,以便進(jìn)行大量數(shù)據(jù)的儲存、處理、查詢和分析。通常計(jì)算機(jī)(PC)或工控機(jī)(IPC)是智能儀器上位機(jī)的最佳選擇,因?yàn)镻C或IPC不僅能解決智能儀器(作為下位機(jī))所不能解決的問題,如數(shù)值運(yùn)算、曲線顯示、數(shù)據(jù)查詢、報(bào)表打印等;而且具有豐富和強(qiáng)大的軟件開發(fā)工具環(huán)境。圖13-23智能儀器示意圖圖13-23是XMT-3000A型智能儀器示意圖(詳細(xì)信息請查詢網(wǎng)站/)。13.3.1PC與智能儀器串口通信硬件線路1線路說明XMT-3000A智能儀器采用先進(jìn)的微電腦芯片、專家P

42、ID控制算法,具備高準(zhǔn)確度的自整定功能,并可以設(shè)置出多種報(bào)警方式。圖13-24PC與智能儀表串口通信線路XMT-3000A智能儀表有多種輸入功能,一臺儀表可以接熱電偶(K、S、Wr、E、J、T、B、N)、熱電阻(Pt100、Cu50)、電壓(05V、1V5V)、電流(010mA、4mA20mA)等不同的輸入信號。XMT-3000A智能儀表接熱電阻輸入時(shí),采用三線制接線,消除了引線帶來的誤差;接熱電偶輸入時(shí),儀表內(nèi)部帶有冷端補(bǔ)償部件;接電壓/電流輸入時(shí),對應(yīng)顯示的物理量程可任意設(shè)定。在計(jì)算機(jī)與智能儀器通電前,按圖13-24所示將熱電阻傳感器Cu50、上、下限報(bào)警指示燈與XMT-3000A智能儀器

43、連接。通過串口線將計(jì)算機(jī)與智能儀器連接起來:智能儀器的14端子(RXD)與計(jì)算機(jī)串口COM1的3腳(TXD)相連;智能儀器的15端子(TXD)與計(jì)算機(jī)串口COM1的2腳(RXD)相連;智能儀器的16端子(GND)與計(jì)算機(jī)串口COM1的5腳(GND)相連。連接儀器與計(jì)算機(jī)串口線時(shí),儀器與計(jì)算機(jī)嚴(yán)禁通電,否則極易燒毀串口。本設(shè)計(jì)用到的硬件為:智能儀器(XMT-3000A型,需配置RS-232通信、上下限控制繼電器、DC24V電源等模塊),串口通信線(三線制),熱電阻傳感器(Cu50),指示燈(DC24V)等。2XMT-3000A智能儀器的參數(shù)設(shè)置XMT-3000A智能儀器在使用前應(yīng)對其輸入/輸出參

44、數(shù)進(jìn)行正確設(shè)置,設(shè)置好的儀器才能投入正常使用。請按表13-1設(shè)置儀器的主要參數(shù)。表13-1儀表的主要參數(shù)設(shè)置參數(shù)參數(shù)含義設(shè)置值HIiAL上限絕對值報(bào)警值30LoAL下限絕對值報(bào)警值20Sn輸入規(guī)格傳感器為:Cu50,則Sn=20diP小數(shù)點(diǎn)位置要求顯示一位小數(shù),則diP=1ALP儀表功能定義要求上限報(bào)警由報(bào)警1(ALM1)輸出,下限報(bào)警由報(bào)警2(ALM2)輸出,報(bào)警時(shí)在下顯示器顯示報(bào)警符號,則ALP=10Addr通信地址0baud通信波特率48003XMT-3000A智能儀表的通信協(xié)議XMT-3000A智能儀器使用異步串行通信接口,共有兩種通信方式:RS232和RS485。接口電平符合RS23

45、2C或RS485標(biāo)準(zhǔn)中的規(guī)定。數(shù)據(jù)格式為一個起始位,8位數(shù)據(jù),無校驗(yàn)位,2個停止位。通信傳輸數(shù)據(jù)的波特率可調(diào)為3004800bit/s。XMT儀表采用多機(jī)通信協(xié)議,如果采用RS485通信接口,則可將164臺的儀表同時(shí)連接在一個通信接口上;采用RS232C通信接口時(shí),一個通信接口只能連接一臺儀表。RS485通信接口與RS422接口的信號電平相同,通信距離長達(dá)1km以上,優(yōu)于RS232C通信接口。RS422為全雙工工作方式,RS485為半雙工工作方式,RS485只需兩根線就能使多臺XMT儀表與計(jì)算機(jī)進(jìn)行通信,而RS422需要4根通信線。由于通信協(xié)議的限制,XMT只能工作在半雙工模式,所以XMT儀表

46、推薦使用RS485接口,以簡化通信線路接線。為使普通計(jì)算機(jī)作上位機(jī),可使用RS232C/RS485型通信接口轉(zhuǎn)換器,將計(jì)算機(jī)上的RS232C通信口轉(zhuǎn)為RS485通信口。XMT儀表采用十六進(jìn)制數(shù)據(jù)格式來表示各種指令代碼及數(shù)據(jù)。通信指令只有兩條,一條為讀指令,一條為寫指令。讀指令格式為:地址代號+52H+參數(shù)代號。返回:依次返回為測量值PV、給定值SV、輸出值MV+報(bào)警狀態(tài)、所讀參數(shù)值。寫指令格式:地址指令+43H+參數(shù)代號+寫入值的低位字節(jié)+寫入值的高位字節(jié)。返回:測量值PV、給定值SV、輸出值MV+報(bào)警狀態(tài)、被寫入的參數(shù)值。地址代號:為了在一個通信接口上連接多臺XMT儀表,需要給每臺XMT儀表

47、編一個互不相同的代號,這一代號在本文約定稱為通信地址代號(簡稱地址代號)。XMT有效的地址為063。所以一條通信線路上最多可連接64臺XMT儀表。儀表的地址代號由參數(shù)Addr決定。XMT儀表通信協(xié)議規(guī)定,地址代號為兩個字節(jié),其數(shù)值范圍(十六進(jìn)制)是80HBFH,兩個字節(jié)必須相同,數(shù)值為:儀表地址+80H。例如,儀表參數(shù)Addr=5(十六進(jìn)制數(shù)為05H),05+80H=85H,則該儀表的地址表示為:85H85H。參數(shù)代號:儀表的參數(shù)用一個十六進(jìn)制數(shù)的參數(shù)代號來表示。它在指令中表示要讀/寫的參數(shù)名。表13-2列出了XMT儀表可讀/寫的參數(shù)代號(部分)。表13-2XMT儀表可讀/寫的參數(shù)代號表參數(shù)代

48、號參數(shù)名含義參數(shù)代號參數(shù)名含義00HSV給定值0BHSn輸入規(guī)格01HHIAL上限報(bào)警值0CHdIP小數(shù)點(diǎn)位置02HLoAL下限報(bào)警值0DHdIL下限顯示值03HdHAL正偏差報(bào)警0EHdIH上限顯示值04HdLAL負(fù)偏差報(bào)警15Hbaud通信波特率05HdF回差16HAddr通信地址06HCtrL控制方式17HdL數(shù)字濾波如果向儀表讀取參數(shù)代號在表格中參數(shù)以外,則返回參數(shù)值為錯誤信號(兩個7F值)。返回的測量值數(shù)據(jù)每兩個8位數(shù)據(jù)代表一個16位整形數(shù),低位字節(jié)在前,高位字節(jié)在后,負(fù)溫度值采用補(bǔ)碼表示,熱電偶或熱電阻輸入時(shí)其單位都是0.1,回送的十六進(jìn)制數(shù)據(jù)(兩個字節(jié))先轉(zhuǎn)換為十進(jìn)制數(shù)據(jù),然后將

49、十進(jìn)制數(shù)據(jù)除以10再顯示出來。上位機(jī)每次向儀表發(fā)一個指令,儀表返回一個數(shù)據(jù)。編寫上位機(jī)軟件時(shí),注意每條有效指令,儀表在00.36s內(nèi)作出應(yīng)答,而上位機(jī)也必須等儀表返回指令后,才能發(fā)新的指令,否則將引起錯誤。4溫度測量與控制(1)正確設(shè)置儀器參數(shù)后,儀器PV窗顯示當(dāng)前溫度測量值。(2)給傳感器升溫,當(dāng)溫度測量值大于上限報(bào)警值30時(shí),上限指示燈L2亮,儀器SV窗顯示上限報(bào)警信息。(3)給傳感器降溫,當(dāng)溫度測量值小于上限報(bào)警值30,大于下限報(bào)警值20時(shí),上限指示燈L2和下限指示燈L1均滅。(4)給傳感器繼續(xù)降溫,當(dāng)溫度測量值小于下限報(bào)警值20時(shí),下限指示燈L1亮,儀器SV窗下限報(bào)警信息。5串口調(diào)試X

50、MT-3000A智能儀器使用異步串行通信接口,采用RS-232通信方式,其數(shù)據(jù)格式為:一個起始位,8個數(shù)據(jù)位,無校驗(yàn)位,2個停止位。打開“串口調(diào)試助手”程序,首先設(shè)置串口號COM1、波特率4800、校驗(yàn)位NONE、數(shù)據(jù)位8、停止位2等參數(shù)(注意:設(shè)置的參數(shù)必須與儀器設(shè)置的一致),選擇十六進(jìn)制顯示和十六進(jìn)制發(fā)送方式,打開串口,如圖13-25所示。在“發(fā)送的字符/數(shù)據(jù)”文本框中輸入讀指令:8080520C,單擊“手動發(fā)送”按鈕,則PC向儀器發(fā)送一條指令,儀器返回一串?dāng)?shù)據(jù),如:3D01E70364000100,該串?dāng)?shù)據(jù)在返回信息框內(nèi)顯示。根據(jù)儀器返回?cái)?shù)據(jù),可知儀器的當(dāng)前溫度測量值為:013D(十六進(jìn)

51、制,低位字節(jié)在前,高位字節(jié)在后),十進(jìn)制為31.7。使用說明。圖13-25串口調(diào)試助手若選擇了“手動發(fā)送”,每單擊一次可以發(fā)送一次;若選中了“自動發(fā)送”,則每隔設(shè)定的發(fā)送周期內(nèi)發(fā)送一次,直到去掉“自動發(fā)送”為止。值得注意的一點(diǎn)是:選中“十六進(jìn)制發(fā)送”后,發(fā)送框中所填字符每兩個字符之間應(yīng)有一個空格,如:0123003445。還有一些特殊的字符,如回車換行,則直接敲入回車即可。6使用“計(jì)算器”實(shí)現(xiàn)數(shù)制轉(zhuǎn)換打開Windows附件中“計(jì)算器”程序,在“查看”菜單下選擇“科學(xué)型”。選擇“十六進(jìn)制”,輸入儀器當(dāng)前溫度測量值:013D(十六進(jìn)制,0在最前面不顯示),如圖13-26所示。單擊“十進(jìn)制”選項(xiàng),則

52、十六進(jìn)制數(shù)“013D”轉(zhuǎn)換為十進(jìn)制數(shù)“317”,如圖13-27所示。儀器的當(dāng)前溫度測量值為:31.7(十進(jìn)制)。為什么?圖13-26在“計(jì)算器”中輸入十六進(jìn)制數(shù)圖13-27十六進(jìn)制數(shù)轉(zhuǎn)十進(jìn)制數(shù)13.3.2設(shè)計(jì)任務(wù)。13.4PC與PLC串口通信案例可編程序邏輯控制器(簡稱PLC)主要是為現(xiàn)場控制而設(shè)計(jì)的,其人機(jī)界面主要是開關(guān)、按鈕、指示燈等。其具有良好的適應(yīng)性和可擴(kuò)展能力得到越來越廣泛的應(yīng)用。采用PLC的控制系統(tǒng)或裝置具有可靠性高、易于控制、系統(tǒng)設(shè)計(jì)靈活、能模擬現(xiàn)場調(diào)試、編程使用簡單、性價(jià)比高、有良好的抗干擾能力等特點(diǎn)。但是,PLC也有不易顯示各種實(shí)時(shí)圖表/曲線(趨勢線)和漢字、無良好的用戶界面

53、、不便于監(jiān)控等缺陷。圖13-34PLC產(chǎn)品示意圖20世紀(jì)90年代后,許多的PLC都配備有計(jì)算機(jī)通信接口,通過總線將一臺或多臺PLC相連接。計(jì)算機(jī)作為上位機(jī)可以提供良好的人機(jī)界面,進(jìn)行系統(tǒng)的監(jiān)控和管理,進(jìn)行程序編制、參數(shù)設(shè)定和修改、數(shù)據(jù)采集等,既能保證系統(tǒng)性能,又能使系統(tǒng)操作簡便,便于生產(chǎn)過程的有效監(jiān)督。而PLC作為下位機(jī),執(zhí)行可靠有效的分散控制。用一臺計(jì)算機(jī)(上位機(jī))去監(jiān)控下位機(jī)(PLC),這就要求PC與PLC之間穩(wěn)定、可靠的數(shù)據(jù)通信。圖13-34是某型號PLC示意圖。13.4.1PC與PLC串口通信硬件線路西門子S13-200PLC系統(tǒng)為用戶提供了靈活的通信功能。集成在S13-200中的點(diǎn)對

54、點(diǎn)接口(PPI)可用普通的雙絞線作波特率高達(dá)9600bit/s的數(shù)據(jù)通信,用RS-485接口實(shí)現(xiàn)的高速用戶可編程接口,可使用專用位通信協(xié)議(如ASCII)做波特率高達(dá)38.4kbit/s的高速通信并可按步調(diào)整。而PC的接口為RS-232,兩者之間需要進(jìn)行電平轉(zhuǎn)換。利用西門子公司的PC/PPI電纜,可將S13-200CPU與計(jì)算機(jī)連接起來組成PC/PPI網(wǎng)絡(luò),實(shí)現(xiàn)點(diǎn)對點(diǎn)通信,如圖13-35所示。圖13-35PC與S13-200PLC串口通信線路本設(shè)計(jì)用到的硬件為:西門子S13-200PLC(CPU224),PC/PPI電纜,開關(guān),指示燈(DC24V),直流電源(OUT:DC24V)等。13.4.

55、2設(shè)計(jì)任務(wù)利用LabVIEW編寫程序?qū)崿F(xiàn)PC與PLC串口通信。任務(wù)要求。(1)開關(guān)量輸入:利用繼電器開關(guān)改變某個輸入端口的狀態(tài),程序讀取該端口的輸入狀態(tài)(打開/關(guān)閉),并在程序中顯示。(2)開關(guān)量輸出:程序畫面中指定元件地址,單擊置位/復(fù)位命令按鈕,置指定地址的元件端口(繼電器)狀態(tài)為ON或OFF,使線路中指示燈亮/滅。13.5PC與GSM短信模塊串口通信案例在很多監(jiān)控領(lǐng)域,各種監(jiān)控設(shè)備大多還是有線方式傳輸,當(dāng)距離遙遠(yuǎn)時(shí),監(jiān)控設(shè)備的安裝、維護(hù)非常不便,因?yàn)楸O(jiān)控端遠(yuǎn)離采集端,鋪設(shè)電纜的投入有時(shí)可以說是巨大的。通過無線方式來交換數(shù)據(jù),則可以有效地避免這些問題。GSM網(wǎng)絡(luò)是目前國內(nèi)覆蓋范圍最廣,應(yīng)用

56、最普遍的無線通信網(wǎng)絡(luò),利用GSM網(wǎng)絡(luò)構(gòu)建遠(yuǎn)程監(jiān)測系統(tǒng)時(shí),完全可利用現(xiàn)成的GSM無線網(wǎng)絡(luò)而無需再新建基站。利用GSM網(wǎng)絡(luò)短消息業(yè)務(wù)(SMS)實(shí)現(xiàn)監(jiān)測領(lǐng)域的應(yīng)用具有以下優(yōu)點(diǎn):通信網(wǎng)絡(luò)覆蓋面廣、網(wǎng)絡(luò)設(shè)施完備,不需投資建設(shè)基礎(chǔ)設(shè)施;實(shí)施與運(yùn)行費(fèi)用低;可以實(shí)現(xiàn)在無人職守、環(huán)境惡劣、超遠(yuǎn)距離的情況下控制信息的收集和傳送。圖13-38GSM模塊示意圖GSM短信模塊是專門用于短信接收發(fā)送的模塊,具有RS-232通信口,可與單片機(jī)、計(jì)算機(jī)相連。圖13-38所示為某型號GSM模塊示意圖。13.5.1PC與GSM短信模塊串口通信硬件線路在數(shù)據(jù)采集站,傳感器檢測的數(shù)據(jù)送入單片機(jī)模擬量輸入口,單片機(jī)通過串口與GSM模塊

57、相連;在監(jiān)控中心,GSM模塊通過串口線與PC直接相連,如圖13-39所示。圖13-39利用GSM模塊組成的遠(yuǎn)程監(jiān)控系統(tǒng)傳感器檢測的數(shù)據(jù)經(jīng)單片機(jī)MCU單元的處理,編輯成短信息,通過串行口傳送給GSM模塊后以短消息的方式將數(shù)據(jù)發(fā)送到監(jiān)控中心的計(jì)算機(jī)或用戶的GSM手機(jī)。同樣,監(jiān)控中心PC通過串口向GSM模塊TC35發(fā)送命令,通過TC35以短消息形式把設(shè)置命令發(fā)送到下位機(jī)系統(tǒng)的GSM模塊,對單片機(jī)進(jìn)行控制。本設(shè)計(jì)用到的硬件為:GSM短信模塊(TC35i),串口通信線(三線制),SIM卡,手機(jī)等。用戶手機(jī)通過GSM模塊與PC和單片機(jī)可以實(shí)現(xiàn)雙向通信。13.5.2PC與GSM短信模塊串口通信設(shè)計(jì)任務(wù)利用L

58、abVIEW編寫程序?qū)崿F(xiàn)PC與GSM短信模塊串口通信。任務(wù)要求。(1)在程序畫面輸入短信內(nèi)容,指定接收方手機(jī)號碼,將編輯的短信息發(fā)送到用戶手機(jī)。(2)用戶手機(jī)向監(jiān)控中心的GSM模塊發(fā)送短信,程序界面顯示短信內(nèi)容及來電號碼。13.5.3任務(wù)實(shí)現(xiàn)13.6PC與智能儀器構(gòu)成DCS案例智能儀器在我國的工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用。實(shí)際上,只要具有RS-485(或RS-232)通信接口、支持站號設(shè)置和通信協(xié)議訪問的智能儀器都可以和PC構(gòu)成一個主從式網(wǎng)絡(luò)系統(tǒng),這也是中小型DCS的一般結(jié)構(gòu)。智能儀器具有較強(qiáng)的過程控制功能和較高的可靠性,因此這類中小型DCS在目前仍然占有較大的應(yīng)用市場。13.6.1PC與智能

59、儀器構(gòu)成DCS硬件線路1線路說明由于一個RS-232通信接口只能聯(lián)接一臺RS-232儀表,當(dāng)PC與多臺具有RS-232接口的儀表通信時(shí),可使用RS-232/RS-485型通信接口轉(zhuǎn)換器,將計(jì)算機(jī)上的RS-232通信口轉(zhuǎn)為RS-485通信口。在信號進(jìn)入儀表前再使用RS-485/RS-232轉(zhuǎn)換器將RS-485通信口轉(zhuǎn)為RS-232通信口,再與儀表相連,如圖13-43所示。圖13-43PC與多個RS-232儀表連接示意圖當(dāng)PC與多臺具有RS-485接口的儀表通信時(shí),由于兩端設(shè)備接口電氣特性不一,不能直接相連,因此,也采用RS-232接口到RS-485接口轉(zhuǎn)換器將RS-232接口轉(zhuǎn)換為RS-485信

60、號電平,再與儀表相連,如圖13-44所示。圖13-44PC與多個RS-485儀表連接示意圖如果IPC直接提供RS-485接口,與多臺具有RS-485接口的儀表通信時(shí)不用轉(zhuǎn)換器可直接相連。RS-485接口只有兩根線要連接,有+、端(或稱A、B端)區(qū)分,用雙絞線將所有儀表的接口并聯(lián)在一起即可。本設(shè)計(jì)用到的硬件為:3臺智能儀表(XMT-3000A型,需配置RS-232通信、上下限控制繼電器、DC24V電源等模塊),3個RS-232/RS-485轉(zhuǎn)換器,3個熱電阻傳感器(Cu50)等。2XMT-3000A智能儀表的參數(shù)設(shè)置XMT-3000A智能儀表在使用前應(yīng)對其輸入/輸出參數(shù)進(jìn)行正確設(shè)置,設(shè)置好的儀表

溫馨提示

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

評論

0/150

提交評論