Snap7模塊在vs下的開發應用


版權聲明:本文為博主原創文章,歡迎各位朋友轉載。轉載時,保留鏈接地址! https://blog.csdn.net/naibozhuan3744/article/details/78557761

本實例主要分為三部分。第一部分:vs2013的配置,第二部分:snap7的dll常用函數何功能的介紹。第三部分:調用snap7的是一個實例應用。

 

一、vs2013配置

1.1 將文件snap7.h,snap7.cpp,snap7.dll,snap7.lib全部加入創建工程的目錄下,其中將snap7.dll放入debug目錄下。

 

 

 

1.2將snap7的dll加入新建的工程

 

1.3在主對話框開頭,加入pragma comment (lib,”snap7.lib”);

 

 

二、snap7的dll常用函數功能介紹

2.1ConnectTo(const char *RemAddress,intRack, int Slot);

//通過PLC的IP地址*RemAddress建立連接。

// *RemAddress PLC的IP地址,

// Rack s7200SMART PLC的齒數,一般為0

// Slot s7200SMART PLC的槽數,一般為1

2.2Disconnect();

//斷開PC與PLC的連接

2.3DBRead(intDBNumber, int Start, int Size, void *pUsrData);

//讀V區的Byte值

//DBNumber讀V區識別號碼,一般為1

//Start讀PLC的起始地址

//Size讀PLC的字節個數

//*pUsrData數據緩沖區,函數讀到的數據存在這個緩沖區內

2.4DBWrite(intDBNumber, int Start, int Size, void *pUsrData);    //寫V區的Byte值

2.5MBRead(int Start, int Size, void*pUsrData);                //讀M區的Byte值

2.6MBWrite(int Start, int Size, void*pUsrData);               //寫M區的Byte值

2.7EBRead(int Start, int Size, void*pUsrData);                //讀O區的Byte值

2.8EBWrite(int Start, int Size, void *pUsrData);               //寫O區的Byte值

2.9ABRead(int Start, int Size, void*pUsrData);                //讀I區的Byte值

2.10ABWrite(int Start, int Size, void*pUsrData);              //寫I區的Byte值

2.11TMRead(int Start, int Amount,void *pUsrData);             //讀T區的Byte值

2.12TMWrite(int Start, int Amount,void *pUsrData);               //寫T區的Byte值

2.13CTRead(int Start, int Amount,void *pUsrData);             //讀C區的Byte值

2.14CTWrite(int Start, int Amount,void *pUsrData);               //寫C區的Byte值

2.15DReadW(intDBNumber, int Start, int Size, WORD *pUsrData);    //讀V區的Word值

2.16DReadDW(intDBNumber, int Start, int Size, DWORD *pUsrData);  //讀V區的DWord值

2.17DWriteW(intDBNumber, int Start, int Size, WORD *pUsrData);      //寫V區的Word值

2.18DWriteDW(intDBNumber, int Start, int Size, DWORD *pUsrData); //讀V區的DWord值

2.19ReadBit(int Area, intByteAddr, int BitNo, BOOL &BitValue);      //函數功能:讀PLC某個區域的值

//Area表示內存區。取值0x84:D區  0x83:M區  0x82:O區  0x81:I區  0x1C:C區  0x1D:T區

//ByteAddr表示起始字節地址

      //BitNo表示起始字節中的第BiteNo位(比如:v1.2表示v區起始地址1的第2位)

//BitValue表示要設置的值,只能為0或者1
 

 

2.20ReadVBit(intByteAddr, int BitNo, BOOL &BitValue);           //函數功能:讀PLC的V區域值  

2.21WriteBit(int Area, intByteAddr, int BitNo, BOOL BitValue);      //函數功能:讀PLC某個區域的值

//Area表示內存區。取值0x84:D區  0x83:M區  0x82:O區  0x81:I區  0x1C:C區  0x1D:T區

//ByteAddr表示起始字節地址

      //BitNo表示起始字節中的第BiteNo位(比如:v1.2表示v區起始地址1的第2位)

//BitValue表示要設置的值,只能為0或者1

2.22WriteVBit(intByteAddr, int BitNo, BOOL BitValue);           //函數功能:寫PLC的V區域值

2.23SetBit(intAddrType, int ByteAddr, int BitNo);             //函數功能:置位PLC某個位的值為1  AddrType取值:0x84:D區  0x83:M區  0x82:O區  0x81:I區  0x1C : C區  0x1D:T區

2.24SetVBit(intByteAddr, int BitNo);                       //函數功能:置PLC的V區域某個位的值為1

2.25ResetBit(intAddrType, int ByteAddr, int BitNo);              //函數功能:置位PLC某個位的值為0 AddrType取值:0x84:D區  0x83:M區  0x82:O區  0x81:I區  0x1C : C區  0x1D:T區

2.26ResetVBit(intByteAddr, int BitNo);                        //函數功能:置位PLC的V區域某個位的值為0

2.27ReadArea(int Area, intDBNumber, int Start, int Amount, int WordLen, void *pUsrData);

//讀PLC某個區域的值

//Area表示內存區。取值0x84:V區  0x83:M區  0x82:O區  0x81:I區  0x1C:C區  0x1D:T區

 

//DBNumber表示區域號,一般為1

//Start表示起始地址。當函數功能為讀bit時,int addr =Start/8; int bit = Start%8;此時表示第addr地址的第Bit位。如Start = 8;則表示第1號地址的第0位,即addr.Bit(1.0);

//Amount表示要讀取的數據長度,當函數類型為讀bit時,只能為1

//WordLen決定函數的功能,函數功能有讀位,字節,字,雙字。取值: 0x1:Bit  0x2:Byte  0x4:Word  0x6:DW  0x8 : Real 0x1c : C區(16Bit)  0x1D:T區(16Bit)

注意:讀Word和DWord功能有問題,高位字節在前,低位字節在后(跟我們的程序反過來)

//*pUsrData表示數據緩沖區,讀取的數據存入該緩沖區

2.28WriteArea(int Area, intDBNumber, int Start, int Amount, int WordLen, void *pUsrData);

//寫PLC某個區域的值

//Area表示內存區。取值0x84:V區  0x83:M區  0x82:O區  0x81:I區  0x1C:C區  0x1D:T區

 

//DBNumber表示區域號,一般為1

// Start表示起始地址。當函數功能為寫bit時,int addr =Start/8; int bit = Start%8;此時表示第addr地址的第Bit位。如Start = 8;則表示第1號地址的第0位,即addr.Bit(1.0);

//Amount表示要寫的數據長度,當函數類型為寫bit時,只能為1

// WordLen決定函數的功能,函數功能有寫位,字節,字,雙字。取值: 0x1:Bit  0x2:Byte  0x4:Word  0x6:DW  0x8 : Real 0x1c : C區(16Bit)  0x1D:T區(16Bit)

注意:讀Word和DWord功能有問題,高位字節在前,低位字節在后(跟我們的程序反過來)

//*pUsrData表示數據緩沖區,寫入PLC的數據存入該緩沖區

 

三、調用snap7的是一個實例

//創建一個指向TS7Client類的指針

   TS7Client* client = new TS7Client;  

   //連接PLC

   client->ConnectTo("192.168.22.198", 0, 1); 

   //創建數據接收緩沖區

   BYTE buff[10] = { 0 };  

   //讀V區0地址的1位數據

   client->DBRead(1,0, 1, buff);

   //斷開與PLC連接

client->Disconnect();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM