C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器

news2024/12/24 8:19:56

1、打开仿真工具,创建PLC,注意创建完成后不要关闭

 注意,这个IP地址必须与西门子虚拟网卡的IP地址及虚拟机的网卡IP地址同一网段

 

2、打开博途V15,创建项目,命名为Lan项目

 

3、添加1500系列CPU1513

 

4、设置设置IP地址及属性

 

 

 5、添加通信模块MB_SERVER

找到程序块main,找到右边的指令,找到通信,找到其它,拖到MB_SERVER到程序段1中

 

 重点看mb_hold_reg和connect参数,disconnet为false表示被动连接,意思是说服务器等待客户机来连接,而不是服务器主动连接客户机,也就是说要客户机主动来连接服务器,到时候客户机通过IP地址和端口来连接服务器,所以连接服务器肯定要通过CONNECT这个引脚,连接成功后客户机需要数据,就需要MB_HOLD_REG引脚来回复数据。

现在这里是???,先别管,保存项目,继续下面的,因为还没有设置好其他

6、添加一个全局数据块DB2,创建一个数据类型为TCON_IP_v4的变量,用于匹配CONNECT

图中各引脚定义:

  其中id和localport可以自己定,但那个interfaceid是64,这个不能随便改,因为读取设备有个ID号,这个参数是隐含的,也要确保与设备保持一致,如图

 至于那个remoteport是表示哪些外部的IP可以连接本服务器,默认情况下是全部的IP,一般不要修改,除非有特别要求,所以这里保持默认,即允许任何IP地址连接本服务器,至于ID可以理解为进程ID,范围是1-4095,不能为0,每个连接ID必须独立,本案例为1(修改起始值为1);

DB2编译一下,成功

7,添加一个全局数据块DB3,用于匹配功能块“MB_SERVER”的管脚参数“MB_HOLD_REG”

 添加若干个变量,这里是8个,你可以根据实际情况

     

 设置块属性

 编译成功,可以看到变量的偏移量

 8,设置MB_HOLD_REG引脚参数

 MB_HOLD_REG就是保持寄存器的意思,在Modbus协议中就是03功能码

双击引脚,填写“P#DB3.DBX0.0 BYTE 20”,这里我重点讲下这个引脚是怎么配置,P表示指针的意思,DB3是因为上面第10步中,我添加的数据块名称是DB3,你要根据自己添加的数据块实际名称来改,然后0.0 BYTE 20表示从0到20个字节,为什么是20了,看下面图

word是一个字,占一个寄存器,占2个字节,real是两个字,占2个寄存器,占4个字节,因此第一个变量m1-speed的地址是0,1,8个变量的占的字节分别是:

m1-speed:0,1
m1-duaror:2,3
m1-level:4,5
m1-temp:6,7,8,9
m2-speed:10,11
m2-duaror:12,13
m2-level:14,15
m2-temp:16,17,18,19

从0到19共20个字节,字节就是用BYTE表示的啊,要明白这个意思,所以是0.0 BYTE 20,这里不能乱写,写错了就读不到变量的值,这里很多人容易搞错,要根据你的变量的字节范围来写,只能少,不能多,比如0.0 BYTE 22,就不对,因为没有22个字节,只有20个字节,不过,可以是0.0 BYTE 16,这就表示只读取前面7个变量,第8个变量不读取,除非你是这样的要求,当然后面可以添加很多个变量,

 如上又添加了2个变量,字节范围24个字节(0---23),但是我的指针是P#DB3.DBX0.0 BYTE 20,就只会读取前面20个字节,即前面8个变量的值,后面的9,10变量不会读取,特别要理解这个地方,很多文章没有讲清楚,搞得一套糊涂,很多人也没有搞明白这里到底要怎么写。引脚MB_HOLD_REG的含义就是指向哪个数据块的哪个范围的字节来响应外部程序或设备的MODBUSTCP请求,这个字节范围只是少于等于,不能大于数据块的范围。

9,设置CONNECT引脚参数

这个引脚的含义就是指用哪个数据块来响应外部连接本服务器,因为MODBUSTCP连接时,需要指定服务器的IP地址及端口,如图

 这个"tcp_connector".Connector,不就是指DB2数据块中的变量Connector吗?

 前面第6步创建数据块2,创建变量Connector,就是起这个作用的,各位大佬,各位长佬,明白了不?

 10、编译main程序块,成功

 11,下载程序到PLC

 

 

 12、针对DB3进行监控变量

13、小结

 到此,PLC搭建成MODBUSTCP服务器完成,后面写C#程序,基本过程是:创建Plc,创建项目,设置设备IP地址,添加mb_server模块,添加2个数据块,数据块中添加变量,设置引脚参数,编译下载程序到PLC。

下载成功后,就意味着modbustcp服务器已经启动了,已经准备好等待客户机连接,读取保存寄存器的数据值了,不需要额外什么操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/920518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

stm32之12.如何使用printf打印输出

主函数增加这些代码即可实现printf打印输出 需要添加头文件 #include "stdio.h" --------------- 源码 struct __FILE { int handle; /* Add whatever you need here */ }; FILE __stdout; FILE __stdin; int fputc(int c, FILE *f) { /* 发送一个字节 */ …

(AcWing) 最长上升子序列

给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数 N。 第二行包含 N 个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤1000, −109≤数列中的…

Visual Studio 2022 右键单击项目没有出现View | View Class Diagram(Visual Studio 无法使用类设计器)

文章目录 问题描述原因.NET Core项目.NET Framework项目 问题描述 当我们在Solution Explorer窗口右键单击项目时,快捷菜单中没有出现“查看”,或者出现了“查看”,但是“查看”里没有View Class Diagram。 原因 首先你要确保你安装了类设…

高品质的运动耳机有哪些、高端运动耳机推荐

随着健康生活理念的广泛普及,对于很多人来说,运动已经成为他们日常生活不可或缺的重要组成部分。在激情四溢的健身运动中,我们既能够放松身心,减轻工作压力,又能够强健身体,增强免疫力,可谓一举…

伦敦银和国内银价的换算

从去年开始,国内就不断地收紧普通投资者对杠杆白银产品的投资渠道,这令来自海外市场的伦敦银受到了越来越多的关注,但它始终是以美元和盎司计价的品种,对于习惯了国内计量单位的投资者来说,自然而然就也产生了“换算”…

AB测试可以用来测什么?不能测什么?

AB测试可以测什么: AB测试是常用的因果推断方法,可以用来检验新功能发版是否有效、策略上线是否有效。 有两个大方向的应用场景,一是产品迭代,二是策略优化。其中策略包括运营策略、算法策略等。 具体例子: 应用场景…

逆置字符串允许有空格和. 如I like China.->China. like I

void reverse(char* left, char* right) {while (left < right){int tmp *left;*left *right;*right tmp;left;right--;} } int main() {char arr[101] { 0 };gets_s(arr);int len strlen(arr);//求字符串长度//逆置整个字符串reverse(arr,arrlen-1);char* start arr;…

使用VisualStudio制作上位机(二)

文章目录 使用VisualStudio制作上位机(二)第三部分:GUI内部函数设计使用VisualStudio制作上位机(二) Author:YAL 第三部分:GUI内部函数设计 事件添加 给窗体或窗体按钮相关的操作添加事件有两种方式,事件的名字直白的表面了这是什么事件。 直接双击界面,自动生成窗…

KCP协议

1、什么是kcp协议 了解kcp协议之前先回顾一下传输层的两大协议TCP和UDP。 kcp是一个快速可靠协议&#xff08;也可以叫udp的可靠性传输&#xff09;。结合了tcp的可靠性和udp的传输速度等优点&#xff0c;能以⽐ TCP浪费10%-20%带宽的代价&#xff0c;换取平均延迟降低 30%-40%…

python模拟登入某平台+破解验证码

概述 python模拟登录平台&#xff0c;遇见验证码识别&#xff01;用最简单的方法seleniumda破解验证码&#xff0c;来自动登录平台 详细 python用seleniumxpath模拟登录破解验证码 先随便找个小说平台用户登陆 - 书海小说网用户登陆 - 书海小说网用户登陆 - 书海小说网 准…

谷歌浏览器如何设置不自动更新

谷歌浏览器如何设置不自动更新 第一步&#xff1a;右键点击“此电脑”&#xff0c;找到“管理”并点击&#xff0c;如果右键不能直接看到“管理”&#xff0c;可以点击“显示更多选项”找一下。 点击‘管理’后的截图 第二步&#xff1a;打开“任务计划程序”——“任务计划…

python自动化入门之Python编写脚本实现自动化爬虫详解

想知道如何使用Python轻松高效地获取网络上的信息&#xff1f; 本篇文章将探索Python自动化爬虫&#xff0c;并展示如何编写实用的脚本。 1. 什么是Python爬虫&#xff1f; 爬虫顾名思义&#xff0c;就是像蜘蛛一样在网络上爬行&#xff0c;抓取各种有用信息的一种程序。而Pyt…

二、MySQL数据库

MySQL数据库 一、MySQL基础 1、什么是关系型数据库&#xff1f; 关系型数据库是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系&#xff08;一对一、一对多、多对多&#xff09; 关系型数据库中&#xff0c;我们的数据都被存放在各种表…

Acrel-2000系列监控系统在亚运手球比赛馆建设10kV供配电工程中的应用-安科瑞黄安南

摘要:智能化配电监控系统是数字化和信息化时代应运而生的产物&#xff0c;已经被广泛应用于电网用户侧楼宇、体育场馆、科研设施、机场、交通、医院、电力和石化行业等诸多领域的高/低压变配电系统中。安科瑞自研的Acrel-2000系列监控系统可监控高压开关柜、低压开关柜、应急发…

Redis Pub/Sub 指南

Redis 不仅仅是一个数据库&#xff0c;还可以作为支持发布和订阅&#xff08;Pub/Sub&#xff09;操作的消息代理。本文将使用 Navicat for Redis 简要概述 Redis 的 Pub/Sub 功能。 关于发布或订阅消息范式 Pub/Sub 是一种模式&#xff0c;发送者&#xff08;广播者&#xf…

银河麒麟服务器arm安装qemu虚拟机

脚本 yum install -y virt-viewer virt-v2v libvirt* qemu* virt-manager 等待安装完成 打开虚拟系统管理器 接下来就可以新建虚拟机了

山西电力市场日前价格预测【2023-08-24】

日前价格预测 预测明日&#xff08;2023-08-24&#xff09;山西电力市场全天平均日前电价为319.98元/MWh。其中&#xff0c;最高日前电价为370.78元/MWh&#xff0c;预计出现在19: 30。最低日前电价为272.42元/MWh&#xff0c;预计出现在12: 45。 价差方向预测 1&#xff1a; 实…

Wlan——STA上线流程与802.11MAC帧讲解以及报文转发路径

目录 802.11MAC帧基本概念 802.11帧结构 802.11MAC帧的分类 管理帧 控制帧 数据帧 STA接入无线网络流程 信号扫描—管理帧 链路认证—管理帧 用户关联—管理帧 用户上线 不同802.11帧的转发路径 802.11MAC帧基本概念 802.11协议在802家族中的角色位置 其中802.3标…

Git,分布式版本控制工具

1.为常用指令配置别名&#xff08;可选&#xff09; 打开用户目录&#xff0c;创建.bashrc文件 &#xff08;touch ~/.bashrc&#xff09; 2.往其输入内容 #用于输出git提交日志 alias git-loggit log --prettyoneline --all --graph --abbrev-commit #用于输出当前目录所有文…

BES SDK 各算法模块所占Flash空间大小估计

他V hezkz17进数字音频系统研究开发交流答疑群(课题组) 1