zoukankan      html  css  js  c++  java
  • QT mingw编译器下使用snap7库与西门子200smart-PLC(网口)通信实现代码

    近期想要试一下QT与plc通信,正好朋友有个西门子200smart,于是乎~开整!
    百度了会,发现有个博主写的qt通过snap7来与200smart通信的,那么就来配置snap7吧
    首先去官网下载:https://sourceforge.net/projects/snap7/files/1.4.1/
    我下载的是:snap7-full-1.4.1.zip

    下载完后解压得到:

    将snap7-full-1.4.1文件复制到项目文件内

    在pro文件中添加下述代码

    LIBS += E:Qt5.9.7Toolsmingw530_32i686-w64-mingw32liblibws2_32.a
    LIBS += E:Qt5.9.7Toolsmingw530_32i686-w64-mingw32liblibwinmm.a
    

    (这是我自己qt安装的路径,按自己qt安装路径来)

    将此路径内的snap7.h和snap7.cpp,snap7.dll,snap7.lib文件复制到项目文件内,添加现有文件


    添加完成后如下图:

    继续添加现有文件,如下:

    SOURCES += 
            main.cpp 
            mainwindow.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/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 
        snap7-full-1.4.1/src/lib/snap7_libmain.cpp
    
    HEADERS += 
            mainwindow.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/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-full-1.4.1/src/lib/snap7_libmain.h
    

    鼠标右击项目->添加库->外部库

    配置完成!

    下面我们来写代码和plc通讯
    .h

    TS7Client *client;
    

    .cpp
    初始化

        client = new TS7Client();
        word type = 0x02;
        client->SetConnectionType(type);
    

    建立连接:

        QString strip = ui->lineEdit->text();  // ip
        std::string stri = strip.toStdString();
        const char *ip = stri.c_str();
        qDebug() << "ip:" << ip << endl;
        int rack = ui->lineEdit_2->text().toInt();
        int slot = ui->lineEdit_3->text().toInt();
        int reg = client->ConnectTo(ip,rack,slot);
        if(reg == 0)
        {
            qDebug() << "success" << endl;
            QMessageBox::information(this,"提示","连接成功!");
            BYTE buffer[256];
            client->DBRead(1,100,1,&buffer);
            qDebug() << "success";
        }
        else
        {
            QMessageBox::information(this,"提示","连接失败");
            qDebug() << "failed";
        }
    

    发送数据:

        int i     = ui->lineEdit_4->text().toInt();
        int plcZJ = ui->lineEdit_5->text().toInt();
        byte value[4];
        memset(value,0,sizeof(byte)*4);
        value[0] = (byte)(0xff & i);
        //value[1] = (byte)((0xff00 & i) >> 8);
        //value[2] = (byte) ((0xff0000 & i) >> 16);
        //value[3] = (byte) ((0xff000000 & i) >> 24);
        qDebug() << "value :" << value << endl;
        client->DBWrite(1,plcZJ,1,&value[0]);
    

    构建时可能会提示有的头文件找不到,这需要在pro文件内添加上路径了:

    INCLUDEPATH += ./snap7-full-1.4.1/release/Wrappers/c-cpp/ 
                   ./snap7-full-1.4.1/src/lib/ 
                   ./snap7-full-1.4.1/src/core/ 
                   ./snap7-full-1.4.1/src/sys/
    

    运行后,获取数据正常,发送更改plc内数据正常

  • 相关阅读:
    Oracle新建用户、角色,授权,建表空间
    oracle 创建表空间、创建用户管理该表空间
    后台获取数据,动态更新到网页--无闪烁刷新
    Java获取当前路径
    最实用销售24种技巧(业务必看)转
    四种类型的客户(转)
    800个小炒
    商务称呼礼仪
    人际沟通交流技巧(转)
    拒绝礼仪与技巧(转)
  • 原文地址:https://www.cnblogs.com/ruandahua/p/15465260.html
Copyright © 2011-2022 走看看