RS-485網(wǎng)絡(luò)在數(shù)控機床聯(lián)網(wǎng)中應(yīng)用
RS-485在電力系統(tǒng)及工業(yè)自動化中有廣泛的應(yīng)用,木文介紹通過RS-485網(wǎng)絡(luò)實現(xiàn)數(shù)控機床聯(lián)網(wǎng)方式,木方法也可為電力系統(tǒng)自動化設(shè)備的串行通信網(wǎng)絡(luò)的設(shè)計提供參考。
本文引用地址:http://m.butianyuan.cn/article/201609/304023.htm1 數(shù)控機床聯(lián)網(wǎng)系統(tǒng)組成結(jié)構(gòu)
數(shù)控機床聯(lián)網(wǎng)系統(tǒng)采用一臺控制卞機(計算機)與幾臺不同的數(shù)控機床,通過RS-485網(wǎng)絡(luò)形成卞從型網(wǎng)絡(luò)結(jié)構(gòu)??刂票鍣C根據(jù)不同的任務(wù)安排,把數(shù)據(jù)傳輸?shù)较鄳?yīng)的數(shù)控機床,同時控制卞機根據(jù)數(shù)控機床的請求狀態(tài),把數(shù)控機床的數(shù)據(jù)采集到計算機中。因大多數(shù)的計算機和數(shù)控機床都只有RS-232串口,須設(shè)計RS-232/RS-485接口轉(zhuǎn)換電路,把計算機和數(shù)控機床的RS-232通信信號轉(zhuǎn)換成RS-485信號。這樣,計算機和多臺數(shù)控機床就通過 RS-485總線聯(lián)網(wǎng)。其聯(lián)接結(jié)構(gòu)如圖1所示。
2 RS-232/RS-485轉(zhuǎn)換電路設(shè)計
數(shù)控機床聯(lián)網(wǎng)系統(tǒng)需多個RS-232/RS-485接口轉(zhuǎn)換器.考慮到大部分計算機和數(shù)控機床的通信端口為9芯D型插頭,在串行通信時,通常只使用其中的RTS , RXD , TXD與GND 4個端子,利用光電禍合器的隔離特性和RS - 232工作時RTS線與TXD線之間的電平關(guān)系,采用美國TI公司生產(chǎn)的RS - 485接口芯片SN75LBC184,設(shè)計了一種實用RS - 232 / RS -485轉(zhuǎn)換器,其電路如圖2所示。
圖中RS - 485接口芯片SN75LBC 184在發(fā)送使能端DE為高電平,接收使能端RE為低電平時,作為發(fā)送器使用;接收使能RE為高電平,發(fā)送使能端DE為低電平時,作為接收器使用。該電路還使用了3片光電禍合器TLP521-1進行隔離,這使PC機與SN75LBC184之間完全沒有了電的聯(lián)系,從而提高了工作的可靠性。
當RS-232的RTS端為邏輯電平1(-12 V)時,光電禍合器的發(fā)光一極管不發(fā)光,光敏二極管不導通,輸出端為TTL邏輯電平1(+5 V),此時選中RS-485的DE端允許RS - 485接收,這樣,RS-232的TXD端就可以發(fā)送數(shù)據(jù)(工作邏輯與RTS端相似)。當RS-232的RTS端為邏輯電平0(+12 V)時,光電禍合器的發(fā)光一極管發(fā)光,光敏二極管導通,輸出端為TTL邏輯電平0(0 V),此時選中RS-485的RE端允許RS - 485發(fā)送,RS-232的RXD端就可以接受 RS - 485網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)。當RS - 485的R端輸出為邏輯電平1時,光電禍合器發(fā)光一極管不發(fā)光,光敏二極管不導通,這樣,在RS-232輸出停止時,其TXD電平為-12 V,電容被充電到-12 V以使其輸出也變成-12 V,即邏輯電平1;當其輸出為邏輯電平0時,光電禍合器發(fā)光一極管發(fā)光,光敏二極管導通,這時,其輸出為+SV,也在RS-232邏輯電平0的范圍之內(nèi),即為邏輯電平0。
3 通信軟件設(shè)計
計算機卞控數(shù)據(jù)傳輸系統(tǒng)軟件安裝在計算機端,由于數(shù)控機床數(shù)據(jù)傳輸軟件是固化在數(shù)控機床的控制器中,不需要特別的編程,在進行數(shù)據(jù)傳輸時根據(jù)通信要求設(shè)置通信參數(shù),計算機端與其設(shè)置相同,由于不同的數(shù)控機床采用的通信方式即握手信號與幀格式不一樣,因此,數(shù)據(jù)傳輸軟件設(shè)計必須根據(jù)不同的數(shù)控機床采用不同握手信號。通常實現(xiàn)串行通信有多種方法,如利用調(diào)用Win
3.1 MSComm ActiveX控件介紹
Borland C++ Builder作為新一代的可視化編程工具,提供了大量的封裝好各種功能的VCL控件庫以便快速編程,遺憾的是并沒有直接提供串口通信功能的VCL控件; 而微軟公司提供的MSCommActiveX控制將串行通信的大部分操作都封裝到控件內(nèi)部,為編程者提供了簡化的Windows卜的串行通信編程,通過導入微軟MSComm控制,C++ Builder也能方便地實現(xiàn)計算機串口通信編程,為應(yīng)用程序提供串行通信功能。
MSComm控件提供卜列兩種處理通信的方式:事件馭動通信方式和查詢方式。事件馭動通信是處理串行端口交互作用的一種非常有效的方法。在許多情況卜,在事件發(fā)生時需要得到通知,例如:在CD (Carrier Detect)或RTS ( Request to Send)線上一個字符到達或一個變化發(fā)生時,可利用MSComm控件的OnComm事件捕獲并處理這些通信事件。OnComm事件還可以檢查和處理通信錯誤。查詢方式是在程序的每個關(guān)鍵功能之后,通過檢查CommEvent屬性的值查詢事件和錯誤。MSComm控件的屬性 InBuf'ferCount()和Out2BufferCount()就用于串口的查詢方式??赏ㄟ^Set2CommEvent(函數(shù)設(shè)置串口要響應(yīng)的事件,當響應(yīng)事件或串口錯誤發(fā)生時,系統(tǒng)會激活OnComm)事件,在OnComm)中添加相應(yīng)的程序,即可實現(xiàn)類似DOS中斷的串口處理程序。每個使用的MSComm控件對應(yīng)著一個串行端口。如果應(yīng)用程序需要訪問多個串行端口.必須使用多個MSComm控件??梢栽赪indows“控制而板”中改變端口地址和中斷地址。
3.2 計算機與數(shù)控機床通信程序編寫
首先,把MSComm控件安裝入C++ Builder的集成開發(fā)環(huán)境,通過C++ Builder菜單項的“Component項卜的“Import ActiveX Control,裝入C++ Builder控件板的AetiveX組中。其次,為了用該控件控制一個串口進行通信操作,還必須在相應(yīng)程序中插入該控件。為此,在程序的某個C++ Builder的Form中插入MSComm控件,控件名為MSComml(可以更改此名),在程序中對串口的各種操作可通過MSComml實現(xiàn)。為了得到MSComm控件的有關(guān)參數(shù),可以在控件上按F1鍵查詢,或參閱有關(guān)的Visual C++與Vi-sual書籍。
數(shù)控機床通過軟件、硬件握手方式與計算機進行數(shù)據(jù)的傳輸,為此,在計算機數(shù)據(jù)傳輸通信程序編制上,采用查詢的通信方式。在對木次通信任務(wù)中,可通過SetCommEvent函數(shù)設(shè)置串口要響應(yīng)的事件。木設(shè)計把計算機串口每接收一幀數(shù)據(jù)設(shè)置為串口要響應(yīng)的事件,也即EV2RXFLAG事件。這是 WindowsAPI函數(shù)中的一個基木事件。通過它去激活OnComm,在OnComm)消息處理函數(shù)中可加入處理代碼,判斷是否是所需要的數(shù)據(jù),并作出相應(yīng)的處理,如顯示、存盤、分析等。卜而簡要給出事件馭動方式接收數(shù)控機床發(fā)送數(shù)據(jù)的程序源代碼。計算機串口各參數(shù)設(shè)置,如波特率、校驗及數(shù)據(jù)格式等,必須與數(shù)控機床完全一致,否則兩者之間的通信無法正常進行。設(shè)置計算機串口參數(shù)的初始化程序如下:
評論