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

<PLC><西门子><modbusTCP>在西门子S7-1200系列PLC中,如何设置modbusTCP通讯?

前言

本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。

PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。

除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记录的内容,也会添加进来。

环境配置

系统:windows10
平台:visual studio code
软件:TIA V18(博图)
硬件:S7 1214C DC/DC/DC
固件版本:V4.6
编程语言:javascript、梯形图

概述

本文介绍在西门子1200系列PLC中,如何实现modbusTCP通讯?
在这里插入图片描述

1、modbusTCP参数

本文以PLC作为modbusTCP服务器为例,在西门子博图(V18)软件中,我们创建一个新项目,选择PLC型号为1214C,然后新建一个FC块。
西门子编程软件提供了用于modbusTCP通讯的系统块:MB_SERVER,我们可以在指令导航栏中找到它:
在这里插入图片描述
如图,PLC既可以使用MB_CLIENT作为modbustcp客户端,也可以使用MB_SERVER作为服务端。

本例是作为服务端,所以我们使用MB_SERVER,这是官方提供的FB块,使用SCL编写,但我们无法看到源代码。
在这里插入图片描述
我们来看一下需要设置哪些参数?
1、DISCONNECT:bool,用于断开已经连接的modbusTCP连接。
2、MB_HOLD_REG:VARIANT,保持寄存器缓存区,可以用于读写。

在modbus协议中,我们可以使用功能码来实现不同类型数据区的读写,如03可以读取保持寄存器,06写入保持寄存器,01读取线圈,05写入线圈,等等

此处,我们可以创建一个数组,数组元素可以是字节(Byte),也可以是字(Word),不过,通常modbus的寄存器都是按照字来划分的,所以,本例中,我们创建一个长度为30的字数组:
在这里插入图片描述
数组的长度依照实际需要来即可。此处数组的最大长度,通常取决于通讯双方控制器的性能和限制。

3、CONNECT:VARIANT,此处connect参数是一个结构体,用于设置连接相关的参数,其具体类型可设置如下:
在这里插入图片描述
本例中,我们使用的是第一种类型TCON_IP_v4,其内部结构如下:
在这里插入图片描述
我们需要特别注意CONNECT的参数:
1、interfaceid:HW_ANY,即硬件标识符,在西门子PLC中,用于标识已经组态的硬件,此处,我们可以去查找已经组态的PLC模块:
在这里插入图片描述
如上图,本例中,硬件标识符的值为64(10进制),也可以写成16进制,即16#40。
2、ID:CONN_OUC,用于标识已经创建的连接,需要注意,ID的值不能重复。本例设置为2。
3、ConnectionType:Byte,表示连接的类型,TCP类型的值为11。modbusTCP也属于TCP连接,因此本例中设置为11。
4、ActiveEstablished:bool,表示连接如何建立,本例中,PLC作为服务器,属于被动连接(即等待客户端主动连接),所以设置为false。
5、RemoteAddress:ARRAY [1..4] of BYTE,用于设置远程设备的IP地址,如果不需要与特定设备连接,可以设置为“0.0.0.0”,否则,设置为远程设备的特定IP,如本例中设置为:192.168.0.250
6、RemotePort:UINT,远程设备端口号,由于PLC是作为服务端,因此可以不用特别设置,当然如果有固定端口,设置为实际使用即可,如果运行任何端口连接,设置为0。
7、LocalPort:UINT,本地端口,即PLC作为服务器端的端口号,默认为502,如果要修改,取值范围为:1-49151,但是要注意不要与网络中其他设备的端口号冲突。

再看下状态参数:
1、NDR:bool,表示是否有新数据写入
2、DR:bool,表示正在读取数据
3、ERROR:bool,表示调用指令出错
4、STATUS:WORD,表示指令的详细状态信息,具体如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:切记要设置CONNECT参数中的几个关键参数:
interfaceidIDRemoteAddressLocalPort

注意2:如果你忘记了设置interfaceid,也就是硬件标识符,运行后,指令会报错,代码是809B,但是你如果看status,会发现并没有这个错误码。
事实上,这个错误代码,是在TCON这个指令中:
在这里插入图片描述
因为modbusTCP的连接属于TCP连接的一种,其内部建立连接的过程与TCON是一致的。

http://www.xdnf.cn/news/16538.html

相关文章:

  • 语音识别指标计算 WER
  • Java-泛型类的定义与使用
  • 24. 了解过 webp 吗
  • 如何进行DAP-seq的数据挖掘,筛选验证位点
  • Django 视图详解(View):处理请求与返回响应的核心
  • CenterOS8.5三台机器配置互信
  • 图解MySQL-小林code笔记
  • 排水管网实时监测筑牢城市安全防线
  • 本地大语言模型部署指南
  • Dify 工作流深度解析与实战指南
  • 重复文件清理工具,附免费链接
  • RWA 正当红,是 DeFi 的终点、拐点,还是新起点?
  • 常用设计模式系列(十四)—模板方法模式
  • HTML响应式SEO公司网站源码
  • 电脑开机不显示网卡的原因
  • 微算法科技(NASDAQ:MLGO)利用基于区块链的机器学习模型进行交易分类,实现交易数据的匿名化
  • Python 列表内存存储本质:存储差异原因与优化建议
  • ubnutu网络
  • Excel常用函数大全,非常实用
  • 旋变转换电路
  • Vue组件通信的终极指南
  • 【数据库】使用Sql Server将分组后指定字段的行数据转为一个字段显示,并且以逗号隔开每个值,收藏不迷路
  • uniapp,uview 报错:Not Found:Page[2][-1;-1,8,0,28] at view.umd.min.js:1
  • 从fork到exit:剖析Linux进程的诞生、消亡机制
  • 阿里云通义灵码深度解析:AI编程时代的技术革命与实践探索
  • 计算机毕设分享-基于SpringBoot的健身房管理系统(开题报告+前后端源码+Lun文+开发文档+数据库设计文档)
  • Windows---动态链接库Dynamic Link Library(.dll)
  • Java AI面试实战:Spring AI与RAG技术落地
  • Rust赋能智能土木工程革新
  • 【LeetCode 热题 100】51. N 皇后——回溯