当前位置: 首页 > news >正文

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

 

 

http://www.lryc.cn/news/96557.html

相关文章:

  • instr字符查找函数(oracle用instr来代替like)
  • trie树的一点理解
  • Linux CentOS监控系统的运行情况工具 - top/htop/glances/sar/nmon
  • Qt开发(2)——windows下调用外部程序
  • PostgreSQL查看数据库对象大小
  • 给el-table实现列显隐
  • 为Android构建现代应用——应用架构
  • 49:字符串的新增方法
  • Kaggle图表内容识别大赛TOP方案汇总
  • DAY2,Qt(继续完善登录框,信号与槽的使用 )
  • 【设计模式】设计原则-开闭原则
  • 【2500. 删除每行中的最大值】
  • Superset部署
  • Python3 学习笔记 ~ 怎样打印字符串
  • postgresql安装
  • ElasticSearch之IK分词器安装以及使用介绍
  • Linux系统安装部署Jenkins详细教程(图文讲解)
  • 基于ChatGPT聊天的零样本信息提取7.25
  • Pytorch个人学习记录总结 08
  • Ansible自动化运维学习——综合练习
  • Java中正则表达式
  • 13 硬链接和软链接
  • 智能合约安全审计
  • 矩阵置零(力扣)思维 JAVA
  • centos制作openssh 9.3p2 rpm包
  • uni-app:切换页面刷新,返回上一页刷新(onShow钩子函数的使用)
  • 全志F1C200S嵌入式驱动开发(调整cpu频率和dram频率)
  • idea 设置了 vm options后无法启动
  • TPS54620RHLR是一款同步降压转换器
  • 主机漏洞利用演示MS17-010(永恒之蓝)