999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

用動態鏈接庫實現Modbus應答

2009-10-26 09:35:10唐崇華
新媒體研究 2009年13期
關鍵詞:功能設備

唐崇華

[摘要]MODBUS協議是應用于電子控制器上的一種通用協議。通過此協議,控制器相互之間、控制器經由網絡(例如以太網)和其它設備之間可以通信。它已經成為一種通用工業標準。不同廠商生產的控制設備可以連成工業網絡進行集中監控。此協議定義一個控制器能認識使用的消息結構,而不管它們是經過何種網絡進行通信的。它描述控制器請求訪問其它設備的過程,如何回應來自其它設備的請求,以及怎樣偵測錯誤并記錄。它制定消息域格局和內容的公共格式。

MODBUS是OSI模型第7層上的應用層報文傳輸協議,它在連接至不同類型總線或網絡的設備之間提供客戶機/服務器通信。自從1979年出現工業串行鏈路的事實標準以來,MODBUS使成千上萬的自動化設備能夠通信。目前,繼續增加對簡單而雅觀的MODBUS結構支持。

[關鍵詞]ModbusTCP/IP工業控制

中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0710066-02

一、MODBUS協議描述

MODBUS是一個請求/應答協議,并且提供功能碼規定的服務。目前,以以太網上的TCP/IP使用MODBUS比較常見。

圖1ModBus協議格式

MODBUS協議定義了一個與基礎通信層無關的簡單協議數據單元(PDU)。特定總線或網絡上的MODBUS協議映射能夠在應用數據單元(ADU)上引入一些附加域。Modbus協議格式如圖1所示。TCP/IP上的MODBUS的請求/響應協議格式如圖2所示。

啟動MODBUS事務處理的客戶機創建MODBUS應用數據單元。功能碼向服務器指示將執行哪種操作。

MODBUS報文傳輸服務提供設備之間的客戶機/服務器通信,這些設備聯接在一個Ethernet(以太網)TCP/IP網絡上。

這種客戶機/服務器模式是基于4種類型報文:

MODBUS請求:客戶機在網絡上發送用來啟動事務處理的報文。

MODBUS證實:在客戶端接收的響應信息。

MODBUS指示:服務端接收的請求報文。

MODBUS響應:服務器發送的響應信息。

圖2TCP/IP上的MODBUS的請求/響應協議格式

在TCP/IP上使用一種專用報文頭識別MODBUS應用數據單元。將這種報文頭稱為MBAP報文頭(MODBUS協議報文頭)。

MBAP報文頭包括下列域:

報文頭為7個字節長:

事務處理標識符:用于事務處理配對。在響應中,MODBUS服務器復制請求的事務處理標識符。

協議標識符:用于系統內的多路復用。通過值0識別MODBUS協議。

長度:長度域是下一個域的字節數,包括單元標識符和數據域。

單元標識符:為了系統內路由使用這個域。專門用于通過以太網TCP-IP網絡和MODBUS串行鏈路之間的網關對MODBUS或MODBUS+串行鏈路從站的通信。MODBUS客戶機在請求中設置這個域,在響應中服務器必須利用相同的值返回這個域。

二、MODBUS功能碼舉例

以讀保持寄存器(功能碼3)為例。

在一個遠程設備中,使用該功能碼讀取保持寄存器連續塊的內容。請求PDU說明了起始寄存器地址和寄存器數量。從零開始尋址寄存器。將響應報文中的寄存器數據分成每個寄存器有兩字節,在每個字節中直接地調整二進制內容。對于每個寄存器,第一個字節包括高位比特,并且第二個字節包括低位比特。

請求

響應(*N=寄存器的數量)

錯誤

這是一個請求讀寄存器108-110的實例:

將寄存器108的內容表示為兩個十六進制字節值02 2B,或十進制555。將寄存器109-110的內容分別表示為十六進制00 00和00 64,或十進制0和100。

三、用動態鏈接庫封裝MODBUS應答服務

采用動態鏈接庫(Dynamic-Linbk Library)實現對MODBUS應答服務的封裝。應客戶要求此動態鏈接庫主要的功能為響應客戶MODBUS請求并按請求將從設備采集到的數據以MODBUS協議格式發送給客戶。數據為32位浮點數,采用IEEE754格式編碼。為便于用VB等開發工具開發的客戶端調用,采用標準的動態鏈接庫格式,即函數用__stdcall定義。

1.Modbus協議解析函數

函數processMsg(unsigned char mdreq):負責解析modbus請求。主要代碼:

switch(mRrequest[7])//按照modbus協議該位置為功能號

{ case 3://請求保持寄存器

{unsigned regNo = getWord(mRrequest, 8);//起始寄存器地址

Unsigned regCount = getWord(mRrequest, 10);// 寄存器數量

if (len != 12) { //標準Modbus請求為12個字節,否則非法請求,填寫錯誤響應

mRrequest [7] |= 0x83;//錯誤碼

mRrequest [8] = 3;// 異常碼

mRrequest [5] = 3; // length

break;

}

if (regCount < 1 || regCount > 125 || regNo >= num4xRegs || (regCount + regNo) > num4xRegs) {// 請求寄存器范圍不合法,填寫錯誤響應

mRrequest [7] |= 0x83;// //錯誤碼

mRrequest [8] = 2; // 異常碼

mRrequest [5] = 3; // length

break;

}

// 正確的請求,填寫響應

mRrequest [8] = 2 * regCount;//數據字節數

mRrequest [5] = mRrequest [8] + 3;//響應信息長度

for (i=0;i

{//訪問設備,得到數據項并賦值。

… …

}

}

break;

… …

}

return6+ mRrequest [5];

2.通信模型的選擇

由于采用動態鏈接庫的方式實現對Modbus通信幀的監聽和解析,為了避免窗體的使用,所以采用SELECT模型負責網絡通信工作。SELECT模式是Winsock中最常見的I/O模型。之所以稱其為“select模式”,是由于它的中心思想是利用SELECT函數,實現對I/O的管理。利用SELECT函數,可以判斷套接字上是否存在數據,或者能否向一個套接字寫入數據,從而實現數據的收發工作。采用SELECT主要用到函數ioctlsocket、select和FD_ZERO、FD_SET、FD_ISSET和FD_CLR宏。

在應用開發時,通過以下步驟,完成對套接字的可讀可寫判斷。

(1)使用FD_ZERO宏,初始化感興趣的套接字集合fd_set,可以為可讀套接字集合和可寫套接字集合。例如FD_ZERO(ReadFD)。

(2)使用FD_SET宏將套接字分配給參與操作的fd_set集合。例如FD_SET(s,ReadFD)。

(3)以fd_set為參數調用select函數。等待在指定的fd_set集合中I/O活動設置好套接字。select函數完成后會返回在所有fd_set集合中設置的套接字句柄總數,并對每個集合進行相應的更新。

(4)select函數成功返回后,使用FD_ISSET宏,對每個fd_set集合進行檢查。例如,FD_ISSET(s,ReadFD)。如果該宏的值為TRUE,則說明該套接字可讀。

(5)調用相應的Windows Sockets API進行數據的接受和發送。

四、MODBUS異常響應

異常響應報文有兩個與正常響應不同的域:

功能碼域:在正常響應中,服務器利用響應功能碼域來應答最初請求的功能碼。所有功能碼的最高有效位(MSB)都為0(它們的值都低于十六進制80)。在異常響應中,服務器設置功能碼的MSB為1。這使得異常響應中的功能碼值比正常響應中的功能碼值高十六進制80。通過設置功能碼的MSB,客戶機的應用程序能夠識別異常響應,并且能夠檢測異常碼的數據域。

數據域:在正常響應中,服務器可以返回數據域中數據或統計表(請求中要求的任何報文)。在異常響應中,服務器返回數據域中的異常碼。

客戶機請求和服務器異常響應的實例:

在這個實例中,客戶機對服務器設備尋址請求。功能碼(01)用于讀輸出狀態操作。它將請求地址1245(十六進制04A1)的輸出狀態。

如果在服務器設備中不存在輸出地址,那么服務器將返回異常碼(02)的異常響應。這就說明從站的非法數據地址。

參考文獻:

[1]《MODBUS Protocol Reference Guide》,http://www.Modbus-IDA.org.

[2]《MODBUS MESSAGEING ON TCP/IP IMPLEMENTATION GUIDE V1.0a》,

Http://www.Modbus-IDA.org.

[3]《MODBUS Application Protocol Specification》,http://www.Modbus-IDA.org.

[4]孫海民,《Windows Sockets 網絡開發-基于Visual C++實現》,人民郵電出版社.

猜你喜歡
功能設備
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
諧響應分析在設備減振中的應用
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
關于非首都功能疏解的幾點思考
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
如何在設備采購中節省成本
原來他們都是可穿戴設備
消費者報道(2014年7期)2014-07-31 11:23:57
主站蜘蛛池模板: 狠狠色丁香婷婷综合| 亚洲欧洲美色一区二区三区| a亚洲视频| 九九久久精品免费观看| 色噜噜狠狠色综合网图区| 成人年鲁鲁在线观看视频| 国产在线97| 丁香五月婷婷激情基地| 国产成人精品三级| 亚洲欧美日韩中文字幕在线| 亚洲va视频| 91成人在线观看视频| 精久久久久无码区中文字幕| 亚洲人成影视在线观看| 久久综合色播五月男人的天堂| 2021亚洲精品不卡a| 国产精品色婷婷在线观看| 免费毛片网站在线观看| 欧美成人午夜视频免看| 一区二区三区成人| 日本黄色不卡视频| 亚洲日本中文字幕乱码中文 | 99热亚洲精品6码| 色综合激情网| 久久香蕉欧美精品| 国产SUV精品一区二区| 日韩精品毛片| 三上悠亚一区二区| 国产成人91精品免费网址在线| 亚洲中文字幕精品| 制服无码网站| 成人另类稀缺在线观看| 在线国产91| 谁有在线观看日韩亚洲最新视频| 啊嗯不日本网站| 亚洲一区二区在线无码| 国产激情第一页| 亚洲有无码中文网| 一本久道久综合久久鬼色| 久久9966精品国产免费| 欧美黑人欧美精品刺激| 亚洲视频四区| 成人欧美日韩| 天天摸夜夜操| 亚洲不卡网| 无码视频国产精品一区二区 | 激情无码字幕综合| 精品一區二區久久久久久久網站| 亚洲精品国产成人7777| 久久人搡人人玩人妻精品一| 国产精品福利尤物youwu| 午夜限制老子影院888| 日本免费一级视频| 极品私人尤物在线精品首页| 农村乱人伦一区二区| 最新国语自产精品视频在| 成人字幕网视频在线观看| 1024国产在线| 亚洲精品午夜天堂网页| 四虎永久在线精品国产免费| 91热爆在线| 亚洲人成网18禁| 人妻无码中文字幕第一区| 欧美成人看片一区二区三区 | 青草视频免费在线观看| 91精品啪在线观看国产91九色| 国产经典三级在线| 国产成人精品一区二区| 美女无遮挡拍拍拍免费视频| 美女一级毛片无遮挡内谢| 国产中文在线亚洲精品官网| 九九热精品视频在线| 毛片免费网址| 亚洲一区二区日韩欧美gif| 国产极品美女在线播放| 国产精品女在线观看| 亚洲激情99| 国产97公开成人免费视频| 国产精品久久久久久久久久久久| 免费A级毛片无码免费视频| 欧美一区二区三区不卡免费| 精品欧美日韩国产日漫一区不卡|