1 引言
工業(yè)過(guò)程控制中需要測(cè)量和控制的變量很多,以往基于PC機(jī)外接的數(shù)據(jù)采集卡,采集的點(diǎn)數(shù)有限,而且要直接和PC機(jī)的串口或者并口相連,極大限制了PC 機(jī)資源的充分利用。工業(yè)以太網(wǎng)的出現(xiàn)為構(gòu)成開(kāi)放式的模塊化的數(shù)據(jù)采集奠定了基礎(chǔ),本項(xiàng)目開(kāi)發(fā)一個(gè)基于工業(yè)以太網(wǎng)的嵌入式智能模塊的開(kāi)放式數(shù)據(jù)采集系統(tǒng)。以太網(wǎng)是目前應(yīng)用最廣泛的網(wǎng)絡(luò),它不但應(yīng)用于商用網(wǎng)絡(luò),同時(shí)在近年來(lái)大舉進(jìn)軍工業(yè)控制領(lǐng)域,取得了巨大的經(jīng)濟(jì)效益。以太網(wǎng)最初得到應(yīng)用時(shí),它采用帶有沖突檢測(cè)的多路載波偵聽(tīng)協(xié)議(CSMA/CD)和二進(jìn)制指數(shù)回退算法。在這種協(xié)議和算法下,當(dāng)網(wǎng)絡(luò)繁忙時(shí),它的非實(shí)時(shí)性和不確定性大大增加。因此,以太網(wǎng)在很長(zhǎng)的一段時(shí)間只能用于對(duì)實(shí)時(shí)性和確定性要求不是很高的辦公網(wǎng)絡(luò),它在工業(yè)數(shù)據(jù)通信領(lǐng)域的應(yīng)用受到很大限制。隨著交換技術(shù)和全雙工數(shù)據(jù)通信技術(shù)的發(fā)展,工業(yè)以太網(wǎng)已經(jīng)大大提高了在數(shù)據(jù)通信中的實(shí)時(shí)性和確定性,而且在許多工業(yè)領(lǐng)域得到成功應(yīng)用。
2 以太網(wǎng)用于工業(yè)數(shù)據(jù)通信的技術(shù)基礎(chǔ)
以太網(wǎng)的交換技術(shù)和全雙工通信技術(shù)的支持。以太網(wǎng)的交換技術(shù)由原先的端對(duì)端的網(wǎng)橋連接發(fā)展到了現(xiàn)在的以太網(wǎng)交換機(jī)。在數(shù)據(jù)發(fā)送的過(guò)程中,目前廣泛應(yīng)用存儲(chǔ)轉(zhuǎn)發(fā)技術(shù),先把輸入端口的數(shù)據(jù)包存儲(chǔ)起來(lái),然后進(jìn)行CRC檢查,在對(duì)錯(cuò)誤包處理后才取出數(shù)據(jù)包的目的地址,通過(guò)查找表轉(zhuǎn)換成輸出端口送出包。正因如此,存儲(chǔ)/轉(zhuǎn)發(fā)方式在數(shù)據(jù)處理時(shí)延時(shí)大,這是它的不足,但它可以對(duì)進(jìn)入交換機(jī)的數(shù)據(jù)包進(jìn)行錯(cuò)誤檢測(cè),尤其重要的是它可以支持不同速度的輸入輸出端口間的轉(zhuǎn)換,保持高速端口與低速端口間的協(xié)同工作。
全雙工(Full-Duplex)技術(shù)也是隨著以太網(wǎng)技術(shù)的發(fā)展而被廣泛地用于以太網(wǎng)交換機(jī)的。現(xiàn)在各大廠家都有基于IEEE802.3X全雙工通信協(xié)議的機(jī)型,這種交換機(jī)集成了目前以太網(wǎng)技術(shù)的最新成果。有了交換技術(shù)和全雙工技術(shù)的支持,以太網(wǎng)的不確定性和實(shí)時(shí)性差的確定得到很大的改觀,在工業(yè)數(shù)據(jù)通信領(lǐng)域得到了眾多廠商的認(rèn)可。
網(wǎng)絡(luò)單片機(jī)的發(fā)展和相對(duì)應(yīng)的軟件開(kāi)發(fā)環(huán)境隨著以太網(wǎng)通信技術(shù)的進(jìn)步,各大廠商紛紛推出基于嵌入式以太網(wǎng)的處理器,本系統(tǒng)所用的Rabbit2000就是其中的一種。Z-World公司推出的BL2100核心模塊使用了Rabbit2000處理器,它是專門應(yīng)用于嵌入式領(lǐng)域的以太網(wǎng)通信智能模塊,支持各種網(wǎng)絡(luò)協(xié)議(如TCP,HTTP,F(xiàn)TP,SMTP,PPP等),開(kāi)發(fā)過(guò)程中使用的是基于TCP/IP協(xié)議的Socket編程系統(tǒng)。對(duì)應(yīng)于硬件配置,Z-World公司提供了相應(yīng)的軟件開(kāi)發(fā)環(huán)境,即Dynamic C語(yǔ)言,它去掉了普通C語(yǔ)言中不符合實(shí)時(shí)性要求的部分,加入了適用于實(shí)時(shí)控制的功能,提供了眾多功能豐富的函數(shù)庫(kù),包括數(shù)學(xué)函數(shù)庫(kù)、I/O函數(shù)庫(kù)、串口通信函數(shù)庫(kù)、數(shù)據(jù)采集和數(shù)據(jù)輸出函數(shù)庫(kù),還有基于各種網(wǎng)絡(luò)協(xié)議的網(wǎng)絡(luò)通信所需要的函數(shù)庫(kù)。BL2100在系統(tǒng)編程(ISP),程序開(kāi)發(fā)調(diào)試方面非常方便。
3 系統(tǒng)的總體設(shè)計(jì)
系統(tǒng)設(shè)計(jì)為三層的網(wǎng)絡(luò)結(jié)構(gòu),最上層為PC監(jiān)控機(jī),中間層為網(wǎng)絡(luò)通信模塊BL2100,現(xiàn)場(chǎng)層為MSP430智能控制節(jié)點(diǎn)。
PC機(jī)和BL2100之間的通信是基于工業(yè)以太網(wǎng),BL2100和MSP430之間的通信是用RS-485總線來(lái)實(shí)現(xiàn)的。
監(jiān)控PC機(jī)采用組態(tài)軟件開(kāi)發(fā)出相應(yīng)的監(jiān)控界面,可以實(shí)現(xiàn)多種多樣的數(shù)據(jù)處理功能,包括歷史數(shù)據(jù)存儲(chǔ)、實(shí)時(shí)數(shù)據(jù)動(dòng)態(tài)顯示、報(bào)警信息輸出等。同時(shí)操作人員根據(jù)不同的控制要求可以發(fā)出不同的控制命令。BL2100網(wǎng)絡(luò)模塊帶有工業(yè)以太網(wǎng)接口和RS-485接口,多個(gè)網(wǎng)絡(luò)模塊可以通過(guò)以太網(wǎng)交換機(jī)來(lái)連接PC監(jiān)控機(jī),在局域網(wǎng)內(nèi)可以充分利用豐富的IP地址資源而不受外網(wǎng)的限制,適合于工廠內(nèi)部環(huán)境。MSP430智能節(jié)點(diǎn)主要作用是接收采集命令,進(jìn)行現(xiàn)場(chǎng)數(shù)據(jù)采集,通過(guò)RS-485總線傳給BL2100。根據(jù)不同的硬件配置,可以在每條總線上掛接多達(dá)128個(gè)MSP430智能節(jié)點(diǎn)。BL2100一方面通過(guò)RS- 485和MSP430進(jìn)行數(shù)據(jù)通信獲得各個(gè)節(jié)點(diǎn)的采樣數(shù)據(jù),另一方面把數(shù)據(jù)處理打包以Socket套接字通信的方式發(fā)送給PC監(jiān)控機(jī)。
系統(tǒng)結(jié)構(gòu)示意如圖1所示。
圖1 系統(tǒng)連接結(jié)構(gòu)示意圖
4 系統(tǒng)軟件開(kāi)發(fā)
網(wǎng)絡(luò)模塊程序總體框圖如圖2所示。
圖2 網(wǎng)絡(luò)模塊程序總體框圖
網(wǎng)絡(luò)模塊BL2100運(yùn)行過(guò)程中,程序首先進(jìn)行必要的硬件初始化,然后接收PC監(jiān)控機(jī)發(fā)送的命令,確定系統(tǒng)各個(gè)采樣通道的配置,包括采樣周期、濾波參數(shù)設(shè)置等,然后通過(guò)RS-485總線發(fā)出命令,MSP430接到命令進(jìn)行數(shù)據(jù)采集,采集完畢發(fā)送給BL2100,再通過(guò)工業(yè)以太網(wǎng)發(fā)送給PC機(jī)。
在本系統(tǒng)使用的Dynamic C語(yǔ)言開(kāi)發(fā)環(huán)境中,提供了基于TCP/IP協(xié)議的Socket網(wǎng)絡(luò)通信編程所需的全部庫(kù)函數(shù)。Socket通信首先要?jiǎng)?chuàng)建套接字,其次給套接字賦予地址信息,再建立Socket連接,最后進(jìn)行數(shù)據(jù)通信。通訊過(guò)程中還要有網(wǎng)絡(luò)狀況偵聽(tīng)功能和網(wǎng)絡(luò)錯(cuò)誤處理子程序。本系統(tǒng)的通信有實(shí)時(shí)數(shù)據(jù)和非實(shí)時(shí)數(shù)據(jù)兩部分信息流,實(shí)時(shí)數(shù)據(jù)包括采樣得到的數(shù)據(jù)流,非實(shí)時(shí)數(shù)據(jù)主要是各種各樣的采樣控制參數(shù)流。數(shù)據(jù)通信以實(shí)時(shí)數(shù)據(jù)流為主兼之以非實(shí)時(shí)數(shù)據(jù)流,程序設(shè)計(jì)按照Server/Client的形式,網(wǎng)絡(luò)模塊BL2100為服務(wù)器,PC機(jī)為客戶機(jī)。下面以運(yùn)行在網(wǎng)絡(luò)模塊上的數(shù)據(jù)發(fā)送程序來(lái)說(shuō)明 Socket通信設(shè)計(jì)的主要流程:
首先定義Socket套接字,它是基于TCP協(xié)議的,必須包含一個(gè)完整的TCP連接所需要的全部信息。但是它還不是一個(gè)具體的針對(duì)某一連接的,只是一個(gè)定義;其次初始化Socket套接字開(kāi)發(fā)環(huán)境,主要是在Dynamic C語(yǔ)言的編譯環(huán)境中聲明,獲得開(kāi)發(fā)環(huán)境的支持。該函數(shù)載入Rabbit2000 關(guān)于TCP,Socket的相關(guān)驅(qū)動(dòng)程序,它必須在所有的TCP,Socket相關(guān)函數(shù)調(diào)用之前調(diào)用;最后調(diào)用發(fā)送實(shí)時(shí)數(shù)據(jù)的子程序,在這里面要具體的創(chuàng)建套接字,建立、連接、發(fā)送數(shù)據(jù)。
子程序的部分源碼如下:
Void RealTimeDataSend(tcp_Socket* sock, long *buffwww.cechina.cn, int* state,word my_port)
{switch(* state)
Case 0:
if(tcp_open(…)!=0)//偵聽(tīng)網(wǎng)絡(luò)建立連接
printf(“Connect success”);
else
sock_tick(…);//套接字管理,完畢后轉(zhuǎn)往sock_err()函數(shù)
timer_2=MS_TIMER;//定時(shí)器
(*state)++;
break;
Case 1:
if(sock_established(sock))//建立本連接的套接字
{//建立套接字成功
*state=2;
……
Printf(“Socket success establish!!!”);
}
else if(MS_TIMER-time_2>OUT_TIME)
{//超時(shí)處理
*state=3;
……
}
Case 2://發(fā)送數(shù)據(jù)
if(send_start=0)//是第一次發(fā)送數(shù)據(jù)發(fā)送全部的實(shí)時(shí)和非實(shí)時(shí)參變量
{sock_fastwrite(buff);//往發(fā)送緩沖區(qū)寫入數(shù)據(jù)
send_start=1;
}
else if(send_start=1)
{//只發(fā)送實(shí)時(shí)變量
sock_fastwrite(buff);
*state=2;
break;
……
}
Case3:
sock_abort(sock);//關(guān)閉套接字
break;
……
sock_err(…);//套接字錯(cuò)誤處理
}
以上介紹的是網(wǎng)絡(luò)模塊向PC機(jī)發(fā)送數(shù)據(jù)的流程。但是這只是單方向的數(shù)據(jù)流動(dòng),如上所述,現(xiàn)在的工業(yè)以太網(wǎng)技術(shù)支持全雙工的通信,即數(shù)據(jù)的雙向流動(dòng)可以完美地實(shí)現(xiàn),基于此,現(xiàn)場(chǎng)的智能節(jié)點(diǎn)在不斷向PC機(jī)發(fā)送采集數(shù)據(jù)的同時(shí)也可以隨時(shí)接受來(lái)自PC機(jī)的控制信息及其對(duì)應(yīng)的數(shù)據(jù)流。本文設(shè)計(jì)了相應(yīng)的數(shù)據(jù)接收子程序。函數(shù)定義如下:
UnRealTimeDataReceive (tcp_Socket *sock, long *buffwww.cechina.cn, int *state, word my port)
{……
Case2:
sock_fastread(buff);//從接收緩沖區(qū)讀取數(shù)據(jù)
……
}
參數(shù)的定義和接收子程序相比,只有在*state等于2時(shí)有所不同,此時(shí)網(wǎng)絡(luò)模塊接收數(shù)據(jù),它根據(jù)緩沖區(qū)第一個(gè)數(shù)據(jù)獲得所要接收的參數(shù)的索引號(hào),將緩沖區(qū)第二個(gè)數(shù)據(jù)賦給具體的參數(shù)變量。還有一點(diǎn)要說(shuō)明的是,工作人員進(jìn)行監(jiān)控操作,這個(gè)過(guò)程不是實(shí)時(shí)進(jìn)行的,帶有很強(qiáng)的隨機(jī)性。因此控制信息流不是實(shí)時(shí)存在的,而是隨機(jī)的,各個(gè)網(wǎng)絡(luò)模塊會(huì)不斷地偵聽(tīng)網(wǎng)絡(luò)來(lái)查看有沒(méi)有對(duì)應(yīng)本模塊的數(shù)據(jù)包,如果有則進(jìn)入接收子程序。
5 結(jié)束語(yǔ)
本文結(jié)合數(shù)據(jù)采集系統(tǒng)討論了工業(yè)以太網(wǎng)在工業(yè)數(shù)據(jù)通信中的應(yīng)用,介紹了在Dynamic C環(huán)境下基于TCP協(xié)議的Socket網(wǎng)絡(luò)編程。本系統(tǒng)開(kāi)發(fā)以后,用于一套皮革噴漆自動(dòng)控制系統(tǒng)中,得到了成功的應(yīng)用。實(shí)踐證明,基于工業(yè)以太網(wǎng)的通信運(yùn)行很穩(wěn)定,延遲很小,在一臺(tái)PC監(jiān)控機(jī)同時(shí)和多臺(tái)皮革噴漆系統(tǒng)連接工作的情況下,運(yùn)行同樣穩(wěn)定,實(shí)時(shí)性和確定性都得到了有效的保證。可以預(yù)見(jiàn),工業(yè)以太網(wǎng)在工業(yè)數(shù)據(jù)通信中的應(yīng)用必將日益廣泛,基于TGP/IP協(xié)議的Socket套接字通信方式作為實(shí)現(xiàn)的方法簡(jiǎn)單實(shí)用穩(wěn)定,已經(jīng)獲得了大多數(shù)工業(yè)監(jiān)控開(kāi)發(fā)軟件的支持。目前集管理和控制于一體的工業(yè)生產(chǎn)過(guò)程計(jì)算機(jī)集成控制系統(tǒng)(CIPS)正在快速地發(fā)展,工業(yè)以太網(wǎng)技術(shù)使CIPS進(jìn)人工廠企業(yè)的步伐大大加快,這極大地促進(jìn)制造業(yè)的信息化進(jìn)程。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.hanmeixuan.com/
本文標(biāo)題:基于工業(yè)以太網(wǎng)的數(shù)據(jù)采集方案實(shí)現(xiàn)
本文網(wǎng)址:http://www.hanmeixuan.com/html/consultation/1083941981.html