鄧霖杰,任德均,盤 龍
(四川大學(xué),成都 610065)
溫控箱遠(yuǎn)程監(jiān)控系統(tǒng)軟件設(shè)計(jì)
鄧霖杰,任德均,盤 龍
(四川大學(xué),成都 610065)
某公司設(shè)備分散分布在不同的區(qū)域,距離較遠(yuǎn),環(huán)境干擾嚴(yán)重,且設(shè)備的控制系統(tǒng)種類繁多。本系統(tǒng)通過(guò)讀寫各類溫控箱的可編程控制器,實(shí)現(xiàn)對(duì)各類溫控箱運(yùn)行狀態(tài)和數(shù)據(jù)的遠(yuǎn)程集中監(jiān)控與記錄。要求可靠地實(shí)現(xiàn)設(shè)備的聯(lián)網(wǎng)監(jiān)控,且不能影響原系統(tǒng)的運(yùn)行。介紹了以C#作為編程語(yǔ)言的系統(tǒng)軟件設(shè)計(jì),采用串口通信進(jìn)行數(shù)據(jù)傳輸并保存在數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)了基本功能,且界面友好,運(yùn)行穩(wěn)定。
C#;Access數(shù)據(jù)庫(kù);串行通信
隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,各行業(yè)技術(shù)的相互交流滲透,數(shù)據(jù)采集與控制系統(tǒng)廣泛的運(yùn)用于傳統(tǒng)工業(yè)生產(chǎn)各領(lǐng)域。本系統(tǒng)采用RS232通訊接口與各類設(shè)備的可編程控制器交互,實(shí)現(xiàn)了各類數(shù)據(jù)的采集與記錄,并且可對(duì)溫控箱進(jìn)行起停控制。由于使用Windows API編程非常繁瑣且不易調(diào)試,本系統(tǒng)采用C#語(yǔ)言在Visual Studio 2010環(huán)境下編程。Microsoft.NET平臺(tái)集成了大量的庫(kù)類,使得程序員可以快速地編寫各種基于Win?dows的應(yīng)用程序,本文主要采用了SerialPort類與Thread類實(shí)現(xiàn)串口通訊編程與多線程處理[1]。
1.1 系統(tǒng)框架
整個(gè)系統(tǒng)由接口及協(xié)議轉(zhuǎn)換模塊,上位機(jī)軟件模塊和后臺(tái)數(shù)據(jù)庫(kù)模塊三個(gè)模塊組成。
系統(tǒng)框圖由圖1所示。
1.2 工作方式
針對(duì)不同的PLC需要不同的讀寫指令格式,通過(guò)上位機(jī)負(fù)責(zé)編輯并發(fā)送各種指令來(lái)控制整個(gè)系統(tǒng)工作,接口及協(xié)議轉(zhuǎn)換模塊負(fù)責(zé)指令和數(shù)據(jù)的收集和分發(fā)以及上傳。通過(guò)CAN總線和串口通訊兩次協(xié)議轉(zhuǎn)換來(lái)傳遞指令到對(duì)應(yīng)的PLC上。通過(guò)讀寫PLC的內(nèi)存地址,實(shí)現(xiàn)對(duì)溫度和狀態(tài)數(shù)據(jù)的采集以及對(duì)溫控箱的運(yùn)行狀態(tài)的控制。采集的數(shù)據(jù)經(jīng)由上位機(jī)分析校驗(yàn)后保存至數(shù)據(jù)庫(kù)并實(shí)時(shí)顯示于界面上。
1.3 自定義數(shù)據(jù)格式
由于所采集的數(shù)據(jù)和指令種類繁多,包含各監(jiān)測(cè)點(diǎn)溫度、基本工作狀態(tài)、異常信息、以及控制指令和上位機(jī)與協(xié)議轉(zhuǎn)換器的內(nèi)部交互指令,故通過(guò)自定義數(shù)據(jù)格式來(lái)承載所必要的信息標(biāo)識(shí)。數(shù)據(jù)格式如圖2所示。
圖1 系統(tǒng)框架
所圖所示,數(shù)據(jù)幀類型代表該條數(shù)據(jù)幀的定義,以區(qū)分是溫度、狀態(tài)、控制指令或者其他指令;CAN總線地址代表與PLC相連的協(xié)議轉(zhuǎn)換器在CAN總線上的地址,由協(xié)議轉(zhuǎn)換模塊上的撥碼開關(guān)設(shè)定,實(shí)現(xiàn)對(duì)溫控箱的唯一標(biāo)識(shí);PLC數(shù)據(jù)地址代表需要讀取或者寫入的數(shù)據(jù)在PLC的內(nèi)存地址;由于各類型PLC的數(shù)據(jù)存放地址長(zhǎng)度不一致,故在PLC數(shù)據(jù)地址和數(shù)據(jù)值之間加入分隔符以區(qū)分地址與數(shù)據(jù);數(shù)據(jù)值為所要讀取或者寫入的數(shù)據(jù);最后,本數(shù)據(jù)幀采用兩位和校驗(yàn)來(lái)檢驗(yàn)數(shù)據(jù)的正確性。例如:數(shù)據(jù)幀$A01IR0400,0079#44,‘$’和‘#’分別作為起始和結(jié)束符,‘,’作為分隔符;第二位‘A’代表該幀數(shù)據(jù)為溫度數(shù)據(jù)幀,“01”代表是CAN總線地址為01號(hào)的溫控箱,“IR0400”代表該溫度數(shù)據(jù)所存放的PLC內(nèi)存地址,“0079”代表當(dāng)前該溫度值為79攝氏度,最后“44”為兩位和校驗(yàn)碼。
本軟件以Windows XP Embedded作為操作系統(tǒng),數(shù)據(jù)庫(kù)采用Microsoft Access 2010。上位機(jī)軟件部分主要由數(shù)據(jù)庫(kù)模塊、數(shù)據(jù)采集功能模塊和設(shè)備控制功能模塊三部分構(gòu)成。系統(tǒng)的主界面如圖3所示,分為控制區(qū)域、狀態(tài)區(qū)域和數(shù)據(jù)區(qū)域。
2.1 數(shù)據(jù)庫(kù)模塊
圖2 數(shù)據(jù)格式
圖3 系統(tǒng)的主界面
數(shù)據(jù)庫(kù)中建立了多張表,包括設(shè)備信息表、數(shù)據(jù)信息表、狀態(tài)信息表、數(shù)據(jù)記錄表、工作日期表以及用戶信息表等等。其中主要的設(shè)備信息表中包含了總線地址、所屬車間、溫控箱名稱、PLC型號(hào)等字段;數(shù)據(jù)信息表中包含CAN總線地址、數(shù)據(jù)名稱、內(nèi)存區(qū)域、起始通道、位地址等字段;數(shù)據(jù)記錄表中包含總線地址、設(shè)備名稱、數(shù)據(jù)名稱、實(shí)際數(shù)值和采集時(shí)間等字段。同時(shí)利用微軟提供的OLEDB應(yīng)用程序接口來(lái)讀寫、查詢數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)數(shù)據(jù)的讀取、保存、修改、查詢、輸出等[2]。
2.2 數(shù)據(jù)采集功能模塊
數(shù)據(jù)處理流程如圖4所示。
圖4 數(shù)據(jù)處理流程圖
軟件啟動(dòng)后,先從數(shù)據(jù)庫(kù)中的設(shè)備信息表和數(shù)據(jù)信息表中讀取設(shè)備信息以及所要采集的數(shù)據(jù)的信息,包括PLC型號(hào)和各數(shù)據(jù)地址以及通道長(zhǎng)度等,同時(shí)針對(duì)不同型號(hào)的PLC將數(shù)據(jù)信息表中的各個(gè)字段用事先定義好的方式組合成的各種控制命令,將各類數(shù)據(jù)初始化為設(shè)備對(duì)象的成員變量,方便快速地調(diào)用。然后利用SerialPort類初始化一個(gè)串口對(duì)象,串口參數(shù)默認(rèn)從配置文件中讀取,用戶也可修改串口參數(shù),以滿足通信要求。本軟件采用多線程編程技術(shù),將數(shù)據(jù)接收與數(shù)據(jù)處理過(guò)程分離。數(shù)據(jù)接收線程負(fù)責(zé)讀取串口緩存區(qū)的數(shù)據(jù)并轉(zhuǎn)移到數(shù)據(jù)隊(duì)列中[3]。數(shù)據(jù)處理線程將數(shù)據(jù)隊(duì)列的中的數(shù)據(jù)提取出來(lái)處理,數(shù)據(jù)通過(guò)完整性校驗(yàn)后,通過(guò)對(duì)數(shù)據(jù)幀中包含的總線地址和內(nèi)存地址的信息與設(shè)備對(duì)象的成員變量的數(shù)據(jù)信息匹配,通過(guò)后分別調(diào)用各對(duì)象實(shí)例的數(shù)據(jù)處理函數(shù),實(shí)現(xiàn)對(duì)不同設(shè)備不同的數(shù)據(jù)的顯示和保存。采用多線程處理技術(shù),極大的提高了數(shù)據(jù)處理能力,提高了運(yùn)行效率。
2.3 設(shè)備控制功能模塊
系統(tǒng)的控制功能主要是通過(guò)對(duì)PLC的內(nèi)存寫入來(lái)實(shí)現(xiàn)控制溫控箱的運(yùn)行狀態(tài)。由于各溫控箱使用的PLC型號(hào)各異,控制指令的內(nèi)容也大不相同。本軟件通過(guò)讀數(shù)據(jù)庫(kù)中的指令信息表,針對(duì)不同的PLC類型通過(guò)函數(shù)編寫出各自的控制指令[4]。為確保在傳輸過(guò)程中控制指令的正確性,采用上位機(jī)將控制指令通過(guò)自定義協(xié)議打包后發(fā)送至協(xié)議轉(zhuǎn)換器,轉(zhuǎn)換器校驗(yàn)通過(guò)后只需將起始結(jié)束符以及校驗(yàn)碼拆包后即可直接轉(zhuǎn)發(fā)給PLC。為確??刂浦噶钫_執(zhí)行,系統(tǒng)建立了控制反饋機(jī)制。在發(fā)送完指令后,上位機(jī)將立即讀取相應(yīng)的設(shè)備狀態(tài),檢測(cè)PLC是否做出相應(yīng)的動(dòng)作,若未正確執(zhí)行,上位機(jī)將再一次做出控制動(dòng)作,以確保指令執(zhí)行到位。若多次控制無(wú)效,則會(huì)做出相應(yīng)的提示并記錄保存。
3.1 定時(shí)啟動(dòng)
工廠車間傳統(tǒng)的工作方式是將溫控箱24小時(shí)不間斷工作,以保持溫控箱供熱使設(shè)備達(dá)到最佳的工作溫度,但在流水線停止工作時(shí)段,繼續(xù)恒溫便造成了能源的浪費(fèi)與設(shè)備的額外損耗。本系統(tǒng)加入定時(shí)啟停功能,可以根據(jù)預(yù)先設(shè)定好的工作計(jì)劃表,做出定時(shí)啟動(dòng)的動(dòng)作。在流水線開始生產(chǎn)前,啟動(dòng)溫控箱,提前將溫度加熱到最佳工作溫度,確保不耽誤正常生產(chǎn),并且在流水線停止生產(chǎn)后定時(shí)停機(jī),達(dá)到延時(shí)關(guān)閉溫控箱的目的,實(shí)現(xiàn)了能源的節(jié)約以及減少設(shè)備損耗,降低了生產(chǎn)成本,帶來(lái)了良好的經(jīng)濟(jì)效益。
3.2 數(shù)據(jù)分析
通過(guò)系統(tǒng)不間斷的采集生產(chǎn)系統(tǒng)的各類數(shù)據(jù),并人為預(yù)先的輸入一些規(guī)則,比如設(shè)定各類數(shù)據(jù)的正常范圍,軟件可以分析和記錄下異常數(shù)據(jù)的類型以及發(fā)生的時(shí)間,并且通過(guò)各類數(shù)據(jù)的圖標(biāo)導(dǎo)出,可以方便直觀的幫助維護(hù)人員分析和診斷故障,以便快速的解決異常現(xiàn)象。
通過(guò)更改在數(shù)據(jù)庫(kù)中所保存的數(shù)據(jù)信息,輸入正確的數(shù)據(jù)內(nèi)存地址與通道長(zhǎng)度,可實(shí)現(xiàn)對(duì)溫控箱內(nèi)部任意數(shù)據(jù)的采集,使得系統(tǒng)的擴(kuò)展性和靈活性得到增強(qiáng)。同時(shí)建立異常處理機(jī)制和使用軟件看門狗[5],對(duì)整個(gè)監(jiān)測(cè)系統(tǒng)各功能模塊可能會(huì)出現(xiàn)的異常采取自恢復(fù)處理或者錯(cuò)誤消息保存方案,極大的提高了整個(gè)系統(tǒng)的穩(wěn)定性與安全性。本軟件經(jīng)過(guò)長(zhǎng)期現(xiàn)場(chǎng)測(cè)試,結(jié)果表明系統(tǒng)各項(xiàng)功能運(yùn)行正常,較好的滿足了數(shù)據(jù)采集系統(tǒng)對(duì)上位機(jī)軟件的要求。
[1]Christian Nagel等著:李銘譯.C#高級(jí)編程.北京:清華大學(xué)出版社,2010.11.
[2]曾建華.Visual Studio 2010(C#)Windows數(shù)據(jù)庫(kù)項(xiàng)目開發(fā)[M].北京:電子工業(yè)出版社,2012.
[3]劉凱,周云耀.C#串口通訊時(shí)丟失數(shù)據(jù)的一種解決方法[EB/OL].中國(guó)科技論文在線,2008.
[4]范永勝,徐鹿眉.可編程控制器應(yīng)用技術(shù)[M].北京:中國(guó)電力出版社,2010.
[5]葉幫利.用于工控監(jiān)測(cè)系統(tǒng)的多進(jìn)程軟件看門狗[J].微計(jì)算機(jī)信息,2008(6):304-305.
Design for PC Software of Remote Temperature Monitor and Control System
DENG Lin-Jie,REN De-jun,PAN Long
(Sichuan University,Chengdu610065,China)
The on-site device of a company are scattered in different areas with long distance and serious environmental interference.The system remote centralized monitor and control of the temperature control box’s status and data by reading and writing various types of devices’PLC.Requires reliable interconnection between devices monitoring,and can’t affect the operation of the original system.This article describes the system PC software design based on C#,use serial port communication to transfer data and save data in database,actualizing basic functions with user-friendly and stable operation.
C#;Access database;serial communication
TP277
A
1009-9492(2014)07-0105-03
10.3969/j.issn.1009-9492.2014.07.031
鄧霖杰,男,1988年生,四川成都人,碩士研究生。研究領(lǐng)域:機(jī)器視覺。
(編輯:向 飛)
2014-01-19