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

article/2025/7/17 1:38:25

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

准备工作

  • Visual Studio 2013 及以后版本(以下简称vs)Visual Studio 较旧的下载 - 2017、2015 和以前的版本 (microsoft.com)icon-default.png?t=LA92https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
  • 西门子PLC(step7或博途请自行下载,硬件或仿真均可)
  • snap7库文件Snap7 - Browse Files at SourceForge.neticon-default.png?t=LA92https://sourceforge.net/projects/snap7/files/

测试环境

  • 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

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/yjm53IyK.shtml

相关文章

Python使用python-snap7实现西门子PLC通讯

Python简介 Python是开源的高级编程语言之一&#xff0c;广泛应用于人工智能、数据分析、爬虫等领域。由于它拥有大量的开源库和标准库&#xff0c;以及简单且贴近自然语言的语法&#xff0c;所以即便是从未接触过编程的人&#xff0c;也能快速上手。2021年10月&#xff0c;Py…

手把手教你强化学习 (三)马尔可夫决策过程与贝尔曼方程

马尔可夫决策过程 (Markov Decision Process&#xff0c;MDP)是序贯决策(sequential decision)的数学模型&#xff0c;一般用于具备马尔可夫性的环境中。最早的研究可以追溯到最优控制 (optimal control)问题上&#xff0c;1957年&#xff0c;美国学者Richard Bellman通过离散随…

数学建模,8月学习感想

数学建模概览 Matlab入门常用的操作指令数据类型 建模流程分析问题建立模型&求解模型数据建模技术优化技术连续模型求解评价模型求解机理建模方法 撰写论文前情提示正文部分配套说明排版工具 写在最后 长文预警&#xff01;&#xff01;&#xff01; Matlab入门 Matlab可谓…

「从零入门数据分析」01_ 数据分析概述

作者 | gongyouliu 编辑 | auroral-L 本篇文章共8628字&#xff0c;预计阅读时间35分钟。 大家好&#xff0c;我是强哥。一个热爱暴走、读书、写作的人&#xff01; 本章目录 一、数据分析的发展简史 二、数据分析的应用场景 三、常用的数据分析工具与技术 四、数据分析的思维…

数学建模心得分享(校赛)——2021.6.7

一、个人感受 总结为&#xff1a;找队友->讲方法->找知识->善讨论->勤实践 基础能力(个人见解)&#xff1a; 第一次比赛完&#xff0c;还有这刚刚实习完的余温&#xff0c;工作中的思维的惯性还时刻在影响着我&#xff0c;身边的人几乎都为了自己的生活而奋斗。有幸…

matlab在管理学中的应用简述【一】

1、问题研究与描述 1.1 问题与模型 &#xff08;1&#xff09;问题 问题与人们的日常生活和工作有着密切的联系&#xff0c;人们每天都要面对各种各样的问题需要处理和解决。 如&#xff1a;资源配置问题&#xff0c;救灾抢险问题&#xff0c;时间安排问题&#xff0c;生产组…

大数据和人工智能属于什么专业 - 学大数据和人工智能出来做什么

人工智能专业主要从事什么工作&#xff1f; 1、算法工程师。进行人工智能相关前沿算法的研究&#xff0c;包括机器学习、知识应用、智能决策等技术的应用。以机器学习的过程为例&#xff0c;涉及到数据收集、数据整理、算法设计、算法训练、算法验证、算法应用等步骤&#xff0…

方差分析 anova一般指方差分析

方差分析(Analysis of Variance,简称ANOVA),又称“ 变异数分析”或“F检验”,是R.A.Fisher发明的,用于两个及两个以上 样本均数差别的 显著性检验。 由于各种因素的影响,研究所得的数据呈现波动状。造成波动的原因可分成两类,一是不可控的随机因素,另一是研究中施加的对…

继续无题

企业分为&#xff1a;决策层、管理层、执行层。 所以企业也会有&#xff1a;决策软件、管理软件、执行软件。 &#xff08;1&#xff09; 啥叫分析&#xff1f;分析就是根据现状&#xff0c;思考原因&#xff0c;这就是典型的归因&#xff1a;从现在往过去捋&#xff0c;这就叫…

数学建模经验分享及比赛时间汇总

一、浅谈数学建模1.1 什么是数学建模 先来看看官方的解释&#xff1a;数学建模是运用数学的语言和方法&#xff0c;通过抽象&#xff0c;简化建立能近似刻画“解决”实际问题的一种强有力的数学手段。数学建模就是用数学语言描述实际现象的过程。这里的实际现象既包涵具体的自然…

数模论文写作入门——正文篇

提示&#xff1a;数模论文写作入门还有“首页篇”和“排版篇”&#xff0c;可查看专栏补充。 目录 前言 一、问题重述 1、改词降重 水论文方法 2、 查阅相关背景资料 引用高大上 二、问题分析 三、模型假设 1.题目中明确给出假设条件 2.排除生活中小概率时间&#xff08…

SPSS统计分析过程包括描述性统计、均值比较、一般线性模型、相关分析、回归分析、对数线性模型、聚类分析、数据简化、生存分析、时间序列分析、多重响应等几大类...

https://www.zhihu.com/topic/19582125/top-answershttps://wenku.baidu.com/search?wordspss&ieutf-8&lm0&od0 SPSS 18.0由17个功能模组组成&#xff1a; Base System 基础程式 Advanced Models 高等统计模组(GEE/GLM/存活分析) Regression Models 进阶回归模组 …

数学建模论文写作

声明&#xff1a;本文为本人在b站学习清风数学建模的学习笔记 数学建模清风——论文写作方法教程&#xff08;国赛和美赛&#xff09; 文章目录 论文写作方法国赛摘要摘要的开头段摘要的中间段摘要的结尾段摘要中常见的废话完整摘要参考关键词 &#xff08;正文部分&#xff09…

机器学习中的 Shapley 值怎么理解?

导语&#xff1a;在集体合作中&#xff0c;如何公平分配奖励&#xff1f; 图片来源&#xff1a;https://unsplash.com/photos/TL5Vy1IM-uA 我第一次听说 Shapley 值是在学习模型可解释性的时候。我知道了 SHAP&#xff0c;它是一个框架&#xff0c;可以更好地理解为什么机器学…

做数据分析如何从囚徒困境到合作的进化

小飞象交流会 即使拿到一手烂牌&#xff0c;也要打出一串王炸。这是场无限游戏&#xff0c;努力成为牌桌上最后一名玩家。 内部交流│7期 做数据分析如何 从囚徒困境到合作的进化 data analysis ●●●● 分享人&#xff1a;周海鹏 ‍ ‍‍ 在推进业务线各种项目的过程中&#…

博弈论学习(二)——完全信息静态博弈

这一篇主要介绍非合作博弈中&#xff0c;完全信息静态博弈的相关知识。 切记非合作博弈的条件&#xff1a;参与人具有足够智力且极端个人主义&#xff0c;即以自己的效用作为唯一的衡量标准。 要理解完全信息静态博弈&#xff0c;首先要了解以下2个概念&#xff1a; 完全信息…

Nabla算子

Nabla算子的定义&#xff1a; 梯度&#xff1a; 散度&#xff1a; 旋度&#xff1a;

Marr-Hildreth边缘检测器

用于边缘检测的算子应该有两个显著的特点&#xff1a; 1.它应该能够计算图中每一个点处的一阶导数或者二阶导数的数字近似的微分算子。 2.它能够被“调整”以便在任何期望的尺寸上其作用。因此&#xff0c;大的算子也可以用于检测模糊边缘&#xff0c;小的算子可以用来检测锐度…

5-3-BP神经网络

文章目录 引入名词BP神经网络NaN独热码Nabla算子 1神经网络1.1 神经元模型1.2 神经元激活函数1.2.1 为什么要使用激活函数&#xff1f;1.2.2为什么激活函数需要非线性函数&#xff1f;1.2.3常用的激活函数sigmoid 激活函数tanh激活函数Relu激活函数 1.3 神经网络结构 2.损失函数…

图像梯度——Sobel算子和Laplacian算子

一、Sobel算子 1、定义 Sobel算子是一种离散的微分算子&#xff0c;结合了高斯平滑和微分求导运算&#xff0c;利用局部拆分寻找边缘&#xff0c;计算所得的是一个梯度的近似值。 Sobel算子|左-右|/|下-上| Scharr算子|左-右|/|下-上| 2、原理 滤波器指由一幅图根据像素点&…