1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Phân tích mạch điện (Tập 1): Phần 2

150 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Nối tiếp phần 1, phần 2 của tài liệu Phân tích mạch điện (Tập 1) tiếp tục trình bày các nội dung chính sau: Phân tích mạch tuyến tính, có thông số tập trung, bất biến, tích cục bằng máy tính; Phân tích mạch điện không tuyến tính theo phương pháp điện áp nút bằng máy tính; Thuật toán thành lập hệ phương trình hỗn hợp cho mạch n của tuyến tính thuần trở;... Mời các bạn cùng tham khảo.

Chương PHÂN TÍCH MẠCH TUYẾN tính, có thơng số TẬP TRUNG, BẤT BIẾN TÍCH cực BANG MÁY TÍNH Trong chương trình bày định luật phương pháp phân tích mạch điện Với mạch điện đơn giản với vài nút vài nhánh, việc giải hệ phương tình theo định luật Kirchhoff, theo phương pháp điện áp nút, dòng điện vịng khơng gặp nhiều khó khăn Nhưng phải giải hệ phương trình đo' với mạch điện phức tạp hơn, với số nút lớn (hàng chục nút) vối số phần tử nhiều hơn, chắn gặp nhiều khó khăn khơng tìm phương pháp giải có giúp đỡ cùa máy tính Vì chương giới thiệu định luật Kirochhoff viết dạng ma trận, phương pháp điện áp nút, dòng điện vòng viết ma trận Dó phương pháp cho phép với giúp đỡ ma trận tôpô mạch, co' thể xây dựng ma trận dẫn nạp nút, trở kháng vịng cách hồn tồn tự động Vỉ no' phương pháp cho phép thực phân tích mạch điện máy tính, ỏ tóm tát lại khái niệm tôpô quan hệ ma trận tô pô: ma trận nút, ma trận vết cắt, ma trận mạch Sau đo' nêu phương pháp xây dựng mặt trận dẫn nạp nút mạch điện tích cực 5-1 Các khái niệm định lý tôpô bân Mạch điện - xét mặt cấu trúc - graph gồm có nút nhánh Để xử lý yếu tố hình học mặt tốn, người ta phải đưa ma trận tơpơ Vối ma trận tơpơ biểu diễn tốn qui luật hình học cấu trúc Với quan điểm phân tích tự động máy tính chúng tơi nêu định nghía số yếu tố bản(*) Nút điểm nối phần tử với phần tử Nhánh phần mạch chứa thông số nối hai nút Cây phần mạch chứa tất nút, số nhánh thuộc nút đo' không tạo thành vịng kín Các nhánh thuộc xét gọi nhánh đo' Các nhánh không thuộc xét gọi bù Từ cấu trúc mạch điện chọn nhiều khác Vịng phần mạch bao gồm số nhánh nút hợp thành đường kín, qua đo' nhánh nút gặp lần Vòng (ứng với cây) vịng kín hợp thành nhánh bù Vậy số vòng mạch điện bàng số bù mạch Định lý Trong mạch điện co' Nn nút, Nnh nhánh, co' số vòng Nv chúng co' quan hệ *nh=*v+^n-l(5-1) (*) Các định nghĩa khác chút so với định nghĩa yốu tố hình học cùa mạch chương cần định nghĩa trỡn quan điềm phân tích máy tính 134 Có thể giải thích định lý sau: (Nn - 1) số nhánh ứng với 2Vnn út, Nv số bù Tổng số bù nhánh số nhánh mạch điện Định lý ứng với mạch điện, vòng số bù f) Hình 5-1 Các khái niệm minh họa hình 5-1, đo': a) Mạch điện bất kỳ; b) Graph mạch điện a; c) Một câý với nhánh 1, 2, 5, 7; đ) Các bù 4, 3, ứng với c; e) Một vòng; Một vòng Graph liên, thơng graph mà từ nút có đường đến nút khác Graph không liên thông gồm nhiều graph liên thông, graph gọi graph thành phần (hình - 2a) Graph tách rời graph có nút mà bỏ nút graph trở thành graph khơng liên thơng Hình - 2a graph không liên thông (gồm hai thành phần graph) A, B tách rời Bỏ nút graph thành phần bên trái A trở thành graph khơng liên thơng (hình 5- 2b) Vết càt tập nhánh chia số nút graph thành hai nho'm nũt riêng biệt Bỏ nhánh vết cắt graph trở thành graph không liên thông, co' hai graph thành phàn ứng với nho'm nút Hệ thống vết cắt gọi độc lập (hoặc bản) vết cắt qua nhánh cây, nhánh khác bù (hình 5- 2c) 135 Vậy số vết cắt hệ thống (ứng với cây) bàng số nhánh Thường chọn hướng vết cắt theo hướng cùa nhánh V, ì6 Hình 5-2 Theo hỉnh 5- 2c mạch điện cố nút nên có vết cát bản: = [2, 4] ; v2 [1, 3, 4] V* = [4, 3, 5, 6] V4 = (6 7] 5-2 Các ma trận tôpô Các ma trận tôpô cho biết cấu trúc hình học mạch điện số Các ma trận tôpô quan trọng ma trận nút A, ma trận mạch B, ma trận vết cắt Q Định nghĩa Có thể chọn nút số Nn nút mạch điện làm gốc Ma trận nút mạch điện có (2Vn - 1) hàng 2Vnh cột với phần tử ma trận: Oịj = nhậnh j có chiều khỏi nút i Ojj = — nhánh có chiều vào nút i Oịj = nhánh j không nối với nút i Thứ tự ký hiệu nút nhánh không quan trọng Hàng của'nút chợn làm gốc suy luận từ (Nn - 1) hàng ứng với nút cịn lại Bởi nhánh nối hai nút nối dịng nhánh vào nút này, tức khỏi nút kia, tổng giá trị phần tử cột (nếu tính hàng ứng vối nút gổc), từ đo' dễ dàng suy luận hàng ứng với nút gốc Định nghĩa Ma trận mạch mạch điện có 2Vv hàng 2Vnh cột (trong đố ATV số vòng bản) với phần tử ma trận ởịj = chiều nhánh j thuộc vòng i chiều với qui ước vòng 6jj = — chiều nhánh ngược với chiều qui ước vịng = nhánh j khơng thuộc vịng i 136 ví dụ: Trên hình 5-3 chọn D làm nút gốc Ma trận nút A viết Nhánh A -1 B 0 -1 1 c -1 -1 0 D 0 -1 -1 nút A Chọn 3, 2, (hình - 3c) Hình 5-3 Định nghĩa Ma trận vết cát mạch điện có (Nn - 1) hàng Nnh cột (trong đo' (Nn - 1) số vết cát bản) với phàn tử ma trận Ợịj = hướng nhánh j thuộc vết cắt i có chiều với chiều vết cắt i cjjj = - chiều nhánh ngược với chiều vết cắt i Qjj = nhánh j khơng thuộc vết cắt i Theo ví dụ hình 5-3: Chọn (3, 2, 1) Chú ý: Bao co' thể chọn kiểu graph cho 137 Ac =1 , Bb =1, Qc =1 Dó kiểu chọn gồm nhánh nối gốc Dê’ Ac = chiều nhánh phải vào nút gốe, khỏi nút gốc chiều nhánh phải qui định chiều dương Cũng nút với nút Bb = 1, với cách chọn vòng với chiều bù chiều với chiều qui ước V òng, ma trận vết cắt viết Vj r 0 - - 1’ Q= v2 vj 1 0 -1 -1 -1 (5-3) Hình 5-4 Vì vết cắt chứa nhãn nên số cắt graph số nhánh [(Nn- 1) nhánh] graph 5- 3.Các định luật Kirchhoff với ma trận tôpô Định luật Kirchhoff 1: "Tổng đạí số dịng điện vào nút 0", ta biểu diễn hệ phương trình dòng điện nút mạch điện với giúp đỡ ma trận A dạng ma trận sau: Ainh = o (5-4) Định luật Kirchhoff phát biểu "Tổng đại số dòng điện vết cất 0" ta biểu diễn hệ phương trình dịng điện vết cắt dạng ma trận: Qinh=o Dịnh luật Kirchhoff 2: "Tổng đại sổ sụt áp vịng kín 0" viết dạng ma trận Bunh.= inh la ma trận cột dòng điện nhánh ; Unh ma trận cột điện áp nhánh Các công thức (5- 4), (5- 5), (5- 6) cơng thức áp dụng máy tính định luật Kirchhoff (DLK ) Định lý Nếu cột B Q xếp theo thứ tự nhánh mạch [hàngi B][ hàngý Q ] = (5-7) Biểu thức (5- 7) viết: Nnh , k=l s = s>ịk.0) then begin if not D then write(f,’ ’ :1) else D : = FALSE ; for j : = n + l-(n mod 5) to n write(f,CompToStr((A~)[i,j]), ’ ’) ; write(f,#13#10) ;Inc(ll) ; if TS and (11 mod 15 = 0) then Pause ; end ; end ; end ; begin TS : = False ;11 : = ; case ((Status and 7) shr 1) + of : begin 268 AssignCrt(Location) ;TS : = true ; TextBackGround(Blue) ; Win : = OpcnWindow(l,6,80,24,’Output result’,’ ’) ; TextColor(Yellow) ; window(Win ~ ,xl + l,Win yl + l,Win ~ ,x2-l,Win ~ y2-l) ; end ; : Assign(Location,ToFile(’Write To File’.’RESULT.OUT’)) ; : Assign(Localion,’PRN’) ; end ; {$I-}rewrite(Location) ;{$! + } if IOResult< >0 then begin Error ;exit ;end ; if GetStatus(4) then Writing(Location,Addr(Yn),GNode-l,GNode-l,’Yn’) ; if GctStatus(5) then Writing(Location,Addr(Un),l,GNode-l, ’Un’) ; if GetStatus(6) then Writing(Location,Addr(Ingn),l,GNode-l,Tngn ’) ; {$1 + }if IOResult< >0 then Error ; closc(Location) ; if (Status and 1) = then begin Pause ;CloseWindow(Win) ;window(l,l,80,25) ; end ; end ; { -Yes/No Contest - } function Yes(title :string ;x,y :integer) :boolean ; var w : PWindow ; K : KeyType ; begin TextBackGround(LightGray) ; w : = OpenWindow(x,y,x + length(title) + 4,y + 3,”,’ ’) ; TextColor(White) ;WriteXY(W ~ ,xl + 2,w ~ yl +1,title) ; repeat K : = GctKey ; until chr(K) in |’Y’,’y’,’N’,’n’l ; write(chr(K)) ; Yes : = chr(K) in [’Y’,’y’] ; CloseWindow(W) ; end ; { Save Data • } Procedure Save ; Var Ok iboolean ; ff :text ; chh :char ; ii :byte ; Begin if not Changed then exit ; if filename = ” then begin 269 Helpflnput path of file’) ; repeat Ok :=true ; filename : = ToFile(’Save to file’,’DATA.IN’) ; {$I-}assign(ff,filename) ;reset(ff) ;{$! + } if IOresult=0 then Ok : = Yes(filename + ’ already exist !Ovcrwrite(Y/N)?’,5,10) ; until Ok ; end ;{$!-} rewrite(ff) ;OpenProgress(5,10,’Saving ’); ShowProgress(l,gbranch +1) ; writeln(ff,gnode,’ ’.gbranch,’ ’,gomega) ; for ii : = to gbranch begin Showprogress(ii,gbranch) ; with aa^fii] begin write(ff,Nbranch,{Symbol :3,}’ ’,Snode,’ ’.Dnode,’ ’) ; write(Vsourse.re,’ ’.Vsourse.im,’ ’,Csourse.re,’ ’,Csourse.im,’ ’) ; writeln(R,’ ’,L,’ ’,c,’ \Cbranch,’ ’,gm,’ ’,INP,’ ’,M) ; end ; end ; {$1 + } if IOResult< >0 then Error else Changed : = False ; CloseProgress ;close(ff) ; End ; { - Display information of one branch } Procedure Display(X :PRInfo) ; begin clrscr ; with begin writeln(’ Branch : ’.nbranch) ; writeln(’Sourse node : ’,SNode) ; writeln(’Destination node : ’,Dnode) ; write(’Real value of voltage sourse : ’) ; if Vsourse.re< >0 then writeln(VSourse.Re) else writcln ; write(’Imagin value of voltage sourse : ’) ; if Vsourse.im< >0 then writeln(VSourse.Im) else writeln ; write(’Real value of current sourse : ’) ; if Csourse.re< >0 then writeln(CSourse.Re) else writein ; writeflmagin value of current sourse : ’) ; if Csourse.im< >0 then writeln(CSourse.Im) else writein ; write(’R : ’) ; if R>0 then writeln(R) else writein ; „„„ writef’L : ’) ; 270 if L>0 then writeln(L) else writein ; writefc : ’) ; if C>0 then writeln(C) else writeln ; writef’Control branch : ’) ; if Cbranch>0 then writeln(Cbranch) else writein ; write(’Gm : ’) ; •' if Gm>0 then writeln(Gm) else writein ; writeflnter branch : ’) ; if Ib>0 then writeln(ib) else writein ; write(’Positive inter node : ’) ; if inp>0 then writeln(inp) else writein ; writc(’M : ’) ; if m>0 then writeln(m) else writein ; end ; end ; { - Modify data - } Procedure Modify ; var ii integer ; w : PWindow ; Key : KeyType ; Begin if (GNodel then begin ii :=ii-l ;display(addr(aa ~ [ii])) ; end ; KPgDn : if ii0 then gm : = getreal(41,12,gm) else begin gm :=0 ;WriteXY(41,12,Sp(38)) ; end ; lb : = getbyte(41,13,ib) ; if Ib>0 then begin inp : = gctbyte(41,14,inp) ;M : = gctreal(41,15,M) ; end else begin inp : = ;M :=0 ; WriteXY(41,14,Sp(38)) ;WriteXY(41,15,Sp(38)) ; end ; end ; Changed : = True ; end ; • • end ; Until Key = KEsc ; window(li,l,80,25) ;CloseWindow(W) ; end ; { - Read Tile from disk } Procedure Open ; Var Ok : boolean ; ff : text ; ii : byte ; Begin if Changed then begin Ok : = Yes(’Data has been changed !Save (Y/N)?’,10,10) ; if Ok then Save ; end! ; Help(’Ikiput path of file’) ; repeat! Ok : = true ; filename : =ToFile(’Input file name’,filename) ; if fflbname = ” then exit ; 79 {$Ik}assign(ff,filename) ;rcsct(ff) ;{$! + } if (lOresult ())■ then begin Error ;Ok : = false ; end ; until Ok ; OpenProgress(5,10,’Loading ShowProgress(l,20) ;{$!-} if aa< >NIL then FreeMem(aa,sizeof(aa)) ;aa :~NIL ; readln(ff,gnode,gbranch,gomega) ; if (GNodecl) or (GNode>MaxNode) or (GBranchc l)or(GBranch>MaxBranch) then begin CloseProgress ; Error ;exit ; end ; new(aa{,Gbranch*sizeof(RInfo)}) ; for ii : = to gbranch with aa [ii] begin Nbranch : = ii ; { Symbol : = ” ;} Snode : = ; Dnode : = ; Vsourse.re : = ; Vsourse.im : = ; Csourse.re : = ; Csourse.im :=0 ; R :=0 ; L : = ; c : = ; Cbranch : = ; gm : = ; IB : = ; end ; ii : = ; while (not EOF(ff)) and (ii-l< =GBranch) begin with aa"" [ii] readln(ff,Nbranch,{Symbol, }Snode,Dnode,Vsourse.re,VsourseJm, Csourse.re,Csourse.im,R,L,C,Cbranch,gm,IB,INP,M) ; ShowProgress(ii,gbranch) ; ii : = ii + l ; end ; close(ff) ; CloseProgress ;CgColor : = Blue ; if ii-1 < > gbranch then Error else modify ; End ; { Create new circuit } procedure Creat ; var ii :integer ; Ok :boolean ; p :PWindow ; Begin if Changed then begin Ok : = Yes(’Data has been changed ISave (Y/N)?’,10,10) ; 273 if Ok then Save ; end ; TextBackGround(Bluc) ;CGColor :=Blue ;CTColor : = Yellow ; p : = open Window( 1,6,80,24,’Create a new circuit’,’ ’) ; Help(’Input data for new circuit’) ;filename : = ” ; TextColor(Yellow) ;window(P ~ xl + l,p ~ yl + l,p~ x2-l,p ~ y2-l) ; WriteXY(l,l,’Input number of branch : ’) ; repeat gbranch : = GetByte(25,l,GBranch) ; until (gbranch>0) and (gbranch< MaxBranch) ; WriteXY(l,2,’Input number of node : ’) ; repeat gnode : = GetByte(23,2,gnodc) ; until (gnode>0) and (gnode0 ; if aa< >NIL then FreeMcm(aa,sizeof(aa)) ; Getmem(aa,sizeof(RInfo)*GBranch) ; for ii : = to gbranch with aa^ịii] begin Nbranch : = ii ; { Symbol : = ” ;} Snode : = ; Dnode : = GNode ; Vsourse.re : = ; Vsourse.im : = ; Csoursc.re : = ; Csourse.im : = ; R :=0 ; L :=0 ; c :=0 ; Cbranch : = ; gm : = ; IB : = ; 1NP :=0 ; M : =0 ; end ; modify ;CloseWindow(P) ; end ; BEGIN Startup ; repeat Selected : = SelcctMenu ; case Selected of 274 MSave : Save ; MOption : Option ; MPrint : Printing ; MAbout : CopyRight ; MHTƯ : HelpText ; MNew : begin Creat ’.ThanhLap ; end ; MOpen begin Open ;ThanhLap ;end ; MChange : begin modify ;ThanhLap ;end ; MOuit : if Changed then Save ; end ; until Selected = MOuit ; ShutDown ; END 275 {SIFNDEF Print} {$DEFINE Print} unit Print ; interface uses Crt, Windows ; const Status : byte = $71 ; procedure SctStatus(pos :byte jenable :boolean) ; function GetStatus(pos :byte) tboolean ; procedure Option ; implementation const Kind : array[1 2,1 3] of string[15] = ( (’ [ I ~ Yn ’,’ [ ] ~Un [ ] ~Ingn ’), (’ ( ) ~ Screen ~ File ~ Printer ’) ) ; procedure SetStatus(pos :byte ;enable :boolean) ; begin if enable then Status : = Status or (1 shl pos) else Status : = Status and not (1 shl pos) ; end ; function GetStatus(pos :byte) :boolean ; begin GetStatus : = (Status and (1 shl pos))>0 ; end ; procedure Option ; var Old : byte ; Key : KeyTypc ; CurK, CurL, CurP : integer ; OWin : PWindow ; procedure DrawWindow ; var i : integer ; begin textcolor(White) ;textbackground(LightGray) ; OWin : =OpenWindow(10,10,39,19, ’Print Option’,’ ’) ; TextColor(Black) ; WriteXY(OWin xl+2,0Win.y 1+2,’Print Print To’) ; {+2 +15} TcxtBackGround(Cyan) ; {+3} for i : = I to begin WriteXY(OWin ~ ,xl + 2,0Win ~ yl + + i,Kind|l,ij) ; WriteXY(OWin ~ ,xl + 15,OWin ~ yl + + i,Kind[2,i]) ; end ; TextColor(Black) ;TcxtBackGround(LightGray) ; WriteXY(OWin ~ xl + 6,OWin ~ y2-l,’òòòòòòòò’) ; {223} 276 WrileXY(OWin'\xl i-13,0 Win ~ y2-2,T) ; {220} WriteXY(OWin~.xl + 17,OWinz'.y2-l ’ÒÒÒÒÒỒÒÒ’) ; {223} WritcXY(OWin~.xl+24OWin z'.y2-2,’i’) ; {220} TextBackGround(Green) ; WriteXY(OWin xl+5,OWin~.y2-2,’ “OK ’) ; WriteXY(OWin''.xH-16,OWinz'.y2-2,’ “Cancel ’) ; end ; procedure Sclected(K,L integer ;A,C :boolean) ; var s : string! 151 ; begin if c then TcxtColor(White) else TcxtColor(Black) ; if K = then begin TcxtBackGround(Green) ; if L=1 then WriteXY(OWin~.xl + 8,OWin~,y2-2,’~OK’) else WriteXY(OWin ~ xl + 17,OWin ~ ,y2-2,’ ~ Cancel’) end else begin TcxtBackGround(Cyan) ; s : = Kind[K,L| ; if A then if K=1 then s|3| : = ’X’ else s|3J : = ’i’ ; WriteXY(OWin ~ ,xl-l + 13*K,OWin~ yl + + L,s) ; TcxtBackGround(LightGray) ; if c then TexlColor(White) else TextColor(Black) ; g0toxy(OWin xl-11 + 13*K,OWin ~ yl +2) ; if K=1 then write(’Print’) else writefPrint To’) ; end ; end ; begin Old := Status ;DrawWindow ; for CurL : = to begin if GetStatus(CurL + 3) then Selected(l,CurL,TRUE,FALSE) ; if GetStatus(CurL-l) then Selected(2,CurL,TRUE,FALSE) ; end ; CurK : = ;CurL : = ;CurP : = ; Selected(l,l,GetStalus(4),TRUE) ; gotoxy(OWin xl + 4,OWin ~ yl + 3) ; 277 repeat Key : = Get Key ; Selected(CurK,CurL,GetStatus(CurP),FALSE) ; case Key of KRight, KDown : if CurK

Ngày đăng: 02/01/2023, 16:46

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN