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