尹昊龍 沈瑤 趙彥珍 高昕悅
摘 要:《電路》是電類專業(yè)學生的第一門專業(yè)基礎課程,是后續(xù)專業(yè)課程學習的基礎,為了使學生對所學知識進行綜合運用,鍛煉其解決實際問題的能力,提高創(chuàng)新能力,在計算機專業(yè)學生中開展了結點電壓法的智能分析計算及拓展應用課程設計,采用分層次的教學任務,充分調(diào)動學生的積極性,激發(fā)潛能。實踐表明,學生從本次課程設計中獲得自信,提高了用編程方法解決電路問題的能力。文章重點介紹應用微信小程序?qū)崿F(xiàn)界面設計和采用JavaScript實現(xiàn)智能分析計算的過程。
關鍵詞:結點電壓法;微信小程序;JavaScript;界面設計
中圖分類號:TM13? ? ? ? 文獻標志碼:B? ? ? ? ? 文章編號:1673-8454(2020)24-0092-05
微信小程序是一種不需要下載安裝即可使用的應用,由于開發(fā)難度低和維護成本小,且能夠節(jié)約手機內(nèi)存空間,因而備受關注。目前微信小程序已在各個領域中推廣應用。[1]陳剛等應用微信小程序設計溫度控制實驗系統(tǒng),融合理論和實踐教學,改善了教學效果。[2] 宋鈺設計了基于小程序的微信學習平臺,平臺上包含豐富的學習資源,滿足不同用戶的學習需求,學習效果良好。[3] 鄭顯玲等介紹了小程序在圖書館服務平臺中的一些應用場景。[4] 杭莉等基于微信小程序設計了一個點餐系統(tǒng),使點餐過程更加便捷。[5] 王傳杰利用微信小程序和云服務器設計智能儲物柜,實現(xiàn)更智能、便捷、安全的存取操作。[6] 嚴一涵基于微信小程序以JavaScript實現(xiàn)了數(shù)字電路仿真平臺的設計。[7]
在新工科背景下,學校提倡教師積極開展混合式教學,筆者嘗試在計算機專業(yè)學生中開展以提高學生創(chuàng)新能力為目標的課程設計實踐,本文介紹了采用微信小程序?qū)崿F(xiàn)界面設計的步驟,通過《電路》課程設計實踐使學生將所學知識進行綜合運用和創(chuàng)新。
一、實驗原理
1.任務描述
為提高學生的自主學習能力、實踐能力和創(chuàng)新能力,充分激發(fā)學生的潛能,該課程設計任務采用分層次任務設計,將實驗任務分為4個層次。層次1是自選編程語言編寫能夠生成任意結構電阻網(wǎng)絡(含電壓源、電流源和電阻)的結點電壓方程的程序,并求出結點電壓;層次2考慮電路中包含受控源的情況;層次3求電路任意端口的戴維寧等效電路;層次4設計人機交互界面。本文將以圖1所示電路為例說明具體設計過程。
2.電路結構參數(shù)的存儲
為了實現(xiàn)電路的智能分析與計算,滿足對任意結構電路結點電壓方程的列寫,應首先將不同電路的結構參數(shù)輸入計算機,計算機根據(jù)輸入?yún)?shù)自動列寫結點電壓方程。仔細研究手動列寫結點電壓方程的過程發(fā)現(xiàn),結點電壓方程與元件的類型、連接的起止結點及元件參數(shù)相關?,F(xiàn)將電路元件分為電阻、電流源、電壓源和受控源4種。對元件進行分類,電阻、電流源、電壓源作為一類,參數(shù)存儲方式為:id num nodestart nodeend;受控源作為一類,參數(shù)存儲方式為:id num num2 nodestart nodeend knodestart knodeend 。其中id為元件類型,nodestart和nodeend分別為元件連接的正負結點,knodestart和knodeend分別為受控源的正、負控制端,num為元件的值或受控源的控制支路的電阻,num2為受控源的控制系數(shù)。參數(shù)id區(qū)分四種元件,不同id值對應的元件類型如表1所示。
3.結點電壓方程的列寫
將其簡寫為:
AU=B公式2
其中A為系數(shù)矩陣,U為結點電壓列向量,B為右端列向量。下面介紹采用填入法思想通過編程獲得A矩陣、列向量U和B的方法。
由公式1可知,電阻元件對該元件連接的兩個結點的自導和互導有貢獻。若某電阻連接在結點p和n之間,該電阻對系數(shù)矩陣的貢獻的核心代碼為:
對于電流源,由公式1可知,電流源對結點電壓方程的右端列向量B有貢獻。若電流源從結點p流入結點n,則電流源對列向量B的貢獻的核心代碼為:
對于電壓源,電壓源會影響系數(shù)矩陣A和右端列向量B。若電壓源的正端連接的結點為p,負端連接的結點為m,電壓值為Us,則增補方程Up - Um = Us[9]。將該方程代入公式1,得到考慮電壓源后的修正方程式:
故編程時需將系數(shù)矩陣A第p行元素的值先全部歸零,再修改第p行第p列的元素為1,第p行第m列的元素為-1,修改右端列向量第p行元素為Us。特別地,若m=0,即電壓源負端連接的為參考結點,在修改系數(shù)矩陣A時,因為不存在第0列,故不必修改第p行第m列元素。核心代碼為:
對于受控源,仍應對系數(shù)矩陣A和右端列向量B進行修正[10]。以圖1中電流控制電流源為例,設控制電流從結點pc流向結點nc,控制支路的電阻為Rpnc,受控電流源從結點p流向結點n電流值為I,控制系數(shù)為?茁,則可得:
由于該受控源可看作電流源,則可以將公式4代入與該受控電流源相連的結點對應的方程,然后對系數(shù)矩陣A和右端列向量B進行修正,以下通過一個實例具體解釋修正過程。如圖1所示受控源,控制電流從結點3流向結點1,控制支路的電阻為R3,可得:
對其他受控源,可進行類似分析。
4.計算結點電壓
在上節(jié)得到電路結點電壓方程的系數(shù)矩陣A、結點電壓列向量U和右端列向量B,需要解方程才能得到結點電壓。由線性代數(shù)知識可知U=A-1B,其中A-1=A*/|A|。由于JavaScript中沒有矩陣運算的庫函數(shù),為了實現(xiàn)對矩陣的計算,自定義了矩陣運算函數(shù)(見表2)。
det函數(shù)采用了遞歸思想求矩陣A的行列式|A|。tranpose函數(shù)返回矩陣的轉置,若A是m×n矩陣,則返回一個n×m的矩陣。adjoint函數(shù)返回矩陣的伴隨矩陣,首先計算待求矩陣中每個元素的代數(shù)余子式并存放入對應元素的位置,再調(diào)用tranpose函數(shù),即得到待求矩陣的伴隨矩陣。inverse函數(shù)返回A矩陣的逆矩陣A-1,先調(diào)用adjoint函數(shù)得到待求矩陣A的伴隨矩陣A*,再調(diào)用det函數(shù)得到待求矩陣的行列式|A-1|,則A-1=A*/|A|。multiply函數(shù)實現(xiàn)兩個矩陣相乘。利用這些自定義函數(shù)可求得結點電壓列向量U。
5.給定端口的戴維寧等效電路
根據(jù)戴維寧定理可知,求給定結點n和結點p之間的戴維寧等效電路,需計算給定端口的開路電壓和等效電阻。
求開路電壓Uoc的方法是,首先將結點n和結點p之間連接的所有元件(即nodestart =n且nodeend = p,或nodestart = p且nodeend = n)刪除,得到一個開路端口,調(diào)用求解結點電壓的函數(shù),重新求解新電路結構的結點電壓,則開路電壓Uoc = Un - Up。
等效電阻Req是從開路端口看進去,當網(wǎng)絡內(nèi)部所有獨立源均置零以后的等效電阻。首先將結點n和結點p之間連接的所有元件刪除;其次將所有的電流源從電路中移除;最后將每個無伴電壓源視作短路,連接無伴電壓源的兩個結點成為一個結點,若無伴電壓源的起始端點為x,終止端點為y,先將x與y結點之間的所有元件從電路中刪除,再將所有與y結點相連的元件的結點號y修改為x(若結點n或p正好等于y,則同時將結點值改為x);最后在待求戴維寧等效電路的結點n和p之間添加一個電流源I=1A,再次調(diào)用求解結點電壓的函數(shù),求得結點電壓Un 和Up,則結點n和p之間的等效電阻為:
二、基于微信小程序的界面設計
微信小程序的界面設計主要使用了WXSS (WeiXin Style Sheets)和WXML(WeiXin Markup Language)兩種語言,WXSS是一套用于小程序的樣式語言,用于描述WXML的組件樣式。WXML是框架設計的一套標簽語言,結合基礎組件、事件系統(tǒng),可以構建出頁面的結構。本文實現(xiàn)結點電壓智能分析計算的小程序使用原生的框架開發(fā),主要包括開始頁面、元件列表頁面、元件參數(shù)輸入頁面和結果頁面,小程序的使用流程如圖2所示。
小程序通過一個全局變量stack實現(xiàn)頁面跳轉,當stack為不同值時顯示不同的頁面。若點擊某個按鈕時需要跳轉頁面,只需在按鈕的點擊事件中添加修改stack值的程序。小程序通過表單實現(xiàn)對用戶輸入數(shù)據(jù)的接收和處理,表單可將表單內(nèi)用戶輸入的input(輸入框)、radio-group(單項選擇器)等組件的值保存并提交。每一個表單內(nèi)都有一個綁定了表單提交事件函數(shù)的按鈕,用戶在表單內(nèi)輸入數(shù)據(jù)后點擊此按鈕,即可將input攜帶的文本數(shù)據(jù)和radio-group攜帶的選中元素的索引數(shù)據(jù)提交,由JavaScript編寫的程序?qū)@些提交數(shù)據(jù)進一步處理,生成便于計算處理的數(shù)據(jù)。
1.開始頁面
開始頁面對該小程序進行簡單介紹,如圖3所示,用戶需在此頁面內(nèi)輸入電路結點個數(shù),點擊“確定”按鈕即可觸發(fā)表單提交事件和頁面跳轉事件。表單成功提交后程序獲取電路的結點數(shù)量,并為后續(xù)元件參數(shù)輸入做準備,方便后續(xù)元件的添加和數(shù)據(jù)處理。
2.元件列表頁面
元件列表頁面由元件添加按鈕模塊、元件列表模塊和計算按鈕模塊組成,是小程序的核心頁面,如圖4所示。元件添加按鈕模塊包括“添加元件”和“添加受控源”兩個按鈕,均綁定了點擊事件,點擊后觸發(fā)頁面跳轉事件,跳轉至圖5元件參數(shù)輸入頁面。
元件列表模塊顯示已添加的元件參數(shù),用戶可查看已輸入元件參數(shù)是否正確。
計算按鈕模塊的“計算”按鈕綁定了點擊事件,電路參數(shù)輸入完畢后,點擊“計算”按鈕觸發(fā)計算結點電壓的程序,計算出結點電壓,同時也會觸發(fā)頁面跳轉事件,跳轉至圖6結果頁面。
3.元件參數(shù)輸入頁面
元件參數(shù)輸入頁面是一個表單,以添加一般元件為例(即非受控源),如圖5所示,采用radio組件實現(xiàn)選擇元件類型、起始和終止結點,采用input組件實現(xiàn)元件參數(shù)值的輸入,所有參數(shù)輸入完畢后,點擊“確定”按鈕(該按鈕綁定表單提交事件和頁面跳轉事件)即可將元件參數(shù)添加到自定義的itemlist數(shù)組中,同時返回元件列表頁面。
4.結果頁面
電路參數(shù)輸入完畢后,在圖4頁面中點擊“計算”按鈕后進入圖6所示結果頁面,該頁面上半部分顯示結點電壓結果,下半部分是戴維寧等效電路計算模塊,輸入欲求戴維寧等效電路的兩個結點序號,點擊“計算”按鈕后即可得到這兩個結點間電路的開路電壓Uoc、等效電阻Req和短路電流Isc。
三、算例
現(xiàn)以圖1所示電路說明利用小程序求解結點電壓及結點1和2之間戴維寧等效電路的流程,其中Us=12V,R1=10Ω,R2=8Ω,R3=15Ω,R4=5Ω,Is=2A,Ic=?茁i1,?茁=0.5。
首先在圖3所示開始頁面輸入結點數(shù)為4,點擊“確定”按鈕跳轉至圖4所示元件列表頁面,單擊“添加元件”按鈕進入圖5所示元件參數(shù)輸入頁面,增加的元件種類默認為電阻,若要增加其他種類的元件,在圖5中點擊相應元件類型單選框,在起始結點和終止結點欄分別選擇元件連接的起始結點號和終止結點號,單擊“請輸入元件的值(Ω)”輸入框,輸入元件的值。之后,單擊“確定”按鈕,提交輸入的元件參數(shù),同時返回圖4所示元件列表頁面,繼續(xù)添加元件,輸入電路參數(shù),待所有電路參數(shù)輸入完畢后,元件列表頁面如圖4所示,單擊“計算”按鈕,跳轉至圖6所示結果頁面,圖中顯示結點1的電壓為12.0000V,結點2的電壓為10.7961V,結點3的電壓為11.3786V。
在圖6頁面的求戴維寧等效電路欄輸入起始結點1和終止結點2,單擊“計算”按鈕,即可得到結點1和2之間的開路電壓為1.7222V,等效電阻為4.306Ω。
利用Multisim軟件對圖1所示電路進行仿真驗證,如圖7所示,求得結點電壓如圖8所示,與圖6小程序計算結果相同。Multisim軟件求得結點1和2之間的開路電壓為1.722V,等效電阻為4.306Ω,如圖9所示,與小程序求解結果一致。
本文基于微信小程序,以JavaScript為計算語言,利用WXML和WXSS語言設計人機交互界面,開發(fā)了一個求解任意結構電路結點電壓和任意端口戴維寧等效電路的小程序。該小程序頁面操作簡單,計算速度快,且結果精確,能夠適應于求解包含電阻、電流源、電壓源和受控源等元件的任意結構電路的情況。通過本次課程設計鍛煉,加深了學生對電路基本理論的理解,激發(fā)學生學習《電路》課程的興趣,提高了學生應用所學知識解決實際問題的能力,使他們在后續(xù)課程學習中更加努力、自信,不畏困難,對人才培養(yǎng)起到積極作用。
參考文獻:
[1]何曉靜.微信小程序如何構建大格局[J].青年記者,2019(32):94-95.
[2]陳剛,何秋睿.基于微信小程序的反饋式教學模式改革[J].教育教學論壇,2019(47):97-98.
[3]宋鈺.基于小程序的微信學習平臺設計與實現(xiàn)[J].河南科技,2019(32):36-38.
[4]鄭顯玲,湯雪姣.微信小程序助力圖書館學科服務[J].才智,2019(29):236-237.
[5]杭莉,聶莉娟.基于微信小程序的點餐系統(tǒng)[J].電子制作,2019(23):54-58.
[6]王傳杰,孫玉昕,饒茜雅,等.應用微信小程序的智能儲物柜[J].福建電腦,2019,35(10):58-60.
[7]嚴一涵.一種數(shù)字電路仿真平臺的設計與實現(xiàn)[J].科技傳播,2020,12(2):152-154.
[8]邱關源,羅先覺.電路(第四版)[M].北京:高等教育出版社,1999:69-72.
[9]張西寧.基于結點電壓法的無伴電壓源電路分析[J].河西學院學報,2009,25(2):59-61.
[10]霍龍.含有無伴受控源網(wǎng)絡的結點電壓全矩陣分析[J].沈陽工程學院學報(自然科學版),2016,12(3):227-233.
(編輯:魯利瑞)