QT+minggw编译器下配置snap7库

强调,只有在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
在这里插入图片描述
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值