基于PLC的交通燈控制系統(tǒng)論文_第1頁
基于PLC的交通燈控制系統(tǒng)論文_第2頁
基于PLC的交通燈控制系統(tǒng)論文_第3頁
基于PLC的交通燈控制系統(tǒng)論文_第4頁
基于PLC的交通燈控制系統(tǒng)論文_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 PAGE 1第 PAGE 30頁 共19頁第 PAGE 0頁 共19頁畢 業(yè) 設 計(論 文) 基于PLC的交通燈控制系統(tǒng) 姓 名 系 部 專 業(yè) 班 級班 學 號 23 指導老師 20 12 年 4 月摘要 PLC可編程序控制器是以微處理器為基礎,綜合了計算機技術、自動控制技術和通訊技術發(fā)展而來的一種新型工業(yè)控制裝置。它具有結構簡單、編程方便、可靠性高等優(yōu)點,已廣泛用于工業(yè)過程和位置的自動控制中。關鍵詞 交通燈 PLC 程序設計 目錄PLC的特點及應用1.1概述41.2plc的特點41.3plc的應用4第二章plc的結構及原理2.1plc的分類62.2plc的結構62.3plc的工作原理7

2、2.4plc的匯編語言72.5plc的基本指令92.6plc交通等畢業(yè)論文編程器件12第三章交通信號燈控制的實現(xiàn)3.1控制要求123.2工作時序圖133.3 I/O分配表133.4梯形圖153.5指令表173.6plc控制交通等的運行18致謝18參考文獻18第一章 PLC的特點及應用1.1 概述 可編程控制器(Programmable Controller)是計算機家族中的一員,是為工業(yè)控制應用而設計制造的。早期的可編程控制器稱作可編程邏輯控制器(Programmable Logic Controller),簡稱PLC,它主要用來代替繼電器實現(xiàn)邏輯控制。隨著技術的發(fā)展,這種裝置的功能已經大大超

3、過了邏輯控制的范圍,因此,今天這種裝置稱作可編程控制器,簡稱PC。但是為了避免與個人計算機(Personal Computer)的簡稱混淆,所以將可編程控制器簡稱PLC。1.2 PLC的特點1 可靠性高,抗干擾能力強;2 通用性高,使用方便;3程序設計簡單,易學,易懂;4采用先進的模塊化結構,系統(tǒng)組合靈活方便;5系統(tǒng)設計周期短;6安裝簡便,調試方便,維護工作量小;7對生產工藝改變適應性強,可進行柔性生產;1.3 PLC的應用目前,PLC在國內外已廣泛應用于鋼鐵、石油、化工、電力、建材、機械制造、汽車、輕紡、交通運輸、環(huán)保及文化娛樂等各個行業(yè),使用情況大致可歸納為如下幾類。 1開關量的邏輯控制

4、這是PLC最基本、最廣泛的應用領域,它取代傳統(tǒng)的繼電器電路,實現(xiàn)邏輯控制、順序控制,既可用于單臺設備的控制,也可用于多機群控及自動化流水線。如注塑機、印刷機、訂書機械、組合機床、磨床、包裝生產線、電鍍流水線等。2 模擬量控制 在工業(yè)生產過程當中,有許多連續(xù)變化的量,如溫度、壓力、流量、液位和速度等都是模擬量。為了使可編程控制器處理模擬量,必須實現(xiàn)模擬量(Analog)和數字量(Digital)之間的A/D轉換及D/A轉換。PLC廠家都生產配套的A/D和D/A轉換模塊,使可編程控制器用于模擬量控制。 3 運動控制 PLC可以用于圓周運動或直線運動的控制。從控制機構配置來說,早期直接用于開關量I/

5、O模塊連接位置傳感器和執(zhí)行機構,現(xiàn)在一般使用專用的運動控制模塊。如可驅動步進電機或伺服電機的單軸或多軸位置控制模塊。世界上各主要PLC廠家的產品幾乎都有運動控制功能,廣泛用于各種機械、機床、機器人、電梯等場合。 4 過程控制 過程控制是指對溫度、壓力、流量等模擬量的閉環(huán)控制。作為工業(yè)控制計算機,PLC能編制各種各樣的控制算法程序,完成閉環(huán)控制。PID調節(jié)是一般閉環(huán)控制系統(tǒng)中用得較多的調節(jié)方法。大中型PLC都有PID模塊,目前許多小型PLC也具有此功能模塊。PID處理一般是運行專用的PID子程序。過程控制在冶金、化工、熱處理、鍋爐控制等場合有非常廣泛的應用。 5 數據處理 現(xiàn)代PLC具有數學運算

6、(含矩陣運算、函數運算、邏輯運算)、數據傳送、數據轉換、排序、查表、位操作等功能,可以完成數據的采集、分析及處理。這些數據可以與存儲在存儲器中的參考值比較,完成一定的控制操作,也可以利用通信功能傳送到別的智能裝置,或將它們打印制表。數據處理一般用于大型控制系統(tǒng),如無人控制的柔性制造系統(tǒng);也可用于過程控制系統(tǒng),如造紙、冶金、食品工業(yè)中的一些大型控制系統(tǒng)。 6 通信及聯(lián)網 PLC通信含PLC間的通信及PLC與其它智能設備間的通信。隨著計算機控制的發(fā)展,工廠自動化網絡發(fā)展得很快,各PLC廠商都十分重視PLC的通信功能,紛紛推出各自的網絡系統(tǒng)。新近生產的PLC都具有通信接口,通信非常方便。第二章 PL

7、C的結構及原理2.1 PLC的分類1 按plc的結構形式分類:1)整體式;2)模塊式。2 按plc的I/O點數分類:1)小型256點以下;2)中型256點以上,2048點以下;3)大型2048點以上。3按plc功能分類:抵擋型,中擋型,高檔型。2.2 PLC的結構PLC 實質是一種專用于工業(yè)控制的計算機其硬件結構基本上與微型計算機從結構上分,PLC分為固定式和組合式(模塊式)兩種。固定式PLC包括CPU板、I/O板、顯示面板、內存塊、電源等,這些元素組合成一個不可拆卸的整體。模塊式PLC包括CPU模塊、I/O模塊、內存、電源模塊、底板或機架,這些模塊可以按照一定規(guī)則組合配置。PLC的基本結構框

8、圖如下:接口部件輸出輸入接口部件 中央處理單元 CPU板 接受 驅動 現(xiàn)場信號 受控元件 電 源 部 件2.3 PLC的工作原理 1.plc的工作方式 1)輸入采樣階段,在此階段,順序讀入所有輸入緞子通斷狀態(tài),并將讀入的信息存入內存,接著進入程序執(zhí)行階段,在程序執(zhí)行時,即使輸入信號發(fā)生變化,內存中輸入信息也不變化,只有在下一個掃描周期的輸入采樣階段才能讀入信息。 2) 程序執(zhí)行階段:plc對用戶程序掃描。 3)輸出刷新階段:當所有指令執(zhí)行完畢通過隔離電路,驅動功率放大器,電路是輸出端子向外界輸出控制信號驅動外部負載。2.4 PLC匯編語言采用面向控制過程,面向問題,簡單直觀的plc編寫橫語言,

9、常用的有:梯形圖,語句表,功能圖等。梯形圖:由繼電器控制邏輯演變而來,兩者具有一定程度的相似性,但梯形圖編程語言功能更強更方便。主要特點:1)自上而下,從左到右的順序排列,兩列垂直線為母線。每一邏輯行,起使左母線。 2)梯形圖中采用繼電器名稱,但不是真實物理繼電器稱為“軟繼電器” 3)每個梯級流過的是概念電流,從左向右,其兩端母線設有電源。 4)輸入繼電器,用于接入信號,而無線圈,輸入繼電器,通過輸入接入的繼電器,晶體及晶閘管才能實現(xiàn)。 2.語句表:又叫指令表,類似計算機匯編語言形式,用指令的記助符編程。例:下圖是三菱公司的FX2N系列產品的最簡單的梯形圖例: X000 X001 Y000 X

10、010 END它有兩組,第一組用以實現(xiàn)啟動、停止控制。第二組僅一個END指令,用以 結束程序。梯形圖與助記符的對應關系: 助記符指令與梯形圖指令有嚴格的對應關系,而梯形圖的連線又可把指令的順序予以體現(xiàn)。一般講,其順序為:先輸入,后輸出(含其他處理);先上,后下;先左,后右。有了梯形圖就可將其翻譯成助記符程序。上圖的助記符程序為: 地址指令變量0000LDX0000001ORX0100002ANDX0010003OUTY0000004END 反之根據助記符,也可畫出與其對應的梯形圖2.5 PLC的基本指令1 輸入輸出指令(LD/LDI/OUT)下面把LD/LDI/OUT三條指令的功能、梯形圖表示

11、形式、操作元件以列表的形式加以說明: 符號 功 能 梯形圖表示 操作元件 LD(?。?常開觸點與母線相連 X,Y,M,T,C,S LDI(取反)常閉觸點與母線相連 X,Y,M,T,C,SOUT(輸出) 線圈驅動 Y,M,T,C,S,F LD與LDI指令用于與母線相連的接點,此外還可用于分支電路的起點。OUT 指令是線圈的驅動指令,可用于輸出繼電器、輔助繼電器、定時器、計數器、狀態(tài)寄存器等,但不能用于輸入繼電器。輸出指令用于并行輸出,能連續(xù)使用多次。 X000 Y000 地址 指令 數據 0000 LD X000 0001 OUT Y0002 觸點串連指令(AND/ANDI)、并聯(lián)指令(OR/O

12、RI) 符號(名稱) 功 能 梯形圖表示 操作元件 AND(與) 常開觸點串聯(lián)連接 X,Y,M,T,C,S ANDI(與非) 常閉觸點串聯(lián)連接 X,Y,M,T,C,S OR(或) 常開觸點并聯(lián)連接 X,Y,M,T,C,S ORI( 或非) 常閉觸點并聯(lián)連接 X,Y,M,T,C,S AND、ANDI指令用于一個觸點的串聯(lián),但串聯(lián)觸點的數量不限,這兩個指令可連續(xù)使用。 OR、ORI是用于一個觸點的并聯(lián)連接指令。 X001 X002 Y001 地址 指令 數據 0002 LD X001 X003 0003 ANDI X002 0004 OR X003 0005 OUT Y001 3 電路塊的并聯(lián)和串

13、聯(lián)指令(ORB、ANB) 符號(名稱) 功 能 梯形圖表示 操作元件 ORB(塊或) 電路塊并聯(lián)連接 無 ANB(塊與) 電路塊串聯(lián)連接 無 含有兩個以上觸點串聯(lián)連接的電路稱為“串聯(lián)連接塊”,串聯(lián)電路塊并聯(lián)連接時,支路的起點以LD或LDNOT指令開始,而支路的終點要用ORB指令。ORB指令是一種獨立指令,其后不帶操作元件號,因此,ORB指令不表示觸點,可以看成電路塊之間的一段連接線。如需要將多個電路塊并聯(lián)連接,應在每個并聯(lián)電路塊之后使用一個ORB指令,用這種方法編程時并聯(lián)電路塊的個數沒有限制;也可將所有要并聯(lián)的電路塊依次寫出,然后在這些電路塊的末尾集中寫出ORB的指令,但這時ORB指令最多使用

14、7次。將分支電路(并聯(lián)電路塊)與前面的電路串聯(lián)連接時使用ANB指令,各并聯(lián)電路塊的起點,使用LD或LDNOT指令;與ORB指令一樣,ANB指令也不帶操作元件,如需要將多個電路塊串聯(lián)連接,應在每個串聯(lián)電路塊之后使用一個ANB指令,用這種方法編程時串聯(lián)電路塊的個數沒有限制,若集中使用ANB指令,最多使用7次。 ANB X000 X002 X003 Y006 X001 X004 X005 ORB X006 X003 地 址 指 令 數 據 0000 LD X000 0001 OR X001 0002 LD X002 0003 AND X003 0004 LDI X004 0005 AND X005

15、0006 OR X006 0007 ORB 0008 ANB 0009 OR X003 0010 OUT Y006 4 程序結束指令(END)符號(名稱) 功 能 梯形圖表示 操作元件結束 END(結束) 程序結束 無 在程序結束處寫上END指令,PLC只執(zhí)行第一步至END之間的程序,并立即輸出處理。若不寫END指令,PLC將以用戶存貯器的第一步執(zhí)行到最后一步,因此,使用END指令可縮短掃描周期。另外。在調試程序時,可以將END指令插在各程序段之后,分段檢查各程序段的動作,確認無誤后,再依次刪去插入的END指令。 其他的一些指令,如置位復位、脈沖輸出、清除、移位、主控觸點、空操作、跳轉指令等,

16、同學們可以參考一些課外書,在這里我們不詳細介紹了。下面同學們可練習由梯形圖寫出與之對應的助記符形式的指令。并由后面的GPP軟件傳輸到PLC中,實時運行。2.6 PLC交通燈畢業(yè)論文編程器件一般情況下,X代表輸入繼電器,Y代表輸出繼電器,M代表輔助繼電器,SPM代表專用輔助繼電器,T代表定時器,C代表計數器,S代表狀態(tài)繼電器,D代表數據寄存器,MOV代表傳輸等。3 交通信號燈控制的實現(xiàn)3.1控制要求信號燈受啟動開關控制。當啟動開關接同時,信號燈系統(tǒng)開始工作,先南.北紅燈亮,在東.西綠燈亮。當啟動開關斷開時,所有信號燈都熄滅。(1)南.北綠燈和東.西綠燈不能同時亮,如果同時亮則應關閉信號燈系統(tǒng),并

17、立刻報警。(2)南.北紅燈亮維持25s,在南.北紅燈亮的同時東.西燈也亮,并維持20s,到20s時,東.西綠燈閃亮,閃亮3s 后熄滅。在動系綠燈熄滅時,東.西黃燈亮,并維持2s。到2s時,東.西黃燈熄滅 ,東.西紅燈亮。同時,南.北紅燈熄滅,綠燈亮。(3)東.西紅燈亮維持30s,南北綠燈亮維持25s,然后閃亮3s后熄滅,同時南.北黃燈亮,維持2s后熄滅,這時南.北紅燈亮,東.西綠燈亮。(4)上述動作循環(huán)進行。3.2交通燈工作時序圖圖2 交通燈時序圖3.3.3I/O分配表圖3 I/O分配表序號輸入設備端號輸出設備端號1啟動按鈕SB1X0南北綠燈Y0002南北黃燈Y0013南紅紅燈Y0024報警燈

18、Y0035東西綠燈Y0046東西黃燈Y0057東西紅燈Y006通過上述的分析,可以看到,系統(tǒng)需要1個輸入和7個輸出,對于這樣一個小型的系統(tǒng)可以選擇一些小型PLC就可以滿足需求,可以選擇FX2-48MR型PC機。 MG MY SR SY SG MR 北 西 東 SG SY SR 南 MG MY MR 圖4 交通燈的面板示意圖 該模擬交通信號燈分為南北和東西兩個方向,分別由綠、黃、紅三種顏色,其標號分別為MG、MY、MR和SG 、SY、SR。其中,其中,交通燈選用5V直流電,COM端為交通燈的公共端。而燈與程控器之間的接線圖如下 程 Y000 控 Y001 器 Y002 的 : 輸 : 出 : 5

19、V 端 COM 圖 5 從上圖可看出,控制器的公共端接5V電源的負極,而燈的公共端接電源的正端,燈的另一端接到程控器的輸出端,如Y000,Y001 等。3.4 梯形圖 3.指令表 地址指令變量0000LDT00001ANDX00002ANIT40003OUTT00004K2500005LDT00006OUTT40007K3000008LDIY30009ANDX00010ANIT00011OUTT60012K2000013LDT60014OUTT70015K300016LDT70017OUTT50018K200019LDT00020OUTT10021K2500022LDT10023OUTT200

20、24K300025LDT20026OUTT30027K200028LDIT00029ANIY30030ANDX00031OUTY20032LDT00033OUTY60034LDY20035ANIT60036LDT60037ANIT70038ANDT100039ORB0040OUTY40041LDT70042ANIT50043OUTY50044LDY60045ANIT10046LDT10047ANIT20048ANDT100049ORB0050OUTY00051LDT20052ANIT30053OUTY10054LDY00055ANDY40056OUTY30057LDX00058ANIT1100

21、59OUTT100060KT50061LDT100062OUTT110063K50064END3.6.PLC控制交通燈的運行十字路口的交通控制燈,應在事先經過交通流量的調查,運用統(tǒng)計的方法將兩個方向紅綠 燈的延時預先設置好,按照設計的程序運行。在正式運行之前,應進行模擬測試,避免不必要的損失!致謝 在設計過程中,我通過查閱相關資料,經過一個多月的努力,終于完成了這篇論文。寫論文的過程中我發(fā)現(xiàn)自己有很多不足,在很多地方還需要老師、同學的指導。在設計的過程中,我懂得了許多,也培養(yǎng)了我的工作能力。相信在以后的工作中,我也能更加積極的投入到工作中去!在這里我要感謝我的老師們,感謝你們的照顧,不論是在學

22、習上亦或者是生活上,謝謝!最后再次衷心的感謝各位指導老師!參考文獻1 原理及應用俞國亮主編,清華大學出版社,20052.廖常初.PLC梯形圖的順序控制設計法.電工技術雜志,20013.張萬忠可編程控制器入門與應用實例北京:中國電力出版社20044.臺方可編程序控制器應用教程北京:中國水利水電出版社20015.常斗南可編程序控制器原理應用實驗 北京:機械工業(yè)出版社1998 附錄資料:不需要的可以自行刪除測量平差程序設計角度(度分秒)到弧度AngleToRadian#define PI 3.14159265double AngleToRadian(double angle)int D,M;doub

23、le S,radian,degree, angle,MS;D=int(angle+0.3);MS=angle-D;M=int(MS)*100+0.3);S=(MS*100-M)*100;degree=D+M/60.0+S/3600.0;radian=degree*PI/180.0;return radian;注意:防止數據溢出,要加個微小量,例如0.3.弧度換角度(度分秒) RadianToAngle#define PI 3.14159265double RadianToAngle(double radian)int D,M;double S,radian,degree,MS,angle;de

24、gree=radian*180/PI;D=int(degree);MS=degree-D;M=int(MS*60);S=(MS*60-M)*60;angle=D+M/100.0+S/10000.0;return angle;已知兩點求坐標方位角Azimuth#include double Azimuth(double xi,double yi,double xj,double yj)double Dx,Dy,S,T;Dx=xj-xi;Dy=yj-yi;S=sqrt(Dx*Dx+Dy*Dy);if(S1e-10) return 0;T=asin(Dy/S);if(Dx0&(Dy0)|T0) T=

25、2*PI+T;return T;4.開辟二維數組的動態(tài)空間的宏#include #define NewArray2D(type,A,i,n,m)A=(type*)malloc(n*sizeof(type*); for(i=0;im;i+) Ai=(type*)malloc(m*sizeof(type); 5.釋放開辟的二維數組的空間#define FreeSpace(A,i,m)for(i=0;im;i+) free(Ai); free(A); 注意:釋放空間與開辟空間相反,釋放空間是先釋放列,后釋放行.6.矩陣求轉置transformmatrixvoid transformmatrix(do

26、uble *A,double *B,int i,int j)int m,n;for(m=0;m=i;m+)for(n=0;n=j;n+)Bnm=Amn:7.矩陣相乘(mulmatrix)void mulmatrix(double *A,double *B,double *C,int i,int j,int k)int m,n,p;for(m=0;mi;m+)for(n=0;nj;n+)Cmn=0;for(p=0;pk;p+)Cmn+=Amp*Bpn:8.矩陣求逆(countermatrix)#include void countermatrix(double *T, double *s, do

27、uble *r, double *Q,double *N, double *rt,int n)for(i=0;in;i+)s=Nii;for(k=0;ki;k+)s-=Tki*Tki;Tii=sqrt(s)for(j=i+1;jn;j+)s=Nij;for(k=0;ki;k+)s-=Tki*Tkj;Tij=s/Tii;for(i=0;in;i+)for(j=0;j=0;i+)rii=1/Tii;for(j=i+1;jn;j+)s=0;for(k=i;kj-1;k+)s-=rik*Tkj;rij=s/Tii;for(i=0;in;i+)for(j=0;jn;j+)rij=0;transformm

28、atrix(r,rt,n,n)mulmatrix(r,rt,Q,n,n)9.平差主程序之讀入數據typedef struct POINTchar name8;double x,y;int type;POINT;typedef struct READVALUEPOINT *begin;POINT *end;double value;READVALUE;POINT *GETPOINT(char *name,POINT *pPoint,int nPoint)int i;for(i=0;inPoint;i+)if (strcmp(pP,name)=0)return (pPoint+

29、i) for(i=0;i0)pPoint=(POINT*)malloc(nDirect*sizeof(POINT);if(nDirect0)pDirect=(READVALUE*)malloc(nDirect*sizeof(READVALUE);if(nDistance0)pDistance=(READVALUE*)malloc(nDistance*sizeof(RAADVALUE);fscanf(fp,”%lf,%lf,%lfn”,&mo,&mf,&ms);for(i=0;inKnownPoint;i+)fscanf(fp,”%s,%lf,%lfn”,pP,&pPoint

30、i.x,&pPointi.y);type=1;for( ;inPoint;i+)pP=NULL; pPointi.x=0;pPointi.y=0;pPointi.type=0; for(i=0;inDirect;i+)fscanf(fp,”%s,%s,%lfn”,begin,end,&pDirecti.value);pDirecti.begin=GetPoint(begin,pPoint,nPoint);pDirecti.end=GetPoint(end,pPoint,nPoint);for(i=0;inDistance;i+)fscanf(fp,”%s,%s,%lfn”,

31、begin,end,&pDistancei.value);pDistancei.begin=GetPoint(begin,pPoint,nPoint);pDistancei.end=GetPoint(end,pPoint,nPoint);fclose(fp);10.角度檢驗(checkangle)#include int checkangle(double angle)int M,S;double MS;if(angle=0&angle360)MS=angle-(int)(angle);if(M6)S=(int)(MS*1000);if(S%106)return 1;return 0;11.前

32、方交會#define PI=3014159265/*此處調用程序角度換弧度AngleToRadian*/Qianfang(double XE, double YE, double XF, double YF, doubleDEG, double DEF, double DFG, double DFE, double *DFE, double *DFG)double C,A,B;C=DGE-DGF;A=DEF-DEG;B=DFG-DFE;if(C-2*PI)|(C0&C-PI&CPI&C2*PI)XG=(XE/tan(B)+XF/tan(A)+YE-YF)/(1/tan(A)+ 1/tan(B)

33、;YG=(YE/tan(B)+YF/tan(A)-XE+XF)/ (1/tan(A)+ 1/tan(B);12.坐標概算全方向法子函數取出觀測方向GetAllDirectint GetAllDirect(char *name,int nDirect,READVALUE *pDirect, READVALUE *pStation)int i,nCount=0;for(i=0;iname,name)=0)pStationnCount.begin=p(pDirectnCount.begin;pStationnCount.end=p(pDirectnCount.end;pStationnCount.v

34、alue=p(pDirectnCount.value; nCount+;return nCount;坐標概算全方向法子程序實現(xiàn)流程(coordinate)coordinate (入口參數設置)READVALUE pStation50,pObject50;int nCount,i,j,k,m,n,p,nobject;for(i=0;i1)|( nCount=1)for(j=0;jtype=1)for(k=0;ktype=0) nobject=GetAllDirect(pStationj.end-name,nDirect,pDirect,pobject)m=-1;n=-1;for(p=0;pnam

35、e,pP)=0)m=p; if(strcmp(pobjectp.end-name,pStationk.end-name)=0)n=p;if(m=0&n=0)pPointi=pStationk.end-pStationj.end;pStationj.end=pObjectm.value-pObjectn.value; Xe=pPointi.x; Ye=pPointi.y; Xf=pStationj.end-x; Yf=pStationj.end-y; Lef=pStationj.value; Leg=pStationk.value; Lfe=pObjectm.value; L

36、fg=pObjectn.value; Qianfang(Xe,Xf,Ye,Yf,Lef,Leg,Lfe,Lfg,*Xg,*Yg;) pStationk.end-x=*xg; pStationk.end-y=*yg; pStationk.end.type=2; 13.坐標增量法(calcoordinate)子函數由端點名稱得邊長值的函數GetDistancedouble GetDistance(char *begin,char *end,int nDistance,READVALUE *pDistance)int i;for(i=0;iname,begin)=0&strcmp(pDistance

37、i.end-name,end=0)|(strcmp(pDistancei.begin-name,end)=0&strcmp(pDistancei.end,begin)=0)return pDistancei.value;return -1;/*函數取出觀測方向GetAllDirect*/void calcoordinate(int nDirect,READVALUE *pDirect,int nDistace,READVALUE *pDistance,int nPoint,POINT *pPoint) int nPoint,nCount,nDirect,nDistance; int m=-1,

38、i,j,k; double x1,y1,x2,y2,A0,A,S,dx,dy; READVALUE*pDirect=NULL; READVALUE pStation50; for(i=0;i0) nCount=GetAllDirect(pP,nDirect,pDirect,pStation50); for(j=0;jtype0)m=j; if(m!=-1) for(k=0;ktype=0) x1=pPointi.x; y1=pPointi.y; x2=pStationj.end-x; y2=pStationj.end-y; A0=Bearing(x1,y1,x2,y2);

39、A=A0-(DMSToRAD(pStationm.value)-DMSToRAD(pStationk.value); if(A2*PI)A=A-2*PI; S=GetDistance(pPointi,pStationk.end,nDistance,pDistance); if(Sx=pPointi.x+dx; pStationk.end-y=pPointi.y+dy; pStationk.end-type=2; 14.高斯正反算高斯正算:#include #include #define PI 3.14159265double DMSToRAD(double dDMS)int L1,L2;double T,L3;L1=(int)(dDMS+0.3);L2=(int)(dDMS-L1)*100+0.3);L3=(dDMS-L1)*100-L2)*100;T=(L1+L2/60.0+L3/3600.0)*PI/180.0;return T;void PreGausePositive(double B,double L,double L0, double a, double b, double *N, double *l, do

溫馨提示

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

評論

0/150

提交評論