案例分享:Qt西门子PLC调试模拟工具(包含PLC上位机通讯,PLC服务器,读写Byte、Int、DInt、Real)(持续更新,当前v1.6.3)

35 篇文章 23 订阅
2 篇文章 1 订阅

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110071837

长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

合作案例专栏:案例分享(体验Demo可下载,只定制)


前言

  西门子PLC、台达触摸屏、法兰克机床等等多年以前玩得比较多,改造机床、维修机床、给机床编程等等,没事还能车个零件啥的,对于多年以前的研发改造编程,有时间就重新整理下。
  先上点有历史年代感的照片:
  在这里插入图片描述
  在这里插入图片描述
  在这里插入图片描述
  在这里插入图片描述
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述


需求

  Qt实现与PLC调试工具。


相关博客

  《案例分享:Qt modbus485调试工具(读写Byte、Int、DInt、Real、DReal)(当前v1.3.0)
  《案例分享:Qt modbusTcp调试工具(读写Byte、Int、DInt、Real、DReal)(当前v1.0.0)
  《台达PLC开发笔记(一):台达PLC连接介绍,分别使用485、网口与台达PLC建立连接
  《台达PLC开发笔记(二):台达PLC设置主机通讯参数为RTU并成功通讯
  《西门子PLC开发笔记(一):PLC介绍,西门子S1200系列接线、编程、下载和仿真
  《libModbus库开发笔记(一):libmodbus库介绍、编译和基础工程模板
  《libModbus库开发笔记(二):libmodbus介绍、编译、modbusTcp连接台达PLC和modbusTcp基础模板
  《案例分享:Qt西门子PLC调试模拟工具(包含PLC上位机通讯,PLC服务器,读写Byte、Int、DInt、Real)(持续更新,当前v1.6.0)


Demo v1.6.3

  1.去掉使用权限,开放免费使用;
  2.三个分别写入和读取缓存值,方便实际过程中调试;
  在这里插入图片描述

下载地址(v1.6.3)

  CSND(0积分下载):https://download.csdn.net/download/qq21497936/89695623
  QQ群:回博客首页扫描加QQ群(点击“文件”搜索“plcCommunication”,群内与博文同步更新)


西门子PLC实物连接图

  在这里插入图片描述

连接西门子PLC实物读取数据演示(区分数据类型)

  在这里插入图片描述

连接西门子PLC实物写入数据演示(区分数据类型)

  在这里插入图片描述

连接西门子PLC实物读取数据演示(无类型)

  在这里插入图片描述

连接西门子PLC实物写入数据演示(无类型)

  在这里插入图片描述

模拟服务器演示

  在这里插入图片描述
  在这里插入图片描述

体验下载地址(v1.6.0)

  CSND(0积分下载):https://download.csdn.net/download/qq21497936/86582035
  QQ群:回博客首页扫描加QQ群(点击“文件”搜索“plcCommunication”,群内与博文同步更新)

体验下载地址

  CSDN(0积分下载):https://download.csdn.net/download/qq21497936/18513620


v1.6.0

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述


头文件源码

  在这里插入图片描述

  在这里插入图片描述

PlcWidget.h

#ifndef PLCWIDGET_H
#define PLCWIDGET_H

/************************************************************\
 * 控件名称:PlcWidget
 * 功能描述:Plc通讯Demo
 * 控件功能:
 *          1.PLC客户端(上位机与PLC通讯))
 *          2.PLC服务端(仿真PLC,方便调试上位机)
 *          3.服务器与客户端的数据显示,客户端为读DB,服务器写DB
 * 著作权信息
 *      作者:红胖子(AAA红模仿)
 *      公司:长沙红胖子网络科技有限公司
 *      网址:hpzwl.blog.csdn.net
 *      联系方式:QQ(21497936) 微信(yangsir198808) 电话(15173255813)
 * 版本信息
 *      日期          版本号        描述
 *  2020年11月22日    v1.0.0      基础功能
 *  2020年11月23日    v1.1.0      增加服务器功能
 *  2020年12月01日    v1.2.0      增加写入功能
 *  2020年12月08日    v1.3.0      增加写入和读取int,dint,float,byte功能
 *  2020年12月17日    v1.4.0      增加ip地址等相关配置的保存和读取,修复客户端ip地址无法输入的问题,
 *                               修复服务器超过一次连接、断开导致的DB区域数据错误问题
 *  2021年05月10日    v1.5.0      主题修改,版本控制
\************************************************************/

#include <QWidget>
#include <QThread>
#include <QDateTime>
#include <QTimer>
#include <QJsonObject>
#include <QJsonDocument>
#include <QFile>
#include <QMessageBox>

#include "PlcClientManager.h"
#include "PlcServerManager.h"

namespace Ui {
class PlcWidget;
}

class PlcWidget : public QWidget
{
    Q_OBJECT

public:
    explicit PlcWidget(QWidget *parent = 0);
    ~PlcWidget();


protected slots:    // 客户端:与PLC管理模块部分
    void slot_connectedChanged(bool connected);
    void slot_readDB(int dbNum, int start, int size, QByteArray data);

protected slots:    // 客户端:循环执行读取操作槽
    void slot_timeOut();

protected:
    void loadCfg();
    void saveCfg();

private slots:      // 客户端:连接、断开的部分
    void on_pushButton_connect_clicked();
    void on_pushButton_disconncet_clicked();

private slots:      // 客户端:DB块的读取部分、写入部分
    void on_pushButton_readDB_clicked();
    void on_pushButton_writeDB_clicked();
    void on_pushButton_startReadDB_clicked();
    void on_pushButton_stopReadDB_clicked();
    void on_pushButton_clear_clicked();

protected slots:    // 服务端:状态、缓存区状态改变
    void slot_listenStateChanged(bool listen);
    void slot_dataChanged();

private slots:      // 服务端:开始监听、停止的部分
    void on_pushButton_serverListen_clicked();
    void on_pushButton_serverStopListen_clicked();
    void on_pushButton_serverSet_clicked();
    void on_pushButton_rDB_clicked();
    void on_pushButton_wDB_clicked();

protected:
    void closeEvent(QCloseEvent *event);

private:
    Ui::PlcWidget *ui;

    QTimer *_pTimer;                            // 定时发送定时器

    PlcClientManager *_pPlcClientManager;       // 客户端模式管理类
    QThread *_pPlcClientManagerThread;          // 客户端模式线程

    PlcServerManager *_pPlcServerManager;       // 服务器模式管理类
    QThread *_pPlcServerManagerThread;          // 服务器模式线程

    bool _readType;

    IntByte  _intByte;
    DIntByte _dIntByte;
    RealByte _realByte;

    QString _cfg;

protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void timerEvent(QTimerEvent *event);

private:
    QPoint _beginPoint;
    QPoint _leftTopPoint;
    bool _leftButtonPressed;
    int _timerId;
};

#endif // PLCWIDGET_H


若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110071837

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长沙红胖子Qt(长沙创微智科)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值