• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Modbus協(xié)議ARM農(nóng)田服務器的設計

    2014-06-28 11:10:02袁福營,史智興
    湖北農(nóng)業(yè)科學 2014年7期
    關鍵詞:現(xiàn)代農(nóng)業(yè)

    袁福營,史智興(等)

    摘要:將Modbus協(xié)議應用到農(nóng)業(yè)信息化領域,設計了一種基于Modbus協(xié)議的嵌入式農(nóng)田信息采集服務器。分析了Modbus協(xié)議,設計了系統(tǒng)各模塊之間的數(shù)據(jù)通信接口,ARM服務器與應用層采用Modbus/TCP通信完成用戶的查詢,ARM服務器與數(shù)據(jù)采集層采用Modbus串口通信進行數(shù)據(jù)的存儲,提出了Modbus/TCP幀與串行鏈路RTU幀的轉換方法,實現(xiàn)了應用層與數(shù)據(jù)采集層的實時通信,提高了系統(tǒng)的有效性和可靠性。

    關鍵詞:現(xiàn)代農(nóng)業(yè);嵌入式服務器;農(nóng)田信息采集;Modbus

    中圖分類號:TP274 文獻標識碼:A 文章編號:0439-8114(2014)07-1667-04

    Modbus Protocol Based Designs of ARM Farmland Server

    YUAN Fu-ying,SHI Zhi-xing,JING Li-wei,ZHANG Yi-jun

    (College of Information Science and Technology, Agricultural University of Hebei, Baoding 071000, Hebei, China)

    Abstract: Modbus protocol was applied in the farmland information collection system and a preliminary design of an embedded farmland information collection server based on Modbus protocol was presented. ARM server using Modbus/TCP to communicate with the application layer for completing the users query, and ARM server using seriallink to communicate with data acquisition layer for data storage were analyzed. The conversion of Modbus/TCP frame with serial link RTU frame was proposed to realize the communication for the application layer and the data acquisition layer. The design improved the effectiveness and reliability of the system.

    Key words: modern agriculture; embedded server; farmland information acquisition; Modbus

    隨著現(xiàn)代農(nóng)業(yè)的推動,信息技術正在迅速滲透到農(nóng)業(yè)的各個領域。采用農(nóng)業(yè)信息化技術,對大田種植、設施園藝和水產(chǎn)養(yǎng)殖等農(nóng)業(yè)生產(chǎn)的各種要素進行信息采集,進一步實行數(shù)字化設計、智能化控制、科學化管理,大大提高了農(nóng)業(yè)生產(chǎn)的標準化、自動化、產(chǎn)業(yè)化,促進了農(nóng)業(yè)生產(chǎn)的高產(chǎn)、高效、生態(tài)和安全。信息采集技術成為了實現(xiàn)農(nóng)業(yè)信息化的必不可少的前提。

    在工業(yè)自動化領域中,控制系統(tǒng)普遍采用Modbus通訊協(xié)議[1]。陸晶[2]設計了一種基于Modbus協(xié)議的電廠數(shù)據(jù)采集系統(tǒng),提高了數(shù)據(jù)采集的精確性和穩(wěn)定性。任清娟[3]針對煉鐵廠的高爐渣粒化工廠,采用Modbus通訊協(xié)議達到了對現(xiàn)場設備遠程實時監(jiān)控的目的。林勇堅[4]將Modbus現(xiàn)場總線應用到水處理流程控制工程項目中,解決了傳統(tǒng)現(xiàn)場總線布線量大、傳輸精度低、信號易受干擾等問題。但是Modbus協(xié)議在農(nóng)業(yè)信息化領域的應用尚且不足,為此,將Modbus協(xié)議應用到農(nóng)業(yè)信息化領域,設計一種基礎Modbus協(xié)議的嵌入式農(nóng)田信息采集服務器。

    1 基于Modbus協(xié)議ARM農(nóng)田服務器的整體設計

    農(nóng)田信息采集系統(tǒng)主要包括數(shù)據(jù)采集層、數(shù)據(jù)處理控制層、應用層。系統(tǒng)的體系結構如圖1所示。在數(shù)據(jù)采集層,數(shù)據(jù)傳感器采集田間CO2濃度、空氣濕度、光照度等田間參數(shù),經(jīng)過一系列數(shù)據(jù)處理之后將采集的數(shù)據(jù)信息匯總通過串口RS485上傳至數(shù)據(jù)處理控制層。服務器接收到田間信息數(shù)據(jù),進行存儲??蛻舳丝赏ㄟ^瀏覽器訪問服務器瀏覽田間信息,也可采用C/S的Windows客戶端訪問服務器讀取田間信息。

    2 服務器到應用層的通信

    設計的ARM服務器使用Linux系統(tǒng)采用Modbus協(xié)議,服務器與客戶端通信采用Modbus/TCP,服務器與數(shù)據(jù)采集層通信采用Modbus串口。Modbus/TCP是可靠連接,保證了客戶端與服務器的有效實時通信。服務器與數(shù)據(jù)采集層通過串口通信,故可將ARM服務器放置于田間,解決了傳統(tǒng)服務器必須放置于室內的問題。

    Modbus屬于應用層報文傳輸協(xié)議,用于不同類型的總線或網(wǎng)絡連接的設備之間的客戶端/服務器通信[5]。數(shù)據(jù)通訊采用一對多的主從查詢模式。主站可以單獨與從機通信,也可以廣播方式和所有從站通信。主站以廣播方式查詢,則從站不做出回應[6]。Modbus/TCP采用以太網(wǎng)技術(IEEE802.3)以一種簡單的方式將Modbus幀嵌入到TCP/IP協(xié)議幀中,在物理層傳輸[7]。Modbus/TCP在TCP/IP上使用專用MBAP報文頭,MBAP報文頭包括傳輸標志(Transaction Identifier)、協(xié)議標志(Protocol Identifier)、長度域(Length)、單元標志(Unit Identifier)。Protocol Identifier為0時,表明是Modbus協(xié)議。Unit Identifier用來定義從站的設備地址。Modbus/TCP是可靠連接,因此在Modbus/TCP中不存在校驗碼。Modbus/TCP數(shù)據(jù)幀格式如圖2所示。

    Modbus有ASCII和RTU兩種串行傳輸方式。ASCII模式通過冒號、回車字符判定數(shù)據(jù)幀的起始和結束,采用LRC 數(shù)據(jù)檢驗。消息中的每一個8位字節(jié)作為2個ASCII字符傳輸。ASCII幀字符之間的最大間隔為1 s,超過1 s則默認發(fā)送錯誤。RTU模式消息中的每一個8位字節(jié)含有兩個4位的16進制的字符傳輸,因此在相同的波特率下其具有更高的數(shù)據(jù)量[8]。RTU 模式中數(shù)據(jù)以非壓縮 BCD 碼表示,通過時間標記實現(xiàn)數(shù)據(jù)幀起始判定,采用CRC數(shù)據(jù)校驗,具有數(shù)據(jù)吞吐量高、傳輸穩(wěn)定、通信效率高的優(yōu)點[9]。此次設計采用了RTU傳輸方式,RTU報文格式如表1所示。

    2.1 服務器到應用層的通信實現(xiàn)

    Modbus客戶端根據(jù)用戶應用向Modbus客戶機接口發(fā)送的要求中所包含的參數(shù)來建立一個Modbus/TCP請求。Modbus服務器一直處于監(jiān)聽TCP502端口的狀態(tài),當檢測到有Modbus請求的時候,經(jīng)過TCP 3次握手連接成功。服務器接收到Modbus請求幀之后,首先進行幀解析,完成事務處理,然后向用戶發(fā)送返回幀。Modbus服務器處理的事件主要有:等待Modbus/TCP連接、接收請求幀、處理應答、處理差錯等。Modbus服務器與客戶端通信流程如圖3所示。

    作為通信服務器端,首先初始化并建立通信socket,bind()本地IP和端口與socket相連,并使用listen方法將其設置為偵聽模式。當Modbus客戶機需要對服務器進行查詢時,首先會向Modbus服務器網(wǎng)關的502端口發(fā)起連接請求,服務器監(jiān)聽到請求與之建立TCP連接后,客戶機發(fā)送Modbus/TCP請求幀并等待響應。服務器收到Modbus客戶機的請求幀,首先進行Modbus PDU處理,依次分析處理消息幀結構,根據(jù)功能碼進行事務處理,并將事物處理結果封裝成Modbus/TCP應答幀,返回至Modbus客戶機,然后斷開連接等待下一次的連接請求。

    程序中最核心的Modbus類的主要方法的聲明如下:

    class CModBus

    {

    public:

    void Connect(const char*ip,ushort port);

    void ReadHoldingRegistersFun(ushort strAddress,ushortnumInputs);

    void WriteMultipleRegistersFun(ushort straddress,int*ptrValue,int nLen);

    void WriteSingleRegistersFun(ushort address,ushort Data);

    private:

    void CreateReadHeader(ushort startReadAddress,ushort lenght,unsigned char function);

    void CreateWriteHeader(ushort starAddaress,ushort len,unsigned char function);

    void CRCChick(unsigned char*messageDate,int nLen);

    void WriteAsyncDate(unsigned char*pWriteDate,int nDataLen);

    void TransformParamDateFun(int len,unsigned char*Data);

    void TransformControlDateFun(int len,unsigned char*Data);

    void RecvReadData();

    ……}

    Modbus類中Connect()實現(xiàn)服務器與客戶端socket的連接,ReadHoldingRegistersFun()用來發(fā)送客戶端讀取數(shù)據(jù)的結果,WriteSingleRegistersFun()、WriteMultipleRegistersFun()分別實現(xiàn)寫單個寄存器和寫多個寄存器。CreateReadHeader()、CreateWriteHeader()分別創(chuàng)建Modbus讀寫寄存器幀的頭部數(shù)據(jù),WriteAsyncDate()將數(shù)據(jù)寫入到socket。TransformControlDateFun()、TransformParamDateFun()轉換讀取控制、參數(shù)數(shù)據(jù)。RecvReadData()從連接套接字中讀取信息。

    服務器向客戶端發(fā)送回應結果,首先調用ReadHoldingRegistersFun(),通過執(zhí)行CreateReadWriteHeader()填寫RTU數(shù)據(jù)幀信息,然后WriteAsyncDate()向緩沖區(qū)用SendData發(fā)送數(shù)據(jù)。具體實現(xiàn)程序如下:

    void CModBus::ReadHoldingRegistersFun(usho

    rt strAddress,ushort numInputs){

    CreateReadWriteHeader(strAddress,numInputs,ReadHoldingRegisters);

    WriteAsyncDate(SendDate,READ_REGISTERS_HEA

    DER_LEN);

    }

    void CModBus::WriteAsyncDate(unsigned char *pWriteDate,int nDataLen)

    {

    if(nSocket>0&&nConnect>=0)

    {

    FD_SET(nSocket,&set);

    neSlect=select(nSocket+1,NULL,&set,NULL,&tv);if(neSlect>0)

    {

    nSend=send(nSocket,(char*)pWriteDate,nDataLen,0);

    }

    if(nDataLen==READ_REGISTERS_HEAD

    ER_LEN)

    {

    RecvReadData();

    }

    else

    {

    RecvWriteReturn();

    }

    }

    FD_ZERO(&set);

    }

    若客戶端要讀取06號設備起始地址為4的連續(xù)2個寄存器,讀取保持寄存器的功能碼function為3。服務器通信結果見圖4。

    2.2 Modbus/TCP幀與RTU幀轉換設計

    當客戶端需要查詢當前的實時數(shù)據(jù),而服務器還未進行存儲,客戶端向服務器發(fā)送Modbus/TCP請求幀并等待服務器應答,服務器接收Modbus/TCP請求幀對其進行分析處理,轉化成Modus RTU串行鏈路響應幀并發(fā)送到與數(shù)據(jù)采集層相連的串行鏈路中去,監(jiān)聽等待數(shù)據(jù)采集層的應答。若服務器收到串行鏈路上的RTU應答幀,則將該應答幀重新封裝成Modbus/TCP應答幀,發(fā)送給客戶端。因此,在服務器端需要進行Modbus/TCP與串行鏈路RTU的轉換。

    ModToRtu()函數(shù)實現(xiàn)Modbus/TCP幀與串行鏈路RTU幀的轉換功能,轉換過程見圖5。

    Modbus/TCP幀與串行鏈路RTU幀相比,增加了MBAP報文,減少了CRC校驗碼。Modbus/TCP轉串行鏈路RTU過程:首先從MBAP報文頭中解析出地址段,并將MBAP的各字段保存。然后從Modbus/TCP幀中分別解析出功能碼和數(shù)據(jù)段,并計算CRC校驗碼,最后封裝成串行鏈路RTU幀。

    串行鏈路RTU幀轉換成Modbus/TCP幀:首先利用已保存MBAP字段重新封裝成MBAP,然后從RTU幀中讀取數(shù)據(jù)段和功能碼,分別填充到Modbus/TCP幀的數(shù)據(jù)段和功能碼,封裝成Modbus/TCP幀。

    2.3 線程池

    在服務器整個工作過程中,系統(tǒng)通過線程與客戶端和與數(shù)據(jù)采集層進行通信。傳統(tǒng)多線程方案的服務器,多個線程在同一時間內并發(fā)運行執(zhí)行相應的任務[10],采用“及時創(chuàng)建,及時銷毀”的策略。當服務器接收到請求之后創(chuàng)建一個線程,由該線程執(zhí)行具體任務,任務結束之后線程退出。若大量用戶同時訪問服務器,在短時間內,服務器將處于不停地創(chuàng)建線程、銷毀線程的狀態(tài),容易導致消耗系統(tǒng)內存。因此,系統(tǒng)增加了線程池,大大減少了線程的開銷。

    線程池采用預創(chuàng)建技術。程序啟動之后,首先創(chuàng)建一定數(shù)量(NUM個)的線程,這些線程處于阻塞狀態(tài),并不消耗CPU。當系統(tǒng)有任務需要執(zhí)行時,程序喚醒一個空閑線程執(zhí)行任務。任務完成之后,該線程再次回到阻塞狀態(tài),等待下次任務的到來。在線程池的數(shù)量設計上,程序所創(chuàng)建的線程總數(shù)不能高于THREAD_MAXNUM,當系統(tǒng)中的空閑線程數(shù)量低于THREAD_Max時,程序將創(chuàng)建一些線程,使得空閑線程維持在THREAD_AvailLow之上。當系統(tǒng)中的空閑線程數(shù)量高于THREAD_AvailHigh時,線程池會自動銷毀一些線程,保持空閑線程的數(shù)量在一個合理的范圍內。

    3 服務器到數(shù)據(jù)采集層的通信

    服務器通過串口定期向數(shù)據(jù)采集層發(fā)送RTU請求幀,并等待接收數(shù)據(jù)采集層的RTU返回幀,將收到的農(nóng)田信息存儲在數(shù)據(jù)庫中。

    服務器端首先打開串口,調用CreatData()準備要發(fā)送的請求數(shù)據(jù),執(zhí)行CreatCRC()生成函數(shù)獲取CRC校驗碼,通過CreatRtu()封裝程序組織生成RTU報文,發(fā)送RTU信息幀,檢測串口等待返回幀。若等待超過Modbus協(xié)議規(guī)定的4個字符延時等待時間,則進行超時處理。否則,接收數(shù)據(jù)采集層的返回幀之后,返回到數(shù)據(jù)準備階段,繼續(xù)檢測串口。服務器端界面采用qt設計,如圖6所示。

    4 小結

    分析了Modbus協(xié)議,將應用在工業(yè)控制中的Modbus協(xié)議引入到農(nóng)田信息采集系統(tǒng),Modbus幀格式簡單、緊湊、高效,同時Modbus/TCP具有實時通信的特點,更適合嵌入式設備,實現(xiàn)遠程數(shù)據(jù)的交互,從而達到遠程監(jiān)測的目的。設計了基于Modbus協(xié)議的ARM農(nóng)田信息采集服務器,實現(xiàn)了服務器與應用層、服務器與數(shù)據(jù)采集層的通信接口,提出了Modbus/TCP幀與串行鏈路RTU幀的轉換方法,增加了線程池完成每一次的通信任務。服務器可訪問數(shù)據(jù)采集端進行田間信息存儲,客戶端可隨時訪問服務器瀏覽田間信息。但是服務器還存在不足,如何健全服務器功能,發(fā)揮Modbus嵌入式服務器的綜合優(yōu)勢,仍需進一步的研究。

    參考文獻:

    [1] 劉西廣.用于西門子Insight軟件的Modbus協(xié)議通用網(wǎng)關設計[D].成都:電子科技大學,2011.

    [2] 陸 晶.基于Modbus的數(shù)據(jù)采集系統(tǒng)[D].江蘇無錫:江南大學,2011.

    [3] 任清娟.基于Modbus和GPRS的高爐渣?;潆姳O(jiān)控系統(tǒng)的設計[D].內蒙古包頭:內蒙古科技大學,2012.

    [4] 林勇堅.基于Modbus現(xiàn)場總線的水處理流程控制的工程設計[J].廣西民族大學學報(自然科學版),2013,19(1):79-81.

    [5] 陳 輝.基于Modbus協(xié)議灌區(qū)遠程智能測控系統(tǒng)研究[D].蘭州:蘭州理工大學,2012.

    [6] 王 諦.基于Modbus協(xié)議的PC機與dsPIC6014處理器的通信[D].呼和浩特:內蒙古大學,2012.

    [7] 景柏豪,沈孟良,唐曄鈞.CAN-Modbus/TCP協(xié)議轉換的設計與實現(xiàn)[J].計算機工程與設計,2013,34(5):1552-1556.

    [8] 李振江.Linux系統(tǒng)下Modbus主協(xié)議棧設計與實現(xiàn)[D].合肥:安徽大學,2012.

    [9] 吳寅華,趙 敏.基于ARM Cortex-M3的Modbus協(xié)議實現(xiàn)及其應用[J].電子科技,2011,24(6):19-21.

    [10] 楊開杰,劉秋菊,徐汀榮.線程池的多線程并發(fā)控制技術研究[J].計算機應用與軟件,2010,27(1):168-169.

    {

    FD_SET(nSocket,&set);

    neSlect=select(nSocket+1,NULL,&set,NULL,&tv);if(neSlect>0)

    {

    nSend=send(nSocket,(char*)pWriteDate,nDataLen,0);

    }

    if(nDataLen==READ_REGISTERS_HEAD

    ER_LEN)

    {

    RecvReadData();

    }

    else

    {

    RecvWriteReturn();

    }

    }

    FD_ZERO(&set);

    }

    若客戶端要讀取06號設備起始地址為4的連續(xù)2個寄存器,讀取保持寄存器的功能碼function為3。服務器通信結果見圖4。

    2.2 Modbus/TCP幀與RTU幀轉換設計

    當客戶端需要查詢當前的實時數(shù)據(jù),而服務器還未進行存儲,客戶端向服務器發(fā)送Modbus/TCP請求幀并等待服務器應答,服務器接收Modbus/TCP請求幀對其進行分析處理,轉化成Modus RTU串行鏈路響應幀并發(fā)送到與數(shù)據(jù)采集層相連的串行鏈路中去,監(jiān)聽等待數(shù)據(jù)采集層的應答。若服務器收到串行鏈路上的RTU應答幀,則將該應答幀重新封裝成Modbus/TCP應答幀,發(fā)送給客戶端。因此,在服務器端需要進行Modbus/TCP與串行鏈路RTU的轉換。

    ModToRtu()函數(shù)實現(xiàn)Modbus/TCP幀與串行鏈路RTU幀的轉換功能,轉換過程見圖5。

    Modbus/TCP幀與串行鏈路RTU幀相比,增加了MBAP報文,減少了CRC校驗碼。Modbus/TCP轉串行鏈路RTU過程:首先從MBAP報文頭中解析出地址段,并將MBAP的各字段保存。然后從Modbus/TCP幀中分別解析出功能碼和數(shù)據(jù)段,并計算CRC校驗碼,最后封裝成串行鏈路RTU幀。

    串行鏈路RTU幀轉換成Modbus/TCP幀:首先利用已保存MBAP字段重新封裝成MBAP,然后從RTU幀中讀取數(shù)據(jù)段和功能碼,分別填充到Modbus/TCP幀的數(shù)據(jù)段和功能碼,封裝成Modbus/TCP幀。

    2.3 線程池

    在服務器整個工作過程中,系統(tǒng)通過線程與客戶端和與數(shù)據(jù)采集層進行通信。傳統(tǒng)多線程方案的服務器,多個線程在同一時間內并發(fā)運行執(zhí)行相應的任務[10],采用“及時創(chuàng)建,及時銷毀”的策略。當服務器接收到請求之后創(chuàng)建一個線程,由該線程執(zhí)行具體任務,任務結束之后線程退出。若大量用戶同時訪問服務器,在短時間內,服務器將處于不停地創(chuàng)建線程、銷毀線程的狀態(tài),容易導致消耗系統(tǒng)內存。因此,系統(tǒng)增加了線程池,大大減少了線程的開銷。

    線程池采用預創(chuàng)建技術。程序啟動之后,首先創(chuàng)建一定數(shù)量(NUM個)的線程,這些線程處于阻塞狀態(tài),并不消耗CPU。當系統(tǒng)有任務需要執(zhí)行時,程序喚醒一個空閑線程執(zhí)行任務。任務完成之后,該線程再次回到阻塞狀態(tài),等待下次任務的到來。在線程池的數(shù)量設計上,程序所創(chuàng)建的線程總數(shù)不能高于THREAD_MAXNUM,當系統(tǒng)中的空閑線程數(shù)量低于THREAD_Max時,程序將創(chuàng)建一些線程,使得空閑線程維持在THREAD_AvailLow之上。當系統(tǒng)中的空閑線程數(shù)量高于THREAD_AvailHigh時,線程池會自動銷毀一些線程,保持空閑線程的數(shù)量在一個合理的范圍內。

    3 服務器到數(shù)據(jù)采集層的通信

    服務器通過串口定期向數(shù)據(jù)采集層發(fā)送RTU請求幀,并等待接收數(shù)據(jù)采集層的RTU返回幀,將收到的農(nóng)田信息存儲在數(shù)據(jù)庫中。

    服務器端首先打開串口,調用CreatData()準備要發(fā)送的請求數(shù)據(jù),執(zhí)行CreatCRC()生成函數(shù)獲取CRC校驗碼,通過CreatRtu()封裝程序組織生成RTU報文,發(fā)送RTU信息幀,檢測串口等待返回幀。若等待超過Modbus協(xié)議規(guī)定的4個字符延時等待時間,則進行超時處理。否則,接收數(shù)據(jù)采集層的返回幀之后,返回到數(shù)據(jù)準備階段,繼續(xù)檢測串口。服務器端界面采用qt設計,如圖6所示。

    4 小結

    分析了Modbus協(xié)議,將應用在工業(yè)控制中的Modbus協(xié)議引入到農(nóng)田信息采集系統(tǒng),Modbus幀格式簡單、緊湊、高效,同時Modbus/TCP具有實時通信的特點,更適合嵌入式設備,實現(xiàn)遠程數(shù)據(jù)的交互,從而達到遠程監(jiān)測的目的。設計了基于Modbus協(xié)議的ARM農(nóng)田信息采集服務器,實現(xiàn)了服務器與應用層、服務器與數(shù)據(jù)采集層的通信接口,提出了Modbus/TCP幀與串行鏈路RTU幀的轉換方法,增加了線程池完成每一次的通信任務。服務器可訪問數(shù)據(jù)采集端進行田間信息存儲,客戶端可隨時訪問服務器瀏覽田間信息。但是服務器還存在不足,如何健全服務器功能,發(fā)揮Modbus嵌入式服務器的綜合優(yōu)勢,仍需進一步的研究。

    參考文獻:

    [1] 劉西廣.用于西門子Insight軟件的Modbus協(xié)議通用網(wǎng)關設計[D].成都:電子科技大學,2011.

    [2] 陸 晶.基于Modbus的數(shù)據(jù)采集系統(tǒng)[D].江蘇無錫:江南大學,2011.

    [3] 任清娟.基于Modbus和GPRS的高爐渣?;潆姳O(jiān)控系統(tǒng)的設計[D].內蒙古包頭:內蒙古科技大學,2012.

    [4] 林勇堅.基于Modbus現(xiàn)場總線的水處理流程控制的工程設計[J].廣西民族大學學報(自然科學版),2013,19(1):79-81.

    [5] 陳 輝.基于Modbus協(xié)議灌區(qū)遠程智能測控系統(tǒng)研究[D].蘭州:蘭州理工大學,2012.

    [6] 王 諦.基于Modbus協(xié)議的PC機與dsPIC6014處理器的通信[D].呼和浩特:內蒙古大學,2012.

    [7] 景柏豪,沈孟良,唐曄鈞.CAN-Modbus/TCP協(xié)議轉換的設計與實現(xiàn)[J].計算機工程與設計,2013,34(5):1552-1556.

    [8] 李振江.Linux系統(tǒng)下Modbus主協(xié)議棧設計與實現(xiàn)[D].合肥:安徽大學,2012.

    [9] 吳寅華,趙 敏.基于ARM Cortex-M3的Modbus協(xié)議實現(xiàn)及其應用[J].電子科技,2011,24(6):19-21.

    [10] 楊開杰,劉秋菊,徐汀榮.線程池的多線程并發(fā)控制技術研究[J].計算機應用與軟件,2010,27(1):168-169.

    {

    FD_SET(nSocket,&set);

    neSlect=select(nSocket+1,NULL,&set,NULL,&tv);if(neSlect>0)

    {

    nSend=send(nSocket,(char*)pWriteDate,nDataLen,0);

    }

    if(nDataLen==READ_REGISTERS_HEAD

    ER_LEN)

    {

    RecvReadData();

    }

    else

    {

    RecvWriteReturn();

    }

    }

    FD_ZERO(&set);

    }

    若客戶端要讀取06號設備起始地址為4的連續(xù)2個寄存器,讀取保持寄存器的功能碼function為3。服務器通信結果見圖4。

    2.2 Modbus/TCP幀與RTU幀轉換設計

    當客戶端需要查詢當前的實時數(shù)據(jù),而服務器還未進行存儲,客戶端向服務器發(fā)送Modbus/TCP請求幀并等待服務器應答,服務器接收Modbus/TCP請求幀對其進行分析處理,轉化成Modus RTU串行鏈路響應幀并發(fā)送到與數(shù)據(jù)采集層相連的串行鏈路中去,監(jiān)聽等待數(shù)據(jù)采集層的應答。若服務器收到串行鏈路上的RTU應答幀,則將該應答幀重新封裝成Modbus/TCP應答幀,發(fā)送給客戶端。因此,在服務器端需要進行Modbus/TCP與串行鏈路RTU的轉換。

    ModToRtu()函數(shù)實現(xiàn)Modbus/TCP幀與串行鏈路RTU幀的轉換功能,轉換過程見圖5。

    Modbus/TCP幀與串行鏈路RTU幀相比,增加了MBAP報文,減少了CRC校驗碼。Modbus/TCP轉串行鏈路RTU過程:首先從MBAP報文頭中解析出地址段,并將MBAP的各字段保存。然后從Modbus/TCP幀中分別解析出功能碼和數(shù)據(jù)段,并計算CRC校驗碼,最后封裝成串行鏈路RTU幀。

    串行鏈路RTU幀轉換成Modbus/TCP幀:首先利用已保存MBAP字段重新封裝成MBAP,然后從RTU幀中讀取數(shù)據(jù)段和功能碼,分別填充到Modbus/TCP幀的數(shù)據(jù)段和功能碼,封裝成Modbus/TCP幀。

    2.3 線程池

    在服務器整個工作過程中,系統(tǒng)通過線程與客戶端和與數(shù)據(jù)采集層進行通信。傳統(tǒng)多線程方案的服務器,多個線程在同一時間內并發(fā)運行執(zhí)行相應的任務[10],采用“及時創(chuàng)建,及時銷毀”的策略。當服務器接收到請求之后創(chuàng)建一個線程,由該線程執(zhí)行具體任務,任務結束之后線程退出。若大量用戶同時訪問服務器,在短時間內,服務器將處于不停地創(chuàng)建線程、銷毀線程的狀態(tài),容易導致消耗系統(tǒng)內存。因此,系統(tǒng)增加了線程池,大大減少了線程的開銷。

    線程池采用預創(chuàng)建技術。程序啟動之后,首先創(chuàng)建一定數(shù)量(NUM個)的線程,這些線程處于阻塞狀態(tài),并不消耗CPU。當系統(tǒng)有任務需要執(zhí)行時,程序喚醒一個空閑線程執(zhí)行任務。任務完成之后,該線程再次回到阻塞狀態(tài),等待下次任務的到來。在線程池的數(shù)量設計上,程序所創(chuàng)建的線程總數(shù)不能高于THREAD_MAXNUM,當系統(tǒng)中的空閑線程數(shù)量低于THREAD_Max時,程序將創(chuàng)建一些線程,使得空閑線程維持在THREAD_AvailLow之上。當系統(tǒng)中的空閑線程數(shù)量高于THREAD_AvailHigh時,線程池會自動銷毀一些線程,保持空閑線程的數(shù)量在一個合理的范圍內。

    3 服務器到數(shù)據(jù)采集層的通信

    服務器通過串口定期向數(shù)據(jù)采集層發(fā)送RTU請求幀,并等待接收數(shù)據(jù)采集層的RTU返回幀,將收到的農(nóng)田信息存儲在數(shù)據(jù)庫中。

    服務器端首先打開串口,調用CreatData()準備要發(fā)送的請求數(shù)據(jù),執(zhí)行CreatCRC()生成函數(shù)獲取CRC校驗碼,通過CreatRtu()封裝程序組織生成RTU報文,發(fā)送RTU信息幀,檢測串口等待返回幀。若等待超過Modbus協(xié)議規(guī)定的4個字符延時等待時間,則進行超時處理。否則,接收數(shù)據(jù)采集層的返回幀之后,返回到數(shù)據(jù)準備階段,繼續(xù)檢測串口。服務器端界面采用qt設計,如圖6所示。

    4 小結

    分析了Modbus協(xié)議,將應用在工業(yè)控制中的Modbus協(xié)議引入到農(nóng)田信息采集系統(tǒng),Modbus幀格式簡單、緊湊、高效,同時Modbus/TCP具有實時通信的特點,更適合嵌入式設備,實現(xiàn)遠程數(shù)據(jù)的交互,從而達到遠程監(jiān)測的目的。設計了基于Modbus協(xié)議的ARM農(nóng)田信息采集服務器,實現(xiàn)了服務器與應用層、服務器與數(shù)據(jù)采集層的通信接口,提出了Modbus/TCP幀與串行鏈路RTU幀的轉換方法,增加了線程池完成每一次的通信任務。服務器可訪問數(shù)據(jù)采集端進行田間信息存儲,客戶端可隨時訪問服務器瀏覽田間信息。但是服務器還存在不足,如何健全服務器功能,發(fā)揮Modbus嵌入式服務器的綜合優(yōu)勢,仍需進一步的研究。

    參考文獻:

    [1] 劉西廣.用于西門子Insight軟件的Modbus協(xié)議通用網(wǎng)關設計[D].成都:電子科技大學,2011.

    [2] 陸 晶.基于Modbus的數(shù)據(jù)采集系統(tǒng)[D].江蘇無錫:江南大學,2011.

    [3] 任清娟.基于Modbus和GPRS的高爐渣?;潆姳O(jiān)控系統(tǒng)的設計[D].內蒙古包頭:內蒙古科技大學,2012.

    [4] 林勇堅.基于Modbus現(xiàn)場總線的水處理流程控制的工程設計[J].廣西民族大學學報(自然科學版),2013,19(1):79-81.

    [5] 陳 輝.基于Modbus協(xié)議灌區(qū)遠程智能測控系統(tǒng)研究[D].蘭州:蘭州理工大學,2012.

    [6] 王 諦.基于Modbus協(xié)議的PC機與dsPIC6014處理器的通信[D].呼和浩特:內蒙古大學,2012.

    [7] 景柏豪,沈孟良,唐曄鈞.CAN-Modbus/TCP協(xié)議轉換的設計與實現(xiàn)[J].計算機工程與設計,2013,34(5):1552-1556.

    [8] 李振江.Linux系統(tǒng)下Modbus主協(xié)議棧設計與實現(xiàn)[D].合肥:安徽大學,2012.

    [9] 吳寅華,趙 敏.基于ARM Cortex-M3的Modbus協(xié)議實現(xiàn)及其應用[J].電子科技,2011,24(6):19-21.

    [10] 楊開杰,劉秋菊,徐汀榮.線程池的多線程并發(fā)控制技術研究[J].計算機應用與軟件,2010,27(1):168-169.

    猜你喜歡
    現(xiàn)代農(nóng)業(yè)
    發(fā)展現(xiàn)代農(nóng)業(yè)念好地里的“致富經(jīng)”
    深入考察調研 攜手打造現(xiàn)代農(nóng)業(yè)高地
    “用好現(xiàn)代農(nóng)業(yè)科技,多種糧、種好糧”
    現(xiàn)代農(nóng)業(yè)離不開化肥
    《現(xiàn)代農(nóng)業(yè)》投稿簡約
    砥礪奮進 打造現(xiàn)代農(nóng)業(yè)強市
    《現(xiàn)代農(nóng)業(yè)》投稿簡約
    現(xiàn)代農(nóng)業(yè)
    計算機技術在現(xiàn)代農(nóng)業(yè)中的應用
    現(xiàn)代農(nóng)業(yè),用上“智慧管家”
    走向世界(2018年11期)2018-12-26 01:12:36
    欧美黑人欧美精品刺激| 久久久久精品国产欧美久久久| 国产精品久久久久久精品电影| 国产亚洲av高清不卡| 久久久久免费精品人妻一区二区| 一本精品99久久精品77| 久久久久性生活片| x7x7x7水蜜桃| 日韩大尺度精品在线看网址| 国产黄色小视频在线观看| 亚洲av日韩精品久久久久久密| 久久中文看片网| 亚洲av美国av| 88av欧美| 色综合亚洲欧美另类图片| 999久久久国产精品视频| 亚洲欧美精品综合一区二区三区| 久久国产精品影院| 亚洲电影在线观看av| 久热爱精品视频在线9| 亚洲专区国产一区二区| 黄色成人免费大全| 熟女电影av网| 亚洲电影在线观看av| 亚洲成人久久性| 国产99白浆流出| 全区人妻精品视频| 国产精品1区2区在线观看.| 久久国产精品影院| 不卡一级毛片| www.自偷自拍.com| 亚洲自拍偷在线| 久久久久亚洲av毛片大全| 日韩欧美免费精品| av在线天堂中文字幕| 香蕉丝袜av| 免费搜索国产男女视频| 18美女黄网站色大片免费观看| 中国美女看黄片| 好男人在线观看高清免费视频| 18禁黄网站禁片午夜丰满| 婷婷丁香在线五月| 久久人妻av系列| 怎么达到女性高潮| 亚洲av中文字字幕乱码综合| 成人永久免费在线观看视频| 老熟妇乱子伦视频在线观看| 久热爱精品视频在线9| 亚洲全国av大片| 国产三级在线视频| 亚洲欧美日韩无卡精品| 久久国产乱子伦精品免费另类| 日韩成人在线观看一区二区三区| 日韩精品免费视频一区二区三区| 久久天堂一区二区三区四区| 亚洲av日韩精品久久久久久密| 啪啪无遮挡十八禁网站| 国产麻豆成人av免费视频| 香蕉国产在线看| 美女 人体艺术 gogo| 国产97色在线日韩免费| 国产成人啪精品午夜网站| 久久久精品大字幕| 国产1区2区3区精品| 91九色精品人成在线观看| 国产熟女xx| 日本熟妇午夜| 久久国产精品影院| 成人国产一区最新在线观看| 亚洲av成人不卡在线观看播放网| 欧美日本亚洲视频在线播放| 他把我摸到了高潮在线观看| 欧美午夜高清在线| 香蕉av资源在线| 美女高潮喷水抽搐中文字幕| 国产精品日韩av在线免费观看| 淫秽高清视频在线观看| 欧美在线一区亚洲| 久久性视频一级片| 久久午夜亚洲精品久久| 热99re8久久精品国产| 精品日产1卡2卡| 国产高清videossex| 熟女少妇亚洲综合色aaa.| 欧美国产日韩亚洲一区| 久久伊人香网站| 久久人妻av系列| 精品午夜福利视频在线观看一区| 免费在线观看成人毛片| 亚洲精品国产一区二区精华液| 久久国产精品人妻蜜桃| 好看av亚洲va欧美ⅴa在| 一边摸一边做爽爽视频免费| 好男人电影高清在线观看| 国产精品一及| 亚洲九九香蕉| 一级片免费观看大全| 日韩有码中文字幕| 国内精品久久久久久久电影| 成年女人毛片免费观看观看9| 亚洲第一电影网av| 精品国内亚洲2022精品成人| 黑人操中国人逼视频| 在线观看66精品国产| 人妻夜夜爽99麻豆av| 日韩成人在线观看一区二区三区| 中文字幕人妻丝袜一区二区| av在线天堂中文字幕| 成人手机av| 老司机福利观看| 正在播放国产对白刺激| 亚洲在线自拍视频| 一本大道久久a久久精品| 女同久久另类99精品国产91| 2021天堂中文幕一二区在线观| 国内揄拍国产精品人妻在线| 国产欧美日韩精品亚洲av| 69av精品久久久久久| 桃红色精品国产亚洲av| 日本一区二区免费在线视频| 久久久精品国产亚洲av高清涩受| 很黄的视频免费| 国产精品美女特级片免费视频播放器 | 国产在线观看jvid| 久久婷婷人人爽人人干人人爱| 亚洲熟妇中文字幕五十中出| 午夜亚洲福利在线播放| 国产成人影院久久av| 精品一区二区三区四区五区乱码| 中文字幕最新亚洲高清| 国产伦一二天堂av在线观看| 亚洲中文字幕日韩| 国产精品av视频在线免费观看| 国产精品爽爽va在线观看网站| 久久性视频一级片| av福利片在线| www.熟女人妻精品国产| 一本大道久久a久久精品| 国产精品99久久99久久久不卡| 亚洲乱码一区二区免费版| 亚洲av成人av| 麻豆av在线久日| 亚洲精品国产一区二区精华液| 99国产精品一区二区三区| 无遮挡黄片免费观看| 国产1区2区3区精品| 99久久99久久久精品蜜桃| 夜夜看夜夜爽夜夜摸| 国产精品香港三级国产av潘金莲| 精品久久久久久久毛片微露脸| 1024视频免费在线观看| 免费在线观看成人毛片| 一级毛片女人18水好多| 少妇熟女aⅴ在线视频| 欧美+亚洲+日韩+国产| 岛国视频午夜一区免费看| 欧美成人性av电影在线观看| 久久久国产成人免费| 淫妇啪啪啪对白视频| 亚洲色图av天堂| 亚洲乱码一区二区免费版| 免费高清视频大片| 免费人成视频x8x8入口观看| 三级毛片av免费| 最新美女视频免费是黄的| 岛国在线观看网站| 国产三级中文精品| 久久精品国产亚洲av香蕉五月| 国产黄片美女视频| 久久精品91蜜桃| avwww免费| 国产伦人伦偷精品视频| 成人av在线播放网站| 最近在线观看免费完整版| 最近最新中文字幕大全电影3| 午夜激情av网站| 亚洲精品久久成人aⅴ小说| 在线观看美女被高潮喷水网站 | 亚洲熟妇熟女久久| 十八禁人妻一区二区| 91麻豆av在线| 欧美乱码精品一区二区三区| 色哟哟哟哟哟哟| 久久这里只有精品中国| 日本免费a在线| 国产麻豆成人av免费视频| 国产在线精品亚洲第一网站| 久久久久国产精品人妻aⅴ院| 国产爱豆传媒在线观看 | 99热这里只有精品一区 | 国产成人av激情在线播放| 久热爱精品视频在线9| 天天躁狠狠躁夜夜躁狠狠躁| 天堂√8在线中文| 久久性视频一级片| 级片在线观看| 国产乱人伦免费视频| 中文字幕人成人乱码亚洲影| 国产精品自产拍在线观看55亚洲| 在线观看免费午夜福利视频| 淫妇啪啪啪对白视频| 夜夜看夜夜爽夜夜摸| 国产高清视频在线观看网站| 久久久久九九精品影院| 成人国语在线视频| 真人做人爱边吃奶动态| 欧美一区二区精品小视频在线| 亚洲国产欧洲综合997久久,| 亚洲精品久久国产高清桃花| 99热这里只有精品一区 | 国产又黄又爽又无遮挡在线| 50天的宝宝边吃奶边哭怎么回事| 777久久人妻少妇嫩草av网站| 99re在线观看精品视频| 国产伦人伦偷精品视频| e午夜精品久久久久久久| 校园春色视频在线观看| 国产1区2区3区精品| 此物有八面人人有两片| 九九热线精品视视频播放| 久久久精品国产亚洲av高清涩受| 国产99久久九九免费精品| 三级男女做爰猛烈吃奶摸视频| 欧美日本亚洲视频在线播放| 听说在线观看完整版免费高清| 精品无人区乱码1区二区| 中文资源天堂在线| 18禁观看日本| 久久久国产精品麻豆| 精品一区二区三区四区五区乱码| 在线国产一区二区在线| 国产三级中文精品| 天天添夜夜摸| 桃色一区二区三区在线观看| 免费人成视频x8x8入口观看| 成人午夜高清在线视频| 亚洲成a人片在线一区二区| 韩国av一区二区三区四区| 色在线成人网| av在线天堂中文字幕| 最新在线观看一区二区三区| 中文字幕高清在线视频| 亚洲真实伦在线观看| 亚洲av电影在线进入| 三级毛片av免费| 国产亚洲精品综合一区在线观看 | tocl精华| 看免费av毛片| 精品国产亚洲在线| 岛国视频午夜一区免费看| 后天国语完整版免费观看| 久久国产精品人妻蜜桃| 国产午夜福利久久久久久| 天堂√8在线中文| 国内精品久久久久久久电影| 亚洲成av人片在线播放无| 91字幕亚洲| 亚洲av电影在线进入| 国产69精品久久久久777片 | 欧美高清成人免费视频www| 人人妻人人澡欧美一区二区| 久久久久久大精品| 在线观看免费午夜福利视频| 人人妻人人看人人澡| 国产男靠女视频免费网站| 欧美日韩乱码在线| 久久伊人香网站| 妹子高潮喷水视频| 99久久精品热视频| 十八禁人妻一区二区| 成人一区二区视频在线观看| 欧美日韩黄片免| 久久久久久久午夜电影| 精品一区二区三区四区五区乱码| 中文资源天堂在线| 男人舔女人下体高潮全视频| 又大又爽又粗| 蜜桃久久精品国产亚洲av| 一边摸一边做爽爽视频免费| 十八禁网站免费在线| 国产真实乱freesex| 国产成+人综合+亚洲专区| 久久精品夜夜夜夜夜久久蜜豆 | 脱女人内裤的视频| 亚洲精品在线观看二区| 欧美日韩乱码在线| 欧美日韩亚洲国产一区二区在线观看| 国产精品1区2区在线观看.| 宅男免费午夜| 国产av又大| 无限看片的www在线观看| 一a级毛片在线观看| 午夜福利视频1000在线观看| 窝窝影院91人妻| 久久人人精品亚洲av| 免费观看人在逋| 欧美另类亚洲清纯唯美| 国产激情偷乱视频一区二区| 久久久久久免费高清国产稀缺| 日韩三级视频一区二区三区| av福利片在线| 国产精品一区二区免费欧美| 久久久久免费精品人妻一区二区| 波多野结衣高清无吗| 美女午夜性视频免费| 亚洲精华国产精华精| 亚洲人成网站高清观看| 不卡av一区二区三区| 特级一级黄色大片| 色老头精品视频在线观看| 一级a爱片免费观看的视频| 一进一出抽搐gif免费好疼| 亚洲中文日韩欧美视频| 亚洲av成人一区二区三| 男人舔女人下体高潮全视频| 超碰成人久久| 一边摸一边做爽爽视频免费| 美女黄网站色视频| 久99久视频精品免费| 老司机深夜福利视频在线观看| 国产精品久久久人人做人人爽| 国产av又大| 国产熟女xx| 亚洲片人在线观看| 久久九九热精品免费| 欧美乱码精品一区二区三区| 男女下面进入的视频免费午夜| 在线观看免费日韩欧美大片| 99热这里只有是精品50| 国产av在哪里看| 免费人成视频x8x8入口观看| 成人精品一区二区免费| 国产真人三级小视频在线观看| 男插女下体视频免费在线播放| 在线观看舔阴道视频| 一a级毛片在线观看| 后天国语完整版免费观看| 波多野结衣巨乳人妻| 日韩欧美精品v在线| av在线天堂中文字幕| 国产精品一区二区免费欧美| 午夜福利在线在线| 久久人妻福利社区极品人妻图片| 欧美另类亚洲清纯唯美| 999精品在线视频| 日韩三级视频一区二区三区| 最新在线观看一区二区三区| 国产精品久久久久久久电影 | 一级毛片精品| 18禁观看日本| 成人午夜高清在线视频| 亚洲欧洲精品一区二区精品久久久| 男人舔女人的私密视频| 亚洲精华国产精华精| 国产激情偷乱视频一区二区| 国产又色又爽无遮挡免费看| 真人一进一出gif抽搐免费| 一本大道久久a久久精品| 午夜免费观看网址| 在线看三级毛片| 激情在线观看视频在线高清| 国产成年人精品一区二区| 日韩 欧美 亚洲 中文字幕| 男女视频在线观看网站免费 | 在线永久观看黄色视频| 中文字幕精品亚洲无线码一区| 亚洲欧美日韩东京热| 精品乱码久久久久久99久播| 无人区码免费观看不卡| av免费在线观看网站| 国产午夜精品久久久久久| 亚洲av电影不卡..在线观看| 午夜两性在线视频| 哪里可以看免费的av片| 国产v大片淫在线免费观看| 久久精品91蜜桃| 欧美日韩乱码在线| 观看免费一级毛片| 国产成人系列免费观看| 亚洲色图 男人天堂 中文字幕| 好看av亚洲va欧美ⅴa在| 亚洲,欧美精品.| 免费在线观看亚洲国产| 99国产精品一区二区三区| 男女床上黄色一级片免费看| 两人在一起打扑克的视频| 日本成人三级电影网站| 国产精品自产拍在线观看55亚洲| 欧美国产日韩亚洲一区| 嫩草影视91久久| 嫁个100分男人电影在线观看| 国产成人精品久久二区二区免费| 少妇被粗大的猛进出69影院| 亚洲人成伊人成综合网2020| 亚洲人成网站在线播放欧美日韩| av在线天堂中文字幕| 黑人欧美特级aaaaaa片| 亚洲自拍偷在线| 欧美日韩福利视频一区二区| 欧美精品啪啪一区二区三区| 国产精品,欧美在线| 国内精品久久久久久久电影| 在线a可以看的网站| 香蕉丝袜av| 怎么达到女性高潮| 国产高清激情床上av| 黄色片一级片一级黄色片| 黑人巨大精品欧美一区二区mp4| 国产亚洲欧美在线一区二区| 人妻久久中文字幕网| 国产精品综合久久久久久久免费| 啪啪无遮挡十八禁网站| 国产亚洲精品综合一区在线观看 | 最新美女视频免费是黄的| 亚洲国产看品久久| 午夜老司机福利片| 日本黄色视频三级网站网址| 亚洲黑人精品在线| 一本大道久久a久久精品| 亚洲男人天堂网一区| 特大巨黑吊av在线直播| 亚洲一区二区三区色噜噜| 亚洲一码二码三码区别大吗| 一级毛片高清免费大全| 丰满人妻一区二区三区视频av | 一本大道久久a久久精品| 国产三级黄色录像| 国产精品 欧美亚洲| 色在线成人网| 亚洲人成电影免费在线| 国产视频一区二区在线看| 91av网站免费观看| 啦啦啦观看免费观看视频高清| 一a级毛片在线观看| 精品无人区乱码1区二区| 久久精品91蜜桃| 国产精品久久视频播放| 欧美乱色亚洲激情| 亚洲精品色激情综合| 精品午夜福利视频在线观看一区| 国内少妇人妻偷人精品xxx网站 | 亚洲国产精品成人综合色| 婷婷丁香在线五月| 手机成人av网站| 久久久久久久午夜电影| 丰满人妻熟妇乱又伦精品不卡| 午夜影院日韩av| 18禁黄网站禁片午夜丰满| 熟女电影av网| 国产黄色小视频在线观看| 啦啦啦韩国在线观看视频| 婷婷六月久久综合丁香| av片东京热男人的天堂| 不卡一级毛片| 国产成人精品久久二区二区91| 国产精品野战在线观看| 成人一区二区视频在线观看| 香蕉久久夜色| av有码第一页| 久久久久久久久免费视频了| 精品国产美女av久久久久小说| 欧美另类亚洲清纯唯美| 亚洲美女黄片视频| 女警被强在线播放| 一级黄色大片毛片| 岛国在线免费视频观看| 久久久久久久久中文| 99在线人妻在线中文字幕| 精品久久久久久成人av| 久久久久久人人人人人| 这个男人来自地球电影免费观看| 久久精品亚洲精品国产色婷小说| or卡值多少钱| 日日摸夜夜添夜夜添小说| 男女做爰动态图高潮gif福利片| 老司机福利观看| 亚洲欧美日韩无卡精品| e午夜精品久久久久久久| 嫩草影视91久久| 日本一区二区免费在线视频| 999久久久精品免费观看国产| 又大又爽又粗| 国产精品免费视频内射| 亚洲国产精品成人综合色| 手机成人av网站| 最近最新中文字幕大全免费视频| 亚洲av成人一区二区三| 国产黄a三级三级三级人| 窝窝影院91人妻| 国产高清视频在线观看网站| 级片在线观看| 久久婷婷人人爽人人干人人爱| 欧美另类亚洲清纯唯美| 18禁黄网站禁片免费观看直播| 久久久久久亚洲精品国产蜜桃av| 99国产极品粉嫩在线观看| bbb黄色大片| 一进一出抽搐gif免费好疼| 欧美成狂野欧美在线观看| 老司机在亚洲福利影院| 国产黄色小视频在线观看| 午夜视频精品福利| 我要搜黄色片| 亚洲va日本ⅴa欧美va伊人久久| 免费看美女性在线毛片视频| 亚洲午夜理论影院| 精品久久久久久久毛片微露脸| 亚洲av成人一区二区三| 国产一区二区三区在线臀色熟女| 免费观看精品视频网站| 十八禁网站免费在线| 久久久久久久久免费视频了| 国产精品免费一区二区三区在线| 老司机福利观看| 中文字幕人成人乱码亚洲影| 女人被狂操c到高潮| 丁香欧美五月| 人妻久久中文字幕网| 男人舔女人下体高潮全视频| 国产激情久久老熟女| 99久久精品热视频| 亚洲欧洲精品一区二区精品久久久| 一进一出好大好爽视频| 级片在线观看| 国产私拍福利视频在线观看| 国产区一区二久久| av国产免费在线观看| 欧美一级毛片孕妇| 久久亚洲精品不卡| 高清在线国产一区| 欧美黄色片欧美黄色片| 国产在线精品亚洲第一网站| 国产精品,欧美在线| 亚洲人成网站高清观看| 九色成人免费人妻av| 黄色a级毛片大全视频| 变态另类丝袜制服| 一级毛片高清免费大全| 一个人免费在线观看的高清视频| 成人精品一区二区免费| 欧美性猛交╳xxx乱大交人| 国产精品亚洲美女久久久| 少妇裸体淫交视频免费看高清 | 午夜影院日韩av| 免费在线观看成人毛片| 亚洲精品一区av在线观看| 国内精品久久久久久久电影| 国产av在哪里看| aaaaa片日本免费| 亚洲国产精品999在线| 亚洲av电影不卡..在线观看| 久久亚洲精品不卡| 九色国产91popny在线| 久久香蕉国产精品| 国产熟女xx| 精品免费久久久久久久清纯| 老熟妇乱子伦视频在线观看| 日本 欧美在线| 亚洲中文字幕日韩| 后天国语完整版免费观看| 12—13女人毛片做爰片一| 国产熟女午夜一区二区三区| 国产精品综合久久久久久久免费| 在线观看日韩欧美| 999久久久国产精品视频| 老司机午夜十八禁免费视频| 欧美日本亚洲视频在线播放| 一卡2卡三卡四卡精品乱码亚洲| 丰满的人妻完整版| 正在播放国产对白刺激| 亚洲18禁久久av| 久久久久久久久中文| 久久中文字幕一级| 老熟妇乱子伦视频在线观看| 日韩大码丰满熟妇| 一进一出抽搐gif免费好疼| 两人在一起打扑克的视频| 国产不卡一卡二| 丰满人妻熟妇乱又伦精品不卡| 欧美黑人欧美精品刺激| 免费一级毛片在线播放高清视频| 亚洲精品粉嫩美女一区| 亚洲一区二区三区不卡视频| 九九热线精品视视频播放| 久久精品亚洲精品国产色婷小说| 国产成人精品无人区| 亚洲精品一卡2卡三卡4卡5卡| 香蕉国产在线看| 日本五十路高清| 国产区一区二久久| 欧美黑人精品巨大| 国产又黄又爽又无遮挡在线| 黄色视频不卡| 亚洲精品av麻豆狂野| 香蕉丝袜av| 婷婷亚洲欧美| 青草久久国产| 国产爱豆传媒在线观看 | 午夜免费成人在线视频| 久久草成人影院| 国产欧美日韩一区二区三| 精品国内亚洲2022精品成人| 成在线人永久免费视频| 白带黄色成豆腐渣| tocl精华| 2021天堂中文幕一二区在线观| 亚洲一区高清亚洲精品| 国产免费av片在线观看野外av| 看免费av毛片| 一个人免费在线观看电影 | 身体一侧抽搐| 99久久精品国产亚洲精品| 中文字幕人成人乱码亚洲影| 黑人欧美特级aaaaaa片| 久久精品综合一区二区三区|