【正文】
畢業(yè)設(shè)計(jì)課題名稱: 多串口多線程的數(shù)據(jù)管理系統(tǒng)的設(shè)計(jì) 摘 要本論文首先簡要介紹了多串口多線程能量管理系統(tǒng)的現(xiàn)狀及發(fā)展前景,基于串口通信實(shí)現(xiàn)計(jì)算機(jī)與其他設(shè)備通信具有實(shí)現(xiàn)簡單,使用靈活,數(shù)據(jù)傳輸可靠等優(yōu)點(diǎn),本文從系統(tǒng)的總體結(jié)構(gòu)(由上位機(jī)和下位機(jī)構(gòu)成)的設(shè)計(jì),分析各部分系統(tǒng)的功能,上位機(jī)通過串口控制單片機(jī)進(jìn)行數(shù)據(jù)采集,以監(jiān)控其他設(shè)備運(yùn)行情況。下位機(jī)將采集的數(shù)據(jù)再通過串口傳回上位機(jī)以供存儲(chǔ)分析,以實(shí)現(xiàn)集中管理和最優(yōu)控制。然后是通信程序的編寫(包括上位機(jī)通信程序和下位機(jī)通信程序的設(shè)計(jì))兩個(gè)方面,著重介紹實(shí)現(xiàn)多串口通信的基本方法,采用VC++6并結(jié)合定時(shí)器和多線程技術(shù)編寫,提出了實(shí)現(xiàn)多串口通信的方法,使用多個(gè)串口并行通信,從而實(shí)現(xiàn)大規(guī)模的數(shù)據(jù)采集與高速數(shù)據(jù)傳輸操作。該課題的研究在實(shí)際運(yùn)用中也有重大意義,在工業(yè)監(jiān)控?cái)?shù)據(jù)采集和實(shí)時(shí)監(jiān)控系統(tǒng)中得到了廣泛的應(yīng)用。故使得PC機(jī)和單片機(jī)之間的通信更重要。關(guān)鍵詞:多串口;多線程;串口通信;VC++ABSTRACT This paper firstly introduces the multiserial port multi threading energy management system based on the current situ ation and development prospect realizes serial munication, puter and other equipment munication is easier, use agile, data transmission and reliable, this article from the general structure of the system and by PC (a agencies into) the design, analysis of the parts system function, PC through a serial port control SCM in data collection, to monitor the other equipment operation. Lower place machine will of the data collected through serial again returned PC for storage ana lysis, in order to realize the centralized management and optimal control. Then is the munication program written (including PC munication procedures and lower level p uter munication program design) two aspects, introduced emphatically realize the basic method of serial munication more, using VC++ 6 and bined with timer and multithread technology, this paper points out many written, the method of serial munication serial parallel munication, use more so as to realize the largescale data acquisition and the highspeed data trans mission operation. This topic research in actual use also was significant, in industrial monitoring data acquisition and realtime monitoring system has been widely used. So make PCS and of munication between the microcontroller is more important. Key words: multiserial 。 multithread。 serial munication。 VC ++ 。 目 錄1. 緒論 11.1課題的意義 11.2 能量管理系統(tǒng)的發(fā)展歷史 11.3 多串口多線程技術(shù)發(fā)展現(xiàn)狀及前景 22. 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 22. 1 硬件結(jié)構(gòu)設(shè)計(jì) 22.1.1上位機(jī)的工作原理 42.1.2下位機(jī)的工作原理 4 53. 1串行通信實(shí)現(xiàn)的方法 53.2上位機(jī)通信軟件的設(shè)計(jì) 123.2.1通信的主程序 153.2. 2子通信線程 163.3下位機(jī)通信軟件的設(shè)計(jì) 184. 串口通信協(xié)議 194.1 單片機(jī)的參數(shù)設(shè)置 194.2 PC機(jī)的串口協(xié)議 225. 結(jié)語 25參考文獻(xiàn): 151 緒論隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展 ,在線監(jiān)控在現(xiàn)代工業(yè)企業(yè)中的需求日趨上升 ,采用串口通信實(shí)現(xiàn)計(jì)算機(jī)與其他設(shè)備通信具有實(shí)現(xiàn)簡單 ,使用靈活 ,數(shù)據(jù)傳輸可靠等優(yōu)點(diǎn) ,因此在工業(yè)監(jiān)控、數(shù)據(jù)采集和實(shí)時(shí)監(jiān)控系統(tǒng)中得到了廣泛應(yīng)用。由于監(jiān)控設(shè)備的增多 ,僅用 PC機(jī)提的兩個(gè)串口已不能滿足通信數(shù)量的要求 ,因此我們可以借助多用戶卡 ,擴(kuò)展出八個(gè)串口 ,由于多路串行通信在實(shí)際的編程中比較復(fù)雜。目前 ,大部分資料在解決多串口通信問題時(shí) 幾乎都采用多線程編程 ,本文在此基礎(chǔ)上提出了解決多路串行通信的方法同時(shí),在一些典型的實(shí)時(shí)系統(tǒng)和規(guī)模較大的數(shù)據(jù)采集系統(tǒng)中多任務(wù)的要求比較普遍。這時(shí)系統(tǒng)中需要有線程專門負(fù)責(zé)數(shù)據(jù)采集,以實(shí)現(xiàn)實(shí)時(shí)多任務(wù)并行的需要。線程是Windows9X/2000的基本執(zhí)行單位,是Window為程序分配CPU時(shí)間的基本實(shí)體。每個(gè)進(jìn)程由一個(gè)或多個(gè)線程組成,同一進(jìn)程中的多個(gè)線程,可以共享地址空間和所有的處理器資源,避免了用多進(jìn)程實(shí)現(xiàn)并行性的缺陷。能量管理系統(tǒng)(Energy Management System)是以計(jì)算機(jī)技術(shù)和電力系統(tǒng)應(yīng)用軟件技術(shù)。為支撐的現(xiàn)代電力系統(tǒng)綜合自動(dòng)化系統(tǒng),也是能量系統(tǒng)和信息系統(tǒng)的一體化或集成。EMS 是以調(diào)度自動(dòng)化為核心內(nèi)容。隨著計(jì)算機(jī)技術(shù)和計(jì)算技術(shù)的發(fā)展,EMS 使傳統(tǒng)的調(diào)度自動(dòng)化向廣義的調(diào)度功能一體化乃至全網(wǎng)的綜合自動(dòng)化方向發(fā)展。 最初的 EMS系統(tǒng)是在 20世紀(jì) 70 年代中期產(chǎn)生的。它在數(shù)據(jù)收集和監(jiān)控系統(tǒng) SCADA 的基礎(chǔ)上,將自動(dòng)發(fā)電控制 AGC(Automatic Generation Control)和部分網(wǎng)絡(luò)分析軟件功能集成一體,用數(shù)字計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)其全部功能。 計(jì)算機(jī)硬件系統(tǒng)經(jīng)歷了從初期采用專用控制型計(jì)算機(jī)到全部采用通用計(jì)算機(jī)的過程。EMS 的計(jì)算機(jī)軟件經(jīng)歷了從專門設(shè)計(jì)控制程序到采用通用控制系統(tǒng)、專門開發(fā)數(shù)據(jù)庫和畫面編譯系統(tǒng)及形成專門的 EMS 支持平臺(tái)的過程。隨著電力系統(tǒng)模型與算法的發(fā)展,EMS的高級應(yīng)用軟件也逐步完善和豐富。尤其是面向電力市場的環(huán)境,電網(wǎng)管理由壟斷走向開放,EMS 的功能將面臨新的改造和更新。 我國的 EMS 經(jīng)歷了 70 年代基于專用計(jì)算機(jī)和專用操作系統(tǒng)的 SCADA 系統(tǒng)的第一代;80年代基于通用計(jì)算機(jī)的第二代;90 年代基于 RISC/UNIX 的開放式分布式的第三代。第四代的主要特征是采用 JAVA、因特網(wǎng)、面向?qū)ο蟮燃夹g(shù)并綜合考慮電力市場環(huán)境中的安全運(yùn)行及商業(yè)化運(yùn)營要求,它將在本世紀(jì)誕生。線程可以定義為進(jìn)程中的異步代碼路徑。在支持多線程技術(shù)的操作系統(tǒng)中,進(jìn)程可以包含多個(gè)線程,這些線程可以按照與多用戶操作系統(tǒng)同時(shí)支持多進(jìn)程相同的方式同時(shí)運(yùn)行。從本質(zhì)上講,多線程可以在一個(gè)進(jìn)程內(nèi)同時(shí)運(yùn)行。在目前的工控系統(tǒng)中,工控儀器如何把可靠數(shù)據(jù)成功傳送給計(jì)算機(jī)終端已經(jīng)是一個(gè)至關(guān)重要的環(huán)節(jié),而串行通信以其方便易行,信道成本比較低廉的優(yōu)勢,常常作為計(jì)算機(jī)與外部串行設(shè)備之間的首選數(shù)據(jù)傳輸通道,又因?yàn)樵S多設(shè)備和計(jì)算機(jī)都可以通過串口對外設(shè)進(jìn)行控制、檢測,串口通訊日益成為計(jì)算機(jī)和外設(shè)進(jìn)行通訊、獲取由外設(shè)采集到的監(jiān)測數(shù)據(jù)的一個(gè)非常重要的手段。而采用單線程進(jìn)行多串口通信 ,接收數(shù)據(jù)、顯示數(shù)據(jù)、發(fā)送數(shù)據(jù)串行執(zhí)行 ,此種方法進(jìn)行程序設(shè)計(jì)簡單 ,易于調(diào)試 ,系統(tǒng)便于管理 ,但系統(tǒng)等待時(shí)間長 ,執(zhí)行效率比較低 ,實(shí)時(shí)性差 ,適用對實(shí)時(shí)性要求不高的場合。而開啟讀寫兩個(gè)線程進(jìn)行多串口通信 ,數(shù)據(jù)接收、數(shù)據(jù)顯示、發(fā)送數(shù)據(jù)三者同時(shí)執(zhí)行 ,減少了系統(tǒng)的等待時(shí)間 ,使系統(tǒng)具有更好的響應(yīng)性和高效性。為每個(gè)串口開啟一個(gè)監(jiān)視線程進(jìn)行多串口通信 ,使得系統(tǒng)對于多路串行通信進(jìn)行同時(shí)控制 ,這種方法適用于對于多路通信接收所耗費(fèi)的時(shí)間差別較大的情況 ,這時(shí)可以減少對某一路接收信息的等待時(shí)間 ,如果接收耗費(fèi)時(shí)間相當(dāng) 。由于串口通信實(shí)現(xiàn)計(jì)算機(jī)與其他設(shè)備通信具有實(shí)現(xiàn)簡單 ,使用靈活 ,數(shù)據(jù)傳輸可靠等優(yōu)點(diǎn),從而促進(jìn)了對多串口多線程技術(shù)的研究,因此在工業(yè)監(jiān)控、數(shù)據(jù)采集和實(shí)時(shí)監(jiān)控系統(tǒng)中得到了廣泛應(yīng)用。2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)分塊的系統(tǒng)結(jié)構(gòu)對整個(gè)系統(tǒng)來說是相當(dāng)重要的,而層次結(jié)構(gòu)能將一個(gè)復(fù)雜的問題分解成若干個(gè)簡單的問題,然后逐個(gè)解決。該多路串行通信系統(tǒng)由上位機(jī)和下位機(jī)構(gòu)成 ,如圖 1所示 , PC機(jī)多用戶卡轉(zhuǎn)換板轉(zhuǎn)換板單片機(jī)單片機(jī)目標(biāo)控制器數(shù)據(jù)采集器數(shù)據(jù)采集器目標(biāo)控制器 圖1 多串口通信模型上位機(jī)為 PC 機(jī),內(nèi)部加一個(gè)MOXA 的多串口卡,可擴(kuò)展出 32 個(gè)串口。下位機(jī)為單片機(jī)構(gòu)成的監(jiān)測和數(shù)據(jù)采集系統(tǒng)。二者通過調(diào)制解調(diào)器和電話網(wǎng)進(jìn)行通信連接該框圖中,起著重要作用的是RS232C通信接口電路(即圖1中的轉(zhuǎn)換版)。它是上位機(jī)和下位機(jī)之間信息傳遞的樞紐,一切數(shù)據(jù)的傳輸必需由它完成,上位機(jī)直接利用它的RS232串行口,為此,采用了RS232串行通信來接收或上傳數(shù)據(jù)和指令。但RS232信號(hào)的電平和單片機(jī)串口信號(hào)的電平不一致,必須進(jìn)行二者之間的電平轉(zhuǎn)換。在此電路中,采用MAX232實(shí)現(xiàn)TTL邏輯電平和RS232電平之間的相互轉(zhuǎn)換。 MAX232由單一的+5V電源供電,只需配接5個(gè)高精度10μF/50V的鉭電容即可完成電平轉(zhuǎn)換。因此,避免了用1488和1489時(shí)必需兩路電源的麻煩。轉(zhuǎn)換后的串行信號(hào)TXD、RXD直接與PC機(jī)的串行口連接。如此設(shè)計(jì),既可發(fā)揮出PC機(jī)的強(qiáng)大的計(jì)算和顯示功能,又可以體現(xiàn)出單片機(jī)靈活的控制功能,有利于對現(xiàn)場信號(hào)的實(shí)時(shí)采集、處理和監(jiān)控。下位機(jī)的主要功能是定時(shí)采集傳感器上的信息并臨時(shí)保存, 以及根據(jù)上位機(jī)發(fā)出的控制命令執(zhí)行控制操作和上報(bào)數(shù)據(jù)。一個(gè)下位機(jī)可以對多個(gè)數(shù)據(jù)點(diǎn)進(jìn)行監(jiān)測和控制。通常PC機(jī)和單片機(jī)之間的通信是通過串行總線RS232實(shí)現(xiàn)的。因此采用一種以MAX232為核心的通信接口電路。該接口電路適用于由一臺(tái)PC機(jī)與多個(gè)8051單片機(jī)串行通信的設(shè)計(jì),其原理和方法同樣適用于PC機(jī)與其它單片機(jī)之間的串行數(shù)據(jù)通信 上位機(jī)的工作原理上位機(jī)為 PC機(jī) , PC機(jī)通過多用戶卡可擴(kuò)展出八個(gè)串口。上位機(jī)直接利用RS232串行口,為此。與傳統(tǒng)的 TTL等數(shù)字電路的邏輯電平不同 , RS232串行通信是美國電氣工業(yè)協(xié)會(huì)(EIA)與BELL公司等一起開發(fā)的一種標(biāo)準(zhǔn)通信協(xié)議,現(xiàn)在它在終端、外設(shè)與計(jì)算機(jī)中被廣泛采用,該標(biāo)準(zhǔn)規(guī)定了21個(gè)信號(hào)和25個(gè)引腳,它采用雙極性的邏輯信號(hào),0邏輯信號(hào)為+3V~+12V,1邏輯信號(hào)為 12V~ 3V,它的傳輸速率最大為20Kbps,傳輸距離僅為15m 。由于RS232主要完成電平移位、轉(zhuǎn)換和信號(hào)的反相等,所以它有自己的電平轉(zhuǎn)換和驅(qū)動(dòng)芯片。在系統(tǒng)結(jié)構(gòu)中, RS232C通信接口電路,它是上位機(jī)和下位機(jī)之間信息傳遞的樞紐,一切數(shù)據(jù)的傳輸必需由它完成。此電路中,采用MAX232實(shí)現(xiàn)TTL邏輯電平和RS232電平之間的相互轉(zhuǎn)換。 MAX232由單一的+5V電源供電,只需配接5個(gè)高精度10μF/50V的鉭電容即可完成電平轉(zhuǎn)換后的串行信號(hào)TXD、RXD直接與PC機(jī)的串行口連接。如此設(shè)計(jì),既可發(fā)揮出PC機(jī)的強(qiáng)大的計(jì)算和顯示功能,又可以體現(xiàn)出單片機(jī)靈活的控制功能,有利于對現(xiàn)場信號(hào)的實(shí)時(shí)采集、處理和監(jiān)控。RS2232標(biāo)準(zhǔn)規(guī)定信號(hào)電壓在 12~ 3V和 3~12V,傳號(hào)和空號(hào)之間至少有 6V的電壓差 ,提高了數(shù)據(jù)傳輸?shù)目煽啃院涂垢蓴_能力。因此 ,單片機(jī)與 PC機(jī)需要用一個(gè)電平轉(zhuǎn)換板 ,要用 MAX232芯片實(shí)現(xiàn) TTL 電平和 RS232電平相互轉(zhuǎn)換。因?yàn)镸AX232本身帶有電源電壓變換器,可以把+5V和5V電壓變換成RS232輸出電平所需的+10V和10V電壓,實(shí)現(xiàn)RS232的技術(shù)指標(biāo),并只需要+5V電源,為串行通信帶來好性能。二者通過調(diào)制解調(diào)器和電話網(wǎng)進(jìn)行通信連接。 下位機(jī)的工作原理下位機(jī)的作用是將傳感器采集到的模擬信號(hào)進(jìn)行 A/D轉(zhuǎn)換并臨時(shí)保存 ,然后向上位機(jī)發(fā)送采集到的數(shù)字量 ,同時(shí)根據(jù)上位機(jī)發(fā)來的控制指令控制目標(biāo)控制器執(zhí)行相應(yīng)的操作。上位機(jī)的作用是利用多串口多線程的通信軟件,接收下位機(jī)采集的數(shù)據(jù) ;在 PC機(jī)上實(shí)時(shí)地顯示控制變量的狀態(tài) ,同時(shí)針對發(fā)生的情況 ,向下位機(jī)發(fā)送控制指令;根據(jù)系統(tǒng)的不同要求,通過通信軟件調(diào)整下位機(jī)的各種參數(shù)。 上位機(jī)和下位機(jī)這樣配合,一起構(gòu)成一個(gè)能實(shí)現(xiàn)遙控、遙測、遙調(diào)功能的遠(yuǎn)程控制測量系統(tǒng)。 該系統(tǒng)硬件連接簡單,穩(wěn)定可靠。通信軟件采用VC++實(shí)現(xiàn),將收集到的各種數(shù)據(jù)信息保存到數(shù)據(jù)庫中,為后續(xù)的數(shù)據(jù)處理提供了極大的方便。數(shù)據(jù)庫系統(tǒng)采用MSSQLServer,VC++通過ODBC接口對其進(jìn)行訪問。 3 通信軟件程序設(shè)計(jì) 串口通信實(shí)現(xiàn)方法開發(fā)串口通信軟件 可以利用VC++6. 0 , VC++運(yùn)行時(shí)標(biāo)準(zhǔn)通信函數(shù)、MSComm 控件、WindowsAPI函數(shù)、第三方類實(shí)現(xiàn)串行通信。1) 用VC++運(yùn)