成人精品一区二区久久久 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
級別: 略有小成
精華主題: 0
發帖數量: 110 個
工控威望: 249 點
下載積分: 708 分
在線時間: 35(小時)
注冊時間: 2007-09-16
最后登錄: 2025-07-30
查看wjun7610的 主題 / 回貼
樓主  發表于: 2008-02-26 13:58
西門子S7-200系列PLC PPI協議及PPI動態鏈接庫DLL(需VB、Delphi DEMO程序請回貼并留下Emial地址)


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

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

1)、實時性、可靠性好,可根據通信數據量自行調整通信時間;

2)、適用于多PLC聯網和上位機通信,滿足多方面的需要;

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

4)、附加實用轉換與讀取函數,易于快速開發(VC等非RAD開發環境的開發);

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

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

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

二、PPI協議簡介及S7-200CPU內存地址范圍介紹

2.1 西門子PPI通訊協議

    通過硬件和軟件偵聽的方法,分析PLC內部固有的PPI通訊協議,然后采用上位機編程,遵循PPI通訊協議,讀寫PLC數據,實現人機操作

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

RS-485結構,SIEMENS提供MicroWin軟件,采用的是PPI(Point to Point)協議,可以用來傳輸、調試PLC程序。在現場應用中,當需要PLC

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

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

為自由通訊口時,PLC的編程軟件無法對PLC進行監控,給PLC程序調試帶來不便。

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

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

且正在通訊的端口的數據,然后歸納總結,解析出PPI協議的數據讀寫報文。這樣,上位機遵循PPI協議,就可以便利的讀寫PLC內部的數據,

實現上位機的人機操作功能。

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

的響應,上位機接到此響應則發出確認申請命令,PLC則完成正確的讀寫響應,回應給上位機數據。這樣收發兩次數據,完成一次數據的讀寫

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

其通訊數據報文格式大致有以下幾類:

1)、讀寫申請的數據格式如下:

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

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

LE:(Length)報文數據長度

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

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

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

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

FC:(Function Code)功能碼

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

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

DU:(Data Unit)數據單元

FCS:(Frame Check Sequence)校驗碼

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

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

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

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

3)、確認讀寫命令的數據格式為:

SD SA DA FC FCS ED 

其中SD為起始符,為10H

SA為數據源地址

DA為目的地址

FC為功能碼,取5CH

FCS為SA+DA+FC的和的末字節

ED為結束符,取16H

4)、數據類型碼

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

5)、讀寫功能數據命令實例

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的數據值

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

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

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

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

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

位(字節.位)      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

字節        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的字、雙字地址和字節地址實際上是重疊的,下面做個說明如:

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

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

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

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

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

三、DLL函數說明

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

2、關閉串口

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

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

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

使用舉例:

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


3、PLC內部元件讀取功能函數

注:PLC內部元件與數字的對應關系(DLL中的所有函數都遵循此規定):

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

注:下面的讀寫等PLC操作函數使用舉例都是按VB調用函數形式給出。

1)、字節元件數據讀取

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

參數:

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

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

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

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

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

Count:  讀取的字節個數,最多讀取128個但不能超出尋址范圍;

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

使用舉例:

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

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

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

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

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

注:沒有注冊用戶不能讀取S、SM區字節值,可尋址范圍IB0~IB1、QB0~QB1、MB0~MB1、VB0~VB1;


2)、字元件數據讀取

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

參數:

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

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

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

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

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

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

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

使用舉例:

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

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

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

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

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

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

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

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

3)、雙字元件數據讀取

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

參數:

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

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

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

name:    取值3(代表V);

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

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

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

使用舉例:

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

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

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

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

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

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

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

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

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

4)、位元件的狀態讀取

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

參數:

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

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

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

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

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

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

返回值: 長整數,返回為0表示狀態為OFF,返回為1表示狀態為ON,返回為-1表示讀取錯誤或不能讀取;

使用舉例:

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

注:沒有注冊用戶不可以讀取S、SM區狀態,可尋址范圍I0.0~I1.7、Q0.0~Q1.7、M0.0~M1.7、V0.0~V1.7;

4、PLC內部元件寫數據功能函數

1)、字節元件數據寫入

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

參數:

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

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

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

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

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

Count:  寫入字節個數,這里1字節應寫入2位16進制字符串;

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

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

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

轉成16進制字符串50,則sendstr=6450;一次最多寫128個字節即字符串長應小于等于256;

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

實際字符串與位地址的數值應如下表:(將上例的字節MB0'、MB1'轉換為位地址M0.0~M1.7由下表對應,此對應也可以應用于字節讀取)

    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號站 數據MB0=64(10進制100)、MB1=50(10進制80),操作成功返回1;

注:沒有注冊用戶不能寫S區字節值,可尋址范圍IB0、QB0、MB0、VB0;

2)、字元件數據寫入

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

參數:

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

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

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

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

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

Count:  寫入字個數,這里1字應寫入4位16進制字符串;

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

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

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

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

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


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

操作成功返回1;

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

3)、雙字元件數據寫入

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

參數:

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

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

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

name:    取值3(代表V);

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

Count:  寫入雙字個數,這里1雙字應寫入8位16進制字符串;

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

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

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

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

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

使用舉例:


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

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

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

4)、位元件的置位

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

參數:

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

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

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

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

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

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

返回值: 長整數,操作成功返回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;

參數:

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

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

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

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

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

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

返回值: 長整數,操作成功返回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元件的強制功能 (未注冊用戶不可使用)

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

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


1)、位元件的強制置位

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

參數:

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

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

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

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

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

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

返回值: 長整數,操作成功返回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;

參數:

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

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

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

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

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

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

返回值: 長整數,操作成功返回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;

參數:

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

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

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

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

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

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

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

使用舉例:

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

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

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

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

參數:

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

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

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

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

使用舉例:

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

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

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

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

參數:

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

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

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

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

使用舉例:

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

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


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

1、串口打開狀態的讀取

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

參數:

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

返回值:長整型,串口成功打開返回“1”,否則返回“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中關于傳出字符串值的函數都以"@"為字符串函數值終止符,這是對多開發環境應用時方便用戶正確讀取返回字符串數據而設。

五、詳細的DLL使用請參DEMO程序或DLL手冊(DLL手冊提供VB、VC、Delphi的調用說明),相關DEMO程序和說明所使用的開發環境

VB指的是VB6.0,Delphi指的是Delphi6.0/Delphi7.0,VC指的是VC6.0。如果使用了高版本開發環境請根據開發軟件更新后所兼容的聲明方式進行聲明調用。

作者:  wjun7610
QQ:    157610979
淘寶店:http://shop34821629.taobao.com
mfknuyygyy
級別: *
精華主題: * 篇
發帖數量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看mfknuyygyy的 主題 / 回貼
1樓  發表于: 2008-05-07 12:00
先謝了!
谷向榮
級別: 略有小成
精華主題: 0
發帖數量: 107 個
工控威望: 239 點
下載積分: 679 分
在線時間: 55(小時)
注冊時間: 2007-04-26
最后登錄: 2025-07-08
查看谷向榮的 主題 / 回貼
2樓  發表于: 2008-05-23 10:36
HENHAO
sp1985513
級別: *
精華主題: * 篇
發帖數量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看sp1985513的 主題 / 回貼
3樓  發表于: 2008-05-26 20:40
謝啦!你把程序發給我嗎?sp1985513429@126.com
wjun7610
級別: 略有小成
精華主題: 0
發帖數量: 110 個
工控威望: 249 點
下載積分: 708 分
在線時間: 35(小時)
注冊時間: 2007-09-16
最后登錄: 2025-07-30
查看wjun7610的 主題 / 回貼
4樓  發表于: 2008-07-02 14:53
不好意思最近太忙沒上論壇,如果各位發貼沒能回復,可以用過QQ和我聯系或Email:wjun7610@yahoo.com.cn
lcbll
級別: *
精華主題: * 篇
發帖數量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看lcbll的 主題 / 回貼
5樓  發表于: 2008-07-29 16:31
    
johnsonxjq
必攻不守
級別: 略有小成
精華主題: 0
發帖數量: 129 個
工控威望: 333 點
下載積分: 470 分
在線時間: 70(小時)
注冊時間: 2007-08-31
最后登錄: 2025-09-25
查看johnsonxjq的 主題 / 回貼
6樓  發表于: 2008-08-02 13:41
你好,感謝大俠的無私奉獻,可以提供VB源碼例程讓我研究一下嗎?
我的郵箱是:    johnsonxjq@163.com   多謝!
wjun7610
級別: 略有小成
精華主題: 0
發帖數量: 110 個
工控威望: 249 點
下載積分: 708 分
在線時間: 35(小時)
注冊時間: 2007-09-16
最后登錄: 2025-07-30
查看wjun7610的 主題 / 回貼
7樓  發表于: 2008-08-02 21:35
johnsonxjq郵件已發
hwhenry
級別: *
精華主題: * 篇
發帖數量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看hwhenry的 主題 / 回貼
8樓  發表于: 2008-08-08 14:32
  
dlzhoubo
級別: *
精華主題: * 篇
發帖數量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看dlzhoubo的 主題 / 回貼
9樓  發表于: 2008-08-11 21:50
a___yue
級別: *
精華主題: * 篇
發帖數量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看a___yue的 主題 / 回貼
10樓  發表于: 2008-11-25 13:08
我上了您的淘寶店,這個dll文件是要購買?
youngsoon
級別: 探索解密
精華主題: 0
發帖數量: 28 個
工控威望: 189 點
下載積分: 2397 分
在線時間: 64(小時)
注冊時間: 2008-12-16
最后登錄: 2024-08-13
查看youngsoon的 主題 / 回貼
11樓  發表于: 2010-04-10 08:55
很好,能發程序給我嗎?602265225@QQ.COM

主站蜘蛛池模板: 无码人妻久久一区二区三区免费 | 天堂av首页 | 久久久无码精品国产一区 | 中文字幕一区二区三区四区免费看 | 成人小视频免费观看 | 女人被做到高潮视频 | 91免费视频网站 | 国产精品2区 | 无码av动漫精品一区二区免费 | 日韩高清观看 | 国产精品人人妻人人爽人人牛 | 在线精品国产一区二区三区88 | 久久97国产超碰青草 | 成人一二三 | 亚洲精品在看在线观看 | 黄色三级毛片视频 | 欧美在线一二 | 翘臀后进少妇大白嫩屁股 | 欧美影片免费看 | 懂色av一区二区三区在线播放 | 亚洲欧美午夜 | 最近中文字幕2019在线一区 | 国产gv猛男gv无码男同网站 | 国产11一12周岁女毛片 | 国产无套丰满白嫩对白 | 超清中文乱码一区 | 日本久久久久久科技有限公司 | 99这里 | 亚洲国产精品第一页 | youjizz4| 国产wwwxx| 蜜臀久久久久久999 午夜成人无码福利免费视频 | 亚洲精品嫩草研究院久久 | 香港日本三级亚洲三级 | 天堂视频免费在线观看 | 亚洲国产精品毛片av不卡在线 | 韩国主播av福利一区二区 | 成人av福利 | a吖天堂网2019| 国产亚洲欧美一区二区 | 亚洲国产欧美日韩精品一区二区三区 | 岛国裸体写真hd在线 | 久久99成人免费 | 中文字幕 制服 亚洲 另类 | 国产人碰人摸人爱免费视频 | 国产成人午夜精品影院游乐网 | 国产资源在线免费观看 | 亚洲天堂岛国片 | 久久五月丁香激情综合 | 午夜影院毛片 | 国产乱子经典视频在线观看 | 日韩区欧美国产区在线观看 | 成人精品视频 | 婷婷狠狠干 | 日本视频黄色 | 国产精品资源一区二区 | 久久久久亚洲精品无码系列 | 久久久久久久av | 伊人色综合视频一区二区三区 | 主站蜘蛛池模板: 蛛词}| 99久久婷婷国产一区二区 | 亚洲欧美综合精品成人导航 | 亚洲精品人成网线在播放va | 女人高潮被爽到呻吟在线观看 | 亚洲日韩男人网在线 | 人人妻人人爽人人狠狠 | 亚洲国产精品无码av | 国产成人片无码免费视频软件 | 野外做受三级视频 | 2019年国产精品手机视频 | 亚洲日本欧美日韩高观看 | 久久精品国产v日韩v亚洲 | 国产7色在线 | 国产 | 女奥特曼成版资源av | 日韩美女亚洲99久久二区 | 深夜福利视频在线观看 | 久久综合给合久久狠狠狠色97 | 天天插天天射 | 久久精品中文闷骚内射 | 夫妻毛片| 亚洲旡码av中文字幕 | 91老女人 | 在线观看免费黄色 | 欧美牲交a欧美牲交aⅴ一 | 久青草国产97香蕉在线视频 | 国产一在线观看 | 国内免费精品视频 | 毛片女人18片毛片点击进入 | 日韩和一区二区 | 中文字幕69 | 国产成人av一区二区在线观看 | 国产综合社区 | 成人免费一区 | 色综合久久无码中文字幕 | 一级特级毛片 | 午夜无码一区二区三区在线观看 | 亚洲精品国产成人av蜜臀 | 91久久香蕉国产日韩欧美9色 | 二区国产 | 免费毛片在线播放 | 亚州中文字幕午夜福利电影 | 激情欧美亚洲 | 亚洲人视频在线观看 | 噜噜噜av | 免费无码又爽又刺激高潮的动态图 | 91九色视频网站 | 国产无遮挡裸体美女视频 | 国产精品视频六区 | 欧美黑人狂野猛交老妇 | 日本精品不卡 | 亚洲成av人片天堂网老年人 | 男人的天堂国产 | av大尺度一区二区三区 | 国产成av人片久青草影院 | 亚洲无吗在线视频 | vagaa欧洲色爽免影院 | 制服丝袜av无码专区 | 人人草av| 国产精品极品白嫩在线 | 主站蜘蛛池模板: 蛛词}| 老子影院午夜精品无码 | 少妇愉情理伦片丰满丰满 | 国产精品一区二区含羞草 | 国产精品无码av一区二区三区 | 精久国产av一区二区三区孕妇 | 激情综合网五月激情 | 小雪尝禁果又粗又大的视频 | 女人18精品一区二区三区 | 无码熟熟妇丰满人妻啪啪软件 | 日韩一级免费 | 性色欲网站人妻丰满中文久久不卡 | 少妇把腿扒开让我添 | 国产女女做受ⅹxx高潮 | 产精品无码久久_亚洲国产精 | 亚州综合 | 国产九九九精品 | 妓女爽爽爽爽爽妓女8888 | 久久99免费 | 2020久热爱精品视频在线观看 | 高清人人天天夜夜曰狠狠狠狠 | 夜夜爽妓女8888888视频 | 精品国产1区2区3区 好逼天天操 | 国产麻豆精品传媒 | 亚洲a成人片在线观看 | 亚洲综合久久网 | 国产白嫩漂亮美女在线观看 | 人妻精品制服丝袜久久久 | 天堂网最新网址 | 99热成人精品热久久6 | 无码精品a∨动漫在线观看 久久极品视频 | 99久久综合国产精品二区国产 | 日日碰久久躁77777 | 午夜欧美福利 | 精品人妻无码一区二区三区蜜桃一 | 日本91在线| 19禁无遮挡啪啪无码网站 | 欧美h网 | 日韩a在线播放 | 成人亚洲精品久久久久软件 | 国产gv在线观看受被做哭 | 97久久久精品综合88久久 | 天天射夜夜拍 | 丁香花免费高清视频在线观看 | 秋霞无码久久久精品交换 | 免费午夜无码片在线观看影院 | 国产初高中真实精品视频 | 国产另类xxxxhd高清 | 亚洲欧美日韩在线看 | 天干夜天干天天天爽2022 | 国产亚洲日韩一区二区三区 | 久久99国产精品久久99小说 | 伊人网视频在线 | 国产欧美va欧美va香蕉在线观看 | 日本在线视频一区 | 成在人线av无码免费漫画 | 国产女人的高潮国语对白 | 免费在线一级片 | 国产成人拍精品视频午夜网站 | 日本在线精品视频 | 主站蜘蛛池模板: 蛛词}| 欧美 日韩版国产在线播放 呦咪精品少妇在线视频 | 国产精品日本亚洲777 | 久久99热这里只频精品6学生 | 国产精品成人免费精品自在线观看 | 日本午夜免a费看大片中文4 | 一对一色视频聊天a | 99久久99久久免费精品蜜臀 | 欧美日韩欧美日韩在线观看视频 | 免费国产成人高清在线视频 | 最大胆裸体人体牲交 | 精品香蕉在线观看视频 | 精品无码av无码免费专区 | 狠狠色狠狠色综合人人 | 狠狠噜天天噜日日噜 | 九九精品在线观看 | 天堂在线中文网 | 思思re热免费精品视频66 | 国产91色 | 亚洲精品一本之道高清乱码 | a级片中文字幕 | 自拍偷自拍亚洲精品牛影院 | 亚洲情趣 | 日韩亚洲精品视频 | 88成人免费快色 | 一区二区三区网址 | 中文av一区二区 | 亚洲精品无码久久久 | 国产精品久久人妻无码网站一区 | aaa少妇高潮大片免费看 | 欧美日韩久| 国产在线精品成人一区二区三区 | 全球av集中精品导航福利 | 性欧美在线视频 | 日韩一区二区高清视频 | tube·88hdxxxx国产 | 亚洲另类色综合网站 | 天天躁日日躁狠狠躁800凹凸 | 嘿咻视频在线观看 | 男人边吃奶边做好爽免费视频 | 国产亚洲一卡2卡3卡4卡新区 | 尤物av午夜精品一区二区入口 | 成人精品视频在线播放 | 国产成人啪精品视频免费网 | 337p人体 欧洲人体 亚洲 | 日韩一片| 国产原创av中文在线观看 | 精品久久8x国产免费观看 | 毛片女人18片毛片点击进入 | 中文字幕免费播放 | 久久婷婷成人综合色 | 丰满老女人乱妇dvd在线播放 | 91视频你懂得 | 男女免费观看做爰视频在线观看 | 24小时日本在线www免费的 | 国产精品免费久久久久久久久久中文 | 女女互揉吃奶揉到高潮视频 | 亚洲精品一区二区三区香蕉 | 国产日韩欧美二区 | 无码成人精品区在线观看 | 主站蜘蛛池模板: 蛛词}| 91成人xxx | 懂色aⅴ精品一区二区三区 狠狠干福利视频 | 激情无码人妻又粗又大中国人 | 免费成人深夜夜 | 羞羞麻豆国产精品1区2区3区 | 99久久99久久精品国产片果冻 | 国产av午夜精品一区二区三 | 中文字幕女教师julia视频 | 欧美性欧美巨大黑白大战 | 精品国产自在现线电影 | 无遮挡1000部拍拍拍欧美劲爆 | 看污片网站 | av免费在线观看不卡 | 国产精品色片 | 黄色国产一级 | 免费成人欧美 | 91精品国产99久久久久久久 | 欧美日韩在线观看成人 | 国语自产少妇精品视频蜜桃 | 亚洲精品国产一区二区小泽玛利亚 | 97久久久亚洲综合久久88 | 欧美不卡一区 | 国产精品欧美日韩在线 | 国偷自产一区二区三区在线视频 | 亚洲一区高清视频 | 国产成人综合欧美精品久久 | 91久久精品日日躁夜夜躁国产 | 狠狠色狠狠色综合网老熟女 | a精品| 天天躁日日躁狠狠躁日日躁 | 国产欧亚州美日韩综合区 | 成人免费xxxxx在线视频 | 国产真实露脸乱子伦原著 | 免费国产污网站在线观看 | www亚洲精品久久久无码 | 欧美多人片高潮野外做片黑人 | 91麻豆精品一二三区在线 | 久久丫免费无码一区二区 | 乱人伦人妻精品一区二区 | 五月精品视频 | 亚洲精品一区二区玖玖爱 | 极品少妇的粉嫩小泬看片 | 婷婷成人亚洲综合国产xv88 | 春药按摩人妻弓中文字幕 | 又爽又大又黄a级毛片在线视频 | 中文字幕www| 中文天堂最新版在线www | 日韩中文人妻无码不卡 | 亚洲欧美在线人成最新 | 久久久久久美女 | 97人人爽人人澡人人精品 | 成人国产片视频在线观看 | 97视频在线观看免费 | 国产欧美日韩视频一区二区三区 | 久久永久免费人妻精品直播 | 日韩第六页 | 黄色片视频在线免费观看 | 无码孕妇孕交在线观看 | 亚洲s码欧洲m码吹潮 |