新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于VC執(zhí)行機(jī)構(gòu)的以太網(wǎng)控制系統(tǒng)方案設(shè)計(jì)

基于VC執(zhí)行機(jī)構(gòu)的以太網(wǎng)控制系統(tǒng)方案設(shè)計(jì)

作者: 時(shí)間:2012-02-20 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/149605.htm

系統(tǒng)采用Client/Server模式。通過轉(zhuǎn)串口模塊的配置軟件,將該模塊設(shè)置成服務(wù)器模式,而主控計(jì)算機(jī)上的控制軟件部分為客戶端,每次啟動(dòng)由主控計(jì)算機(jī)主動(dòng)連接??蛻舳撕头?wù)器采用面向連接的通信協(xié)議:控制計(jì)算機(jī)和模塊之間會(huì)建立一個(gè)虛擬連接,這個(gè)連接一旦建立,客戶端和服務(wù)器之間就可以把數(shù)據(jù)當(dāng)作一個(gè)雙向字節(jié)流進(jìn)行交換;如果連接建立不成功,則不會(huì)發(fā)送數(shù)據(jù)。另外,面向連接傳輸?shù)拿恳粋€(gè)報(bào)文都需要接收端確認(rèn),未確認(rèn)報(bào)文被認(rèn)為是出錯(cuò)的報(bào)文。

3.1 通信過程

Socket有同步阻塞方式和異步非阻塞方式兩種使用,本系統(tǒng)應(yīng)用程序中創(chuàng)建了繼承于CAsyncSocket類的TestSocket類,它是一個(gè)異步非阻塞Socket封裝類。

由于已經(jīng)將轉(zhuǎn)串口模塊設(shè)置為服務(wù)器模式,所以,主控計(jì)算機(jī)段的程序是作為客戶端出現(xiàn)的,該程序的編寫大致按照以下步驟進(jìn)行:

1) 首先調(diào)用WSAStartup函數(shù)來初始化套接字庫。

2) 調(diào)用socket函數(shù)來創(chuàng)建一個(gè)套接字。

3) 調(diào)用connect函數(shù)連接服務(wù)器,發(fā)出連接請(qǐng)求

4) 服務(wù)器響應(yīng)連接請(qǐng)求后,與服務(wù)器開始進(jìn)行交互操作(接收、發(fā)送數(shù)據(jù)等),直到請(qǐng)求結(jié)束。

5) 調(diào)用closesocket關(guān)閉套接字,釋放套接字資源。

6) 調(diào)用WSACleanup函數(shù)釋放相應(yīng)資源。

客戶端程序與服務(wù)器的通信過程如圖3所示:

圖3:面向連接服務(wù)的socket調(diào)用模型

轉(zhuǎn)串口模塊中,服務(wù)器程序調(diào)用listen函數(shù)將此socket置于監(jiān)聽狀態(tài),讓這個(gè)socket對(duì)進(jìn)來的連接進(jìn)行監(jiān)聽并確認(rèn)連接請(qǐng)求。當(dāng)服務(wù)器端監(jiān)聽到來自客戶端的連接請(qǐng)求后,一個(gè)正在監(jiān)聽的socket將給將給每個(gè)請(qǐng)求發(fā)送一個(gè)確認(rèn)信息,然后調(diào)用accept函數(shù),接著,面向連接的客戶通過調(diào)用connect函數(shù)啟動(dòng)網(wǎng)絡(luò)對(duì)話。在客戶端和服務(wù)器端建立連接以后,雙方就可以通過send和recv或其它面向連接的Socket API函數(shù)進(jìn)行網(wǎng)絡(luò)通信了。

3.2 通信協(xié)議

計(jì)算機(jī)和以太網(wǎng)轉(zhuǎn)串口模塊之間用SOCKET進(jìn)行通信,模塊和之間則采用TTL電平通信,采用統(tǒng)一的通信協(xié)議。計(jì)算機(jī)為主動(dòng)通訊設(shè)備,即所有的對(duì)話均由控制計(jì)算機(jī)發(fā)起,只是被動(dòng)的應(yīng)答命令。

協(xié)議中信息幀主要分為兩種:數(shù)據(jù)幀與命令幀。它實(shí)現(xiàn)一般信息通信功能。數(shù)據(jù)幀包含一般的I/O信息,而命令幀則包含控制、查詢及設(shè)置等命令。為保證信息傳送的準(zhǔn)確性,每條命令必須進(jìn)行校驗(yàn)(校驗(yàn)和1),如果命令后有命令參數(shù)的話,要再次校驗(yàn)(校驗(yàn)和2)。執(zhí)行機(jī)構(gòu)返回的信息也要校驗(yàn)。校驗(yàn)的方法可采用逐字節(jié)異或的方式。

控制計(jì)算機(jī)命令格式如下:

數(shù)據(jù)頭

命令碼

校驗(yàn)和1

命令參數(shù)

校驗(yàn)和2

執(zhí)行機(jī)構(gòu)返回:

數(shù)據(jù)頭

命令返回碼

位置/狀態(tài)/參數(shù)

校驗(yàn)和

數(shù)據(jù)頭一方面作為一次信息開始的標(biāo)志,另一方面用作校驗(yàn)命令。命令碼和命令返回碼應(yīng)一致,保證控制計(jì)算機(jī)可以接收到正確的命令返回信息。

3.3 軟件初步模型

圖4是目前用于系統(tǒng)測試的客戶端軟件的初步模型,通過調(diào)試驗(yàn)證,其功能已經(jīng)能基本滿足當(dāng)前的測試需求:

(1) 每個(gè)執(zhí)行機(jī)構(gòu)都有一塊與其對(duì)應(yīng)的以太網(wǎng)轉(zhuǎn)串口模塊,且每個(gè)模塊都有自己固定的IP地址:輸入IP可與指定執(zhí)行機(jī)構(gòu)進(jìn)行連接,可以與多臺(tái)執(zhí)行機(jī)構(gòu)同時(shí)進(jìn)行連接并操控。

(2) 通過握手指令來確認(rèn)連接是否已經(jīng)成功。若連接不正常,則進(jìn)行握手時(shí)系統(tǒng)會(huì)收到來自執(zhí)行機(jī)構(gòu)的錯(cuò)誤報(bào)告。

(3) 可查詢當(dāng)前執(zhí)行機(jī)構(gòu)的運(yùn)行位置、運(yùn)行狀態(tài)、以及其參數(shù)的設(shè)置情況等。

(4) 對(duì)執(zhí)行機(jī)構(gòu)的參數(shù)進(jìn)行遠(yuǎn)程設(shè)置:在執(zhí)行機(jī)構(gòu)投入使用之前,都必須按照需求對(duì)其進(jìn)行相應(yīng)的參數(shù)設(shè)置;在使用過程中亦可通過此功能來改變?cè)O(shè)置。

(5) 可以通過指定開度百分比讓執(zhí)行機(jī)構(gòu)運(yùn)行到任意的目的位置。

(6) 可以指定方向讓執(zhí)行機(jī)構(gòu)正反轉(zhuǎn)或者停止,也可進(jìn)行自主運(yùn)行。

圖4:客戶端軟件初步模型

4 總結(jié)及展望

本文作者創(chuàng)新點(diǎn):給出了的執(zhí)行機(jī)構(gòu)以太網(wǎng)監(jiān)控系統(tǒng)的設(shè)計(jì)方案,實(shí)現(xiàn)了高效、快捷的遠(yuǎn)程控制。在下一步的開發(fā)中,使本系統(tǒng)的應(yīng)用軟件與市面上通用的工控組態(tài)軟件相兼容:比如一般的組態(tài)軟件都會(huì)嵌入ModBus/TCP協(xié)議,本軟件能夠在內(nèi)部完成對(duì)該協(xié)議的轉(zhuǎn)換。也就是當(dāng)組態(tài)軟件發(fā)出控制命令后,本軟件能夠識(shí)別命令并能夠?qū)⑵滢D(zhuǎn)換成執(zhí)行機(jī)構(gòu)能夠識(shí)別的自定義協(xié)議,來間接的對(duì)執(zhí)行機(jī)構(gòu)進(jìn)行控制。這樣,系統(tǒng)就能夠與組態(tài)軟件實(shí)現(xiàn)控制上的兼容,并達(dá)到現(xiàn)場數(shù)據(jù)的共享。

總之,隨著以太網(wǎng)傳輸速度的不斷加快以及在確定性、實(shí)時(shí)性、可靠性方面性能的不斷改善,工業(yè)以太網(wǎng)無疑會(huì)在未來的控制網(wǎng)絡(luò)中扮演越來越重要的角色。


上一頁 1 2 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉