谘詢電話

ENGLISH0755-88840386
新聞中心

谘詢電話

0755-88840386
您的位置:首頁 > K8凯发大酒店天生赢家專題 > 專業技術專題 > 工業自動化稱重儀表>詳情頁

基於構件重用技術的嵌入式稱重物聯網的開發

發布時間:2021-07-06 14:52:41 |來源:網絡轉載

嵌入式稱重物聯網的開發,包括硬件設計和軟件設計兩個過程。近年來,隨著微控製器MCU)內部Flash存儲器可靠性的提高以及擦除/寫入方法的變化,內部RAM及Flash存儲器容量的增大,以及外部模塊內置化程度的提高,設計複雜性、設計規模及開發手段已經發生了根本變期化,使得硬件設計變得越來越複雜,軟件的份量也急劇增加。但是,我們的開發方法卻顯得比較落後。如在硬件設計時,開發人員缺乏統一的設計規範,往往是憑個人工作經驗和習慣的積累進行設計,當開發完一個嵌入式應用係統再進行下一個應用係統開發時,硬件電路原理圖往往需要從零開始,重新繪製,造成時間和精力的浪費,而且還容易出錯;在軟件開發時,開發人員缺乏軟件工程的思想支撐,缺少標準化、文檔化的管理,軟件的通用性、可移植性和可複用性較差,給開發人員之間的交流及日後係統的維護帶來很大的困難。以上問題導致的結果是係統開發周期長,效率低。基於構件重用技術的開發思想,在一定程度上能解決這些問題。
一、構件重用技術
(一)構件與構件模型
構件是係統中實際存在的可更換部分,它實現特定的功能,符合一套接口標準並實現一組接口。構件代表係統中的一部分物理實施,包括軟件代碼(源代碼、二進製代碼或可執行代碼)或其等價物(如腳本或命令文件)。
構件模型(model)是對構件本質特征的抽象描述。目前,國際上已經形成了許多構件模型,這些模型的目標和用途各不相同。國內許多學者在構件模型的研究方麵做了不少工作,取得了一定成績,其中較為突出的是北京大學楊芙清院士等人提出的“青鳥構件模型”,如圖1所示,該模型充分吸收了國內外構件模型的優點,並與它們相容,它由外部接口(interface)與內部結構兩部分組成。

稱重青鳥構建模型圖

(二)構件的獲取
可重用信息具有領域特性,領域具有內聚性
(cohesion)和穩定性(stability)。領域是一組具有相似或相近軟件需求的應用係統所覆蓋的功能區域,領域工程(domainengineering)是一組相似或相近係統的應用工程(applicationengineering)建立基本能力和必備基礎的過程。領域工程過程可劃分為領域分析、領域設計和領域實現等多個活動,其中的活動與結果,如圖2所示。

稱重領域工程中的活動與結果

在建立基於構件的軟件開發(CBSD,Compo-nent-BasedSoftwareDevelopmen)t中,構件獲取可以有多種不同形式,如:
(1)從現有構件中獲得符合要求的構件;
(2)通過遺留工程(Legacyengineering),將具有潛在重用價值的構件提取出來,得到可重用的構件;
(3)從市場上購買現成的構件;
(4)開發新的符合要求的構件。
(三)構件庫
在構件重用過程中,建立構件庫以進行可重用構件的推廣和使用,為後繼嵌入式產品的開發提供良好的可重用基礎。構件庫的組織應方便構件的存儲和檢索。可重用技術對構件庫組織方法的要求是:
(1)支持構件庫的各種維護動作,如增加、刪除以及修改構件,盡量不要影響構件庫的結構;
(2)不僅要支持精確匹配,還要支持相似構件的查找;
(3)不僅能進行簡單的語法匹配,而且能夠查找在功能或行為方麵等價或相似的構件;
(4)對應用領域具有較強的描述能力和較好的描述精度;
(5)庫管理員和用戶容易使用。
目前,已有的構件分類方法可以歸納為三類,分別是關鍵字分類法、刻麵分類法和超文本分類法。構件庫的關鍵字分類結構示例,如圖3所示,它支持圖形用戶界麵設計。

稱重關鍵字分類結構示例圖

(四)構件的體係結構
在軟件設計時采用層次式軟件體係結構,將產品的係統結構模型定義為四個層次,如圖4所示。

稱重層次式體係結構圖

通過係統構件的分層,將頻繁變動的業務邏輯層分離出來,實現通用類構件的完全重用,並且在各個模塊之間設計統一的接口,當某一模塊業務邏輯改變時,使係統之間的影響最小。係統實現即插即用(plugandplay),容易升級。
二、嵌入式稱重物聯網的構件化設計
嵌入式稱重物聯網是軟件與硬件的綜合體,硬件設計和軟件設計相輔相成。嵌入式係統中的驅動程序是直接工作在各種硬件上的軟件,是硬件和高層軟件之間的橋梁。正是通過驅動程序,各種硬件設備才能正常運行,達到既定的工作效果。
(一)嵌入式稱重物聯網組成結構
嵌入式稱重物聯網主要由秤台、數字稱重傳感器、網絡型稱重顯示控製儀、PC機、大屏幕顯示器和打印機等硬件組成,其組成結構示意圖,如圖5所示。

嵌入式稱重物聯網組成結構示意圖

(1)數字式稱重傳感器(簡稱“數字傳感器”),是嵌入式稱重物聯網的關鍵部件,它的作用是將被稱物體的重量轉換成數字信號傳給網絡型稱重顯示儀表,本係統采用最新型的數字傳感器,它具有稱量精度高、抗幹擾、防雷擊、防作弊能力強、可在各種惡劣環境下工作等優點。
網絡型稱重顯示儀具有界麵圖形化、接口網絡化、存儲海量化、格式多樣化、維護簡單化等特點,采用了不同於傳統儀表的設計方法,在設計中間采用了一些最新的技術,如智能與診斷、網絡通訊識別等,使整個係統能達到最高的精度及超低的故障率。它的核心部件采用高端32位MCU,具有4GB的地址空間,能在單片內提供以太網控製器及以太網物理層和閃存,它在遠程數據采集、以太網供電等嵌入式物聯網中得到了廣泛的應用。
(3)網絡接口構件是指實現異步串行通信的模塊,又稱為串行通信接口(SerialCommunicationInterface,SC)I,它可以將終端或個人計算機連接到MCU,也可以將幾個分散的MCU連接成通信網絡。在台式計算機上帶的兩個串口,COM1口和COM2口,部分筆記本上也帶有串口COM。網絡接口構件,如圖6所示。

嵌入式網絡接口構件圖

(二)嵌入式硬件構件和軟件構件的層次模型嵌入式軟件構件(EmbeddedSoftwareCompo-nent,ESC)是實現一定嵌入式功能的一組封裝的、規範的、可重用的、具有嵌入特性的軟件單元,是組織嵌入式係統的功能單位。
嵌入式軟件結構分為高層軟件結構和底層軟件結構(以下簡稱為高層構件和底層構件)。高層構件與硬件無關,而底層構件與硬件密不可分,是硬件驅動程序的封裝。
在硬件構件中,核心構件為MCU的最小係統。通常,MCU內部包含GPIO(即通用I/O)口和一些內置功能模塊,我們將通用I/O口的驅動程序封裝為GPIO構件,各內置功能模塊的驅動程序封裝為功能構件,相對於核心構件而言,中間構件和終端構件是核心構件的“外設”,由這些“外設”的驅動程序封裝而成的軟件構件稱為底層外設構件。注意,並不是所有的中間構件和終端構件都可以作為編程對象。例如鍵盤、LED、LCD等硬件構件與編程有關,而電平轉換硬件構件就與編程無關,因而不存在相應的底層驅動程序,當然也就沒有相應的軟件構件。嵌入式硬件構件與軟件構件的層次模型,如圖7所示。

嵌入式硬件與軟件結構層次模型

底層外設構件可以調用底層內部控件,如LCD構件可以調用GPIO構件,PCF8563構件(時鍾構件)可以調用IZC構件等。高層構件可以調用底層外設構件和底層內部構件中的功能構件,而不能直接調用GPIO構件。另外,考慮到幾乎所有的底層內部構件都涉及到MCU各種寄存器的使用,因此將MCU的所有寄存器定義組織在一起,形成MCU頭文件,以便其它構件頭文件中包含該頭文件。
(三)底層構件的實現方法與編程思想
(1)底層構件的組成
底層構件是與硬件直接打交道的軟件,由頭文件和源程序兩部分組成。
頭文件中的主要內容有:包含下層頭文件的#include語句、用以描述構件屬性的宏定義語句以及對外接口函數原型說明。在頭文件中使用函數原型,對於建立代碼模塊和外部接口的規範,便於他人使用,都是很有幫助的。使用這些函數的用戶,不需要查找源代碼去了解參數的具體類型,直接查看函數原型即可。
源程序文件中存放構件的內部函數和外部函數的定義,即函數的實現代碼,以完成函數所要實現的功能。
在對底層構件進行設計時,最關鍵的工作是要對構件的共性和個性進行分析,抽取出構件的屬性和對外接口函數。盡可能做到:當一個底層構件應用到不同係統中時,僅需修改構件頭文件,對於構件的源程序文件則不必修改或改動很小。
(2)編寫構件時注意事項
1)構件的頭文件和源程序文件的主文件名一致,且為構件名;
2)屬性和操作的命名統一以構件名開頭。這樣的好處是:當使用底層構件組裝軟件係統時,避免構件之間出現同名現象。同時,名稱要使人有“顧名思義”的效果;
3)對MCU內的模塊寄存器名和端口名進行重定義,在其他的代碼裏都將使用宏名對模塊寄存器端口進行操作。這樣,當底層驅動程序移植到其他MCU時,隻要修改重定義語句即可;
4)內部函數與外部函數要設計合理,函數參數個數及類型要考慮全麵。內部函數僅提供給同一構件中的其他內部函數或外部函數調用,作用域僅限於定義該函數的文件。外部函數是對外接口函數,供上層應用程序調用。在定義外部函數時,應該對函數名、函數功能、入口參數、函數回值、使用說明、函數適用範圍等進行詳細描以增強程序的可讀性。上層應用程序不能直接對構件的屬性進行讀取或設置,必須借助於該構件提供的接口操作函數來實現;
5)應用程序在使用底層構件時,嚴格禁止通過全局變量來傳遞參數,所有的數據傳遞都要通過函數的形式參數來接收。這樣做不但使得接口簡捷,更加避免了全局變量可能引發的安全隱患。
(四)軟件構件設計
軟件構件設計包括低端軟件設計和高端軟件設計兩部分。
(1)底層構件設計
底層構件是硬件的驅動程序,是構建低端軟件的基石。在進行低端軟件設計時,首先要結合軟件所要實現的功能,按照構件化思想設計並規劃底層構件。本係統涉及到的底層構件有:
1)通用I/O構件:初始化端口,設置端口狀態以及獲取端口狀態等;
2)指示燈(Light)構件:點亮火熄滅出錯指示燈、運行指示燈;
3)Flash構件:將指定內容寫入Flash的指定單元中,用於設置係統工作參數;
4)以太網物理層收/發器(EPHY)構件:初始化EPHY模塊,獲取網絡連接狀態;
5)快速以太網控製器(FEC)構件:初始化FEC模塊、發送以太幀、接收以太幀;
6)定時器(GPT)構件:初始化定時器;
7)模數轉換(AD)構件:初始化A/D轉換模塊、啟動A/D轉換、均值濾波等;
8)鍵盤(KeyBoard)構件:掃描並獲取鍵盤按鍵值;
9)液晶指示(LCD)構件:初始化LCD、顯示字符數據等。
(2)主程序設計
低端軟件的主程序負責獲取A/D采集數據,再將A/D值轉換為物理量,並在LCD顯示屏上顯示。當檢測到用戶按鍵時,根據不同的按鍵,完成不同的功能,流程如圖8所示。

低端軟件主程序流程圖

(3)中斷程序設計
低端軟件的中斷程序主要響應PC需要數據的請求。當接收到PC發生的一條命令後,低端軟件進入FEC接收中斷。在中斷服務子程序中,首先獲取接收幀內容並分析,根據命令的不同,將相關數據組裝成以太幀,並將幀內容寫入到FEC模塊的發送緩衝區中,然後再通過發送緩衝區描述激活寄存器TDAR將其發送出去。
(4)高端軟件設計
PC的高端軟件需要實現的功能是:向低端程序提出稱重數據請求並等待接收,對接收到的數據進行存儲、顯示、磅單以及報表打印等。其開發環境使用MicrosoftVisualStudio2010,編程語言使用VB.NET。運行界麵如圖9所示。

高端程序運行界麵圖

三、結語
構件重用技術在嵌入式稱重物聯網開發中的應用,使得整個開發過程構件化,減少了開發時間、提高了開發效率,保證了開發質量和產品的可靠性,使得應用係統的開發流程標準化、易於管理,降低了維護難度和工作量。同時,也需要我們加強構件庫的建設與管理,積累更多的可重用構件,使得應用係統更好更快地開發。

 

本文源於網絡轉載,如有侵權,請聯係刪除

分享到
網站地圖凱發K8凱發K8凱發K8凱發K8凱發K8