目錄
第一章 緒論 1
1.1課題來源 1
1.2課題背景及意義 1
1.3國內外研究現狀 2
1.4研究內容及研究路線 4
第二章 軸承信息管理系統需求分析與總體設計 6
2.1軸承選型的影響因素 6
2.2需求分析 7
2.3系統組織架構與開發環境 12
2.4系統模塊設計 15
2.5系統流程分析 18
2.6數據庫設計 19
2.7數據庫優化 26
2.8本章小結 28
第三章 軸承信息管理系統后端詳細設計與實現 29
3.1用戶管理模塊 29
3.2軸承數據管理模塊 42
3.3信息管理模塊 49
3.4系統管理模塊 53
3.5本章小結 57
第四章 軸承信息管理系統后端的測試與分析 58
4.1測試方案 58
4.2功能測試 58
4.3性能測試 63
4.4測試結果分析 64
4.5本章小結 64
第五章 滾動軸承壽命計算系統的設計實現 65
5.1滾動軸承疲勞壽命計算理論分析 65
5.2滾動軸承壽命計算系統的設計 70
5.3滾動軸承壽命計算系統的實現 73
5.4滾動軸承壽命計算系統的驗證 75
5.5本章小結 76
第六章 總結與展望 77
6.1總結 77
6.2展望 77
參考文獻 78
致謝 80
個人簡介 81
第一章 緒論
本章主要闡述了課題的研究背景與國內外的研究現狀,并對當前軸承設計與選型工作方面存 在的問題及企業現實需求進行了分析,明確了課題的研究目的和意義,最后介紹了論文的主要研 究內容和研究路線。
1.1課題來源
本課題項目來源于寧夏大學機械工程學院與貝銀(銀川)軸承研究院有限公司合作開發的“軸 承信息管理系統項目”。
1.2課題背景及意義
隨著時代的進步與科技的不斷發展,我們步入了以互聯網為核心的信息化社會。經濟全球化、 社會信息化的浪潮,不僅使人類社會歷史發展的進程大大加快,而且日益改變著人們的工作生活 和思維方式[1]。當前信息化經濟已經成為引領我國高質量發展的新引擎,為傳統產業的信息化發 展提供了強大的動力支撐。傳統的設計方法與技術已經不能適應傳統行業發展的現實需求,所以 作為我國傳統產業代表的機械行業急需借助信息化技術實現產業變革與升級,在嚴峻的國際競爭 中搶占先機。
軸承作為機械行業的基礎零部件,廣泛應用于交通運輸、精密器械、航空航天、農業機械等 領域。它的主要主要作用是支撐機械旋轉體旋轉的同時降低其摩擦系數,并保證機械旋轉體的回 轉精度[2],使機械結構得以穩定、高效地運行。軸承主要分為滑動軸承、滾動軸承、關節軸承三 大類,此外為滿足部分特色行業的實際需求,軸承又在上述三大種類的基礎上劃分為標準軸承與 非標準軸承,這就使得同一公稱型號的軸承因材料或用途不同導致其工作特性數據不同,因此軸 承的數據信息具有復雜多樣的特點。
軸承設計與選型工作作為機械產品設計工作的一部分,主要包括軸承的型號選取、尺寸設計、 壽命計算等工作,需要設計人員擁有廣博的專業學識與豐富的設計經驗。此外,因機械產品應用 廣泛,結構復雜多樣,所用到的軸承也多種多樣,所以設計研發人員在機械產品的設計過程中需 要來回查閱機械設計手冊和軸承知識資料,繁復的工作使得設計研發人員工作任務繁重、效率低 下、錯誤率高,很難將自己的主要精力投入到新產品的研發中去,致使我國的機械產品在面對國 外競爭時存在巨大劣勢,跟不上市場的需求。因此,有必要設計開發一款以軸承數據及軸承相關 知識為核心的軸承信息管理系統,管理儲存如軸承外形尺寸、公稱型號、游隙公差等標準與非標 準化的參數數據和軸承相關知識資料,在方便設計人員設計工作的同時,對提升軸承數據資源的 管理水平,更好地推動我國軸承行業的信息化建設有著重要意義。
當前我國部分軸承企業自身或聯合其他互聯網公司開發了一些軸承信息管理系統,管理存儲 著國內外不同軸承廠商的軸承數據參數或面向某一特色行業的軸承數據參數,提供給設計人員使 用。這在一定程度上提高了設計人員的工作效率和企業的數據管理水平。但還存在很多問題,如 系統所存軸承數據量不足、軸承范圍覆蓋面小、無其他軸承知識拓展等,通用性較弱,難以滿足 設計人員的數據設計需求;系統兼容性差、可拓展性較低、操作復雜,部分系統為老式單機系統, 不支持數據更新,難以適應信息化發展的需要;部分系統不支持公網共享,只可本企業使用,共 享性較弱;此外部分系統還存在信息安全性問題,嚴重干擾設計人員的工作。所以國內許多設計 人員在工作中經常往返于多個軸承信息管理系統及紙質資料的查詢、參數選擇、壽命校核等工作, 嚴重降低了工作人員的效率,延長了機械產品的設計周期。
因此,本課題針對上述問題及企業實際需要,結合計算機技術,使用Python語言,Flask框 架,MySQL數據庫,Swagger工具、Tkinter工具等設計開發了軸承信息管理系統后端部分及軸 承壽命計算系統。不僅實現了軸承數據資源的信息化管理、軸承數據資源的實時統計可視化、軸 承知識庫以及軸承壽命計算等功能,還為設計研發人員提供了充足、準確的數據支持與計算服務, 使得設計人員可以更加便捷地進行機械設計工作,提高了工作效率,對我國軸承信息的管理水平 和企業競爭力的提升有著重要的意義。
1.3國內外研究現狀
1.3.1國內研究現狀
我國軸承行業起步較晚,經過五十多年的發展,直到進入 21世紀才逐漸追上主流軸承發達 國家的技術水平[3]。近些年來,軸承行業受益于國家振興裝備制造業的大環境發展迅速,已在一 些方面取得了開創性成果。如以神舟系列為代表的航空航天軸承與其他國防裝備軸承均實現了自 研自產。國家為了軸承行業的發展,大力扶持河南科技大學,洛陽軸承研究所、中機十院等教學 科研單位,對軸承信息化管理工作開展技術與理論上的深化研究[4]。很多軸承企業也根據自身實 際情況選擇與互聯網公司合作,合作開發如軸承的生產管理、質量管理、故障診斷、全生命周期 管理等方面的應用軟件。
李俊源等使用SmarTeam軟件為平臺,開發了以企業資源為核心的的特種軸承產品數據管理 系統,并拓展了 SmarTeam的接口功能,實現產品數據與企業資源的共享[5]。張興亮等利用Access 數據庫結合AutoCad軟件開發了集軸承數據添加、刪除、修改、查詢及權限管理、精確查詢、 模糊查詢等功能的滾動軸承自動化查詢管理軟件系統,為設計人員方便選擇軸承提供了便利[6]。 董英斌等使用C++Builder軟件開發了滾動軸承信號檢測數據存儲管理系統,可對鐵路機車車輛 輪對滾動軸承進行不解體現場檢修[7],提升了檢修效率,也確保了行車安全。胡欣欣利用可拓基 元理論技術與統一建模語言UML,設計了基于B/S的軸承知識管理系統,使得軸承生產更具智 能化,同時也提升了研發人員的工作效率及企業的競爭力[8]。李育基于C/S架構,使用VC6.0與 SQL 數據庫構建了滾動軸承在線質量管理系統,對滾動軸承的生產質量控制有著積極的作用[9]。 張海燕以C++Builder為平臺結合智能推理技術,以軸承磨削加工工藝為導向,設計了軸承磨削 工藝管理系統,實現了軸承磨削加工方案的智能化選擇[10]。孫穎采用SSM框架等技術,針對鐵 路行業軸承存在檢修困難、選配方式不合理等問題,開發了具有鐵路特色的軸承選配與出入庫系 統,對鐵路行業信息化建設的提升具有重大意義[11]。劉志巍等利用計算機輔助元件選擇技術和專 家系統技術,設計了在線軸承智能選擇專家系統。用戶只需要輸入系統要求的數據,系統就會根 據所輸數據進行合理推算驗證,將符合要求的軸承數據提供給用戶[12]。黃方毅等采用B/S模式,.net 技術開發了軸承零件庫服務系統。該系統封裝了部分 2D/3D 零件庫參數和可拓展語言組織與管 理技術[13]。郭劍鋒和顧復等針對 Web 零件庫存在數據量大及異構性問題,建立了以面向零件信 息的資源本體模型,進而實現了資源的拓展關聯搜索,提升了互聯網零件庫的使用效率[14-15]。鄧 哲等針對當前市面上沒有統一的標準軸承庫,使用 Python 與 MySQL 數據庫及 MATLAB 開發了 一個可共享、可拓展的滾動軸承資源庫系統,為設計人員的設計工作提供了新思路[16]。許明莉基 于 PLM 理念,采用 Visual Studio 及 SQL 數據庫,開發了一個全壽命周期的高速精密數控機床軸 承全生命周期數據管理系統[17]。中華軸承網提供集網上在線軸承型號查詢、軸承產品交易、軸承 交流論壇為一體的大型軸承網站。提供精確查詢及模糊查詢兩種查詢方式,新舊型號查詢、國內 外軸承品牌查詢等方式為用戶提供服務[18]。LYC軸承公司開發了專用的進銷存系統BYCBMS, 可用于企業軸承的采購、銷售、庫存管理、風險評估等[19]。
1.3.2國外研究現狀
國外軸承行業發展較好,誕生了許多著名的軸承企業,如瑞典的 SKF 集團、日本的 NSK 集 團、德國的 FAG 集團等。他們的技術先進,設計水平及自動化程度也較高,生產、設計數據的 管理水平也較完善,主要體現在高精端、行業特色軸承的設計制造、故障診斷、壽命管理等方面。
Sous.C 等學者采用聲發射信號評估與機器學習方法搭建滑動軸承的多變量磨損行為監測系 統,基于卷積神經網絡深度學習的方法對滑動軸承的磨損進行監控[20]。 Li Shih-Yu 等應用數據映 射策略和K近鄰(K-NN)算法,開發了一套集特征產生、提取和選擇于一體的智能軸承故障診 斷系統。可對工業常用的軸承進行故障診斷并收集信息分析,為軸承故障信息管理提供了新的參 考方法[21]。美國波音公司的 DCAC/MRM 工程,是基于飛機的自潤滑關節軸承質量與壽命管理系 統,為全球航空行業軸承的選購、質量監測、壽命評估提供了技術支撐[22]。 Justice, Karleine M 等 專家學者使用 Simulink 工具對所研究的軸承裝置進行建模,從溫度、轉速等方面計算熱負荷, 并在此基礎上設計了以分析熱載荷與潤滑因素的軸承熱管理系統[23]。 Zhang yi chi 等利用聲學照 相機的方式,將采集到的軸承運行數據進行 Hilbert 變換,提取軸承故障沖擊間隔頻率同理論故 障頻率進行比對,識別軸承故障信息[24]。美國的 Hiroshi Ueno、 Tondabayashi 提出了將信號采集 裝置鑲嵌在軸承上,將軸承運行數據進行采集分析,對軸承信息管理、軸承系統構建等各方面都 有便利的改善[25]。
綜上所述,當前我國軸承行業相比建國初期已取得了長足的進步,在部分領域已經達到了世 界先進水平,但我國的軸承行業的信息化進程還遠遠落后于世界主流軸承強國,主要體現在大部 分軸承信息化系統應用致力于軸承的日常應用方面,如提供標準或非標準軸承數據的查詢、軸承 產品的進產銷管理、軸承故障診斷、軸承生命周期管理等功能,與國外軸承產業高端智能化的發 展存在較大差距。因此,亟需設計開發一款以軸承數據資源為核心,集軸承數據管理、軸承數據 實時統計分析、軸承知識庫、壽命計算等功能為一體的軸承信息管理系統,來提高設計人員的工 作效率,提升我國軸承信息化管理水平。
1.4研究內容及研究路線
1.4.1研究內容
本文通過對當前國內軸承數據管理現狀進行分析,同時結合企業的實際需求,完成了軸承信 息管理系統后端的設計開發工作。本文從系統實際需求出發,通過建立系統用戶角色用例模型闡 釋了用戶管理、軸承管理、信息管理、系統管理四個模塊及壽命計算系統的具體功能。然后根據 系統功能與系統業務實體,使用 Pycharm 和 MySQL 構建了系統數據庫。此外,通過使用緩存 Redis 及數據庫優化等方式提升了系統性能;研究了滾動軸承壽命計算的理論與方法;使用 Swagger 在線文檔工具實現后端接口可視化,為前后端分離開發提供了規范的接口文檔;對系統 的重要業務功能邏輯包括權限管理、軸承數據增加、審核、查詢、導出;軸承字段的管理,系統 首頁軸承數據統計、軸承壽命計算地實現進行了詳細設計,并完成了系統各模塊功能、性能測試。
論文章節研究內容如下:
本文一共通過六章的內容對軸承信息管理系統后端的設計與實現做了詳細的敘述,其重點在 第二、三章,主要敘述了系統整體設計及系統后端各模塊的詳細設計與實現;
第一章,緒論。本章主要討論了課題的研究背景和軸承行業與技術的發展現狀,介紹了課題 的主要研究內容和實際意義;
第二章,系統需求分析與總體設計。首先,本章分析了機械設計中不同類型軸承設計選型的 影響因素,得到軸承信息管理系統的系統需求,然后使用用例模型闡釋不同用戶角色擁有的系統 功能。其次,介紹了系統的開發環境和系統組織架構,完成系統各模塊的大致設計并對各模塊的 功能進行了簡單描述。最后,對系統的業務流程進行了介紹,完成系統數據庫的設計與優化工作;
第三章,軸承信息管理系統后端的詳細設計與實現。本章對系統四大功能模塊進行詳細設計 與實現,通過使用類圖、時序圖、流程圖等方式詳細介紹了系統后端業務功能邏輯的實現過程。 使用 Swagger 在線文檔工具設計完成前后端接口的交互工作,完成用戶管理模塊、軸承數據管理 模塊、信息管理模塊、系統管理模塊的詳細設計與實現;
第四章,系統后端測試與分析。本章主要完成了系統后端部分的測試與分析,闡述了測試目 標、測試方法;設計測試方案,對系統后端各模塊進行功能與性能測試,并分析了測試結果;
第五章,壽命計算系統的設計實現。本章完成了滾動軸承壽命計算系統的設計實現。首先介 紹了滾動軸承壽命計算的發展進程,選定本系統壽命計算系統的計算方法,并對計算方法的參數 進行了介紹分析。其次,對滾動軸承壽命計算系統的工作流程進行了闡述,并明確了系統的所需 參數組成。最后,通過 Tkinter 工具設計實現了滾動軸承壽命計算系統,然后對所設計的軸承壽 命計算系統進行驗算測試并對計算結果進行了分析;
第六章,總結與展望。本章主要總結了軸承信息管理系統的設計實現工作,并對系統未來的 工作進行展望。
1.4.2研究路線
論文的研究路線如圖 1-1 所示。
圖 1-1 研究路線圖
第二章 軸承信息管理系統需求分析與總體設計
在設計系統前,需要對系統總體需求進行了解。本章從軸承選型影響因素出發,分析系統需 求以及系統應具備的功能,并結合用戶角色用例模型來闡述,然后搭建系統框架,對系統各模塊 的功能進行簡單介紹,最后完成系統數據庫的設計與優化工作。
2.1軸承選型的影響因素
在機械設計過程中,軸承的設計與選型是至關重要的,合適的軸承可以使機械設備平穩、高 效的運轉;不合適的軸承不僅會使機械設備產生噪聲、震動等狀況,甚至還會使機械設備提前報 廢,因此設計人員需要為機械設備選擇合適的軸承。當前軸承根據結構、使用場合的不同主要分 為滾動軸承、滑動軸承與關節軸承。滾動軸承因其適用范圍廣、標準化程度高,現已大批量生產 使用。滑動軸承因其在工作中產生的是滑動摩擦,所以其適用于高速輕載工況。關節軸承在工作 時可以任意角度旋轉擺動,其體積小,結構簡單,承載能力強。因此,不同類型的軸承在設計選 型過程中要考慮軸承的使用場合、機械結構等影響因素。
2.1.1滾動軸承設計選型的影響因素
滾動軸承設計選型的影響因素主要從軸承的載荷條件、工作轉速、調心性能、工作允許空間、 裝調性能、經濟性等方面進行考慮。
(1) 載荷條件:滾動軸承承受工作載荷一般從載荷的大小、方向與性質進行考慮。球軸承 適用于輕、中型載荷及運行平穩工況;滾子軸承適用于重型載荷及沖擊工況。軸承僅承受徑向載 荷時,使用向心軸承;僅承受軸向載荷時,使用推力軸承;軸承同時承受徑向載荷與軸向載荷時, 選用角接觸軸承或圓錐滾子軸承或使用向心軸承與推力軸承組合的方式。
(2) 工作轉速:每種類型的軸承都有其極限轉速,在尺寸與精度相同的情況下,球軸承的 極限轉速比滾子軸承高,所以在轉速較高場合選用球軸承;當軸承轉速較高且軸承載荷不大時使 用角接觸球軸承或深溝球軸承。此外,軸承的尺寸也會影響軸承的轉速,一般情況下,尺寸越小, 極限轉速越高。
(3) 調心性能:在實際工作中,軸和軸承座在軸承受負荷產生撓曲或軸承箱的座孔沒有加 工成同一高度時會產生角度誤差,角度誤差的產生會嚴重影響軸承壽命,所以為了將產生的角度 誤差控制在極限范圍內,一般選用調心類軸承,如調心球軸承或調心滾子軸承。
(4) 工作允許空間:在機械設計過程中,軸徑是最先確認的參數之一,一般是先確認軸徑, 再選取軸承。軸徑較小時,選用球軸承;軸徑較大時,選用滾子軸承。此外,考慮實際工作條件, 當軸向尺寸受限時,使用窄軸承;當徑向尺寸受限時,選用滾動體較小的軸承或滾針軸承。
(5) 裝調性能:對于內外圈可分離的圓錐滾子或圓柱滾子軸承,其裝拆較方便。
(6) 經濟性:一般情況下,在滿足軸承使用要求的前提下,選用價格較低的軸承,球軸承 較滾子軸承價格低,精度低的軸承較精度高的軸承價格低。
2.1.2滑動軸承設計選型的影響因素
滑動軸承設計選型的影響因素主要從載荷方向、裝拆難易、軸承材料等方面來考慮。
(1)載荷方向:滑動軸承按承受載荷方向的不同分為承受徑向載荷的徑向軸承和承受軸承 載荷的止推軸承。
(2)裝拆難易:滑動軸承按結構可分為整體式徑向滑動軸承、剖分式徑向滑動軸承。整體 式徑向滑動軸承結構簡單,成本低廉,但其裝拆不方便。剖分式徑向滑動軸承裝拆方便,還可以 通過增減剖分面上的墊片調整接觸間隙。
(3)軸承材料:對于滑動軸承,軸瓦和軸承襯的材料統稱軸承材料。常用的軸承材料主要 分為金屬材料,如軸承合金、銅合金、鋁基合金等;多孔質金屬材料,如多孔鐵、多孔質青銅; 非金屬材料,如工程塑料、碳-石墨等。金屬材料具有較高強度,較好減、耐磨性;多孔質金屬 材料多用于含油軸承及低速平穩無沖擊情況;非金屬材料多用于腐蝕、高溫、嵌入性好的環境下。
2.1.3關節軸承設計選型的影響因素
關節軸承設計選型的影響因素主要從承受載荷、工作溫度以及環境要求來考慮。
(1)承受載荷:向心關節軸承適用于承受徑向載荷或主要承受徑向載荷;推力關節軸承適 用于承受軸向載荷;角接觸關節軸承適用于承受徑向軸向聯合載荷。
(2)工作溫度:不同材料制造的關節軸承可在不同溫度下工作。工作溫度較低時,可選用 鋼對鋼摩擦副的關節軸承;工作溫度適中時,可選用聚氨酯關節軸承;工作溫度超高時,可選用 無磁耐高溫合金鋼關節軸承。
(3)環境要求:關節軸承的環境要求一般包括防塵與防腐。在不需要防塵的情況下,選用 不帶密封圈的關節軸承;在環境塵埃較多或對防塵要求較高的情況下,選用帶密封圈的關節軸承。 關節軸承一般都具有一定的防腐屬性,但對于強腐蝕環境下,選用不銹鋼材料或高分子塑料做成 的關節軸承,并進行鍍鎳處理。
2.2需求分析
良好的需求分析不僅能夠使開發人員快速、準確地理解開發任務,還能提高開發的效率,更 好地完成工作。需求分析一般分為系統信息需求、功能性需求和非功能性需求。系統信息需求是 指系統運行需要什么數據信息;功能性需求是指系統可為用戶提供什么功能服務;非功能性需求 是指系統除功能性需求與信息需求以外必須具有的特性。
2.2.1系統信息需求
系統的平穩運行需要數據信息來傳遞支撐。本系統的數據信息主要分為用戶信息、軸承信息 以及知識庫信息。
(1)用戶信息:用戶信息主要包括所有系統用戶的信息,如用戶ID、用戶名、系統角色、
昵稱、密碼、郵箱、工作單位、部門、聯系方式、系統操作權限等。本系統為方便系統的系統的 管理與日常運行,將用戶角色分為超級管理員、普通管理員、品牌管理員與普通用戶四類,不同 用戶角色所擁有的角色不同,所賦予的系統權限也不同。
(2)軸承信息:本系統的軸承信息主要包括滾動軸承、滑動軸承、關節軸承三大類。其中, 滾動軸承主要存儲以 GB/T 271-2017《滾動軸承 分類》為基礎的 13 類滾動軸承。下面以滾動 軸承為例,闡述其具體的軸承數據信息。圖 2-1 展示了深溝球軸承的主要結構參數。表 2.1 列出 了深溝球軸承的主要信息參數。軸承信息除了表 2.1 所列信息參數之外,還有如額定動載荷、額 定靜載荷、系數、質量等數據信息。
圖 2-1 深溝球軸承主要結構參數圖 表 2.1 深溝球軸承主要信息參數
名稱 代號 名稱 代號 名稱 代號
外徑 D 止動環槽內徑 D1 重量 kg
倒角 止動環槽倒角 Yn 安裝尺寸 Da
球層心直徑 dy 止動環尺寸 D2 安裝尺寸 Dx
帶止動環槽 N 止動環寬度 f 系數 f0
帶止動環 NR 安裝尺寸 da 安裝尺寸 CY
(3)知識庫信息:知識庫信息主要包括一些軸承的基本知識,如軸承的選型方法、軸承尺 寸的選擇方法、軸承的配合與游隙、軸承的潤滑、防銹方法、軸承國家標準等內容。
2.2.2功能性需求
考慮到設計人員在機械設計過程中對軸承設計與選型的上述需求,為提高設計人員的工作效 率,本系統應為設計人員提供詳細、便捷、準確的軸承數據資源服務。因軸承資源較多,為有效 整合軸承數據資源,方便設計人員使用,系統應提供軸承知識庫服務,存儲一些與軸承相關的知 識。此外,為更好地管理維護系統,系統應添加系統管理員,并設置系統日志。
根據上述需求,軸承信息管理系統主要包括系統用戶管理;軸承數據資源的審核、導入、導 出、添加、刪除、修改和查詢;軸承數據的實時統計以及圖表化展示;軸承知識庫、軸承字段管 理;軸承壽命計算;用戶日志管理等功能。軸承信息管理系統功能具體如下:
(1)用戶管理:用戶管理功能包括用戶登錄、登出系統;管理賬號信息和權限管理。超級 管理員擁有系統的最高權限,可添加、刪除用戶;查詢、修改用戶信息并可依據系統實際需要賦 予用戶不同的權限。
(2)軸承數據的審核、導出:系統管理員需對添加或修改的軸承數據進行審核操作,對于 符合系統要求的數據給與審核通過操作;對于不符合系統要求的數據,管理員給與未審核通過的 操作并附帶未通過原因。管理員和被管理員授予數據可導出權限的用戶可從系統數據庫導出軸承 數據,導出數據的格式為XLS文件格式。
(3)軸承數據的添加、修改、刪除、查詢:系統管理員可向系統數據庫添加、刪除、查詢、 修改軸承數據。普通用戶可查詢軸承數據。
(4)系統數據的即時統計:系統實時統計數據,如軸承數量、軸承種類、軸承品牌、軸承 知識庫數量等,為用戶提供較直觀的展示。
(5)系統數據的圖表化展示:系統會將系統數據以柱狀圖、折線圖、旭日圖等方式展示給 用戶,如系統近七日的軸承數據錄入趨勢、軸承的品牌分布、軸承類別旭日圖等。
(6)軸承知識庫、軸承字段管理:軸承知識庫主要是為用戶提供豐富的軸承知識,如軸承 標準、軸承安裝規范、軸承選型標準、軸承校核方法等。設置軸承字段的目的是豐富拓展軸承信 息管理系統的軸承數據種類,當需要對系統數據庫做出一定改變時,可直接修改軸承字段滿足系 統需要。管理員可管理系統的軸承知識庫資料及軸承字段。普通用戶可查看軸承知識庫。
(7)軸承壽命計算:軸承壽命計算主要為用戶提供滾動軸承壽命校核功能,用戶可通過輸 入軸承基本參數和軸承工況參數完成軸承壽命校核。
(8)用戶日志管理:用戶日志分為登錄日志和操作日志。登錄日志主要存儲用戶登錄信息, 如用戶名、登錄時間、登錄IP等,管理員可通過查詢用戶名等方式查看登錄日志;操作日志主 要存儲用戶操作信息,如用戶名、操作時間等信息,管理員可通過查詢用戶名等方式查看操作日 志。此外系統管理員還可以將用戶登錄記錄及操作記錄導出。
為更加清楚地展示系統功能、人員活動以及系統信息流之間的邏輯關系,本文使用了 IDEF0 模型的方法。軸承信息管理系統的業務活動主要分為軸承設計使用與人員管理使用,系統IDEF0 模型如圖 2-2 所示。
圖 2-2 軸承信息管理系統 IDEF0 模型圖
因系統擁有管理員與普通用戶角色,所以為更直觀的展示不同系統角色擁有的系統功能,下 面使用角色用例模型來闡述不同角色擁有的系統功能。普通用戶角色是指不參與管理系統事務, 只可使用部分系統功能的用戶,其接受系統管理員的領導管理,擁有系統最低級別的權限。根據 上述分析的系統功能,普通用戶角色用例圖如圖2-3所示。
J 系統邊界 登出系
廠 include
i用戶管理)^---'include--看賬戶信,
'參改賬戶信
\ ,.include-<i»^!^ lncu 出軸承數
6v 益y:::wY15軸承知Q
jn elude,. — 、
看軸承圖片打)
1系統管理) include…系統首頁統計
(計算管理) include…承壽命計
圖 2-3 普通用戶角色用例圖
軸承信息管理系統中,管理員角色負責用戶管理、軸承管理、信息管理、系統管理、數據管 理維護等工作。當前管理員角色分為超級管理員、普通管理員和品牌管理員。超級管理員、普通
管理員、品牌管理員的權限是逐級遞減的。超級管理員可以管理系統除超級管理員以外的所有用 戶,其主要負責管理系統其他管理員以及維護系統正常運行。普通管理員主要負責管理其他普通 用戶以及新添加或修改軸承數據的審核工作。品牌管理員主要負責其所屬品牌軸承數據的管理與 維護工作。管理員角色用例圖如圖 2-4 所示。
2.2.3非功能性需求
設計系統,不僅要考慮到為滿足不同業務功能而要有的功能,還要考慮到系統的非功能性需 求。本系統的非功能性需求主要分為性能、安全、易用與拓展需求。
1.性能需求:主要包括系統響應時間、系統并發數量及信息容量等。
(1)響應時間:系統響應時間是指從用戶向系統發送請求,再到系統響應用戶請求所消耗的時
間。響應時間過長,會影響用戶體驗,所以為了使系統用戶擁有良好的使用體驗,系統響應時間 一般越小越好。系統測試響應2-5-10準則如表2.2所示,所以為給系統用戶帶來較好的使用體驗, 本系統響應時間要求小于2 秒。
表 2.2 系統測試響應 2-5-10 準則
系統響應時間 用戶體驗
小于 2 秒 體驗較好
大于 2 秒小于 5 秒 體驗一般
大于 5 秒小于 10 秒 體驗糟糕
(2)并發數量:系統的并發數量一般是指每秒系統可承受的業務并發用戶數。根據貝銀(銀川) 軸承研究院對系統上線初期的業務評估以及專業人士的建議,系統上線初期,系統用戶數控制在 200 人左右,考慮到系統運行流暢性,將系統并發數量暫定為 100。
(3)信息容量:根據軸承品牌商代表的反饋與建議,系統數據庫應提供百萬條軸承數據的數據 資源容量,此外考慮到數據庫為方便查詢所設置的索引以及軸承知識庫所占用的空間,為了以后 的系統拓展性,系統數據庫容量暫定為 100GB。
系統具體性能需求見表 2.3。
表 2.3 系統具體性能需求
性能需求 具體要求
響應時間 小于等于2秒
并發數量 業務并發用戶數 100
信息容量 100GB
2.安全需求:系統的安全性一般是指訪問控制安全、數據庫數據安全等方面。系統通過設置 用戶登錄身份驗證、設定合理有效的登錄時間、記錄系統登錄日志、操作日志,數據庫敏感信息 加密以及用戶權限管理等措施,保障系統操作與數據安全。
3易用需求:系統應當操作簡單,當系統用戶操作系統發生錯誤時,系統應將相應的錯誤提 示返回給用戶。
4拓展需求:當系統需求發生變化后,系統應具備較短時間內在不破壞原項目的基礎上滿足 新需求的能力。此外,系統還可通過提升硬件配置來滿足日益增長的業務需求,確保系統的平穩 運行。軸承信息管理系統在設計時,采用面向對象的編程思想,降低系統各模塊間的耦合性,從 而在系統面臨新需求時,可在原項目的基礎上進行新業務功能的開發。
2.3系統組織架構與開發環境
2.3.1系統組織架構設計
軟件系統架構主要有B/S (瀏覽器/服務器)架構和C/S (客戶端/服務器)架構。B/S架構是 在廣域網的基礎上建立的,無需特殊的網絡布置,用戶通過瀏覽器即可訪問系統資源,具有分布 性強、維護、拓展簡單方便等優點。但由于B/S架構是請求-響應模式的交互方式,所以其響應 速度較慢。 C/S 架構是在局域網基礎上建立的,一般面向較為固定的用戶。用戶需要安裝系統客 戶端才可以使用系統資源,系統安全性好且響應速度較快。但C/S架構存在分布性弱、開發維護 成本高等問題。B/S架構與C/S架構各有優缺點,因此需要考慮用戶需要決定系統架構。軸承管 理系統用戶分布較廣泛,所以需要方便靈活的部署方式以及較低的維護成本。因此,本系統采用 B/S 架構來搭建系統。
前后端分離是順應互聯網時代發展及IT行業升級而進化出己被業界共識的一種互聯網開發 模式。在前后端分離的開發模式中,后端主要負責編寫系統的業務功能邏輯并為前端提供數據支 持,前端主要負責將后端返回的數據渲染成交互界面,前后端職責分離,分工明確,耦合度較低。 前后端開發交互如圖 2-5 所示。前后端分離的開發模式具有以下優點:
(1)提高工作效率,分工明確。前后端分離開發中,前端只關注前端的工作,后端只關心后端 的工作,兩者可同時進行開發設計,提高了工作效率;
(2)系統性能提升。前后端分離開發的系統頁面會根據用戶請求按需加載,而不是用戶登錄后 加載系統的所有資源,有利于提升系統性能及用戶體驗;
(3)降低維護成本。前后端代碼各自分開,代碼重構及系統可維護性增強;
(4)前端和后端可根據任務安排更好地追求系統性能與用戶體驗等[26]。
圖 2-5 前后端交互圖
軸承信息管理系統采用B/S架構,前后端分離的開發模式開發設計。系統通過Web瀏覽器 為用戶提供系統服務,系統前端通過調用后端API接口負責頁面展示,后端負責處理前端返回 的系統請求,并將產生的數據以 Json 格式返回給前端使用。
本文的工作是系統后端部分的設計與實現,系統后端架構圖如圖2-6 所示,自上而下分別為 交互層、應用層、數據層和基礎層四層。
交互層負責將用戶從前端向后端發送請求產生的數據通過API接口提供給前端調用展示。 應用層通過設計邏輯控制器處理系統的具體業務功能,包括用戶管理、軸承管理、信息管理、 系統管理四個功能模塊,然后將處理的數據通過API接口返回給前端。
數據層負責系統數據的存儲與訪問,本系統使用MySQL關系型數據庫存儲,同時使用Redis 作為緩存工具,為系統數據提供增加、刪除、修改、查詢等服務。
基礎層是應用層和數據層的基礎,為各層提供基礎性服務。本系統采用阿里云服務器,使用 Linux 系統,搭建數據庫系統、開發平臺等環境。
圖 2-6 系統后端架構圖
2.3.2系統開發環境
系統后端開發主要使用了 Pycharm集成開發工具。開發語言使用的是Python語言,Python 語言是一種具有極簡主義思想、支持面向對象的開發語言,具有簡單易學的特點。后端框架使用 的是 Flask 框架, Flask 框架是由 Python 語言編寫的一個微框架,小巧靈活,開發人員可在較短 時間內開發出一個系統。系統數據庫使用的是 MySQL 數據庫, MySQL 是當前廣泛使用的關系 型數據庫之一,具有運行速度快、占用空間小、使用成本低等優點。此外,還使用 Swagger 文檔 工具, Swagger 文檔工具主要用于生成、描述、調用和可視化 RESTful 風格的 Web 服務[11],幫 助開發人員更好地理解業務。
系統后端詳細開發和運行環境如下:
(1)阿里云服務器:2核Cpu,內存8Gb、硬盤100G、操作系統Centos 7;
( 2) Python 版本: Python 3.8;
(3)開發工具: Pycharm 2020.1.5;
(4)后端框架: Flask 1.12;
( 5)應用服務器: Gunicorn 20.0.4;
(6)數據庫: MySQL{Mariadb 10.2}。
在此基礎上,使用 Flask 搭建系統后端框架,系統后端項目包結構主要包含 Ext、 Models、 Scripts、 Utils、 Views、 Instance、 Swagger 等。其中 Ext 負責數據庫、緩存、日志的初始化等工 作; Scripts 負責數據庫的初始化、系統版本的更新工作; Utils 提供一些公用的服務,如驗證碼、 日期等; Models 建立實體類的封裝,進行數據庫操作; Views 提供系統具體業務邏輯處理服務, 實現與前端請求的交互互聯; Instance 完成項目的整體參數配置,具體包括開發環境配置、路由 配置、開發模式配置等; Swagger 實現前后端 API 接口的動態生成、描述與可視化調用。
2.4系統模塊設計
模塊化設計是指將一個系統拆分為幾個模塊完成對系統的整體性設計,具有開發效率高、維 護性好、耦合性較低等優點。根據以上系統需求分析,可以得出系統的業務實體主要為系統用戶 和軸承數據。因系統各業務功能較獨立,所以為了使系統未來具備良好的可拓展性及可維護性, 采用模塊化設計思路將系統設計為用戶管理、軸承管理、信息管理、系統管理四個模塊和軸承壽 命計算系統。系統具體功能模塊結構圖如圖2-7 所示。
用戶管理模塊,主要構建了系統用戶實體、角色實體、菜單實體,為用戶提供登錄、退出系 統,修改賬號信息、用戶權限管理等功能,給系統的安全高效運行提供保障。
軸承管理模塊,主要構建了軸承實體,為系統用戶提供了增加、刪除、修改、查詢、導出軸 承數據等功能,是系統的核心模塊。
信息管理模塊,主要構建了軸承相關信息實體,如軸承字段、軸承知識庫、圖片庫、品牌等,
寧夏大學碩士學位論文 第二章 軸承信息管理系統需求分析與總體設計
為軸承數據的豐富性及系統拓展提供支撐。
系統管理模塊,主要功能為系統日志管理及系統首頁數據統計,為系統的日常運行及數據統 計奠定了基礎。
壽命計算系統,主要功能是為設計研發人員提供了常用滾動軸承的修正壽命計算服務,可為 設計人員提供較準確的軸承基本額定壽命計算及修正額定壽命計算服務。
2.4.1用戶管理模塊
用戶管理模塊包含普通用戶和品牌管理員、普通管理員、超級管理員四種角色。在本模塊中, 普通用戶和品牌管理員可以登錄、查看和修改賬號信息;普通管理員能添加、刪除普通用戶、查 看和修改普通用戶權限;超級管理員能添加、查看、刪除系統用戶,查看、修改系統權限以及用 戶權限管理等。
普通用戶、品牌管理員角色功能見表 2.4。
表 2.4 普通用戶、品牌管理員角色功能表
功能簡介 說明
登錄系統 查看賬號信息 修改賬號信息
退出系統 使用系統管理員分配的賬號登錄 查看昵稱、手機號或郵箱、頭像、地址等信息 修改昵稱、手機號或郵箱、頭像、地址等信息 退出登錄
普通管理員角色功能見表 2.5。
表 2.5 普通管理員角色功能表
功能簡介 說明
添加普通用戶 查看普通用戶權限 修改普通用戶權限
刪除普通用戶 添加普通用戶賬號 查看普通用戶的操作權限 修改普通用戶的操作權限
刪除普通用戶賬號
超級管理員角色功能見表 2.6。
表 2.6 超級管理員角色功能表
功能簡介 說明
添加系統用戶
查看系統用戶
刪除系統用戶
查看所有權限
修改所有權限 管理系統用戶角色 管理系統用戶菜單 添加系統用戶賬號 查看系統用戶賬號信息
刪除系統用戶賬號 可查看系統所有操作權限 可修改操作權限
管理系統用戶角色 管理系統用戶菜單
寧夏大學碩士學位論文 第二章 軸承信息管理系統需求分析與總體設計
2.4.2軸承管理模塊
軸承管理模塊實現了系統用戶或管理員具有查看、添加、刪除、修改、審核和導出系統軸承 數據的功能,參與者是所有系統用戶,軸承管理模塊功能見表 2.7。
表 2.7 軸承管理功能表
功能簡介 說明
查看軸承數據列表 查看軸承數據
查看軸承數量統計 查看待審核軸承數據 查看未通過審核軸承數據 添、刪軸承數據 審核軸承數據 修改軸承數據 導出軸承數據 可查看軸承數據列表 查看所要查看的軸承型號、相關數據等 查看所查詢軸承數量數據統計 查看待審核軸承數據 查看未通過軸承數據 添加、刪除軸承數據 審核軸承數據 修改軸承數據 可導出所需軸承數據
普通用戶可查看并導出軸承數據。品牌管理員可管理軸承數據,其添加的軸承數據需經普通 管理員審核,審核通過后錄入軸承數據庫;未審核通過的數據需經過品牌管理員修改后再審核。 系統管理員可以審核、添加、刪除、修改、查看軸承數據。超級管理員擁有軸承管理的所有權限。
2.4.3信息管理模塊
信息管理模塊實現了系統用戶對軸承相關信息進行查看、添加、刪除、修改等功能,參與者 是所有系統用戶,信息管理模塊功能見表 2.8。
表 2.8 信息管理模塊功能表
功能簡介 說明
查看軸承相關信息列表 添加軸承相關信息 修改軸承相關信息 刪除軸承相關信息 添加圖片 刪除圖片 查看圖片 添加軸承知識庫數據 修改軸承知識庫數據 查看軸承知識庫數據 可查看軸承相關信息列表 如添加新的軸承字段 如修改軸承字段 如刪除軸承字段 可一次性添加多個圖片 從數據庫刪掉圖片 查看圖片 新增軸承知識庫數據 修改軸承知識庫標題、內容、圖片等 查看軸承知識庫內容
普通用戶可以查看軸承知識庫。品牌管理員、普通管理員、超級管理員可添加、刪除、修改、 查詢軸承相關信息,圖片、軸承知識庫等。
2.4.4系統管理模塊
系統管理模塊實現了系統的登錄日志和操作日志的增加、導出,系統數據庫數據統計功能, 參與者是所有系統用戶,系統管理功能見表 2.9。
表 2.9 系統管理模塊功能表
功能 說明
增加登錄日志記錄 用戶登錄日志會記錄用戶名、ip、時間等
查看登錄日志 查看登錄日志用戶的用戶名、ip、時間等
導出登錄日志 導出登錄日志記錄
添加操作日志記錄 用戶操作日志會記錄用戶名、操作時間、操作內容
查看操作日志 查看操作日志用戶的用戶名、操作內容、時間
導出操作日志 導出操作日志記錄
首頁數據統計展示 系統首頁展示軸承種類、數量,軸承種類旭日圖等
系統用戶可查看首頁數據統計展示。超級管理員可查看并導出系統的登錄日志和操作日志。
2.4.5壽命計算系統
壽命計算系統功能見表 2.10。
表 2.10 壽命計算系統功能表
功能 說明
滾動軸承基本額定壽命與修正額定壽命計算 用戶可輸入工況參數計算校核軸承壽命
2.5 系統流程分析
本節將對系統流程進行分析。用戶登錄系統后,可以進行以下操作,具體流程如圖 2-8 所示。
圖 2-8 系統流程圖
2.6數據庫設計
數據庫是軸承信息管理系統的核心組成部分,主要作用是為系統各項功能業務的正常運行提 供數據支撐。數據庫設計是在了解用戶需求以及結合系統業務功能的基礎上,設計構建數據庫。 設計數據庫需要適應系統的運行環境,構建性能較優的數據庫系統,保障系統數據的快速交互, 提升系統的運行速度,以此實現數據庫對數據的管理, 滿足用戶的不同需求[27]。
數據庫的設計目標是建立結構分明,簡單可維護的數據庫系統,以滿足系統數據資源的管理 需求[28]。主要包括以下幾點:
(1)數據庫數據應覆蓋系統的所有數據資源,安全可靠。
(2)數據庫中數據應遵循一致性、完整性、規范性原則,降低數據冗余。
(3)數據庫應具備拓展性,可根據需要對數據結構進行拓展以滿足系統需要。
(4)數據庫應實現資源共享,為系統業務服務提供數據調用接口。
(5)數據庫應具備較高的運行效率,確保系統正常運行,提升用戶體驗[29]。
2.6.1數據庫的選擇
本系統選用的是MySQL數據庫,MySQL數據庫是Oracle甲骨文公司旗下的關系型數據庫 管理系統,其使用較通用的數據庫查詢語言SQL進行數據管理。因其占用空間小、穩定性較好、 運行速度快、源代碼開放、使用成本低,所以許多互聯網企業都會選擇使用MySQL作為系統數 據庫。此外, MySQL 最大的特色是開發人員可根據需求選擇存儲引擎。其主要特點如下:
(1) 支持多引擎:MySQL支持多種存儲引擎:如Myisam、Innodb等;
(2) 簡單易用:MySQL具備高性能且操作相對較簡單,容易上手;
(3) 支持多語言查詢:MySQL可使用SQL、Odbc (開放式連接)、Jdbc查詢;
(4) 可移植性:MySQL既可以在服務器或客戶端作為一個應用程序也可以在其他軟件中使用。 根據設計,在 Pycharm 集成開發工具使用 Pymysql 插件對系統數據庫接口進行了配置,使系
統后端與數據庫數據連接保護一致。
2.6.2數據庫概念結構設計
數據庫的概念結構設計是依據系統業務功能對數據實體建立的抽象概念模型。概念模型可以 表示各數據實體間信息的傳遞與關聯關系[30]。
依據上述系統需求,在考慮系統業務功能及功能模塊劃分的基礎上,分析系統各模塊實體、 屬性之間的組合關系,然后使用Pycharm集成開發工具及MySQL數據庫設計構建了系統的數據 庫模型,數據庫 E-R 圖如圖2-9所示。
根據設計,系統數據庫主要構建了系統用戶、軸承、字段屬性、字段屬性分組、軸承部位、 軸承材料、角色、菜單、日志、品牌等實體。其中,用戶id、用戶名、密碼、手機等是用戶實體 的屬性;軸承id、型號、狀態、原因是軸承實體的屬性;字段id、名稱、組名、排序等是字段屬 性的屬性;字段分組id、名稱、描述、等級是字段屬性分組實體的屬性;軸承部位id、名稱是軸
承部位的屬性;軸承材料id、名稱、描述是軸承材料實體的屬性;角色id、名稱、父id是角色 實體的屬性;菜單id、路徑、名稱、Apis、排序是菜單實體的屬性;日志id、表名、字段id、用 戶id、ip、動作是日志實體的屬性。
一個系統用戶可以擁有多個用戶角色,一個用戶角色對應多個系統用戶,系統用戶與用戶角 色間是多對多關系;一個用戶角色擁有多個多個角色菜單,一個用戶菜單擁有多個角色菜單,用 戶角色與用戶菜單可簡略看成多對多關系;一個系統用戶擁有多個登錄日志和多個操作日志;一 個用戶可以管理多個軸承和知識庫;一個軸承數據包含多個字段屬性;一個字段屬性分組包含多 個字段屬性;一個軸承類型擁有多個軸承;一個軸承有多個軸承部位;軸承部位與材料是多對多 關系;軸承與行業應用是多對多關系;軸承與品牌是多對多關系。各表之間使用外鍵相連。系統
數據庫具體外鍵連接情況及各表之間關系如圖 2-10 所示。
圖 2-10 數據庫表間關系圖
之所以將系統數據庫軸承數據表設計為軸承表加字段屬性表加其他屬性表結合的方式,是因 為考慮到軸承類型多樣,不同類型的軸承其基本數據差異很大。所以為了更加方便管理員管理軸 承數據,同時也考慮到數據庫數據結構的拓展性,采用軸承表加字段屬性表加其他屬性表結合的 方式組成軸承表。軸承數據大致分類如圖 2-11 所示。
圖 2-11 軸承數據大致分類圖
以調心球軸承為例,其數據主要包括代號與分類、外形尺寸、細節尺寸、公差要求、安裝尺 寸、技術要求、材料要求、行業應用等數據。其中,行業應用、軸承類型、材料等數據變化不大, 適應性強,所以將其設置為各自名稱屬性表,如行業應用表、材料表、類型表等。而對于外形尺 寸、細節尺寸、公差要求等數據,其包含的子類數據過多,如外形尺寸包括軸承寬度B、軸承內 徑d、軸承外徑D等,所以為了方便管理數據結構,將外形尺寸等母數據設計為字段屬性組表的 方式,將軸承寬度B、軸承內徑d、軸承外徑D等子數據設計成字段屬性表的方式表述軸承數據。 軸承數據字段屬性構成如圖 2-12 所示。
圖 2-12 軸承數據字段屬性構成圖
2.6.3數據庫物理結構設計
數據庫物理結構設計是將上一節所設計的抽象概念模型實體設計合理的存儲結構[31]。合理的 存儲結構是指不僅要使數據庫少占用系統的存儲空間,而且還要保證數據庫的高性能運行。
由于篇幅有限,僅對系統部分重要數據庫表進行簡要介紹。 adminuser 表存儲系統用戶信息, 如姓名、公司、部門等。 adminuser 詳細信息見表 2.11。
表 2.11 adminuser 表結構
名稱 類型 長度 是否允許空值 注釋
id int 11 否 自增主鍵
username char 20 否 用戶名
name char 20 否 姓名
avatar varchar 255 是 頭像
phone varchar 255 是 電話
email varchar 128 是 郵箱
company_id tinyint 4 否 公司 id
bumen char 20 是 部門
super tinyint 1 是 是否超級管理員
_password char 20 否 _密碼
create time timestamp 無 是 創建時間
rolemenu表存儲系統角色菜單信息,如角色id、菜單id。rolemenu詳細信息見表2.12。
表 2.12 rolemenu 表結構
名稱 類型 長度 是否允許空值 注釋
id tinyint 4 否 自增主鍵
r_id tinyint 4 是 角色 id
m_id tinyint 4 是 菜單 id
action tinyint 4 是 動作
create time timestamp 無 否 創建時間
loginlog表存儲用戶登錄日志信息,如ip、用戶id等。loginlog詳細信息見表2.13。
表 2.13 loginlog 表結構
名稱 類型 長度 是否允許空值 注釋
id int 11 否 自增主鍵
ip int 255 是 ip 地址
user_id int 11 是 用戶 id
remark varchar 255 是 備注
create time timestamp 無 否 創建時間
bearing 表存儲系統軸承信息,如軸承型號、軸承狀態等。 bearing 詳細信息見表 2.14。
表 2.14 bearing 表結構
名稱 類型 長度 是否允許空值 注釋
id int 11 否 自增主鍵
code char 20 是 軸承型號
bearing_type_id tinyint 4 是 軸承類型id
company_id tinyint 4 是 品牌 id
images mediumtext 255 是 圖片
state enum 1 是 狀態
reason text 無 是 理由
create time timestamp 無 否 創建時間
column_property_group 表存儲字段屬性組信息,如名稱、等級排序等。可表述如外形尺寸組、 細節尺寸組、公差要求組等字段屬性組信息。字段屬性組表詳細信息見表 2.15。
表 2.15 column property group 表結構
名稱 類型 長度 是否允許空值 注釋
id tinyint 4 否 自增主鍵
name char 20 是 名稱
description varchar 128 是 描述
rank tinyint 4 是 等級排序
create time timestamp 無 否 創建時間
column_property表存儲字段屬性信息,如名稱、字段屬性組id、等級排序等。可表述如軸 承內徑d、軸承外徑D、軸承寬度B等信息。字段屬性表詳細信息見表2.16。
表 2.16 column_property 表結構
名稱 類型 長度 是否允許空值 注釋
id tinyint 4 否 自增主鍵
name char 20 是 名稱
group_id tinyint 4 是 字段組 id
rank tinyint 4 是 等級排序
create time timestamp 無 否 創建時間
bearing_type表存儲軸承類型信息,如名稱、父id、等級排序等。可表述如滾動軸承、滑動 軸承、關節軸承等。 bearing_type 詳細信息見表 2.17。
表 2.17 bearing type 表結構
名稱 類型 長度 是否允許空值 注釋
id tinyint 4 否 自增主鍵
name char 20 否 名稱
p_id tinyint 4 是 父 id
rank tinyint 4 是 等級排序
knowledge 表存儲知識庫信息,如名稱、內容等。可表述如軸承選型方法、軸承標準、軸承 防銹方法等信息。 knowledge 表詳細信息見表 2.18。
表 2.18 knowledge 表結構
名稱 類型 長度 是否允許空值 注釋
id int 11 否 自增主鍵
name varchar 128 否 名稱
content text 無 是 內容
_archives text 無 是 存檔
create time timestamp 無 否 創建時間
role 表存儲用戶角色信息。可表述如管理員、普通用戶等信息。 role 表詳細信息見表 2.19。
表 2.19 role 表結構
名稱 類型 長度 是否允許空值 注釋
id tinyint 4 否 自增主鍵
name char 10 否 名稱
description varchar 128 是 描述
p id tinyint 4 是 父id
menu 表存儲系統菜單信息,如名稱、路徑、 apis 等。 menu 詳細信息見表 2.20。
表 2.20 menu 表結構
名稱 類型 長度 是否允許空值 注釋
id tinyint 4 否 自增主鍵
name char 20 否 名稱
path varchar 64 否 路徑
p_id tinyint 4 是 父 id
apis varchar 1024 是 apis
icon varchar 64 是 圖標
sort tinyint 4 是 排序
log 表存儲系統操作日志信息, 如ip、用戶id、操作表名等。log詳細信息見表2.21。 表 2.21 log 表結構
名稱 類型 長度 是否允許空值 注釋
id int 11 否 自增主鍵
ip int 255 否 ip 地址
user_id int 11 否 用戶 id
table char 20 否 表名
action tinyint 4 否 操作類型
column id varchar 32 是 字段 id
2.7數據庫優化
軸承信息管理系統數據庫中,主要包含用戶數據、軸承數據、軸承相關數據及系統日志等數 據,隨著系統使用時間的增長,數據庫規模越來越大,需要存儲的數據也越來越多,數據量會大 大增加,特別是每天需要多次查詢或者錄入軸承數據,對數據庫的性能是一種嚴峻的考驗。因此, 為提升數據庫的運行效率,優化用戶體驗,需要對系統數據庫進行優化。
數據庫優化主要是結合系統需求選擇合適的數據庫引擎、設計合理的索引、優化 SQL 語句 及數據庫表結構等。此外,還可以使用緩存來提升數據庫承受負載的能力。對數據庫中的部分數 據進行緩存,可降低數據庫負載,有效地提高服務器性能[31]。
2.7.1存儲引擎選擇
MySQL 數據庫有很多存儲引擎,其引擎類型有 Myisam、 Innodb、 Merge、 Memory、 Bdb 等, 但最常使用的類型是Myiasm和Innodb,本節將重點對這兩種存儲引擎進行研究選擇。
Myiasm 引擎注重的是性能,其運行速度比 innodb 引擎快,但其提供的鎖機制是表級鎖定且 不支持事務。而 Innodb 引擎是 MySQL 默認的存儲引擎,其支持的鎖機制是行鎖且支持事務, 在數據量大、并發高的場景中, innodb 引擎可提供更加靈活的鎖機制來提升系統的性能[32]。綜上 所述, Myiasm 引擎適合使用在查詢較多的場景中, Innodb 引擎更適用于并發量較大且寫入操作 較多的場景中[33]。所以綜合上述引擎的特點及適用場景,結合軸承信息管理系統高寫入、高查詢、 高并發的現實需求,本系統數據庫選用 Innodb 引擎。
2.7.2索引優化
數據庫索引是指將數據庫表的一列或多列數據進行排序從而實現快速查找數據庫表中信息 的一種數據結構,可快速提高數據庫的查詢性能[34]。如果數據庫表沒有設置索引,當數據庫執行 SQL 查詢時,數據庫會將與 SQL 查詢相關的每張表都進行掃描,不僅制約了數據庫性能,還造 成了數據庫資源的浪費[35]。 Innodb 引擎使用的是 B+Tree 索引機制, B+Tree 由二叉樹和平衡樹結
圖 2-13 B+TREE 索引結構示意圖
本文設計的系統數據庫需要存儲很多軸承數據,為數據庫表設置索引可以提升數據庫的查詢 性能,但由于索引本身也是一種數據結構,需要占用一定的存儲空間,因此建立過多的索引會造 成數據庫資源的浪費。而存儲引擎Innodb采用的是聚集索引,規定了存儲在B+Tree葉子節點 上的數據記錄的排列順序,采用聚集索引查詢到包含一個值的記錄后,便可以確保包含后續索引 值的記錄在物理相鄰[36]。因此,對于數據量較小的表,不予添加索引,對于數據量較大的表,可 以添加主鍵索引和普通索引。如數據庫軸承表Bearing,添加了主鍵索引與Bearing_Type、Company 普通索引。
2.7.3SQL 語句優化
SQL 語句是關系型數據庫中數據查詢的具體方式,雖然采用不同的數據庫操作 SQL 語句, 可以達到相同的操作目的,但使用更加高效的 SQL 查詢語句,可以更好地提高數據庫中 SQL 操作性能。
在本系統中,軸承數據關聯許多張表,如軸承表(Bearing)、軸承類型表(Bearing_type)、品牌 表(Company)、軸承字段屬性表(Bearing_column_property)等。在對數據庫進行性能優化前,軸承 表中的 SQL 語句很多采用的是子查詢的方式,如語句(1)所示,該語句的功能是查詢軸承品牌名 字為 NSK 的品牌,該語句使用了子查詢的方式。子查詢方式可以一次完成使用多個步驟才可完 成的 SQL 操作,但是數據庫在進行子查詢時,需要建立臨時表來完成多個步驟的工作,因而對 查詢效率有一定的影響。如果使用連接查詢Join來完成上述查詢工作,能夠避免創建臨時表的 過程,查詢速度會得到提升,如語句(2)所示。
(1)SELECT BearingID FROM Bearing WHERE CompanyID IN (SELECT CompanyID FROM Company WHERE CompanyName=NSK)
(2)SELECT BearingID FROM Bearing RIGHTJOIN Company ON BearingCompanyID=CompanyID And CompanyName = NSK
上述兩條SQL語句功能相同,但語句(1)使用了子查詢,語句(2)使用了連接查詢。使用Navicat 數據庫管理工具可以查看這兩個SQL語句的執行情況。執行情況如表2.22所示。
表 2.22 SQL 執行情況
用例 Duration Block ops in
語句(1) 0.011 12
語句(2) 0.001 0
2.7.4表結構優化
優化表結構可提升數據庫性能。優化表結構時,在表字段的數據類型選擇上優先選擇占用空 間較小的類型,比如對于某些定長字段,盡量使用Char而不是Varchar去定義,因為變長字符串 Varchar占用的空間較定長Char的大,并且Char的查詢效率比Varchar高。對于占用字節較少的 整數字段,優先使用Tinyint類型而不選用Int類型。對于時間類型的選擇,優先選擇使用占用4 字節的 Timestamp 類型,而不選擇占用 8 字節的 Datetime 類型。
另外,對于數據庫中的Null,要盡可能地用Not Null或空值定義字段。因為Null類型較特 殊,難以進行優化,并且會占用一定的存儲空間。此外,在對 Null 的查詢比較時,數據庫還需 做出相應的轉換才可以進行比較,會浪費大量資源。 Null 指儲存 Null 值,空值指‘',空值不 占用空間。
2.8本章小結
本章主要對系統需求進行了分析并完成了系統的整體設計方案。首先對軸承的選型影響因素 及系統需求進行了分析,得到了系統的 IDEF0 模型圖以及系統普通用戶和管理員角色的系統用 例圖。然后介紹了系統的組織架構及開發環境,闡述了系統各模塊的業務功能,并對系統業務流 程進行了分析。在此基礎上,從數據庫概念結構設計與數據庫物理結構設計兩方面完成了系統數 據庫的設計工作,并通過設置軸承字段表拓展軸承表的方式拓展數據庫屬性,最后通過索引優化、 SQL 優化等方式對系統數據庫進行了優化。
第三章 軸承信息管理系統后端詳細設計與實現
本章在上一章系統總體設計的基礎上,論述系統后端用戶管理、軸承數據管理、信息管理、 系統管理功能模塊的詳細設計與實現。
3.1用戶管理模塊
本節主要論述了系統管理員管理系統用戶、系統權限;系統用戶登錄、退出系統以及管理個 人賬號信息等功能的設計與實現。
3.1.1用戶登錄
用戶使用軸承信息管理系統,只有在 Web 端成功登錄后才可正常訪問系統數據資源。用戶 登錄系統時,需要輸入系統賬號、密碼和登錄驗證碼等登錄參數,然后將登錄參數發送至系統服 務器進行登錄參數驗證,通過驗證后才可正常訪問系統。當用戶的登錄請求參數驗證通過后,系 統服務器端會簽發一個邏輯加密包含用戶身份信息的 Token 令牌返回系統前端,并將用戶登錄信 息錄入系統數據庫和緩存中,完成用戶的登錄流程。用戶登錄流程如圖 3-1 所示。
圖 3-1 登錄流程圖
用戶登錄功能類圖如圖 3-2 所示。
圖 3-2 用戶登錄功能類圖
User.Login類是負責用戶登錄、登出系統的邏輯控制類,POST方法負責用戶登錄;DELETE 方法負責用戶登出。AdminUser是用戶實體類、LoginLog是登錄日志實體類、PasswordError是 密碼拋出攔截器。當 AdminUser 類的 CheckPassword 方法檢驗用戶輸入的賬號密碼不匹配時,系 統會直接拋出錯誤并停止登錄流程;當用戶賬號密碼匹配,用戶成功登錄時, Current_App.Logger 類負責將用戶登錄信息錄入系統登錄日志。
系統用戶登錄時,User.Login控制類首先調用Captcha_Verify類驗證用戶輸入驗證碼的正確 性,若驗證通過會調用 AdminUser 類的 CheckPassword 方法驗證用戶所輸入的賬號和密碼,若都 驗證通過,那么LoginLog類將實例化,生成Token令牌并將用戶登錄信息(id、ip、user_id、datetime) 存儲到用戶登錄日志中,完成用戶登錄過程。當用戶退出時,通過調用User.Login控制類的 DELETE方法實現用戶登出。
在用戶登錄過程中引入緩存Redis以提高系統性能,實現登錄業務的優化調整。在用戶登錄 時,將登錄成功的用戶信息及生成的Token令牌存入緩存,以供用戶其他請求操作時調用。此外, 考慮到系統安全性及系統上線后用戶的實際操作需要,Token令牌有效期設置為24小時,即在 用戶登錄24小時無需再次登錄即可訪問系統。比如,用戶登錄成功后,會將服務器端簽發的Token 令牌返回給前端并存儲在緩存Redis中。當用戶有新的請求操作時,系統會從緩存中獲取Token 令牌并發送給服務器端進行驗證,若令牌處于有效期且驗證通過,那么服務器端會返回用戶所請 求的信息;若令牌驗證通過且不在有效期范圍,需要用戶重新登錄獲取新簽發的令牌完成用戶操 作過程。
用戶登錄后,系統后端的所有業務功能均可通過API接口被前端調用,API前后端接口文檔 使用Swagger工具生成。使用Swagger工具生成用戶登錄接口文檔設置如下:在登錄功能控制類 User.Login中給login控制類添加接口注釋,然后編輯用戶登錄接口文檔的文檔接口名。另外, 為登錄功能控制類的操作方法添加@ApiOperation、@ApiParam注釋,用來表示每個接口請求操 作的方法、請求參數及字段說明,以此實現對每一個功能接口的配置[37]。通過給Login的POST 方法添加@Api.Expect(Login_Model, Validate=True)、@Api.Marshal_With_Custom(Token_Model)、
@Captcha_Verify 三個裝飾器完善登錄功能的邏輯驗證。 @Api.Expect(Login_Model, Validate=True) 用來驗證登錄時用戶輸入的信息是否符合字段規范、@Captcha_Verify用來驗證驗證碼的正確性、 @Api.Marshal_With_Custom(Token_Model)用來將簽發的Token令牌規范序列化輸出。
生成的 Swagger 用戶登錄在線接口文檔如圖 3-3 所示,該文檔展示了用戶登錄功能的接口內 容,包括接口路徑、請求方式、參數名稱、參數類型、數據類型等。點擊 Try it out 輸入接口所 需的參數以后,點擊 Execute 即可查看后端接口返回的狀態碼和響應報文,方便直觀,有利于提 高系統的開發效率[37]。
圖 3-3 Swagger 用戶登錄在線接口文檔圖
3.1.2用戶信息管理
用戶信息管理包括用戶查看、修改個人賬號信息;系統管理員添加、刪除、查看、修改用戶
信息。實現用戶信息管理類圖如圖 3-4 所示。
圖 3-4 用戶信息管理類圖
AdminUser是用戶實體類、Role是角色實體類;AdminUser是用戶管理控制類,負責系統用 戶賬號信息的添加、刪除、修改、查詢。Info是個人管理控制類,負責個人賬號信息的查看與修 改。 ChangePasswordInfo 是用戶賬號密碼控制類,負責用戶賬號密碼的修改。
用戶查看個人賬號信息時,通過調用Info類的GET方法查看個人賬號信息,若此用戶沒有 用戶角色則會拋出NoRole提示,提示當前用戶無用戶角色,需要用戶聯系管理員添加用戶角色; 若賬戶有角色,則會返回對應的個人賬號信息。當用戶修改個人信息時,通過調用Info類的PUT 方法,將所需修改的信息修改后提交即可,數據庫會實時更新用戶賬號信息。
用戶修改賬號密碼時,需調用ChangePasswordiInfo類的PUT方法。系統通過調用AdminUser 控制類的 CheckPassword 方法核驗用戶輸入的舊密碼是否與原密碼相同,若沒有通過驗證,則調 用PasswordError類報錯;若通過驗證,則將輸入的新密碼提交系統加密,錄入系統數據庫,完 成用戶賬號密碼的修改。
因普通用戶沒有系統權限添加、刪減用戶,所以系統增加、刪除用戶都由管理員進行操作。 當管理員添加系統新用戶時,可調用AdminUser控制類的POST方法添加用戶信息(包括權限), 系統對添加的用戶信息如名字、電話、角色等信息進行格式規范性驗證;通過驗證后提交數據庫 檢索是否存在相同的用戶名,若有相同用戶則拋出CommenError錯誤提示用戶信息重復;若無 相同用戶則提交數據庫保存新添加用戶信息。系統管理員刪除用戶時,通過調用AdminUser控 制類的DELETE方法,選擇要刪除的用戶,提交數據庫保存,完成用戶的刪除。
此外,因系統初始化時數據庫是空庫無用戶信息,所以在系統初始化數據庫的時候需添加一 個超級管理員賬號,方便以后的系統管理。管理員查詢系統用戶信息,可通過調用 AdminUser 控制類的GET方法,輸入搜索關鍵字如用戶名、電話等方式查詢系統用戶信息;也可不按關鍵 字查詢,查詢返回的系統用戶信息按照添加用戶的時間正序排列返回。系統管理員修改用戶信息 如權限時,通過調用AdminUser控制類的PUT方法,具體方法同用戶修改個人賬號信息類似。
個人查看賬號信息、修改賬號密碼業務時序圖如圖 3-5 所示。
圖 3-5 個人查看賬號信息、修改密碼時序圖
與上一節類似,為規范前后端接口,提升開發效率。在 AdminUser、 Info、 ChangePasswordInfo
控制類中設置生成Swagger在線接口文檔,為節省篇幅,不再一一截取示例,選取用戶信息管理
部分關鍵接口進行說明,主要包括個人信息的獲取、修改;管理員添加、刪除、修改、查看用戶
信息,詳見表 3.1。
表 3.1 用戶信息管理關鍵接口
接口名稱 接口描述 請求方式 接口參數 返回結果
/myinfo 查看個人信息 GET 無 {"username":"string","name":"string","avatar
":"string","company": {"name":" string"} 等
/myinfo 修改個人信息 PUT name,avatar, company 等 {code,msg}
/user/infopassword 修改賬號密碼 PUT oldpassword, newpassword {code,msg}
/admin_user/<strin
g:name> 查看用戶信息 GET name {"username":"string","name :["string"],"avatar":"string"," me":"string"} 等 ":"string","roles" company":{"na
/admin_user/<strin
g:name> 刪除用戶 DELETE name {code,msg}
/admin_user 添加用戶 POST name,compan
y,roles 等 {"username":"string","name :["string"],"avatar":"string"," me":"string"} 等 ":"string","roles" company":{"na
/admin_user/<strin
g:name> 修改用戶 PUT name,compan
y,roles 等 {"username":"string","name :["string"],"avatar":"string"," me":"string"} 等 ":"string","roles" company":{"na
3.1.3權限管理
系統設計權限管理模塊的目的是為了更加方便管理員管理維護系統的正常運行,增強系統的 安全性。權限管理模塊主要包括管理系統角色和管理系統菜單。當前系統擁有四種角色,超級管 理員、普通管理員、品牌管理員、普通用戶。超級管理員可以添加、刪除、修改、查看系統的角 色與菜單,并可對系統所有用戶賦予權限。此外,超級管理員可根據現實需要,隨時調整系統角 色與菜單;普通管理員可管理普通用戶的權限。
3.1.3.1 RBAC 權限管理模型
系統設置權限管理的目的在于控制用戶的行為,使用戶在訪問軸承信息管理系統資源時必須 通過系統權限模塊的識別和驗證,對系統安全性能的提升具有重要意義。當前主要的系統訪問控 制模型有:自主訪問控制模型(DAC)、強制訪問控制模型(MAC)、基于角色的訪問控制模 型(RBAC) [38]。DAC自主訪問控制模型是一種接入控制服務,對權限的管理比較分散,不利 于控制管理;MAC強制訪問控制模型是為了彌補DAC對權限管理分散而設計的,其安全性較 高,但靈活性較差; RBAC 基于角色的訪問控制模型使用戶與權限分離,簡化了用戶與權限間的 關系,所以易于拓展與維護。對于軸承信息管理系統而言,各模塊業務功能較復雜,系統用戶較 多且需求多樣,所以本系統的權限管理模塊使用的是簡單易管理的RBAC模型。
RBAC(Role-BasedAccessControl),基于角色的訪問控制模型,是較受歡迎的用戶訪問控制 模型,本系統的用戶權限管理控制就是基于RBAC模型來設計的。在RBAC控制模型中,用戶不 是直接擁有訪問系統的權限,而是在用戶和系統權限間添加了用戶角色這一身份,實現了用戶與 權限之間的解耦,構成用戶-角色-系統權限的權限管理模型。RBAC權限管理模型如圖3-6所示。
圖 3-6 RBAC 權限管理模型圖
在 RBAC 權限管理模型中,管理員賦予系統用戶不同的用戶角色,再為用戶角色分配系統 權限菜單,從而使用戶間接地獲取系統權限,實現了用戶和權限的分離。這樣,管理員可以方便 地管理系統用戶以及更好地維護系統運行。
另外,本系統在設計權限管理功能時,考慮到系統上線以后使用人數較多、用戶角色類型多 樣,系統功能模塊業務較復雜,為了使管理員可以更好地管理用戶,增強系統的安全性,在原有 RBAC的基礎上,進一步細化了 RBAC權限管理模型。通過采用系統用戶角色等級劃分的思路, 在角色及權限菜單上引入繼承,即父級角色擁有子級角色的所有屬性,子級角色擁有父級角色的 部分屬性,使用戶角色及權限形成級別劃分。此外因系統的業務范圍主要是軸承數據的增刪改查, 所以用戶對系統的增刪改查需求較多,為了使系統權限管理能夠實現更細粒度的劃分和管理,即 權限管理不僅有功能模塊頁面的菜單權限,也有頁面上操作按鈕的動作權限,可隨著用戶實際需 求的變化而變化,兼具靈活性及通用性。通過在角色與菜單之間引入操作動作Action,使得系統 權限管理更加細化。本系統細化權限管理模型如圖 3-7 所示。
圖 3-7 細化權限管理模型圖
軸承信息管理系統中,用戶與角色是多對多的關系,角色與角色菜單是一對多關系,權限菜 單與角色菜單也是一對多關系。這樣一個用戶可以擁有多個用戶角色,一個角色可以擁有多個權 限菜單,不僅有利于管理員管理用戶權限,同時也將用戶權限劃分的粒度更細。
3.1.3.2 菜單管理
菜單管理是系統實現權限管理的重要組成部分,系統菜單主要負責管理系統的 API 接口路 徑。系統管理員管理系統菜單,可以添加、刪除、修改、查看系統當前存在的菜單。實現菜單管 理類圖如圖 3-8 所示。
圖 3-8 菜單管理類圖
系統管理員管理系統菜單時,通過調用System.Menu控制管理類的POST方法添加系統菜單、 調用 PUT 方法修改系統菜單、調用 DELETE 方法刪減系統菜單、調用 GET 方法查看系統菜單。 管理員添加系統菜單的流程圖如圖 3-9 所示。
圖 3-9 添加系統菜單流程圖
管理員添加系統菜單,系統會驗證輸入菜單數據A是否為None。若A為None,則報404 錯誤。若不為None,接著判斷A是否為list格式,若不是list格式,則會將A轉換為list格式重 新判斷。若為list格式,那么系統會取出系統現有菜單為AM。然后,將A遍歷為M,若M中 Path為None,則繼續遍歷;若不為None,判斷Path是否在AM中,若在說明路徑重復;若不
在,將Menu實例化為MM,將M中字段添加到MM中,完成系統菜單的添加過程。
3.1.3.3 角色管理
角色是連接用戶與菜單的橋梁,在權限管理中具有舉足輕重的作用。用戶角色管理主要負責 系統用戶角色的劃分,系統用戶根據擁有身份角色的不同而具有不同的系統操作權限。管理員管 理用戶角色時,可增加、查看、刪除、修改系統的用戶角色。角色管理類圖如圖3-10 所示。
圖 3-10 角色管理類圖
Role類是角色實體類、Menu類是菜單實體類、RoleTree是角色樹管理控制類、System.Role 是角色管理控制類。管理員查看用戶角色樹狀圖,可調用RoleTree控制類的GET方法查看。管 理員想要修改系統用戶角色時,可通過 System.Role 控制類的 GET、 POST、 PUT、 DELETE 方 法實現系統用戶角色的查詢、增加、修改、刪除。增加系統角色的流程圖如圖 3-11 所示。
圖 3-11 添加角色流程圖
添加系統角色流程如下:管理員添加系統角色,先輸入要添加的角色信息A,然后建立用戶 角色空列表RS并實例化用戶角色Role為R。然后將A中的角色菜單RoleMenu遍歷為RM,在 系統現有的菜單Menu中查找是否有與RM中相同的Menu,若Menu存在,則將Menu、M賦值 給RoleMenu的Menu及Role,并將R中Action與RoleMenu.Action取交集賦值給Rm。然后將 結果添加到角色空列表RS中。將RS賦值給A中的RoleMenu,然后將A添加到R中,在數據 庫提交錄入,完成系統角色的添加。
修改角色流程圖如圖 3-12 所示。
修改系統角色流程如下:管理員修改系統角色,首先查找到要修改的角色信息M,然后輸 入所要修改的角色數據A,判斷A中RoleMenu角色菜單是否為None。若不為None,則建立空角 色列表RS,將A中RoleMenu角色菜單遍歷為R,從系統現有菜單Menu查找與R中相同的Menu 并判斷是否存在,若Menu存在,在系統角色菜單中篩選所要修改角色id與角色菜單相同的角 色id,在此基礎上篩選Menu.id=RoleMenu.id的數據賦值給Rm。
判斷Rm是否為None,若為None,那么將Menu及M賦值給RoleMenu并賦值給Rm。若不 為None,那么將RM.Action與R中Action取交集,然后在RS中添加Rm。將RS賦值給A的 RoleMenu。若A中RoleMenu為None,從A中查找Parent并判斷是否存在,若存在,從系統現 存用戶角色中查找此Parent并賦值為Parent,若Parent為None,將 Parent賦值為A.Parent;若 Parent 等于M,則報錯角色重復,若不等于那么判斷此Parent的父級是否為None,進行循環判斷。
然后M添加A數據,在數據庫提交修改,完成系統角色的修改。
3.1.3.4 權限管理
系統用戶的權限管理分為授權、鑒權兩個部分。授權部分是當系統管理員添加、修改用戶信 息時,根據用戶的身份分配給用戶相應的用戶角色,實現對用戶的權限管理。鑒權部分是系統管 理員賦予系統用戶相應的用戶角色和系統權限后,當用戶登錄訪問系統相關業務時,系統會從用 戶請求發送的Token令牌中提取用戶的權限信息,之后將此權限信息與用戶請求業務路徑或操作 動作做對比,若對比符合,則可正常訪問請求資源;若對比不符合,系統會禁止用戶訪問所請求 資源,由此實現對用戶權限的鑒定。因授權部分在用戶信息管理部分已介紹,故本節只論述鑒權 部分的設計與實現。
系統權限管理模塊功能是依據RBAC權限設計管理模型設計實現的,系統的權限管理類圖 如圖 3-13 所示。
圖 3-13 權限管理類圖
AdminUser 是用戶實體類、 Role 是角色實體類、 RoleMenu 是角色菜單實體類、 Menu 是菜 單實體類。 Admin_Before_Request 是權限管理模塊的前處理小模塊,主要負責用戶請求的鑒定和 識別;After_Request是權限管理模塊的后處理小模塊,負責用戶請求的相應。AdminUser類中的 Api_Permission 函數和 Role_Menu 函數以及 Role 類的 Role_Menu_With_Parent 函數構成了 權限管 理的鑒權小模塊,該模塊主要輔助 Admin_Before_Request 做好權限鑒別。
改進的RBAC權限管理模型對用戶的權限操作進行細化,引入了操作動作Action。所以設 計了權限動作操作字典 Method_Map 來實現角色菜單對資源頁面相關操作權限的控制功能。
Method_Map 的請求方法用二進制數表示如下:
Method_Map = {
'GET': 0b1,
'POST': 0b10,
'PUT': 0b100,
'DELETE': 0b1000,
'EXPORT': 0b10000,
'PATCH': 0b100}
當用戶向系統提交操作請求時,系統會獲取到用戶請求的 HTTP 方法,然后將此 HTTP 方法 替換為Method_Map中的Action并采用二進制數來表示。例如請求的HTTP方法為GET,則通 過Method_Map轉換為Action為Obi。在后續的權限鑒別過程中,通過此Action的二進制數與 用戶角色菜單所擁有的 Action 取交集來判斷用戶請求的合法性,實現對用戶的權限管理。
此外,本系統在設計權限管理時考慮到為方便系統判斷用戶權限,設計了白名單 White_List 和角色白名單Role_White_List。白名單White_List含義為:系統用戶不用登錄就可直接訪問的 URL。如系統登錄界面、Swagger后端測試界面。角色白名單的含義為:任何登錄后的用戶都可 以訪問的URL。如系統首頁統計展示界面。
Admin_Before_Request類被@Before_Request裝飾器修飾,當每一次用戶請求到來后,都會 先執行Admin_Before_Request,如果該函數運行無問題即通過了系統的權限鑒別,那么系統就會 進入到正常的被 App.Route 函數修飾的視圖函數中進行響應。系統權限控制流程如圖 3-i4 所示。
圖 3-i4 權限控制流程圖
Admin_Before_Request 類運行流程圖如圖 3-i5、 3-i6 所示。圖 3-i5 是鑒權一小模塊,圖 3-i6 是鑒權二小模塊。
首先,用戶請求系統操作時,系統會獲取到此次用戶請求的HTTP方法與訪問路徑Path及 Action和API。若當前請求的訪問路徑在系統白名單中,那么用戶可以正常訪問所請求的路徑資 源;若路徑不在系統白名單,那么會從用戶請求中獲取Token令牌或Jwt令牌。若令牌不存在則 報錯401錯誤;若令牌存在,判斷能否從令牌中獲取到User_id,若不可以,系統報401錯誤; 若可以,將User_id整數化,并從用戶數據庫查找此用戶。若此用戶不存在,報401錯誤;若用 戶存在,對角色白名單進行遍歷,然后將遍歷的結果同用戶請求路徑相匹配,若匹配成功,則訪 問請求資源;若不成功,進行以下判斷,若用戶id不為1且沒通過Api_Permission(Api,Action) 驗證,報錯 403無權限訪問。
圖 3-i6 鑒權二小模塊圖
當請求路徑不能與角色白名單 Role_White_List 成功匹配,會調用 Api_Permission 函數。
Api_Permission 函數是 AdminUser 類下的一個方法,主要用于驗證用戶請求路徑與動作是否與該 用戶角色菜單定義的路徑及動作相符。此外該函數在運行過程中會調用 Role_Menu 函數以及 Role_Menu_With_Parent 函數。 Role_Menu 函數也是 AdminUser 類的一個方法,用于將系統當前 用戶所有角色所有菜單權限取并集。 Role_Menu_With_Parent 函數是 Role 類的一個方法,用于將 系統用戶擁有角色的父子角色菜單權限取交集。
Api_Permission函數對應著鑒權模塊的第二部分。首先,系統建立角色菜單空列表RMS,然 后查找當前用戶所擁有的所有角色。然后將用戶的所有角色進行遍歷,并判斷每個角色有無父級 角色,再將每個角色的父級與本級角色的角色菜單取交集并添加到空列表 RMS 中,將所有角色 的角色菜單取并集到列表RM。然后將RM遍歷得到Rm,判斷Rm.Apis與用戶請求API是否相
同且Rm.action與用戶請求action的交集的值是否大于0。若都滿足,那么返回True,響應鑒權 模塊一,完成用戶請求的正常訪問;若不滿足,則返回False,報錯403無權限訪問。
Rm.action與用戶請求action取交集結果大于0即說明用戶角色菜單對此操作有權限。如用 戶的角色菜單中action為31,轉換為二進制數為Oblllll。若用戶請求為POST方法,使用 Method_Map方法轉化為二進制數為0b10,即0b11111與0b10取交集大于0,說明用戶擁有此操 作的權限。
After_Request()函數被@After_Request裝飾器修飾以后,會在用戶請求得到響應且返回給用 戶前被調用,同時生成 Response 響應,若 Response 響應狀態碼為 204,則表明成功;若響應狀 態碼為400,則表明有錯誤,同時將Response響應狀態錄入到系統日志中。
權限管理關鍵接口如表3.2所示,主要包含對系統角色、菜單的管理。
表 3.2 權限管理關鍵接口
接口名稱 接口描述 請求方式 接口參數 返回結果
{"id":int,"path":"/string","name":
/system/menu/id 查看系統菜單 GET id "string","action":[int],"parent_action":
[int],"apis": [ "string" ]}
/system/menu 添加系統菜單 POST id,path,name, action, parent_action {"id":int,"path":"string","name": "string","action":{},"parent_action": {},"apis": ["string"],"children": {}}, "extra_data": {}} {"id":int,"name":"string","admins":
/system/role/<nam e:string> 查看用戶角色 GET name {"id":int,"name":"string"}],"parent":{"id ":int,"name":string},"role_menu": [{"menu": int,"action": int}]}}
/system/role 增加系統角色 POST name,action, admins,parent, role_menu {"id":int,"name":"string","parent":
{"name":"string","id":int},"children":{}}
name,admins, {"id":int,"name":"string","description":"s
/system/role/id 修改系統角色 PUT parent, tring","parent":{"name":"string","id":
role_menu int},"children": {}}}
{"id": int,"name": "string","description":
/system/roletree 查看系統角色 GET 無 "string","parent":{"name":string,"id":stri
樹 ng},"children": [{id": int,"description":
"string","name": "string","children": []}}
3.2軸承數據管理模塊
軸承數據管理模塊是本系統的核心模塊之一,其主要功能是用戶可對系統數據庫的軸承數據
進行添加、刪除、修改、查詢、審核、導出。本節將在上一節用戶管理模塊的基礎上論述軸承數
據管理功能的詳細設計與實現。軸承數據管理類圖如圖 3-i7 所示。
圖 3-i7 軸承數據管理類圖
Bearing 類是軸承實體類、 Industry 類是行業應用實體類、 Company 類是品牌實體類、 BearingPart 類是軸承部位實體類、 Materical 是材料實體類。 Bearing_Type 與 ColumnProperty 分 別是軸承類別實體類和字段屬性類,這兩個實體類會在下一節信息管理模塊闡述。 BearingView 軸承控制類負責系統軸承數據的添加、刪除、修改、導出、查看功能。 BearingReview 軸承控制 類負責系統新錄入及修改后軸承數據的審核功能。
3.2.i軸承數據的添加、修改
添加系統軸承數據主要分為兩個部分。第一部分將不是字段屬性表的數據如軸承類型、品牌 等添加到軸承表中,因軸承字段較多,所以在下述軸承數據的添加中僅闡述軸承部位材料的添加 過程。第二部分是將屬于字段屬性表的數據如 d、 D、 B 等添加到軸承表中。軸承數據添加流程 圖如圖 3-i8 所示。
圖 3-18 軸承數據添加流程圖
用戶添加軸承數據流程如下:首先用戶調用BearingView控制類的POST方法輸入所要添加 的軸承數據A,系統判斷錄入數據A是否規范要求,不符合要求則報400錯誤。數據符合規范 會判斷數據格式是否是列表,若不是,需要將數據轉為列表。然后將A遍歷得到AA,同時將 Bearing軸承實例化為B并建立空軸承表BB,將AA中的Part_Material部位材料字段進行遍歷 得到PM,然后將Bearing_Part_Material實例化為BPM,并將PM添加到BPM中,最后在空軸 承表BB中添加BPM,完成添加軸承數據非字段屬性的工作。
隨后建立空表CC,將AA中的軸承字段屬性遍歷得到CP并將遍歷的CP賦值到軸承字段屬 性BCP中,然后在CC中添加BCP,完成添加軸承數據第二部分的工作。最后將BB、CC表的 數據賦值給AA,在實例化B中添加數據AA,當輸入的數據A全部遍歷完成以后,將實例化的B 提交數據庫添加,完成軸承數據的錄入。軸承數據修改與軸承數據添加類似,故不一一敘述。
3.2.2軸承數據審核
軸承數據審核是為了確保系統數據庫新錄入軸承數據的準確性而設置的功能。軸承數據審核 類圖如圖 3-19 所示。
圖 3-19 軸承數據審核類圖
Bearing 類是軸承實體類, BearingView 類與 BearingReview 類是軸承控制類。 BearingReview 類負責系統新添加或未審核通過改正后軸承數據的審核工作。 BearingState 類是通過枚舉的方式 定義了軸承信息的三種狀態:“待審核”, 1;“已通過”, 2;“未通過”, 3 來表示系統數據 庫軸承數據的狀態。如果軸承數據審核通過,數據庫中該條數據的狀態會顯示已通過審核;若未 通過審核,管理員可以附屬審核意見返回給錄入本條數據的管理員以供修改軸承數據。 BearingView 類負責對未審核通過的軸承信數據進行更改。軸承數據審核流程圖如圖 3-20 所示。
圖 3-20 軸承數據審核流程圖
管理員審核軸承數據流程如下:用戶添加軸承數據,軸承數據雖已經錄入數據庫,但其還處 于待審核狀態,只有當系統管理員審核通過以后,該軸承數據才可被正式錄入數據庫。系統管理 員審核軸承數據時,通過調用 BearingReview 類的 PUT 方法審核處于待審核狀態下的軸承數據, 對于符合規范要求的軸承數據,給予審核通過的處理;對于不符合要求的軸承數據,給予審核不 通過的處理,并可附加不通過原因便于錄入軸承數據的用戶修改未通過審核的軸承數據。
3.2.3軸承數據查詢
軸承信息查詢是本系統較為重要的功能,用戶可根據自己的需求通過輸入單個查詢條件或多 個查詢條件查詢所需的軸承數據。軸承數據查詢流程圖如圖 3-21 所示。
因軸承數據表中如軸承類型、品牌、行業應用等不是通過添加軸承字段添加,所以在查詢軸 承數據時需要軸承類型等與軸承字段分開查詢,才能夠確保查詢準確、高效。同時考慮到系統用 戶在查詢軸承數據時,會優先查詢軸承數據的內徑d、外徑D以及軸承型號,所以在設計軸承數 據查詢時主要以查詢軸承的內、外徑以及軸承型號為查詢方式。
為此設立T為軸承數據查詢的子查詢。T的含義是Bearing表查詢軸承字段屬性的Value值、 軸承字段屬性的軸承id,連接字段屬性表并以字段屬性id等于軸承字段屬性的屬性id為條件, 篩選出字段屬性名為d、D的數據。Bearing表通過連接Bearing_Type表作為外查詢,將T作為 子查詢,然后將查詢到的數據優先按照Bearing_Type降序的方式排列并把結果賦值給M。
軸承查詢過程如下:首先,用戶調用BearingView控制類的GET方法,然后輸入查詢數據A, 系統接收數據并處理。如果A中Bearing_Type不為None,那么將Bearing_Type及其子級遍歷獲 得C, M篩選Bearing_Type_id等于C.id的數據賦值給M。若Bearing_Type為None,則判斷Company 是否為None。若不為None,那么M篩選Bearing.Company_id=Company的數據賦值給M。若為 None, 則判斷 Industries 是否為 None, 若不是,則 M 連接 Bearing.Industries 篩選出 Industry_id 為 Industries的數據賦值給M。
若 industries 為 None,則判斷 Column_Properties 是否不 None 且 Column_Properties 不為空, 若是,那么將Column_Properties遍歷得到Column_Property賦值給CPS。對CPS遍歷得到CP, 如果 CP.value 為空或為 None, 那么跳過此 CP, 進行下一次遍歷。 若不是, 則將 BearingColumnProperty 取別名為 BCP, M 連接 BCP 并以 BCP.Bearing_id 等于 Bearing.id 為條件 查詢數據賦值給M。然后M篩選BCP的字段屬性及value等于CP字段屬性及Value的數據賦 值給 M。
然后判斷數據M的狀態是否通過管理員的審核,若己通過審核,那么返回給用戶己通過審 核的數據;未通過審核的軸承數據需等待管理員審核或錄入者修改后才可返回給用戶查看。
3.2.4軸承數據導出
軸承數據導出功能是根據用戶實際需求查看系統軸承數據時,為用戶提供的軸承數據導出服 務,導出數據的文件格式為XLS格式。軸承數據導出流程圖如圖3-22所示。
圖 3-22 軸承數據導出流程圖
軸承數據導出過程如下:首先用戶調用BearingView軸承控制類的EXPORT方法,然后系 統根據用戶輸入的查詢條件(軸承型號、內外徑、寬度、品牌、行業應用、材料等條件)查詢軸承 數據庫的數據。系統若沒查詢到用戶需要的軸承數據,會提示用戶重新輸入查詢條件重新查詢; 若查到軸承數據M,則調用XLWT表格插件建立名為Bearing的XLS文件。
然后系統會將軸承數據庫現有的字段屬性、字段屬性組、軸承類型等字段按照字段級別排序 在Bearing文件的第一二行構建文件的表頭HEAD。然后將查詢到的數據M遍歷得到每一條數據 N,再將每一條數據N遍歷得到每一條數據的組成字段H。若H為圖紙字段,則在遍歷順序行 的圖紙對應列寫下此圖紙的URL地址;若H不為圖紙,則將H各字段寫入遍歷順序行的對應列, 完成每一條數據N的寫入。最后,將M遍歷完成,在Bearing文件寫入查詢到的所有數據M, 然后存儲表格文件,將文件從系統導出,完成系統軸承數據的導出工作。
軸承數據導出如圖3-23所示。
圖 3-23 軸承數據導出圖
軸承管理關鍵接口如表 3.3 所示,主要包含對軸承數據的增加、修改、查詢、審核、導出。
表 3.3 軸承管理關鍵接口
接口名稱 接口描述 請求方式 接口參數 返回結果
{"id":int,"code":"string","bearing_type":
{"name":"string","id":int},"company":{"id":0,"
接口名稱 接口描述 請求方式 接口參數 返回結果
{"id":int,"code":"string","bearing_type":
id,code,company, {"name": "string","id": int},"company": {"id":
/bearing/beari 修改軸承信息 PUT bearing_type,colu 0,"name":"string","attr":"string"},"column_pro
ng/id mn_properties,in perties": [{"value": "string","property": {"id":
dustrie int,"name":"string","group":{"name":"string","i
d":int}}}],"state":int,"reason": "string"}}等
/bearing/beari 審核軸承信息 PUT id {code,msg,state}
ng/id/review d、D、code、 {'Content-Type':'application/ms-excel'
/bearing/beari 導出軸承信息 GET company、 'Content-Disposition':f'attachment;
ng daterange 等 filename="string.xls"',"filename":f'string.xls'
Access-Control-Expose-Headers': filename'}
/bearing/beari 刪除軸承信息 DELETE id {code,msg}
ng/id
3.3信息管理模塊
信息管理模塊主要管理系統中與軸承數據相關的一些信息,如軸承字段屬性、軸承知識庫、 軸承圖片庫、軸承類型、軸承行業應用、軸承品牌、軸承材料、軸承部位等信息。本節在上一節 軸承數據管理的基礎上論述信息管理模塊的設計與實現。
3.3.1軸承類型
軸承數據資源總量巨大、組成復雜,為了更好地管理利用軸承數據資源,所以通過將軸承數 據資源按照軸承類型不同分類來管理軸承數據。此外,系統設計了軸承類型樹和軸承類型父子級, 使系統用戶可更加直觀的了解系統所存儲的軸承類型及軸承類型分布。
圖 3-24 軸承類型管理類圖
軸承類型管理類圖如圖3-24所示。BearingType是軸承類型實體類,BearingTypeView與 BearingTypeTrees 是軸承類型控制類。 BearingTypeView 類負責軸承類型的增加、刪除、查看、 修改功能。 BearingTypeTree 類負責軸承類型的父子級類型樹的展示。軸承類型的增加、查看以 及軸承類型樹的獲取與之前部分模塊相似,故不一一描述。
軸承類型修改、刪除流程圖如圖 3-25 所示。
圖 3-25 軸承類型修改、刪除流程圖
軸承類型修改流程如下:通過調用 BearingTypeView 軸承類型控制類的 PUT 方法完成修改 操作。首先查找需要修改的軸承類型并實例化為M,判斷此軸承類型是否存在,若不存在,則 報404錯誤。接著從輸入的修改數據A中獲取到A.parent,然后在現有的軸承類型中查找此parent, 若 parent 存在且 M 是 parent 的子級,則將 A 賦值給 M 完成修改。若 M 不在 Parent 子級中,則 將parent的子級遍歷得到C,重新判斷M是否在C中,若在C中則將A賦值給M完成修改, 否則,則報錯CommenError(樹形不可循環)。
軸承類型刪除流程如下:通過調用 BearingTypeView 軸承類型控制類的 DELETE 方法完成操 作。首先查找需要刪除的軸承類型并實例化為M,判斷此軸承類型是否存在,若不存在,報404 錯誤。然后判斷 M 的子級數量是否大于 0,因軸承類型的父子級是樹狀結構,故只能從最底端 刪除。若子級數量大于零,說明該軸承類型不是最底端,則會報出CommenError(請刪除子節點) 錯誤;若子級數量不大于零,則說明該軸承類型處于最底端,可以直接刪除,然后提交數據庫刪 除,完成軸承類型刪除流程。
3.3.2字段屬性
軸承種類繁多,軸承數據屬性復雜,軸承數據屬性簡略圖如圖 3-26 所示。
每一條軸承數據主要由主要尺寸、系數、公稱型號、常數等部分組成,而上述各部分又由眾 多字段屬性組成。字段屬性組類主要包含公稱型號、主要尺寸、安裝尺寸、基本額定負載、系數 等。每一個字段屬性組包含多個字段屬性,如公稱型號字段屬性組包含以下字段屬性:一般公稱 型號、帶止動環、帶防塵蓋、背面組合DB、正面組合DF等;主要尺寸字段屬性組包含以下字 段屬性:內徑d、外徑D、寬度B等。
為了方便軸承數據的錄入、查詢以及增強系統軸承數據的管理維護性和可拓展性,本系統在 設計時創建字段屬性表、屬性組表。這樣,通過字段屬性組與字段屬性的組合,可有效拓展軸承 數據的應用,化解軸承數據繁多、復雜的難題。
當系統管理員管理系統字段屬性時,可以增加、查看、刪除、修改系統當前的字段屬性、屬 性組。實現字段屬性類圖如圖 3-27 所示。
Bearing是軸承實體類,ColumnPropertyGroup是字段屬性組實體類,ColumnProperty是字段 屬性實體類,BearingColumnProperty是軸承字段屬性實體類。ColumnPropertyGroupView是字段 屬性分組控制類負責字段屬性組的增加、刪除、修改、查看。ColumnPropertyView是字段屬性控 制類,負責字段屬性的增加、刪除、修改、查看。
因字段屬性與字段屬性組的實現過程較簡單,故不一一描述。
3.3.3其他信息管理
軸承相關其他信息信息管理包括軸承知識庫、軸承圖片庫、軸承行業應用、軸承材料等,因 其設計實現原理與之前部分模塊較類似,故不一一描述。信息管理關鍵接口如表 3.4 所示。
表 3.4 信息管理關鍵接口
接口名稱 接口描述 請求方式 接口參數 返回結果
{[{"id":0,"name":"string","rank":0,"children":
/bearing/bear 查看軸承類型樹 GET 無 {},"parent":{"name":"string","id":0 }}],
ing_type/tree "extra_data": {}}
/bearing/bear 添加軸承類型 POST name,parent, {"id":int,"name": "string","rank": int,"parent":
ing_type rank {"name": "string","id": int}
/bearing/colu 添加字段屬性 POST name,group, {"id": int,"name": "string","group":
mn_property rank {"name": "string","id": int},"rank": int}
/bearing/colu id,name, {"id": int,"name": "string","group":
mn_property 修改字段屬性 PUT group,rank {"name": "string","id": int},"rank": int}
/id
/bearing/colu name,rank, {"id":int,"name":"string",
添加字段屬性分
mn_property 組 POST description "description":"string","rank": int}
_group
/bearing/indu 查看行業應用 GET 無 {"id":int,"name":"string",
stry "description":"string" }
/bearing/part 添加軸承部位 POST name {"id": int,"name": "string"}
/bearing/mat 查看軸承材料 GET 無 {"id":int,"name":"string",
erial "description":"string"}
name,content, {"id":int,"name":"string","content":"string",
/bearing/kno 添加知識庫 POST description, "description": "string","archives": ["string"]}
wledge archives
Bearing/kno 查看知識庫 GET 無 {"id":int,"name":"string","content":"string",
wledge "description": "string","archives": ["string"]}
/bearing/ima 獲取圖片庫 GET id {"id":int,"name":"string","url":"string""descri
ges/id ption": "string"}
3.4系統管理模塊
系統管理模塊主要包括軸承信息管理系統首頁軸承相關數據的統計直觀化展示,系統日志的
錄入、查詢、導出功能。本節主要介紹系統首頁數據的統計及登錄、操作日志管理的設計與實現。
3.4.1首頁統計展示
用戶登錄系統后,所看到的系統首頁內容包括系統數據庫當前所存儲軸承類型的種類、軸承 數量、品牌數量、知識庫數量、軸承數據近七日的錄入趨勢、不同品牌軸承的分布情況、以及軸 承類別旭日圖。首頁統計展示類圖如圖 3-28 所示。
圖 3-28 首頁統計展示類圖
Bearing 類是軸承實體類, Company 類是品牌實體類, KnowLedge 類是知識庫實體類, Bearing_Type 類是軸承類型實體類。 Index 類是首頁展示控制類,主要負責首頁的統計展示。用 戶登錄系統后,系統會調用Index控制類的GET方法統計系統數據庫的軸承相關數據返回給前 端展示。首頁展示流程圖如圖 3-29 所示。
圖 3-29 系統首頁統計展示流程圖
首頁統計展示流程如下:
系統獲取數據庫軸承、軸承類型、軸承品牌、知識庫的數量時,通過調用 Index 類的 GET 方法,分別統計軸承、軸承類型、軸承品牌、知識庫的數量,得到統計數據 SL。
軸承數據近七日錄入趨勢,首先通過設置時間區間 End 和 Start 時間戳,確定軸承數據的顯示 時間DT。然后通過軸承表篩選出軸承錄入時間在DT內的數據ZC,將ZC按照錄入時間降序的 的順序進行排列并按照年月日進行分組統計,得到軸承數據近七日錄入趨勢數據 QR。
品牌軸承分布的獲取通過軸承表連接品牌表按照軸承的品牌 id 查詢統計,獲得各品牌軸承 數量的統計數據 PP。
軸承類別旭日圖的獲取通過軸承類型表篩選出父 id 為 None 的數據,然后按照軸承類型的級 別降序進行排列,得到旭日圖數據 XRT。
然后后端將 SL、QR、PP、XRT 數據返回給前端調用,完成首頁統計直觀化展示。
3.4.2系統日志
一個合格的系統不僅僅要求具有高效的運行效率和計算的準確性,還必須兼顧運行的穩定性 和可靠性。軸承信息管理系統設置用戶登錄、操作日志的目的是為了更好地管理維護系統,在系 統運行出現問題時,可以快速找出問題所在,盡量地降低損失。軸承信息管理系統系統日志時序 圖如圖 3-30 所示。
圖 3-30 系統日志時序圖
當系統用戶通過 Web 端訪問系統,系統會將登錄用戶的用戶 id、IP 地址、登錄時間等信息 存儲到登錄日志中。系統管理員可通過查詢用戶名或登錄時間區間來查看用戶登錄的具體信息,
同時可將用戶登錄日志導出到電腦。登錄日志類圖如圖 3-31所示。
圖 3-31 登錄日志類圖
LoginLog是登錄日志實體類,AdminUser是用戶實體類。Login控制類負責用戶的登錄、登 出; LoginLogView 類負責登錄記錄的查詢與導出。
系統用戶登錄時,Login控制類首先驗證用戶身份的合法性,若驗證通過,將LoginLog類 實例化, 通過調用 Request.Remote_Addr 方法來獲取用戶登錄的 IP 地址, 然后通過 Current_App.Logger方法將用戶登錄信息(id、ip、user_id)儲存到用戶登錄日志中,完成用戶 登錄日志的錄入。
系統管理員查看系統用戶登錄日志時,通過調用LoginLogView控制類的GET方法根據用戶 名稱或者登錄的時間區間來查詢用戶登錄情況。
系統管理員導出用戶登錄日志,可根據用戶名或者時間區間調用LoginLogView控制類的 EXPORT方法導出用戶登錄記錄。同時ExportRecordState類用來表示登錄日志的導出狀態。用 戶登錄日志記錄如圖 3-32 所示。
席號 公司 用戶名 操作IP 登陸礪
1 寧戟學 111.113.21.27 2021-03-20T21:01:39
1 ys 111.113.21.27 2021-03-20T21:01:24
3 寧戟學 111.4938.134 2021-03-19115:04:50
4 寧駐學 111.49.73213 2021-03-18723:08:55
5 寧®±學 111.113.21.21 2021-03-16T19:32:59
6 寧豉學 111.113.21.21 2021-03-15T09:17:54
圖 3-32 用戶登錄日志記錄
當系統用戶通過Web端訪問系統,系統會根據用戶請求展示系統資源。同時,系統會將用
戶的相關操作記錄到操作日志表里。系統管理員可通過查詢用戶名來查看用戶操作的具體信息, 同時可將操作日志導出到電腦。操作日志類圖如圖 3-33 所示。
圖 3-33 操作日志類圖
Log 類是日志實體類, AdminUser 是用戶實體類, LogContent 類是日志內容實體類。 LogView 控制類負責操作日志的查詢與導出工作。 Logger 類負責用戶操作日志的記錄工作。
系統用戶登錄后向系統提交相關請求時,會將 Log 類與 LogContent 類實例化,在請求返回 時調用 Logger 類將相關請求如 IP、User_id、Action、Table、Value 等信息錄入到操作日志表中, 完成用戶操作日志的錄入。
系統管理員查看系統用戶操作日志時,通過調用 LogView 控制類的 GET 方法,根據查看用 戶名的方式查詢用戶的具體操作信息。系統管理員導出用戶操作日志,可根據用戶名或者時間區 間調用 LogView 控制類的 EXPORT 方法導出用戶操作記錄。用戶操作記錄如圖 3-34 所示。
涼號 叭作 日志ID 撮伯P 融表所屬 握作源用戶 時間
1 刪除 6055f248bbd0c2db0d95f8a1 111.113.2127 role 寧時 2021-03-20T21:02:00
2 増加 6055f20830419d700895f87a 111.113.21.27 adminuser 寧硯 2021-03-20T21:00:56
3 増加 6055f1d294aca2e25e95f86c 111.11321.27 role 寧/ 2021-03-20T21:00:02
4 増加 6055d141f14f20857c95f8a8 111.113.21.27 bearingcolumnproperty 寧疇 2021-03-20T18:41:05
5 増加 6055d141f14f20857c95f8ab 111.113.21.27 bearing 寧學 2021-03-20T18:41:05
6 修改 6055d141f14f20857c95f8ac 111.113.21.27 bearingcolumnproperty 寧疇 2021-03-20T18:41:05
圖 3-34 操作日志記錄
系統管理模塊關鍵接口如表 3.5 所示。
表 3.5 系統管理關鍵接口
接口名稱 接口描述 請求方式 接口參數 返回結果
{"id":"string","table":"string","column_id":
"string","action":"string,"ip": "string","user":
/system/log 查看系統操作記錄 GET daterange "string","create_time":"date","logs":[{"id": "string","key":"string","last_value":"string", "current_value":"string","comment":"string"," create_time": "date"}]}]}
/system/login_l
og 查看系統登錄記錄 GET daterange {"id":"string","ip":"string","user":"string","cre ate_time":"date","custom": "string"}
{'panel':{'zhouchengzhonglei':string,
'zhouchengshuliang':zint,zhishiku':
/bearing/dashb
oard 系統首頁展示 GET 無 string,'pinpaishuliang':int,},"zhouchengshujulu ru7days":string,"pinpai": [{'name': i[0],
'count':i[1]}foriinpinpai],"xuritu":marshal(xuri tu,output_model)} {'Content-Type':'application/ms-excel'
/system/login_l
og 登錄日志導出 GET daterange 'Content-Disposition':f'attachment; filename="string.xls"',"filename":f'string.xls 'Access-Control-Expose-Headers': 'filename'}
3.5本章小結
本章主要通過使用類圖、流程圖、時序圖等方式對軸承信息管理系統的用戶管理模塊、軸承 數據管理模塊、信息管理模塊、系統管理模塊四大模塊設計與實現的過程進行了詳細論述,主要 包括用戶信息管理;軸承數據的添加、查詢、導出;軸承類型、字段屬性的管理;系統數據的統 計以及日志的生成及導出等,為接下來的系統后端測試做好鋪墊。
第四章 軸承信息管理系統后端的測試與分析
系統測試是對設計完成的系統后端進行功能和性能的驗證,旨在發現系統存在的問題并解 決,確保系統在上線以后能夠保持穩定運行。本章將對設計完成的軸承信息管理系統后端進行測 試,主要包括系統業務功能及系統性能的測試,然后對測試結果進行相對應的分析。
4.1測試方案
4.1.1測試目標
系統后端測試主要是對系統后端接口進行測試,接口測試的重點是檢查接口間的數據交互、 管理的過程,以及系統各功能模塊間的相互邏輯關系。接口測試可分為單接口測試和多接口組合 測試。單接口測試是測試單個接口,主要對單個接口多種用戶請求的業務邏輯進行判斷;而多接 口組合測試是測試一組相互之間有依賴關系的接口,通過組合相關接口實現流程的串聯與驗證。
在系統的業務功能測試中,主要對接口的輸入參數與輸出參數進行驗證。如可進行正常的以 及可能出現錯誤的參數測試,對參數類型、可選參數、特殊字符等進行驗證。在系統性能測試中, 通過模擬不同的系統負載情況,獲取系統的平均響應時間、最短、最長響應時間、成功傳輸次數、 測試傳輸數據量等關鍵指標,以評估系統應對不同工作負荷時的性能[39]。
4.1.2測試方法
為測試系統的可靠性與性能,本文對系統后端進行接口功能測試和接口壓力測試。在系統功 能測試方面,使用Swagger在線文檔工具對功能模塊接口進行單接口與多接口測試,評估接口的 業務邏輯是否正確。在系統性能測試方面,因系統功能模塊接口較多,所以選擇較重要的接口進 行壓力負載測試,使用的是較流行的Seige工具。
4.2功能測試
本節將根據系統需求、前后端接口文檔以及系統各功能模塊所具有的功能,對軸承信息管理 系統后端的主要業務功能進行測試。
4.2.1系統用戶登錄
用戶登錄系統時需要輸入賬號、密碼、驗證碼參數驗證用戶身份,為模擬用戶在登錄系統時 經常出現的錯誤情況,本文對賬號、密碼、驗證碼參數進行了空值、錯誤值測試,具體測試用例 見表 4.1。
表 4.1 用戶登錄具體用例
圖 4-1 Swagger 在線測試圖
用戶登錄接口功能測試,通過在 Swagger 工具輸入登錄所需的參數后查看所測接口的響應結
果,返回信息如圖4-1所示。在對用戶登錄接口測試后,對比測試用例的預期結果和測試結果可 知,用戶登錄功能接口正常,符合系統設計要求。
4.2.2用戶管理
用戶管理功能測試從系統管理員添加、刪除、查詢系統用戶信息;普通用戶修改、查看個人 信息等方面進行測試,具體測試用例見表 4.2。
用例編號 表 4.2 用戶管理具體用例
UC-TEST-2
測試內容 軸承信息管理系統用戶管理
測試目的 驗證系統用戶的增、刪、改、查功能
預置條件 為系統管理員賦予管理系統用戶的權限,普通用戶擁有查看、修改賬號信息的權限
預制數據 系統數據庫存有管理員與普通用戶測試用戶 1 的數據
測試步驟 操作描述 預期結果 測試結果
1 管理員新增系統用戶,手機號為 666,正確 返回錯誤提示“手機號格式不正確” 符合 輸入其他參數數據
2 管理員新增系統用戶,正確輸入所有參數數 返回“創建用戶成功”,并更新系統 符合 據,用戶名為測試用戶 2 數據庫
3 管理員新增系統用戶,正確輸入所有參數數 返回錯誤提示“該用戶已存在,不能 符合 據,用戶名為測試用戶 2 重復注冊”
4 管理員查詢系統用戶,查詢條件為用戶名: 返回測試用戶 1 的賬號信息 符合
測試用戶 1
5 管理員刪除系統用戶,刪除條件為用戶名: 返回測試用戶 2 刪除成功,并更新系 符合 測試用戶 2 統數據庫
6 普通用戶 1修改手機號,正確輸入手機號: 返回“用戶信息修改成功”,并更新 符合 18888888888 數據庫
7 系統用戶 1登錄系統查看個人賬號信息 返回系統用戶 1 賬號信息 符合
在用戶管理部分測試中,對用戶的關鍵參數如用戶名、手機號等進行了格式與重復性驗證, 用戶管理接口測試用例的測試結果同預期結果一致,錯誤提示信息正確,符合設計要求。
4.2.3權限管理
權限管理是維護系統平穩運行的關鍵部分,權限管理測試一方面要驗證所設計的用戶-角色- 菜單權限管理模型的合理性及是否符合系統用戶的等級劃分,另一方面也要驗證系統管理員對系 統用戶權限的管理,權限管理測試用例見表 4.3。
表 4.3 權限管理系統用例
用例編號 UC-TEST-3
測試內容 軸承信息管理系統權限管理
測試目的 驗證用戶角色、菜單的增、刪、改、查功能以及能否正確訪問資源
預置條件 為系統管理員賦予權限管理權限
預制數據 系統數據庫存在管理員與普通用戶測試用戶 1 數據
測試步驟 操作描述 預期結果 測試結果
管理員新增系統菜單,名稱軸承功能查看, 返回“新增系統菜單成功”,并更新
1 正確輸入其他參數數據 數據庫 menu 表 符合
管理員新增系統角色,名稱普通用戶,正確 返回“新增系統角色成功”并更新數
2 輸入其他參數數據 據庫 role 表 符合
3 管理員查看系統角色樹 返回系統現有所有角色 符合
返回“操作成功”,并更新數據庫
管理員為測試用戶 1 添加角色普通用戶,添
4 adminuser_role、roles、rolemenu 符合
加軸承查看菜單
表
5 測試用戶 1 執行軸承查看操作 返回查看軸承數據 符合
6 測試用戶 1 執行軸承導出操作 返回無權限操作提示 符合
返回“更改成功”,并更新數據庫
7 管理員刪除測試用戶 1 的軸承查看權限 rolemenu 表 符合
8 測試用戶 1 執行軸承查看操作 返回返回無權限操作提示 符合
在權限管理功能測試中,對新增系統菜單、新增系統角色、添加用戶角色、查看系統角色、 執行權限等進行了測試,測試用例的測試結果同預期結果一致。系統的用戶-角色-菜單的權限管 理模型實現了合理的權限控制機制,對于用戶擁有的菜單權限給與可訪問的權限操作;對于用戶 未擁有的菜單權限給與限制訪問并附帶無權限提示操作,符合設計要求。
4.2.4軸承管理
軸承管理是系統的核心模塊之一,本文主要從系統管理員增加、刪除、修改、查詢、審核、 導出軸承數據等方面進行測試。軸承管理測試用例如表 4.4。
表 4.4 軸承管理系統用例
用例編號 UC-TEST-4
測試內容 軸承信息管理系統軸承管理
測試目的 驗證系統軸承信息增加、刪除、修改、查詢、審核、導出功能
預置條件 系統管理員擁有系統軸承管理權限
預制數據 系統數據庫已有部分軸承相關數據
測試步驟 操作描述 預期結果 測試結果
1 管理員新增軸承數據,軸承代號為 8205,
正確輸入其他信息 返回“新增軸承成功”,并更新數據 庫 bearing 表及其他附屬表 符合
2 管理員審核軸承 8205 數據,軸承數據正確,
審核通過 返回“審核通過”,并更新數據庫
bearing 表 符合
3 管理員查詢軸承數據,查詢條件為軸承代
號:8205 返回軸承代號為 8205的數據 符合
4 管理員修改軸承代號 8205數據,更改軸承
材料 返回“修改成功”,并更新數據庫
bearing、bearing_part_material 表 符合
5 管理員導出軸承數據 返回“導出數據成功”,文件名為
bearing 的 xls 文件 符合
6 管理員刪除軸承代號為 8205的數據 返回“刪除成功”,并更新數據庫
bearing 表及其他附屬表 符合
在測試軸承管理模塊的過程中,對軸承數據進行了添加、審核、查詢、修改、導出、刪除等
功能的測試,測試用例的測試結果同預期結果一致,符合設計要求。
4.2.5信息管理
信息管理是本系統軸承管理模塊的輔助模塊,對本模塊測試可以驗證該模塊對軸承管理模塊 的支持作用,信息管理測試用例如表 4.5。
表 4.5 信息管理系統用例
用例編號 UC-TEST-5
測試內容 軸承信息管理系統信息管理
測試目的 驗證系統信息增加、刪除、修改、查詢功能
預置條件 系統管理員擁有系統信息管理權限
預制數據 數據庫內存以下信息數據:軸承類型:滾動軸承;品牌:舍弗勒,捷太格特;材料:滲碳鋼;
軸承部位:保持架;字段屬性:d、D;知識庫:滾動軸承防銹包裝
測試步驟 操作描述 預期結果 測試結果
1 管理員新增軸承類型-滑動軸承 返回“新增軸承類型成功”,并更新數據庫
bearing_type 表 符合
2 管理員查看軸承品牌 返回軸承品牌:舍弗勒、捷太格特 符合
3 管理員新增軸承材料-陶瓷 返回“新增材料成功”,并更新數據庫
material 表 符合
4 管理員新增軸承部位-滾動體 返回“新增軸承部位成功”
bearingpart 表 ,并更新數據庫 符合
5 管理員刪除系統字段屬性D 返回“刪除成功”,并更新 column_property 表 符合
6 管理員修改知識庫:滾動軸承防銹包
裝-部分內容 返回“修改知識庫成功”,
knowledge 表 并更新數據庫 符合
在測試信息管理模塊過程中,對信息管理的部分軸承數據進行了添加、查詢、修改等功能的 測試,測試用例的測試結果同預期結果一致,符合設計要求。
4.2.6系統管理
系統管理模塊對系統軸承數據資源的統計直觀化顯示與系統的日常平穩運行發揮著重要的 作用,系統管理模塊測試用例如圖 4.6 所示。
表 4.6 系統管理系統用例
用例編號 UC-TEST-6
測試內容 軸承信息管理系統系統管理
測試目的 驗證系統首頁信息統計、日志的查看、導出功能
預置條件 系統管理員擁有系統管理權限
預制數據 已有部分軸承數據、測試用戶 1 的日志記錄
測試步驟 操作描述 預期結果 測試結果
1 管理員查看系統首頁信息 返回軸承、種類、知識庫、品牌數量、近七 日錄入趨勢、品牌分布、類別旭日圖數據 符合
2 管理員查看某個時間區間系統用戶
登錄日志 返回某個時間區間系統用戶登錄日志 符合
3 管理員查看某個時間區間系統用戶
操作日志 返回某個時間區間系統操作日志 符合
4 管理員導出用戶登錄日志 返回“導出用戶日志成功”,文件名為 login log 的 xls 文件 符合
系統管理模塊測從系統首頁信息統計展示、登錄日志、操作日志的查詢、導出等功能進行, 測試用例的測試結果同預期結果一致,符合設計要求。
4.3性能測試
Seige 是一個輕量壓力測試工具,主要用于 Web 開發壓力測試。它可以模擬多用戶對 Web 系統進行訪問測試,在測試時,首選設定要測試的 URL 路徑,然后配置測試線程,通過調整線 程數和循環次數,測試不同請求條件下系統平均響應時間與傳輸成功率等指標,以此反映系統的 性能。
本系統負載性能測試選取/dashboard接口,此接口負責系統首頁數據統計,測試條件如下:
測試 1:并發 50,循環次數 200。測試 2:并發 100,循環次數 100。測試 3:并發 200,循 環次數 50。測試結果如表 4.7 所示。
表 4.7 系統性能測試表
Transcations Response
Time Shortest
Transaction Longest
Transaction Successful
Transactions Data
Transferred
測試 1 10000 127 1 586 10000 4.02
測試 2 10000 226 1 863 10000 4.02
測試 3 10000 681 1 1635 10000 4.02
注:Transcations表示總訪問次數,Response Time表示平均響應時間(單位/毫秒),Shortest Transaction表示最短響應時 間,Longest Transaction表示最長響應時間,Successful Transactions表示成功傳輸次數,Data Transferred表示測試傳輸數據 量(單位/Mb)。
由表 4.7 可知,隨著系統接口測試線程數的增加,系統的平均響應時間也在增加,根據第二 章系統性能需求,在系統并發量為 100 時,平均響應時間為 226 毫秒,請求成功率 100%,滿足 系統性能設計要求。
4.4測試結果分析
從上述系統功能測試與性能測試結果可知,在系統功能方面,系統后端接口業務功能運行正 常,符合系統各模塊功能的設計要求;在系統性能方面,系統響應時間等多項關鍵參數可滿足(貝 銀)銀川軸承研究院的實際需求,符合系統系統性能設計需求。
4.5本章小結
本章通過使用Swagger接口工具和Seige壓力測試工具對系統后端進行了功能測試和性能測 試。在功能測試中,通過采用建立系統用例的方式對各模塊的重要功能進行測試,驗證了系統功 能的業務邏輯。在性能測試中,通過設定 URL 路徑,配置線程與循環次數進行系統性能測試, 獲取系統的平均響應時間、最短、最長響應時間、成功傳輸次數、測試傳輸數據量等數據。最后 對測試結果進行分析,完成系統測試。
第五章 滾動軸承壽命計算系統的設計實現
軸承廣泛應用于工業各領域,軸承的使用壽命、運轉穩定性等會影響設備的正常運轉,軸承 的使用壽命是判斷軸承性能優劣的關鍵指標。軸承的壽命計算是軸承設計和軸承選型中非常重要 的環節,但當前人力進行軸承壽命計算存在計算繁瑣、精度不高等問題[40]。因此為有效提高設計 人員的設計效率和設計精度,降低設計人員的錯誤率,設計實現了滾動軸承壽命計算系統。
5.1滾動軸承疲勞壽命計算理論分析
5.1.1滾動軸承壽命計算方法分析
滾動軸承在承受載荷旋轉工作時,軸承滾動體會與套圈發生滾動摩擦,致使軸承產生疲勞磨 損,進而產生點蝕破壞,影響軸承的正常運轉。滾動軸承的壽命,是指軸承在相關載荷作用下, 軸承出現點蝕破壞前所經歷的圈數或小時數,稱之為軸承壽命[41]。考慮到滾動軸承在使用時工況 參數不可能完全一致,所以軸承的實際使用壽命也會有所區別,因此不能將同一批次軸承的極限 壽命作為標準軸承壽命。現規定,一組相同型號、運動工況下運轉的軸承,將其工作可靠度百分 之九十時的壽命定為標準軸承壽命[42]。
滾動軸承的疲勞壽命計算理論發展經歷了包括 Weibull 金屬疲勞概率法、載荷容量理論、
L— P理論、壽命修正理論、新壽命理論、IS0281:1990/Amd.l:2000、IS0281:2007理論等幾個階 段[43]。
Weibull 金屬疲勞概率法與載荷容量理論僅闡述了影響滾動軸承壽命不同因素間的比例關 系,沒有推導出實際的計算公式,因此在預測滾動軸承壽命方面有一定的局限性[44]。
Lundberg等人通過Weibull金屬疲勞概率法提出了最大動態剪切應力理論,隨著該理論的發 展和應用,工程師們結合Hertz彈性接觸理論和Palmgren額定動載荷理論推導出用于計算軸承壽 命的L— P模型,其計算公式為:
5-1 )
式中,L— P為軸承基本額定壽命;C為基本額定動載荷;P為當量動載荷;£為指數,對于球
隨著科技的發展和機械加工技術的不斷進步,滾動軸承的實際使用壽命與基本額定壽命之間 出現了較大偏差,為了減少誤差影響,使滾動軸承的壽命計算更加的符合實際,研究人員將L— P 模型進行了修正驗算,推導出了修正額定壽命計算公式,其計算公式為:
式中,Lna為軸承基本額定壽命;a】為可靠性系數;a2為材料系數;a3為使用條件系數。
但修正額定壽命計算公式不為給出材料系數與使用條件系數具體的實驗結果,因此操作性不強。 新壽命計算理論把影響軸承壽命的因素轉化為一個綜合影響系數 aSKF [45]。新壽命理論的計 算公式為:
式中,aSKF綜合影響系數,涵蓋了影響軸承壽命的因素。如材料特性、潤滑條件、接觸表面 粗糙度等,但各因素的計算沒有形成統一標準,因此使用困難[44]。
ISO281:1990/Amd1:2000 理論同新壽命計算理論類似使用也較困難。
2007 年,國際標準化組織在最新的軸承動態負載標準 ISO281:2007 中采用了 SKF 公司的軸 承壽命理論[46],將疲勞極限、潤滑條件和污染情況等因素考慮在內,提出了新修正的軸承壽命計 算公式。該公式為
Lnm= a1 aISO L10 (5-4)
式中,Lnm是軸承新修正額定壽命,a1是軸承可靠度修正系數,aISO是壽命修正系數,L10 是基本額定壽命。其中,aISO壽命修正系數,是由污染系數ec、疲勞載荷極限C”、當量動載荷P、 黏度比k組成的復雜函數[41]。aISO壽命修正系數可表示為:
C
a iso = / ,k) (5-5)
下面對可靠度修正系數a1和壽命修正系數030做簡要介紹。
(1)可靠度修正系數 a1
可靠度可簡單理解為幸存概率。軸承可靠性修正系數a】與可靠度S的關系如表5.1。
表 5.1 可靠度修正系數與可靠度對應關系
可靠度修正系數4
90
0.64
0.55
0.47
0.37
0.25 0.077
(2)壽命修正系數 aIso 軸承的使用壽命與軸承材料關系密切,不同材料的軸承其壽命區別較大。在新修正的軸承壽 命計算公式中,壽命修正系數考慮了軸承材料的影響,引入了下面的計算公式[40]:
式中: Cu 為疲勞載荷極限, N。
1. 疲勞載荷極限的計算
疲勞載荷極限較難計算,通常用簡易方法計算。疲勞載荷極限簡化計算方法如表5.2所示[46]。
表 5.2 疲勞載荷極限簡易計算方法
軸承類型
上表中C0為軸承額定靜載荷,DPW為軸承滾動體節圓直徑。DPW計算公式為:
Dpw = (D + d )/2
式中: d 為軸承內徑, mm, D 為軸承外徑, mm。
2. 壽命修正系數的計算 軸承在工作運轉時,其使用壽命受工作環境的潤滑與清潔影響較大。相同型號的軸承在不同
潤滑條件下的使用壽命差距也很大[47-48]。所以考慮到軸承運轉時潤滑情況對軸承壽命的影響,在 壽命修正系數中引入了潤滑油的粘度比k。軸承在運轉過程中是否得到有效潤滑主要取決于添加 潤滑劑后,軸承滾動接觸表面的分離程度[41]。潤滑劑將軸承滾動體與滾道的接觸面分離所需條件 常用粘度比k來表達[46],粘度比計算公式為:
v
k = — (5-8)
v1
式中:v為實際運動粘度,mm2 / s ; v1為參考運動粘度,mm2 /s。v1由下面公式來計算:
f45000n-0.83DPW心 t n < 1000r/min
V1 = { 05—PW05 (5-9)
1 4500n~0-5DPW_0-5 t n > 1000r/min
C
根據當前滾動軸承壽命計算的研究現狀,壽命修正系數aISO的取值應控制在50以內,e^^ 的適用范圍大于5時也可以使用。當k > 4時,按k = 4來計算;當k < 0.1時,依據當前經驗還沒 有相應的計算公式[46]。依據ISO281:2007標準,不同類型軸承的壽命修正系數計算公式如表5.3 所示。
軸承類型
向心球軸承
向心滾子軸承
推力球軸承
推力滾子軸承
表 5.3 壽命修正系數計算公式
當 0.1 < k < 0.4 時,
aiSO = °.】
當 0.4 < k < 1 時,aiSo - 0.1
當 1 < k < 4 時,aiso - 0.1
當 0.1 < k < 0.4 時,aiso - 0.1
當 0.4 < k < 1 時,aiso - 0.1
當 1 < k < 4 時,a1So - 0.1
計算公式
1 -I 2.5671 —
2.2649
k 0.054381
1
3
1
3
( 1 9987
1 -I 2.5671 -嚴7
1-]2.5671 -芽「
-9.3
-9.3
1-(1.5859 -障 K 辛 T4
1-(1.5859 -潭 K 辛 T4
1-(1.5859 -片 V 學 T
當 0.1 < k < 0.4 時,aiso - 0.1
當 0.4 < k <1時, aiso - 0.1
當1 < k < 4時, aiso - 0.1
-9.185
-9.185
-9.185
「I2.5671 -洱「]倉[
當 0.1 < k < 0.4 時,aiso - 0.1
當0.4 < k < 1時, aiso - 0.1
-9.3
( 1.9987
1 -I 2.5671 -嚴7
1
3
( 1.9987
1 -12.5671 -押苗
-9.3
1-(1.5859 -障 X ec r
-9.185
1-(1.5859 -潭 K % 7
-9.185
軸承類型
當 1 < k < 4 時,a [so = 0.1
1-[1.5859 -泮 X 筒 T
—9.185
滾動軸承的污染系數ec可根據軸承運行環境的污染級別和軸承滾動體的節圓直徑來確定。 依據IS0281:2007標準,軸承污染系數如表5.4。
表 5.4 污染系數 ec
污染級別
5.1.2滾動軸承額定動載荷計算
軸承的基本額定動載荷C是在假定的運轉條件下確定的軸承承載能力,假定條件是,向心軸 承僅承受徑向載荷Fr,推力軸承僅承受軸向載荷Fa Bl。額定動載荷可通過查詢系統數據庫獲得。 在高溫使用時,軸承硬度會下降,比疲勞壽命常溫使用降低。
研究發現滾動軸承最理想的工作溫度是低于120°C,對于工作溫度高于120°C的軸承,考慮 到溫度影響,引入溫度系數f H2]。所以,基本額定動載荷C需要進行修正,修正如下:
Ct = ftC (5-10
式中,C是根據使用溫度修正后的基本額定動載荷、C是基本額定動載荷、f是溫度系數。 ft 如表 5.5 所示。
表 5.5 溫度系數 ft 表
工作溫度/C ft 工作溫度/C ft
<120 1 225 0.75
125 0.95 250 0.7
150 0.9 300 0.6
175 0.85 350 0.5
200 0.8 400 0.4
5.1.3滾動軸承當量動載荷計算
軸承在工作運轉中,經常會同時承受徑向載荷Fr和軸向載荷Fa。因此,在進行軸承壽命計 算時,必須把軸承承受的實際載荷轉換為與確定基本額定動載荷條件相一致的當量動載荷P來計 算。對于以承受徑向載荷為主的軸承,稱為徑向當量動載荷,用Pr表示;對于以承受軸向載荷 為主的軸承,稱為軸向當量動載荷,用Pa表示[49]。
(1)恒定載荷下軸承當量動載荷的計算
當量動載荷的計算公式如下
P = XFr + YFa (5-11)
對于只能承受純徑向載荷的軸承
P = Fr (5-12)
對于只能承受純軸向載荷的軸承
P = Fa (5-13)
式中,X為徑向動載荷系數,Y為軸向動載荷系數,Fr為徑向載荷,Fa為軸向載荷。不 同類型的軸承其當量動載荷的計算方法不同,需根據實際情況選擇。
(2)沖擊載荷下的當量動載荷的計算 在實際工作運轉中,軸承運轉時會承受一些附加載荷,如沖擊力、慣性力等,這會給軸承壽 命計算帶來一定誤差,所以為了計算這些影響,可對當量動載荷引入一個依據經驗推導的載荷系 數 fd ,其值可見表 5.6。因此在實際計算中,軸承的當量動載荷為:
P =力(XFr + YFa)
P= fdFr
P= fdFa
表 5.6 載荷系數 fd (5-14)
(5-15)
(5-16)
載荷性質 fd 應用舉例
無沖擊或輕微沖擊 1.0-1.2 電機、汽輪機、水泵等
中等沖擊 1.2-1.8 車輛、機床、起重機等
強大沖擊 1.8-3.0 破碎機、石油鉆機、振動篩等
5.2滾動軸承壽命計算系統的設計
根據上述軸承壽命計算方法的分析可知,滾動軸承壽命計算主要分為基本額定壽命計算和新 修正額定壽命計算,所以本節在設計上述兩種壽命計算方式的基礎上,完成滾動軸承壽命計算系 統的設計。滾動軸承壽命計算系統主要由用戶管理、軸承類型選擇、軸承壽命計算三部分組成, 而軸承壽命計算部分主要由額定動載荷計算、當量動載荷計算、基本額定壽命計算、修正額定壽 命計算四部分組成。軸承壽命計算系統具體構成如圖 5-1 所示。
為滿足不同設計人員的工作需要,方便工作人員的使用,本系統將軸承壽命計算系統設計為 線上、線下兩種模式。線上模式可連接軸承信息管理系統數據庫,用戶可輸入軸承型號查詢軸承 信息,然后輸入軸承工況參數完成軸承壽命計算;線下模式可在單機情況下運行,用戶可直接輸 入軸承基本參數和工況參數完成軸承壽命計算。軸承壽命計算流程圖如圖 5-2 所示。
圖 5-2 軸承壽命計算系統工作流程圖
因滾動軸承壽命計算系統的邏輯構成較簡單且部分功能的設計與前述章節類似,所以本節僅 闡述軸承額定壽命與修正壽命計算部分的設計。滾動軸承壽命計算系統軸承壽命計算部分主要由 zc-*.py、 zc-event-*.py、 set-lnm.py、 formula.py 等相互關聯文件構成。
zc-*.py 文件主要包括 text、 into-zc-*、 clear 函數。 text 函數主要負責檢驗是否有缺少的計算 參數;into-zc-*函數主要負責調用zc-event-*.py、set-lnm.py文件的函數完成不同類型軸承額定壽 命與修正壽命計算;clear函數主要負責將計算完成的數據清空。zc-*.py文件的運行需要導入 zc-event-*.py、 set-lnm.py、 formula.py 文件。
zc-event-*.py文件主要包括zc-*函數。zc-*函數主要負責不同類型軸承當量動載荷P和基本 額定壽命L-h的計算。zc-event-*.py的運行需要導入formula.py文件。
set-lnm.py 文件主要包括 c-u-qiu、 c-u-gun、 aiso-xxq、 aiso-xxgz、 aiso-tlq、 aiso-tlgz、 dpw-k、 zc-*-lnm函數。c-u-qiu、c-u-gun函數主要負責球軸承、滾子軸承疲勞載荷極限的計算;aiso-xxq、 aiso-xxgz、 aiso-tlq、 aiso-tlgz 函數主要負責向心球、向心滾子、推力球、推力滾子軸承壽命修正 系數的計算;dpw-k函數主要負責滾動體節圓直徑和粘度比的計算。zc-*-lnm函數負責不同類型 軸承修正壽命的計算。
formula.py 文件主要包括系統各下拉參數選項字典,如工作可靠度、載荷性質等。在軸承壽 命計算時被其他計算函數調用。
系統在進行計算時,首先調用zc-*.py文件的text函數驗證所輸入參數是否正常,然后根據 所選擇的軸承類型使用into-zc-*函數調用zc-event-*.py、set-lnm.py文件的各函數完成軸承額定壽 命及修正壽命的計算,最后可通過使用clear函數將計算結果進行清空。
為方便設計人員計算,滾動軸承壽命計算系統為系統用戶提供了十種常用的軸承計算服務。 因不同軸承類型計算參數、計算方法不一致,所以下面以深溝球軸承為例闡述軸承壽命計算流程。 深溝球軸承壽命計算流程圖如圖5-3所示。
圖 5-3 深溝球壽命計算流程圖
在滾動軸承壽命計算系統中,滾動軸承基本額定壽命Lh的計算過程依據公式5-1進行計算,
滾動軸承修正額定壽命Lnm的計算過程依據公式5-4進行計算。所以在軸承壽命計算系統的設計 中,為應對不同類型軸承不同工況參數(如工作溫度、工作可靠度、載荷性質、清潔狀況等)條件 函數的運算,使用了包括If-else語句、Elif語句等來進行邏輯判斷,以確保計算的準確性。此外, 因計算所需參數較多,為防止漏填參數導致計算出現錯誤,使用 Except 語句來拋出計算過程中 產生的錯誤。
因計算公式中有較多的條件函數屬于公用函數,所以將如壽命修正系數aiso、當量動載荷P、 粘度比k等函數進行了封裝,提高了系統的開發效率。
5.3滾動軸承壽命計算系統的實現
考慮到軸承壽命計算系統提供線上線下兩種模式且計算系統界面較簡單,所以將軸承壽命計 算系統設計為可單獨運行的 GUI 程序。 GUI 是指采用圖形方式顯示的計算機操作用戶界面[50]。
滾動軸承壽命計算系統是使用 Python 語言的 Tkinter 模塊開發的。 Tkinter 模塊是 Python 內 含的 GUI 設計標準庫,它提供了豐富的窗口組件,使用 Tkinter 可以快速創建 GUI 應用程序。 Tkinter 最突出的優點是簡單、便捷,電腦只需安裝 Python 就可以直接調用 Tkinter 模塊來進行 GUI 界面程序的設計工作。此外,因壽命計算參數較多、公式較復雜,為更好的實現各函數功能, 還使用了 Python 的 Math 庫和 Formula 庫來輔助設計計算。最后,使用 Pyinstaller 庫將驗證成功 的壽命計算系統打包成 exe 程序。
滾動軸承壽命計算系統的界面設計主要用到了 Tkinter模塊的按鈕(Button)、entry(文本框)、 label(標簽)、messagebox(彈窗)、frame(窗口部件)、combobox(下拉列表框)、Radiobutton(單選框)、 listbox(列表框)、checkbutton(復選框)等核心組件,然后通過包括窗口實例化、相關控件定義、控 件屬性設置及控件布局等步驟完成 GUI 軟件界面的開發。依據計算系統使用流程,軸承壽命計 算系統界面分為用戶登錄界面、軸承類型選擇界面及各類軸承壽命計算界面。
用戶登錄界面如圖5-4所示。
滾動軸承修正壽命計算系統
圖 5-4 軸承壽命計算系統登錄界面圖
用戶在使用滾動軸承修正壽命計算系統時需要進行身份驗證,身份驗證失敗,系統會彈出相 應的錯誤提示;身份驗證成功,用戶可進入軸承類型選擇界面。軸承類型選擇界面如圖 5-5 所示。
圖 5-5 軸承類型選擇界面圖
軸承類型選擇界面內羅列了機械設計工作中較常使用的十類軸承,設計人員可根據設計需要 選擇相應的軸承類型進行下一步的軸承參數輸入與壽命計算。因不同類型軸承的計算參數、過程 不同,所以設計了不同軸承類型的計算界面。設計人員選擇好軸承類型后,系統界面會自動跳轉 到對應的軸承壽命計算界面。下面以深溝球軸承為例,深溝球軸承壽命計算界面如圖 5-6 所示。
♦ 信息認證 - 口
滾動軸承修正壽命計算系統
極承型號 查詢
內徑 | mm 蘇動載荷 | N
| mm 荷 | N
SBT 1 N 葩瞬 1 N
咖鞫1 r/min 工恒a® | 丫|攝氏度
工作可焦 "1 ***■« 二1
栽* 運酣度 | mm'2/s
壽鬭•算 斟額&命 h
棒?命 I h
圖 5-6 深溝球軸承壽命計算界面圖
如圖5-6 所示,計算上述不同種類的軸承壽命時,需要輸入所選軸承的基本參數與工況參數, 如軸承型號、接觸角、工作轉速、徑向載荷、軸向載荷等。計算界面中的工作溫度、工作可靠度、 清潔情況、載荷性質等運動工況參數可通過下拉按鈕選取。
因圓錐滾子軸承與角接觸球軸承的滾動體是角接觸狀態,在承受徑向載荷時會通過滾動體傳 遞相應的力,所以會產生派生軸向力[42]。因此在實際使用中,為確保此類軸承的正常運轉,該類 軸承通常是成對使用的,比較常見的安裝方式是正裝和反裝。角接觸球軸承壽命計算界面如圖 5-7 所示。
5.4滾動軸承壽命計算系統的驗證
滾動軸承壽命計算系統設計完成后,為檢驗所設計系統的可靠性,本文使用了參考文獻[42] 上例題的參數,通過將本系統的計算結果與例題結果比較的方式來驗證。例題計算結果如圖 5-8 所示。
參考文獻例題參數如下:軸承類型深溝球軸承,軸承型號6310,軸承徑向載荷Fr = 5500N, 軸承載荷Fa = 2700N,軸承轉速n = 1250r / min,運轉時有輕微沖擊,額定動載荷C = 61800N, 額定靜載荷C0 = 38000N。參考文獻例題計算結果:Lh = 4509.12h。
壽命計算系統計算結果: Lh =4467.669h 。參考文獻例題與壽命計算系統額定壽命計算結 果相差42h,壽命計算誤差為0.93%。所以本系統能較準確地完成滾動軸承壽命的計算。經過分 析,計算誤差產生的原因主要是:一、軸承壽命計算系統在計算軸承基本壽命Lh時,考慮了軸承 工作溫度的影響,致使基本額定動載荷C數值偏小;二、在插值計算軸承載荷系數X、Y時產 生的誤差。
5.5本章小結
本章主要對滾動軸承壽命計算系統進行了分析與設計。首先闡述了滾動軸承壽命計算的發展 概況,介紹了各計算理論的優缺點并選擇使用新修正壽命計算理論作為本計算系統的計算方法。 然后介紹了壽命計算系統計算所需的軸承基本參數及運行工況參數,并對系統的運算流程進行了 分析。最后使用Python內置的Tkinter模塊工具設計實現了軸承壽命計算系統,對壽命計算系統 進行了驗證,并分析了計算誤差產生的原因。
第六章 總結與展望
6.1總結
本文針對當前軸承數據資源存在管理落后、設計人員無法高效利用等問題,設計實現了以管 理利用軸承數據為核心的軸承信息管理系統,可使企業、高校用戶更加高效的從事機械設計工作; 同時也提升了企業的數據管理能力,增強了企業的競爭力。
本文的主要工作如下:
(1)針對當前軸承數據管理使用方面存在的問題以及企業的實際需求,明確了系統功能并 完成了軸承信息管理系統后端的架構設計與功能模塊設計。系統以 Flask 為系統后端框架,使用 MySQL 與 Redis 構建系統數據庫及緩存,以阿里云為系統部署平臺,系統包括用戶管理模塊、 軸承數據管理模塊、信息管理模塊、系統管理模塊以及軸承壽命計算系統。
(2)使用 Pycharm 及 MySQL 設計構建了系統數據庫,針對軸承數據資源復雜、數量大等 特點,本文將軸承數據拆分成由各軸承字段加軸承固有屬性組合的方式來拓展軸承數據資源,最 后通過建立數據表索引、設置緩存等方式優化數據庫來提升系統性能。
(3)完成系統各模塊邏輯業務功能的設計與實現,對RBAC權限管理模型進行了細化拓展, 在角色與權限菜單之間插入用戶動作實現了用戶-角色-菜單附加操作動作的權限管理控制。為更 好的向用戶展示軸承數據資源,采用旭日圖、折線圖等方式展現系統軸承數據情況。
(4)使用Swagger工具和Seige壓力測試工具對設計完成的系統后端進行功能與性能測試, 并對測試結果進行了分析。
(5)研究了滾動軸承壽命計算的理論與方法,使用 Python 內置的 Tkinter 工具完成了滾動 軸承修正壽命計算系統的設計開發,并進行了軸承壽命計算驗證測試。
6.2展望
本文主要設計實現了軸承信息管理系統的后端部分,但由于個人能力有限,所以該系統還存 在著許多研究和改進的地方,具體如下:
(1)隨著工業 4.0 及互聯網產業的迅速發展,傳統產業與線上融合是未來發展的趨勢。所 以應當進一步開發拓展軸承信息管理系統的其他功能模塊(如參數化設計等)以滿足企業實際需 求,同時應聯合其他工業設計系統相互提供接口,實現軸承數據資源共享。
(2)考慮到市面上軸承數據繁多,人工錄入軸承數據存在錯誤率高、效率低等問題,浪費 人力物力資源,所以后續應當開發軸承數據圖像識別,拍照錄入等功能,提高軸承數據的錄入效 率和準確率。
(3)系統上線后,系統所存數據會大量增長,所以應當對系統數據庫內存數據進行統計分 析,將系統數據資源(軸承數據、用戶行為等)進行深度挖掘分析,為系統優化及企業制定戰略 規劃提供幫助。
參考文獻
[1]Goul Miehael, Corral Karen.EnterPrise model management and next generation decision support[J]. deeision support systems, 2007, 43 (3):915-932.
[2]楊歡.國內軸承鋼行業發展現狀及趨勢J].中國鋼鐵業,2019,(07).
[3]何加群.我國軸承行業現狀及發展目標J].機電產品市場,2006,(12).
[4]牛輝.我國軸承產業轉型升級由大到強發展路線圖J].軸承,2014,(04).
[5]李俊源,秦寶榮,陳寶國.基于SmarTeam軟件的特種軸承產品數據管理系統J].輕工機械, 2008,(01).
[6]張興亮,董軍輝.滾動軸承查詢管理系統的研究與開發J].成都電子機械高等專科學校學報, 2008,(03).
[7]董英斌,張靜.機車車輛輪對滾動軸承數據管理系統的開發[J].電腦開發與應用,2005,(06).
[8]胡欣欣.基于B_S的軸承知識管理系統的設計與實現[D].南京:南京航空航天大學,2017.
[9]李育.滾動軸承質量管理系統的設計與實現[J].電腦與電信,2014,(09),52-54.
[10]張海燕.軸承磨削加工工藝數據管理系統的研究與開發[D].長沙:湖南大學,2009.
[11]孫穎.基于SSM的軸承選配與出入庫管理系統的設計與實現[D].北京:北京交通大學,2020.
[12]劉志巍.滾動軸承選擇專家系統[J].機械設計與制造,2001,(04).
[13]黃方毅,趙韓,董玉德等.Web零件庫服務平臺的開發[J].農業機械學報,2007(03):154-15 8.
[14]郭劍鋒,顧新建,祁國寧等.零件庫中基于本體的智能搜索引擎的研究與實現J].浙江大學 學報:工學版, 2007,41(4):639-645.
[15]顧復,張樹有.面向Web零件庫的可拓關聯搜索[J].計算機集成制造系統,2011(04):18-24.
[16]鄧哲.滾動軸承資源庫系統設計一開發及應用[D].大連:大連理工大學,2020.
[17]許明莉.高速精密數控機床軸承全生命周期數據管理系統研發[D].洛陽:河南科技大學, 2015.
[18]中華軸承網.中華軸承網[DB/OL]. http://www.zcwz.com/, 2015-04-05/2014-08-16.
[19]洛軸商城.軸承用進銷存軟件[DB/OL]. http://www.lycmall.com/jinxiaocun-soft-download.html, 2014-12-01/2015-04-07.
[20]Sous.C Machine learning based anomaly detection and classification of acoustic emission events for wear monitoring in sliding bearing systems Journal[J].Tribology InternationalVolume 155, 2021. PP 106811.
[21]Li Shih-Yu A chaotic system-based signal identification Technology: Fault-diagnosis of industrial bearing system Journal[J].MeasurementVolume 171, 2021.
[22]郝曉冰.全壽命周期軸承管理信息系統的設計和實現[D].秦皇島:燕山大學,2012.
[23]Justice, Karleine M.; Dalton, Jeffrey S.; Halliwell, Ian; et al. Lube oil and bearing thermal management system [C]. United States: Proceedings of the ASME Turbo Expo, 2009: 165-175.
[24]Zhang yi chi Rolling Bearing Fault Diagnosis Based on GUI System Journal[J].Journal ofPhysics: Conference SeriesVolume 1754, Issue 1. 2021. PP012138.
[25]Hiroshi Ueno,Tondabayashi. Bearing and management system and method for the same[P]: United States, US 7659818 B2 [P]. 2010-02-09.
[26]胡春亮.基于前后臺分離技術的醫藥代表管理系統的設計和實現[D].蘇州:蘇州大學,2018.
[27]Jin CheQing, Qian WeiNing, etal. Benchmarking data management systems: from traditional database to emergent big data[J].Chinese J.Comput, 2015, 38(1):18-34 .
[28]柳松青.面向對象在數據庫設計中的應用[J].計算機工程與設計,2002,23(8):51-54.
[29]張海燕.軸承磨削加工工藝數據管理系統的研究與開發[D].長沙:湖南大學,2010.
[30]宋文林,郭啟雯.技術成果管理數據庫設計[J].情報理論與實踐,2012,25 (5):382-384..
[31]曾超宇,李金香.redis在高速緩存系統中的應用[J].微型機與應用,2013,32(12):1-13.
[32]范新民.高并發環境下MySQL軟硬件配置優化[J].福建師范大學學報:自然科學版, 2013,04.
[33]李仕偉,周坤等.MYSQL數據庫優化技術[J].信息與電腦:理論版,2016(12).
[34]胡廷波,鐘俊.基于分簇的B+樹數據庫索引優化算法[J].計算機應用,2013,33(9): 2474 - 2476.
[35]陳堅強.DB2數據庫索引性能調整與優化[D].上海:上海交通大學,2010.
[36]王珊,吳鷗琦.B+樹效率分析和組織聚集索引的算法J].計算機研究與發展,1982,6(11):
10-17.
[37]宗佳佳.救護隊應急救援管理系統的后端設計與實現[D].西安:西安科技大學,2020.
[38]Kalimoldayev M.N., Biyashev R.G., Rog O.A.Analysis of the methods for attribute- based access control[J]. Prikladnaya Diskretnaya Matematika, 2019, 44:43-57.
[39]任華.利用Seige進行Web性能測試的研究[J].智能計算機與應用,2012, 2
[40]李俊文,陳玉蓮.基于MATLAB GUI的滾動軸承修正額定壽命計算系統[J].機電工程, 2020(11).
[41]王歡,王紅霞.滾動軸承壽命計算中當量動載荷的確定[J].機械制造與自動化,2009(08).
[42]濮良貴,陳國定,吳立言.機械設計[M].北京:高等教育出版社,2014.
[43]鄢建輝,李興林,蔣萬里等.軸承疲勞壽命理論的新進展[J].軸承,2005(11):38-44.
[44]朱亮亮,林素敏等.滾動軸承壽命計算方法的優化[J].設計與研究,2015(2).
[45]朱亮亮,高矚等.基于多重因素的滾動軸承壽命計算新方法[J].設計與研究,2015(11).
[46]ISO 281: 2007, Rolling bearings-dynamic load ratings and rating life[S].IX-ISO, 2007: 20-28.
[47]王征兵,劉忠明.滾動軸承擴展壽命計算方法及影響因素研究[J].機械傳動,2011,35( 12).
[48]雷群,張翰乾等.基于加速壽命的機床主軸軸承壽命研究[J].機電工程技術,2019,48( 8):
9-11.
[49]GBT 6391-2010,滾動軸承額定動載荷和額定壽命[S].洛陽:洛陽軸承研究所,2011: 17-18.
[50]楊欽,徐永安,翟紅英.計算機圖形學[M].北京:清華大學出版社,2005.