案例分享: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


相关文章
|
15天前
|
运维 数据挖掘 开发工具
服务器数据恢复—硬盘离线导致raid5阵列热备盘上线失败的数据恢复案例
服务器磁盘阵列数据恢复环境: 服务器中有两组分别由4块SAS硬盘组建的raid5磁盘阵列,两组raid5阵列划分LUN,组成LVM结构,格式化为EXT3文件系统。 服务器磁盘阵列故障: 服务器中一组raid5阵列中有一块硬盘离线,热备盘自动上线替换离线硬盘。热备盘上线同步数据过程中又有一块硬盘离线,热备盘同步失败,该组raid5阵列崩溃,LVM结构变得不完整,文件系统无法使用。 硬件工程师对两块离线硬盘进行硬件故障检测,发现先离线硬盘无法识别,初步判断该硬盘存在硬件故障,需要进行开盘修复。后离线硬盘可以正常识别。
服务器数据恢复—硬盘离线导致raid5阵列热备盘上线失败的数据恢复案例
|
5天前
|
存储 数据挖掘 数据库
服务器数据恢复—raid磁盘故障导致数据库数据损坏的数据恢复案例
存储中有一组由3块SAS硬盘组建的raid。上层win server操作系统层面划分了3个分区,数据库存放在D分区,备份存放在E分区。 RAID中一块硬盘的指示灯亮红色,D分区无法识别;E分区可识别,但是拷贝文件报错。管理员重启服务器,导致离线的硬盘上线开始同步数据,同步还没有完成就直接强制关机了,之后就没有动过服务器。
|
23天前
|
SQL 数据挖掘 数据库
服务器数据恢复—意外断电导致XenServer虚拟机不可用的数据恢复案例
服务器数据恢复环境: 一台服务器中有一组由4块STAT硬盘通过RAID卡组建的RAID10阵列,上层是XenServer虚拟化平台,虚拟机安装Windows Server操作系统,作为Web服务器使用。 服务器故障: 因机房异常断电导致服务器中一台VPS(Xen Server虚拟机)不可用,虚拟磁盘文件丢失。
服务器数据恢复—意外断电导致XenServer虚拟机不可用的数据恢复案例
|
9天前
|
JavaScript 前端开发
vue配合axios连接express搭建的node服务器接口_简单案例
文章介绍了如何使用Express框架搭建一个简单的Node服务器,并使用Vue结合Axios进行前端开发和接口调用,同时讨论了开发过程中遇到的跨域问题及其解决方案。
12 0
vue配合axios连接express搭建的node服务器接口_简单案例
|
1月前
|
网络协议
keepalived对后端服务器的监测方式实战案例
关于使用keepalived进行后端服务器TCP监测的实战案例,包括配置文件的编辑和keepalived服务的重启,以确保配置生效。
37 1
keepalived对后端服务器的监测方式实战案例
|
21天前
|
存储 数据挖掘 Linux
服务器数据恢复—Linux操作系统网站服务器数据恢复案例
服务器数据恢复环境: 一台linux操作系统服务器上跑了几十个网站,服务器上只有一块SATA硬盘。 服务器故障: 服务器突然宕机,尝试再次启动失败。将硬盘拆下检测,发现存在坏扇区
|
6天前
|
存储 Oracle 关系型数据库
服务器数据恢复—存储硬盘故障导致映射到服务器上的卷挂载不上的数据恢复案例
一台存储上有一组由16块FC硬盘组建了一组raid。存储前面板上的对应10号和13号硬盘的故障灯亮起,存储映射到redhat linux操作系统服务器上的卷挂载不上,业务中断。
|
7天前
|
存储 Unix 数据挖掘
服务器数据恢复—SAN环境下LUN Mapping出错导致文件系统共享冲突的数据恢复案例
服务器数据恢复环境: SAN环境下一台存储设备中有一组由6块硬盘组建的RAID6磁盘阵列,划分若干LUN,MAP到不同业务的SOLARIS操作系统服务器上。 服务器故障: 用户新增了一台服务器,将存储中的某个LUN映射到新增加的这台服务器上。这个映射的LUN其实之前已经MAP到其他SOLARIS操作系统的服务器上了。由于没有及时发现问题,新增加的这台服务器已经对此LUN做了初始化操作,磁盘报错,重启后发现卷无法挂载。
|
1月前
|
存储 运维 小程序
服务器数据恢复—双循环RAID5阵列数据恢复案例
服务器存储数据恢复环境: 一台存储中有一组由7块硬盘组建的RAID5阵列,存储中还有另外3块盘是raid中掉线的硬盘(硬盘掉线了,管理员只是添加一块的新的硬盘做rebuild,并没有将掉线的硬盘拔掉)。整个RAID5阵列的存储空间划分了一个LUN。 服务器存储故障: 硬盘出现故障导致存储中阵列瘫痪。 和管理员沟通,据管理员说是磁盘阵列中某些硬盘出现故障导致存储不可用,初步判断RAID中有硬盘掉线了。
|
2月前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
45 0

热门文章

最新文章

下一篇
无影云桌面