TwinCAT3中ModbusTCP Server和C# Client连接
目录
一、硬件环境
1、设置PLC的ip地址
2、ModbusTCP软件安装
3、PLC操作系统防火墙设置
4、网络助手连接PLC
二、创建PLC工程
1、创建寄存器读写变量
2、添加ModbusTCP授权
3、激活和运行工程
三、ModbusTCP数据协议说明
1、写单个寄存器
2、读寄存器
(1)读单个寄存器
(2)读多个寄存器
四、C#工程创建
1、创建UI界面
2、寄存器读写操作测试
五、下载连接
一、硬件环境
1、设置PLC的ip地址
使用PLC网口1和PC电脑连接
192.168.1.31

2、ModbusTCP软件安装
使用远程桌面进入到PLC系统中,安装TF6250-Modbus-TCP.exe软件。![]()
3、PLC操作系统防火墙设置
设置允许modbusTCP服务穿过PLC控制器的操作系统
(1)

(2)

(3)

(4)

(5)

(6)

(7)

4、网络助手连接PLC
地址:192.168.1.31
端口:502

二、创建PLC工程
1、创建寄存器读写变量
在Main程序中创建局部变量,和MW寄存器关联
PROGRAM MAIN
VARWrite_Array AT%MW0 :ARRAY[1..10] OF WORD;Read_Array AT%MW100 :ARRAY[100..110] OF WORD;
END_VAR
2、添加ModbusTCP授权

3、激活和运行工程

三、ModbusTCP数据协议说明
1、写单个寄存器
写寄存器操作,功能码15个byte数据,每个byte功能如下
写单个寄存器
buff[0]=0x00; //事务处理标识符Hi
buff[1]=0x01; //事务处理标识符Lo
buff[2]=0x00; //协议标识符 0x00
buff[3]=0x00; //协议标识符 0x00
buff[4]=0x00; //后续的Byte数量
buff[5]=0x09; //后续的Byte数量
buff[6]=0x00; //单位标识符
buff[7]=0x10; //功能码:写多个寄存器
buff[8]=0x30; //起始地址-高位 0x3000->MW0 *
buff[9]=0x00; //起始地址-低位 *
buff[10]=0x00; //寄存器数量
buff[11]=0x01; //寄存器数量
buff[12]=0x02; //数据的Byte数量
buff[13]=0x00; //写寄存器的值 256*buff[13]+buff[14] *
buff[14]=0x6F; //写寄存器的值 *
MW寄存器从0x3000开始。
举例说明
给MW0写879:
00 01 00 00 00 09 00 10 30 00 00 01 02 03 6F
写成功返回:
00 01 00 00 00 06 00 10 30 00 00 01

2、读寄存器
读寄存器操作,功能码12个byte数据,每个byte功能如下
buff[0]=0x00; //事务处理标识符Hi
buff[1]=0x01; //事务处理标识符Lo
buff[2]=0x00; //协议标识符 0x00
buff[3]=0x00; //协议标识符 0x00
buff[4]=0x00; //后续的Byte数量
buff[5]=0x06; //后续的Byte数量
buff[6]=0x00; //单位标识符
buff[7]=0x03; //功能码:读多个寄存器
buff[8]=0x30; /起始地址-高位 0x3000->MW0
buff[9]=0x00; //起始地址-低位
buff[10]=0x00; //读取的寄存器数量-高位
buff[11]=0x01; //读取的寄存器数量-低位
举例说明
(1)读单个寄存器
读单个寄存器MW0值
00 01 00 00 00 06 00 03 30 00 00 01
返回
00 01 00 00 00 05 00 03 02 03 6F
返回11个字节recv[0]-recv[10],其中recv[9]、recv[10]是寄存器值高位、低位。recv[9]*256+recv[10]

(2)读多个寄存器
读取MW0-MW2寄存器值
00 01 00 00 00 06 00 03 30 00 00 03
返回
00 01 00 00 00 09 00 03 06 03 6F 00 01 00 02
MW0的值:recv[9]=03、 recv[10]=6F
MW1的值:recv[11]=00、 recv[12]=01
MW2的值:recv[13]=00、 recv[14]=02
实际测试:一次读取一万个也是可以的

四、C#工程创建
1、创建UI界面
生成两台设备子界面,其中界面1为测试PLC。界面2无设备连接
2、寄存器读写操作测试
多个寄存器的读取,一次最多读取95个寄存器。

五、下载连接
https://download.csdn.net/download/panjinliang066333/87549591
包含
①PLC测试程序、②C#测试程序、③测试工具、④Mobus_TCP.exe安装库文件、⑤防火墙设置说明、⑥倍福官方测试例程


相关文章:
TwinCAT3中ModbusTCP Server和C# Client连接
目录 一、硬件环境 1、设置PLC的ip地址 2、ModbusTCP软件安装 3、PLC操作系统防火墙设置 4、网络助手连接PLC 二、创建PLC工程 1、创建寄存器读写变量 2、添加ModbusTCP授权 3、激活和运行工程 三、ModbusTCP数据协议说明 1、写单个寄存器 2、读寄存器 (1&…...
【上传项目代码到Git详细步骤】
1.下载安装Git到电脑上(这里我之前已经安装好了,就不细说了)2.进入控制台安装好后右键点击桌面空白部分会多出两个菜单选项,点击第二个Git Bash Here(点击第一个你会爆炸)会弹出一个git控制台,如…...
C++回顾(十五)—— 类模板
15.1 为什么要有类模板 类模板用于实现类所需数据的类型参数化类模板在表示如数组、表、图等数据结构显得特别重要,这些数据结构的表示和算法不受所包含的元素类型的影响 15.2 单个类模板语法 注意:类模板的创建对象一定要显示调用(指明类型…...
【JavaEE初阶】第四节.文件操作 和 IO (下篇)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言三、文件内容的操作 3.1 读文件 3.1.1 使用字节流读文件 3.2 写文件 3.2.1 使用字节流写文件 …...
华为OD机试用Python实现 -【分解质因数】 2023Q1A
华为OD机试题 本篇题目:分解质因数题目示例 1输入输出示例 2输入输出Code代码编写思路最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南...
博客项目
文章目录1. 创建项目2. 数据库设计3. 前置任务3.1 拦截器3.2 统一数据格式3.3 创建一个 Constant3.4 统一异常处理3.5 密码加密4. 功能实现4.1 登录功能4.2 注册功能4.3 博客列表页 (功能实现)4.3.1 左侧框4.3.2 右侧框 (分页功能 页面显示)4.4 博客详情…...
C++基础了解-20-C++类 对象
C 类 & 对象 一、C 类 & 对象 C 在 C 语言的基础上增加了面向对象编程,C 支持面向对象程序设计。类是 C 的核心特性,通常被称为用户定义的类型。 类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法…...
多态与虚(函数)表
前言续接上回(继承),我们了解了继承是如何通过虚基表,来解决派生类和父类有相同的成员变量的情况,但是类和对象中可不只有成员变量,如果成员函数也有同名,更或者如果我们想在访问不同情况&#…...
云舟案例︱视频孪生技术赋能城市安全综合管理场景,提升城市数智化水平
随着城市化发展进程的加快,人口不断膨胀,社会安全隐患等问题日益突出,成为困扰城市建设与管理的重要难题。针对各类社会治安突出问题,城市管理部门积极推进城市信息化建设,视频监控等各类信息化采集手段为城市数字化管…...
OpenFOAM 自定义gcc和openmpi安装
Compile Logs 编译很多次了但是好久不编还是会容易遗漏细节步骤,谨以为记。 使用自己编译的编译器和openmpi而不是系统自带的 库来完成对OF 的编译 依赖包安装 编译 GCC 编译 openmpi 编译OF 1依赖包安装 先 sudo apt-get install update当然,然后安…...
2023年3.8女神节买台灯怎么挑选?台灯用什么样的比较好
最近女神节,祝广大女性朋友们节日快乐啊。娱乐之余,一些实用的东西也是非常适合作为礼物送给女性朋友哦,台灯就是其中一个不错的选择。 台灯作为一种智能家居产品,不仅可见点缀卧室房间装饰,晚上的时候开启小范围照明&…...
近亿美元:人工心脏龙头永仁心医疗完成超大额A轮融资
近日,永仁心医疗器械有限公司(以下简称“永仁心医疗”)完成近一亿美元A轮融资,由北京科兴中维生物技术有限公司(SINOVAC科兴)领投,太平(深圳)医疗健康产业私募股权投资基…...
群智能优化计算中的混沌映射
经实验证明,采用混沌映射产生随机数的适应度函数值有明显提高,用混沌映射取代常规的均匀分布的随机数发生器可以得到更好的结果,特别是搜索空间中有许多局部解时,更容易搜索到全局最优解,利用混沌序列进行种群初始化、…...
【LeetCode】剑指 Offer 25. 合并两个排序的链表 p145 -- Java Version
题目链接:https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/ 1. 题目介绍(25. 合并两个排序的链表) 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 【测试用例】…...
如何应对危害机房安全的这几个常见要素?
随着现代化进程的推进,各行业对计算机的依赖性日益增高,计算机系统已经成为业务系统的重要组成部分。 在这种情况下,一旦机房设备出现故障,就会影响机房的正常运行,造成严重后果。尤其是银行、证券、海关等需要实时数据…...
【bug】antd全局的主题色样式被覆盖,被修改为`antd`默认的主题色
背景: 项目本身修改了主题色,配置如下: // umi配置文件 export default {theme: {primary-color: #2F54EB, // 全局主色}, };需要对图片上传组件做封装,并在项目中统一引用,如下 import { TdsUpload } from tdsComponents;环境信息 node tiandstiandsdeMacBook…...
MySQL DDL表操作【入门到精通】
目录 一、查询创建 1、查询当前数据库所有表 2、查看指定表结构 3、查询指定表的建表语句 4、创建表结构 二、数据类型 1、数值类型 2、字符串类型 3、日期时间类型 三、表操作-案例 设计一张员工信息表,要求如下: 对应的建表语句如下&#…...
《MySQL系列-InnoDB引擎28》表-约束详细介绍
约束 1 数据完整性 关系型数据库系统和文件系统的一个不同点是,关系数据库本身能保证存储数据的完整性,不需要应用程序的控制,而文件系统一般需要在程序端进行控制。当前几乎所有的关系型数据库都提供约束(constraint)机制,该机制…...
使用docker部署宝塔环境
经常需要部署lnmp环境,宝塔是一个不错的选择,包括安装各种插件,添加网站,设置定时任务等都非常方便。这次使用docker来部署。 拉取centos镜像 docker pull centos启动容器 1.-p端口映射,-d后台运行 2. 文件夹做一下映…...
ORB_SLAM2+kinect稠密建图
下载代码:https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map 运行代码: 解压代码后,删掉作者自己编译的build文件夹(下面三个都删除): ~/ORB_SLAM2_modified/build, ~/ORB_SLAM2_modified/T…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
