成人精品一区二区久久久 I 国产美女永久无遮挡 I 中文字幕+乱码+中文字幕明步 I 国产在视频一区二区三区吞精 I 日韩精品小视频 I 成人性生交大片免费4 I 免费aaa级毛片在线视频 I 一级片毛片 I 大型成人社区 I 国模在线播放 I 欧美大荫蒂毛茸茸视频 I 偷偷色噜狠狠狠狠的777米奇 I www.久久亚洲 I 日日搞夜夜操 I 亚洲成色777777女色窝 I 毛片黄色毛片 I 午夜片在线观看 I 国产一区二区三区中文字幕 I 天天干夜夜骑 I 日韩在线视频一区二区三区 I 久久久无码精品亚洲a片0000 I 写真福利片hd在线播放 I 欧美成人一区二免费视频 I 色噜噜狠狠爱综合视频 I 中文字幕无线码免费人妻 I 国产精品久久久久久久久久不蜜臀 I 欧美综合人人做人人爱 I 1024成人网色www I 国产精品视频一二三区 I 亚洲免费美女视频

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


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

PLC實(shí)時(shí)采集與控制的組態(tài)編程而設(shè)計(jì)。本DLL是采用Delphi語言開發(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ù),易于快速開發(fā)(VC等非RAD開發(fā)環(huán)境的開發(fā));

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SD: (Start Delimiter)開始定界符(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é)值。

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

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

3)、確認(rèn)讀寫命令的數(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)、讀寫功能數(shù)據(jù)命令實(shí)例

1、給寫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,就可以完成一次讀寫命令。

(記得接收和發(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

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

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來。

三、DLL函數(shù)說明

1、打開串口

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

參數(shù):nport: 打開串口號(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è)除了下面說明的功能限制外沒有其他限制,未注冊(cè)用戶請(qǐng)使用特定用戶名:wangjun。

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

使用舉例:

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

VB:ComOpen(1,9600,8,1,1,"wangjun") , 打開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)閉打開的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 

注:下面的讀寫等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開始的)

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@”

注:沒有注冊(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開始的)

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í)不超過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)換成無符號(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@”

注:沒有注冊(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開始的)

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)換成無符號(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@”

注:沒有注冊(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開始的)

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;

注:沒有注冊(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)部元件寫數(shù)據(jù)功能函數(shù)

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

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開始的)

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

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

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

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

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

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

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

                            ---------- - ~ - ------
寫字符串序列如:            | 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ī)) 寫入PPI 2號(hào)站 數(shù)據(jù)MB0=64(10進(jìn)制100)、MB1=50(10進(jìn)制80),操作成功返回1;

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

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

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開始的)

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

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

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

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

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

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

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

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


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

操作成功返回1;

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

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

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開始的)

name:    取值3(代表V);

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

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

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

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

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

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

                            ---------- -  ~  ------------
寫字符串序列如:            | 00000064 | 00002710 |  ~  | 10000008 | 04008010 |
                            ---------- -  ~  ------------

使用舉例:


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

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

注:沒有注冊(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開始的)

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,則表示置位成功;

注:沒有注冊(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開始的)

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ù)位成功;

注:沒有注冊(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ù),來取消對(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開始的)

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,則表示置位成功;

注:沒有注冊(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開始的)

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ù)位成功;

注:沒有注冊(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開始的)

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)制成功;

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

6、PLC運(yùn)行函數(shù)(該函數(shù)可在Run、Stop功能選項(xiàng)開關(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開始的)

返回值: 長(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)行成功;

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

7、PLC停止函數(shù)(該函數(shù)可在Run、Stop功能選項(xiàng)開關(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開始的)

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

使用舉例:

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

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


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

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

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

參數(shù):

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

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

2、整數(shù)轉(zhuǎn)換成16進(jìn)制字符串 (為VC等非RAD開發(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開發(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開發(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開發(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開始的Count個(gè)字符 (為VC等非RAD開發(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開始于字符串Ostr的位置 (為VC等非RAD開發(fā)環(huán)境所增設(shè))

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

參數(shù):

Ostr:  字符串原型;

Cstr:  查詢的字符串;

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

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

使用舉例:

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

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

9、PC喇叭的報(bào)警過程函數(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ì)多開發(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)用說明),相關(guān)DEMO程序和說明所使用的開發(fā)環(huán)境

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

作者:  wjun7610
QQ:    157610979
淘寶店:http://shop34821629.taobao.com
johnsonxjq
必攻不守
級(jí)別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 129 個(gè)
工控威望: 333 點(diǎn)
下載積分: 470 分
在線時(shí)間: 70(小時(shí))
注冊(cè)時(shí)間: 2007-08-31
最后登錄: 2025-09-25
查看johnsonxjq的 主題 / 回貼
1樓  發(fā)表于: 2008-08-02 13:41
你好,感謝大俠的無私奉獻(xiàn),可以提供VB源碼例程讓我研究一下嗎?
我的郵箱是:    johnsonxjq@163.com   多謝!

主站蜘蛛池模板: 国产精品igao视频网 | 18禁真人抽搐一进一出在线 | 国产精品激情av久久久青桔 | 在线观看国产亚洲 | 成人网站免费大全日韩国产 | 久久频这里精品99香蕉 | 国产真实乱人偷精品视频 | 欧美最猛黑人xxxx黑人猛叫黄 | 夜夜天天拍拍 | 性色av浪潮av | 人妻人人添人妻人人爱 | 欧美成人操 | 久草在线资源福利 | 英语老师丝袜娇喘好爽视频 | 香港三日本8a三级少妇三级99 | 男生操男生的小说 | 激情欧美一区 | 国产1卡2卡三卡四卡精品 | 国产精品福利一区 | 免费无码a片一区二三区 | 天天色综合av | 精品亚洲精品 | 伊人成人激情 | 一级免费观看 | 激情五月在线 | 无码国内精品人妻少妇 | 性乌克兰xxxx极品 | 色综合久久中文字幕有码 | 久久爱av影视天堂影视 | 中文字幕熟妇人妻在线视频 | 欧美一性一乱一交一免费视频 | 久久久久在线观看 | 午夜精品亚洲一区二区三区嫩草 | 天天舔天天射 | 波多野结衣一区二区三区高清 | 99免费观看视频 | 久久亚洲精品无码播放 | 中文字幕免费视频观看 | 久久草视频 | 精久久 | 99在线精品视频观看免费 | 青青草视频在线观看 | 久久婷婷久久 | 国产成人手机在线 | 国产成人av片免费 | 亚洲毛片αv无线播放一区 成人动漫综合网 | 视频1区2区 | 婷婷成人综合激情在线视频播放 | 国产蝌蚪视频一区二区三区 | 欧美极品在线观看 | 大小组在线播放av | 蜜臀av色欲a片无码精品一区 | 水蜜桃亚洲精品一区二区 | av在线不卡免费观看 | 黄色网页免费在线观看 | 国产吞精囗交免费视频网站 | 久久九九免费视频 | 97色偷偷色噜噜狠狠爱网站 | 亚洲精品久久久久久动漫器材一区 | 主站蜘蛛池模板: 蛛词}| 午夜手机在线 | 性激烈的欧美三级视频 | 18成人免费观看视频 | 国产一性一爱一乱一交 | 丝袜 中出 制服 人妻 美腿 | 91高清在线观看 | 未满十八18禁止免费网站 | 亚洲码无人客一区二区三区 | 999久久欧美人妻一区二区 | 激情深爱五月 | 翘臀后进少妇大白嫩屁股图 | xxxⅹ少妇少妇xxxx | 国产美女裸体无遮挡免费视频高潮 | 尤物97国产精品久久精品国产 | 亚洲国产精品久久艾草 | 欧美高清熟妇啪啪内射不卡自拍 | 亚洲国产黄色 | 精品少妇无码一区二区三批 | 国产在线观看片a免费观看 日本不卡专区 | 手机在线免费毛片 | 欧美性猛交xxxx乱大交极品 | 女女同性女同区二区毛片 | 国产卡一卡二卡三卡免费 | 日本少妇视频 | 黄色短片免费看 | 久久99精品久久久久久噜噜 | 狠狠狠狠狠干 | 午夜片神马影院福利 | 新久草在线视频 | 激情内射亚州一区二区三区爱妻 | 曰本无码人妻丰满熟妇啪啪 | 四虎成人欧美精品在永久在线 | 国产美女裸体无遮挡免费视频 | 日本不卡视频一区二区 | 国产精品毛片无遮挡 | 影音先锋新男人av资源站 | 久久国内精品一区二区三区 | 国产在线观看黄 | 69精品久久久久 | 日韩av不卡在线观看 | 日本久久综合久久综合 | 亚洲精品图区 | 第一区免费在线观看 | 在线观看一区 | 激情欧美网站 | 久久精品99国产国产 | 国产人人爱 | 最新中文字幕在线视频 | av网站在线不卡 | 亚洲精品1区2区 | 亚洲tv在线 | 美女丝袜一区二区三区 | 玖玖综合网 | 黄色网址中文字幕 | 午夜777| 蜜乳av一区二区三区 | 勾搭了很久的邻居少妇在线观看 | 国产精品亚洲专区无码老司国 | www.羞羞答答在线观看蜜桃臀 | 主站蜘蛛池模板: 蛛词}| 日韩一级二级三级 | 日本日本肥妇herew | 国产一区二区三区乱码 | 国产精品久久久久久久毛片动漫 | 亚洲欧美日韩国产精品 | 日韩久久精品一区二区 | 亚洲性av网站 | 伊人五月天婷婷 | 影音先锋中文字幕在线播放 | 日韩精品不卡在线 | 欧美尺寸又黑又粗又长 | 成人午夜视频在线观看 | 中文无码精品一区二区三区 | 久久久这里有精品 | 亚洲三级视频网站 | 国产成人8x人网站视频 | 欧美九九视频 | 国产亚洲精品久久午夜玫瑰园 | 国产片av国语在线观看 | 另类综合视频 | 国产a国产国产片 | 亚洲成人日韩 | 2021午夜福利理论片 | 涩涩网站在线看 | 成年人看的免费视频 | 欧美性猛交xxxx免费看蜜桃 | 欧美在线观看你懂的 | 久久曰视频 | 久久精品高清一区二区三区 | 黄在线观看网站 | 99久久99热这里只有精品 | 婷婷五月俺也去人妻 | 日韩免费看片网站 | 少妇spa推油被扣高潮 | 国产高潮久久久久久绿帽 | 日韩v亚洲v欧美v精品综合 | 国产性夜夜春夜夜爽1a片 | 亚洲女人被黑人巨大进入 | 中文无遮挡h肉视频在线观看 | 人妻互换 综合 | 中文字幕在线乱 | 国产精品高潮呻吟久久av郑州 | 老外的一级大黄色毛片 | 在线天堂av | 又色又污又黄又爽又吃胸 | 亚洲午夜精品在线 | 最新综合精品亚洲网址 | 久操欧美 | 欧美日韩精品丝袜 | 狠狠躁夜夜躁人人爽天天开心婷婷 | 日韩a在线观看 | 精品人妻无码一区二区色欲产成人 | 三级日本高清完整版热播 | 国产91桃色在线观看网站 | 亚洲一区二区色图 | 九九热最新网址 | 与亲子伦中文字幕 | 久草福利在线观看 | 又黄又爽又色无遮挡 | 主站蜘蛛池模板: 蛛词}| 国产福利91精品一区二区三区 | 国产精品情侣高潮呻吟 | 高清二区 | 亚洲无av码一区二区三区 | 欧美一区二区三区另类 | 另类天堂网不卡另类系列 | 97中文在线 | 亚洲19禁大尺度做爰无遮挡 | 亚洲欧美日韩在线资源观看 | 97精品国产91久久久久久久 | 另类天堂网不卡另类系列 | 国产精品久久久av | 国产精品综合久久 | 99热这里是精品 | 亚洲成a人片在线观看的电影 | 99久热re在线精品视频 | 婷婷综合缴情亚洲狠狠小说 | 亚洲欧洲综合有码无码 | 国产女主播av在线 | 亚洲成人99 | 亚洲一区二区色一琪琪 | 国产99久久久国产 | 97人人模人人爽人人澡 | 在线免费自拍 | 国内精品久久久久精免费 | 91精品视频一区二区三区 | 成熟少妇xxxx性pp交 | 在线日韩| 亚洲小说在线 | 日本精品一区二区三区视频 | 精品一区二区三 | 成年女性特黄午夜视频免费看 | 夜夜骚视频 | 无码精品一区二区三区免费视频 | 国产精品亚洲综合色区韩国 | 免费看国产成年无码av片 | 天天艹在线 | 色成人www精品永久观看 | 国产奶水涨喷在线播放 | 国产裸体歌舞一区二区 | 狠痕鲁狠狠爱2021在 | 国产精品兄妹在线观看麻豆 | 国产亚洲精品一区二区三区 | 射射射综合网 | 亚洲欧美日韩中文在线 | 午夜手机看片 | 日本大乳奶做爰洗澡三级 | 老司机成人永久免费视频 | 这里只有精品网 | 性夜影院爽黄a爽在线看 | 国产在线专区 | av网址在线播放 | 国产日韩av免费无码一区二区 | 国产精品亚洲综合色区韩国 | 懂色粉嫩绯色av | 午夜精品久久久久久不卡 | 日韩永久免费 | 亚洲成人精品 | 肉色超薄丝袜脚交一区二区 | 主站蜘蛛池模板: 蛛词}| 国产国语在线播放视频 | 在线看片91 | 美女黄网页 | 久久强奷乱码老熟女网站 | 日本青青草视频 | xxx18hd国语对白| 人妻系列无码专区喂奶 | 精品国产第一页 | 人妻无码久久精品人妻 | 欧洲一级片| 欧美日韩在线一区二区 | 日韩精品2| 日韩内射美女人妻一区二区三区 | 亚洲欧美日本国产高清 | 久久草草亚洲蜜桃臀 | 国产精品一区二区av交换 | 91久久极品 | 国产一区激情 | 亚洲国产成人va在线观看 | 国产麻豆a毛片 | 五月综合激情婷婷六月 | 欧美亚洲日本国产综合在线 | 精品久久久久中文字幕日本 | 丰满肥臀大屁股熟妇激情视频 | 老熟女多次高潮露脸视频 | 亚洲国产一区二区三区a毛片 | 男人综合网 | 国产性一交一乱一伦一色一情 | 欧美亚洲国产手机在线有码 | 免费国产黄 | 欧美成人精品三级网站 | 狠狠干人人干 | 久草视频在线免费 | 国产黄色一区 | 久久综合88熟人妻 | 色综合色欲色综合色综合色乛 | 性生交大片免费看女人按摩摩 | www.超碰在线.com | 二区三区在线视频 | 国内精品自在自线视频 | 国产干干干 | 一级免费黄色大片 | 91精品久久久久久 | 青青草无码精品伊人久久7 中文字幕 欧美激情 | 成人黄色在线观看 | 亚洲色图婷婷 | 裸体美女免费视频网站 | 国产做无码视频在线观看 | 亚洲精品国产美女久久久99 | 好爽...又高潮了毛片 | 亚洲黄色毛片 | 五月丁香六月狠狠爱综合 | 亚洲精品喷潮一区二区三区 | 国产精品美女久久久久网站浪潮 | 五月天久久久久久九一站片 | 精品国产成人网站一区在线 | 男女免费观看做爰视频在线观看 | 2019日韩中文字幕mv | 国产αv|