c++ snap7通信vs环境配置与编程入门

前言:作者基本为电脑桌面软件开发小白,搜索网上的教程中踩了不少坑,在此整理分享最基础的vs环境下c++开发snap7应用环境搭建,完成第一条snap7与PLC成功通信。

准备工作

测试环境

  • win10专业版21H2
  • Visual Studio 2019专业版
  • 博途v16
  • 西门子S7-1516F
  • snap7-full-1.4.1

软件安装(略) 


正文


  • 环境配置

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

 

 

 

 

 

 

  • 13
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值