當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 工業(yè)控制技術(shù)文庫(kù)
[導(dǎo)讀] 引 言 卷煙生產(chǎn)中的卷煙機(jī)組主要包括兩大部分,上位機(jī)MLP,用于為控制系統(tǒng)和檢測(cè)系統(tǒng)提供操作和顯示的裝置,它包括一個(gè)工業(yè)PC和一個(gè)監(jiān)視器。以及下位機(jī)SRP,包括傳感器,調(diào)節(jié)裝置或者檢測(cè)裝

引 言

卷煙生產(chǎn)中的卷煙機(jī)組主要包括兩大部分,上位機(jī)MLP,用于為控制系統(tǒng)和檢測(cè)系統(tǒng)提供操作和顯示的裝置,它包括一個(gè)工業(yè)PC和一個(gè)監(jiān)視器。以及下位機(jī)SRP,包括傳感器,調(diào)節(jié)裝置或者檢測(cè)裝置。SRP主要包括四種結(jié)點(diǎn)1)SPS,2)HIP,3)CIS,4)SRM。上位機(jī)和下位機(jī)各結(jié)點(diǎn)之間的通信是頻繁的,數(shù)據(jù)對(duì)象眾多,數(shù)據(jù)種類也繁多,包括參數(shù)上傳,下傳,指令,域數(shù)據(jù)等等,所以在這之中,難免會(huì)因?yàn)椴僮魅藛T操作失誤或者控制器本身的原因?qū)е洛e(cuò)誤,但錯(cuò)誤發(fā)生的時(shí)候需要盡快的分析,發(fā)現(xiàn)錯(cuò)誤,解決錯(cuò)誤。因此我們需要建立一個(gè)可靠的錯(cuò)誤判斷機(jī)制。本文所討論的CANBUS實(shí)時(shí)監(jiān)聽(tīng)器正是應(yīng)這種需求而產(chǎn)生的。工作人員根據(jù)實(shí)時(shí)監(jiān)聽(tīng)器所捕獲的并且友好顯示的線路上的適時(shí)數(shù)據(jù)便可分析出是哪一方出了問(wèn)題,出了什么類型的問(wèn)題。這對(duì)安全生產(chǎn),準(zhǔn)確控制起了舉足輕重的作用。

(一) 硬件實(shí)現(xiàn)

在實(shí)時(shí)監(jiān)聽(tīng)器的實(shí)現(xiàn)中,我們選擇采用了周立功公司的PCI-9810非智能CAN接口卡作為硬件接口用于接收捕獲CAN總線上的傳輸數(shù)據(jù)。如下圖

PCI-9810非智能CAN接口卡是具有高性能價(jià)格比的CAN-bus總線通訊適配卡,它使PC機(jī)方便的連接到CAN總線上,實(shí)現(xiàn)CAN2.0B協(xié)議的連接通訊。它是一款采用專用PCI接口轉(zhuǎn)換芯片設(shè)計(jì)的非智能型CAN接口卡,即插即用,符合PCI2.1規(guī)范。它采用中斷接收方式,可最大限度減輕占用PC的負(fù)荷;具有最多8幀的數(shù)據(jù)緩沖區(qū)。另外我們采用了周立功公司提供的Windows驅(qū)動(dòng)程序升級(jí)版PCI-9810BWDM驅(qū)動(dòng)文件將其驅(qū)動(dòng)。

(二) 界面軟件實(shí)現(xiàn)

界面軟件實(shí)現(xiàn)主要包括四大方面,1)軟件平臺(tái)的選擇,2)對(duì)硬件接口CAN卡的使用,3)利用接口接收CANBUS線路上數(shù)據(jù)的實(shí)現(xiàn),4)所接收數(shù)據(jù)的處理(主要是判斷和顯示)的實(shí)現(xiàn)。

〈1〉軟件平臺(tái)的選擇—DELPHI

系統(tǒng)的開(kāi)發(fā)可利用多種程序設(shè)計(jì)語(yǔ)言,如DELPHI,VB,VC,PB等語(yǔ)言都是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,但把幾者相比較,DELPHI是唯一一套能夠同時(shí)適用于開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用、網(wǎng)絡(luò)及WEB 應(yīng)用等所有軟件的高效率開(kāi)發(fā)環(huán)境,且第三方控件多,開(kāi)發(fā)比較快,且設(shè)計(jì)界面比VB,VC,PB 靈活?;谝陨弦蛩兀紤]到所要監(jiān)聽(tīng)CANBUS線路的傳輸數(shù)據(jù)信息量大、種類多,以及信息之間相對(duì)獨(dú)立,又有關(guān)系且必須備有優(yōu)良的圖形顯示等特點(diǎn),我們選擇DELPHI作為軟件開(kāi)發(fā)平臺(tái)。

〈2〉對(duì)硬件接口PCI-9810的操作的實(shí)現(xiàn)

在DELPHI程序中,我們是通過(guò)調(diào)用周立功提供的通用VCI動(dòng)態(tài)鏈接庫(kù)來(lái)實(shí)現(xiàn)對(duì)硬件接口PCI-9810的操作的,該動(dòng)態(tài)鏈接庫(kù)提供了界面軟件能在windows下運(yùn)行必需的代碼和其他資源,其中主要包括十個(gè)接口函數(shù)如設(shè)備相關(guān)函數(shù)和CAN通訊相關(guān)函數(shù)以及相關(guān)的數(shù)據(jù)結(jié)構(gòu)的定義。把動(dòng)態(tài)鏈接庫(kù)文件夾添加到項(xiàng)目文件夾,然后把庫(kù)源文件添加到程序代碼的應(yīng)用文件單元即可實(shí)現(xiàn)對(duì)動(dòng)態(tài)鏈接庫(kù)的調(diào)用,也就實(shí)現(xiàn)了對(duì)PCI-9810卡的打開(kāi),關(guān)閉,啟動(dòng),復(fù)位,收發(fā)數(shù)據(jù)等操作。

〈3〉CANBUS線路上數(shù)據(jù)的實(shí)時(shí)接收

CANBUS線路上的數(shù)據(jù)對(duì)CAN卡來(lái)說(shuō)有著不期性,所以要能對(duì)數(shù)據(jù)實(shí)時(shí),準(zhǔn)確的接收,必須要通過(guò)程序?qū)崿F(xiàn)一種功能即線路上一旦有數(shù)據(jù),就能捕獲。對(duì)于此,我們采用的方式是利用多線程。即在程序中專門開(kāi)辟一個(gè)線程用于對(duì)線路的監(jiān)聽(tīng),接收。

關(guān)于多線程

在32位的windows系統(tǒng)中,系統(tǒng)可以同時(shí)運(yùn)行多個(gè)進(jìn)程,一個(gè)調(diào)入內(nèi)存并準(zhǔn)備執(zhí)行的應(yīng)用程序稱為一個(gè)進(jìn)程,它由裝入內(nèi)存的程序代碼和操作系統(tǒng)及由此創(chuàng)建的應(yīng)用程序執(zhí)行環(huán)境組成,進(jìn)程就是應(yīng)用程序的運(yùn)行實(shí)例。每個(gè)進(jìn)程都有自己私有的虛擬地址空間和動(dòng)態(tài)分配的內(nèi)存,以及文件,線程和其它模塊。每個(gè)進(jìn)程都有一個(gè)主線程,但可以建立另外的線程。進(jìn)程中的線程是并行執(zhí)行的,每個(gè)線程占用CPU的時(shí)間由系統(tǒng)來(lái)劃分,可以把線程看成是操作系統(tǒng)分配CPU時(shí)間的基本實(shí)體。每個(gè)進(jìn)程也可以同時(shí)執(zhí)行多個(gè)線程并由系統(tǒng)不停地在各個(gè)線程之間切換。

多線程的DELPHI實(shí)現(xiàn)

雖然Windows 提供了比較多的多線程設(shè)計(jì)的API 函數(shù),但是直接使用API 函數(shù)一方面極其不方便,而且使用不當(dāng)還容易出錯(cuò)。為避免這個(gè)問(wèn)題,我們采用了DEPHI所提供的方法即繼承TThread類產(chǎn)生線程對(duì)象。TThread由DELPHI的VCL類庫(kù)提供用于線程編程。在Tthread類中封裝了windows中關(guān)于線程機(jī)制的API函數(shù),繼承TThread類產(chǎn)生的線程對(duì)象就代表了實(shí)際程序中的一個(gè)線程。線程對(duì)象通過(guò)封裝使用線程所需的內(nèi)容大大簡(jiǎn)化了多線程問(wèn)題的處理。另外,在DELPHI中,Tthread在Classes單元中聲明,直接從Tobject繼承下來(lái)的,因此,它不是組件。Tthread是個(gè)抽象類,所以不能創(chuàng)建Tthread的實(shí)例,而只能創(chuàng)建其派生類的實(shí)例。在本程序中利用Ttread類來(lái)編寫(xiě)多線程的步驟如下

(1)從Tthread類派生出一個(gè)新的線程類。即建立的TreceiveThread。

(2)創(chuàng)建線程對(duì)象。即在Types里面定義thread1:TreceiveThread。

(3)在DELPHI自動(dòng)生成的用于保存派生類代碼的新的單獨(dú)的文件中重載Execute過(guò)程,在該過(guò)程中將對(duì)CAN線路上的數(shù)據(jù)實(shí)時(shí)接收并調(diào)用對(duì)接收到的數(shù)據(jù)進(jìn)行處理的基本顯示和分類顯示函數(shù)。在Execute過(guò)程中使用了repeat…。.until語(yǔ)句來(lái)判斷過(guò)程是否結(jié)束。

(4)如果Execute過(guò)程執(zhí)行完畢,則該線程就結(jié)束了,并釋放線程占用的??臻g。

〈4〉對(duì)所接收的數(shù)據(jù)進(jìn)行處理

對(duì)數(shù)據(jù)的實(shí)時(shí)處理包括兩方面:1)將接收到的數(shù)據(jù)楨按照接收數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)完全顯示,這包括楨類型,楨格式,楨ID,楨數(shù)據(jù)等等。2)將數(shù)據(jù)進(jìn)行更深一層的分析判斷出數(shù)據(jù)的真實(shí)含義,并將其填入對(duì)應(yīng)的文本框或者畫(huà)出對(duì)應(yīng)的狀態(tài)圖等等。

(1)對(duì)于第一種基本顯示,我們采用的是用DELPHI提供的listbox控件進(jìn)行

滾動(dòng)顯示,listbox的容量足夠本顯示的需要,另外,我們還添加了一個(gè)按鈕控件用于按照操作人員的需要隨時(shí)清除listbox里面的內(nèi)容。

(2)對(duì)于第二種分類顯示。對(duì)于不同的數(shù)據(jù),我們將用不同的分析處理方法進(jìn)行顯示。根據(jù)數(shù)據(jù)的現(xiàn)實(shí)含義,主要分為1)上,下傳參數(shù)。2)域請(qǐng)求和域數(shù)據(jù),3)下傳指令和上傳消息。下面將分別介紹處理方法:

1 利用數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行上,下傳參數(shù)的顯示

在CAN線路上傳輸?shù)膮?shù)不僅多達(dá)近200種,而且有上傳和下傳之分,可見(jiàn)所要顯示的量之大,加上上下傳的參數(shù)有著相同的數(shù)據(jù)結(jié)構(gòu),所以我們采用查詢預(yù)先建立好的數(shù)據(jù)庫(kù)的方法來(lái)進(jìn)行顯示。

關(guān)于數(shù)據(jù)庫(kù)系統(tǒng) 數(shù)據(jù)庫(kù)系統(tǒng)為我們提供了一種把與我們的工作和生活緊密相關(guān)的信息集合在一起的方法。它還提供了在某個(gè)集中的地方存儲(chǔ)和維護(hù)這些信息的方法。數(shù)據(jù)庫(kù)系統(tǒng)主要由三大部分組成:數(shù)據(jù)庫(kù)管理系統(tǒng),數(shù)據(jù)庫(kù)應(yīng)用程序,數(shù)據(jù)庫(kù)。

數(shù)據(jù)庫(kù)系統(tǒng)的DELPHI實(shí)現(xiàn) (1)建立數(shù)據(jù)庫(kù),在本項(xiàng)目中,我們是利用Microsoft Access 建立了一個(gè)關(guān)系數(shù)據(jù)庫(kù)(由若干表組成的數(shù)據(jù)庫(kù))。其中包含了一張表,該表的字段分為id表示用以判斷的字符串,以及l(fā)ocaTIon表示參數(shù)值應(yīng)填的文本框代號(hào)。(2)在應(yīng)用程序中要實(shí)現(xiàn)對(duì)所建立的數(shù)據(jù)庫(kù)的訪問(wèn)需要用到數(shù)據(jù)庫(kù)引擎和數(shù)據(jù)庫(kù)訪問(wèn)組件以及數(shù)據(jù)庫(kù)控制組件,DELPHI7中提供了BDE,ADO數(shù)據(jù)引擎,考慮到項(xiàng)目中的數(shù)據(jù)庫(kù)應(yīng)用相對(duì)簡(jiǎn)單,我們選擇了常用的BDE(Borland Database Engine)控制讀取所建立的數(shù)據(jù)庫(kù),具體操作為1)利用DEPHI7文件夾中的BDE Administer為所建立的數(shù)據(jù)庫(kù)創(chuàng)建別名。2)在窗體中添加數(shù)據(jù)庫(kù)訪問(wèn)組件和數(shù)據(jù)庫(kù)控制組件(包括Data Access頁(yè)和BDE頁(yè)中的組件)來(lái)實(shí)現(xiàn)應(yīng)用程序與數(shù)據(jù)庫(kù)之間的聯(lián)系。項(xiàng)目中,我們用Table組件來(lái)封裝數(shù)據(jù)表,通過(guò)BDE數(shù)據(jù)引擎從數(shù)據(jù)庫(kù)表格中取得數(shù)據(jù)(參數(shù)值應(yīng)填的文本框代號(hào))并通過(guò)DataSource組件將數(shù)據(jù)傳遞給數(shù)據(jù)控制組件TDBEdit,3)在程序中,我們通過(guò)TTable提供的Gotokey的方法實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的查找,以及通過(guò)對(duì)TDBEdit中的數(shù)據(jù)的使用。實(shí)現(xiàn)了將不同參數(shù)值填到其唯一對(duì)應(yīng)的文本框中。

2 域請(qǐng)求和域數(shù)據(jù)的處理

因?yàn)橛驍?shù)據(jù)的多類,多變性,以及不確定性,我們不能用處理參數(shù)一樣的數(shù)據(jù)庫(kù)或者其他統(tǒng)一處理的方法,所以在程序中我們使用的是用多層復(fù)合選擇語(yǔ)句進(jìn)行判斷然后根據(jù)不同的域數(shù)據(jù)做出不同的處理,域數(shù)據(jù)是根據(jù)標(biāo)識(shí)符上傳的,只有數(shù)據(jù)沒(méi)有別的判斷信息,對(duì)域數(shù)據(jù)的判斷決定于域請(qǐng)求的數(shù)據(jù)內(nèi)容,因此在程序中首先判斷楨是否為域請(qǐng)求,如果是,則將楨數(shù)據(jù)賦值對(duì)應(yīng)的變量,這些變量保存的便是域數(shù)據(jù)的判斷信息,而如果根據(jù)標(biāo)識(shí)符判斷出為域數(shù)據(jù),則根據(jù)變量保存的信息進(jìn)行對(duì)應(yīng)的處理。

在域數(shù)據(jù)的處理中,很多情況是要繪出曲線。對(duì)此,我們選擇了DELPHI的Tchart控件。利用其Series屬性里面的Fast-line,將收到的數(shù)據(jù)正確的繪成曲線。

3 指令和消息的處理

指令和消息的處理類似于域數(shù)據(jù)的處理,也是采用多層復(fù)合選擇語(yǔ)句進(jìn)行判斷,然后做出相應(yīng)的處理,在此,相應(yīng)的處理即將指令,消息的相關(guān)信息填入文本框。

〈5〉軟件流程圖

數(shù)據(jù)處理函數(shù)dataprocess()流程圖

結(jié) 論

在本項(xiàng)目中,CAN卡PCI-9810的控制器是SJA1000,在收發(fā)數(shù)據(jù)方面它支持正常和只聽(tīng)兩種模式,在監(jiān)聽(tīng)器的實(shí)際運(yùn)行中我們選用只聽(tīng)模式進(jìn)行線路監(jiān)聽(tīng),取的了不錯(cuò)的效果,而且在界面的設(shè)計(jì)過(guò)程中上我們添加了發(fā)送部分,這是便于進(jìn)行CAN卡的檢測(cè) 以及數(shù)據(jù)接收的調(diào)試,此時(shí)需要選擇正常模式。

本文作者的創(chuàng)新點(diǎn):結(jié)合實(shí)際情況的具體需要,合理的選用了Delphi作為軟件開(kāi)發(fā)平臺(tái),在實(shí)時(shí)性方面,我們選擇了Delphi自身提供的線程類,而不是按照常規(guī)選擇windows提供的API函數(shù),從而使程序的設(shè)計(jì)變的簡(jiǎn)潔,另外在數(shù)據(jù)的處理方面,我們不僅采用了通常的數(shù)據(jù)庫(kù)方法,而且還根據(jù)實(shí)際需要采用了其他簡(jiǎn)易可行的方法。很好地完成了需求。

總之,借鑒前者地經(jīng)驗(yàn)加上實(shí)際地創(chuàng)新我們成功設(shè)計(jì)了實(shí)時(shí)監(jiān)聽(tīng)器并通過(guò)了實(shí)際檢驗(yàn),本項(xiàng)目所設(shè)計(jì)的實(shí)時(shí)監(jiān)聽(tīng)器在實(shí)用性,實(shí)時(shí)性,準(zhǔn)確性,以及友好性上都是很不錯(cuò)的。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉