静态调用的dll的一个实例
来源:互联网 发布:淘宝上买钢琴 编辑:程序博客网 时间:2024/04/27 18:13
本实例主要分为三部分。第一部分: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();
- 静态调用的dll的一个实例
- DLL 的静态调用实例代码
- DLL的静态调用
- dll的静态调用和动态调用使用说明及简单实例
- Qt5.9动态调用c++的dll方法(Qt5.9调用MQTT的一个实例)
- Unity3D教程:静态调用C#的dll
- C++类的DLL,C++静态调用。
- 静态代理的一个实例
- 静态智能指针变量调用DLL引发的一个CRASH给的启示
- vc调用matlab生成的dll实例
- c++调用c#的dll + 实例
- php调用dll的实例操作动画
- VS 2015 DLL的创建、静态调用和动态调用
- dll静态调用-修改lib中dll名称就能改变调用dll的名称
- C++生成dll和调用dll的方法实例
- C++生成dll和调用dll的方法实例
- C++生成dll和调用dll的方法实例
- 保证程序只有一个实例运行 &&& 动态调用DLL的研究
- OSI七层与TCP/IP五层网络架构详解
- cocos-lua学习笔记(六)一个简单的Button
- 如何使用SQLyog将大量数据导入mysql数据库
- Android中保存和恢复Fragment状态的最好方法android:freezesText属性奇葩记录
- 动态根据实体类的属性获取和设置属性值
- 静态调用的dll的一个实例
- poi导出excel表格案例
- 如何在Word2013中删除图片的背景
- 分割字符串-LintCode
- 激活函数
- Redis相关
- Android加壳(加固)原理以及实现
- 二元查找树
- Eclipse中Java代码注释XXX、TODO、FIXME的意义