C# Modbus TCP上位机测试
前面说了三菱和西门子PLC的上位机通信,实际在生产应用中,设备会有很多不同的厂家生产的PLC,那么,我们就需要一种通用的语言,进行设备之间的通信,工业上较为广泛使用的语言之一就是Modbus。
Modbus有多种连接方式,如串口(RTU)、以太网(TCP/IP),今天我们讲的是TCP,也就是插网线的方式。
首先,我们安装从机的仿真,上位机软件作为主机。从机仿真可以用Modbus Slave这个软件。




这样从机就设置好了,接下来用C#编写主机(上位机)代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using thinger.DataConvertLib;namespace Modbus
{public partial class Form2 : Form{public Form2(){InitializeComponent();this.StartPosition = FormStartPosition.CenterScreen;this.MaximizeBox = false;this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;}private void writeLog(string log){string text = txtLog.Text;if (text.Length > 10000){text = text.Substring(0, 10000) + "\n...";}txtLog.Text = "【" + DateTime.Now.ToString() + "】" + log + "\n" + text;}ModbusTcp tcp = new ModbusTcp();private void button1_Click(object sender, EventArgs e){tcp.Connect("192.168.0.108", "502");if (tcp != null){button1.BackColor = Color.LawnGreen;}else{button1.BackColor = Color.Red;}}private void button2_Click(object sender, EventArgs e){txtLog.Text = "";int address = 0;//起始地址int num = 10;//寄存器数量byte[] res = tcp.ReadKeepReg(address, num);for (int i = 0; i < num; i++){writeLog("【" + i.ToString() + "】" + (res[i * 2] * 256 + res[i * 2 + 1]).ToString());//byte数据类型只能包含0~255的数,超出=res[0]*256+res[1]}}private void button3_Click(object sender, EventArgs e){bool success = tcp.PreSetSingleReg(int.Parse(textBox1.Text.Trim()), short.Parse(textBox2.Text.Trim()));if (success){button2_Click(sender, e);}}}
}

最后附上全部源码:
https://download.csdn.net/download/mojocube/88103605
相关文章:
C# Modbus TCP上位机测试
前面说了三菱和西门子PLC的上位机通信,实际在生产应用中,设备会有很多不同的厂家生产的PLC,那么,我们就需要一种通用的语言,进行设备之间的通信,工业上较为广泛使用的语言之一就是Modbus。 Modbus有多种连…...
instr字符查找函数(oracle用instr来代替like)
instr函数:字符查找函数。其功能是查找一个字符串在另一个字符串中首次出现的位置。 instr函数在Oracle/PLSQL中是返回要截取的字符串在源字符串中的位置。 语法 instr( string1, string2, start_position,nth_appearance ) 参数 string1:源字符串&am…...
trie树的一点理解
这个是最简单的数据结构:因为只需要记住两句话就能完美的写出简洁优雅的代码 1. 每次都是从根节点开始看(或者说从第零次插入的东西开始遍历,son[][]里面存的是第几次插入) 2每次遍历都是插入和查询的字符串 #include<iostream> using namespace …...
Linux CentOS监控系统的运行情况工具 - top/htop/glances/sar/nmon
在CentOS系统中,您可以使用以下工具来监控系统的运行情况: 1. top: top 是一个命令行工具,用于实时监控系统的进程、CPU、内存和负载情况。您可以使用以下命令来启动 top: top 输出 2. htop: htop 是一…...
Qt开发(2)——windows下调用外部程序
一、QProcess::start 1.阻塞性 start是非阻塞函数,但是这里的waitForFinished是阻塞的 2. 调用外部压缩程序7z // 目标压缩路径 QString zipFilePath destinationFolder "/" zipFileName; QStringList arguments{"a&qu…...
PostgreSQL查看数据库对象大小
PostgreSQL查看数据库对象大小 PostgreSQL查看数据库对象大小1、查看某个数据库大小2、查看多个数据库大小3、按顺序查看索引大小4、查看所有对象的大小 PostgreSQL查看数据库对象大小 1、查看某个数据库大小 select pg_size_pretty(pg_database_size(tzqdb));2、查看多个数据…...
给el-table实现列显隐
用过若依的都知道,在使用el-table 时候,实现列显隐效果是要给每个列加v-if 判断的,这种代码过于繁琐,于是翻看el-table包的代码,调试后发现内部的【插入】和【删除】两个方法可以达到我们要的效果。 项目不提供源码&a…...
为Android构建现代应用——应用架构
选择风格(Choosing a style) 我们将依照Google在《应用架构指南》中推荐的最佳实践和架构指南来构建OrderNow的架构。 这些定义包括通过各层定义组件的一些Clean Architecture原则。 层次的定义(Definition of the layers) 在应用程序中,我们将定义以下主要层次…...
49:字符串的新增方法
字符串的新增方法 String.fromCodePoint()String.raw()实例方法:codePointAt()实例方法:normalize()[实例方法:includes(), startsWith(), endsWith()](https://es6.ruanyifeng.com/#docs/string-methods#实例方法:includes(), s…...
Kaggle图表内容识别大赛TOP方案汇总
赛题名称:Benetech - Making Graphs Accessible 赛题链接:https://www.kaggle.com/competitions/benetech-making-graphs-accessible 赛题背景 数以百万计的学生有学习、身体或视力障碍,导致人们无法阅读传统印刷品。这些学生无法访问科学…...
DAY2,Qt(继续完善登录框,信号与槽的使用 )
1.继续完善登录框,当登录成功时,关闭登录界面,跳转到新的界面中,来回切换页面; ---mychat.h chatroom.h---两个页面头文件 #ifndef MYCHAT_H #define MYCHAT_H#include <QWidget> #include <QDebug> /…...
【设计模式】设计原则-开闭原则
单一职责原则 定义 当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。作用 1、方便测试;测试时只需要对扩展的代码进行测试。 2、提高代码的可复用性;粒…...
【2500. 删除每行中的最大值】
来源:力扣(LeetCode) 描述: 给你一个 m x n 大小的矩阵 grid ,由若干正整数组成。 执行下述操作,直到 grid 变为空矩阵: 从每一行删除值最大的元素。如果存在多个这样的值,删除其…...
Superset部署
Superset部署 1、安装依赖 (superset) [hadoopnode1 ~]$ yum install -y python-setuptools (superset) [hadoopnode1 ~]$ yum install -y gcc gcc-c libffi-devel python-devel python-pip python-wheel openssl-devel2、安装Superset 2.1 安装(更新)…...
Python3 学习笔记 ~ 怎样打印字符串
Python中变量的打印方法_python打印变量_清欢依旧的博客-CSDN博客 a 9 b 2print(f"{a} / {b} {a/b}") print(a, "//", b, "", (a//b))a -9 print(f"{a} / {b} {a/b}") print(a, "//", b, "", (a//b))...
postgresql安装
安装postgresql Linux下载安装地址 https://www.postgresql.org/download/linux/redhat/ 指定对应版本,指定完成后会生成对应的安装语句 下载对应的包 yum –y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-l…...
ElasticSearch之IK分词器安装以及使用介绍
文章目录 一、IK 分词器简介1. 支持细粒度分词:2. 支持多种分词模式:3. 支持自定义词典:4. 支持拼音分词:5. 易于集成和使用: 二、安装步骤1、下载 IK 分词器插件:2、安装 IK 分词器插件:3. 安装…...
Linux系统安装部署Jenkins详细教程(图文讲解)
前言:最近需要使用Jenkins部署项目,所以想出一篇关于如何使用Linux系统安装部署Jenkins的相关教程,整体部署过程还是挺顺利的,特此分享一下! 目录 一、安装JDK11和Tomcat11 二、准备Jenkins安装包 三、部署Jenkins…...
基于ChatGPT聊天的零样本信息提取7.25
基于ChatGPT聊天的零样本信息提取 摘要介绍ChatIE用于零样本IE的多轮 QA 实验总结 摘要 零样本信息提取(IE)旨在从未注释的文本中构建IE系统。由于很少涉及人类干预,因此具有挑战性。 零样本IE减少了数据标记所需的时间和工作量。最近对大型…...
Pytorch个人学习记录总结 08
目录 神经网络-搭建小实战和Sequential的使用 版本1——未用Sequential 版本2——用Sequential 神经网络-搭建小实战和Sequential的使用 torch.nn.Sequential的官方文档地址,模块将按照它们在构造函数中传递的顺序添加。代码实现的是下图: 版本1—…...
STM32 定时器与 PWM 输出:电机调速、LED 呼吸灯实战
在嵌入式开发的世界里,有一个问题困扰着无数初学者:微控制器只能输出0V和3.3V(或5V)的数字信号,但现实世界中的设备——从电机的转速控制到LED的亮度调节——需要的却是连续的模拟信号。如何用数字引脚“模拟”出模拟电…...
无障碍阅读助手:OpenClaw+Phi-3-vision-128k-instruct实时解析复杂图表
无障碍阅读助手:OpenClawPhi-3-vision-128k-instruct实时解析复杂图表 1. 为什么需要图表无障碍解析工具 去年帮一位视障朋友准备资格考试时,我深刻体会到技术文档中的图表是如何成为"信息黑洞"的。当他用屏幕阅读器听到"参见图3"…...
ILI9341 TFT驱动库:嵌入式HMI全栈图形解决方案
1. 项目概述ILI9341_LTSM 是一款面向 Arduino 生态系统的 C 驱动库,专为 ILI9341 控制芯片的 SPI 接口 TFT LCD 显示屏设计。该库并非仅提供基础初始化与像素写入功能,而是构建了一套完整的嵌入式图形子系统,覆盖从底层硬件抽象、图形绘制、字…...
保姆级教程:在CentOS 7.9上从源码编译安装nvtop 3.1.0(含CMake 3.29.7依赖安装)
在CentOS 7.9上从源码构建GPU监控神器nvtop 3.1.0的全流程指南 当你面对一台运行CentOS 7.9的老旧服务器,需要实时监控NVIDIA、AMD或Intel GPU的运行状态时,nvtop无疑是最佳选择之一。这款类似htop的工具能直观展示GPU使用率、温度、显存占用等关键指标&…...
连登IEEE/Elsevier一区TOP刊!PINN+强化学习新突破!
**研究方法:**论文提出基于PINNs与强化学习融合的自适应优化控制方法,通过PINNs整合物理定律与在线数据建模系统动力学,借助自动微分特性辅助自适应动态规划迭代逼近连续时间哈密顿-雅可比-贝尔曼方程解,结合Actor-Critic框架优化…...
雷达目标分类及宽带测角方案设计实现
本文参考,仅供学习使用基于飞腾M6678的雷达目标 分类和宽带测角研究与实现硬件计算平台介绍1. 飞腾M6678芯片核心参数与优势飞腾M6678是国防科技大学自主研发的国产多核DSP,专为数字信号处理设计,核心特性为:硬件资源:…...
深度解析:Agent 如何处理“开放性目标”与“约束性规则”的冲突?
深度解析:Agent 如何处理“开放性目标”与“约束性规则”的冲突? 1. 引言 (Introduction) 1.1 核心概念锚定与常见误解破冰 在正式展开冲突处理的技术细节之前,我们必须先锚定文章涉及的三个最核心、最容易被模糊定义/误解的AI Agent领域概念…...
2009 Text 1
2009 Text 1...
x86汇编堆栈第二个案例
x86汇编堆栈第二个案例x86汇编堆栈第二个案例 1)案例介绍 咱们上节课先把常见的x86下的堆栈过了一遍,包括基本指令对吧,除了上一个案例咱们还可以做什么使用现在学到的内容?既然咱们知道了“后进先出(LIFO)…...
COMSOL热应力仿真新手入门:从零开始设置热膨胀参数(附案例解析)
COMSOL热应力仿真新手入门:从零开始设置热膨胀参数(附案例解析) 热应力仿真是工程设计中不可或缺的一环,尤其在电子设备散热、航空航天材料分析等领域应用广泛。作为COMSOL Multiphysics的初学者,掌握热应力仿真的基础…...
