在厨房拨开内裤进入毛片-欧美一区亚洲二区-www九九热com-亚洲午夜久久久精品一区二区三剧-国产91精品看黄网站在线观看动漫-heyzo朝桐光一区二区

wjun7610
級別: 略有小成
精華主題: 0
發帖數量: 127 個
工控威望: 249 點
下載積分: 708 分
在線時間: 35(小時)
注冊時間: 2007-09-16
最后登錄: 2025-07-30
查看wjun7610的 主題 / 回貼
樓主  發表于: 2008-07-19 19:10
modbus rtu通信協議串口通訊動態鏈接庫DLL(以下簡稱DLL),是為滿足工業通信需要,
針對工業領域要求上位機對PLC、工業儀表通訊實時采集與控制的組態編程而設計。
本DLL是采用Delphi語言開發的標準串口通訊庫,具有以下特點:
1)、遵循modbus rtu串口通訊協議(施耐德、西門子、臺達、永宏等品牌PLC及各類工業儀表等支持本協議);
2)、實時性、可靠性好,通用性強;
3)、適用于多PLC聯網和上位機通信,滿足多方面的需要(聯網時可采用485總線式);
4)、函數接口功能全,操作簡單,支持modbus的大部分讀寫功能函數;
5)、附加實用轉換與讀取函數,易于快速開發(VC等非RAD開發環境的開發);
6)、支持USB、PC擴展卡等擴展串口號;
7)、支持多種操作系統win9x/win2000/winXP(標注Win32 DLL);
8)、可在多種編程環境下使用,例如VB、VC、Delphi等開發環境。

9)、支持modbus rtu標準的功能代碼01、02、03、04、05、06、15、16且對相關功能代碼的讀取和寫如做了一些擴充更加符合工業自動化領域的工控軟件的開發,是廣大工控工程師的必備工具軟件。

二、modbus rtu通訊協議簡介

    Modbus 協議是應用于電子控制器上的一種通用語言。通過此協議,控制器相互之間、控制器經由網絡(例如以太網)
和其它設備之間可以通信。它已經成為一通用工業標準。有了它,不同廠商生產的控制設備可以連成工業網絡,進行集
中監控。此協議定義了一個控制器能認識使用的消息結構,而不管它們是經過何種網絡進行通信的。它描述了一控制器請
求訪問其它設備的過程,如果回應來自其它設備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內容的公共
格式。當在一Modbus網絡上通信時,此協議決定了每個控制器須要知道它們的設備地址,識別按地址發來的消息,決定
要產生何種行動。如果需要回應,控制器將生成反饋信息并用Modbus協議發出。在其它網絡上,包含了Modbus協議的消
息轉換為在此網絡上使用的幀或包結構。這種轉換也擴展了根據具體的網絡解決節地址、路由路徑及錯誤檢測的方法。
1、在Modbus網絡上轉輸
標準的Modbus口是使用一RS-232C兼容串行接口,它定義了連接口的針腳、電纜、信號位、傳輸波特率、奇偶校驗。控制
器能直接或經由Modem組網。控制器通信使用主—從技術,即僅一設備(主設備)能初始化傳輸(查詢)。其它設備(從設備)
根據主設備查詢提供的數據作出相應反應。典型的主設備:主機和可編程儀表。典型的從設備:可編程控制器。主設備
可單獨和從設備通信,也能以廣播方式和所有從設備通信。如果單獨通信,從設備返回一消息作為回應,如果是以廣播
方式查詢的,則不作任何回應。Modbus協議建立了主設備查詢的格式:設備(或廣播)地址、功能代碼、所有要發送的數
據、一錯誤檢測域。從設備回應消息也由Modbus協議構成,包括確認要行動的域、任何要返回的數據、和一錯誤檢測域。
如果在消息接收過程中發生一錯誤,或從設備不能執行其命令,從設備將建立一錯誤消息并把它作為回應發送出去。
2、在其它類型網絡上轉輸
在其它網絡上,控制器使用對等技術通信,故任何控制都能初始和其它控制器的通信。這樣在單獨的通信過程中,控制
器既可作為主設備也可作為從設備。提供的多個內部通道可允許同時發生的傳輸進程。在消息位,Modbus協議仍提供了
主—從原則,盡管網絡通信方法是“對等”。如果一控制器發送一消息,它只是作為主設備,并期望從從設備得到回應。
同樣,當控制器接收到一消息,它將建立一從設備回應格式并返回給發送的控制器。
3、查詢—回應周期
(1)、查詢    
    查詢消息中的功能代碼告之被選中的從設備要執行何種功能。數據段包含了從設備要執行功能的任何附加信息。例
如功能代碼03是要求從設備讀保持寄存器并返回它們的內容。數據段必須包含要告之從設備的信息:從何寄存器開始讀
及要讀的寄存器數量。錯誤檢測域為從設備提供了一種驗證消息內容是否正確的方法。
(2)、回應    
    如果從設備產生一正常的回應,在回應消息中的功能代碼是在查詢消息中的功能代碼的回應。數據段包括了從設備
收集的數據:象寄存器值或狀態。如果有錯誤發生,功能代碼將被修改以用于指出回應消息是錯誤的,同時數據段包含
了描述此錯誤信息的代碼。錯誤檢測域允許主設備確認消息內容是否可用。

3、兩種傳輸方式
    控制器能設置為兩種傳輸模式(ASCII或RTU)中的任何一種在標準的Modbus網絡通信。用戶選擇想要的模式,包括串
口通信參數(波特率、校驗方式等),在配置每個控制器的時候,在一個Modbus網絡上的所有設備都必須選擇相同的傳輸
模式和串口參數。
ASCII模式
   -------------------------------------------
   | 地址 | 功能代碼 | 數據數量 | 數據1 ... 數據n | LRC高字節 | LRC低字節 | 回車 | 換行 |
   -------------------------------------------
RTU模式
   ------------------------------------
   | 地址 | 功能代碼 | 數據數量 | 數據1 ... 數據n | CRC高字節 | CRC低字節 |
   ------------------------------------
    所選的ASCII或RTU方式僅適用于標準的Modbus網絡,它定義了在這些網絡上連續傳輸的消息段的每一位,以及決定
怎樣將信息打包成消息域和如何解碼。在其它網絡上(象MAP和Modbus Plus)Modbus消息被轉成與串行傳輸無關的幀。
    因ASCII模式通訊效率較低一多采用RTU模式,這里只對RTU模式進行詳細介紹。

4、Modbus RTU模式

    當控制器設為在Modbus網絡上以RTU(遠程終端單元)模式通信,在消息中的每個8Bit字節包含兩個4Bit的十六進制
字符。這種方式的主要優點是:在同樣的波特率下,可比ASCII方式傳送更多的數據。

代碼系統

    8位二進制,十六進制數0...9,A...F
    消息中的每個8位域都是一個兩個十六進制字符組成

每個字節的位

    1個起始位
    8個數據位,最小的有效位先發送
    1個奇偶校驗位,無校驗則無
    1個停止位(有校驗時),2個Bit(無校驗時)

錯誤檢測域
    
     CRC(循環冗長檢測)

地址域

    消息幀的地址域包含8Bit(RTU)。可能的從設備地址是0...247(十進制)。單個設備的地址范圍是1...247。主設備通過
將要聯絡的從設備的地址放入消息中的地址域來選通從設備。當從設備發送回應消息時,它把自己的地址放入回應的地址域
中,以便主設備知道是哪一個設備作出回應。地址0是用作廣播地址,以使所有的從設備都能認識。當Modbus協議用于更高
水準的網絡,廣播可能不允許或以其它方式代替。

如何處理功能域

    數據域是由兩個十六進制數集合構成的,范圍00...FF。根據網絡傳輸模式,這可以是由一RTU字符組成。從主設備發給
從設備消息的數據域包含附加的信息:從設備必須用于進行執行由功能代碼所定義的所為。這包括了象不連續的寄存器地址,
要處理項的數目,域中實際數據字節數。例如,如果主設備需要從設備讀取一組保持寄存器(功能代碼03),數據域指定了起
始寄存器以及要讀的寄存器數量。如果主設備寫一組從設備的寄存器(功能代碼10十六進制),數據域則指明了要寫的起始寄
存器以及要寫的寄存器數量,數據域的數據字節數,要寫入寄存器的數據。如果沒有錯誤發生,從從設備返回的數據域包含
請求的數據。如果有錯誤發生,此域包含一異議代碼,主設備應用程序可以用來判斷采取下一步行動。在某種消息中數據域
可以是不存在的(0長度)。例如,主設備要求從設備回應通信事件記錄(功能代碼0B十六進制),從設備不需任何附加的信息。

作者:  wjun7610
QQ:    157610979
淘寶店:http://shop34821629.taobao.com
[ 此貼被wjun7610在2008-07-20 14:25重新編輯 ]
附件: Modbus.rar (153 K) 下載次數:2207
網站提示: 請不要用迅雷下載附件,容易出錯
wjun7610
級別: 略有小成
精華主題: 0
發帖數量: 127 個
工控威望: 249 點
下載積分: 708 分
在線時間: 35(小時)
注冊時間: 2007-09-16
最后登錄: 2025-07-30
查看wjun7610的 主題 / 回貼
1樓  發表于: 2008-07-19 19:10
三、DLL函數說明


modbus.DLL是王俊于2007年最新開發的基于施耐得modbus rtu 通訊協議的串口通訊鏈接庫。modbus.DLL專業版實現了對保持寄存器40001~4XXXX區數據讀寫(FCN03:讀、FCN16:寫,FCN06寫單個數據);對邏輯線圈00001~0XXXX的 讀寫(FCN01:讀取一組線圈,FCN05:強置單線圈,FCN15強置多線圈);對輸入狀態10001~1XXXX的讀(FCN02);對輸入寄存器30001~3XXXX的讀(FCN04)。

DLL中的主要函數:

ComOpen:打開串口

ComClose:關閉串口

FCN01:讀取一組線圈(00001~0XXXX)

FCN02:取得一組開關輸入狀態數據(10001~1XXXX)

FCN03:讀多個保持寄存器數據(40001~4XXXX)

FCN04:讀多個輸入寄存器數據(30001~3XXXX)

FCN05S:置位單線圈(00001~0XXXX)

FCN05R:復位單線圈(00001~0XXXX)

FCN06: 預置單保持寄存器數據(40001~4XXXX)

FCN15: 強置多線圈的通斷數據(00001~0XXXX)

FCN16: 寫多個保持寄存器數據(40001~4XXXX)

FCN16_xSet:單保持寄存器的0~15相應位的置位(40001.0-40001.15~4XXXX.0-4XXXX.15)

FCN16_xReset:單保持寄存器的0~15相應位的復位(40001.0-40001.15~4XXXX.0-4XXXX.15)

FCN16_xSetReset:單保持寄存器的0~15相應位的置復位(40001.0-40001.15~4XXXX.0-4XXXX.15),
                 指使相應的位短時間通斷一次(約通60ms)

ComTrue:讀取DLL中的串口是否備有效打開

CinBin: 字中相應的位的狀態抽取

1、打開串口

Function ComOpen(nport,BaudRate,DataBits,Parity,StopBits:longint;User:Pchar):longint;stdcall;

參數:nport: 打開串口號,取值為1~8,代表COM1~COM8;
      
      BaudRate:波特率,取值為:1200、2400、4800、9600、19200、38400;
    
      DataBits:數據位,取值為5、6、7、8;

      Parity:  校驗位,取值1(代表Even)、取值2(代表Odd)、取值3(代表Mark)、取值4(代表Space)、取值5(代表None);
  
      StopBits:停止位,取值1(代表1位停止位)、取值2(代表2位停止位)、取值3(代表1.5位停止位);

      User:DLL授權用戶名;

返回值:長整型,操作成功返回“1”或“2”;1表示注冊授權用戶,2表示用戶未注冊;

操作不成功返回為“0”時的原因:1)、串口不存在或被占用; 2)、DLL注冊授權不正確。

注:本DLL用戶不注冊除了下面說明的功能限制外沒有其他限制,未注冊用戶請使用特定用戶名:wangjun。

    注冊用戶功能上無任何限制,且將得到永久的軟件使用和更新升級服務;

使用舉例:

Delphi:ComOpen(1,9600,8,1,1,Pchar('wangjun')) , 打開COM1口。

VB:ComOpen(1,9600,8,1,1,"wangjun") , 打開COM1口。(注:下面的示例都以VB調用形式給出)

2、關閉串口

Function ComClose(nport:longint):longint;stdcall;

參數:nport: 串口號,取值為1~8,代表COM1~COM8;

返回值:長整型,操作成功返回“1”,否則返回“0”;

使用舉例:

ComClose(1) ,關閉打開的COM1口。

3、modbus相應功能碼所對應的讀取功能函數。

1)、01功能碼位元件的讀取(讀取一組線圈)

Function FCN01(nport,node,address,Count:longint):Pchar;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從00001~0XXXX地址區(邏輯線圈)值(你要讀標準modbus的00001地址這個值為0000,依次類推)

Count:   讀取的位元件個數,一次最多讀取1000個但不能超出尋址范圍;

返回值: 16進制字符串數據,字符串數據的終止符為"@";

使用舉例:

FCN01(1,1,19,37),由COM1讀取modbus 1號從站00020~00056(標準modbus地址)的位狀態值,返回值為“CD6BB20E1B@”

則表示27~20:CD, 35~28:6B, 43~36:B2, 51~44:0E, 56~52:1B;

字節值與實際的位狀態值對應參考(其他位功能函數的說明不再重復本內容):
            
位地址:    | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 35 | 34 | 33 | 32 | 31 | 30 | 29 | 28 |
            -----------------------------------------
各位賦值:   | 1  | 1  | 0  | 0  | 1  | 1  | 0  | 1  | 0  | 1  | 1  | 0  | 1  | 0  | 1  | 1  |
            -----------------------------------------
16進制串:  |         C         |         D         |         6         |         B         |
            -----------------------------------------

不足8位的位組的狀態值參考:

位地址:    | 56 | 55 | 54 | 53 | 52 |
            -------------
各位賦值:   | 0  | 1  | 0  | 1  | 1  |
            -------------
16進制串:  | 1  |         B         |
            -------------

在讀取錯誤或不能讀取的情況下返回“Error@”

注:沒有注冊的用戶只能讀取00001~00006范圍的狀態值;

2)、02功能碼位元件的讀取(取得一組開關輸入狀態數據)

Function FCN02(nport,node,address,Count:longint):Pchar;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從10001~1XXXX地址區(開關輸入狀態)值(你要讀標準modbus的10001地址這個值為0000,依次類推)

Count:   讀取的位元件個數,一次最多讀取1000個但不能超出尋址范圍;

返回值: 16進制字符串數據,字符串數據的終止符為"@";

使用舉例:

FCN02(1,1,196,22),由COM1讀取modbus 1號從站10197~10218(標準modbus地址)的位狀態值,返回值為“ACDB35@”

則表示10204~10197:AC, 10212~10205:DB, 10218~10213:35;

在讀取錯誤或不能讀取的情況下返回“Error@”

注:沒有注冊的用戶只能讀取10001~10006范圍的狀態值;

3)、03功能碼字元件的讀取(讀多個保持寄存器數據)

Function FCN03(nport,node,address,Count:longint):Pchar;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從40001~4XXXX地址區(保持寄存器數據)值(你要讀標準modbus的40001地址這個值為0000,依次類推)

Count:   讀取的位元件個數,一次最多讀取60個但不能超出尋址范圍;

返回值: 16進制字符串數據,字符串數據的終止符為"@";

使用舉例:

FCN03(1,1,107,3),由COM1讀取modbus 1號從站40108~40110(標準modbus地址)的字狀態值,返回值為“022B00000064@”

則表示40108:022B, 40109:0000, 40110:0064;

在讀取錯誤或不能讀取的情況下返回“Error@”

注:沒有注冊的用戶只能讀取40001~40003范圍的狀態值;

4)、04功能碼字元件的讀取(讀多個輸入寄存器數據)

Function FCN04(nport,node,address,Count:longint):Pchar;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從30001~3XXXX地址區(輸入寄存器數據)值(你要讀標準modbus的30001地址這個值為0000,依次類推)

Count:   讀取的位元件個數,一次最多讀取60個但不能超出尋址范圍;

返回值: 16進制字符串數據,字符串數據的終止符為"@";

使用舉例:

FCN04(1,17,8,1),由COM1讀取modbus 17號從站30009(標準modbus地址)的字狀態值,返回值為“000A@”

則表示30009:000A;

在讀取錯誤或不能讀取的情況下返回“Error@”

注:沒有注冊的用戶只能讀取30001~30003范圍的狀態值;

4、modbus相應功能碼所對應的寫入功能函數

1)、05功能碼線圈的置復位功能函數

    1、線圈置位
            
       Function FCN05S(nport,node,address:longint):longint;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從00001~0XXXX地址區(邏輯線圈)值(你要寫標準modbus的00001地址這個值為0000,依次類推)

返回值: 長整數,操作成功返回1,不能寫入或操作錯誤返回0;

使用舉例:

FCN05S(1,12,15),由COM1將modbus 12號從站00013(標準modbus地址)的位狀態值置1,返回值為1表示成功

注:沒有注冊的用戶只能寫入00001~00006范圍的狀態值;

       2、線圈復位
            
       Function FCN05R(nport,node,address:longint):longint;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從00001~0XXXX地址區(邏輯線圈)值(你要寫標準modbus的00001地址這個值為0000,依次類推)

返回值: 長整數,操作成功返回1,不能寫入或操作錯誤返回0;

使用舉例:

FCN05R(1,12,15),由COM1將modbus 12號從站00013(標準modbus地址)的位狀態值置0,返回值為1表示成功

注:沒有注冊的用戶只能寫入00001~00006范圍的狀態值;

2)、06功能碼預置單保持寄存器數據功能函數

Function FCN06(nport,node,address:longint;Sendstr:pchar):longint;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從40001~4XXXX地址區(保持寄存器)值(你要寫標準modbus的40001地址這個值為0000,依次類推)

Sendstr: 寫入字值,該值為4個一組的16進制字符串組成其取值為0000~FFFF(整數值為0~65535);

返回值: 長整數,操作成功返回1,不能寫入或操作錯誤返回0;

當要寫入字值時依次排列即可。如給40001寫值1000,先將1000轉成16進制字符串03E8,則sendstr=03E8;

使用舉例:

FCN06(1,2,2,"03E8"),由COM1給modbus 2號從站40003(標準modbus地址)的字單元寫入1000(16進制03E8),返回值為1表示成功

注:沒有注冊的用戶只能寫入40001~40003范圍的狀態值;

(00001~0XXXX)

3)、15功能碼強置多線圈的通斷數據功能函數

Function FCN15(nport,node,address,Count:longint;Sendstr:pchar):longint;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從00001~0XXXX地址區(邏輯線圈)值(你要寫標準modbus的00001地址這個值為0000,依次類推)

Count:  寫入位元件個數,一次最多1000個但不能超出尋址范圍;

Sendstr: 給位元件寫入的值按8個為一組和成字節值在寫入,該值為2個一組的16進制字符串組其取值為00~FF(整數值為0~255);

返回值: 長整數,操作成功返回1,不能寫入或操作錯誤返回0;

                  ---------- - ~ - ------
寫字符串序列如:  | 00 | FF | 10 | 64 |   ~    | 08 | 04 |
                  ---------- - ~ - ------

實際字符串與位地址的數值應如下表:  
          
位地址:    | 40 | 39 | 38 | 36 | 35 | 34 | 33 | 32 | 48 | 47 | 46 | 45 | 44 | 43 | 42 | 41 |
            -----------------------------------------
各位賦值:   | 0  | 1  | 1  | 0  | 0  | 1  | 0  | 0  | 0  | 1  | 0  | 1  | 0  | 0  | 0  | 0  |
            -----------------------------------------
16進制串:  |         6         |         4         |         5         |         0         |
            -----------------------------------------

使用舉例:

FCN06(1,2,19,10,"CD01"),由COM1給modbus 2號從站00020~00029(標準modbus地址)10個位單元寫如相應值,返回值為1表示成功

寫入值的參考 27~20:CD; 29~28:01;

位地址:    | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | -- | -- | -- | -- | -- | -- | 29 | 28 |
            -----------------------------------------
各位賦值:   | 1  | 1  | 0  | 0  | 1  | 1  | 0  | 1  | 0  | 0  | 0  | 0  | 0  | 0  | 0  | 1  |
            -----------------------------------------
16進制串:  |         C         |         D         |         0         |         1         |
            -----------------------------------------

注:沒有注冊的用戶只能寫入00001~00006范圍的狀態值;

4)、16功能碼寫多個保持寄存器數據功能函數

Function FCN16(nport,node,address,Count:longint;Sendstr:pchar):longint;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從40001~4XXXX地址區(保持寄存器)值(你要寫標準modbus的40001地址這個值為0000,依次類推)

Count:  寫入字元件個數,一次最多60個但不能超出尋址范圍;

Sendstr: 給字寫入的值,該值為4個一組的16進制字符串組其取值為0000~FFFF(整數值為0~65535);

返回值: 長整數,操作成功返回1,不能寫入或操作錯誤返回0;

當要寫入多個字值時依次排列即可。如給40001與40002寫值100和1000,先將100轉成16進制字符串0064、1000轉成16進制字符串03E8,

則sendstr=006403E8;一次最多寫64個字即字符串長應小于等于256;

                            ---------- ----   ~  ---------
寫字符串序列如:             | 0064 | 03E8 | 0010 | 6004 |   ~     | 0008 | 0400 |
                            ---------- ----   ~  ---------

使用舉例:

FCN16(1,2,1,"000A0102"),由COM1給modbus 2號從站40002(標準modbus地址)的字單元寫入給10(16進制000A)、40003(標準modbus地址)

的字單元寫入給258(16進制0102)返回值為1表示成功;

注:沒有注冊的用戶只能寫入40001~40003范圍的狀態值;

5)、modbus功能碼16的擴展功能函數

       1、單保持寄存器的0~15相應位的置位 (40001.0-40001.15~4XXXX.0-4XXXX.15)
            
       Function FCN16_xSet(nport,node,address,Bit:longint):longint;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從40001~4XXXX地址區(保持寄存器)值(你要寫標準modbus的40001地址這個值為4000,依次類推)

Bit:     保持寄存器的位,取值0~15;

返回值: 長整數,操作成功返回1,不能寫入或操作錯誤返回0;

使用舉例:

FCN16_xSet(1,12,2,0),由COM1將modbus 12號從站40003(標準modbus地址)的第0個位狀態值置1,返回值為1表示成功

注:沒有注冊的用戶不能使用本功能;

        2、單保持寄存器的0~15相應位的復位 (40001.0-40001.15~4XXXX.0-4XXXX.15)
            
        Function FCN16_xReset(nport,node,address,Bit:longint):longint;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從40001~4XXXX地址區(保持寄存器)值(你要寫標準modbus的40001地址這個值為4000,依次類推)

Bit:     保持寄存器的位,取值0~15;

返回值: 長整數,操作成功返回1,不能寫入或操作錯誤返回0;

使用舉例:

FCN16_xReset(1,10,3,12),由COM1將modbus 10號從站40004(標準modbus地址)的第12個位狀態值置0,返回值為1表示成功

注:沒有注冊的用戶不能使用本功能;

        3、單保持寄存器的0~15相應位的置復位 (40001.0-40001.15~4XXXX.0-4XXXX.15)指使相應的位短時間通斷一次(接通約60ms)
            
        Function FCN16_xSetReset(nport,node,address,Bit:longint):longint;stdcall;

參數:

nport:   串口號,取值為1~8,代表COM1~COM8;

node:   modbus從站號,取值1~255;

address: 元件地址,取值范圍從40001~4XXXX地址區(保持寄存器)值(你要寫標準modbus的40001地址這個值為4000,依次類推)

Bit:     保持寄存器的位,取值0~15;

返回值: 長整數,操作成功返回1,不能寫入或操作錯誤返回0;

使用舉例:

FCN16_xSetReset(1,10,9,10),由COM1將modbus 10號從站40010(標準modbus地址)的第10個位狀態值置1后約60ms再置0,返回值為1表示成功

注:沒有注冊的用戶不能使用本功能;

四、DLL附加函數說明 (本段函數對未注冊用戶沒有限制,完全可以使用。)

1、串口打開狀態的讀取

Function ComTrue(nport:longint):longint;stdcall;

參數:

noprt: 串口號,取值為1~8,代表COM1~COM8;

返回值:長整型,串口成功打開返回“1”,否則返回“0”;

這里讀取是DLL有效取得了串口的控制權,如果其他程序占用(串口不存在)等原因仍返回“0”。

2、整數轉換成16進制字符串 (為VC等非RAD開發環境所增設)

Function CIntToHex(Dcint,Digits:Longint):Pchar;stdcall;

參數:

Cint: 待轉換整數,取值為(0~65535);

Digits: 轉換的字符串位數,指定位數小于實際位數時按實際輸出;

在參數錯誤等非法的情況下返回“Error@”

使用舉例:

CIntToHex(200,2),則返回字符串“C8@”;
CIntToHex(200,4),則返回字符串“00C8@”;
CIntToHex(200,8),則返回字符串“000000C8@”;
CIntToHex(4500,4),則返回字符串“1194@”;
CIntToHex(4500,3),則返回字符串“1194@”,因為“194”不足以表示4500這個數所以按實際輸出字符串“1194@”;

"@"為字符串數據的終止符。

3、16進制字符串轉換成整數 (為VC等非RAD開發環境所增設)

Function CHexToInt(CHex:Pchar):Longint;stdcall;

參數:

CHex: 待轉換字符串,取值為(0000~FFFF);

使用舉例:

CHexToInt("03E8"),則返回整數1000;

注:在參數不正確等出錯情況下返回值為“-1”。

4、抽取(0~65535)所示整數中(0~15)某個位的值

Function CinBin(CHex,Start:longint):longint;stdcall;

參數:

CHex: 待轉換整數,取值為0~65535(0000~FFFF);

Start: 抽取的位,取值為(0~15);

使用舉例:

CinBin(15,3),則返回值1;
CinBin(15,4),則返回值0;
CinBin(1000,6),則返回值1;

讀取MB0組合成的字節值為“FC”(252)時,要讀取M0.1的值時,則調用CinBin(252,1)返回值0表示M0.1的值為0。

注:在參數不正確等出錯情況下返回值為“-1”。

5、返回字符串Text左邊的Count個字符  (為VC等非RAD開發環境所增設)

Function CLeftStr(Text:Pchar;Count:longint):Pchar;stdcall;

參數:

Text: 字符串原型;

Count: 指定返回左側字符串個數;

在參數錯誤等非法的情況下返回“Error@”

使用舉例:

CleftStr("123456", 3) = "123@";

"@"為字符串數據的終止符。

6、返回字符串Text右邊的Count個字符  (為VC等非RAD開發環境所增設)

Function CRightStr(Text:Pchar;Count:longint):Pchar;stdcall;

參數:

Text: 字符串原型;

Count: 指定返回右側字符串個數

在參數錯誤等非法的情況下返回“Error@”

使用舉例:

CRightStr("123456", 3) = "456@";

"@"為字符串數據的終止符。

7、返回字符串Text從Start開始的Count個字符 (為VC等非RAD開發環境所增設)

Function CMidStr(Text:Pchar;Start,Count:longint):Pchar;stdcall;

參數:

Text: 字符串原型;

Start: 指定返回字符串的起始位置;

Count: 指定返回字符串個數;

在參數錯誤等非法的情況下返回“Error@”

使用舉例:

CMidStr("123456",2,3) = "234@";

"@"為字符串數據的終止符。

8、字符串Cstr開始于字符串Ostr的位置 (為VC等非RAD開發環境所增設)

Function Cinstr(Ostr,Ckstr:Pchar;Dcint:Longint):Longint;stdcall;

參數:

Ostr:  字符串原型;

Cstr:  查詢的字符串;

Dcint: 設定查詢字符串的起始位置,取值>=1,即最少從源字符串的第一個字符開始查詢;

返回值:長整型;

使用舉例:

CinStr("1Tfdg23456","2",2) = 6

注:在參數不正確等出錯情況下返回值為“0”。

9、PC喇叭的報警過程函數;

Function MyBeep(SoundHz:longint):longint;stdcall;

參數:SoundHz:長整型;

返回值:長整型,操作成功返回“1”,否則返回“0”。

使用舉例:

MyBeep(2000); 按2000的頻率發出報警聲。

DLL中關于傳出字符串值的函數都以"@"為字符串函數值終止符,這是對多開發環境應用時方便用戶正確讀取返回字符串數據而設。

五、Delphi、VB、VC語言環境的開發使用說明

1、Delphi語言環境開發說明

在Delphi環境下將modbus.dll、serialmodbus.slip(許可文件)復制到應用程序目錄下(即將上述文件與編譯后的可執行文件方入同一文件內);

在工程文件的主程序窗體(pas)文件中聲明:

  Function ComOpen(nport,BaudRate,DataBits,Parity,StopBits:longint;User:Pchar):longint;stdcall;External'modbus.dll';
  Function ComClose(nport:longint):longint;stdcall;External'modbus.dll';
  Function FCN01(nport,node,address,Count:longint):Pchar;stdcall;External'modbus.dll';
  Function FCN02(nport,node,address,Count:longint):Pchar;stdcall;External'modbus.dll';
  Function FCN03(nport,node,address,Count:longint):Pchar;stdcall;External'modbus.dll';
  Function FCN04(nport,node,address,Count:longint):Pchar;stdcall;External'modbus.dll';
  Function FCN05S(nport,node,address:longint):longint;stdcall;External'modbus.dll';
  Function FCN05R(nport,node,address:longint):longint;stdcall;External'modbus.dll';
  Function FCN06(nport,node,address:longint;Sendstr:pchar):longint;stdcall;External'modbus.dll';
  Function FCN15(nport,node,address,Count:longint;Sendstr:pchar):longint;stdcall;External'modbus.dll';
  Function FCN16(nport,node,address,Count:longint;Sendstr:pchar):longint;stdcall;External'modbus.dll';
  Function FCN16_xSet(nport,node,address,Bit:longint):longint;stdcall;External'modbus.dll';
  Function FCN16_xReset(nport,node,address,Bit:longint):longint;stdcall;External'modbus.dll';
  Function FCN16_xSetReset(nport,node,address,Bit:longint):longint;stdcall;External'modbus.dll';
  Function ComTrue(nport:longint):longint;stdcall;External'modbus.dll';
  Function MyBeep(SoundHz:longint):longint;stdcall;External'modbus.dll';

其它附加函數Delphi有實用函數,建議用Delphi自帶函數,如需使用聲明參照上例;

注:所有DLL的函數必須聲明方能使用,建議本DLL的聲明采用示例所示的靜態聲明方式。 聲明后可以在程序中使用這些函數,附加函數

中除ComTrue、CinBin、MyBeep等Delphi系統自帶有類似功能函數。通信時必須先使用ComOpen函數打開串口,在串口打開后可以有效操作

相關函數,為確保通信可在程序運行開始時打開串口,程序退出前關閉串口。應用程序退出之前請務必將關閉所有串口,如串口沒有關閉

而退出程序將拋出異常錯誤。

確保應用程序在關閉釋放前關閉打開的串口。解決方法,在form的OnDestroy事件中加入如下語句:

for i:=1 to 8 do
begin
  if ComTrue(i)=1 then ComClose(i);
end;

在Delphi中給中給DLL中的函數傳pchar值問題,建議string型轉換到Pchar型采用strPCopy()函數,Pchar型轉換到string型采用straps()函數,

不推薦使用直接轉換法即string到Pchar類型采用Mpchar=Pchar(str),Pchar到string采用str:=Mpchar (str為string類型、Mpchar為Pchar

類型)。上述可以詳細參照DEMO程序。

2、VB語言環境開發說明

在VB環境下將modbus.dll、serialmodbus.slip(許可文件)復制到應用程序目錄下(即將上述文件與編譯后的可執行文件方入同一文件夾內);

函數說明中給出的是Delphi的函數原型,在VB中聲明時只要注意一下類型的對應即可Delphi中的longint類型對應VB中的Long類型、

Delphi中的Pchar對應VB中的String類型,下面給出主要函數的聲明:

Private Declare Function ComOpen Lib "modbus.dll" (ByVal nport As Long, ByVal BaudRate As Long, ByVal DataBits As Long, ByVal Parity As Long, ByVal StopBits As Long, ByVal User As String) As Long
Private Declare Function ComClose Lib "modbus.dll" (ByVal nport As Long) As Long
Private Declare Function FCN01 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long) As String
Private Declare Function FCN02 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long) As String
Private Declare Function FCN03 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long) As String
Private Declare Function FCN04 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long) As String
Private Declare Function FCN05S Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long) As Long
Private Declare Function FCN05R Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long) As Long
Private Declare Function FCN06 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Sendstr As String) As Long
Private Declare Function FCN15 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long, ByVal Sendstr As String) As Long
Private Declare Function FCN16 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long, ByVal Sendstr As String) As Long
Private Declare Function FCN16_xSet Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Bit As Long) As Long
Private Declare Function FCN16_xReset Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Bit As Long) As Long
Private Declare Function FCN16_xSetReset Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Bit As Long) As Long
Private Declare Function ComTrue Lib "modbus.dll" (ByVal nport As Long) As Long
Private Declare Function MyBeep Lib "modbus.dll" (ByVal SoundHz As Long) As Long
Private Declare Function CinBin Lib "modbus.dll" (ByVal CHex As Long, ByVal start As Long) As Long

其它附加函數VB有實用函數,建議用VB自帶函數,如需使用聲明參上面的例子給相應的函數聲明;做完上述聲明后,便可以在程序中使用

相關函數了。本DLL是串口通信庫,通信時必須先使用ComOpen函數打開串口,在串口打開后可以有效操作相關函數,為保證通信可以在

程序運行開始時打開串口,程序退出前關閉串口。在應用程序關閉之前請務必將關閉所有串口,如您的程序串口沒有關閉退出程序將拋

出異常。當出現這樣的異常請更改您的程序,確保應用程序在關閉釋放前關閉所打開的串口。

解決方法,在form的Unload事件中加入如下例:

If ComTrue(1)=1 then
  ComClose(1)
End if

為確保Unload事件有效執行程序中不應使用“End”語句,而盡量使用“Unload”語句釋放所有窗體,因使用“End”語句系統不會執行

正常的窗體釋放等事件而直接退出程序,如程序中有form1,form2兩個窗體,則使用下面語句:

Unload  form1
Unload  form2

VB會在所有窗體關閉后釋放所有占用資源。上述可以詳細參照DEMO程序。當然也可在使用“End”語句前將串口關閉也是可以釋放串口的。

3、VC語言環境開發說明

在VC環境下將modbus.dll、serialmodbus.slip(許可文件)復制到應用程序目錄下(即將上述文件與編譯后的可執行文件方入同一文件夾內);

在VC中使用DLL一般都是采用動態聲明的方式,函數說明中給出的是Delphi的函數原型,在VC中聲明時只要注意一下類型的對應即可

Delphi中的longint類型對應VC中的Long類型、Delphi中的Pchar對應VC中的char* 類型,下面給出主要函數的聲明:

在工程主文件cpp中聲明一個句柄:

HINSTANCE m_handle;

用來標識導入的動態鏈接庫。

1)、導入動態鏈接庫,如例所示:

   m_handle =:: LoadLibrary("modbus.dll");

2)、按下例說明聲明相關各個函數:

typedef long (CALLBACK* pOpen)(long nport, long BaudRate, long DataBits, long Parity, long StopBits, char* User);
typedef long (CALLBACK* pClose)(long nport);
typedef char* (CALLBACK* pFCN01)(long nport, long node, long address, long Count);
typedef char* (CALLBACK* pFCN02)(long nport, long node, long address, long Count);
typedef char* (CALLBACK* pFCN03)(long nport, long node, long address, long Count);
typedef char* (CALLBACK* pFCN04)(long nport, long node, long address, long Count);
typedef long (CALLBACK* pFCN05S)(long nport, long node, long address);
typedef long (CALLBACK* pFCN05R)(long nport, long node, long address);
typedef long (CALLBACK* pFCN06)(long nport, long node, long address, char* Sendstr);
typedef long (CALLBACK* pFCN15)(long nport, long node, long address, long Count, char* Sendstr);
typedef long (CALLBACK* pFCN16)(long nport, long node, long address, long Count, char* Sendstr);
typedef long (CALLBACK* pFCN16_xSet)(long nport, long node, long address, long Bit);
typedef long (CALLBACK* pFCN16_xReset)(long nport, long node, long address, long Bit);
typedef long (CALLBACK* pFCN16_xSetReset)(long nport, long node, long address, long Bit);
typedef long (CALLBACK* pTrue)(long nport);
typedef char* (CALLBACK* pIntHex)(long Dcint,long Digits);
typedef long (CALLBACK* pHexInt)( char* CHex);
typedef long (CALLBACK* pBin)( long Chex, long Start);
typedef char* (CALLBACK* pLeft)( char* Text, long Count);
typedef char* (CALLBACK* pRight)( char* Text, long Count);
typedef char* (CALLBACK* pMid)( char* Text, long  Start, long Count);
typedef long (CALLBACK* pinstr)( char* Ostr, char* Ckstr, Long Dcint);
typedef long (CALLBACK* pBeep)( long SoundHz);

3)、聲明并建立動態鏈接庫中的函數與新函數名的對應關系,如下:

pOpen Copen = (pOpen)GetProcAddress(m_handle,"ComOpen");
pClose Cclose = (pClose)GetProcAddress(m_handle,"ComClose");
pFCN01 CFCN01 = (pFCN01)GetProcAddress(m_handle,"FCN01");
pFCN02 CFCN02 = (pFCN02)GetProcAddress(m_handle,"FCN02");
pFCN03 CFCN03 = (pFCN03)GetProcAddress(m_handle,"FCN03");
pFCN04 CFCN04 = (pFCN04)GetProcAddress(m_handle,"FCN04");
pFCN05S CFCN05S = (pFCN05S)GetProcAddress(m_handle,"FCN05S");
pFCN05R CFCN05R = (pFCN05R)GetProcAddress(m_handle,"FCN05R");
pFCN15 CFCN15 = (pFCN15)GetProcAddress(m_handle,"FCN15");
pFCN16 CFCN16 = (pFCN16)GetProcAddress(m_handle,"FCN16");
pFCN16_xSet CFCN16_xSet = (pFCN16_xSet)GetProcAddress(m_handle,"FCN16_xSet");
pFCN16_xReset CFCN16_xReset = (pFCN16_xReset)GetProcAddress(m_handle,"FCN16_xReset");
pFCN16_xSetReset CFCN16_xSetReset = (pFCN16_xSetReset)GetProcAddress(m_handle,"FCN16_xSetReset");
pTrue Ctrue = (pTrue)GetProcAddress(m_handle," ComTrue");
pIntHex Cinthex = (pIntHex)GetProcAddress(m_handle," CIntToHex");
pHexInt Chexint = (pHexInt)GetProcAddress(m_handle," CHexToInt");
pBin Cbin = (pBin)GetProcAddress(m_handle," CinBin");
pLeft Cleft = (pLeft)GetProcAddress(m_handle," CLeftStr");
pRight Cright = (pRight)GetProcAddress(m_handle," CRightStr");
pMid Cmid= (pMid)GetProcAddress(m_handle," CMidStr");
pinstr Cinstr=(pinstr)GetProcAddress(m_handle," CinStr");
pTrue CBeep = (pBeep)GetProcAddress(m_handle," MyBeep");

注:雙引號中為動態鏈接庫中的函數名。

4)、接下來就可以自由使用動態鏈接庫中的函數了,如:

Copen(參數略);
Cclose(參數略);
CFCN01(參數略);
CFCN02(參數略);
CFCN03(參數略);
CFCN04(參數略);
CFCN05S(參數略);
CFCN05R(參數略);
CFCN15(參數略);
CFCN16(參數略);
CFCN16_xSet(參數略);
CFCN16_xReset(參數略);
CFCN16_xSetReset(參數略);
Ctrue(參數略);
Cinthex(參數略);
Chexint(參數略);
Cbin(參數略);
Cleft(參數略);
Cright(參數略);
Cmid(參數略);
Cinstr(參數略);
CBeep(參數略);

注:函數中用到了char*型參數,這里介紹下char*與Cstring的相互轉換的函數:

(1)char*->CString

char* sz;
CString str;
str.Format("%s",sz);  //可以用此函數將讀取的值轉成字符串

(2) CString -> char*

CString str;
char* sz = str.GetBuffer(0);//可將字符串轉成char*給函數賦值


5)、當不再需要使用DLL時記得關閉串口及釋放動態鏈接庫,如:

關閉串口

if cTrue(1)==1 then
{
  cClose(1);
}

6)、釋放DLL

FreeLibrary(m_handle);

六、詳細的DLL使用請參DEMO程序,相關DEMO程序和說明所使用的開發環境VB指的是VB6.0,Delphi指的是Delphi6.0/Delphi7.0,

VC指的是VC6.0。如果使用了高版本開發環境請根據開發軟件更新后所兼容的聲明方式進行聲明調用。VC的串口調用沒DEMO程序

請參照本手冊的說明進行調用(本說明的方法經過測試是可行有效的)。

DLl已經過使用和測試具有很好的穩定性(測試平臺為Win2000/WinXP),目前還沒有用戶方面返回的缺陷報告,如果你在使用過程中發現

有什么缺陷也請和我聯系,我將在最短時間內給你更新升級(更新升級只針對注冊用戶)。

作者:  wjun7610
QQ:    157610979
淘寶店:http://shop34821629.taobao.com

主站蜘蛛池模板: 天堂在线中文字幕 | 两性视频久久 | 亚洲av成人精品毛片 | 国产超碰人人模人人爽人人添 | 超碰综合| 公妇借种乱h中文字幕 | 亚洲美女操 | 97视频一区 | 人妻激情文学 | 日本大乳高潮xxxxx | 老熟妇高潮一区二区三区 | 天天午夜| 欧美在线观看视频一区 | 91一区二区 | 日韩色图在线观看 | jizz韩国| 国产日韩aaaa片毛片 | 日美韩一区二区三区 | 亚洲欧美日韩久久精品第一区 | 国产精品免费一区二区三区都可以 | 国产麻豆精品视频 | 91亚洲精品国偷拍自产 | 黄色免费在线网址 | 波多野结衣在线观看一区二区三区 | 久草在线视频在线观看 | 国产乱码在线观看 | 亚洲美女爱爱 | 国产嫩草视频 | 自拍新婚之夜初交视频1 | 做爰xxxⅹ性69免费软件 | 欧美成人精品一级乱黄 | 在线看片 | 丰满的人妻hd高清日本 | 999综合网| 宅男噜噜66国产精品观看 | 亚洲加勒比久久88色综合 | 亚洲女同ⅹxx女同tv | 波多野结衣高清在线 | 喷潮在线| 亚洲一个色 | 伦理东北丰满少妇 | 欧美成人久久 | 2019高清中文字幕在线免费看 | 无码精品人妻一区二区三区av | 亚洲xxxx丝按摩袜 | 女同互慰高潮呻吟免费播放 | www.yeyyme成人看片 | 狠狠色狠狠色综合网 | 另类少妇人与禽zozz0性伦 | 成人一级影视 | 久久婷婷五月综合色丁香 | 青青五月天 | 日日噜噜噜夜夜爽爽狠狠 | 无套内谢少妇在线观看视频 | 欧美成人久久久免费播放 | 中国国语毛片免费观看视频 | 亚洲三级黄 | 国产黄色片网站 | 91亚洲国产成人精品一区 | 色av免费| 9l视频自拍蝌蚪自拍丨视频 | 免费啪视频在线观看 | 在线视频日本 | 开心色站 | 又色又爽又大免费区欧美 | 丝袜美腿亚洲一区二区 | 精品久久一区二区三区 | 一级特黄色 | 靠逼在线观看 | 韩日激情视频 | a网址| 无遮挡啪啪摇乳动态图gif | 国产美女被遭强高潮免费网站 | 想要视频在线 | 亚洲三级免费观看 | av剧情在线| 久久精品操| 狠狠色丁香久久综合网 | 欧美激情网站 | 国产成人免费av一区二区午夜 | 亚洲国产精品久久久久久女王 | 色小姐综合 | 窝窝影院午夜看片 | 国产av国片精品jk制服丝袜 | 天堂中文在线看 | 中文一二区 | 波多野结衣视频免费 | 99国产精品丝袜久久久久久 | 亚洲精品乱码久久久久久麻豆不卡 | 18禁真人抽搐一进一出免费 | 午夜精品久久久久久毛片 | 午夜视频体内射.com.com | 在线观看国产成人av片 | 5999在线视频免费观看 | 黄色片视频网站 | 亚洲性色av私人影院无码 | 成人小视频在线免费观看 | 国产成人精品免费视频大全最热 | 欧美大肚乱孕交hd孕妇 | 国产美女引诱水电工 | 国产午夜精品一区二区三区四区 | 亚洲综合三区 | 第九色| 精品乱人伦一区二区三区 | 久久精品久久久精品美女 | 91福利视频网站 | 免费观看日韩 | 伊人69| 久久综合精品国产二区无码 | 国产亚洲xxxx在线播放 | 欧美性生交xxxxx久久久 | 男女一级特黄 | 天干天干啦夜天干天2017 | 日日噜噜噜噜人人爽日本精品 | 美女扒开屁股让男人桶 | 男人激烈吮乳吃奶视频 | 揄拍成人国产精品视频 | 亚洲在线中文字幕 | 闺蜜互慰吃奶互揉69式磨豆腐 | 又黄又爽又色又刺激的视频 | 中文字幕在线不卡 | 精品少妇无码av无码专区 | 成人羞羞视频 | 中文字幕乱码视频32 | 国产又色又爽又黄刺激在线视频 | 日韩精品无码免费一区二区三区 | 国产伦精品一区三区视频 | 午夜精品视频一区 | 牛牛精品一区二区 | 亚洲欧美一区二区在线观看 | 台湾午夜a级理论片在线播放 | 依依激情网| 国产91精品看黄网站在线观看动漫 | 欧美激情黑白配 | 东京热一本无码av | 日本少妇做爰大尺裸体网站 | 2020毛片 | 天堂av资源网 | 狠狠躁夜夜躁人人爽视频 | xx视频在线| 一本色道久久综合亚洲精品图片 | 色综合久久久久久久久五月 | 粗暴蹂躏av一区二区 | 亚洲成a人片77777kkkk | 麻豆一区二区三区四区 | 青青青青青草 | 综合色导航| 国产黄色一级大片 | 日韩国产成人无码av毛片 | 欧美性色19p | 亚洲综合第一区 | 中国一级特黄毛片大片久久 | 成人mv在线观看 | 真实偷拍激情啪啪对白 | 亚洲色图国产精品 | 久久久中日ab精品综合 | 欧美黑人狂躁日本寡妇 | 特大巨黑吊xxxx高潮 | 欧美国产日韩视频 | 久久靠逼视频 | 国产玖玖在线 | 中文无线乱码二三四区 | 另类 综合 日韩 欧美 亚洲 | 精人妻无码一区二区三区 | 人人草在线 | 国产一区二区精品 | 高潮久久久久久久久 | 毛片黄片免费看 | 欧美不卡| 26uuu国产精品 | 国产精品色呦呦 | 午夜人妻久久久久久久久 | 北岛玲一区二区三区四区 | 亚洲蜜桃视频 | 午夜精品久久久久久久99热蜜臀 | 九九热精彩视频 | 风流僵尸艳片a级 | 欧美性猛交 xxxx | 国产精品video爽爽爽爽 | 色人阁亚洲 | 精品国产一区二区三区噜噜噜 | 在线精品小视频 | 成人中文网 | 免费麻豆 | 美日韩中文字幕 | 福利毛片| 友田真希一区二区 | 国产又粗又爽又猛又大的动漫片 | 久久久www免费人成黑人精品 | 国产精品桃色 | 人鳝交video另类hd | 国产成人综合在线视频 | 嘴交的视频丨vk口舌视频 | 一区二区中文字幕在线观看 | 中文字幕avav | 在线观看精品黄av片免费 | www.色就是色 | 国产精品igao | 国产丝袜在线 | 国产69精品久久久久999小说 | 国产又粗又猛又爽又黄91 | 女同激情久久av久久 | 蜜桃av一区 | 性猛交娇小69hd | 国产美女极度色诱视频www | 人妻激情文学 | 日韩精品中文在线 | 日韩一级片av | 96视频在线 | 亚洲涩涩爱 | 波多野吉衣一区二区三区 | 欧美一级淫片aaaaaaa喷水 | 激情综合啪啪 | 久久久久久中文字幕 | 日韩一级在线观看视频 | www.成人在线观看 | 成人在线免费网站 | 日本一区二区不卡视频 | 亚洲羞羞 | 肉体粗喘娇吟国产91 | jizz越南zz女人18 | 亚洲国产精品视频 | 免费人成视频19674不收费 | www亚色| 男人午夜影院 | 亚洲一区在线观看免费 | 亚洲资源在线播放 | 男人天堂新 | 热播网| 超清纯大学生白嫩啪啪 | av在线亚洲欧洲日产一区二区 | 欧美精品日日鲁夜夜添 | 久久久青草婷婷精品综合日韩 | 天干夜夜爽爽日日日日 | 美女一区二区三区 | 日本网站免费 | 夜夜躁很很躁日日躁2020铜川 | 成人亚洲欧美 | 丰满大爆乳波霸奶 | 国精一二二产品无人区免费应用 | 久久福利国产 | 亚洲欧洲综合在线 | 性一交一乱一色一免费无遮挡 | 国内精品一区二区三区 | 欧美亚洲视频一区二区 | 少妇饥渴偷公乱第75章 | 国产精品成人3p一区二区三区 | 亚洲精品国偷拍自产在线麻豆 | 日韩 国产 | 日本免费网站视频 | 欧美sese| 中文字幕在线一区二区三区 | 亚洲综合视频在线观看 | 国产精品99久久久久久人红楼 | 国产日韩久久久 | 欧美真人做爰在线观看 | 性色av香蕉一区二区 | 性网爆门事件集合av | 全网免费在线播放视频入口 | 欧美理论片在线观看 | 亚洲精品一区三区三区在线观看 | 美女与动人物aa交性 | 拍摄av现场失控高潮数次 | 狠狠撸在线视频 | 国产在线激情 | 国产一区二区三区免费观看网站上 | 亚洲最大的熟女水蜜桃av网站 | 亚洲一卡一卡二新区无人区 | 日韩精品一区二区三区国语自制 | 国产91一区 | 亚洲精品日日夜夜 | 99国产精品视频免费观看一公开 | av网站免费观看 | 国产精品美女www爽爽爽软件 | 国产精品无码专区av在线播放 | 久久久久久久av麻豆果冻 | 精品国产一区二区国模嫣然 | 狠狠色丁香婷婷综合潮喷 | 护士的小嫩嫩好紧好爽 | 亚洲日本欧美日韩中文字幕 | 91精品国产闺蜜国产在线闺蜜 | 欧美激情一区二区 | 午夜肉伦伦影院九七影网 | 亚洲天堂自拍 | 天天鲁一鲁摸一摸爽一爽视频 | 成人精品视频在线 | 韩国av片永久免费 | 亚洲香蕉av | 国产盼盼私拍福利视频99 | 顶级嫩模啪啪呻吟不断好爽小说 | 欧美人与禽zozzo视频 | 亚洲成av人在线视 | 欧美三级在线播放 | 黄色特级一级片 | 天海翼激烈高潮到腰振不止 | 日韩大片在线免费观看 | 在线观看精品黄av片免费 | 欧美一区二区最爽乱淫视频免费看 | 国产三级农村妇女做受 | 少妇夜夜爽夜夜春夜夜高潮 | 国产精品久久久毛片 | 天天爱天天射 | 婷婷午夜天 | 亚洲国产精品一区二区久久 | 久久品| 污污污污污污www网站免费 | 精品水蜜桃久久久久久久 | 国产精品最新乱视频二区 | 欧美日韩激情在线 | 成人综合网站 | 国产熟女一区二区三区四区五区 | 国产h在线观看 | 久久久性色精品国产免费观看 | 亚洲中文字幕成人无码 | 日本欧美在线观看 | 亚洲精品无码久久久久 | 国产精品无码av无码 | 浓精h攵女乱爱av | 国产 欧美 视频一区二区三区 | 亚洲老熟女性亚洲 | 无人码一区二区三区视频 | 三级三级18女男 | 精品99999| 午夜综合网 | 色婷婷激情 | 男人猛吃奶女人爽视频 | 黑人巨大av | 国产精品sss | 成人毛片100免费观看 | 91干视频| 亚洲精品在线观看视频 | 亚洲日韩欧美国产高清αv 性夜久久一区国产9人妻 | 香蕉久久av一区二区三区 | 少妇高潮毛片色欲ava片 | 久久国产乱子伦免费精品 | 国产成人精品国内自产拍免费看 | 欧美三级手机在线观看 | 黄色精品一区二区三区 | 91亚洲精品国偷拍自产 | 欧美xxxxx精品| 久久久久一级片 | 国产精品羞羞答答xxdd | 国产精品日韩欧美一区二区三区 | 日日噜噜夜夜狠狠久久蜜桃 | 制服丝袜手机在线 | 波多野结衣一区二区三区在线观看 | 91久久国产露脸精品 | 大地资源影视在线播放观看高清视频 | 麻豆国产丝袜白领秘书在线观看 | 午夜免费观看 | 亚洲精品69 | 精品欧美成人高清在线观看 | 国产精品久久久一区二区三区网站 | 国产熟妇勾子乱视频 | 国产新婚夫妇白天做个爱 | 91久久精品国产91性色tv | 日韩第八页| 波多野结av衣东京热无码专区 | 国产日韩欧美视频 | 日韩精品无码一区二区三区久久久 | 青柠影视在线观看免费高清中文 | 国产第一页视频 | 亚洲另类色综合网站 | 中文字幕视频网站 | 亚洲第一综合色 | 欧美日韩午夜精品 | 国产欧美在线一区二区三区 | 大肉大捧一进一出好爽 | 久久精品国产99久久6动漫亮点 | 国产三级理论片 | 强伦人妻一区二区三区视频18 | 国产97色在线 | 国产 | 日韩黄色大片 | 中文日产日产乱码乱偷在线 | 国产又色又爽又刺激在线观看 | 午夜爱爱影院 | 爱情岛论坛永久亚洲品质 | 97精品视频在线 | 精品国产一区二区三区四区vr | 成人午夜又粗又硬又长 | 亚洲精品久久久艾草网 | 嫩草在线观看视频 | 国产干b | 午夜国人精品av免费看 | 交专区videossex另类 | 日韩一级中文字幕 | www天堂在线 | 少妇无内裤下蹲露大唇92 | 国产精品久久久久久av | 中国吞精videos露脸 | 国内国外精品影片无人区 | 在线观看av片 | 7777久久久国产精品 | 精品一区二区三区免费毛片 | 欧美一级黄色片视频 | 91亚洲精品丁香在线观看 | 国产精品久久久久久久久久大牛 | 91蜜臀精品国产自偷在线 | 中文字幕乱码在线观看 | 乌克兰少妇xxxx做受 | 爱情岛论坛线路一区二区 | 爱爱视频网 | 91精品国产视频 | 伊人一道本 | 久久久精彩视频 | 富二代成人短视频 | 免费看成人片 | 久久久久久久久久久久久9999 | 久久一区国产 | 免费无码专区毛片高潮喷水 | 最近中文字幕免费 | 中文第一页| 亚洲精品沙发午睡系列 | 久久人人爽人人 | 国产一级淫片s片sss毛片s级 | 影音先锋在线中文字幕 | 人妻系列av无码专区 | 最新中文字幕av无码不卡 | 日韩亚洲欧美一区二区 | 欧美日韩性生活视频 | 天堂欧美城网站地址 | 牛牛视频精品一区二区不卡 | 天天影视色香欲综合久久 | videossex性糟蹋重 | 国产美女福利视频 | 真人做爰高潮全过程毛片 | 亚洲女人在线 | 成人免费无遮挡无码黄漫视频 | 国产伦精品一区三区视频 | 国产成人精品日本亚洲专区 | 亚洲乱码国产乱码精品精小说 | 东京一木一道一二三区 | 超碰97av在线| 久久久999国产精品 久久久999精品视频 | 牛牛精品一区二区 | 伊人网av在线 | 亚洲暴爽av天天爽日日碰 | 黑人性较视频免费视频 | 少妇性i交大片免费 | 99视频精品全部免费 在线 | 揉捏奶头高潮呻吟视频 | 在线播放五十路熟妇 | 国产亚洲成av人在线观看导航 | 欧美精品一二区 | 日韩丰满少妇无码内射 | 国产精品爽爽久久久久久竹菊 | 国产乱人偷精品人妻a片 | 插插插综合视频 | 国产精品老女人 | 国产精品激情av久久久青桔 | 丰满少妇高潮叫久久国产 | 日韩一级片在线 | 嫩草影院菊竹影院 | 一区二区亚洲精品国产精华液 | 456成人精品影院 | 一级黄色免费毛片 | 小早川怜子xxxxaⅴ在线 | 国产精品女同一区二区久久夜 | 日日干夜夜草 | 三级免费看 | 久久国产精品网 | 揄拍成人国产精品视频 | 国产极品美女高潮无套在线观看 | 国产欧美视频一区 | 国产污视频在线 | 少妇下蹲下露大唇58 | 免费av网页| 性欢交69国产精品 | 国产又粗又深又猛又爽又在线观看 | 亚洲精品久久久久久久久久吃药 | 高h猛烈做哭你尿进去了网站 | 男人懂得网站 | 双性人bbww欧美双性 | 久久精品人人做人人爱爱站长工具 | 伊人久久综合视频 | 国产色婷婷五月精品综合在线 | 亚洲偷自 | 国产av天堂无码一区二区三区 | 国产盗摄xxxx视频xxxx | 国产精品久久免费观看spa | 黄网站色大毛片 | 少妇激情偷人三级 | 久久99久久99精品免视看婷婷 | 国产一区二区三区欧美 | 日本黄色免费在线观看 | 久久精品欧美日韩 | 窝窝午夜影院 | 欧美亚洲综合另类 | 永久免费看啪啪的网站 | 祝英台艳史高h(np)小说全文 | 又湿又紧又大又爽a视频 | 欧美性生活网 | 女人和野鲁性猛交大毛片 | 亚洲精品无码高潮喷水在线 | xxx一区| 久久99综合 | www国产在线 | 日本a级黄绝片a一级啪啪 | 国产福利酱国产一区二区 | 一区二区高清视频 | 成人精品视频网站 | 久久亚洲免费 | aaaaa少妇高潮大片 | 亚洲一级黄色片 | 好吊妞视频这里有精品 | 人妻aⅴ无码一区二区三区 日本一卡2卡3卡四卡精品网站 | 欧美a在线看| 在线免费日韩 | 欧美性一区 | 你懂的国产在线 | 久久天天躁狠狠躁夜夜躁2014 | 久久这里只有精品国产 | 我撕开了少妇的蕾丝内裤视频 | jlzzjizz亚洲学生好多水 | 丁香激情综合久久伊人久久 | 曰本女人牲交全视频播放 | 中文字幕av在线免费观看 | 欧美偷拍第一页 | 农村偷人一级超爽毛片 | 性欧美极品xxxx欧美一区二区 | 国产一区二区三区四区三区四 | 亚洲精品国产精品乱码视色 | 女性高爱潮视频 | 99视频| 一个人看的免费高清www视频 | 久久av一区二区三区亚洲 | 国产麻豆午夜三级精品 | 中文字幕在线播放日韩 | 色噜噜久久综合伊人一本 | 欧洲熟妇色xxxx欧美老妇多毛 | www.色婷婷| 无码人妻精品一区二区三区9厂 | 黑巨人与欧美精品一区 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲国产精品国自产拍久久 | 丁香婷婷综合激情 | 亚洲影视在线观看 | 欧美成年黄网站色视频 | 日本一卡二卡四卡无卡乱码视频免费 | 奇米精品视频一区二区三区 | yy6080久久伦理一区二区 | 欧美 日本 国产 | 亚洲欧美国产视频 | 久久久综合香蕉尹人综合网 | 国产成人精品久久二区二区91 | 少妇性aaaaaaaaa视频 | 久久精品aⅴ无码中文字字幕 | 国产精品点击进入在线影院高清 | 日韩一本在线 | 午夜爱爱免费视频 | 午夜精品射精入后重之免费观看 | 一级片在线免费 | 免费黄色网址观看 | www68av蜜桃亚洲精品 | 色屁屁xxxxⅹ免费视频 | 久热这里只有精品6 | 爱豆国产剧免费观看大全剧集 | 国产欧美另类久久久精品图片 | 天天曰夜夜曰 | 日韩综合一区二区三区 | 性欧洲精品videos' | 免费一区二区三区视频在线 | 中文字幕在线观看免费 | 成人久久久久久 | 免费看欧美成人a片无码 | 色悠悠在线视频 | 朝鲜女人大白屁股ass孕交 | 蜜臀国产在线视频 | 超碰人人草 | 欧美成人午夜一区二区三区 | www视频一区| 人与拘一级a毛片 | 成人喂奶露着大乳 | 亚洲精品久久久久久久久久久久久久 | 亚洲一二三四区五区 | 97色偷偷色噜噜狠狠爱网站 | 国内精自视频品线一区 | 亚洲天堂小说 | 色中色成人导航 | 国产精品高清一区二区三区不卡 | 欧美性生交大片免费看 | 白白色2012年最新视频 | 日韩免费在线观看 | 久久婷五月 | 人妻丰满熟妇av无码区app | 欧美成人一区二区三区在线观看 | 女女百合国产免费网站 | 瑜伽裤国产一区二区三区 | 男女啪啪无遮挡 | 成人动漫区 | 国产一级二级在线观看 | 性一交一乱一色一免费无遮挡 | 亚洲欧美不卡 | 亚洲高清揄拍自拍午夜婷婷 | 激情五月深爱五月 | 成人精品在线观看视频 | 大胸奶汁乳流奶水出来h | 欧美成人一区免费视频 | 国产成人啪精品视频免费软件 | 三上悠亚久久爱一区 | 久草资源在线视频 | 邻居少妇与水电工啪啪 | 免费人成在线观看网站 | 国产男女在线观看 | 97av.com| www夜插内射视频网站 | 亚洲精品自拍偷拍 | 无码av中文一区二区三区桃花岛 | 国产又粗又猛又爽又黄的 | 久久精品伦理 | 艳妇臀荡乳欲伦交换h在线观看 | 欧美级毛片 | 我不卡av | 欧美成人精品高清视频在线观看 | www.成人网.com |