何躍軍
(深圳職業技術學院 機電工程學院,廣東 深圳 518055)
各類標簽在使用過程中,由于受到各種摩擦的影響,其表面容易遭受不同程度的磨損,以致模糊不清,影響正常使用.為檢驗其質量,就需要對其耐磨度進行測試,但目前市場上,各類材料、涂層的耐磨度測試,一般都是根據材料的不同性質,采用專用設備進行測試.由于造價昂貴,超出了生產各類標簽的廠商所能接受的價格范圍,所以在標簽的耐磨度測試中,采用自動化設備進行測試的普及率很低,一般采用人工測試方法,但人工測試,費時、費力,且效果不佳.為彌補了以上不足,本文設計了一種成本低廉的標簽耐磨度測試儀,使用時可以根據測試的要求,事先選擇測試用的溶劑類型、摩擦力大小和摩擦次數,以進行耐磨度的定量測試.
測試儀的機械結構圖如圖1,它主要由底座、凸輪往復機構、驅動電機、計數開關、計數LCD顯示屏、復位彈簧、釹鐵硼強磁、砝碼等構成.其工作原理如下:
1)測試時,測試人員首先通過矩陣式鍵盤或上位機,設置標簽摩擦次數,單片機系統接收到啟動命令后,通過繼電器,控制驅動電機啟動運行.
2)驅動電機轉動 時,帶動凸輪機構一起轉動.當凸輪轉動前半圈時,擠壓一次復位彈簧和連桿,推動包有脫脂棉布的砝碼前進一次,摩擦一次測試的標簽.當凸輪轉動到后半圈時,彈簧反彈,通過連桿,回拉砝碼,再次摩擦一次待測的標簽,從而完成一次摩擦測試.
3)凸輪往復機構每前進一次,使得包有脫脂棉布的砝碼,摩擦標簽的同時,還通過連桿上的面板,擠壓一次計數開關,向微處理器發出一個脈沖信號.微處理器接收脈沖信號后,計數,并把計數值,在計數器LCD顯示屏上顯示出來.
4)當往復機構運行到預置的摩擦次數時,微處理器控制電機停轉,并發出聲光報警信號,凸輪往復運動機構不再運動,從而完成了標簽的定量測試.
本設備利用釹鐵硼強磁,連接直線往復機構的連桿和測試用的砝碼,簡化了設計,既保證耐摩試驗時,需要的向下的壓力,又避免了橫向的分力,保證了檢測儀器的準確性.包裹砝碼的脫脂棉布,根據測試的需要,可以粘上清水,汽油等測試溶劑,砝碼也可根據需要選擇不同的質量大小,以方便測試人員根據需要選擇不同的摩擦力大小.

圖1 測試儀機械結構圖
測試儀電路原理圖如圖2所示,采用單片機STC89C51,作為控制核心,既可單獨運行使用,又可作為下位機(從機),按照標準的MODBUS-RTU網絡接口協議,與上位機(PC機,主機)組成分布式控制系統,接收主機發出的控制命令,完成相應的功能[1-3].此外,多個測試儀還可通過RS-485總線,組成MODBUS網絡,統一納入上位機監控平臺,實現網絡化控制.測試儀程序主要包括主控程序和通信程序兩部分.
主控程序主要包括主程序、初始化子程序、矩陣鍵盤掃描子程序、外中斷1子程序、外中斷0子程序等.
主程序:主要完成系統的初始化;矩陣式鍵盤的掃描;摩擦次數的設置、修改;LCD液晶顯示;驅動電機的啟、停;聲光報警等功能.
外中斷1程序:用于接收計數開關輸入的脈沖信號.當計數值與預置數相同時,單片機控制驅動電機停轉,凸輪往復機構也隨之停止摩擦標簽.
外中斷0子程序:為防止測試儀運行時,意外斷電,本系統,還利用STC89C51自帶的2KB字節的E2PROM,設置了斷電數據保護電路并編寫了外中斷0子程序.該電路圖如圖3,系統正常運行,比較器L358輸出低電平,三極管9013不導通.如運行時意外斷電,系統5V電源隨之消失,系統則可利用電解電容 C8的短暫儲能功能,維持短暫的4.3V供電,通過比較器,輸出高電平,控制開關管9013導通,引發一次單片機外中斷0中斷,外中斷0子程序則負責把系統斷電前,設定的標簽摩擦次數、機構實際摩擦次數等數據記錄到單片機的E2PROM中,供系統斷電復位時,繼續使用,從而提高了設備的運行效率.
通信程序主要包括串口接收中斷子程序和定時中斷子程序,主要完成對主機命令的接收、存儲、CRC 校驗和對主機的應答,

圖2 測試儀電路原理框圖

圖3 斷電數據保護電路
2.2.1 通信協議
通信采用標準的Modbus-RTU協議,它目前國際智能化儀表普遍采用的主流通信協議之一,它是一種問答方式的通信協議.每次通信均由主機發出數據請求信息,從機接收到正確消息后,就可以發送數據到主機以響應請求;主機也可以直接發信息修改從機的數據,實現雙向讀寫.主機和從機必須共同遵守約定的數據格式及通信參數.設計方案約定測試儀(從機)的地址設置為 2,波特率為9600bps、1位起始位、8位數據位、1位偶校驗位、1位停止位.
2.2.2 串口接收中斷子程序
串口接收中斷子程序用于接收上位機發送的數據幀數據.在程序中,首先對接收的字符的時間間隔進行判斷,如果一幀數據結束前,字符出現不連續的現象,即字符之間的時間間隔大于1.5個字符時間,則串口接收計數器被清0,清空接收緩沖,并假定下一字節是新消息幀的第一字節;否則,將串口接收到的數據保存至緩沖區中,以得到消息幀.根據我們通信協議,每個字符11位(1個起始位、8個數據位、一個奇偶校驗位、一個停止位),則 1.5個字符時間間隔為:1000*1.5*11/9600=2 ms.
2.2.3 定時器0中斷子程序
定時器0中斷子程序流程圖如圖4,它首先對上位機發出的數據的時間間隔進行判斷,如果時間間隔大于 3.5字符時間間隔,則認為一次MODBUS通信接收命令完成,隨即進行報文的解析、報文的打包和數據發送等工作;否則退出.本系統支持3種MODBUS功能碼,各功能碼說明如表1.單片機若收到主機發來的03碼,則將指定讀的數據打包,并以 RTU 的消息結構返回主機;若收到的是05碼或06碼,則單片機將接收到的數據存儲并將原消息返回主機.單片機的通信程序編寫完成后,可以使用 MODBUS串口測試軟件進行調試,以加快軟件開發速度.該軟件能仿照上位機軟件發送數據命令,且方便觀測單片機的回復數據是否正確.

圖4 定時0中斷子程序流程圖

表1 程序功能碼說明表
本系統中,與主機配套的監控軟件界面如圖5所示,它采用VB6.0軟件進編寫[4],監控部分包括:設備電源的開啟(06碼命令)和設備的啟動(05碼命令),摩擦次數的設置(06碼命令)與顯示(03碼命令)等.主機和從機之間通信的內容包括主機對從機的讀取和寫入,按MODBUS規定,只有主機具有主動權,從站只能被動的響應,包括回答出錯信息[5].
2.3.1 數據接收與發送
本系統采用的是VB中的MSComm控件的事件驅動方式[6]接收數據.事件驅動方式與查詢方式相比,其優點是程序響應及時,可靠性高.初始化完成后,如果有數據到達,則會觸發OnComm事件,以接收數據.
命令字的發送,則嚴格按MODBUS 協議所設計的幀格式和上、下位機在該協議基礎上所定義的通信協議進行.
2.3.2 串行通信的設置與初始化

圖5 測試儀監控軟件
程序運行后,首先對串口初始化,按MODBUS通信協議規定,上位機程序需設置與從機一致的數據格式與通信參數,即波特率為 9600bps、數據幀格式為 8位、1位偶校驗位、1位停止位.由于串行端口發送和接受的數據均為二進制格式,因而我們需將MSComm控件的InputMode屬性設定為1;MSComm1中的RThreshold屬性也設為1,使得接收緩沖區每收到一個字符都會使 MsComm1控件產生OnComm事件.
2.3.3 數據幀的判別與應答
在主機程序中,Timer1定時器事件是整個程序的核心,用于對接收到的數據幀,進行有效性判別和應答.定時掃描時間間隔,在程序中設定為1ms,其程序運行具體過程如下:
1)首先程序判斷時間間隔是否超過了3.5個字符時間間隔(4ms),如果超過,則認為數據幀接收結束,關閉接收事件,開始處理接收信息,否則退出.
2)從機返回的第一個數據是站號,第二個是命令碼.如果通信有誤,返回的命令碼則被加80H.因而在程序中,如判斷出接收的命令碼大于81H,則說明通信碼有誤,這時從機返回的第三個數據就是錯誤號了.程序通過錯誤號,即可判斷錯誤的類別,并可以把它們顯示出來.
3)反之,接收的命令碼小于81H,說明通信正常,程序則重新定義數組,存儲除去校驗和以外的所有接收數據,并計算校驗.如校驗有誤,重新打開接收事件,等待下一次接收.
4)如校驗無誤,則程序判斷是何種功能碼,以解析和應答接到的數據,完成后,打開接收事件,等待下一次接收.
以上程序設計中,需要強調的是,主機接收到的命令碼正確,只能說明從機接收到了主機的正確信息,返回的是正確的命令碼.如果通信線路有干擾,還可能有其他的錯誤,只有校驗和計算正確了,才基本上可以斷定沒有通信錯誤.
[1] 張渝,劉楓.一種 Modbus遠程監控系統框架及其實現與教學應用[J].西南大學學報(自然科學版),2010,32(9):126-128.
[2] 鄒紅利,葛洲.簡化的 MODBUS通信協議在實時通訊控制中的應用[J].武漢工業大學學報,2009,28(4):90-93.
[3] 線巖團,許江淳,鄢大鵬.基于單片機的 MODBUS的協議實現[J].云南大學學報(自然科學版),2009,31(S2):120-124.
[4] 李江全,湯智輝,朱東芹,等.Visual Basic數據采集與串口通信測控應用實戰[M].北京:人民郵電出版社,2010.
[5] 劉鳳新,馮麗,王磊.電網分析儀與 PC機間串行通訊的設計與實現[J].北京化工大學學報,2004,31(2):97-99.
[6] 張輝,李榮利,王和平.Visual Basic串口通信及編程實例[M].北京:化學工業出版社,2012.