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

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

前言

  西门子PLC、台达触摸屏、法兰克机床等等多年以前玩得比较多,改造机床、维修机床、给机床编程等等,没事还能车个零件啥的,对于多年以前的研发改造编程,有时间就重新整理下。

  先上点有历史年代感的照片:

  

  

  

  


  

  

  


需求

  Qt实现与PLC调试工具。


相关博客

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

  《西门子PLC开发笔记(一):PLC介绍,西门子S1200系列接线、编程、下载和仿真

  《台达PLC开发笔记(一):台达PLC连接介绍,分别使用485、网口与台达PLC建立连接


Demo

西门子PLC实物连接图

  

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

  

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

  

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

  

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

  

模拟服务器演示

  

  

体验下载地址

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

  QQ群:1047134658(点击“文件”搜索“plcCommunication”,群内与博文同步更新)


v1.5.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


相关文章
|
6天前
|
存储 运维 数据挖掘
服务器数据恢复—EqualLogic存储硬盘出现坏道的数据恢复案例
某品牌EqualLogic PS6100存储阵列上有一组由16块硬盘组建的raid5磁盘阵列。磁盘阵列上层划分多个大小不同的卷,存放虚拟机文件。 硬盘出现故障导致存储阵列不可用,需要恢复存储阵列中的数据。
|
13天前
|
存储 运维 Oracle
服务器数据恢复—存储硬盘指示灯亮黄灯,RAID5阵列崩溃的数据恢复案例
服务器存储数据恢复环境: 某单位一台某品牌DS5300存储,1个机头+4个扩展柜,50块的硬盘组建了两组RAID5阵列。一组raid5阵列有27块硬盘,存放Oracle数据库文件。存储系统上层一共划分了11个卷。 服务器存储故障: 存储设备上两个硬盘指示灯亮黄色。其中一组RAID5阵列崩溃,存储不可用,设备已经过保。
|
3月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
5月前
|
存储 数据挖掘
服务器数据恢复—EMC存储raid5阵列数据恢复案例
服务器存储数据恢复环境: EMC某型号存储中有一组由8块硬盘组建的raid5磁盘阵列。 服务器存储故障: raid5阵列中有2块硬盘离线,存储不可用,上层应用崩了。
|
4月前
|
数据挖掘
服务器数据恢复——服务器异常断电造成raid5阵列故障的数据恢复案例
某服务器上有一组由12块硬盘组建的raid5磁盘阵列。 机房供电不稳定导致机房中该服务器非正常断电,重启服务器后管理员发现服务器无法正常使用。 意外断电可能会导致服务器上的raid模块损坏。
|
5月前
|
数据挖掘 Linux
服务器数据恢复—服务器重装系统导致分区改变的数据恢复案例
服务器上有一组由raid卡组建的raid5磁盘阵列。上层安装linux才做系统,采用XFS文件系统,划分了3个分区。 管理员将服务器的操作系统重装后,发现服务器上的分区发生了改变:一个分区消失,其他分区不可访问。
|
1月前
|
Unix 应用服务中间件 索引
服务器数据恢复—LUN映射出错导致文件系统共享冲突的数据恢复案例
SUN光纤存储系统中有一组由6个硬盘组建的RAID6,划分为若干LUN,MAP到跑不同业务的服务器上,这些服务器上运行的是SOLARIS操作系统。 服务器不存在物理故障。由于公司业务变化,需要增加一台服务器跑新的应用。服务器管理员在原服务器在线的状态下,将其中一个lun映射到一台新服务器上。实际上,这个刚映射过去的卷已经map到了solaris生产系统上的某个lun上了。映射到新服务器后,服务器对这个卷进行初始化的操作,原solaris系统上的磁盘报错,重启服务器后这个卷已经无法挂载。 服务器管理员寻求sun原厂工程师的帮助。sun工程师检测后执行了fsck操作。执行完成后文件系统挂载成功。查
|
1月前
|
存储 数据挖掘 Linux
服务器数据恢复—重装系统导致OceanStor存储上的分区无法访问的数据恢复案例
服务器存储数据恢复环境: 华为OceanStor某型号存储+扩展盘柜,存储中的硬盘组建了raid5磁盘阵列,上层分配了1个lun。 linux操作系统,划分了两个分区,分区一通过lvm扩容,分区二为xfs文件系统。 服务器存储故障: 工作人员重装系统操作失误导致磁盘分区变化,分区二无法访问,数据丢失。
|
1月前
|
存储 数据挖掘 Windows
服务器数据恢复—RAIDZ上层ZFS文件系统数据恢复案例
一台服务器有32块硬盘,采用Windows操作系统。 服务器在正常运行的时候突然变得不可用。没有异常断电、进水、异常操作、机房不稳定等外部因素。服务器管理员重启服务器,但是服务器无法进入系统。管理员联系北亚企安数据恢复工程师要求恢复服务器数据。
|
2月前
|
存储 算法 数据挖掘
服务器数据恢复—昆腾存储StorNext文件系统数据恢复案例
一台昆腾存储设备中有一组raid5磁盘阵列。阵列上有两块硬盘先后离线,raid5磁盘阵列不可用。

热门文章

最新文章

推荐镜像

更多
  • qt