国产一区二区三区毛片_亚洲乱码AV中文一区二区_亚洲精品无码专区在线播放_日韩欧美一二_咪咪av影院_欧久久av一区二区

wjun7610
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 127 個(gè)
工控威望: 249 點(diǎn)
下載積分: 708 分
在線時(shí)間: 35(小時(shí))
注冊(cè)時(shí)間: 2007-09-16
最后登錄: 2025-05-07
查看wjun7610的 主題 / 回貼
樓主  發(fā)表于: 2008-02-26 13:58
西門(mén)子S7-200系列PLC PPI協(xié)議及PPI動(dòng)態(tài)鏈接庫(kù)DLL(需VB、Delphi DEMO程序請(qǐng)回貼并留下Emial地址)


一、西門(mén)子S7-200系列PLC PPI協(xié)議動(dòng)態(tài)鏈接庫(kù)DLL(以下簡(jiǎn)稱DLL),是為滿足工業(yè)通信需要,針對(duì)工業(yè)領(lǐng)域要求上位機(jī)對(duì)西門(mén)子S7-200系列

PLC實(shí)時(shí)采集與控制的組態(tài)編程而設(shè)計(jì)。本DLL是采用Delphi語(yǔ)言開(kāi)發(fā)的標(biāo)準(zhǔn)串口通訊庫(kù),具有以下特點(diǎn):

1)、實(shí)時(shí)性、可靠性好,可根據(jù)通信數(shù)據(jù)量自行調(diào)整通信時(shí)間;

2)、適用于多PLC聯(lián)網(wǎng)和上位機(jī)通信,滿足多方面的需要;

3)、函數(shù)接口功能全,操作簡(jiǎn)單;

4)、附加實(shí)用轉(zhuǎn)換與讀取函數(shù),易于快速開(kāi)發(fā)(VC等非RAD開(kāi)發(fā)環(huán)境的開(kāi)發(fā));

5)、支持USB、PC擴(kuò)展卡等擴(kuò)展串口號(hào);

6)、支持多種操作系統(tǒng)win9x/win2000/winXP(標(biāo)注Win32 DLL);

7)、可在多種編程環(huán)境下使用,例如VB、VC、Delphi等開(kāi)發(fā)環(huán)境。

二、PPI協(xié)議簡(jiǎn)介及S7-200CPU內(nèi)存地址范圍介紹

2.1 西門(mén)子PPI通訊協(xié)議

    通過(guò)硬件和軟件偵聽(tīng)的方法,分析PLC內(nèi)部固有的PPI通訊協(xié)議,然后采用上位機(jī)編程,遵循PPI通訊協(xié)議,讀寫(xiě)PLC數(shù)據(jù),實(shí)現(xiàn)人機(jī)操作

任務(wù)。這種通訊方法,與一般的自由通訊協(xié)議相比,省略了PLC的通訊程序編寫(xiě),只需編寫(xiě)上位機(jī)的通訊程序資源S7-226的編程口物理層為

RS-485結(jié)構(gòu),SIEMENS提供MicroWin軟件,采用的是PPI(Point to Point)協(xié)議,可以用來(lái)傳輸、調(diào)試PLC程序。在現(xiàn)場(chǎng)應(yīng)用中,當(dāng)需要PLC

與上位機(jī)通訊時(shí),較多的使用自定義協(xié)議與上位機(jī)通訊。在這種通訊方式中,需要編程者首先定義自己的自由通訊格式,在PLC中編寫(xiě)代碼,

利用中斷方式控制通訊端口的數(shù)據(jù)收發(fā)。采用這種方式,PLC編程調(diào)試較為煩瑣,占用PLC的軟件中斷和代碼資源,而且當(dāng)PLC的通訊口定義

為自由通訊口時(shí),PLC的編程軟件無(wú)法對(duì)PLC進(jìn)行監(jiān)控,給PLC程序調(diào)試帶來(lái)不便。

    SIEMENS S7-200PLC的編程通訊接口,內(nèi)部固化的通訊協(xié)議為PPI協(xié)議,如果上位機(jī)遵循PPI協(xié)議來(lái)讀寫(xiě)PLC,就可以省略編寫(xiě)PLC的通訊

代碼。如何獲得PPI協(xié)議?可以在PLC的編程軟件讀寫(xiě)PLC數(shù)據(jù)時(shí),利用第三個(gè)串口偵聽(tīng)PLC的通訊數(shù)據(jù),或者利用軟件方法,截取已經(jīng)打開(kāi)

且正在通訊的端口的數(shù)據(jù),然后歸納總結(jié),解析出PPI協(xié)議的數(shù)據(jù)讀寫(xiě)報(bào)文。這樣,上位機(jī)遵循PPI協(xié)議,就可以便利的讀寫(xiě)PLC內(nèi)部的數(shù)據(jù),

實(shí)現(xiàn)上位機(jī)的人機(jī)操作功能。

西門(mén)子的PPI(Point to Point)通訊協(xié)議采用主從式的通訊方式,一次讀寫(xiě)操作的步驟包括:首先上位機(jī)發(fā)出讀寫(xiě)命令,PLC作出接收正確

的響應(yīng),上位機(jī)接到此響應(yīng)則發(fā)出確認(rèn)申請(qǐng)命令,PLC則完成正確的讀寫(xiě)響應(yīng),回應(yīng)給上位機(jī)數(shù)據(jù)。這樣收發(fā)兩次數(shù)據(jù),完成一次數(shù)據(jù)的讀寫(xiě)

(從這里可以看出PPI協(xié)議的通訊效率并不好,一次讀寫(xiě)需收發(fā)兩次數(shù)據(jù)^_^)。

其通訊數(shù)據(jù)報(bào)文格式大致有以下幾類:

1)、讀寫(xiě)申請(qǐng)的數(shù)據(jù)格式如下:

SD LE LER SD DA SA FC DASP SSAP DU FCS ED

SD:(Start Delimiter)開(kāi)始定界符(68H)

LE:(Length)報(bào)文數(shù)據(jù)長(zhǎng)度

LER:(Repeated Length)重復(fù)數(shù)據(jù)長(zhǎng)度

SD: (Start Delimiter)開(kāi)始定界符(68H)

SA:(Source Address)源地址,指該地址;

DA:(Destination Address)目標(biāo)地址,指該地址;

FC:(Function Code)功能碼

DSAP:(Destination Service Access Point)目的服務(wù)存取點(diǎn)

SSAP:(Source Service Access Point)源服務(wù)存取點(diǎn)

DU:(Data Unit)數(shù)據(jù)單元

FCS:(Frame Check Sequence)校驗(yàn)碼

ED:(End Delimiter)結(jié)束分界符(16H)

報(bào)文數(shù)據(jù)長(zhǎng)度和重復(fù)數(shù)據(jù)長(zhǎng)度為自DA至DU的數(shù)據(jù)長(zhǎng)度,校驗(yàn)碼為DA至DU數(shù)據(jù)的和校驗(yàn),只取其中的末字節(jié)值。

讀寫(xiě)一般數(shù)據(jù)的功能碼為 6CH,讀CT數(shù)據(jù)、置位、復(fù)位、強(qiáng)制等的功能碼為 7CH,確認(rèn)命令功能碼5CH。

2)、PLC接收到讀寫(xiě)命令,校驗(yàn)后正確,返回的數(shù)據(jù)格式為 E5H

3)、確認(rèn)讀寫(xiě)命令的數(shù)據(jù)格式為:

SD SA DA FC FCS ED 

其中SD為起始符,為10H

SA為數(shù)據(jù)源地址

DA為目的地址

FC為功能碼,取5CH

FCS為SA+DA+FC的和的末字節(jié)

ED為結(jié)束符,取16H

4)、數(shù)據(jù)類型碼

04:S
05:SM
06:AI
07:AQ
1E: C
81:I
82:Q
83:M
84:V
1F: T

5)、讀寫(xiě)功能數(shù)據(jù)命令實(shí)例

1、給寫(xiě)VW3值1200

68 21 21 68 02 00 6C 32 01 00 00 00 00 00 0E 00 06 05 01 12 0A 10 02 00 02 00 01 84 00 00 18 00 04 00 10 04 B0 50 16

2、讀取IB0的數(shù)據(jù)值

68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 01 00 00 81 00 00 00 64 16

感興趣的朋友給你根據(jù)上述例子用串口精靈測(cè)試一下,當(dāng)發(fā)送命令成功PLC返回E5,你再發(fā)送10 02 00 5C 5E 16,就可以完成一次讀寫(xiě)命令。

(記得接收和發(fā)送采用16進(jìn)制方式 o(∩_∩)o...哈哈)

2.2 S7-200PLC CPU內(nèi)存地址范圍(DLL所能尋址的范圍)

被存取:    類型 CPU 221            CPU 222      CPU 224                  CPU 226

位(字節(jié).位)      V      0.0-2047.7 0.      0-2047.7      0.0-5119.7  V 1.22    0.0-5119.7  V 1.23
                                                                                        0.0-8191.7  V 2.00    0.0-10239.7  V 2.00
                                                                                        0.0-10239.7 XP
                          I      0.0-15.7              0.0-15.7        0.0 -15.7                      0.0-15.7
                          Q    0.0-15.7              0.0-15.7        0.0 -15.7                      0.0-15.7     
                          M    0.0-31.7              0.0-31.7        0.0 -31.7                      0.0-31.7
                          S    0.0-31.7              0.0-31.7        0.0 -31.7                      0.0-31.7
                        SM    0.0-179.7            0.0-299.7      0.0 -549.7                    0.0-549.7

字節(jié)        VB    0 - 2047                0 - 2047      0 - 5119  V 1.22          0 - 5119  V 1.23
                                                                                      0 - 8191  V 2.00          0 - 10239  V 2.00
                                                                                      0 - 10239  XP
                        IB    0 - 15                    0 - 15            0 - 15                              0 - 15
                        QB  0 - 15                    0 - 15            0 - 15                              0 - 15
                        MB  0 - 31                    0 - 31            0 - 31                              0 - 31
                        SB  0 - 31                    0 - 31            0 - 31                              0 - 31
                    SMB  0 - 179                  0 - 299          0 - 549                            0 - 549                 
                 
字          VW  0 - 2046                0 - 2046      0 - 5118  V 1.22            0 - 5118    V 1.23
                                                                                      0 - 8190  V 2.00            0 - 10230  V 2.00
                                                                                      0 - 10230  XP
                          T  0 - 255                    0 - 255        0 - 255                            0 - 255
                          C  0 - 255                    0 - 255        0 - 255                            0 - 255
                      AIW  0 - 30                      0 - 30            0 - 62                              0 - 62
                    AQW  0 - 30                      0 - 30            0 - 62                              0 - 62

雙字      VD  0 - 2044                  0 - 2044        0 - 5116  V 1.22            0 - 5116  V 1.23
                                                                                      0 - 8188  V 2.00            0 - 10236  V 2.00
                                                                                      0 - 10236 XP

說(shuō)明:S7-200PLC的字、雙字地址和字節(jié)地址實(shí)際上是重疊的,下面做個(gè)說(shuō)明如:

VB0  VB1  VB2  VB3  VB4  VB5  VB6  VB7  VB8  VB9  VB10  VB11  VB12  VB13  VB14  VB15

————  ————  ————  ————  ————  ————    ————    ————
  VW0      VW2      VW4      VW6      VW8      VW10        VW12        VW14
—————————  ————————— —————————    ———————————
      VD0                VD4                VD8                    VD12

從上例可以看出PLC中字節(jié)、字與雙字尋址的關(guān)系,當(dāng)然如果你想使用VW1(VB1 VB2)、VD3(VB3 VB4 VB5 VB6)等尋址方式也是可以的,

但為了減少不必要的尋址錯(cuò)誤造成程序的非法執(zhí)行建議:

字尋址時(shí)使用(V、I、Q、M等等)0、2、4、6、8、10 ……,(這從PLC的模擬量輸入/輸出(AIW/AQW)的尋址就可以看出奇數(shù)地址是不允許的)

雙字尋址時(shí)使用(V、I、Q、M等等)0、4、8、12、16、20、24 …………………………,同時(shí)還要注意字節(jié)地址尋址最好也能不重疊;

C、T區(qū)當(dāng)前值讀取時(shí)的地址按實(shí)際地址0~255來(lái)。

三、DLL函數(shù)說(shuō)明

1、打開(kāi)串口

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

參數(shù):nport: 打開(kāi)串口號(hào),取值為1~8,代表COM1~COM8;
     
      BaudRate:波特率,取值為:1200、2400、4800、9600、19200、38400;
   
      DataBits:數(shù)據(jù)位,取值為5、6、7、8;

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

      User:DLL授權(quán)用戶名;

返回值:長(zhǎng)整型,操作成功返回“1”或“2”;1表示注冊(cè)授權(quán)用戶,2表示用戶未注冊(cè);

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

注:本DLL用戶不注冊(cè)除了下面說(shuō)明的功能限制外沒(méi)有其他限制,未注冊(cè)用戶請(qǐng)使用特定用戶名:wangjun。

    注冊(cè)用戶功能上無(wú)任何限制,且將得到永久的軟件使用和更新升級(jí)服務(wù);

使用舉例:

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

VB:ComOpen(1,9600,8,1,1,"wangjun") , 打開(kāi)COM1口。

2、關(guān)閉串口

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

參數(shù):nport: 串口號(hào),取值為1~8,代表COM1~COM8;

返回值:長(zhǎng)整型,操作成功返回“1”,否則返回“0”;

使用舉例:

ComClose(1) ,關(guān)閉打開(kāi)的COM1口。


3、PLC內(nèi)部元件讀取功能函數(shù)

注:PLC內(nèi)部元件與數(shù)字的對(duì)應(yīng)關(guān)系(DLL中的所有函數(shù)都遵循此規(guī)定):

0 : I
1 : Q
2 : M
3 : V
4 : S
5 : SM
6 : AI
7 : AQ
8 : C
9 : T 

注:下面的讀寫(xiě)等PLC操作函數(shù)使用舉例都是按VB調(diào)用函數(shù)形式給出。

1)、字節(jié)元件數(shù)據(jù)讀取

Function FcnBread(nport,purpose,source,name,address,Count:longint):Pchar;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值0(代表I)、取值1(代表Q)、取值2(代表M)、取值3(代表V)、取值4(代表S)、取值5(代表SM);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Count:  讀取的字節(jié)個(gè)數(shù),最多讀取128個(gè)但不能超出尋址范圍;

返回值:字符串?dāng)?shù)據(jù),字符串?dāng)?shù)據(jù)的終止符為"@";

使用舉例:

FcnBread(1,0,2,0,2,4),由COM1讀取PPI 2號(hào)站 數(shù)據(jù)到0號(hào)站(計(jì)算機(jī))IB2~I(xiàn)B5四個(gè)字節(jié)的值,如返回值為“01FF6403@”,

則表示IB2=01, IB3=FF,IB4=64,IB5=03;

                            ---------- --
字符串返回序列:            | 01 | FF | 64 | 03| @ |
                            ---------- --

返回值為16進(jìn)制字符串,將返回值如上2位一組,可轉(zhuǎn)換成“0~255”間的整數(shù)值。

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

注:沒(méi)有注冊(cè)用戶不能讀取S、SM區(qū)字節(jié)值,可尋址范圍IB0~IB1、QB0~QB1、MB0~MB1、VB0~VB1;


2)、字元件數(shù)據(jù)讀取

Function FcnWread(nport,purpose,source,name,address,Count:longint):Pchar;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值3(代表V)、取值6(代表AI)、取值8(代表C)、取值9(代表T);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Count:  讀取的字個(gè)數(shù),最多讀取64個(gè)但不能超出尋址范圍,T區(qū)讀取時(shí)不超過(guò)44個(gè);

返回值:字符串?dāng)?shù)據(jù),字符串?dāng)?shù)據(jù)的終止符為"@";

使用舉例:

FcnWread(1,0,2,3,0,4),由COM1讀取PPI 2號(hào)站 數(shù)據(jù)到0號(hào)站(計(jì)算機(jī))VW0~VW6四個(gè)字的值,如返回值為“006403E804B00010@”,

則表示VW0=0064, VW2=03E8,VW4=04B0,VW6=0010;

                            -----------------
字符串返回序列:            | 0064 | 03E8 | 04B0 | 0010 | @ |
                            -----------------

返回值為16進(jìn)制字符串,將返回值如上4位一組,可轉(zhuǎn)換成無(wú)符號(hào)“0~65535”或有符號(hào)“-32768 ~ +32767”間的整數(shù)值。

如果你從PLC中讀取的是有符號(hào)的數(shù)時(shí),這個(gè)值小于等于32767,就得到你讀的實(shí)際值,例如讀到一個(gè)值“5EEE”轉(zhuǎn)換成整數(shù)24302,

則實(shí)際值=+(24302-0)=+24302;如果大于32767,例如我讀到一個(gè)值“8FC0”先轉(zhuǎn)換成整數(shù)36800,那實(shí)際值=-(36800-32768)=-4032。

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

注:沒(méi)有注冊(cè)用戶不能讀取C、T區(qū)字當(dāng)前值,可尋址范圍VW0~VW8、AIW0~AIW2;

3)、雙字元件數(shù)據(jù)讀取

Function FcnDWread(nport,purpose,source,name,address,Count:longint):Pchar;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值3(代表V);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Count:  讀取的雙字個(gè)數(shù),最多讀取32個(gè)但不能超出尋址范圍;

返回值:字符串?dāng)?shù)據(jù),字符串?dāng)?shù)據(jù)的終止符為"@";

使用舉例:

FcnDWread(1,0,2,3,0,2),由COM1讀取PPI 2號(hào)站 數(shù)據(jù)到0號(hào)站(計(jì)算機(jī))VW0~VW6四個(gè)字的值,如返回值為“006403E804B00010@”,

則表示VD0=006403E8,VD4=04B00010;

                            --------------
字符串返回序列:            | 006403E8 | 04B00010 | @ |
                            --------------

返回值為16進(jìn)制字符串,將返回值如上8位一組,可轉(zhuǎn)換成無(wú)符號(hào)“0~4294967295”或有符號(hào)“-2147483648 ~ +2147483647”間的整數(shù)值。

如果你從PLC中讀取的是有符號(hào)的數(shù)時(shí),這個(gè)值小于等于2147483647,就得到你讀的實(shí)際值,例如讀到一個(gè)值“5EEE8000”轉(zhuǎn)換成整數(shù)

為1592688640,則實(shí)際值=+(1592688640-0)=+1592688640;如果大于2147483647,例如我讀到一個(gè)值“8FEFC000”先轉(zhuǎn)換成整數(shù)2414854144,

那實(shí)際值=-(2414854144-2147483648)=-267370496。

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

注:沒(méi)有注冊(cè)用戶可尋址范圍VD0~VD4;

4)、位元件的狀態(tài)讀取

Function FcnBitread(nport,purpose,source,name,address,Bit:longint):longint;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值0(代表I)、取值1(代表Q)、取值2(代表M)、取值3(代表V)、取值4(代表S)、取值5(代表SM);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Bit:    讀取的字節(jié)元件的位地址如I1.0指I1字節(jié)元件的第0位;

返回值: 長(zhǎng)整數(shù),返回為0表示狀態(tài)為OFF,返回為1表示狀態(tài)為ON,返回為-1表示讀取錯(cuò)誤或不能讀取;

使用舉例:

FcnBitread(1,0,2,0,1,7),由COM1讀取PPI 2號(hào)站 數(shù)據(jù)到0號(hào)站(計(jì)算機(jī))I1.7,如返回值為1,則表示I1.7=1;

注:沒(méi)有注冊(cè)用戶不可以讀取S、SM區(qū)狀態(tài),可尋址范圍I0.0~I1.7、Q0.0~Q1.7、M0.0~M1.7、V0.0~V1.7;

4、PLC內(nèi)部元件寫(xiě)數(shù)據(jù)功能函數(shù)

1)、字節(jié)元件數(shù)據(jù)寫(xiě)入

Function FcnBwrite(nport,purpose,source,name,address,Count:longint;Sendstr:Pchar):longint;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值0(代表I)、取值1(代表Q)、取值2(代表M)、取值3(代表V)、取值4(代表S);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Count:  寫(xiě)入字節(jié)個(gè)數(shù),這里1字節(jié)應(yīng)寫(xiě)入2位16進(jìn)制字符串;

Sendstr: 給字節(jié)寫(xiě)入的值,該值為2個(gè)一組的16進(jìn)制字符串組其取值為00~FF(整數(shù)值為0~255);

返回值: 長(zhǎng)整數(shù),操作成功返回1,不能寫(xiě)入或操作錯(cuò)誤返回0;

當(dāng)要寫(xiě)入多個(gè)字節(jié)值時(shí)依次排列即可。如給MB0與MB1寫(xiě)值100和80,先將100轉(zhuǎn)成16進(jìn)制字符串64、80

轉(zhuǎn)成16進(jìn)制字符串50,則sendstr=6450;一次最多寫(xiě)128個(gè)字節(jié)即字符串長(zhǎng)應(yīng)小于等于256;

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

實(shí)際字符串與位地址的數(shù)值應(yīng)如下表:(將上例的字節(jié)MB0'、MB1'轉(zhuǎn)換為位地址M0.0~M1.7由下表對(duì)應(yīng),此對(duì)應(yīng)也可以應(yīng)用于字節(jié)讀取)

    M:      0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.0 1.7 1.6 1.5 1.4 1.3 1.2 1.1 1.0
            ---------------------------------
位地址:    | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
            ---------------------------------
各位賦值:  | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
            ---------------------------------
16進(jìn)制串:  |      6      |      4      |      5      |      0      |
            ---------------------------------

使用舉例:

FcnBwrite(1,0,2,2,0,2,"6450")由COM1 0號(hào)站(計(jì)算機(jī)) 寫(xiě)入PPI 2號(hào)站 數(shù)據(jù)MB0=64(10進(jìn)制100)、MB1=50(10進(jìn)制80),操作成功返回1;

注:沒(méi)有注冊(cè)用戶不能寫(xiě)S區(qū)字節(jié)值,可尋址范圍IB0、QB0、MB0、VB0;

2)、字元件數(shù)據(jù)寫(xiě)入

Function FcnWwrite(nport,purpose,source,name,address,Count:longint;Sendstr:Pchar):longint;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值3(代表V)、取值7(代表AQ);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Count:  寫(xiě)入字個(gè)數(shù),這里1字應(yīng)寫(xiě)入4位16進(jìn)制字符串;

Sendstr: 給字節(jié)寫(xiě)入的值,該值為4個(gè)一組的16進(jìn)制字符串組其取值為0000~FFFF(整數(shù)值為0~65535);

返回值: 長(zhǎng)整數(shù),操作成功返回1,不能寫(xiě)入或操作錯(cuò)誤返回0;

當(dāng)要寫(xiě)入多個(gè)字節(jié)值時(shí)依次排列即可。如給VW2與VW4寫(xiě)值100和1000,先將100轉(zhuǎn)成16進(jìn)制字符串0064、1000轉(zhuǎn)成16進(jìn)制字符串03E8,

則sendstr=006403E8;一次最多寫(xiě)64個(gè)字即字符串長(zhǎng)應(yīng)小于等于256;

                            ---------- ----  ~  ---------
寫(xiě)字符串序列如:            | 0064 | 03E8 | 0010 | 6004 |  ~    | 0008 | 0400 |
                            ---------- ----  ~  ---------
使用舉例:


FcnWwrite(1,0,2,3,2,2,"006403E8")由COM1 0號(hào)站(計(jì)算機(jī)) 寫(xiě)入PPI 2號(hào)站 數(shù)據(jù)VW2=0064(10進(jìn)制100)、VW4=03E8(10進(jìn)制1000),

操作成功返回1;

注:沒(méi)有注冊(cè)用戶不能寫(xiě)AQ區(qū)字值,可尋址范圍VW0;

3)、雙字元件數(shù)據(jù)寫(xiě)入

Function FcnDWwrite(nport,purpose,source,name,address,Count:longint;Sendstr:Pchar):longint;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值3(代表V);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Count:  寫(xiě)入雙字個(gè)數(shù),這里1雙字應(yīng)寫(xiě)入8位16進(jìn)制字符串;

Sendstr: 給字節(jié)寫(xiě)入的值,該值為8個(gè)一組的16進(jìn)制字符串組其取值為00000000~FFFFFFFF(整數(shù)值為0~4294967295);

返回值: 長(zhǎng)整數(shù),操作成功返回1,不能寫(xiě)入或操作錯(cuò)誤返回0;

當(dāng)要寫(xiě)入多個(gè)字節(jié)值時(shí)依次排列即可。如給VD0與VD4寫(xiě)值10000和8000,先將10000轉(zhuǎn)成16進(jìn)制字符串00002710、8000轉(zhuǎn)成16進(jìn)制字符串

為00001F40,則sendstr=0000271000001F40;一次最多寫(xiě)32個(gè)雙字即字符串長(zhǎng)應(yīng)小于等于256;

                            ---------- -  ~  ------------
寫(xiě)字符串序列如:            | 00000064 | 00002710 |  ~  | 10000008 | 04008010 |
                            ---------- -  ~  ------------

使用舉例:


FcnDWwrite(1,0,2,3,0,2,"0000271000001F40")由COM1 0號(hào)站(計(jì)算機(jī)) 寫(xiě)入PPI 2號(hào)站 數(shù)據(jù)VD0=00002710(10進(jìn)制10000)、

VD4=00001F40(10進(jìn)制8000),操作成功返回1;

注:沒(méi)有注冊(cè)用戶可尋址范圍VD0;

4)、位元件的置位

Function FcnSet(nport,purpose,source,name,address,Bit:longint):longint;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值2(代表M)、取值3(代表V)、取值4(代表S);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Bit:    置位的字節(jié)元件的位地址如S1.0指S1字節(jié)元件的第0位;

返回值: 長(zhǎng)整數(shù),操作成功返回1,不能置位或操作錯(cuò)誤返回0;

使用舉例:

FcnSet(1,0,2,2,2,6),由COM1 0號(hào)站(計(jì)算機(jī)) 置位PPI 2號(hào)站 M2.6,如返回值為1,則表示置位成功;

注:沒(méi)有注冊(cè)用戶可尋址范圍M0.0~M0.7、V0.0~V0.7、S0.0~S0.7;

5)、位元件的復(fù)位

Function FcnReset(nport,purpose,source,name,address,Bit:longint):longint;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值2(代表M)、取值3(代表V)、取值4(代表S);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Bit:    復(fù)位的字節(jié)元件的位地址如M1.0指M1字節(jié)元件的第0位;

返回值: 長(zhǎng)整數(shù),操作成功返回1,不能復(fù)位或操作錯(cuò)誤返回0;

使用舉例:

FcnReset(1,0,2,3,2,6),由COM1 0號(hào)站(計(jì)算機(jī)) 復(fù)位PPI 2號(hào)站 V2.6,如返回值為1,則表示復(fù)位成功;

注:沒(méi)有注冊(cè)用戶可尋址范圍M0.0~M0.7、V0.0~V0.7、S0.0~S0.7;


5、I/Q元件的強(qiáng)制功能 (未注冊(cè)用戶不可使用)

注:關(guān)于強(qiáng)制功能,如果你再操作時(shí)給一個(gè)元件強(qiáng)制了值,PLC程序的正常功能將不能改變被強(qiáng)值元件的狀態(tài),所以在不需要對(duì)

某個(gè)元件進(jìn)行強(qiáng)制時(shí)請(qǐng)使用取消強(qiáng)制函數(shù),來(lái)取消對(duì)該位的強(qiáng)制狀態(tài),但取消強(qiáng)制狀態(tài)并不改變?cè)耐ǘ螤顟B(tài)。


1)、位元件的強(qiáng)制置位

Function FcnEset(nport,purpose,source,name,address,Bit:longint):longint;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值0(代表I)、取值1(代表Q);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Bit:    置位的字節(jié)元件的位地址如I1.0指I1字節(jié)元件的第0位;

返回值: 長(zhǎng)整數(shù),操作成功返回1,不能置位或操作錯(cuò)誤返回0;

使用舉例:

FcnEset(1,0,2,0,0,6),由COM1 0號(hào)站(計(jì)算機(jī)) 置位PPI 2號(hào)站 I0.6,如返回值為1,則表示置位成功;

注:沒(méi)有注冊(cè)用戶不可以使用;

2)、位元件的強(qiáng)制復(fù)位

Function FcnEreset(nport,purpose,source,name,address,Bit:longint):longint;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值0(代表I)、取值1(代表Q);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Bit:    復(fù)位的字節(jié)元件的位地址如Q1.0指Q1字節(jié)元件的第0位;

返回值: 長(zhǎng)整數(shù),操作成功返回1,不能復(fù)位或操作錯(cuò)誤返回0;

使用舉例:

FcnEreset(1,0,2,1,2,6),由COM1 0號(hào)站(計(jì)算機(jī)) 復(fù)位PPI 2號(hào)站 Q2.6,如返回值為1,則表示復(fù)位成功;

注:沒(méi)有注冊(cè)用戶不可以使用;



3)、位元件取消強(qiáng)制

Function FcnECancel(nport,purpose,source,name,address,Bit:longint):longint;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

name:    取值0(代表I)、取值1(代表Q);

address: 元件地址,取值為請(qǐng)參照 2.2 S7-200PLC CPU內(nèi)存地址范圍;

Bit:    取消強(qiáng)制的字節(jié)元件的位地址如Q1.0指Q1字節(jié)元件的第0位;

返回值: 長(zhǎng)整數(shù),操作成功返回1,不能復(fù)位或操作錯(cuò)誤返回0;

使用舉例:

FcnECancel(1,0,2,1,2,6),由COM1 0號(hào)站(計(jì)算機(jī)) 取消PPI 2號(hào)站 Q2.6的強(qiáng)制轉(zhuǎn)狀態(tài),如返回值為1,則表示取消強(qiáng)制成功;

注:沒(méi)有注冊(cè)用戶不可以使用;

6、PLC運(yùn)行函數(shù)(該函數(shù)可在Run、Stop功能選項(xiàng)開(kāi)關(guān)打在Run上且PLC處于停止模式時(shí)可將PLC轉(zhuǎn)換到運(yùn)行模式)

Function FcnRun(nport,purpose,source:longint):Longint;stdcall;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

返回值: 長(zhǎng)整數(shù),操作成功返回1,不能復(fù)位或操作錯(cuò)誤返回0;

使用舉例:

FcnRun(1,0,2),由COM1 0號(hào)站(計(jì)算機(jī)) 使PPI 2號(hào)進(jìn)入運(yùn)行模式,如返回值為1,則表示運(yùn)行成功;

注:沒(méi)有注冊(cè)用戶不可以使用;

7、PLC停止函數(shù)(該函數(shù)可在Run、Stop功能選項(xiàng)開(kāi)關(guān)打在Run上且PLC處于運(yùn)行模式時(shí)可將PLC轉(zhuǎn)換到停止模式)

Function FcnStop(nport,purpose,source:longint):Longint;stdcall;

參數(shù):

nport:  串口號(hào),取值為1~8,代表COM1~COM8;

purpose:目標(biāo)地址,取值0~126;

source: 源地址,取值0~126;(這里是PLC的相應(yīng)端口的PPI站地址,PLC的地址實(shí)際是從2開(kāi)始的)

返回值: 長(zhǎng)整數(shù),操作成功返回1,不能復(fù)位或操作錯(cuò)誤返回0;

使用舉例:

FcnStop(1,0,2),由COM1 0號(hào)站(計(jì)算機(jī)) 使PPI 2號(hào)進(jìn)入停止模式,如返回值為1,則表示停止成功;

注:沒(méi)有注冊(cè)用戶不可以使用;


四、DLL附加函數(shù)說(shuō)明 (本段函數(shù)對(duì)未注冊(cè)用戶沒(méi)有限制,完全可以使用。)

1、串口打開(kāi)狀態(tài)的讀取

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

參數(shù):

noprt: 串口號(hào),取值為1~8,代表COM1~COM8;

返回值:長(zhǎng)整型,串口成功打開(kāi)返回“1”,否則返回“0”;

2、整數(shù)轉(zhuǎn)換成16進(jìn)制字符串 (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))

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

參數(shù):

Cint: 待轉(zhuǎn)換整數(shù),取值為(0~65535);

Digits: 轉(zhuǎn)換的字符串位數(shù),指定位數(shù)小于實(shí)際位數(shù)時(shí)按實(shí)際輸出;

在參數(shù)錯(cuò)誤等非法的情況下返回“Error@”

使用舉例:

CIntToHex(200,2),則返回字符串“C8@”;
CIntToHex(200,4),則返回字符串“00C8@”;
CIntToHex(200,8),則返回字符串“000000C8@”;
CIntToHex(4500,4),則返回字符串“1194@”;
CIntToHex(4500,3),則返回字符串“1194@”,因?yàn)椤?94”不足以表示4500這個(gè)數(shù)所以按實(shí)際輸出字符串“1194@”;

"@"為字符串?dāng)?shù)據(jù)的終止符。

3、16進(jìn)制字符串轉(zhuǎn)換成整數(shù) (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))

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

參數(shù):

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

使用舉例:

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

注:在參數(shù)不正確等出錯(cuò)情況下返回值為“-1”。

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

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

參數(shù):

CHex: 待轉(zhuǎn)換整數(shù),取值為0~65535(0000~FFFF);

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

使用舉例:

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

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

注:在參數(shù)不正確等出錯(cuò)情況下返回值為“-1”。

5、返回字符串Text左邊的Count個(gè)字符  (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))

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

參數(shù):

Text: 字符串原型;

Count: 指定返回左側(cè)字符串個(gè)數(shù);

在參數(shù)錯(cuò)誤等非法的情況下返回“Error@”

使用舉例:

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

"@"為字符串?dāng)?shù)據(jù)的終止符。

6、返回字符串Text右邊的Count個(gè)字符  (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))

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

參數(shù):

Text: 字符串原型;

Count: 指定返回右側(cè)字符串個(gè)數(shù)

在參數(shù)錯(cuò)誤等非法的情況下返回“Error@”

使用舉例:

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

"@"為字符串?dāng)?shù)據(jù)的終止符。

7、返回字符串Text從Start開(kāi)始的Count個(gè)字符 (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))

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

參數(shù):

Text: 字符串原型;

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

Count: 指定返回字符串個(gè)數(shù);

在參數(shù)錯(cuò)誤等非法的情況下返回“Error@”

使用舉例:

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

"@"為字符串?dāng)?shù)據(jù)的終止符。

8、字符串Cstr開(kāi)始于字符串Ostr的位置 (為VC等非RAD開(kāi)發(fā)環(huán)境所增設(shè))

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

參數(shù):

Ostr:  字符串原型;

Cstr:  查詢的字符串;

Dcint: 設(shè)定查詢字符串的起始位置,取值>=1,即最少?gòu)脑醋址牡谝粋(gè)字符開(kāi)始查詢;

返回值:長(zhǎng)整型;

使用舉例:

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

注:在參數(shù)不正確等出錯(cuò)情況下返回值為“0”。

9、PC喇叭的報(bào)警過(guò)程函數(shù);

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

參數(shù):SoundHz:長(zhǎng)整型;

返回值:長(zhǎng)整型,操作成功返回“1”,否則返回“0”。

使用舉例:

MyBeep(2000); 按2000的頻率發(fā)出報(bào)警聲。

DLL中關(guān)于傳出字符串值的函數(shù)都以"@"為字符串函數(shù)值終止符,這是對(duì)多開(kāi)發(fā)環(huán)境應(yīng)用時(shí)方便用戶正確讀取返回字符串?dāng)?shù)據(jù)而設(shè)。

五、詳細(xì)的DLL使用請(qǐng)參DEMO程序或DLL手冊(cè)(DLL手冊(cè)提供VB、VC、Delphi的調(diào)用說(shuō)明),相關(guān)DEMO程序和說(shuō)明所使用的開(kāi)發(fā)環(huán)境

VB指的是VB6.0,Delphi指的是Delphi6.0/Delphi7.0,VC指的是VC6.0。如果使用了高版本開(kāi)發(fā)環(huán)境請(qǐng)根據(jù)開(kāi)發(fā)軟件更新后所兼容的聲明方式進(jìn)行聲明調(diào)用。

作者:  wjun7610
QQ:    157610979
淘寶店:http://shop34821629.taobao.com
a___yue
級(jí)別: *
精華主題: * 篇
發(fā)帖數(shù)量: * 個(gè)
工控威望: * 點(diǎn)
下載積分: * 分
在線時(shí)間: (小時(shí))
注冊(cè)時(shí)間: *
最后登錄: *
查看a___yue的 主題 / 回貼
1樓  發(fā)表于: 2008-11-25 13:08
我上了您的淘寶店,這個(gè)dll文件是要購(gòu)買(mǎi)?

主站蜘蛛池模板: 午夜毛片视频_美女裸身裸乳视频网站_av成人永久免费看片本色_第一福利网站_xxxav在线_免费看男人操女人_国产精品麻豆99久久久久久_亚洲国产视 | 久久久久久久久久久久久国产精品_日韩国产三区_色日本视频_欧美日韩亚洲不卡_最新国模无码国产在线视频_亚洲人成网站18禁止无码_亚洲激情免费视频_久久精品呦女 四虎免费观看_日韩在线91_国产观看99_91婷婷射_亚洲精选中文字幕_色yeye高清在线视频_亚洲日韩成人无码不卡_一区二区三区日韩视频 | 91lu在线观看_欧美一级在线播放_国产99爱在线视频免费观看_中出しハイビジョン黑人_久久精品极品_亚洲黄色片网站_www.av蜜桃_免费一级淫片日本高清视频一 | 美女91_一本大道久久a久久精品综合_青草久操_亚洲伦理99热久久_狠狠色噜噜狠狠狠888米奇_久久美女色视频_777影音_狠狠色综合7777久夜色撩人 | 日韩在线视频播放_国产九色_国产一精品一AV一免费爽爽_亚洲蜜臀av国产aⅴ综合小说_h在线播放_天天操精品视频_91精品精品_免费观看国产精品 | 玖玖视频精品_国产丝袜无码一区二区视频_黄色avav_av免费国产_麻豆果传媒成人A片免费看_国产一区二区三区精品av_性欧美videofree高清69_成视频年人黄网站视频福利 | 被按摩师玩弄到潮喷在线播放_免费AV无码不卡在线观看_呦一呦二在线精品视频_久色免费_久久女性裸体无遮挡啪啪_国产一级一区_黄色片一级免费_深夜艹逼逼 | 欧洲精品在线一区_久久久久99精品成人片_久久久噜噜噜久噜久久_天天看天天操_男女作爱全部免费观爱_国产一区二区三区免费看_女的被弄到高潮娇喘喷水视频_国产中文字幕三区 | 国产精品影音_国产一级做a爰片在线看免费_老头把我添高潮了A片_午夜神器成在线人成在线人_亚洲精品中文字幕日本久久久_天天操天天谢_九色视频人porny_91久久久久久久国产欧美日韩- | 日本男女啪啪_欧美国产日韩久久_亚洲在线视频观看_亚洲AV乱码专区国产乱码_国产一级不卡毛片_怡红院av_国产乱子伦精品免费无码专区_亚洲AV无码国产一区二区三区 | 国产A∨国片精品一区二区_精品人成视频免费国产_xxxxfree少妇过瘾_午夜亚洲av日韩av无码大全_色依依av在线_亚洲精品一区二区三区99_1717精品视频在线观看_国内一区二区三区在线视频 | 日韩高清网站_69免费视频_亚洲成AV人片乱码色午夜_欧美成人伊人_日本三级在线播放线观看视频_亚洲男GAY视频_超碰午夜_国产手机在线无码播放视频 | 好男人网站www久久久_久久国产美女_国产性xxx_国产网站一区_69福利网_四虎在线网站_日韩综合一区_av高清在线看 | A片无码一区二区三区在线草莓_ww国产_日韩一区二区三区在线视频_人妖天堂狠狠ts人妖天堂狠狠_国产一性一交一伦一A片_黄色一级片在线观看_黄色一级片视频_日本丰满护士bbw | 中国久久久_动漫AV网站免费观看_av大西瓜_久草久视频_国产精品男同志movies_精品国产免费一区二区三区五区_性猛交xxxx乱大交孕妇免费看_wwwxxx国产 | 在线观看亚洲AV每日更新无码_亚洲成人黄色影院_一级片视频免费在线观看_鲁大师成人一区二区三区_天天久久综合_日日噜噜夜夜狠狠久久无码区_美女下部隐私(不遮挡)_精品国产SM捆绑最大网免费站 | 国产综合在线视频_成人在线观看一区_日韩在线视频免费观看_97久久免费视频_狠狠色狠狠干_日韩激情网_爆操美女网站_国产精品婷婷久久久久 | 中国老熟妇XXXXX_av日韩免费在线观看_91精品国产自产91精品_国产一级性生活_无码午夜人妻一区二区不卡视频_97超爽成人免费视频在线播放_中文字幕在线观看视频一区_国产成人综合av | 日韩毛片免费无码无毒视频观看_久久在线视频精品_欧美成a人片_任我爽在线视频_亚洲色成人网一二三区_在线观看免费观看电视_青草久草_亚洲AV无码国产剧情 | 国产私人影院_8090成人午夜精品无码_久草网av_99产精品成人啪免费网站_噜啊噜在线视频_国产精品视频福利_九九视频精品在线观看_91视频免费进入 | 国产一二三四在线_18禁超污无遮挡无码免费游戏_精品美女久久久_久久九九99视频_成人av中文字幕_日韩一区二区福利_亚洲.国产.中文慕字在线_天堂中文资源库官网 | 中文字幕二三区不卡_国产午夜人做人免费视频_午夜男女爽爽影院a片免费_日本爽快片视频_亚洲美日韩_狠狠躁夜夜躁AV网站中文字幕_夜夜精品无码一区二区三区_在线国产小视频 | 99无码熟妇丰满人妻啪啪_色综合天天综合网无码在_啪啪免费网_成人无码WWW免费视频苹果版_免费一级特黄特色的毛片_天堂av网2019_国产精品久久久久久久99_一区二区三区免费在线播放 | 国产成人精品午夜在线播放_99精品啪在线观看国产老湿机_亚洲天堂亚洲天堂_无码国产精品一区二区AV_亚洲国产人成自久久国产_国产成人尤物在线视频_可以免费观看的一级毛片_欧美成天堂网地址 | 亚洲欧美字幕_香蕉视频你懂的_成人免费看片a_花样男子版韩剧免费观看_久久密av_亚洲最大成人综合网720P_欧美在线网址_乱精品一区字幕二区 | 亚洲AV无码成人网站手机观看_中文字幕不卡乱偷在线观看_综合色站导航_亚洲一级图片_青天衙门第一部免费观看_天天搞夜夜骑_在线视频夫妻内射_国产黄色av免费看 | 日韩美a一级毛片国产_91视频官网_JAPAN少妇洗澡VIDEOS_黄色一级视频在线观看_天天干天天操天天搞_亚洲成a人蜜臀av在线播放_777奇米888色狠狠俺也去_99久久精品毛片免费播放高清 | 无遮挡粉嫩小泬久久久久久久_www.超碰97_色插图午夜影院_深夜视频在线观看免费_国产日本在线观看_欧美xxxx69hd_免费a级黄毛片_国产精品综合AV一区二区 | 午夜视频免费看_7788私人影院_7777精品久久久大香线蕉_曰曰摸夜夜添夜夜添高潮出水_伊人狠狠操_青青免费视频在线_色婷婷欧美在线播放内射_少妇性饥渴无码A区免费 | www.拔插_亚洲熟女综合一区二区三区_人人狠狠综合久久88成人_银魂在线观看_国产精品成人黄片_91久草视频_99久久精品国产毛片_h高潮娇喘抽搐A片国产麻豆 | 久久理论片_性色99_麻豆精品国产91久久久久久_久久伊人青青草_91短视频在线观看免费_天堂网WWW天堂在线_草比网站_www.中文字幕 | 美女总裁的贴身保镖短剧_在线日韩在线_1区2区在线_永久免费高清av_seseavlu视频在线_另类国产_国产一区美女视频_老司机精品福利视频 | 欧洲免费在线观看视频_日韩欧美亚洲中文乱码_免费看日本zzzwww色_欧美性做爰毛片_日韩一级二级三级_一区二区三区欧美在线观看_国产精品亚洲无码在线_99爱这里只有精品 | 狠狠狠狠狠狠狠综合_日韩综合精品_好吊色欧美一区二区三区视频_青青草www_欧美精品久久久久久久免费软件_红杏成av人影院在线观看_AV亚洲中文字幕精品无码_久久精品6 | xxxx18hd护士hd护士_国产精品露脸国语对白99_国产免费av片在线观看_乱妇乱女熟妇熟女网站_国产精品自拍亚洲_aaa亚洲精品_精品国产乱码一区二区三_色拍拍视频 | 明星angelababy造梦视频_欧美影音_91婷婷综合一区二区三区久久_亚洲AV日韩AV高潮潮喷无码_俄罗斯VIDEODESXO极品_影视一区_国产免费又色又爽又黄软件_狠狠躁天天躁无码中文字幕图 | 巨爆乳寡妇中文在线观看_亚洲精品资源在线观看_午夜剧场协和影视_日韩欧美在线观看视频一区二区_国产人妖ts重口系列网站观看_精品夜夜澡人妻无码AV_四虎国产精品亚洲一区久久特色_久久精品国产影院 | 丁香五月亚洲综合在线国内自拍_国产精品色一区二区三区_av网在线看_少妇高潮太爽了在线观看免费_美女裸浴偷拍视频引爆副本_国产一区视频在线观看免费_后λ式动态后λ式动态图av_av免费在线免费观看 | 国产欧美亚洲一级激情在线观看_亚洲情视频_国产性猛交_国产又色又刺激高潮免费视频_在线亚洲天堂_久久精品人人做人人爽97_国产精品爽爽爽爽爽爽免费观看_中文字幕在线视频免费 | 肉体裸交137日本大胆摄影_91黄色毛片_国产成人一区二区三区在线_欧美成人另类视频_中文字幕免费看_欧美精品成人影院_久久16_成人国产精品免费观看 | 亚洲成AⅤ人影院在线欢看_亚洲国产成人精品无码区宅男?_97国产最新_在线视频97_无码精品国产VA在线观看DVD_青青视频网_一区二区日本视频_国产精品久久久一区 |