關(guān)鍵詞:PLC;串口通信;Visual C++;減光器
1引言
無級(jí)減光器控制系統(tǒng)用于實(shí)現(xiàn)對(duì)光強(qiáng)度的連續(xù)調(diào)節(jié)。為獲得良好的控制性能和優(yōu)美的人機(jī)界面,本文采用西門子公司的可編程控制器PLC,S7—200系列作為主控制裝置,用上位機(jī)實(shí)現(xiàn)人機(jī)界面并對(duì)PLC進(jìn)行控制。采用可與bbbbbbs API(Application Program Interface)函數(shù)無縫連接的Visual C++6.0開發(fā)上位機(jī)的控制程序,實(shí)現(xiàn)上位機(jī)與PLC之間的通信。
2工作原理
激光照射物體時(shí),光照度將隨著光源和物體之間距離的變化而改變。在實(shí)驗(yàn)室條件下,實(shí)現(xiàn)物體大范圍的運(yùn)動(dòng)比較困難,精密無級(jí)減光器則可在光物距離固定的情況下模擬光照度的變化。
精密無級(jí)減光器實(shí)現(xiàn)光照度變化的原理如下:使激光光束通過圖一所示的兩個(gè)楔角嚴(yán)格相同的大小棱鏡,激光束從棱鏡的一邊射向另一邊,相當(dāng)于通過了一平板玻璃。小棱鏡固定,大棱鏡的移動(dòng)通過步進(jìn)電機(jī)帶動(dòng)滾珠絲杠來實(shí)現(xiàn)。通過兩個(gè)棱鏡之間的相對(duì)位移來實(shí)現(xiàn)平板玻璃厚度的變化,由于對(duì)光強(qiáng)的吸收程度取決于玻璃的厚度,故實(shí)現(xiàn)了光強(qiáng)的變化[1]。
精密無級(jí)減光器對(duì)控制系統(tǒng)主要有自檢、復(fù)位和大棱鏡定位等三方面的要求??刂葡到y(tǒng)的主控元件選用西門子PLC,PLC通過RS485接口與上位機(jī)進(jìn)行通信,接受自檢、復(fù)位和大棱鏡定位等指令,然后PLC按相應(yīng)的指令要求實(shí)現(xiàn)控制。其中,自檢將檢測裝置的傳動(dòng)機(jī)構(gòu)是否正常工作;復(fù)位控制大棱鏡回到初始位置;大棱鏡的定位控制步進(jìn)電機(jī)的位移量。精密無級(jí)減光器中步進(jìn)電機(jī)的位移量,由上位機(jī)根據(jù)模型中的光物距離實(shí)時(shí)進(jìn)行計(jì)算判斷,然后通過串口通信傳給下位機(jī)的PLC,由PLC控制步進(jìn)電機(jī)的運(yùn)動(dòng)來實(shí)現(xiàn)光照度的變化。

3通信原理
鑒于RS232接口使用一根信號(hào)線和一根信號(hào)返回線而構(gòu)成共地的傳輸形式(共地傳輸容易產(chǎn)生共模干擾,抗噪聲干擾性弱。),且傳輸距離有限(實(shí)際上只能用在50米左右),RS-485接口是采用平衡驅(qū)動(dòng)器和差分接收器的組合,抗干擾能力強(qiáng),長的傳輸距離和多站能力等上述優(yōu)點(diǎn)使其成為首選的串行接口。所以本文選用RS232/485轉(zhuǎn)換模塊通過標(biāo)準(zhǔn)串行接口RS232與計(jì)算機(jī)聯(lián)接,它們之間的連接采用屏蔽電纜以屏蔽外界干擾和消除對(duì)其他設(shè)備的干擾。
通信協(xié)議采用9600波特率,8位數(shù)據(jù)位,一個(gè)停止位,無奇偶校驗(yàn),用ASC碼傳送。上位機(jī)在通信過程中不能直接控制PLC的輸入輸出模塊,而應(yīng)根據(jù)通信協(xié)定,由PLC通過通信模塊接受相應(yīng)的控制指令,并通過軟件實(shí)現(xiàn)并回饋相應(yīng)的信息。

RS232C協(xié)議是OSI(Open Systems Interconnection)協(xié)議體系中基于物理層的通信協(xié)議[2]。它負(fù)責(zé)與硬件打交道,而C語言與其它類型的高級(jí)語言相比在此方面具有較大的優(yōu)勢,所以本文中選用Visual C++6.0作為程序的開發(fā)平臺(tái)。用VisualC++6.0開發(fā)串口通信程序有多種方案,從程序的簡潔、難易度考慮,本文采用了Visual C++6.0提供的串行通信控件MSComm。
Microsoft ActiveX通信控件MSComm.OCX的主要屬性可按通信協(xié)議隨時(shí)進(jìn)行設(shè)定。根據(jù)實(shí)際需求本文對(duì)MSComm.OCX的主要屬性可通過Set函數(shù),并可通過相應(yīng)的Get函數(shù)獲得屬性值,現(xiàn)對(duì)屬性設(shè)置如下:

4軟件結(jié)構(gòu)
為方便應(yīng)用,精密無級(jí)減光器有仿真和調(diào)試兩種狀態(tài):調(diào)試狀態(tài)用于手動(dòng)調(diào)節(jié)精密無級(jí)減光器在各種條件下的工作狀態(tài)、定位精度等,以確認(rèn)它的可靠性和精確性;而仿真狀態(tài)則用于模擬實(shí)際的過程。在兩種狀態(tài)下,均需向PLC發(fā)送自檢、復(fù)位、歸零命令并接受PLC的回饋信號(hào)來判斷PLC是否正確執(zhí)行了指令,所不同的是在調(diào)試狀態(tài)下要實(shí)現(xiàn)步進(jìn)電機(jī)任意方向,任意步數(shù)的手動(dòng)運(yùn)行來調(diào)節(jié)光的衰減程度,而在仿真狀態(tài)下則只需PLC根據(jù)模型的計(jì)算連續(xù)發(fā)送電機(jī)的正向運(yùn)動(dòng)步數(shù)。
據(jù)此本文將整個(gè)精密無級(jí)減光器上位機(jī)控制程序分為六個(gè)主要的類:
(1)仿真時(shí)鐘類用于觸發(fā)仿真運(yùn)動(dòng)并采集回饋數(shù)據(jù)。本文采用bbbbbbs系統(tǒng)的32位應(yīng)用程序編程接口(API)提供的多媒體定時(shí)服務(wù),它的定時(shí)精度可達(dá)lms,該定時(shí)器不依賴于系統(tǒng)的WM-TIMER消息,擁有單獨(dú)的工作線程,適用于采樣頻率不高的控制系統(tǒng)。
(2)模型計(jì)算類該部分集成了程序中所有的數(shù)據(jù)運(yùn)算,它根據(jù)仿真模型,按仿真時(shí)間的推進(jìn)實(shí)時(shí)計(jì)算步進(jìn)電機(jī)應(yīng)推進(jìn)的步數(shù)。
(3)串口初始化及串口數(shù)據(jù)發(fā)送類該類直接對(duì)硬件操作,它完成串口打開、關(guān)閉、基本屬性的設(shè)置及數(shù)據(jù)的轉(zhuǎn)換和發(fā)送。根據(jù)PLC和上位機(jī)的通訊協(xié)議數(shù)據(jù)以ASC碼的形式發(fā)送,該類定制了
SendStepsMessage()等函數(shù)來完成數(shù)據(jù)轉(zhuǎn)換、自檢、復(fù)位、歸零、單步調(diào)試等功能。這些函數(shù)雖然功能不同,但實(shí)現(xiàn)方法基本一樣,以函數(shù)SendSysZeroMessage()為例說明:
Void CMSComm::SendSysZeroMessage(long 1Dis)


(4)串口數(shù)據(jù)接收類PLC在接收到指令后將執(zhí)行相應(yīng)的動(dòng)作并回送動(dòng)作執(zhí)行的信息(回送信息形式與上位機(jī)發(fā)送信息一一對(duì)應(yīng))。該類用于接受PLC的回饋數(shù)據(jù),把數(shù)據(jù)轉(zhuǎn)化為十進(jìn)制數(shù),判斷數(shù)據(jù)中的動(dòng)作信息,并向視圖類發(fā)送消息顯示步進(jìn)電機(jī)的動(dòng)作情況。函數(shù)實(shí)現(xiàn)方法和發(fā)送類函數(shù)實(shí)現(xiàn)方法基本相同。
(5)控制并存儲(chǔ)數(shù)據(jù)類滿足施控條件時(shí)調(diào)用計(jì)算及串口部分向PLC發(fā)送仿真數(shù)據(jù),完成仿真過程。該類中數(shù)據(jù)存儲(chǔ)函數(shù)完成了仿真數(shù)據(jù)存儲(chǔ)的功能,方便了用戶驗(yàn)證數(shù)據(jù)的正確性和數(shù)據(jù)查詢。
(6)視圖類和用戶直接打交道的類庫,以最直觀的形式方便用戶操作,向用戶提供步進(jìn)電機(jī)的動(dòng)作信息。
其軟件流程如圖3示:

精密無級(jí)減光器作為子系統(tǒng),已成功的集成于一三軸伺服仿真裝置中,圖4示為三軸伺服仿真裝置的檢測界面。

5結(jié)束語
該系統(tǒng)在仿真實(shí)驗(yàn)中的成功應(yīng)用,證明上位機(jī)能可靠、準(zhǔn)確地實(shí)現(xiàn)對(duì)精密無級(jí)減光器的控制。并且該程序中的串口通信部分,具有一定的通用性,也適合其它涉及串口通信類的系統(tǒng)。
參考文獻(xiàn):
[1]康立新,關(guān)英姿,韓四寧.PLC在精密無級(jí)減光器中的應(yīng)用[J].機(jī)械與電子,2002,6.
[2]潘愛民,王國印,譯.Visual C++技術(shù)內(nèi)幕[M].北京:清華大學(xué)出版社,1998










