当前位置:   article > 正文

西门子 PLC snap7 使用

snap7

Qt hello - 专注于Qt的技术分享平台

一. 需求
集成snap7库,对西门子plc进行访问。
二. 步骤

  1. 下载snap7 库,之后取build/bin/win64 下的 dll 和lib 直接使用。
    Snap7 - Browse /1.4.2 at SourceForge.net

2. 把examples/cpp 下的 snap7.h 和cpp 加到工程里。

3. 封装一个单例 来使用 这个库。

  1. #ifndef PLCMANAGER_H
  2. #define PLCMANAGER_H
  3. #include <QObject>
  4. #include <snap7.h>
  5. class PLCManager : public QObject
  6. {
  7. Q_OBJECT
  8. public:
  9. static PLCManager& getInstance() {
  10. static PLCManager instance;
  11. return instance;
  12. }
  13. PLCManager(const PLCManager&) = delete;
  14. PLCManager& operator=(const PLCManager&) = delete;
  15. //连接plc
  16. int connect(QString ip);
  17. //设置转台角度
  18. int setTurntableAngle(float value);
  19. private:
  20. explicit PLCManager(QObject *parent = nullptr);
  21. ~PLCManager();
  22. signals:
  23. private:
  24. std::shared_ptr<TS7Client> client;
  25. bool bConnected{false};
  26. };
  27. #endif // PLCMANAGER_H
  1. #include "plcmanager.h"
  2. PLCManager::PLCManager(QObject *parent)
  3. : QObject{parent}
  4. {
  5. client = std::make_shared<TS7Client>();
  6. }
  7. PLCManager::~PLCManager()
  8. {
  9. }
  10. int PLCManager::connect(QString ip)
  11. {
  12. int ret = client->ConnectTo(ip.toStdString().data(),0,1);
  13. if(ret==0){
  14. bConnected=true;
  15. }else{
  16. bConnected=false;
  17. }
  18. return ret;
  19. }
  20. int PLCManager::setTurntableAngle(float value)
  21. {
  22. if(!bConnected)
  23. return -1;
  24. //测试
  25. byte bufferWrite[1]={1};
  26. client->MBWrite(100,1,&bufferWrite);
  27. }

4. 使用的时候 直接调用业务函数。

  1. PLCManager::getInstance().connect("127.0.0.1");
  2. PLCManager::getInstance().setTurntableAngle(0);

5. 用Hsl工具测试下,这里再M100 位置 写入了一个byte ,值为1。

6,常用操作 

西门子PLC snap7 - Qt hello

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/949131
推荐阅读
相关标签
  

闽ICP备14008679号