日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Snap7模块在vs下的开发应用

發(fā)布時間:2023/12/15 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 Snap7模块在vs下的开发应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

本實例主要分為三部分。第一部分:vs2013的配置,第二部分:snap7的dll常用函數(shù)何功能的介紹。第三部分:調(diào)用snap7的是一個實例應(yīng)用。

一、vs2013配置

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

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

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

二、snap7的dll常用函數(shù)功能介紹

2.1ConnectTo(constchar*RemAddress,intRack,intSlot);

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

// *RemAddress PLC的IP地址,

// Rack s7200SMART PLC的齒數(shù),一般為0

// Slot s7200SMART PLC的槽數(shù),一般為1

2.2Disconnect();

//斷開PC與PLC的連接

2.3DBRead(intDBNumber,intStart,intSize,void*pUsrData);

//讀V區(qū)的Byte值

//DBNumber讀V區(qū)識別號碼,一般為1

//Start讀PLC的起始地址

//Size讀PLC的字節(jié)個數(shù)

//*pUsrData數(shù)據(jù)緩沖區(qū),函數(shù)讀到的數(shù)據(jù)存在這個緩沖區(qū)內(nèi)

2.4DBWrite(intDBNumber,intStart,intSize,void*pUsrData);//寫V區(qū)的Byte值

2.5MBRead(intStart,intSize,void*pUsrData);//讀M區(qū)的Byte值

2.6MBWrite(intStart,intSize,void*pUsrData);//寫M區(qū)的Byte值

2.7EBRead(intStart,intSize,void*pUsrData);//讀O區(qū)的Byte值

2.8EBWrite(intStart,intSize,void*pUsrData);//寫O區(qū)的Byte值

2.9ABRead(intStart,intSize,void*pUsrData);//讀I區(qū)的Byte值

2.10ABWrite(intStart,intSize,void*pUsrData);//寫I區(qū)的Byte值

2.11TMRead(intStart,intAmount,void*pUsrData);//讀T區(qū)的Byte值

2.12TMWrite(intStart,intAmount,void*pUsrData);//寫T區(qū)的Byte值

2.13CTRead(intStart,intAmount,void*pUsrData);//讀C區(qū)的Byte值

2.14CTWrite(intStart,intAmount,void*pUsrData);//寫C區(qū)的Byte值

2.15DReadW(intDBNumber,intStart,intSize,WORD*pUsrData);//讀V區(qū)的Word值

2.16DReadDW(intDBNumber,intStart,intSize,DWORD*pUsrData);//讀V區(qū)的DWord值

2.17DWriteW(intDBNumber,intStart,intSize,WORD*pUsrData);//寫V區(qū)的Word值

2.18DWriteDW(intDBNumber,intStart,intSize,DWORD*pUsrData);//讀V區(qū)的DWord值

2.19ReadBit(intArea,intByteAddr,intBitNo,BOOL&BitValue);//函數(shù)功能:讀PLC某個區(qū)域的值

//Area表示內(nèi)存區(qū)。取值0x84:D區(qū) 0x83:M區(qū) 0x82:O區(qū) 0x81:I區(qū) 0x1C:C區(qū) 0x1D:T區(qū)

//ByteAddr表示起始字節(jié)地址

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

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

2.20ReadVBit(intByteAddr,intBitNo,BOOL&BitValue);//函數(shù)功能:讀PLC的V區(qū)域值

2.21WriteBit(intArea,intByteAddr,intBitNo,BOOLBitValue);//函數(shù)功能:讀PLC某個區(qū)域的值

//Area表示內(nèi)存區(qū)。取值0x84:D區(qū) 0x83:M區(qū) 0x82:O區(qū) 0x81:I區(qū) 0x1C:C區(qū) 0x1D:T區(qū)

//ByteAddr表示起始字節(jié)地址

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

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

2.22WriteVBit(intByteAddr,intBitNo,BOOLBitValue);//函數(shù)功能:寫PLC的V區(qū)域值

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

2.24SetVBit(intByteAddr,intBitNo);//函數(shù)功能:置PLC的V區(qū)域某個位的值為1

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

2.26ResetVBit(intByteAddr,intBitNo);//函數(shù)功能:置位PLC的V區(qū)域某個位的值為0

2.27ReadArea(intArea,intDBNumber,intStart,intAmount,intWordLen,void*pUsrData);

//讀PLC某個區(qū)域的值

//Area表示內(nèi)存區(qū)。取值0x84:V區(qū) 0x83:M區(qū) 0x82:O區(qū) 0x81:I區(qū) 0x1C:C區(qū) 0x1D:T區(qū)

//DBNumber表示區(qū)域號,一般為1

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

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

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

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

//*pUsrData表示數(shù)據(jù)緩沖區(qū),讀取的數(shù)據(jù)存入該緩沖區(qū)

2.28WriteArea(intArea,intDBNumber,intStart,intAmount,intWordLen,void*pUsrData);

//寫PLC某個區(qū)域的值

//Area表示內(nèi)存區(qū)。取值0x84:V區(qū) 0x83:M區(qū) 0x82:O區(qū) 0x81:I區(qū) 0x1C:C區(qū) 0x1D:T區(qū)

//DBNumber表示區(qū)域號,一般為1

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

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

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

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

//*pUsrData表示數(shù)據(jù)緩沖區(qū),寫入PLC的數(shù)據(jù)存入該緩沖區(qū)

三、調(diào)用snap7的是一個實例

//創(chuàng)建一個指向TS7Client類的指針

TS7Client* client =newTS7Client;

//連接PLC

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

//創(chuàng)建數(shù)據(jù)接收緩沖區(qū)

BYTEbuff[10] = { 0 };

//讀V區(qū)0地址的1位數(shù)據(jù)

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

//斷開與PLC連接

client->Disconnect();

總結(jié)

以上是生活随笔為你收集整理的Snap7模块在vs下的开发应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。