<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于VC的執行機構以太網(wǎng)控制系統的設計

基于VC的執行機構以太網(wǎng)控制系統的設計

作者: 時(shí)間:2010-04-21 來(lái)源:網(wǎng)絡(luò ) 收藏

2.2 電動(dòng)轉串口模塊通訊的實(shí)現

串行通訊采用TTL電平,占用兩個(gè)I/O口,即輸入口(RxD)和輸出口(TxD),主控板需要提供+5V電源給轉串口模塊,硬件連接如圖2所示。


圖2 底層通訊的實(shí)現原理圖

本系統中所采用的主控芯片為Intel 80C196MC。圖中P2.0作為80C196MC的串行輸出,P2.1作為80C196MC的串行輸入。網(wǎng)卡地線(xiàn)應和主控制板的數字地即單片機的地連接。80C196MC與轉串口模塊之間采用異步通信,一幀長(cháng)度為10位,包含8位數據,1位奇偶校驗位和1位結束位。

3 軟件部分的實(shí)現

本系統采用++6.0的WinSock編程。套接字(Socket)已經(jīng)成為當今最流行的網(wǎng)絡(luò )通信應用程序接口。套接字最初由加利福利亞大Berkeley分校為Unix操作系統開(kāi)發(fā)的網(wǎng)絡(luò )通信接口, 后來(lái)它又被移植到DOS與Windows 系統,特別是近幾年互聯(lián)網(wǎng)在全世界范圍內的廣泛普及, 進(jìn)一步奠定了它在網(wǎng)絡(luò )通信程序開(kāi)發(fā)領(lǐng)域的主宰地位。

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

3.1 通信過(guò)程

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

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

1) 首先調用WSAStartup函數來(lái)初始化套接字庫。

2) 調用socket函數來(lái)創(chuàng )建一個(gè)套接字。

3) 調用connect函數連接服務(wù)器,發(fā)出連接請求

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

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

6) 調用WSACleanup函數釋放相應資源。

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


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

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

3.2 通信協(xié)議

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

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>