基于以太網(wǎng)分布式數(shù)據(jù)控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
摘 要:
摘 要:隨著信息技術(shù)的發(fā)展,大型企業(yè)內(nèi)部需要對(duì)大量?jī)x器儀表等設(shè)備的采集數(shù)據(jù)、性能數(shù)據(jù)、配置數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)測(cè)和控制。采用人工方式與設(shè)備進(jìn)行數(shù)據(jù)交互是十分繁瑣與不穩(wěn)定的,且增加了生產(chǎn)成本。為避免這種情況,基于以太網(wǎng)技術(shù)的分布式數(shù)據(jù)采集控制系統(tǒng)[1]變得越來(lái)越重要,其穩(wěn)定性高、成本低、速度快等特點(diǎn)得到很高的網(wǎng)絡(luò)應(yīng)用。本文介紹了以太網(wǎng)分布式數(shù)據(jù)采集控制系統(tǒng)的硬件結(jié)構(gòu)和軟件設(shè)計(jì),并通過(guò)測(cè)試驗(yàn)證該方案的可行性。
關(guān)鍵詞:
關(guān)鍵詞:以太網(wǎng) 分布式數(shù)據(jù)采集 控制系統(tǒng)
工業(yè)現(xiàn)場(chǎng)的最大特點(diǎn)是信號(hào)和數(shù)據(jù)采集終端較為零散的分布在較大范圍內(nèi),呈分布式趨勢(shì)并且和控制中心距離較遠(yuǎn)。這時(shí)就需要一種實(shí)時(shí)性好、穩(wěn)定性高,價(jià)格低廉的工業(yè)控制網(wǎng)絡(luò)將分布式環(huán)境中的各類(lèi)儀表終端所產(chǎn)生的數(shù)據(jù)傳輸?shù)阶鳛橹骺貑卧挠?jì)算機(jī)平臺(tái)上,以便工作人員進(jìn)行集中監(jiān)控和管理。因此,以TCP/IP協(xié)議為基礎(chǔ)的工業(yè)以太網(wǎng)[2]得到了越來(lái)越多的關(guān)注。
本系統(tǒng)基于TCP/IP協(xié)議作為通信協(xié)議。TCP協(xié)議是一種工業(yè)標(biāo)準(zhǔn)的面向端到端的可靠傳輸協(xié)議,為跨越不同網(wǎng)絡(luò)的主機(jī)進(jìn)程間通信提供了可靠的傳輸機(jī)制。使用TCP協(xié)議和以太網(wǎng)技術(shù)可降低成本,且通信速率高,有良好的兼容性能。其優(yōu)點(diǎn)解決了傳統(tǒng)數(shù)據(jù)采集系統(tǒng)存在的通信可靠性和通信效率之間的矛盾。本文研究了在計(jì)算機(jī)平臺(tái)上用監(jiān)控軟件通過(guò)以太網(wǎng)控制多個(gè)嵌入式系統(tǒng)[3]進(jìn)行數(shù)據(jù)采集和傳輸,實(shí)現(xiàn)高效通信的方法。
1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
基于以太網(wǎng)的分布式數(shù)據(jù)采集控制系統(tǒng)硬件主要由以下組成:負(fù)責(zé)管理監(jiān)控的計(jì)算機(jī)(上位機(jī))、作為中介網(wǎng)絡(luò)通信服務(wù)器的STM32單片機(jī)(下位機(jī))、采集數(shù)據(jù)的儀表終端。本系統(tǒng)并沒(méi)有將上位機(jī)作為服務(wù)器端,而是利用下位機(jī)作為一個(gè)中介網(wǎng)絡(luò)通信服務(wù)器。將上位機(jī)和儀器儀表都作為客戶(hù)端根據(jù)設(shè)定好的IP地址和端口號(hào)接入到對(duì)應(yīng)的下位機(jī)中組成一個(gè)小的網(wǎng)絡(luò)系統(tǒng)。
在整個(gè)系統(tǒng)中下位機(jī)一方面接收儀器儀表發(fā)送的數(shù)據(jù),并進(jìn)行處理后轉(zhuǎn)發(fā)給上位機(jī)監(jiān)控軟件,另一方面接收來(lái)自監(jiān)控軟件的控制命令對(duì)連入網(wǎng)絡(luò)的儀表進(jìn)行控制。上位機(jī)會(huì)單獨(dú)開(kāi)辟一個(gè)獨(dú)立的線程與每個(gè)下位機(jī)進(jìn)行通信,并獨(dú)立地對(duì)采集到的數(shù)據(jù)進(jìn)行顯示、存儲(chǔ)等操作,保證了上位機(jī)對(duì)每個(gè)下位機(jī)操作的獨(dú)立性。
作為下位機(jī)的STM32單片機(jī)選用STM32F103增強(qiáng)型STM32F103ZET6芯片,通過(guò)移植?C/OS.II嵌入式實(shí)時(shí)操作系統(tǒng)和Lwip輕量級(jí)網(wǎng)絡(luò)協(xié)議棧并擴(kuò)充網(wǎng)絡(luò)芯片ENC28J60實(shí)現(xiàn)和上位機(jī)、儀表之間的網(wǎng)絡(luò)通信功能。STM32單片機(jī)還可以設(shè)置數(shù)據(jù)過(guò)濾,網(wǎng)絡(luò)防火墻等安全保護(hù)措施,以防止其他惡意程序通過(guò)網(wǎng)絡(luò)入侵系統(tǒng)。
2 系統(tǒng)軟件設(shè)計(jì)
2.1 上位機(jī)軟件需求分析
上位機(jī)的監(jiān)控程序包括了界面顯示、數(shù)據(jù)庫(kù)管理、管理員操作、網(wǎng)絡(luò)功能等基本模塊,其中網(wǎng)絡(luò)功能分為網(wǎng)絡(luò)掃描和網(wǎng)絡(luò)數(shù)據(jù)收發(fā)兩大部分,各功能模塊的主要組成部分如圖2所示。上位機(jī)選擇Visual C++作為開(kāi)發(fā)語(yǔ)言,Visual Studio2010作為開(kāi)發(fā)工具,使用Windows Socket套接字和多線程技術(shù)進(jìn)行網(wǎng)絡(luò)通信編程,確保了整個(gè)系統(tǒng)的穩(wěn)定性和高效性。
2.2 數(shù)據(jù)結(jié)構(gòu)與實(shí)現(xiàn)流程
上位機(jī)作為客戶(hù)端根據(jù)預(yù)先設(shè)定的IP地址和端口號(hào)范圍向下位機(jī)服務(wù)器端主動(dòng)發(fā)起網(wǎng)絡(luò)連接,并為每個(gè)連接動(dòng)態(tài)分配一個(gè)描述客戶(hù)端信息的類(lèi)。該類(lèi)包括客戶(hù)端套接字與該套接字相關(guān)的讀寫(xiě)緩沖區(qū)等信息。該類(lèi)的主要成員變量和方法如下所示:
class clientsocket
{
private:
UINT m_port;
CString m_ip;
SOCKET m_socket;
BOOL m_connect;
CString m_databuffer;
public:
Clientsocket(void);
~Clientsocket(void);
Void CreateSocket(BOOL tcp);
Void CloseSocket(void);
BOOL ConnectSocket(UINT Port,Cstring IP);
static UINT DataThread(LPVOID pParam);
}
其中CreateSocket(BOOL tcp)函數(shù)功能是創(chuàng)建一個(gè)流式套接字,CloseSocket(void)是在套接字讀寫(xiě)發(fā)生錯(cuò)誤和對(duì)方斷開(kāi)連接時(shí)關(guān)閉該套接字并清理資源。ConnectSocket(UINT Port,CString IP)方法是采用TCP連接的三次握手掃描技術(shù)對(duì)設(shè)定的網(wǎng)段進(jìn)行定時(shí)掃描[4],如果連接成功則表示下位機(jī)存在,如果連接失敗則表示該下位機(jī)不存在。DataThread(LPVOID pParam)為進(jìn)行數(shù)據(jù)接收和發(fā)送的線程函數(shù)。當(dāng)上位機(jī)與下位機(jī)建立TCP連接之后,將為這個(gè)連接單獨(dú)開(kāi)啟一個(gè)線程用于上位機(jī)與該下位機(jī)之間的數(shù)據(jù)收發(fā)。由于上位機(jī)要同時(shí)與多個(gè)下位機(jī)連接并進(jìn)行同步數(shù)據(jù)收發(fā),所以程序采用多線程并發(fā)通信的方式,,這樣可以保證每個(gè)連接的數(shù)據(jù)收發(fā)過(guò)程的獨(dú)立性,數(shù)據(jù)的安全性提高了整個(gè)系統(tǒng)的工作效率。
2.3 單片機(jī)網(wǎng)絡(luò)通訊程序
STM32單片機(jī)作為系統(tǒng)的網(wǎng)絡(luò)通信服務(wù)器,其需要接受上位機(jī)和儀表發(fā)起的網(wǎng)絡(luò)連接并進(jìn)行數(shù)據(jù)收發(fā),由于要保證網(wǎng)絡(luò)通信的穩(wěn)定性和數(shù)據(jù)的準(zhǔn)確性,因此采用基于TCP面向連接的可靠傳輸協(xié)議方式實(shí)現(xiàn)。首先在STM32單片機(jī)上移植實(shí)時(shí)操作系統(tǒng)?C/OS.II 和Lwip網(wǎng)絡(luò)協(xié)議棧[5]保證多個(gè)網(wǎng)絡(luò)通信任務(wù)的實(shí)時(shí)性和并發(fā)運(yùn)行,然后對(duì)ENC28J60網(wǎng)絡(luò)芯片和Lwip網(wǎng)絡(luò)協(xié)議棧進(jìn)行初始化后創(chuàng)建NetWorkTask()網(wǎng)絡(luò)通信任務(wù),其網(wǎng)絡(luò)通信流程圖如圖3所示。NetWorkTask()線程首先調(diào)用netconn_new()函數(shù)建立tcp_server連接的netconn結(jié)構(gòu)體,并進(jìn)行IP地址和端口號(hào)的設(shè)置,然后綁定tcp_server連接并進(jìn)入監(jiān)聽(tīng)模式。當(dāng)下位機(jī)接收到網(wǎng)絡(luò)數(shù)據(jù)時(shí),調(diào)用netconn_recv()將數(shù)據(jù)接收到netbuf緩沖區(qū),并向用戶(hù)任務(wù)發(fā)出通知。
3 實(shí)驗(yàn)測(cè)試
3.1 測(cè)試環(huán)境
系統(tǒng)硬件環(huán)境:上位機(jī)電腦采用Inter Core(Tm)2CPU 6300 2.1GHz 內(nèi)存2GB。下位機(jī)為擴(kuò)展ENC28J60網(wǎng)絡(luò)芯片和RJ45網(wǎng)口的STM32開(kāi)發(fā)板,并使用溫濕度采集模塊作為儀表。上下位機(jī)之間通過(guò)10/100M交換機(jī)進(jìn)行數(shù)據(jù)交換。
網(wǎng)絡(luò)環(huán)境:10M局域網(wǎng)絡(luò)。
系統(tǒng)平臺(tái)環(huán)境:上位機(jī)電腦操作系統(tǒng)為Microsoft Windows7,下位機(jī)STM32單片機(jī)移植?C/OS.II嵌入式實(shí)時(shí)操作系統(tǒng)加Lwip嵌入式網(wǎng)絡(luò)協(xié)議棧。
3.2 測(cè)試方法
將作為下位機(jī)的stm32單片機(jī)開(kāi)發(fā)板和作為模擬儀表的溫濕度采集器通過(guò)路由器連接一臺(tái)電腦組成網(wǎng)絡(luò)系統(tǒng)。啟動(dòng)上位機(jī)軟件,根據(jù)預(yù)先設(shè)置的網(wǎng)段范圍、端口號(hào)、網(wǎng)關(guān)地址開(kāi)啟掃描連接功能,掃描間隔為10s,測(cè)試是否所有處于工作狀態(tài)的下位機(jī)都能被上位機(jī)監(jiān)控軟件發(fā)現(xiàn)并接入到上位機(jī)系統(tǒng)當(dāng)中。下位機(jī)與上位機(jī)和溫濕度采集器成功建立連接后,下位機(jī)采用輪詢(xún)的方式依次向每個(gè)溫濕度采集器發(fā)送命令請(qǐng)求其發(fā)送溫濕度數(shù)據(jù),下位機(jī)收到完整數(shù)據(jù)后將其打包發(fā)送給上位機(jī)監(jiān)控軟件。根據(jù)以太網(wǎng)最大傳輸單元MTU數(shù)據(jù),設(shè)定下位機(jī)每次發(fā)送的最大數(shù)據(jù)量為1000B,測(cè)試發(fā)送和接收的數(shù)據(jù)量是否完全相等。
3.3 測(cè)試結(jié)果
經(jīng)過(guò)多次測(cè)試驗(yàn)證的結(jié)果表明:上位機(jī)能夠?qū)崿F(xiàn)對(duì)下位機(jī)的主動(dòng)查找,連接成功后下位機(jī)能夠?qū)x表發(fā)送的數(shù)據(jù)及時(shí)、準(zhǔn)確的發(fā)送到上位機(jī)。上位機(jī)也能實(shí)現(xiàn)對(duì)下位機(jī)的操作與控制,數(shù)據(jù)庫(kù)模塊、管理員模塊、顯示界面均滿(mǎn)足設(shè)計(jì)要求。
4 總結(jié)
本文所提出的基于以太網(wǎng)的分布式數(shù)據(jù)采集控制系統(tǒng)實(shí)時(shí)性好、可靠性高,與其他控制系統(tǒng)相比具有很大優(yōu)勢(shì),能夠?qū)崿F(xiàn)對(duì)工業(yè)現(xiàn)場(chǎng)設(shè)備的遠(yuǎn)程數(shù)據(jù)采集與監(jiān)控;操作性強(qiáng)、可擴(kuò)展性好,對(duì)實(shí)現(xiàn)工業(yè)生產(chǎn)的數(shù)據(jù)采集自動(dòng)化和信息化具有重大意義。
本文編號(hào):14938
本文鏈接:http://sikaile.net/kejilunwen/wltx/14938.html