陳基偉,項軍偉,張 耀
(1.浙江機電職業(yè)技術(shù)學(xué)院,浙江 杭州 310053;2.浙江百納橡塑設(shè)備有限公司,浙江 仙居 317300)
當(dāng)今社會,采用TCP/IP協(xié)議的以太網(wǎng),以其高的通信效率和高的通信可靠性,實現(xiàn)了設(shè)備間的互聯(lián),使成千上萬的人同時在互聯(lián)網(wǎng)交流,互聯(lián)網(wǎng)應(yīng)用已經(jīng)遍及全球。結(jié)合工業(yè)的需求推出的工業(yè)以太網(wǎng),同樣促進(jìn)了互聯(lián)網(wǎng)技術(shù)在工業(yè)領(lǐng)域應(yīng)用。工業(yè)以太網(wǎng)上的終端設(shè)備通過組網(wǎng),可以實現(xiàn)工業(yè)現(xiàn)場信息的傳輸控制,也可以與互聯(lián)網(wǎng)上的設(shè)備間的互聯(lián),實現(xiàn)遠(yuǎn)程數(shù)據(jù)監(jiān)控,工業(yè)以太網(wǎng)技術(shù)已成為當(dāng)前工業(yè)控制的一個熱點[1]。在常見工業(yè)應(yīng)用組網(wǎng)方式中,基于串口協(xié)議如RS-485、RS232開發(fā)的設(shè)備,在物理接口與協(xié)議與以太網(wǎng)無縫兼容,需要通過專用嵌入式網(wǎng)關(guān)才能接入以太網(wǎng)。基于專用、封閉型工業(yè)網(wǎng)絡(luò),雖具備效率高的特點,但其網(wǎng)絡(luò)規(guī)范是由各公司自行研制,往往是針對某一特定應(yīng)用領(lǐng)域,在相互連接及推廣與維護(hù)等方面存在諸多不便,也需要專用網(wǎng)關(guān)才能接入以太網(wǎng)[2]。而基于工業(yè)以太網(wǎng)具有控制開發(fā)的設(shè)備可以實現(xiàn)與企業(yè)Internet/Intranet實現(xiàn)無縫連接,實現(xiàn)工業(yè)現(xiàn)場遠(yuǎn)程監(jiān)控。
為了實現(xiàn)ARM嵌入式控制器接入工業(yè)以太網(wǎng),本成果使用STM32F107與DP83848CVV完成客戶端網(wǎng)絡(luò)硬件接口的設(shè)計開發(fā);在Keil MDK及RL-ARM環(huán)境下開發(fā)客戶端應(yīng)用軟件采用;計算機服務(wù)程序采用WinSocket編程。本成果已在工業(yè)捏煉機控制器得到成功應(yīng)用,并批量生產(chǎn)。
STM32F107是意法半導(dǎo)體推出的一款互連型(Connectivity)微控制器,集成了多種工業(yè)標(biāo)準(zhǔn)接口,與不同型號產(chǎn)品在引腳和軟件上具有兼容性。外設(shè)包括10個定時器、兩個12位1-Msample/s AD、兩個12位DA、兩個I2C接口、五個USART接口和三個SPI端口和IIS, 另外STM32F107擁有全速USB(OTG)接口,兩路CAN2.0B接口,以及以太網(wǎng)10/100 MAC模塊。其中0/100 MC模塊需要兼容的網(wǎng)卡接口芯片如DP83848CVV才可以完成以太網(wǎng)應(yīng)用。
圖1 STM32F107與DP83848CVV接口
STM32F107通過MII接口與DP83848CVV完成數(shù)據(jù)交換。STM32F107與DP83848CVV接口電路[3]如圖1所示。
客戶端應(yīng)用軟件在Keil MDK及RL-ARM環(huán)境下開發(fā)[4]。對DP83848CVV接口操作部分具體實現(xiàn)代碼可以采用隨機軟件ETH_STM32x.c文件。在該文件包含了對DP83848CVV操作的底層接口函數(shù)。主要的接口函數(shù)如下:
void init_ethernet(void); //網(wǎng)卡芯片初始化函數(shù)
void send_frame(OS_FRAME*frame); //RL-ARM實時庫將待發(fā)送數(shù)據(jù)包
//送網(wǎng)卡芯片發(fā)送
put_in_queue(frame);//調(diào)用RL-ARM實時庫函數(shù)對接收
//到 TCP數(shù)據(jù)包進(jìn)行處理
客戶端登錄服務(wù)器流程如圖2所示。客戶端登錄服務(wù)器過程的具體代碼(略)。
圖2 客戶端登錄服務(wù)器流程
服務(wù)器端采用WinSocket編程[5],在Vc6.0環(huán)境調(diào)試通過。在MFC下創(chuàng)建一個基于單文檔模板的應(yīng)用工程,做好工程后,在構(gòu)造函數(shù)中完成m_srvrSocket與自定義的網(wǎng)絡(luò)事件的聯(lián)系,將其設(shè)置為監(jiān)聽模式,等待客戶機TCP連接。當(dāng)客戶機聯(lián)機或傳送數(shù)據(jù)等網(wǎng)絡(luò)事件發(fā)生時,調(diào)用MyNETMessage消息處理函數(shù),在該函數(shù)中進(jìn)行各類網(wǎng)絡(luò)事件的處理。在單文檔模板添加套接字主要的步驟有以下幾步:
在MainFrm.h定義消息事件
#define WM_MY_NETMESSAGE WM_USER+999
在MainFrm.ccp添加消息映射
BEGIN_MESSAGE_MAP(CMainFrame,CMDIFrameWnd)
ON_MESSAGE(WM_MY_NETMESSAGE,MyNETMessage) //為消息處理函數(shù)//添加入口
END_MESSAGE_MAP()
在構(gòu)造函數(shù)中,完成設(shè)置偵聽端口,并進(jìn)入偵聽。
CMainFrame::CMainFrame(){
interr;
WORD wVer;
WSADATA wsaData;
wVer=MAKEWORD(2,0);
err=WSAStartup(wVer,&wsaData);//判斷 Windows socket dll版本
if(err!=0) {
MessageBox("系統(tǒng)Sockets版本錯誤!");
return;
}
m_srvrSocket.SetMessagePara(this,WM_MY_NETMESSAGE);//設(shè)置消息事件
m_srvrSocket.Create(1300,SOCK_STREAM,FD_ACCEPT);//以TCP連接方
//式創(chuàng)建套接字,設(shè)置偵聽端口為1300
m_srvrSocket.Listen(num);//開始偵聽
}
在消息處理函數(shù)完成各類網(wǎng)絡(luò)事件處理。
LRESULT CMainFrame::MyNETMessage( WPARAM wParam,LPARAM lParam){
CString str;
switch(wParam){
case MYNET_CLIENTREAD:
break;
case MYNET_CLIENTSEND:
break;
case MYNET_CONNECT:
break;
case MYNET_SERVERCLOSE:
break;
case MYNET_SERVERREAD://接收到客戶端發(fā)送的數(shù)據(jù)…… //進(jìn)行數(shù)據(jù)處理
break;
case MYNET_SERVERSEND:
break;
case MYNET_ACCEPT://客戶端連接到服務(wù)器
str="Set_time";
str+=CTime::GetCurrentTime().Format("%Y%m%d%H%M%S");
m_srvrSocket.SendStr(str);//聯(lián)機成功后發(fā)送主機時間到客戶機
break;
case MYNET_CLIENTCLOSE://客戶機已關(guān)閉break;
}
return TRUE;
}
(1)可靠性。本成果已在工業(yè)捏煉機控制器得到成功應(yīng)用,并批量生產(chǎn)。捏煉機是橡膠煉膠的關(guān)鍵設(shè)備。捏煉機的工作原料主要為生膠、大料、炭黑、油、促進(jìn)劑、硫化劑等,煉膠時,工作現(xiàn)場粉塵多,環(huán)境條件無法滿足計算機工作要求。應(yīng)用中,數(shù)據(jù)傳輸?shù)目煽啃杂蒚CP網(wǎng)絡(luò)協(xié)議保證,本方案主要考慮網(wǎng)絡(luò)設(shè)備的工作可靠性。本方案采用工業(yè)級STM32F107完成客戶機設(shè)計,實現(xiàn)對捏煉機生產(chǎn)過程控制。服務(wù)器主機通過遠(yuǎn)程方式實現(xiàn)工藝參數(shù)傳輸及捏煉機工作狀態(tài)數(shù)據(jù)的接收。STM32F107接收服務(wù)器主機發(fā)送的工藝參數(shù),并按參數(shù)要求運行,運行時,實時將設(shè)備狀態(tài)數(shù)據(jù)發(fā)送回主機。
某規(guī)格橡膠的煉膠工藝如表1所示。通過分析煉膠工藝要求,將各個步驟中的關(guān)鍵參數(shù)時間、溫度、壓力、轉(zhuǎn)速編寫在工藝文件中,計算機遠(yuǎn)程向客戶機發(fā)送工藝文件;客戶機在接收到工藝文件后,在操作人員啟動煉膠后,自動按照規(guī)定參數(shù)逐步完成煉膠過程的控制。
表1 某規(guī)格橡膠的煉膠工藝
另外,服務(wù)器主機采用雙機備份工作模式。工作時,兩臺主機同時接收數(shù)據(jù),第一主機在完成數(shù)據(jù)接收后及時保存數(shù)據(jù),并將已保存信息發(fā)送給第二主機,第二主機自動丟棄已接收到的數(shù)據(jù)。當(dāng)?shù)谝恢鳈C故障時,第二主機接收不到第一主機發(fā)送的信息,則將保存數(shù)據(jù)。
(2)實時性。以太網(wǎng)采用載波偵聽多路復(fù)用沖突檢測(CSMA/CD機制),設(shè)計時采用小容量數(shù)據(jù)包,降低數(shù)據(jù)沖突的情況。煉膠工藝參數(shù)只傳送關(guān)鍵參數(shù),各字段長度如表2所示,每個步驟共需6字節(jié),一般的煉膠工藝參數(shù)總長度不超過180字節(jié),完整的文件可以在一個TCP數(shù)據(jù)包內(nèi)完成傳輸。由于數(shù)據(jù)量少,在主機和客戶機完成TCP鏈接后,僅發(fā)送一次數(shù)據(jù),便可以完成數(shù)據(jù)傳輸??蛻魴C回傳設(shè)備狀態(tài)數(shù)據(jù)時,狀態(tài)數(shù)據(jù)格式與工藝參數(shù)相同,回傳的間隔時間可動態(tài)設(shè)置,降低單機網(wǎng)絡(luò)資源消耗。在回傳的間隔時間內(nèi),客戶機將多個時間點的狀態(tài)數(shù)據(jù)打包,定時集中將數(shù)據(jù)發(fā)送回服務(wù)器。
表2 工藝各字段長度
本方案采用TCP連接方式,完成服務(wù)器主機與客戶機的通訊,現(xiàn)了ARM嵌入式控制器通過工業(yè)以太網(wǎng)與計算機組網(wǎng)。本方案已在捏煉機控制系統(tǒng)中得到應(yīng)用,可靠實現(xiàn)服務(wù)器向設(shè)備傳送生產(chǎn)工藝文件、服務(wù)器對設(shè)備工作狀態(tài)的實時監(jiān)測、加工工藝參數(shù)的實時記錄等功能。本方案可廣泛應(yīng)用于各類工業(yè)監(jiān)測領(lǐng)域,實現(xiàn)各類設(shè)備的監(jiān)測與控制。
[1]馬玉敏,樊留群,張浩.工業(yè)以太網(wǎng)的最新發(fā)展[J].電氣時代,2005,12.
[2]李滔.基于ARM的嵌入式工業(yè)網(wǎng)絡(luò)控制器的平臺設(shè)計[D].長沙:中南大學(xué),2009,6.
[3]于春雪.基于STM32F107的高速以太網(wǎng)接口[J].電聲技術(shù),2011,9.
[4]陳基偉,陳小菊.基于GPRS的無線遠(yuǎn)距離數(shù)據(jù)采集傳輸裝置[J].機電工程,2011,10.
[5]胡鳴.Windows網(wǎng)絡(luò)編程技術(shù)[M].北京:科學(xué)出版社,2008.