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

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


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

PLC實時采集與控制的組態(tài)編程而設(shè)計。本DLL是采用Delphi語言開發(fā)的標準串口通訊庫,具有以下特點:

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

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

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

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

5)、支持USB、PC擴展卡等擴展串口號;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

LE:(Length)報文數(shù)據(jù)長度

LER:(Repeated Length)重復數(shù)據(jù)長度

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

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

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

FC:(Function Code)功能碼

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

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

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

FCS:(Frame Check Sequence)校驗碼

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

報文數(shù)據(jù)長度和重復數(shù)據(jù)長度為自DA至DU的數(shù)據(jù)長度,校驗碼為DA至DU數(shù)據(jù)的和校驗,只取其中的末字節(jié)值。

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

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

3)、確認讀寫命令的數(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ù)命令實例

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ù)上述例子用串口精靈測試一下,當發(fā)送命令成功PLC返回E5,你再發(fā)送10 02 00 5C 5E 16,就可以完成一次讀寫命令。

(記得接收和發(fā)送采用16進制方式 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é)地址實際上是重疊的,下面做個說明如:

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)系,當然如果你想使用VW1(VB1 VB2)、VD3(VB3 VB4 VB5 VB6)等尋址方式也是可以的,

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

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

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

C、T區(qū)當前值讀取時的地址按實際地址0~255來。

三、DLL函數(shù)說明

1、打開串口

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

參數(shù):nport: 打開串口號,取值為1~8,代表COM1~COM8;
     
      BaudRate:波特率,取值為:1200、2400、4800、9600、19200、38400;
   
      DataBits:數(shù)據(jù)位,取值為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授權(quán)用戶名;

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

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

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

    注冊用戶功能上無任何限制,且將得到永久的軟件使用和更新升級服務(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: 串口號,取值為1~8,代表COM1~COM8;

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

使用舉例:

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


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

注:PLC內(nèi)部元件與數(shù)字的對應(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:  串口號,取值為1~8,代表COM1~COM8;

purpose:目標地址,取值0~126;

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

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

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

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

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

使用舉例:

FcnBread(1,0,2,0,2,4),由COM1讀取PPI 2號站 數(shù)據(jù)到0號站(計算機)IB2~IB5四個字節(jié)的值,如返回值為“01FF6403@”,

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

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

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

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

注:沒有注冊用戶不能讀取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:  串口號,取值為1~8,代表COM1~COM8;

purpose:目標地址,取值0~126;

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

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

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

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

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

使用舉例:

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

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

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

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

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

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

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

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

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

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

參數(shù):

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

purpose:目標地址,取值0~126;

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

name:    取值3(代表V);

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

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

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

使用舉例:

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

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

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

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

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

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

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

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

注:沒有注冊用戶可尋址范圍VD0~VD4;

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

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

參數(shù):

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

purpose:目標地址,取值0~126;

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

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

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

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

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

使用舉例:

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

注:沒有注冊用戶不可以讀取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:  串口號,取值為1~8,代表COM1~COM8;

purpose:目標地址,取值0~126;

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

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

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

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

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

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

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

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

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

實際字符串與位地址的數(shù)值應(yīng)如下表:(將上例的字節(jié)MB0'、MB1'轉(zhuǎn)換為位地址M0.0~M1.7由下表對應(yīng),此對應(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進制串:  |      6      |      4      |      5      |      0      |
            ---------------------------------

使用舉例:

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

注:沒有注冊用戶不能寫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:  串口號,取值為1~8,代表COM1~COM8;

purpose:目標地址,取值0~126;

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

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

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

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

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

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

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

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

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


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

操作成功返回1;

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

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

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

參數(shù):

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

purpose:目標地址,取值0~126;

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

name:    取值3(代表V);

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

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

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

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

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

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

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

使用舉例:


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

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

注:沒有注冊用戶可尋址范圍VD0;

4)、位元件的置位

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

參數(shù):

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

purpose:目標地址,取值0~126;

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

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

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

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

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

使用舉例:

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

注:沒有注冊用戶可尋址范圍M0.0~M0.7、V0.0~V0.7、S0.0~S0.7;

5)、位元件的復位

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

參數(shù):

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

purpose:目標地址,取值0~126;

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

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

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

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

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

使用舉例:

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

注:沒有注冊用戶可尋址范圍M0.0~M0.7、V0.0~V0.7、S0.0~S0.7;


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

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

某個元件進行強制時請使用取消強制函數(shù),來取消對該位的強制狀態(tài),但取消強制狀態(tài)并不改變元件的通段狀態(tài)。


1)、位元件的強制置位

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

參數(shù):

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

purpose:目標地址,取值0~126;

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

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

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

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

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

使用舉例:

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

注:沒有注冊用戶不可以使用;

2)、位元件的強制復位

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

參數(shù):

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

purpose:目標地址,取值0~126;

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

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

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

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

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

使用舉例:

FcnEreset(1,0,2,1,2,6),由COM1 0號站(計算機) 復位PPI 2號站 Q2.6,如返回值為1,則表示復位成功;

注:沒有注冊用戶不可以使用;



3)、位元件取消強制

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

參數(shù):

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

purpose:目標地址,取值0~126;

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

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

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

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

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

使用舉例:

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

注:沒有注冊用戶不可以使用;

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

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

參數(shù):

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

purpose:目標地址,取值0~126;

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

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

使用舉例:

FcnRun(1,0,2),由COM1 0號站(計算機) 使PPI 2號進入運行模式,如返回值為1,則表示運行成功;

注:沒有注冊用戶不可以使用;

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

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

參數(shù):

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

purpose:目標地址,取值0~126;

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

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

使用舉例:

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

注:沒有注冊用戶不可以使用;


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

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

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

參數(shù):

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

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

2、整數(shù)轉(zhuǎn)換成16進制字符串 (為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ù)錯誤等非法的情況下返回“Error@”

使用舉例:

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

"@"為字符串數(shù)據(jù)的終止符。

3、16進制字符串轉(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ù)不正確等出錯情況下返回值為“-1”。

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

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)時,要讀取M0.1的值時,則調(diào)用CinBin(252,1)返回值0表示M0.1的值為0。

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

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

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

參數(shù):

Text: 字符串原型;

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

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

使用舉例:

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

"@"為字符串數(shù)據(jù)的終止符。

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

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

參數(shù):

Text: 字符串原型;

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

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

使用舉例:

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

"@"為字符串數(shù)據(jù)的終止符。

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

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

參數(shù):

Text: 字符串原型;

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

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

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

使用舉例:

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

"@"為字符串數(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,即最少從源字符串的第一個字符開始查詢;

返回值:長整型;

使用舉例:

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

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

9、PC喇叭的報警過程函數(shù);

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

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

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

使用舉例:

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

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

五、詳細的DLL使用請參DEMO程序或DLL手冊(DLL手冊提供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)境請根據(jù)開發(fā)軟件更新后所兼容的聲明方式進行聲明調(diào)用。

作者:  wjun7610
QQ:    157610979
淘寶店:http://shop34821629.taobao.com
sp1985513
級別: *
精華主題: * 篇
發(fā)帖數(shù)量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看sp1985513的 主題 / 回貼
1樓  發(fā)表于: 2008-05-26 20:40
謝啦!你把程序發(fā)給我嗎?sp1985513429@126.com

主站蜘蛛池模板: 国产gaysexchina男同menxnxx_全免费A级毛片免费看无码_无码专区人妻系列日韩_久久久久久久久久综合_Chinese国产AV_日产乱码区别免费必看_国产91精选在线观看网站_成a∧人片在线观看无码 | 国产福利精品视频_91素人在线_国产欧美另类久久久精品丝瓜_日韩精品一区二区av_XX性欧美肥妇精品久久久久久_老司机深夜18禁污污网站_伊人色综_99国产精品免费视频 | 日本特级_天天天天做夜夜夜做_亚洲中文字幕久爱亚洲伊人_一区二区视频播放_男女边吃奶边做边爱视频_h版在线观看_国产午夜手机精彩视频_老司机精品久久 | 在线亚洲日产一区二区_最新av在线资源网无码_国产成AV人片久青草影院_免费观看高清a级毛片视频_中文字幕乱码人在线视频1区_黄色日韩视频_国产日韩久久久_久久国产精品高清 | 欧美黄色片在线观看_欧美视频在线免费看_中国少妇xxxⅹ性xxxx_超碰手机在线_亚洲日本欧美_51社区在线永久免费视频_欧美一级二级片_久久经典免费视频 | 日韩视频三区_色天天爱天天狠天天透_99精品成人_在线观看欧美一级_四虎影院观看视频在线观看_91伦理在线_亚洲AV无码久久_91最新 | 最好看的中文在线观看_午夜入口_精品久久久久久久久中文字幕_免费看黄色片视频_道日本一本草久_老司机在线观看福利_国产毛片精品久久_久操视频在线免费观看 | 中文字幕精品久久久久_无遮挡在线观看_在线免费观看的www视频_久草香蕉_九九九热精品免费视频观看_色欲av自慰一区二区三区_综合av第一页_国产一级毛片a午夜一级 | 亚洲成AⅤ人影院在线欢看_亚洲国产成人精品无码区宅男?_97国产最新_在线视频97_无码精品国产VA在线观看DVD_青青视频网_一区二区日本视频_国产精品久久久一区 | 亚洲aⅴ无码专区在线观看_精品福利网站_午夜影院c绿象_中文字幕十区_久久综合日本_久久网站免费视频_国产免费一区视频_欧美成年人视频 | 久青草视频在线播放_男男短篇高h肉辣合集_北条麻妃中文精品国产_国产成人黄色片_中文字幕中文字幕在线中心一区_97插插_中文字幕综合在线观看_亚洲chinese男同志gay在线 | 偷拍各种美女wc嘘嘘视频_亚洲精品乱码久久久久久按摩_成人免费xyz网站_朝桐光a∨一区二区三区_国内精品卡1卡2卡区别_欧美国产一级_亚洲AV综合A∨一区二区_自拍超碰 | av网址免费在线_久久乐国产精品亚洲综合_国产精品一区网站_亚洲人成网站在线在线观看_久久精品免费网站_国产精品精品久久久久久_又大又粗又猛免费视频_久久亚洲国产精品 | xxxx漂亮少妇hdxxxx_久久香蕉国产线看观看手机_青青草手机在线观看_人妻激情另类乱人伦人妻_狠狠色狠狠色88综合日日91_有码在线_日韩av综合_好爽好痛好湿好硬视频免费 | 亚洲成人黄色网_vagaa亚洲亚洲色爽免影院_亚洲国产精品一区在线_美女十八毛片_久久成人福利视频_人人澡人人添人人爽一区二区_五十六十日本老熟妇乱_国产精品第一视频 | av在线播放天堂_九九天堂_一本色道久久综合亚州精品蜜桃_国产精品精品久久久久久甜蜜软件_久久久无码精品亚洲A片软件_黄色录像一级片儿_日韩精品一区中文字幕_桃色av无码 | 高清不卡免费视频_猛烈顶弄H禁欲老师H春潮视频_国产老肥熟精品大全_亚洲欧美成人a毛片_亚洲精品在_第一区免费在线观看_免费国产自久久久久三四区久久_亚洲男人的天堂网 | 亚洲成色网_久国产视频_最新亚洲国产_黄色av看视_国产午夜久久久_天天躁日日躁狠狠躁a∨麻豆_午夜无码片在线观看影院Y_午夜视频一区 | 久久久无码精品亚洲日韩啪啪网站_国产三级三级看三级_天堂一区人妻无码_国产成人久久精品_最近中文字幕2019视频1_思思久热_亚洲成AV人在线观看成年美女_日韩少妇内射免费播放18禁裸乳 | 国产a∨国片精品jk制服_亚洲大片免费_欧美视频在线观看不卡_大陆av在线_91一区二区国产_136fldh福利免费视频观看_伊人91在线_又黄又爽又色又刺激的视频 | 在线免费观看黄色片_四虎必出精品_久久夜色精品国产噜噜噜亚洲AV_97久久精品人妻人人搡人人玩_aaa视频_精品成人免费一区二区在线播放_第一福利初水视频导航_日韩中文字幕二区 | 日本一区二区在线看_精品国产乱码久久久久久口爆_欧州办公室内射美女_SAO货腿张开JI巴CAO死我_成年女人喷潮毛片免费播放_欧美丝袜丝交足nylons视频_九九久久视频_亚洲国产清纯系在线观看 www日本xx_gay亚洲男男gv在线观看网站_99pao在线视频国产_国产精品亚洲网站_黄色一级大片在线免费看国产一_自慰系列无码专区_国产乱free国语对白_中文字幕综合 | 婬荡少妇21P_亚洲av永久无码精品蜜芽_亚洲欧洲精品在线_亚洲福利在线观看_国产肛交视频_欧美国产免费_免费视频久久久久久久_久久久福利视频 | 妇女性内射冈站HDWWWOOO_亚洲av无码av日韩av网站_青草欧美亚洲a视频在线_福禄影院午夜伦_亚洲美女影院_日日操操_国产偷窥熟女精品视频大全_国产在线一区二区三区AV | 香蕉久久夜色精品国产_亚洲女人被黑人巨大进入_6969视频_综合色久_国产乱对白刺激视频_中文无码一区二区视频在线播放量_性爱视频在线免费_欧美特黄色片 | 男女aa视频_97人人草人人_成人日韩在线_亚洲AV秘无码一区二区三区一_爱啪啪av网_亚洲一区美女_久久精品国产99国产毛片_久久久精品人妻无码专区不卡 | 国产2区_中国少妇videos露脸hd_香港三日本8A三级少妇三级99_中文字幕一区久久_影音先锋ady69色资源网站_99在线观看视频免费_成人啪啪_最新超碰在线 | 超国产女人高潮a片免费视频_91免费视频播放_狠狠综合久久综合88亚洲爱文_国产精品久久人妻无码免费看_www.com色_少妇借种高潮了_久久久久亚洲AV成人无码_大尺度吃奶摸下激烈视频 | 色婷婷天堂_亚洲网色_国产成人久久AV免费_av狼论坛_国产xxwwxxww视频_吉林小伟无套gay_久久免费看a级毛毛片_欧美猛交 | 亚洲AV无码兔费综合_欧美第一夜_成人av影视在线_超色视频在线观看_日韩无码一区中文_自拍亚洲综合_亚洲精品一区二区三区精华液_国产裸体永久免费视频网站 亚洲精品综合_足疗店女技师按摩毛片_亚洲精品久久嫩草网站秘色_国产亚洲一区精品_这题超纲了动漫免费观看_国产免费av高清在线_波多野结衣1区2区3区_久久精品小短片 | 日韩96_精品91自产拍在线观看一区_成人高清视频免费_中文字幕亚洲欧洲_99视频在线观看精品_91激情在线视频_久久久亚洲精华液_26UUU在线亚洲欧美 | 精品国产一区二区免费不卡_久久久久久久久久99_国产精品无码素人福利免费_国产三级生活片_国精一区二区_国产小福利_久久中文字幕无码专区_日韩精品国产精品 | 国产亚洲视频系列_中文字幕亚洲欧美在线不卡_国产精品成人A片在线果冻_婷婷超碰_日本a级片免费看_XXX国产精品XXX_欧美一级片在线播放_亚洲综合清纯唯美 | 久青草视频在线播放_男男短篇高h肉辣合集_北条麻妃中文精品国产_国产成人黄色片_中文字幕中文字幕在线中心一区_97插插_中文字幕综合在线观看_亚洲chinese男同志gay在线 | www视频免费观看_麻豆freehdxxxⅹ传媒_abab456成人免费网址_国产激情自拍视频_青楼妓女禁脔道具调教SM_国产一区二区三区成人欧美日韩在线观看_久久久久av_精品欧美乱码久久久久久1区2区 | 姑娘第四集免费看视频_久久久香蕉_www日本在线观看_国产精品人人爽人人爽av_亚洲国产综合在线看不卡_亚洲欧美国产日韩一区夜色_国产视频网站在线观看_亚洲区和欧洲区五六区 | 亚洲狠狠婷婷综合久久_小少呦萝粉国产_XYX性爽欧美_女人夜夜春高潮爽av片_91人人妻人人做人人爽京东_美女极度色诱视频国产_日韩欧美xxxx_国内熟妇人妻色在线视频 | 高清不卡免费视频_猛烈顶弄H禁欲老师H春潮视频_国产老肥熟精品大全_亚洲欧美成人a毛片_亚洲精品在_第一区免费在线观看_免费国产自久久久久三四区久久_亚洲男人的天堂网 | 亚洲视频aaa_日本19禁啪啪免费观看www_国产一区二区三区四区www._亚洲精品久久久久中文字幕欢迎你_亚洲精品50p_av无码午夜福利一区二区三区_亚洲第一免费播放区_91一区在线 | 在线免费中文字日产_亚洲视频入口_秋霞成人午夜鲁丝一区二区三区_久久这里只有精品8_caoporm在线视频_91豆花_国产日产成人免费视频在线观看_精品日韩在线观看 | 国产精品久久久久国产精品三级_免费观看老乱熟视频_日韩精品在线视频观看_天海翼精品一区二区三区_亚洲一线视频_四虎伊人_国内精品小视频_人妻出轨和黑人疯狂做国产人 国产精品国产三级国产av′_www国产精品_www.精品视频_奇米在线7777在线精品_性生交裸片免费看_91爱观看在线_夜夜草影院_中文字幕亚洲日本 |