C#使用TCP-S7协议读写西门子PLC(五)-测试程序
上面四篇我们进行封装连接PLC以及读写PLC内存地址表
C#使用TCP-S7协议读写西门子PLC(一)-CSDN博客
C#使用TCP-S7协议读写西门子PLC(二)-CSDN博客
C#使用TCP-S7协议读写西门子PLC(三)-CSDN博客
C#使用TCP-S7协议读写西门子PLC(四)-CSDN博客
这里我们进行测试操作
西门子PLC-S7协议测试读写基础数据类型、字符串、Unicode字符串、连续数组等
窗体应用程序PlcSiemesS7Demo应用程序文件清单如下图所示

窗体FormS7Protocol设计器如下:

窗体设计器代码如下:
文件FormS7Protocol.Designer.cs
namespace PlcSiemesS7Demo
{partial class FormS7Protocol{/// <summary>/// 必需的设计器变量。/// </summary>private System.ComponentModel.IContainer components = null;/// <summary>/// 清理所有正在使用的资源。/// </summary>/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows 窗体设计器生成的代码/// <summary>/// 设计器支持所需的方法 - 不要修改/// 使用代码编辑器修改此方法的内容。/// </summary>private void InitializeComponent(){this.panel1 = new System.Windows.Forms.Panel();this.cboSiemensPLCCategory = new System.Windows.Forms.ComboBox();this.label2 = new System.Windows.Forms.Label();this.btnDisconnect = new System.Windows.Forms.Button();this.btnConnect = new System.Windows.Forms.Button();this.txbPort = new System.Windows.Forms.TextBox();this.label3 = new System.Windows.Forms.Label();this.txbIP = new System.Windows.Forms.TextBox();this.label1 = new System.Windows.Forms.Label();this.rtxbDisplay = new System.Windows.Forms.RichTextBox();this.groupBox1 = new System.Windows.Forms.GroupBox();this.btnReadWString = new System.Windows.Forms.Button();this.label12 = new System.Windows.Forms.Label();this.txtReadValWString = new System.Windows.Forms.TextBox();this.label13 = new System.Windows.Forms.Label();this.txtReadWStringLength = new System.Windows.Forms.TextBox();this.rtxtReadValArray = new System.Windows.Forms.RichTextBox();this.btnReadArray = new System.Windows.Forms.Button();this.label9 = new System.Windows.Forms.Label();this.label8 = new System.Windows.Forms.Label();this.txtReadArrayLength = new System.Windows.Forms.TextBox();this.btnReadString = new System.Windows.Forms.Button();this.label7 = new System.Windows.Forms.Label();this.txtReadValString = new System.Windows.Forms.TextBox();this.label4 = new System.Windows.Forms.Label();this.txtReadStringLength = new System.Windows.Forms.TextBox();this.btnReadBasic = new System.Windows.Forms.Button();this.label5 = new System.Windows.Forms.Label();this.txtReadValBasic = new System.Windows.Forms.TextBox();this.cboReadDataType = new System.Windows.Forms.ComboBox();this.label6 = new System.Windows.Forms.Label();this.label10 = new System.Windows.Forms.Label();this.label11 = new System.Windows.Forms.Label();this.txtOffsetAddress = new System.Windows.Forms.TextBox();this.cboRegisterCategory = new System.Windows.Forms.ComboBox();this.groupBox2 = new System.Windows.Forms.GroupBox();this.btnWriteWString = new System.Windows.Forms.Button();this.label14 = new System.Windows.Forms.Label();this.txtWriteValWString = new System.Windows.Forms.TextBox();this.label15 = new System.Windows.Forms.Label();this.txtWriteWStringLength = new System.Windows.Forms.TextBox();this.rtxtWriteValArray = new System.Windows.Forms.RichTextBox();this.btnWriteArray = new System.Windows.Forms.Button();this.label16 = new System.Windows.Forms.Label();this.btnWriteString = new System.Windows.Forms.Button();this.label18 = new System.Windows.Forms.Label();this.txtWriteValString = new System.Windows.Forms.TextBox();this.label19 = new System.Windows.Forms.Label();this.txtWriteStringLength = new System.Windows.Forms.TextBox();this.btnWriteBasic = new System.Windows.Forms.Button();this.label20 = new System.Windows.Forms.Label();this.txtWriteValBasic = new System.Windows.Forms.TextBox();this.cboWriteDataType = new System.Windows.Forms.ComboBox();this.label21 = new System.Windows.Forms.Label();this.label22 = new System.Windows.Forms.Label();this.txtDbNumber = new System.Windows.Forms.TextBox();this.panel1.SuspendLayout();this.groupBox1.SuspendLayout();this.groupBox2.SuspendLayout();this.SuspendLayout();// // panel1// this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right)));this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;this.panel1.Controls.Add(this.cboSiemensPLCCategory);this.panel1.Controls.Add(this.label2);this.panel1.Controls.Add(this.btnDisconnect);this.panel1.Controls.Add(this.btnConnect);this.panel1.Controls.Add(this.txbPort);this.panel1.Controls.Add(this.label3);this.panel1.Controls.Add(this.txbIP);this.panel1.Controls.Add(this.label1);this.panel1.Location = new System.Drawing.Point(4, 4);this.panel1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);this.panel1.Name = "panel1";this.panel1.Size = new System.Drawing.Size(611, 87);this.panel1.TabIndex = 2;// // cboSiemensPLCCategory// this.cboSiemensPLCCategory.FormattingEnabled = true;this.cboSiemensPLCCategory.Location = new System.Drawing.Point(122, 52);this.cboSiemensPLCCategory.Name = "cboSiemensPLCCategory";this.cboSiemensPLCCategory.Size = new System.Drawing.Size(206, 20);this.cboSiemensPLCCategory.TabIndex = 14;// // label2// this.label2.AutoSize = true;this.label2.Location = new System.Drawing.Point(8, 52);this.label2.Name = "label2";this.label2.Size = new System.Drawing.Size(95, 12);this.label2.TabIndex = 13;this.label2.Text = "西门子PLC型号:";// // btnDisconnect// this.btnDisconnect.Enabled = false;this.btnDisconnect.Location = new System.Drawing.Point(494, 14);this.btnDisconnect.Name = "btnDisconnect";this.btnDisconnect.Size = new System.Drawing.Size(91, 28);this.btnDisconnect.TabIndex = 5;this.btnDisconnect.Text = "断开连接";this.btnDisconnect.UseVisualStyleBackColor = true;this.btnDisconnect.Click += new System.EventHandler(this.btnDisconnect_Click);// // btnConnect// this.btnConnect.Location = new System.Drawing.Point(371, 14);this.btnConnect.Name = "btnConnect";this.btnConnect.Size = new System.Drawing.Size(91, 28);this.btnConnect.TabIndex = 4;this.btnConnect.Text = "连接";this.btnConnect.UseVisualStyleBackColor = true;this.btnConnect.Click += new System.EventHandler(this.btnConnect_Click);// // txbPort// this.txbPort.Location = new System.Drawing.Point(238, 14);this.txbPort.Name = "txbPort";this.txbPort.Size = new System.Drawing.Size(90, 21);this.txbPort.TabIndex = 3;this.txbPort.Text = "102";// // label3// this.label3.AutoSize = true;this.label3.Location = new System.Drawing.Point(184, 17);this.label3.Name = "label3";this.label3.Size = new System.Drawing.Size(53, 12);this.label3.TabIndex = 2;this.label3.Text = "端口号:";// // txbIP// this.txbIP.Location = new System.Drawing.Point(62, 14);this.txbIP.Name = "txbIP";this.txbIP.Size = new System.Drawing.Size(106, 21);this.txbIP.TabIndex = 1;this.txbIP.Text = "192.168.1.10";// // label1// this.label1.AutoSize = true;this.label1.Location = new System.Drawing.Point(8, 17);this.label1.Name = "label1";this.label1.Size = new System.Drawing.Size(53, 12);this.label1.TabIndex = 0;this.label1.Text = "IP地址:";// // rtxbDisplay// this.rtxbDisplay.Location = new System.Drawing.Point(4, 622);this.rtxbDisplay.Name = "rtxbDisplay";this.rtxbDisplay.ReadOnly = true;this.rtxbDisplay.Size = new System.Drawing.Size(943, 232);this.rtxbDisplay.TabIndex = 3;this.rtxbDisplay.Text = "";// // groupBox1// this.groupBox1.Controls.Add(this.btnReadWString);this.groupBox1.Controls.Add(this.label12);this.groupBox1.Controls.Add(this.txtReadValWString);this.groupBox1.Controls.Add(this.label13);this.groupBox1.Controls.Add(this.txtReadWStringLength);this.groupBox1.Controls.Add(this.rtxtReadValArray);this.groupBox1.Controls.Add(this.btnReadArray);this.groupBox1.Controls.Add(this.label9);this.groupBox1.Controls.Add(this.label8);this.groupBox1.Controls.Add(this.txtReadArrayLength);this.groupBox1相关文章:
C#使用TCP-S7协议读写西门子PLC(五)-测试程序
上面四篇我们进行封装连接PLC以及读写PLC内存地址表 C#使用TCP-S7协议读写西门子PLC(一)-CSDN博客 C#使用TCP-S7协议读写西门子PLC(二)-CSDN博客 C#使用TCP-S7协议读写西门子PLC(三)-CSDN博客 C#使用TCP-S7协议读写西门子PLC(四)-CSDN博客 这里我们进行测试操作 西门子PLC-…...
经验——IMX6UL的uboot无法ping主机或Ubuntu
主要描述可能的方向,不涉具体过程,详细操作可以查阅网上相关教程 跟随正点原子教程测试以太网端口时,即便按照步骤多次尝试也无法ping通,后补充了些许网络工程基础知识解决了这个问题。 uboot无法ping主机或Ubuntu有多种可能&…...
AUTOSAR-规范文档版本
https://www.autosar.org/standards 2024年11月(R24-11) Foundation(FO) // TODO Classic(CP) // TODO Adaptive(AP) // TODO 2023年11月(R23-11) Foundation&a…...
网络(四)——HTTP协议
文章目录 认识urlurlencode和urldecodeHTTP协议格式HTTP的方法HTTP的状态码HTTP常见Header 虽然应用层的协议是由人为规定的,但是已经有大佬们定义了一些现成的,又非常好用的应用层协议,供我们直接参考使用. HTTP(超文本传输协议)就是其中之一…...
comfyui中报错 Cmd(‘git‘) failed due to: exit code(128) 如何解决
🎈背景 comfyui今天在安装插件的过程中,发现有个插件第一次安装失败后,再次安装就开始报错了,提示: ComfyUI-Inpaint-CropAndStitch install failed: Bad Request 截图如下: 看下后台的报错: …...
测试-Gatling 与性能测试
Gatling 与性能测试详解 一、什么是性能测试? 性能测试是一种软件测试类型,旨在评估系统在负载下的响应时间、吞吐量和资源利用率等性能指标。通过性能测试,开发者和运维团队能够识别出系统的瓶颈、优化系统性能,并确保其在实际…...
ESRGAN——老旧照片、视频帧的修复和增强,提高图像的分辨率
ESRGAN(Enhanced Super-Resolution GAN):用于提高图像的分辨率,将低质量图像升级为高分辨率版本,常用于老旧照片、视频帧的修复和增强。 一、ESRGAN 介绍 1.1 背景 超分辨率问题是计算机视觉中的一个重要研究领域&a…...
跨界融合:EasyDSS+无人机视频直播推流技术助力行业多场景应用
随着科技的飞速发展,无人机技术与流媒体技术的结合正逐步改变着多个行业的运作模式。其中,EasyDSS互联网视频云服务与无人机视频直播推流技术的结合,更是为警务安防、赛事直播、农业监测等多个领域带来了前所未有的变革。本文将深入探讨EasyD…...
Linux实操笔记2 Ubuntu安装Nginx的不同方法
今天来了解Ubuntu或者说Linux系统安装Nginx的几种办法。包括从Ubuntu的库安装到官方源码编译安装。 一、Nginx是什么? 以下是来自Nginx中文文档的内容。 Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比…...
QCustomPlot笔记(一)
文章目录 简介将帮助文档添加到Qt Creator中编译共享库cmake工程编译提示ui_mainwindow.h找不到qcustomplot.h文件 环境:windowsQt Creator 10.0.1cmake 简介 QT中用于绘制曲线的第三方工具 下载地址:https://www.qcustomplot.com/index.php/download 第一个压缩…...
【机器学习】多模态AI——融合多种数据源的智能系统
随着人工智能的快速发展,单一模态(如文本、图像或语音)已经不能满足复杂任务的需求。多模态AI(Multimodal AI)通过结合多种数据源(如文本、图像、音频等)来提升模型的智能和表现,适用…...
QT学习与数据库连接
1.基础 1. 安装最后一个非在线版本 5.14, 没有的话联系我 新建一个.cpp文件 #include <QApplication> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QHBoxLayout> #include <QVBoxLayout> #include <Q…...
泛读笔记:从Word2Vec到BERT
自然语言处理(NLP)模型的发展历史 1.统计方法时期:使用贝叶斯方法、隐马尔可夫模型、概率模型等传统统计方法 2.机器学习时期:支持向量机(SVM)、决策树模型、随机森林、朴素贝叶斯等传统机器学习方法 3.深度学习革命:各种新的深度学习模型&am…...
redis实现分布式锁详细教程,可续锁(看门狗)、可重入
前言 本文将讨论的做一个高并发场景下避不开的话题,即redis分布式锁。比如在淘宝 的秒杀场景、热点新闻和热搜排行榜等。可见分布式锁是一个程序员面向高级的一门必修课,下面请跟着本篇文章好好学习。 redis分布式锁有哪些面试题 1.Redis做分布式的时…...
代码随想录打卡Day32
今天有点事,先做一题,剩下的明天补。 509. 斐波那契数 这道题目太简单了,递归几行代码就结束了,用动态规划做也可以,主要是学习一下动态规划五部曲。 这是递归的代码 class Solution { public:int fib(int n) {//确…...
数学学习记录
目录 学习资源: 9月14日 1.映射:编辑 2.函数: 9月15日 3.反函数: 4.收敛数列的性质 5.反三角函数: 9月16日 6.函数的极限: 7.无穷小和无穷大 极限运算法则: 学习资源: 3Blue1…...
R语言统计分析——散点图1(常规图)
参考资料:R语言实战【第2版】 R语言中创建散点图的基础函数是plot(x,y),其中,x和y是数值型向量,代表着图形中的(x,y)坐标点。 attach(mtcars) plot(wt,mpg,main"Basic Scatter plot of MPG vs. Weigh…...
蓝桥杯—STM32G431RBT6按键的多方式使用(包含软件消抖方法精讲)从原理层面到实际应用(一)
新建工程教程见http://t.csdnimg.cn/JySLg 点亮LED教程见http://t.csdnimg.cn/Urlj5 末尾含所有代码 目录 按键原理图 一、按键使用需要解决的问题 1.抖动 1.什么是抖动 2.抖动类型 3.如何去消除抖动 FIRST.延时函数消抖(缺点:浪费CPU资源ÿ…...
基于STM32的温度、电流、电压检测proteus仿真系统(OLED、DHT11、继电器、电机)
目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STM32F103C8T6 采用DHT11读取温度、滑动变阻器模拟读取电流、电压。 通过OLED屏幕显示,设置电流阈值为80,电流小阈值为50,电压阈值为60,温度阈值…...
Linux - iptables防火墙
目录 一、iptables概述 二、规则表与规则链结构(四表五链) 1.简述 2.四表(规则表) 3.五链(规则链) 三、数据链过滤的匹配流程 四、iptables命令行配置方法 1.命令格式 2.基本匹配条件 3.隐含匹配 …...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
