




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目 錄摘要4一、概述7(一)、嵌入式簡介7(二)、國發(fā)展現(xiàn)狀7(三)、本文的主要研究容7二、嵌入式設備的軟硬件設計7(一)、嵌入式系統(tǒng)的特點與發(fā)展71嵌入式的定義與特點。72嵌入式處理器的發(fā)展。83本設計所采用的處理器與實驗板介紹。8(二)、嵌入式操作系統(tǒng)簡介81嵌入式操作系統(tǒng)的分類和發(fā)展。82uClinux的發(fā)展過程。93uClinux的移植。9(三)、uClinux下應用程序的設計111uClinux下的文件系統(tǒng)與應用程序設計方法112應用程序設計13三、嵌入式設備與pc上位機的通信17(一)、Socket編程簡介171網絡基礎知識。172Socket編程的概念。183并發(fā)服務器基礎。20
2、(二)、嵌入式中Unix下的Socket程序設計221Socket程序要實現(xiàn)的功能和總體設計。222發(fā)送數(shù)據(jù)報格式。233接受的數(shù)據(jù)報格式。234參數(shù)控制。23(三)、上位機中WinSock程序設計241Windows下Socket編程的簡介。242并發(fā)服務器采用的算法。243C#中Socket編程的注意事項。25四、基于c/s的嵌入式遠程監(jiān)控系統(tǒng)的設計26(一)、服務器所要實現(xiàn)的功能261服務器要實現(xiàn)的功能分析。262采用c/s模式的原因26(二)、c/s結構系統(tǒng)總體設計261c/s結構中服務器的數(shù)據(jù)庫基本表結構262表的關系圖27(三)、服務器端程序設計271連接數(shù)據(jù)庫與數(shù)據(jù)庫操作。272
3、用戶登錄與用戶管理模塊283冷庫管理模塊284參數(shù)配置管理模塊295溫度查詢模塊296Ip更改模塊29五、基于b/s的遠程查詢系統(tǒng)的設計30(一)、b/s模式實現(xiàn)的功能與用途30(二)、水晶報表簡介30(三)、遠程查詢模塊的實現(xiàn)301水晶報表的使用方法302遠程查詢的實現(xiàn)30六、結論30辭31參考文獻32附錄3334 / 34摘 要遠程測控系統(tǒng)是集計算機技術、測控技術、網絡技術于一體的技術密集型產品系統(tǒng)。隨著通信技術、集成電路制造技術的快速發(fā)展以與Internet技術的廣泛應用,遠程測控技術獲得了長足的發(fā)展。本論文以工業(yè)冷庫為例對基于Internet的遠程測控系統(tǒng)進行了研究。本論文首先對嵌入式
4、系統(tǒng)的硬件進行了分析,選擇了合適的開發(fā)設備,采用了uCLinux操作系統(tǒng)作為嵌入式設備上的操作系統(tǒng),對uCLinux核的裁剪和移植做了詳細介紹,同時介紹了交叉編譯環(huán)境,搭建了一個完整的嵌入式開發(fā)平臺。介紹了在此平臺下用C語言開發(fā)的嵌入式應用程序,實現(xiàn)了數(shù)據(jù)采集,數(shù)據(jù)通訊和數(shù)據(jù)控制等功能。本論文討論了Socket編程在跨系統(tǒng)下的應用,確定了C/S模式的網絡框架結構。服務器端采用的開發(fā)工具是C#,數(shù)據(jù)庫采用了SQLserver,實現(xiàn)了關于冷庫的各種數(shù)據(jù)的操作。同時考慮到實際應用中的遠程查詢,設計了B/S模式的遠程查詢模塊,采用了水晶報表(Crystal Report)作為報表生成和打印的工具。本論
5、文的軟件平臺為該遠程監(jiān)控系統(tǒng)進一步開發(fā)打下了良好的基礎,文章最后提出了應改進的問題,對后期進一步完善提出一些意見。關 鍵 字嵌入式系統(tǒng),監(jiān)控系統(tǒng),Crystal Report,Socket編程,uCLinuxAbstractRemote monitoring&controlling system is a density technology product system, which includes computer technology, measuring technology and net technology. With the development of commun
6、ication technology,the manufacture technology of Integrate Circuit and the widely application of Internet technology, the remote monitoring&controlling system technology has developed faster and faster. In this thesis some research on the remote monitoring&controlling system, for example, in
7、dustry storehouse, based on Internet is carried out.The thesis analyzed the hardware of the embedded system and chose proper development device. UCLinux was selected as operation system on embedded device. Further analysis on uCLinux about its tailor and transportation is done in this paper. Simulta
8、neously,the in compiling environment of uCLinux O/S and its application programmes base on the RedHat Linux O/S was set up. The embedded application programme was developed in C language and data acquisition, communication and control have been realized.The paper discussed the application of Socket
9、programming using in different operation system. The net structure of the design based on client/server model. C# was used as development tool and SQLserver database was used as the background database. Various operation on data are realized by the server about the storehouse.Meanwhile considering o
10、f the remote request, browse/server model was adopted as a remote request module. Crystal Report was used as a tool to generate and print report.The software platform of this paper makes good foundation for future research work. In the end of the paper some questions that need to be improved are put
11、 forward also with the suggestions that would perfect the design.Key WordEmbedded System ,Control System ,Crystal Report ,Socket Programming ,uClinu一、概述(一)、嵌入式簡介嵌入式系統(tǒng)是以應用為中心,以半導體技術、控制技術、計算機技術和通訊技術為基礎,強調硬件軟件的協(xié)同性與整合性,軟件與硬件可剪裁,適用于應用系統(tǒng)對功能可靠性、成本體積功耗有嚴格要求的專用計算機系統(tǒng)。它一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統(tǒng)以與用戶的應用程序等四個部分組成
12、,主要作用是實時控制(Control)、監(jiān)視(Monitor),管理移動計算機(Management)、數(shù)據(jù)處理等,或者輔助其它設備運轉,完成各種自動化處理的任務。嵌入式系統(tǒng)是一個技術密集、資金密集、高度分散、不斷創(chuàng)新的知識集成系統(tǒng),對整個系統(tǒng)的體積功耗成本等都有嚴格的限制,嵌入式系統(tǒng)的設計不同于桌面計算機系統(tǒng)設計的一個方面在于:嵌入式系統(tǒng)非常受限于功能和具體的應用環(huán)境,如實時性的要求;對外部事件必須保證在規(guī)定時間進行響應;功率預算、散熱必須符合環(huán)境要求;有體積、重量的限制;需要令人滿意的安全性可靠性;系統(tǒng)本身的成本需求等。因此在嵌入式系統(tǒng)設計時需要重點考慮下面一些因素:實時性好,可靠性高,集
13、成度高,功耗低,環(huán)境適應能力強,系統(tǒng)成本低等。(二)、國發(fā)展現(xiàn)狀 基于internet/intranet的嵌入式遠程監(jiān)控技術在我國處于起步階段,近年國家出臺了一系列信息產業(yè)政策,大力發(fā)展信息產業(yè),對電子信息行業(yè)的企業(yè)在政策、稅收等方面實行了相當?shù)膬?yōu)惠,這大大促進了作為信息產業(yè)一部分的嵌入式遠程監(jiān)控系統(tǒng)的發(fā)展。國的遠程監(jiān)控技術正在被廣泛的應用到安防、郵電、電力、通訊、銀行、工業(yè)控制等國民經濟中的各個領域。隨著工業(yè)控制技術的發(fā)展、網絡傳輸速度的提高、國芯片制造業(yè)的日趨壯大,嵌入式網絡遠程監(jiān)控技術必將獲得長足的發(fā)展,從而有力的促進國民經濟的發(fā)展。(三)、本文的主要研究容本設計主要結合嵌入式遠程測控系
14、統(tǒng)在工業(yè)冷庫方面的應用設計了一套完整的軟硬件解決方案。首先,了解嵌入式近幾年的發(fā)展,選擇合理的嵌入式設備和操作系統(tǒng),搭建實驗平臺,了解開發(fā)環(huán)境。對嵌入式操作系統(tǒng)進行了研究,分析了其存管理、進程調度、文件系統(tǒng)。了解嵌入式硬件設備所能實現(xiàn)的功能,完成嵌入式設備上應用程序的總體設計,找出不能實現(xiàn)的模塊,進行模擬。完成uClinux操作系統(tǒng)的定制和移植。完成嵌入式設備上溫度測控部分的設計和開發(fā)。完成嵌入式設備和上位機的通訊模塊,妥善解決并發(fā)服務器的問題,保證工業(yè)系統(tǒng)要求的實時性。設計完成上位機(pc)上的基于C/S模式的信息存儲和管理程序和基于B/S模式的信息瀏覽程序。二、嵌入式設備的軟硬件設計(一)
15、、嵌入式系統(tǒng)的特點與發(fā)展1嵌入式的定義與特點。嵌入式系統(tǒng)應定義為:“嵌入到對象體系中的專用計算機系統(tǒng)”?!扒度胄浴?、“專用性”與“計算機系統(tǒng)”是嵌入式系統(tǒng)的三個基本要素。對象系統(tǒng)則是指嵌入式系統(tǒng)所嵌入的宿主系統(tǒng)。這個定義是較多定義的一種,對于嵌入式的真正官方定義還仍然在討論中,不過這不會對嵌入式的發(fā)展和應用帶來任何影響。按照上述嵌入式系統(tǒng)的定義,只要滿足定義中三要素的計算機系統(tǒng),都可稱為嵌入式系統(tǒng)。嵌入式系統(tǒng)按形態(tài)可分為設備級(工控機)、板級(單板、模塊)、芯片級 (MCtf, SOC)。2嵌入式處理器的發(fā)展。嵌入式系統(tǒng)的核心部件是各種類型的嵌入式處理器,目前據(jù)不完全統(tǒng)計,全世界嵌入式處理器的
16、品種總量己經超過1000多種,流行體系結構有30幾個系列,可以分成下面幾類。(1)嵌入式微處理器(Embedded Microprocessor Unit, EMPU)。(2)嵌入式微控制器(Microcontroller Unit, MCU) 。(3)嵌入式DSP處理器(Embedded Digital Signal Processor, EDSP)。(4)嵌入式片上系統(tǒng)(System On Chip)我們要使用的是SAMSONG公司生產的32位嵌入式處理器S3C44B0X 處理器。S3C44B0X微處理器是一款低功耗、高集成度的基于ARM7TDMI核的微處理器。3本設計所采用的處理器與實驗
17、板介紹。S3C44B0X微處理器的體系結構,它采用了16/32位RISC結構和ARM精簡指令集,Thumb協(xié)處理器在保證性能的前提下使代碼密度最大;片上ICE支持JTAG調試方式;32*8位硬件乘法器。本設計采用的實驗板是JX44B0 ARM嵌入式教學實驗箱。其硬件系統(tǒng)包含了嵌入式系統(tǒng)開發(fā)應用所需的大部分接口,如以太網、USB接口、音頻接口、觸摸屏與鍵盤等。實驗箱結構如圖所示。(二)、嵌入式操作系統(tǒng)簡介1嵌入式操作系統(tǒng)的分類和發(fā)展。嵌入式操作系統(tǒng)的種類繁多,但大體上可分為2種商用型和免費型。目前商用型的操作系統(tǒng)主要有VxWorks,WindowsCE,Psos,Palm OS,OS-9,Lyn
18、xOS,QNX,LYNX等。他們的優(yōu)點是功能穩(wěn)定、可靠,有完善的技術支持和售后服務,而且提供了如圖形用戶界面和網絡支持等高端嵌入式系統(tǒng)要求的許多高級的功能,缺點是價格昂貴且代碼封閉,這就大大影響了開發(fā)者的積極性。目前免費型的操作系統(tǒng)主要有Linux和uC/OS-II,他們在價格方面具有很大的優(yōu)勢。比如嵌入式Linux操作系統(tǒng)以價格低廉,功能強大,易于移植而且程序源碼全部公開等優(yōu)點正在被廣泛采用。Linux是一種在網絡上產生的操作系統(tǒng),它的誕生己經有13年的歷史。在工nternet上,有大量Linux的免費版本和其它資源。與傳統(tǒng)的操作系統(tǒng)不同,Linux操作系統(tǒng)的開發(fā)一開始就是在FSF的GAL的
19、版本控制之下,Linux核的所有源代碼都采取了開放源代碼的形式。與其他操作系統(tǒng)相比,Linux操作系統(tǒng)具有以下優(yōu)點:第一,核穩(wěn)定、功能強大、支持多種平臺、應用軟件多、兼容性好; 第二,核可根據(jù)需要任意裁剪;第三,使用成本低;第四,多專業(yè)的商業(yè)與公司參與,發(fā)展?jié)摿Υ蟆?uClinux的發(fā)展過程。Linux操作系統(tǒng)本身是從Unix操作系統(tǒng)演化而來。Linux操作系統(tǒng)從誕生之初就是一個免費的操作系統(tǒng),可初期的Linux版本確不能直接運行于傳統(tǒng)的工業(yè)控制用微處理器,因為工業(yè)控制上大量使用的微處理器一般不需要存管理的功能,所以一般的都不會有MMU。可是Linux設計之初(其它操作系統(tǒng)一般也是)是面向有M
20、E 的處理器的。在很多工程師的共同努力工作下,Linux經過改進以后可以在這些沒有MMU的微處理器上運行,uClinux就是其中最著名的發(fā)行版本之一。uClinux最初是由幾位軟件工程師移植在基于Motorola公司的DragonBall微處理器的一款Palm上面。隨著M68K系列微處理器延續(xù)到ColdFire系列微處理器,uclinux主要也就集中應用在ColdFire微處理器上。當然,隨著其它微處理器的廣泛應用,uClinux也已經被廣泛使用在了ARM, MIPS, SPARC, SuperH等等沒有MMU的微處理器上。3uClinux的移植。下圖所示為本設計所采用的是實驗環(huán)境與開發(fā)流程。
21、在主機的Red Hat Linux操作系統(tǒng)下安裝uClinux-dist發(fā)行包以與交叉編譯器arm-elf-tools。然后對uClinux進行配置并選擇適合本試驗系統(tǒng)的相關配置,配置完成后進行編譯,生成uClinux映像文件zImage。然后通過jx44b0提供的BootLoader將該文件下載到目標板并運行。主機目標機S3C44B0X:RedHat LinuxBootLoader啟動BootLoader下載uClinux映像文件運行uCLinux安裝uClinux-dist安裝arm-elf-tools配置make menuconfig編譯(1)移植的概念基于處理器的移植這種類型的移植要求
22、從支持處理器的編譯器開始。這是最主要也是最困難的一步。基于處理器的移植還包括操作系統(tǒng)的移植 (假如嵌入式設備不需要操作系統(tǒng),則編譯器完成后就可以進入編寫應用的階段)。另外從編寫應用的角度來看,還必須提供函數(shù)庫。因此函數(shù)庫的移植也是必須的。基于平臺的移植 這種移植相對于處理器的移植而言所處的開發(fā)層次更高,主要在板級上進行。對于一個嵌入式設備,除了處理器還要有很多周邊的器件才能正常工作。因此操作系統(tǒng)在運行時必須初始化特定目標板的器件。(2)交叉編譯環(huán)境的搭建通常程序在一臺計算機上編譯,然后再分布到將要使用的其它計算機上。將主機系統(tǒng)(運行編譯器的系統(tǒng))和目標系統(tǒng)(產生的程序將在其上運行的系統(tǒng))不兼容
23、時,該過程就叫做交叉編譯。本課題的主機采用的是x86體系結構的RedHat Linux系統(tǒng),目標系統(tǒng)是S3C44B0X ARM7TDMI處理器。采用arm-elf-tools交叉編譯環(huán)境arm-elf-tools-20030314.sh,該工具可從./pub/uClinux/arm-elf-tools/上下載。得到這個文件以后,執(zhí)行以下命令:sh arm-elf-tools-20030314.sh這個命令將在主機上安裝uClinux-ARM的交叉編譯環(huán)境。安裝完成后,鍵入arm-elf-gcc,如果能看到下面的輸出信息:arm-elf-gcc:No input files
24、表示uClinux-ARM的交叉編譯環(huán)境已建立。(3)uClinux源代碼的安裝本課題的uClinux發(fā)行文件為uClinux-dist-jx44b0.tar.gz,在Redhat下將該文件拷貝到/home/cvtech/jx44b0目錄下,然后在該目錄下執(zhí)行tar zxvf uClinux-dist-jx44b0.tar.gz。當tar程序運行完畢后,在/home/cvtech/jx44b0目錄下會有一個uClinux-dist的新目錄,這個目錄就是uClinux的源碼根目錄,里面有進行uClinux開發(fā)的所有源代碼。(4)編譯uClinux核鍵入命令cd /home/cvtech/jx44
25、b0/uClinux-dist/linux-2.4.xmake menuconfig啟動菜單配置工具后,選擇Load an Alternate Configuration File選項,然后確認。該選項將載入jx44b0的標準配置文件config-jx44b0,該文件保存在/home/cvtech/jx44b0/uClinux-dist/2.4.x目錄下,此文件不能修改。保存后顯示核配置選項,各項意義如下表:鍵入命令make dep建立依賴關系鍵入命令make zImage編譯核生成的uClinux映像文件保存在/home/cvtech/jx44b0/uClinux-dist/images目錄
26、下。(5)配置文件編譯核涉與到的配置文件有很多,最重要的就是Vendors/xxx/xxx/Makefile。在核編譯的過程中,將會調用此Makefile文件,此文件的作用是構成Root文件系統(tǒng),并進行壓縮,生成romfs.o。在生成Root文件系統(tǒng)的過程中,有可能還會用到motd,rc,inittab等文件,則需要為此Makefile文件準備這些文件,憑程序要增添設備,需要往Root文件系統(tǒng)中增添文件都可以在此Makefile中驚醒相應的更改。(三)、uClinux下應用程序的設計1uClinux下的文件系統(tǒng)與應用程序設計方法(1)文件系統(tǒng)簡介隨著Linux的不斷發(fā)展,它所支持的文件格式系統(tǒng)
27、也在迅速擴充。Linux系統(tǒng)核心可支持10多種文件系統(tǒng)的類型:JFS,ReiserFS,ext,ext2,ext3,ISO9660,XFS,Minx,MSDOS,UMSDOS,VFAT,NTFS,HPFS,NFS,SMB,SysV,PROC和romfs等。本課題采用的是romfs文件系統(tǒng),它的特點如下:Romfs文件系統(tǒng)是一個精簡的只讀文件系統(tǒng)。相對于一般的ext2文件系統(tǒng),它要求更少的空間。Romfs文件系統(tǒng)不支持動態(tài)擦寫保存,對于系統(tǒng)需要動態(tài)保存的數(shù)據(jù)采用虛擬RAM盤的方法進行處理(RAM盤將采用ext2文件系統(tǒng))。Jx44b0 uClinux系統(tǒng)采用的就是romfs文件系統(tǒng)。(2)uCl
28、inux根文件系統(tǒng)的制作uClinux發(fā)行版本中包含所有跟文件系統(tǒng)應用程序的所有源程序,并可配置以進行文件系統(tǒng)的裁剪。文件系統(tǒng)源代碼位于/home/cvtech/jx44b0/uClinux-dist/user目錄下。在/home/cvtech/jx44b0/uClinux-dist/目錄下執(zhí)行:make menuconfig并選擇Customize Vendor/User Setting后,將打開文件系統(tǒng)配置菜單,用戶可以自由定制。然后執(zhí)行make編譯核和文件系統(tǒng),編譯后的文件系統(tǒng)位于/home/cvtech/jx44b0/uClinux-dist/romfs目錄中,然后通過genromfs
29、程序生成文件系統(tǒng)映像文件/home/cvtech/jx44b0/uClinux-dist/images/romfs.img。其命令為:genromfs v V “ROMdisk”f ./uClinux-dist/images/romfs.img d ./uClinux-dist/romfs前一個目錄是生成的映像文件名(包括路徑),后一個是文件系統(tǒng)根目錄。(3)uClinux下應用程序的設計方法下面結合我所設計的具體程序分析uClinux下應用程序的設計方法,我的源程序的文件名為ad.c。首先用gedit工具編輯源程序ad.c,保存在/home/cvtech/jx44b0/ad目錄中。然后編寫M
30、akefile文件,使用vi編輯工具編輯Makefile文件,如下所示并保存于/home/cvtech/jx44b0/ad目錄中。CC=arm-elf-gccLD=arm-elf-ldEXEC=adOBJS=ad.oCFLAGS+=LDFLAGS+= -Wl,-elf2fltall:$(EXEC)$(EXEC):$(OBJS)$(CC) $(LDFLAGS) -o $ $(OBJS) $(LDLIBS$(LDLIBS_$) cp $(EXEC) ./uClinux-dist/romfs/bingenromfs -v -V "ROMdisk" -f ./uClinux-dis
31、t/images/romfs.img -d ./uClinux-dist/romfs$(LD) -r -o ./uClinux-dist/linux-2.4.x/romfs.out -b binary ./uClinux-dist/images/romfs.imgclean:-rm -f $(EXEC) *.elf *.gdb *.o$(OBJS):下面簡要介紹一下各個部分的含義所采用的編譯器和器CC=arm-elf-gccLD=arm-elf-ld生成的執(zhí)行文件和過程中的目標文件EXEC=adOBJS=ad.o編譯和的參數(shù),其中”-Wl,-elf2flt”是必須的,他告訴編譯器產生flt格式
32、的執(zhí)行文件。CFLAGS+=LDFLAGS+= -Wl,-elf2flt編譯命令,執(zhí)行完成將生成ad映像文件。$(CC) $(LDFLAGS) -o $ $(OBJS) $(LDLIBS$(LDLIBS_$)拷貝ad映像文件到romfs中。cp $(EXEC) ./uClinux-dist/romfs/bin生成romfs映像。genromfs -v -V "ROMdisk" -f ./uClinux-dist/images/romfs.img -d ./uClinux-dist/romfs將romfs映像轉換成binary的romfs.out文件,uClinux核心時自動
33、將該文件到映像文件中。$(LD) -r -o ./uClinux-dist/linux-2.4.x/romfs.out -b binary ./uClinux-dist/images/romfs.img清除。clean:-rm -f $(EXEC) *.elf *.gdb *.o其次配置ad自動運行。因為嵌入式設備上的程序應該是一直運行的,即只要嵌入式設備開機就要一直運行,所以要將ad程序配置為開機自動運行。這就需要編輯romfs中的啟動腳本文件,該文件為:/home/cvtech/jx44b0/uClinux-dist/romfs/etc/rc使用vi編輯器編輯,在該文件最后添加如下腳本:/
34、bin/ad該腳本將啟動后運行ad,直到程序退出。或者/bin/ad &他將后臺運行ad,不影響其他程序的運行。本設計采用這種方法,可以不影響其他程序的運行。再次編譯ad,編譯ad并更新文件系統(tǒng),make clean可以清除過去編譯留下的二進制文件,.elf文件,.gdb文件,以免影響此次編譯。Make命令就尋找makefile文件并執(zhí)行。最后重新編譯uClinux。接著將生成的zImage映像下載到目標版,然后啟動uClinux,ad程序就會自動運行了。2應用程序設計由于嵌入式設備中的程序不能像pc上位機中的程序那樣方便修改,所以在設計時要充分考慮到靈活性,參數(shù)都要采用可以修改的方式
35、,而修改的方法是從pc機上的界面中設置專門的界面,然后將新信息發(fā)送給嵌入式系統(tǒng),將其寫到文件中,當嵌入式設備用到這些參數(shù)的時候可以從文件讀取。后面的冷庫配置參數(shù),服務器ip地址都是采用此方法。(1)總體設計。嵌入式應用程序要實現(xiàn)的主要功能就是對冷庫溫度數(shù)據(jù)的測量和控制以與傳輸。這個程序要在開機狀態(tài)下循環(huán)執(zhí)行,因此是一個循環(huán)調用的過程,三個模塊的程序將會互相調用。首先是數(shù)據(jù)采集模塊數(shù)據(jù),數(shù)據(jù)采集是用實驗箱上的ad轉換模塊模擬實現(xiàn),它按照固定的時間間隔采集了數(shù)據(jù)之后就調用數(shù)據(jù)控制模塊,數(shù)據(jù)控制模塊將會根據(jù)所采集的數(shù)據(jù)值采取相應的控制操作,然后調用傳輸模塊,將數(shù)據(jù)傳送給上位機。然后回到數(shù)據(jù)采集模塊,
36、如此循環(huán),直到關機或程序異常退出。本模塊應當盡量考慮到工業(yè)應用中的實際情況,各種參數(shù)應當設計為可以自由修改,這樣可以擴大本模塊的應用圍。(2)數(shù)據(jù)采集模塊。本模塊實現(xiàn)的主要功能是數(shù)據(jù)采集。實現(xiàn)中會遇到的主要問題有:第一,在現(xiàn)實應用中,數(shù)據(jù)采集應該是通過傳感器、變送器傳輸?shù)角度胧皆O備中,再進行a/d轉換,但由于實驗設備的限制,在本設計中直接采用實驗箱上的a/d轉換模塊模擬此過程。第二,采樣頻率的讀取。工業(yè)應用中的采樣頻率應該是隨著冷庫中的物品而有所差別,不能一概而論。因此需要從上位機的數(shù)據(jù)庫中讀出相應的冷庫中存放的物品,并按相應的采樣頻率采樣。上位機將相應的參數(shù)設置(包括采樣頻率,最大值最小值等
37、)發(fā)給嵌入式設備,嵌入式設備將其寫入文件config然后再從此文件中讀出,無論何時改變參數(shù)設置,都可以保持嵌入式設備按照最新的采樣頻率進行采樣。第三,采樣時間間隔的具體實現(xiàn)過程。a/d轉換模塊中采樣的最大時間間隔也只有0.124ms左右,所以用a/d轉換模塊要實現(xiàn)長時間的采集就要采用一直采集,但是知道要求時間才將數(shù)據(jù)傳輸給下一個模塊。讀出文件中要求的采樣間隔時間,例如:間隔時間為300s,則300/0.000124=2419354則循環(huán)采樣2419354次之后才可以將數(shù)據(jù)發(fā)送給數(shù)據(jù)控制模塊。void Test_Adc(void)int loop_delay,fd,spaceflag=0,dis
38、play_flag1=100,display_flag2;int data = 0;int get_index;char c;char sendbufferMAXDATASIZE;char flagbuf100; rCLKCON=0x7ff8;if(fd=open("config",O_RDONLY)=-1)fprintf(stderr,"open failedn");read(fd,&c,1);while(c!=' '|spaceflag!=2)if(c=' ')spaceflag+;elseread(fd,&a
39、mp;c,1);read(fd,flagbuf,5);erase_spaces(flagbuf); display_flag2=atoi(flagbuf);while(1) int value;rADCPSR=0xff;data = 0;for(get_index = 0; get_index < 16; get_index+)rADCCON=0x1|(0x3<<2);/ AIN3while(!(rADCCON & 0x40);data+=rADCDAT;for(loop_delay=1000; loop_delay; loop_delay-);data /= 32;
40、value = trans_input(data);sprintf(sendbuffer,"%d",value);/display_buffer0 = value;if(display_flag2=0)printf("anti3 is %dn",value);datacontrol(value);communacate(sendbuffer);display_flag2=atoi(flagbuf);elsedisplay_flag2-;for(loop_delay=100000; loop_delay; loop_delay-); (3)數(shù)據(jù)控制模塊。數(shù)
41、據(jù)控制模塊主要是根據(jù)采集到的數(shù)據(jù)和最大值最小值的設置采用相應的措施。本模塊分為兩個部分,一個是最大值最小值的讀取,采用的方法和采樣頻率相似,都是由pc上位機發(fā)送給嵌入式設備,寫入config文件,然后即可從文件中讀取。程序如下if(fd=open("config",O_RDONLY)=-1)fprintf(stderr,"open failedn");lseek(fd,1,0);read(fd,&c,1);while(c!=' ')read(fd,&c,1);bitflag+;lseek(fd,1,0);read(fd,c
42、fbuffer,bitflag);erase_spaces(cfbuffer);max=atoi(cfbuffer);bzero(&cfbuffer,sizeof(cfbuffer);lseek(fd,1,1);read(fd,&c,1);while(c!=' ')read(fd,&c,1);minbitflag+;lseek(fd,bitflag+2,0);read(fd,cfbuffer,minbitflag);erase_spaces(cfbuffer);min=atoi(cfbuffer);bzero(&cfbuffer,sizeof(c
43、fbuffer);close(fd);另一部分是根據(jù)采集到的數(shù)據(jù)和最大值最小值來判斷應該采用的措施。在工業(yè)冷庫測控系統(tǒng)中,當溫度超高時應該采用開啟壓縮機,溫度過低時關閉壓縮機,由于實驗條件的限制,開關壓縮機的操作我們采用開關led燈來模擬。程序如下:void led(int flag)if(flag=1)*(char *)0x02000000=0xFF;else*(char *)0x02000000=0x00;這個部分還包括報警功能,當溫度一直保持較高或較低溫度沒有按照預定降溫或升溫時,即出現(xiàn)故障(故障原因可能是因為傳感器或者壓縮機造成,這個超出本課題所研究的疇),就應該出現(xiàn)故障報警。蜂鳴器開
44、啟,而且lcd顯示屏上將出現(xiàn)故障提示字樣(溫度過高或過低)。報警除了上述表現(xiàn)外,還將會把信息通過socket編程發(fā)送給pc上位機,在pc機上也可顯示有嵌入式設備報警??梢缘綑C房查看。當數(shù)據(jù)大于最大值時的流程圖如下:data>maxny清屏,開壓縮機maxflag=1minfalg=0Maxflag=1ny報警,告知pc機,在lcd上顯示結束程序如下:if(data>max)printf("enter data>maxn");if(maxflag=1)printf("enter temprature higher,display,alarmn&qu
45、ot;);display("溫度過高");communacate(sendbuffer1);myalarm();elseprintf("set maxflag,open ledn");lcd_clear_screen(WHITE);maxflag=1;led(0);minflag=0;小于的部分同理可知。(4)數(shù)據(jù)通訊模塊。這個模塊負責實現(xiàn)和pc上位機的通訊。嵌入式系統(tǒng)發(fā)給pc上位機的數(shù)據(jù)包有三種。第一種,警報(冷庫ip,溫度過高還是過低),這種消息以warn開頭。第二種,冷庫數(shù)據(jù)(冷庫ip,溫度),這種消息以data開頭。第三種,啟動時發(fā)送ip。這種消
46、息以ipad開頭。由于發(fā)送的必須為字符串,所以要將數(shù)值型數(shù)據(jù)轉化為字符串。同時由于linux下并不支持itoa或者ftoa函數(shù),由于linux不支持相應的庫,所以采用sprintf函數(shù)將數(shù)值轉化為字符串。Sprintf函數(shù)的用法如下:int sprintf(char *str, char *format, variable-list); 它與printf()函數(shù)不同之處是將按格式化規(guī)定的容寫入str 指向的字符串中, 返回值等于寫入的字符個數(shù)。由于數(shù)據(jù)通訊模塊的具體實現(xiàn)方法是采用socket編程,因此將此模塊具體實現(xiàn)放在后面介紹socket編程的部分講解。
47、數(shù)據(jù)通訊模塊還要涉與的一個操作就是暫時保存不能發(fā)送的數(shù)據(jù)。網絡如果暫時產生故障,那么在故障期嵌入式設備采集的數(shù)據(jù)必須暫時保存,待到網絡正常后在一起發(fā)送給pc上位機。在這里我們不采用嵌入式嵌數(shù)據(jù)庫,直接采用文件讀寫。因為數(shù)據(jù)量不大,而且我們信任網絡的可靠性,不會產生長時間癱瘓。三、嵌入式設備與pc上位機的通信(一)、Socket編程簡介1網絡基礎知識。(1)計算機網絡的概念。我們現(xiàn)在已經進入了一個以網絡為核心的信息時代。計算機網絡已經滲透到社會生活的各個方面?,F(xiàn)在計算機網絡普遍遵守的是tcp/ip協(xié)議集的協(xié)議,將網絡分為四層結構,即數(shù)據(jù)鏈路層,網絡層,運輸層和應用層。如圖所示 用戶進程用戶進程用
48、戶進程用戶進程應用層TCPUDP運輸層ICMPIPIGMP網絡層ARP硬件接口RARP鏈路層傳輸介質本設計采用的是tcp協(xié)議傳輸數(shù)據(jù),因此在此簡要介紹一下tcp建立連接的過程。Tcp建立連接是一個三路握手的過程。如圖所示客戶端服務器端Socketsocket,bind,listenConnect(阻塞SYN Jaccept(阻塞)SYN K,ack J+1Connect返回ack K+1Accept返回(2)網絡通訊與傳統(tǒng)通信方式的區(qū)別傳統(tǒng)的串口通訊方式主要有RS232和RS485兩種,他們的直連距離和傳送速率都不高。RS232接口標準的直連距離僅為15米,傳送速率小于20Kb/s。RS485
49、的直連距離和傳送速率雖然有所提高,但是相對于百兆以太網來說還是相距甚遠。傳統(tǒng)的串口通訊方式的劣勢不只在傳送距離和速率上,在其方便性上也遠遠不如以太網通訊。由于我們的嵌入式設備采用了uClinux操作系統(tǒng),它本身支持網絡通訊,提供的是10M網卡,我們只需要遵循TCP/IP協(xié)議接收和發(fā)送容即可,不需了解其他容。2Socket編程的概念。(1)套接口Socket概念簡介。Socket是一種雙向的通訊端口,一對互聯(lián)的套接口提供通訊接口,使兩端都可以傳輸數(shù)據(jù),具體地說,Socket類似于UNIX下的管道,使用方法與雙工管道很類似。Socket 套接口增加了網絡通信操作的抽象定義,與文件操作一樣,每個打開
50、的socket都對應一個整數(shù),我們稱它為socket描述符,該整數(shù)也是socket描述符在文件描述符表中的索引值。只不過socket描述符在描述符表中的表項并不指向文件表,而是指向一個與該socket有關的數(shù)據(jù)結構。使用系統(tǒng)調用socket,我們可以得到socket描述符,然后可以使用send和recv調用而與其它的程序通信。我們也可以使用一般的文件操作來調用read和write對socket描述符進行讀寫,從而與其它的程序進行通訊。(2)套接口Socket使用簡介。網絡編程中最常見的是客戶/服務器模式。以該模式編程時,服務器有一個進程或多個進程(本設計采用的是多個線程,這在下面將給予介紹)在
51、指定的端口等待客戶來連接,服務器程序等待客戶的連接信息,一旦連接上之后,就可以按約定的數(shù)據(jù)交換方法和格式進行數(shù)據(jù)流傳輸??蛻舳嗽谛枰臅r刻發(fā)出向服務端的連接請求。使用tcp/ip協(xié)議通信時,最常見的應用模式流程如下圖所示:SocketBindSocketListenAcceptConnect建立連接ReadWrite數(shù)據(jù)流WriteRead數(shù)據(jù)流CloseClose為了和多個客戶通信,服務器端一般在accept返回后創(chuàng)建一個新的進程進行與客戶端的通信,父進程則回到accpet調用處等待另一個連接。客戶端進程一般先使用socket調用得到一個socket描述符,然后使用connect向指定的服務
52、器上的指定端口發(fā)起連接,一旦連接成功返回,就說明已經建立了與服務器的連接,這時客戶段就可以通過socket描述符進行讀寫操作了。(3)套接口地址結構。首先介紹的是通用套接口地址結構,在<sys/socket.h>中定義,其結構如下:struct sockaddrussigned short sa_family;/*address family,AF_xxx*/char sa_data14;/*14 bytes of protocol address*/;其中,字段sa_family是協(xié)議族,指出通信協(xié)議類型,對于internet域的地址族為AF_INET。字段sa_da存儲實際地址
53、(不同的協(xié)議族地址格式不一樣)。(4)套接口編程的基本系統(tǒng)調用。Socket函數(shù):功能:系統(tǒng)調用socket來獲得一個socket描述符,調用格式如下:socket(int domain,int type,int protocol);socket 函數(shù)指定了協(xié)議族(IPv4、IPv6或unix)和套接口類型(字節(jié)流、數(shù)據(jù)報或原始套接口)。但并沒有指定本地協(xié)議地址或遠程協(xié)議地址。bind 函數(shù):功能:給套接口分配一個本地協(xié)議地址int bind(int sockfd, const struct sockaddr *my_addr, int addrlen);sockfd 是調用 socket 返
54、回的文件描述符。my_addr 是指向數(shù)據(jù)結構 struct sockaddr 的指針,保存地址(即端口和 IP 地址) 信息。addrlen 設置為 sizeof(struct sockaddr)。讓核自動處理地址ip和端口portmy_addr.sin_port = 0; /* choose an unused port at random */my_addr.sin_addr.s_addr = INADDR_ANY; /* use my IP address */bind( ) 自己選擇合適的端口:將0賦給 my_addr.sin_port。自動填上他所運行的機器的 IP 地址:my_a
55、ddr.sin_addr.s_addr 設置為INADDR_ANY。connect 函數(shù):功能:建立與TCP服務器的連接int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);serv_addr 是保存著目的地端口和 IP 地址的數(shù)據(jù)結構 struct sockaddrconnect 激發(fā) TCP的三路握手過程listen 函數(shù)功能:將未連接主動套接口的轉換為被動套接口,指示核接受對該套接口的連接請求。int listen(int sockfd, int backlog);sockfd 是調用 socket() 返回的套接口文件描述符。backlog 是在進入隊列中允許的連接數(shù)目。如果當客戶的連接請求到來時,服務端的隊列已滿,則客戶請求被忽略,客戶tcp將重發(fā)連接請求。accept 函數(shù)功能:在已完成隊列頭返回下一個已完成的連接int accept(int sockfd, struct sockaddr *cliaddr, int*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無人機操控與航拍技術考核試卷
- 圖書館數(shù)字資源長期保存策略考核試卷
- 家電產品品質監(jiān)控與質量改進考核試卷
- 整年運輸合同范本
- 大板委托加工合同范本
- 修剪綠化直營合同范本
- 工地個人水電合同范本
- 小學生美術課件制作教學
- 名片合同范本
- 財務支出季度計劃工作的分解與執(zhí)行要點
- GB/T 18601-2009天然花崗石建筑板材
- 畢業(yè)設計論文-貝類脫殼機設計
- 八項規(guī)定學習課件
- 《工程電磁場》配套教學課件
- 《過零丁洋》公開課件
- 從生產工藝角度詳解磷酸鐵鋰
- 全套橋梁施工技術交底記錄
- 《教師職業(yè)道德》全書word版
- 城市定制型商業(yè)醫(yī)療保險(惠民保)知識圖譜
- GB∕T 3836.31-2021 爆炸性環(huán)境 第31部分:由防粉塵點燃外殼“t”保護的設備
- AMDAR資料的分析和應用
評論
0/150
提交評論