呂品
(邯鋼邯鋼自動(dòng)化部)
摘 要:力標(biāo)準(zhǔn)機(jī)是國(guó)家統(tǒng)一力值的主要依據(jù),而設(shè)備配套的控制軟件一般不能及時(shí)隨著規(guī)程、規(guī)定等的更改而升級(jí),不能滿足檢定工作中出現(xiàn)的各種狀況。本文針對(duì)目前疊加式力標(biāo)準(zhǔn)機(jī)控制系統(tǒng)難以升級(jí)適應(yīng)新規(guī)、不能連接檢定系統(tǒng)等問(wèn)題,使用python語(yǔ)言,對(duì)控制系統(tǒng)進(jìn)行升級(jí),是系統(tǒng)具有良好的適應(yīng)性及擴(kuò)展性。
關(guān)鍵詞:Python;疊加式力標(biāo)準(zhǔn)機(jī);tkinter;pycharm
0 引言
力標(biāo)準(zhǔn)機(jī)是力學(xué)計(jì)量中對(duì)各種力傳感器、測(cè)力儀和稱重儀表進(jìn)行檢定或測(cè)試的設(shè)備,力標(biāo)準(zhǔn)機(jī)是力值計(jì)量的最高標(biāo)準(zhǔn),在保障力值的量值傳遞和溯源性方面具有非常重要的作用【1-3】。力標(biāo)準(zhǔn)機(jī)按結(jié)構(gòu)可以分為杠桿式、靜重式、液壓式和疊加式。疊加式力標(biāo)準(zhǔn)機(jī)(BFSM),是一種比對(duì)式標(biāo)準(zhǔn)機(jī),用一個(gè)比被測(cè)定傳感器精度高的傳感器作為標(biāo)準(zhǔn),與被測(cè)定的傳感器進(jìn)行串聯(lián),施加力值進(jìn)行比較,從而完成設(shè)備各項(xiàng)性能的測(cè)力。這種力標(biāo)準(zhǔn)機(jī)既能解決大力值傳感器的檢定問(wèn)題,又能保證比杠桿式力標(biāo)準(zhǔn)機(jī)高的精度,因此得到了比較廣泛的應(yīng)用。
由于疊加式力標(biāo)準(zhǔn)機(jī)系統(tǒng)由PC機(jī)、PLC、伺服電機(jī)、液壓系統(tǒng)、變頻模塊、數(shù)據(jù)采集卡等諸多元部件組成,一般均配套自動(dòng)控制軟件。然而,由于系統(tǒng)龐雜,價(jià)格昂貴,目前大部分設(shè)備較為陳舊,其控制軟件不能很好的適應(yīng)自動(dòng)化控制系統(tǒng)的發(fā)展,無(wú)法和辦公自動(dòng)化進(jìn)行數(shù)據(jù)傳輸,嚴(yán)重拖滯了檢定工作的效率。更為嚴(yán)重的是,當(dāng)相應(yīng)檢定規(guī)程、標(biāo)準(zhǔn)進(jìn)行更改時(shí),軟件不及時(shí)升級(jí)會(huì)造成檢定工作無(wú)法開(kāi)展。因此,使用python編程語(yǔ)言編寫(xiě)程序,對(duì)其控制系統(tǒng)進(jìn)行改造升級(jí),使系統(tǒng)具備良好的可擴(kuò)展性及易用性。
1 開(kāi)發(fā)環(huán)境的搭建
Python 一種面向?qū)ο蟆⒔忉屝汀?dòng)態(tài)數(shù)據(jù)類(lèi)型的優(yōu)秀高級(jí)通用程序設(shè)計(jì)語(yǔ)言,具有簡(jiǎn)潔性、易讀性以及可擴(kuò)展性,擁有大量功能強(qiáng)大的內(nèi)置對(duì)象、標(biāo)準(zhǔn)庫(kù)和擴(kuò)展庫(kù),適合完成各種高難度任務(wù),而且?guī)缀蹩梢栽谒械牟僮飨到y(tǒng)中運(yùn)行,雖然僅有十多年的發(fā)展歷史,深受廣大程序員喜愛(ài),很多著名的項(xiàng)目,例如谷歌的alphago項(xiàng)目,微軟的小冰,蘋(píng)果的siri,谷歌的無(wú)人駕駛,python在其中得到了良好的應(yīng)用。
1.1安裝python
Python也可在多種平臺(tái)開(kāi)發(fā)運(yùn)行首先,確定好操作系統(tǒng),Python 版本,系統(tǒng)64 位或者32位,在www.python.org找到相應(yīng)的下載包,進(jìn)行安裝。
本文以64位WINDOWS系統(tǒng)作,Python3.8.2為開(kāi)發(fā)平臺(tái)。
1.2 安裝庫(kù)文件
默認(rèn)的Python 程序通過(guò)命令行界面實(shí)現(xiàn),為了使程序便于使用,需要通過(guò)GUI 工具開(kāi)發(fā)圖形用戶接口來(lái)與用戶進(jìn)行交互。常用的Python 的GUI 開(kāi)發(fā)工具有tkinter、wxPython、PyQt 等。tkinter 是Python 標(biāo)準(zhǔn)庫(kù)的GUI 模塊,提供標(biāo)簽、按鈕、菜單等圖形接口,小巧輕便,能滿足日常的圖形用戶接口開(kāi)發(fā)要求。
由于系統(tǒng)還需要進(jìn)行數(shù)據(jù)繪圖,數(shù)據(jù)庫(kù)的配置及數(shù)據(jù)的讀寫(xiě),因此需要安裝相應(yīng)的庫(kù)文件來(lái)實(shí)現(xiàn)功能,本系統(tǒng)使用matplotlib、、pyodbc、mysql庫(kù)來(lái)實(shí)現(xiàn)上述功能。
通過(guò)使用pip命令安裝mysql ,安裝畫(huà)面如圖1。
Py –m pip install mysql
圖1 使用pip 命令安裝 mysql 庫(kù)文件
2 優(yōu)化系統(tǒng)
2.1 創(chuàng)建Bfsm項(xiàng)目和應(yīng)用
PyCharm 是一款功能強(qiáng)大的 Python 編輯器,帶有一整套可以幫助用戶在使用Python語(yǔ)言開(kāi)發(fā)時(shí)提高其效率的工具,比如調(diào)試、語(yǔ)法高亮、Project管理、代碼跳轉(zhuǎn)、智能提示、自動(dòng)完成、單元測(cè)試、版本控制。本項(xiàng)目使用pycharm創(chuàng)建項(xiàng)目。
首先,進(jìn)入PyCharm官網(wǎng)進(jìn)行程序下載安裝程序。然后打開(kāi)程序,點(diǎn)擊Create New Project,選擇Location的路徑,建立編譯環(huán)境,右鍵點(diǎn)擊“python_pycharm”選擇“New”,選擇“python file”,以此建立main.py,test.py,ver.py,record.py等文件。
之后,配置解釋器。點(diǎn)擊“File”,選擇“Settings”,點(diǎn)擊“Project:bfsm”,在“Project Interpreter”頁(yè)面點(diǎn)擊“+”按鈕,在打開(kāi)頁(yè)面中搜索“mysql”,點(diǎn)擊“Apply”。
項(xiàng)目結(jié)構(gòu)如圖2。
圖2 pycharm下項(xiàng)目結(jié)構(gòu)
2.2 項(xiàng)目模塊劃分及實(shí)現(xiàn)
通過(guò)對(duì)現(xiàn)有疊加式力標(biāo)準(zhǔn)機(jī)控制系統(tǒng)的分析,新增自動(dòng)檢定程序、檢定證書(shū)模板設(shè)置、檢定記錄模板設(shè)置三個(gè)模塊,以適應(yīng)規(guī)程規(guī)章的更改、批量進(jìn)行檢定等檢定狀況。
2.2.1自動(dòng)檢定程序模塊
原檢定程序每次檢定前,都需要輸入檢定規(guī)程、規(guī)格型號(hào)、產(chǎn)品編號(hào)、 測(cè)量范圍、執(zhí)行標(biāo)準(zhǔn)、試驗(yàn)類(lèi)型、預(yù)加荷力、檢測(cè)點(diǎn)數(shù)、檢測(cè)次數(shù)、 溫度、濕度、報(bào)告編號(hào)、證書(shū)編號(hào)等大量參數(shù),而且同型號(hào)儀表進(jìn)行檢定時(shí)每一個(gè)都需要輸入相似的內(nèi)容,耗用大量人力成本,效率低下。更改后新增自動(dòng)檢定功能,當(dāng)輸入檢定儀表型號(hào)后,參數(shù)會(huì)根據(jù)規(guī)程規(guī)定自動(dòng)設(shè)置,無(wú)特殊需求無(wú)需手動(dòng)依次更改各個(gè)選型直接進(jìn)入檢定程序。同時(shí)可以選擇個(gè)體檢定或批量檢定,當(dāng)選擇批量檢定時(shí),系統(tǒng)依據(jù)設(shè)置自動(dòng)為每個(gè)儀表進(jìn)行編號(hào)。
2.2.2檢定證書(shū)模板設(shè)置模塊
原系統(tǒng)檢定證書(shū)格式不能修改,無(wú)法根據(jù)不同儀表、委托方要求及規(guī)程更改而改動(dòng),因此,新增檢定證書(shū)模板設(shè)置模塊,可以按照不同檢定情況變更檢定證書(shū)頁(yè)數(shù)及內(nèi)容樣式,其設(shè)置模塊畫(huà)面如圖3所示。
圖3 檢定證書(shū)模板設(shè)置頁(yè)面
2.2.3檢定記錄模板設(shè)置模塊
檢定記錄模板設(shè)置模塊同檢定證書(shū)模板設(shè)置模塊,可以在檢測(cè)儀表、檢定要求、檢定狀態(tài)變更時(shí)修改記錄內(nèi)容,以適應(yīng)不同檢定狀況。
2.3 項(xiàng)目數(shù)據(jù)庫(kù)配置
使用Python進(jìn)行數(shù)據(jù)庫(kù)操作,需要安裝相應(yīng)的數(shù)據(jù)庫(kù)庫(kù)文件,python針對(duì)不同的數(shù)據(jù)庫(kù)有不同的模塊,如mysql來(lái)接和操作MySQL數(shù)據(jù)庫(kù),cx_oracle來(lái)連接和操作oracle數(shù)據(jù)庫(kù)。本項(xiàng)目使用mysql數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)疊加式力標(biāo)準(zhǔn)機(jī)系統(tǒng)數(shù)據(jù),通過(guò)mysql庫(kù)文件在Python環(huán)境中進(jìn)行數(shù)據(jù)庫(kù)管理、數(shù)據(jù)查詢、數(shù)據(jù)操作等活動(dòng)。
Python連接數(shù)據(jù)庫(kù)包括引入應(yīng)用程序編程接口模塊、連接數(shù)據(jù)庫(kù)、執(zhí)行SQL語(yǔ)句和存儲(chǔ)過(guò)程、關(guān)閉數(shù)據(jù)庫(kù)四個(gè)步驟。
連接數(shù)據(jù)庫(kù)需使用連接函數(shù)connect。Connect函數(shù) 使用connect方法生成connect對(duì)象,再使用此對(duì)象訪問(wèn)所需要訪問(wèn)的數(shù)據(jù)庫(kù),代碼如下:
try:
conn=smsql.connect(host=' localhost',user='admin' ,passwd='admin ',db='machine' )
except Exception.e:
print e
sys.exit 0
然后用這個(gè)對(duì)象定義一個(gè)游標(biāo),對(duì)數(shù)據(jù)庫(kù)的增、刪、改,就要通過(guò)這個(gè)游標(biāo)來(lái)實(shí)現(xiàn),獲取cursor對(duì)象代碼如下:
cursor=conn.cursor 0
之后用游標(biāo)執(zhí)行“execute”方法進(jìn)行查詢,“fetchall”方法執(zhí)行取結(jié)果。
2.4 項(xiàng)目打包
python 開(kāi)發(fā)的程序需要在已安裝Python 以及相關(guān)第三方模塊的計(jì)算機(jī)上運(yùn)行。為了使程序能夠在沒(méi)有安裝Python的計(jì)算機(jī)上直接運(yùn)行,需要通過(guò)第三方模塊pyinstaller 將開(kāi)發(fā)好的Python 程序打包成一個(gè)可執(zhí)行文件。經(jīng)過(guò)pyinstaller打包后的exe 程序可以復(fù)制到其他32 位或64 位的計(jì)算機(jī)上運(yùn)行。
在windows控制臺(tái)下 輸入命令如下命令進(jìn)行pyinstaller模塊安裝:
py –m pip install pyinstaller
在python中輸入如下命令進(jìn)行程序打包:
pyinstaller –F d:\bfsm\main.py –noconsole
3 結(jié)語(yǔ)
通過(guò)使用python編程語(yǔ)言,搭建pycharm編程環(huán)境,安裝gui等庫(kù)文件,對(duì)疊加式力標(biāo)準(zhǔn)機(jī)系統(tǒng)進(jìn)行了升級(jí)改造。新系統(tǒng)具備自升級(jí)功能,能很好的與外部應(yīng)用程序進(jìn)行數(shù)據(jù)傳輸,提高了系統(tǒng)自動(dòng)化水平,使檢定工作的效率得到大幅提升。
參考文獻(xiàn)
[1] 沙樹(shù)靜.國(guó)家基準(zhǔn)機(jī)力值控制問(wèn)題的研究與應(yīng)用[D].吉林:吉林大學(xué),2004.
[2] 劉士平.全自動(dòng)疊加式力標(biāo)準(zhǔn)機(jī)的控制技術(shù)[I].自動(dòng)化儀表,1999,(1O).
[3] 謝顯奇.疊加式力標(biāo)準(zhǔn)機(jī)應(yīng)用技術(shù)研究[J].衡器,2003,(1).
[4] 劉衛(wèi)國(guó). Python語(yǔ)言程序設(shè)計(jì)[M]. 北京: 電子工業(yè)出版社, 2016.
[5] 洪錦魁.PythonGUI 設(shè)計(jì)tkinter 菜鳥(niǎo)編程[M]. 北京:清華大學(xué)出版社,2019,8(1):64-70.
[6] Di Giacomo M.MySQL:Lessons Learned on aDigital Library[J].IEEE Software,2005,22(3):