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

news/2024/5/17 16:16:49 标签: MODBUSTCP, PLC, 西门子, TCP, 通信

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的含义就是指向哪个数据块的哪个范围的字节来响应外部程序或设备的TCP.html" title=MODBUSTCP>MODBUSTCP请求,这个字节范围只是少于等于,不能大于数据块的范围。

9,设置CONNECT引脚参数

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

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

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

 10、编译main程序块,成功

 11,下载程序到PLC

 

 

 12、针对DB3进行监控变量

13、小结

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

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


http://www.niftyadmin.cn/n/4971642.html

相关文章

vue 报错

报错 npm install 报错:code ELIFECYCLE errno 1 This is probably not a problem with npm. There is Vue前端项目用npm install 报错:code ELIFECYCLE errno 1 This is probably not a problem with npm. There is

pywebview 通过 JSBridge 调用 TTS

pip install pywin32 ; pip install pywebview ; 通过 JSBridge 调用本机 TTS pip install cefpython3 cefpython3-66.1-py2.py3-none-win_amd64.whl (69.0 MB) Successfully installed cefpython3-66.1 编写 pywebview_tts.py 如下 # -*- coding: utf-8 -*- ""&…

图文并茂:Python Tkinter从入门到高级实战全解析

目录 介绍什么是Tkinter?准备工作第一个Tkinter程序界面布局事件处理补充知识点 文本输入框复选框和单选框列表框弹出对话框 综合案例:待办事项列表总结 介绍 欢迎来到本篇文章,我们将带您深入了解如何在Python中使用Tkinter库来创建图形用…

Python数据分析和爬虫:解析数据的强大工具

引言: 在当今数据爆炸的时代,数据分析和数据提取变得越来越重要。作为一种简洁而强大的编程语言,Python在数据分析和爬虫领域有着广泛的应用。本文将详细介绍Python在数据分析和爬虫中的常用库和技术,并探讨其在实际应用中的优势…

spring框架:简介+依赖注入

目录 一、spring简介 二、创建项目 三、spring创建对象 四、SpringBean管理 1.注入实现-XML 2.注入实现-注解 一、spring简介 spring诞生与2003年,是一个轻量级的、IOC( Inversion Of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程)的jav…

Ruoyi微服务启动流程

1、执行sql 执行sql ry-quarty.sql ry_2023706.sql 到ry-cloud 数据库 2、下载nacos 修改配置文件 修改连接地址 启动nacos 看到下面的配置文件即为成功 修改配置文件里面的数据库连接信息 3、修改nacos 为单机启动 4、启动项目即可 nacos自取 链接: https://pan.baidu…

cortex-A7中断实验 --- STM32MP157

实验目的 1,实现KEY1/LEY2/KE3三个按键,中断触发打印一句话 2,实现KEY1/LEY2/KE3三个按键按下之后,灯的状态取反 一,异常源和异常模式 1,异常源:异常源引发处理器进入对应的异常模式 2&…

fegin实现方法级别注解超时配置

fegin实现方法级别注解超时配置 测试的3.18新版本已经支持方法中参数带有Options 也可以自定义配置, Options options findOptions(argv);; 使用该注解方式需配合AOP使用! 原理是包装自己的client客户端, 替换框架的客户端! 应用到生产环境需自己充验证测试 1.0 注解 Target(…