新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用Python語言實(shí)現(xiàn)實(shí)驗(yàn)室自動(dòng)化

利用Python語言實(shí)現(xiàn)實(shí)驗(yàn)室自動(dòng)化

作者: 時(shí)間:2017-03-23 來源:電子產(chǎn)品世界 收藏

  理解數(shù)據(jù)框的強(qiáng)大之處

本文引用地址:http://m.butianyuan.cn/article/201703/345661.htm

  為了了解使用和Pandas數(shù)據(jù)框的強(qiáng)大之處,在第16行和第17行之間增加以下代碼。

  第A和B行生成兩個(gè)新的數(shù)據(jù)框字段。Vout_id包含輸出電壓的理想直流設(shè)置點(diǎn),給定實(shí)測(cè)電流和理想的零電流設(shè)置點(diǎn)(1 V)以及載重線。Vout_err是理想電壓與實(shí)測(cè)電壓之間的絕對(duì)誤差。

  第D和E行在數(shù)據(jù)框中增加了Pass字段。該字段的值是一個(gè)字符串,表示是否滿足輸出電壓精度的假設(shè)指標(biāo)±0.1%。在圖3中, 您可看到保存的CSV文件在Excel中的情況。神奇的是:數(shù)字?jǐn)?shù)據(jù)和文本位于相同表格中,甚至根據(jù)數(shù)據(jù)框字段的名稱自動(dòng)生成了表頭。

圖3. 包含測(cè)量結(jié)果的CSV文件截屏

  利用Pyplot分析數(shù)據(jù)以及繪制圖表

  利用上一節(jié)介紹的代碼片段,我們可以確定輸出電壓是否在其理想值附近的“允差”帶內(nèi)。我們通過本實(shí)驗(yàn)還能夠獲得另一個(gè)感興趣的信息:載重線的準(zhǔn)確值,也就是VOUT-vs-IOUT曲線的斜率。如果您不記得如何對(duì)采集的數(shù)據(jù)進(jìn)行線性擬合,也不必?fù)?dān)心:也有一個(gè)執(zhí)行該操作的函數(shù)。只需在腳本最后插入以下代碼:

  第A行從Scipy的Stats模塊中導(dǎo)入一個(gè)方法。在第B行中,我們將欲擬合點(diǎn)的X和Y坐標(biāo)傳遞給linregress方法。最后,在第C和D行中將結(jié)果打印到終端。Linregress以數(shù)字形式返回多個(gè)結(jié)果,斜率保存在索引0,截?cái)帱c(diǎn)在索引1。可用的其它信息有相干系數(shù)和估計(jì)值的標(biāo)準(zhǔn)差。

  對(duì)于如此小的數(shù)據(jù)集(20個(gè)點(diǎn)),完全可以使用Excel生成曲線圖。利用三行代碼示例可了解在中如何完成這項(xiàng)工作:只需將其增加到上述腳本的末尾(plot方法的‘ro’參數(shù)表示我們希望使用紅色圓點(diǎn)標(biāo)記):

  Pyplot是Python的Matplotlib庫的一個(gè)模塊,包括大量繪制圖形的方法。更好的是,這些方法幾乎與MATLAB的方法完全相同。圖4所示為這三行代碼所產(chǎn)生的結(jié)果。窗口和圖形由Pyplot自動(dòng)生成,看起來好像“憑空”出現(xiàn)在終端窗口中。

圖4. 表示采集數(shù)據(jù)的圖形曲線

  Python是實(shí)現(xiàn)實(shí)驗(yàn)室配置自動(dòng)化的上佳之選,簡(jiǎn)單易用、容易理解,以及具有極高的靈活性和強(qiáng)大功能, 能夠省去繁瑣的測(cè)量時(shí)間。并沒有消失,仍然是GUI王者。一般而言,我認(rèn)為更適合需要精細(xì)圖形界面并且不需要執(zhí)行復(fù)雜循環(huán)或數(shù)據(jù)處理的應(yīng)用。例如,我仍然使用設(shè)計(jì)大多數(shù)面向客戶的應(yīng)用程序,這些程序一定要漂亮,但很少有多么復(fù)雜。但對(duì)于其他應(yīng)用和自動(dòng)化需求,Python現(xiàn)在是我的首選。

  側(cè)欄:“Python是什么以及如何使用?”

  Python是一種解析式、面向?qū)ο蟆⒏呒?jí)編程語言,采用動(dòng)態(tài)語義。自1991年首次發(fā)布以來,Python的應(yīng)用越來越普及,現(xiàn)在被廣泛用于各種應(yīng)用;是主流大專院校和網(wǎng)絡(luò)課程中最常用的教學(xué)編程語言之一。Python成為“第一門”編程語言的原因在于其簡(jiǎn)單、容易學(xué)習(xí)的語法和可讀性(有人說它“用淺顯的英文在編程”), 是通用性和功能性的完美結(jié)合。

  然而,不要認(rèn)為Python“僅僅”是一種很好的教學(xué)或?qū)W院派編程語言,不適合或很少適合專業(yè)領(lǐng)域的應(yīng)用。相反,Python被許多頂尖的公司大量用于網(wǎng)絡(luò)應(yīng)用和數(shù)據(jù)分析,例如Google、Yahoo和NASA。它是一門對(duì)于快速開發(fā)極具吸引力的編程語言,可用于實(shí)現(xiàn)復(fù)雜電子儀器的自動(dòng)化,使數(shù)據(jù)采集的效率更高。

  Python的優(yōu)勢(shì)不僅限于使用簡(jiǎn)單。Python腳本可在任何主流操作系統(tǒng)上跨平臺(tái)運(yùn)行,只需安裝Python解析器即可。Python的功能也極其強(qiáng)大,被廣泛用于數(shù)據(jù)分析和復(fù)雜的數(shù)學(xué)運(yùn)算。

  為什么選擇Python來實(shí)現(xiàn)實(shí)驗(yàn)室自動(dòng)化?我實(shí)施的大多數(shù)測(cè)試配置都相當(dāng)簡(jiǎn)單:任務(wù)中95%的時(shí)間是在不同時(shí)間點(diǎn)測(cè)量一個(gè)或多個(gè)信號(hào)(例如電壓、電流或溫度),或者利用一組自變量產(chǎn)生另一組值。實(shí)現(xiàn)以上要求也只不過是循環(huán)操作自變量、采集信號(hào),并最終保存數(shù)據(jù)供進(jìn)一步分析。Python簡(jiǎn)單直觀、沒有嚴(yán)格的語法限制,并且提供方便、實(shí)用的庫,很容易實(shí)現(xiàn)以上目的。

  此外,Python腳本非常容易修改。如果您隨后確定通過兩個(gè)自變量來采集信號(hào)而不是一個(gè)自變量,那么需要做的僅僅是將之前設(shè)計(jì)的循環(huán)嵌套到另一個(gè)循環(huán)之內(nèi)。可能只需幾行新代碼即可解決這一問題。得益于Python的高度可讀性,您很容易修改其他人編寫的腳本(對(duì)于LabVIEW應(yīng)用程序,我往往很害怕這么做)。

  隨著復(fù)雜度的增加,編程語言具有圖形語言無可比擬的優(yōu)勢(shì)。Python在數(shù)學(xué)運(yùn)算和數(shù)據(jù)分析方面非常優(yōu)秀,被數(shù)據(jù)科學(xué)工作者廣泛用于從龐大、復(fù)雜的數(shù)據(jù)中析取趨勢(shì)。許多人習(xí)慣依賴MATLAB進(jìn)行復(fù)雜的數(shù)據(jù)分析。實(shí)際上,Python是MATLAB的優(yōu)秀替代品(并且免費(fèi)),因?yàn)樗峁┝舜罅考嫒軲ATLAB的庫(如本文末尾的例子所示)。我往往首選Python over Excel進(jìn)行圖形繪制,除非圖形真的非常簡(jiǎn)單并且數(shù)據(jù)庫較小。如果您對(duì)使用Python進(jìn)行數(shù)據(jù)分析感興趣,我推薦Wes McKinney (O'Reilly Media)編寫的“Python for Data Analysis”(利用Python進(jìn)行數(shù)據(jù)分析),或者參加Udacity的免費(fèi)在線課程““Intro to Data Science”(數(shù)據(jù)科學(xué)入門)。

  如果您已經(jīng)使用過某種編程語言,那么您對(duì)我以上介紹的內(nèi)容不會(huì)存在任何問題,但您可能還不理解Python如何與實(shí)驗(yàn)室儀器通信。不用擔(dān)心,也有一個(gè)庫負(fù)責(zé)完成這項(xiàng)工作:PyVISA是一個(gè)非常容易使用的封裝庫,支持Python腳本連接到GPIB、RS232、USB以及以太網(wǎng)接口的儀器。

  LabVIEW仍然是采用用戶友好的GUI設(shè)計(jì)應(yīng)用程序的最佳選擇,過程沒有Python這么簡(jiǎn)單直接,但也不是特別困難。我選擇GUI工具往往是PyQT。如果您有興趣了解這方面的內(nèi)容,請(qǐng)參考Mark Summerfield (Pearson/Prentice Hall)編寫的“Rapid GUI Programming with Python and QT”(利用Python和QT快速GUI編程)。

  如果您希望學(xué)習(xí)Python,我建議參加大規(guī)模開放式網(wǎng)絡(luò)課程(MOOC),例如Udacity、Coursera或Udemy。入門級(jí)的編程課程往往是免費(fèi)的,由該領(lǐng)域最好的工程師和講師授課。Python只需極少的配置和淺顯的學(xué)習(xí),所以您在不到一天時(shí)間內(nèi)就能夠?qū)懗鲇杏玫某绦颉?/p>

  Mac和Linux用戶會(huì)發(fā)現(xiàn)終端中已經(jīng)可以使用Python,只需使用諸如pip等軟件包管理系統(tǒng)安裝更多的庫即可。對(duì)于Windows用戶,我推薦安裝Python(x,y),該軟件包中包含了面向科學(xué)的Python版本,提供了您可能需要的所有庫。我一般也安裝IPython,這是一款命令解析器(shell),允許在Python中執(zhí)行交互式運(yùn)算,使得開發(fā)新應(yīng)用程序更簡(jiǎn)單。

  [側(cè)欄結(jié)束]

  作者簡(jiǎn)介

  作者:Fabrizio Guerrieri,博士,技術(shù)團(tuán)隊(duì)資深成員,Maxim Integrated

  Fabrizio Guerrieri是Maxim Integrated公司技術(shù)團(tuán)隊(duì)的資深成員,是一名自成一統(tǒng)的全能型電氣工程師,在從IC設(shè)計(jì)到高級(jí)語言編程及產(chǎn)品營(yíng)銷領(lǐng)域都具有專業(yè)的知識(shí)和豐富的經(jīng)驗(yàn)。Fabrizio擁有意大利米蘭理工大學(xué)(Politecnico di Milano)電子工程博士學(xué)位。

  --關(guān)鍵詞:Python,實(shí)驗(yàn)室自動(dòng)化,Maxim,LabVIEW,圖形用戶界面,GUI,零下垂穩(wěn)壓器,下垂穩(wěn)壓器,載重線,Chroma 63201,Agilent 34970A


上一頁 1 2 下一頁

關(guān)鍵詞: Python LabVIEW

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉