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(constchar*RemAddress,intRack,intSlot);
//通過PLC的IP地址*RemAddress建立連接。
// *RemAddress PLC的IP地址,
// Rack s7200SMART PLC的齒數,一般為0
// Slot s7200SMART PLC的槽數,一般為1
2.2Disconnect();
//斷開PC與PLC的連接
2.3DBRead(intDBNumber,intStart,intSize,void*pUsrData);
//讀V區的Byte值
//DBNumber讀V區識別號碼,一般為1
//Start讀PLC的起始地址
//Size讀PLC的字節個數
//*pUsrData數據緩沖區,函數讀到的數據存在這個緩沖區內
2.4DBWrite(intDBNumber,intStart,intSize,void*pUsrData);//寫V區的Byte值
2.5MBRead(intStart,intSize,void*pUsrData);//讀M區的Byte值
2.6MBWrite(intStart,intSize,void*pUsrData);//寫M區的Byte值
2.7EBRead(intStart,intSize,void*pUsrData);//讀O區的Byte值
2.8EBWrite(intStart,intSize,void*pUsrData);//寫O區的Byte值
2.9ABRead(intStart,intSize,void*pUsrData);//讀I區的Byte值
2.10ABWrite(intStart,intSize,void*pUsrData);//寫I區的Byte值
2.11TMRead(intStart,intAmount,void*pUsrData);//讀T區的Byte值
2.12TMWrite(intStart,intAmount,void*pUsrData);//寫T區的Byte值
2.13CTRead(intStart,intAmount,void*pUsrData);//讀C區的Byte值
2.14CTWrite(intStart,intAmount,void*pUsrData);//寫C區的Byte值
2.15DReadW(intDBNumber,intStart,intSize,WORD*pUsrData);//讀V區的Word值
2.16DReadDW(intDBNumber,intStart,intSize,DWORD*pUsrData);//讀V區的DWord值
2.17DWriteW(intDBNumber,intStart,intSize,WORD*pUsrData);//寫V區的Word值
2.18DWriteDW(intDBNumber,intStart,intSize,DWORD*pUsrData);//讀V區的DWord值
2.19ReadBit(intArea,intByteAddr,intBitNo,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,intBitNo,BOOL&BitValue);//函數功能:讀PLC的V區域值
2.21WriteBit(intArea,intByteAddr,intBitNo,BOOLBitValue);//函數功能:讀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,intBitNo,BOOLBitValue);//函數功能:寫PLC的V區域值
2.23SetBit(intAddrType,intByteAddr,intBitNo);//函數功能:置位PLC某個位的值為1 AddrType取值:0x84:D區 0x83:M區 0x82:O區 0x81:I區 0x1C : C區 0x1D:T區
2.24SetVBit(intByteAddr,intBitNo);//函數功能:置PLC的V區域某個位的值為1
2.25ResetBit(intAddrType,intByteAddr,intBitNo); //函數功能:置位PLC某個位的值為0 AddrType取值:0x84:D區 0x83:M區 0x82:O區 0x81:I區 0x1C : C區 0x1D:T區
2.26ResetVBit(intByteAddr,intBitNo);//函數功能:置位PLC的V區域某個位的值為0
2.27ReadArea(intArea,intDBNumber,intStart,intAmount,intWordLen,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 : Real0x1c : C區(16Bit) 0x1D:T區(16Bit)
注意:讀Word和DWord功能有問題,高位字節在前,低位字節在后(跟我們的程序反過來)
//*pUsrData表示數據緩沖區,讀取的數據存入該緩沖區
2.28WriteArea(intArea,intDBNumber,intStart,intAmount,intWordLen,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 : Real0x1c : C區(16Bit) 0x1D:T區(16Bit)
注意:讀Word和DWord功能有問題,高位字節在前,低位字節在后(跟我們的程序反過來)
//*pUsrData表示數據緩沖區,寫入PLC的數據存入該緩沖區
三、調用snap7的是一個實例
//創建一個指向TS7Client類的指針
TS7Client* client =newTS7Client;
//連接PLC
client->ConnectTo("192.168.22.198", 0, 1);
//創建數據接收緩沖區
BYTEbuff[10] = { 0 };
//讀V區0地址的1位數據
client->DBRead(1,0, 1, buff);
//斷開與PLC連接
client->Disconnect();
總結
以上是生活随笔為你收集整理的Snap7模块在vs下的开发应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT_B_1026_Java(15分)
- 下一篇: PAT_B_1027_Java(20分)