白旭升,薛 凱,常力文,王 琦,汪瑩瑩
(成都理工大學 電子與通信工程系,四川 成都 610059)
PC技術和通信技術的不斷發展,使得在工業生產中所要求的低成本、更便捷、更精準、更自動化的遠程控制系統的建立有了更大的應用空間。在一些生產流水線中,整個系統除了對效率有很高要求的同時,還需要對產品的品質進行控制,一旦檢測到有不達標產品,系統在做出判斷的同時需要將缺陷產品信息及時反饋給操作人員以便員工確認處理。本設計就是應實際生產需求設計的。
本系統采用ADAM系列模塊、POSITAL編碼器、OMORN繼電器。該系統按功能分為軟件模塊和硬件模塊。硬件模塊負責供電、給出脈沖計數、ADAM080輸出報警信號時接通報警電路、報警。軟件模塊通過使用RS485通信協議,完成與硬件的通信,設置ADAM080的相關參數,并判斷當滿足報警上限時根據需求是否觸發(關閉)報警指令以及清空報警信息[1]。
該報警系統的硬件連接示意如圖1所示。ADAM4561是一款隔離端口轉換器,它可以讓PC用戶將串行設備連接到使用USB接口的系統中。將ADAM4561連接到PC后,用戶無須再打開機箱或關掉PC電源來安裝集線器,就可以立即得到一個或兩個額外的高速RS-232/422/485端口并且不需要額外電源供電;編碼器作為產生計數的模塊,將由它直接為ADAM4080提供穩定的計數來源,其每轉一周輸出5000個脈沖計數,通過信號線送至ADAM4080的計數端口0、1;ADAM4080選擇非隔離(TTL)輸入方式(編碼器為TTL輸出方式),這樣用戶就可以設置上下限電平觸發值,確保與編碼器聯合達到計數的目的。同時,ADAM080采用10~30 V直流電源,編碼器采用4.75~30 V直流電源,我們可以統一使用24 V直流電源供電;使用繼電器將ADAM4080的數字報警輸出接入電路,通過繼電器的開關功能使報警裝置進行顯示切換;此次報警裝置有綠燈、黃燈、紅燈3種狀態,另外有一個蜂鳴器,此次生產應用中,我們將綠燈表示為產品檢測中的指示正常信號,接入繼電器上位開關,使其在通電過程中常亮;將紅燈與蜂鳴器并聯,作為產品在故障時的指示信號和聲音信號。

圖1 硬件連接示意
因為ADAM4080的do0口為集電極開路的數字輸出方式,因此在使用它的開關功能時,應外接上拉電阻,經測試,此次繼電器正負引腳之間存在一電阻,我們將不額外接入上拉電阻,直接將繼電器與ADAM080的do0口接入電路,通過指令測試,當計數達到報警閾值時,do0口輸出報警信號,繼電器正常切換到紅燈與蜂鳴器報警電路,由原先的正常綠燈狀態轉為紅燈閃爍且同時蜂鳴器報警。至此,硬件模塊功能設計完成,達到生產要求[2]。
該系統的軟件控制流程示意如圖2所示。由于ADAM4080與PC之間使用ADAM4561橋接,這使得RS-485與轉換為USB,如此一來,將ADAM4080當作一個標準串行通信口,便于用PC來編程直接訪問。此次我們使用Visual C++ 6.0平臺以及C語言編程,Visual C++ 6.0作為一種強大的開發工具幾乎在Windows軟件開發的任何領域都廣泛使用。一般用Visual C++ 6.0 開發串行通信程序有兩種方法:一是利用Windows的通信API函數;另一種是采用Visual C++ 6.0的ActiveX控件來實現。第一種方法雖然需要聲明及調用許多API函數,但可移植性可拓展性強,適合與軟件其他部分結合,我們將采用這種方式。此次我們連接到工控機的com7口,編程時將其中的串口句柄設置為com7,對串口初始化時保持與ADAM080模塊默認的設置,讀寫線程完后關閉串口[3]。

圖2 軟件控制流程示意
在串口編程中,發現雖然我們成功打開串口,但發送的ASCII指令并未得到ADAM080的回應,查閱資料以及借助相關工具發現,在控制臺程序模式下,輸入命令按下回車后,字符串后并沒有出現研華標準命令格式中的命令結束標志符“cr”,導致ADAM4080無法識別程序發送的指令。通過編程方式手動加上回車符后,與ADAM4080通信正常。
接下來通過串口配置ADAM4080,使設備初始化。根據研華提供的資料,我們整理出一些常用的命令,如表1所示。ADAM4080為每個計數器均提供一個可配置的報警器,其報警閾值可以編程隨意控制。數字輸出通道do0顯示計數器0的報警狀態;數字輸出通道do1顯示計數器1的報警狀態。根據實際需求設置報警門限,我們將報警閾值設置為一個很低的數值(即將計數器的值置1),采用遠程遙控允許的報警方式,配合其他觸發條件(當檢測到次品時),發送打開do0報警通道的指令,由于此時早已達到報警閾值,因此一旦打開報警通道,便立即輸出報警信號,切換到報警電路;當員工確認完報警想解除報警時,可以向模塊發送關閉報警通道的命令。特別的,根據實際需求,ADAM4080提供兩種報警模式:瞬態方式和鎖存方式,它們的區別在于:處于瞬態方式,只要輸入值恢復到閾值范圍內,報警就關閉;處于鎖存方式,即使輸入值回到范圍內也不能接觸報警狀態,主機發出“清除報警”指令后,報警狀態才會取消。對計數器中的數值,可以根據實際需求,按照編程方式轉換為其他單位,進而拓展軟件功能[4-5]。

表1 部分指令及功能
該系統設計是基于PC、通信技術和自動控制為一體,利用RS-485協議實現對產品中次品的實時報警的體系。該產品可配合編程技術達到自動化輸出報警信號,使得被檢測到的次品得到實時預警。此設計中,硬件模塊具有很強的穩定性,各配件價格便宜,可拓展性強,組建起來也十分方便;軟件模塊使用很常用的串口編程方式,并且研華已經提供了完整的指令庫,配合已經相當成熟的RS-485通信技術,軟硬件之間的通信也達到準確高效。經過實際測試,繼電器可以根據需要切換到相應的工作電路,整個系統工作穩定,響應速度快,自動化程度高,滿足生產要求[6]。
該系統設計是基于PC、通信技術和自動控制,達到軟硬件為一體,利用RS-485協議實現對產品中次品的實時報警的體系。該產品在實際使用中可以完成對檢測到的缺陷產品的實時預警,軟硬件之間的通信也達到準確高效,可以通過軟件調節實現上下限報警或者遙控報警,使用靈活,組建成本低,而且操作方便,能很好地服務于生產實踐,達到設計要求。
[1]王秀珍.基虧ADAM4060及ADAM4080D模塊實現對“溫度測控裝置”的遠程控制[J].內蒙古科技與經濟,2011(21):86-87.
[2]康華光.電子技術基礎:模擬部分[M].北京:高等教育出版社,2013.
[3]金孟霞.基于VisualC++的計算機與PLC之間串行通訊的設計與實現[J].計算機與信息技術,2008(9):76-77,79.
[4]徐英健.遠程信號處理模塊化時代—研華ADAM—4000系列[J].微計算機信息,1994(5):42-43.
[5]晁永生,樊軍,申曉萍,等.淺談VisualC++串口通信編程[J].科技廣場,2007(1):71-73.
[6]丁園園.利用研華ADAM-4000系列模塊搭建監控系統[J].科技風,2011(8):41.