QT+minggw编译器下配置snap7库

C++上位软件通过Snap7开源访问西门子S7-1200/S7-1500数据块的方法 Snap7是一款用于通信的PLC,是一种轻量级的现代PLC通信Snap7可在多个平台上使用,包括Windows PC,Linux,Raspberry Pi和其他和基于C++的平台。该是完全开源的,采用了MIT协议进行发布。Snap7是用C语言编写的,提供了对S7-200,S7-300和S7-400 PLC系列的广泛支持,还可以连接到CPU,CP和OP通信适配器。 阅读详情

强调,只有在mingw编译器下才能用这个方法
首先先去下载snap7库,我下载的是snap7-full-1.4.1,这个csdn到处都有,也可去官网下:http://snap7.sourceforge.net/,,,将其解压到你创建项目的根目录下
然后将将里面的 snap7.cpp snap7.h.snap7.dll,snap7.lib文件复制到你创建的项目根目录下。如下图在这里插入图片描述

重点:

在pro文件中添加下述代码
LIBS += D:\Qt\Qt5.9.1\Tools\mingw530_32\i686-w64-mingw32\lib\libws2_32.a
LIBS += D:\Qt\Qt5.9.1\Tools\mingw530_32\i686-w64-mingw32\lib\libwinmm.a
(这个去自己安装qt的路径下查找)

SOURCES +=
main.cpp
mywidget.cpp
snap7.cpp
snap7-full-1.4.1/src/core/s7_client.cpp
snap7-full-1.4.1/src/core/s7_isotcp.cpp
snap7-full-1.4.1/src/core/s7_micro_client.cpp
snap7-full-1.4.1/src/core/s7_partner.cpp
snap7-full-1.4.1/src/core/s7_peer.cpp
snap7-full-1.4.1/src/core/s7_server.cpp
snap7-full-1.4.1/src/core/s7_text.cpp
snap7-full-1.4.1/src/lib/snap7_libmain.cpp
snap7-full-1.4.1/src/sys/snap_msgsock.cpp
snap7-full-1.4.1/src/sys/snap_sysutils.cpp
snap7-full-1.4.1/src/sys/snap_tcpsrvr.cpp
snap7-full-1.4.1/src/sys/snap_threads.cpp

HEADERS +=
mywidget.h
snap7.h
snap7-full-1.4.1/src/core/s7_client.h
snap7-full-1.4.1/src/core/s7_firmware.h
snap7-full-1.4.1/src/core/s7_isotcp.h
snap7-full-1.4.1/src/core/s7_micro_client.h
snap7-full-1.4.1/src/core/s7_partner.h
snap7-full-1.4.1/src/core/s7_peer.h
snap7-full-1.4.1/src/core/s7_server.h
snap7-full-1.4.1/src/core/s7_text.h
snap7-full-1.4.1/src/core/s7_types.h
snap7-full-1.4.1/src/lib/snap7_libmain.h
snap7-full-1.4.1/src/sys/snap_msgsock.h
snap7-full-1.4.1/src/sys/snap_platform.h
snap7-full-1.4.1/src/sys/snap_sysutils.h
snap7-full-1.4.1/src/sys/snap_tcpsrvr.h
snap7-full-1.4.1/src/sys/snap_threads.h
snap7-full-1.4.1/src/sys/sol_threads.h
snap7-full-1.4.1/src/sys/unix_threads.h
snap7-full-1.4.1/src/sys/win_threads.h
snap7.h

unix|win32: LIBS += -L$$PWD/./ -lsnap7

INCLUDEPATH += $$PWD/.
snap7-full-1.4.1/src/lib/
snap7-full-1.4.1/src/core/
snap7-full-1.4.1/src/sys/

DEPENDPATH += $$PWD/.

最后我试了下,能编译成功并且连接上plc
界面

void snap7Window::on_connect_clicked()
{
    const char *ip =ui->ip->text().toStdString().c_str();
    int rack = ui->rack->text().toInt();
    int slot = ui->slot->text().toInt();
    int reg = client->ConnectTo("192.168.2.1",rack,slot);
    if(reg == 0){
        qDebug()<<"success";
        byte buffer[256];
        client->DBRead(1,100,1,&buffer);
        qDebug()<<"success";
        qDebug()<<buffer[0];
    }else{
        qDebug()<<reg;
        qDebug()<<"failed";
    }
}

在这里插入图片描述

2021/05/08补充:

之前出现该界面连接上PLC后,200smart的step7编程界面就连不上PLC了。或者200smart的step7编程界面连接上了,该界面就连接不上PLC。

原因是,使用snap7连接plc可能默认连接类型会设为PG连接类型,这个类型是Step7编程软件与PLC的连接类型,而且该连接类型就只提供一个连接。

因此我们用snap7连接plc时,要更改其连接类型,选择OP连接类型,详细可见snap7官方文档,现在我po官方api
在这里插入图片描述
在这里插入图片描述

snap7组件:实现西门子S7 PLC通讯的跨平台解决方案 Snap7 是一个开放源代码的通信,它为工业自动化领域提供了强大的支持,特别是针对 Siemens S7 系列 PLC 的编程。Snap7 通过提供丰富的接口,使得开发者可以在多种编程语言中实现与 S7 PLC 设备的高效通信。它的出现打破了商业软件在此领域的垄断,降低了自动化项目的成本,加速了智能工厂的构建。C/C++作为Snap7的原生语言,提供了最全面的功能支持。C/C++接口直接与底层硬件和操作系统交互,提供了高性能和灵活性。C/C++接口具有以下特性:强类型系统。 阅读详情

相关推荐

Qt使用snap7与西门子通讯示例

自动生成报文,只需输入IP地址与端口号即可使用,支持real(float)数据类型、INT数据类型、bool数据类型、string数据类型进行读写

C++[QT] 环境下Snap7的使用

DBRead(DB号, 起始地址, 字节数, 返回的字节数组);DBWrite(DB块号,起始地址,字节大小,写入的字节数组);

weixin_37881839的博客 6228

西门子plc的以太网通信snap7-full-1.4.0

西门子plc的以太网通信,支持S7-200、S7-200 Smart、S7-300、S7-400、S7-1200、S7-1500,打开压缩文件,选择release\Windows\下面有32位和64位的snap7.dll和snap7.lib

Qt5.12.3以上+MinGW编译32位MYSQL8.0驱动,解决QSqlDatabase: QMYSQL driver not loaded

Qt5.12.3以上+MinGW编译32位MYSQL8.0驱动,解决QSqlDatabase: QMYSQL driver not loaded 最近更新QT后,发现版本没有内置mysql数据驱动,qt报错的提示"QSqlDatabase: QMYSQL driver not loaded,QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7".从这里可以清晰的知道目前,qt5.12.3及以上和qt5.13.0及以上,.

cai901022的博客 1070

Qt5调用Snap7

Snap7是一个与西门子PLC通信的开源, 在网上下载了一个例子, 研究了一天终于通信成功了, 在此记录一下 项目文件 win32:LIBS += C:\Qt\Qt5.7.0\Tools\mingw530_32\i686-w64-mingw32\lib\libws2_32.a win32:LIBS += C:\Qt\Qt5.7.0\Tools\mingw530_32\i686-w64-mingw32\lib\libwinmm.a INCLUDEPATH += snap7-full-1.4.2/relea

qq_18822805的博客 3220

Zmotion运控器+Hiwin伺服驱动的Qt上位机开发(一):EtherCAT通讯、基本单轴控制、回零功能的实现

学习如何基于Qt框架、用Zmotion运动控制器开发编写上位机以实现一些基础功能。

Zaiton的博客 6251

Qt下调用Snap7与西门子PLC通信

本文主要讲述了在Qt下调用Snap7与西门子PLC进行通信,在这里将Snap7的源码与动态整合在一起封装了一个自己的Snap7Lib.pri子模块,方便在之后的工作中进行使用,也希望可以帮助到大家,如有错误之处,欢迎大家批评指正。

XCJandLL的博客 3158

Qt下基于snap7西门子PLC通信.zip

Qt基于snap7第三方西门子PLC通信示例,附件中包括snap7.dll、snap7.lib、Qt示例源码和配置文档

snap7qt5下的配置程序存档

snap7qt5下的配置程序存档。

QtSnap7:Qt snap7 S7-1200循环读取

QtSnap7 [wiki] Qt5.9 snap7 S7-1200循环读取 快照7 Qt5

QT 两种写法 LIBS += .a和LIBS += -L -l

单个或路径特殊时,用直接路径写法更明确多个且路径统一时,用-L-l写法更简洁在 OpenCV 配置中,两种写法可以互换,例如:qmake# 直接路径写法# 等效的 -L -l 写法INCLUDEPATH +=D:/OpenCV/build/include \ D:/OpenCV/build/include/opencv2 使用 \包含两个路径在 QMake 中,使用反斜杠是为了将一行代码拆分成多行书写,使配置更清晰易读。你的写法:qmake等价于单行写法:qmake。

海涛高软 696

利用qt\vs加载进去

1、在qt中加载 (1)可以将所有的都放在一个libs文件夹下: 如图所示: (2)就可以直接将libs文件下放置你所需要的,可以新建文件:如图: (3)然后就是将a文件夹中加入.h、.dll、.lib三个文件, b文件下也是需要加入对应的.h、.dll、.lib三个文件,这样就是归类完毕了 (4)在代码的.h文件中,需要调用刚刚加入的,首先需要在pro文件...

Littlehero_121的博客 1778

八、Qt项目实现对西门子PLC的读写操作(snap7)——C++

对西门子的PLC进行读写操作,个人小笔记,干货满满!

beyond谚语的博客 2877

Linux C/C++学习2:静态与动态

本文档主要是对LInux C静态和动态的学习记录,便于以后查阅。

回笼觉教父的博客 912

Qt MinGW编译CyAPI源码生成静态,使用方法及测试

1. 前言 之前写了如何使用Qt mingw编译CyAPI源码生成静态Qt MinGW编译CyAPI源码生成静态 今天写一下使用方法和测试过程。 2. 使用 2.1 将准备好的静态和头文件拷贝到工程目录下,或者放到自定义的目录下,我的目录结构: 2.2 新建Qt工程,在项目文件(.pro文件)中加入以下内容: 我的和头文件都在工程目录下,所以此处配置路径如下,如果自己修改了路径直接在此处修改即可。或者右键项目添加外部静态,选择和头文件目录。 LIBS += -L$$PWD/ -lCyAPIM

VectorAL的博客 2425

speexdsp实现音频3A算法,speexdsp编译,C/C++

speexdsp编译,speexdsp调用,音频3A算法,回声消除,噪声抑制,自动增益,QT+ubuntu环境测试

weixin_40355471的博客 7722
上一篇: 基于tcp通信的qt上位机界面与 200smart通讯案例
下一篇: OpenCV入门学习(1)
木古枯123
博客等级 码龄7年 255粉丝 15原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值