赞
踩
前言:作者基本为电脑桌面软件开发小白,搜索网上的教程中踩了不少坑,在此整理分享最基础的vs环境下c++开发snap7应用环境搭建,完成第一条snap7与PLC成功通信。
1.打开vs,新建 控制台应用项目→输入项目名称→新建
2.找到源文件 “项目名称.cpp” 的文件所在的目录并记住
3.将下载好的snap7库压缩包解压并根据实际使用编译环境选择“snap7.lib”和“snap7.dll”两个文件,以及“snap7.cpp”和“snap7.h”两个文件,并将这4个文件复制到 2 中的目录下
如我的环境为win32,路径在 "xxx\snap7-full-1.4.1\release\Windows\Win32"以及“xxx\snap7-full-1.4.1\examples\cpp”中
4.在vs中,需配置项目属性(快捷键:Alt+Enter)的链接器,或者菜单栏“项目”→“项目名称属性”→“配置属性”→“链接器”→“常规”→“附加库目录”,将.lib和.dll文件所在文件夹路径添加到里面并应用
5.在 插入→附加依赖项中手动输入.lib文件名,并应用
6.在解决方案资源管理器中,头文件→添加现有项→snap7.h,源文件→添加现有项→snap7.cpp
至此,环境已配置好
1.PLC端根据需求选择设置访问级别;新建一个全局DB块,并把优化的块访问去掉;下载硬件配置到PLC中
2.在设备组态中可查看PLC的机架号(导轨),插槽号
3.PLC端在创建的DB块中加入几个Static量,添加好后编译,可看到偏移量
4.在自己创建的.cpp文件中,引入头文件snap7.h,编写程序
下面这段代码的功能为读取PLC中代号为10001的DB中的8个Byte,并打印在屏幕上。
- #include <iostream>
- #include "snap7.h"
-
- using namespace std;
-
- unsigned char TestValHex[8];
- TS7Client* MyClient;
-
- void SymplyGet()
- {
- MyClient = new TS7Client();
- MyClient->ConnectTo("10.17.103.2", 0, 1); //PLC的IP地址,机架号,插槽号
- MyClient->DBRead(10001, 0, 8, &TestValHex); //PLC中的DB块编号,起始字节,要读取的字节长度,将要写入本地的变量
- delete MyClient;
- }
-
- int main()
- {
- SymplyGet();
-
- for (int a = 0; a < 8; a++) {
- cout << "PLC_Data" << a << ":" << hex << int(TestValHex[a]) << endl;
- }
-
- return 0;
- }
5.点击调试,得到运行结果
成功,接下来请自由发挥。
更多snap7函数请参考下载的库文件包里的使用手册
参考手册路径在 xxx\snap7-full-1.4.1\doc\Snap7-refman.pdf
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。