7-1200 与 S7-300 PN/S7-400 PN UDP 通信 TIA 相同项目

S7-1200 与 S7-300 PN 口之间的以太网通信可以通过 UDP 协议来实现,使用的通信指令是在双方 CPU 调用通信-开放式用户通信TSEND_C,TRCV_C(1200支持,300不支持)或TCON,TDISCON,TUSEND,TURCV 指令来实现。通信方式为双边通信,因此 TUSEND 和 TURCV 必须成对出现。

此外对于伙伴是S7-400PN 也可以参考本文档。

硬件和软件需求及所完成的通信任务

测试软/硬件:

① S7-1214 DC/DC/DC V4.4

② S7-315-2PN/DP V2.6

③ STEP7 V16

所完成的通信任务:

① S7-1200 CPU将通讯数据区 DB4 块中的 10 个字节的数据发送到 S7-300 CPU的接收数据区 DB5 块中。

② S7-300 CPU将通讯数据区 DB5 块中的 10 个字节的数据发送到 S7-1200 CPU的接收数据区 DB4 块中。

1200 / 300 CPU 硬件组态配置

1.使用 STEP7 V16 软件新建一个项目并完成硬件配置

在 STEP7 V16 的 “Portal 视图” 中选择 “创建新项目” 创建一个新项目。

2.添加1200CPU硬件并命名PLC

然后进入 “项目视图”,在“项目树” 下双击 “添加新设备”,在对话框中选择所使用的 S7-1200 CPU添加到机架上,命名为 1200,如图1所示。

A computer screen shot of a computerDescription automatically generated

图1. 添加1200 CPU设备

为了编程方便,使用 CPU 属性中定义的时钟位,定义方法如下:

在 “项目树” > “1200” > “设备组态” 中,选中 CPU ,然后在下面的属性窗口中,“属性” > “系统和时钟存储器” 下,将系统位定义在 MB1,时钟字节定义在 MB0,如图2所示。

时钟位使用 M0.5,以 1Hz 的速率自动激活发送任务。

A screenshot of a computerDescription automatically generated

图2. 启用系统字节与时钟字节

3.为 PROFINET 通信口分配以太网地址

在 “设备视图”中点击 CPU 上代表 PROFINET 通信口的绿色小方块,在下方会出现 PROFINET 接口的属性,在 “以太网地址” 下分配 IP 地址为 192.168.0.12 ,子网掩码为255.255.255.0,如图3所示。

A screenshot of a computerDescription automatically generated

图3. 分配1200CPU IP 地址

4.添加300CPU硬件并命名PLC

然后进入 “项目视图”,在“项目树” 下双击 “添加新设备”,在对话框中选择所使用的 S7-300 CPU 添加到机架上,命名为 300PN,如图4所示。

A screenshot of a computerDescription automatically generated

图4. 添加300 CPU设备

为了编程方便,使用 CPU 属性中定义的时钟位,定义方法如下:

在 “项目树” > “300PN” > “设备组态” 中,选中 CPU ,然后在下面的属性窗口中,“属性” > “时钟存储器” 下时钟字节定义在 MB0,如图5所示。

时钟位使用 M0.5,以 1Hz 的速率自动激活发送任务。

A screenshot of a computerDescription automatically generated

图5. 启动时钟存储器

5.为 PROFINET 通信口分配以太网地址

在 “设备视图”中点击 CPU 上代表 PROFINET 通信口的绿色小方块,在下方会出现 PROFINET 接口的属性,在 “以太网地址” 下分配 IP 地址为 192.168.0.3,子网掩码为255.255.255.0,如图6所示。

A screenshot of a computerDescription automatically generated

图6. 分配300CPU IP 地址

7.创建 CPU之间的网络连接

在项目树 “项目树”>“设备和网络” >“网络视图” 视图下,创建两个设备的连接。用鼠标点中 S7-1200 上的PROFINET通信口的绿色小方框,然后拖拽出一条线,到另外一个 315-2PN/DP 上的PROFINET通信口上,松开鼠标,连接就建立起来了,如图7所示。

A computer screen shot of a computerDescription automatically generated

图7. 建立两个 CPU的网络连接

S7-1200 侧编程和连接参数的配置

1.在OB1调用“TSEND_C”通信指令

在 S7-1200 CPU 中调用发送通信指令,进入 “项目树” > “ 1200” > “程序块” > “OB1” 主程序中,从右侧窗口 “指令” > “通信” > “开放式用户通信”下调用 “TSEND_C” 指令,创建连接,如图8所示。

A screenshot of a computerDescription automatically generated

图8. 调用 TSEND_C 通信指令

参数说明:

输入接口参数:

REQ:= %M0.5// 使用 1Hz 的时钟脉冲,上升沿激活发送任务;
CONT:= TRUE// 创建连接,默认TRUE;
CONNECT:=“_1200_Receive_DB".ConnectionData// UDP连接结构描述;
DATA:= "Data".USEND// 发送数据区的数据;
ADDR:=“_1200_Receive_DB".ADDR_Send// UDP通讯伙伴的连接参数,包括对方IP地址及端口;

输出接口参数:

DONE:= %M10.1// 任务执行完成并且没有错误,该位置 1;
BUSY:= %M10.2// 该位为 1,代表任务未完成,不能激活新任务;
ERROR:= %M10.3// 通信过程中有错误发生,该位置 1;
STATUS:= %MW12// 有错误发生时,会显示错位信息号。

2.配置 S7-1200 的 “TSEND_C”连接参数

S7-1200 的 “TSEND_C”指令的连接参数需要在指令下方的属性窗口“属性”> “组态”>“连接参数中”中设置,如图9所示。

A screenshot of a computerDescription automatically generated

图9. 配置 TSEND_C 连接参数

连接参数说明:

端点:可以通过点击选择按钮选择指定伙伴PLC;
连接类型:选择通信协议为 UDP;
连接 ID:连接的地址 ID 号,这个 ID 号在后面的编程里会用到;
连接数据:点击新建自动生成该数据块;
主动建立连接:此功能在UDP连接时,不能选择;
地址详细信息:定义本地通信的端口号为:2000,伙伴端口为:2000;

3.创建并定义 S7-1200 的发送/接收数据区 DB4 块

通过“项目树”>“1200”>“程序块”>“添加新块”,选择“数据块” 创建 DB4 命名为“Data”。定义发送数据区USDED为 10 个字节的数组,接收数据区URCV为 10 个字节的数组,如图10所示。

A screenshot of a computerDescription automatically generated

图10. 创建发送/接收数据区 DB 块

4.在OB1调用“TRCV_C”通信指令

进入 “项目树” > “1200” > “程序块” > “OB1 ” 主程序中,从右侧窗口 “指令” > “通讯” > “开放式用户通信”下调用 “TRCV_C” 指令,如图11所示。

A screenshot of a computerDescription automatically generated

图11. 调用 TRCV_C 通信指令

参数说明:

输入接口参数:

REQ:= %M20.0// 准备好接收数据 M20.0=TRUE;
CONT:= TRUE// 创建连接,默认TRUE;
CONNECT:=“_1200_Receive_DB".ConnectionData// UDP连接结构描述;
DATA:= "Data".URCV// 接收数据区的数据;
ADDR:=“_1200_Receive_DB".ADDR_Send// UDP通讯伙伴的连接参数,包括对方IP地址及端口;

输出接口参数:

DONE:= %M20.1// 任务执行完成并且没有错误,该位置 1;
BUSY:= %M20.2// 该位为 1,代表任务未完成,不能激活新任务;
ERROR:= %M20.3// 通信过程中有错误发生,该位置 1;
STATUS:= %MW22// 有错误发生时,会显示错位信息号。

5.配置 S7-1200 的 “TRCV_C”连接参数

S7-1200 的 “TRCV_C”指令的连接参数需要在指令下方的属性窗口“属性”> “组态”>“连接参数中”中设置,如图12所示。

A screenshot of a computerDescription automatically generated

图12. 配置 TRCV_C 连接参数

连接参数说明:

端点:可以通过点击选择按钮选择指定伙伴PLC;
连接类型:选择通信协议为 UDP;
连接 ID:连接的地址 ID 号,这个 ID 号在后面的编程里会用到;
连接数据:点击新建自动生成该数据块;
主动建立连接:此功能在UDP连接时,不能选择;
地址详细信息:定义本地通信的端口号为:2000。

1200CPU侧配置和编程完成,编译并存盘。

S7-300PN 侧编程和连接参数的配置

1.在 S7-300 中调用“TCON”(300不支持TSEND_C和TRCV_C)通信指令

在S7-300 CPU 中调用通信指令,进入 “项目树” > “ 300PN” > “程序块” > “OB1” 主程序中,从右侧窗口 “指令” > “通讯” > “开放式用户通信”下调用 “TCON” 指令,创建连接,如图13所示。

A screenshot of a computerDescription automatically generated

图13. 调用 TCON 通信指令

2.配置S7-300 的 “TCON”连接参数

S7-300 的 “TCON”指令的连接参数需要在指令下方的属性窗口“属性”> “组态”>“连接参数中”中设置,如图14所示。

A screenshot of a computerDescription automatically generated

图14. 配置 TCON 连接参数

连接参数说明:

端点:可以通过点击选择按钮选择指定伙伴PLC;
连接类型:选择通信协议为 UDP;
连接 ID:连接的地址 ID 号,这个 ID 号在后面的编程里会用到;
连接数据:点击新建自动生成该数据块;
主动建立连接:此功能在UDP连接时,不能选择;
地址详细信息:定义本地通信的端口号为:2000。

3.创建并定义 S7-300 的发送/接收数据区和UDP 连接参数数据块 DB5 块

通过“项目树”>“300PN”>“程序块”>“添加新块”,选择“数据块” 创建 DB5 命名为“Data”。定义发送数据区USEND为 10 个字节的数组,接收数据区URCV为 10 个字节的数组;

定义UDP 伙伴参数数据,数据类型为“TADDR_PAR”,包含伙伴的IP地址和端口号信息(如对方1200 CPU 的 IP:192.168.0.12,端口号:2000)。如图15所示。

A screenshot of a computerDescription automatically generated

图15. 创建发送/接收数据区和UDP 连接参数数据块DB 块

4.在 OB1 内调用“TUSEND” 通信指令

进入 “项目树” > “300PN” > “程序块” > “OB1 ” 主程序中,从右侧窗口 “指令” > “通讯” > “开放式用户通信”下调用 “TUSEND” 指令,配置接口参数,如图16所示。

A screenshot of a computerDescription automatically generated

图16. 调用 TUSEND 通信指令

参数说明:

输入接口参数:

REQ: = %M0.5// 使用 1Hz 的时钟脉冲,上升沿激活发送任务;
ID: = 1// 创建连接ID;
LEN:= 10// 发送数据长度;
DATA: = "Data".usend// 发送数据区的数据;
ADDR: = "Data".Param// UDP通讯伙伴的连接参数,包括对方IP地址及端口,使用指针寻址;

输出接口参数:

DONE:= %M20.1// 任务执行完成并且没有错误,该位置 1;
BUSY:= %M20.2// 该位为 1,代表任务未完成,不能激活新任务;
ERROR:= %M20.3// 通信过程中有错误发生,该位置 1;
STATUS:= %MW22// 有错误发生时,会显示错位信息号。

5.在 OB1 内调用“TURCV” 通信指令

进入 “项目树” > “300PN” > “程序块” > “OB1 ” 主程序中,从右侧窗口 “指令” > “通讯” > “开放式用户通信”下调用 “TURCV” 指令,配置接口参数,如图17所示。

A screenshot of a computerDescription automatically generated

图17. 调用 TURCV 指令并配置接口参数

参数说明:

输入接口参数:

EN_R:= M30.0// 准备好接收数据 M30.0=TRUE;
ID:= 1// 连接号,使用的是 TCON 的连接参数中 ID号;
LEN:= 10// 接收数据长度为 10 个字节;
DATA: = "Data".urcv// 接收数据区的地址;
ADDR: = "Data".Param// UDP通讯伙伴的连接参数,包括对方IP地址及端口,使用指针寻址;

输出接口参数:

NDR:= %M30.1// 该位为 1,接收任务成功完成;
BUSY:= %M30.2// 该位为 1,代表任务未完成,不能激活新任务;
ERROR:= %M30.2// 通信过程中有错误发生,该位置 1;
STATUS:= %MW32// 有错误发生时,会显示错误信息号;
RCVD_LEN// 实际接收数据的字节数。

300CPU侧配置和编程完成,编译并存盘。

下载硬件组态及程序并监控通信结果

下载两个 CPU 中的所有硬件组态及程序,实现两个 CPU 之间数据交换,监控结果如图18所示。

A screenshot of a computerDescription automatically generated

图18. 监控结果

附加说明

如果通信异常,请参考以下附加说明文档。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java进阶(二)+学习笔记

面向对象设计原则1. 面向对象概念面向对象 是一种编程思想,面向过程是关注实现的步骤,每个步骤定义一个函数,调用函数执行即可。面向对象关注的是谁(对象)来执行, 把具有相同属性和行为的一类事物(对象)进行抽象成类&#…

[附源码+数据库+毕业论]基于Spring Boot+mysql+vue结合内容推荐算法的学生咨询系统

摘要 随着互联网的普及,学生在学习和生活中面临着海量信息,如何高效获取有价值的内容成为亟待解决的问题。本文基于 Spring Boot 框架,结合内容推荐算法,设计并实现了一个学生咨询系统。系统采用 Spring Boot MyBatis MySQL Vu…

DeepSeek 微调实践:DeepSeek-R1 大模型基于 MS-Swift 框架部署 / 推理 / 微调实践大全

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】 GPT多模态大模型与AI Agent智能体书籍本章配套视频课程【陈敬雷】 文…

python基础知识pip配置pip.conf文件

pip.conf一、 INI格式二、 级别三、 文件位置四、 加载顺序五、 常用一、 INI格式 配置文件可以更改pip命令行选项的默认值,这个文件是使用INI格式编写的。 INI格式 主要包含三个内容:1.节section 2.键值对 3.注释 [section1] key1 value1 \\注释 key2…

深入理解 Java JVM

文章目录📕1. JVM简介📕2. JVM运行流程📕3. JVM运行时数据区📕4. JVM类加载✏️4.1 类加载过程✏️4.2 双亲委派模型✏️4.3 破坏双亲委派模型📕5. JVM垃圾回收机制(GC机制)✏️5.1 判断死亡对象…

Linux内核高效之道:Slab分配器与task_struct缓存管理

前言 在Linux内核中,进程创建与销毁是最频繁的操作之一。想象一下:当系统每秒需要处理成百上千次fork()和exit()调用时,如何保证task_struct(进程描述符)的分配与释放既快速又不产生内存碎片?这就是Slab分配…

双esp8266-01之间UDP透传传输,自定义协议

使用AT模式的透传,串口打印的数据包含pd1,4,数据打印的数据不是直接将数据打印出来,包含了pd1,4,特殊字符,针对想要直接开机直接透传,打印数据且按照自主协议帧头的功能进行开发。1.server程序:/*************SERVER**…

BGP 路由优选属性(7)【MED】官方考试综合实验题【bgp】【acl】【ip-prefix】【route-policy】【icmp 环路】精讲

目录 一、MED 属性介绍 二、实验 2.1 实验目的 2.2 拓扑图 2.2 实验说明 2.3 配置脚本 2.4 验证配置 2.5 问题分析 2.7 题目需求解析 2.8 场景 1:只允许在 AS12 上操作 2.9 场景 2:只允许在 AS34 上操作 正文 一、MED 属性介绍 MED 全称 mu…

html-初级标签

一.浏览器能识别的标签 1.1 head标签里的编码和title <head><meta charset"UTF-8"><title>Title</title> </head>1.2 标题 <body><h1>Welcome to my website</h1><h2>Welcome to my website</h2><…

【八股消消乐】Kafka集群 full GC 解决方案

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本专栏《八股消消乐》旨在记录个人所背的八股文&#xff0c;包括Java/Go开发、Vue开发、系统架构、大模型开发、具身智能、机器学习、深度学习、力扣算法等相关知识点&#xff…

《Java Web程序设计》实验报告二 学习使用HTML标签、表格、表单

目 录 一、实验目的 二、实验环境 三、实验步骤和内容 1、小组成员分工&#xff08;共计4人&#xff09; 2、实验方案 3、实验结果与分析 4、项目任务评价 四、遇到的问题和解决方法 五、实验总结 一、实验目的 1、HTML基础知识、基本概念 2、使用HTML标签、表格进行…

jenkins使用Jenkinsfile部署springboot+docker项目

文章目录前言一、前期准备二、编辑构建文件二、Jenkins构建总结前言 前面使用Jenkinsfile部署了前端vue项目&#xff0c;接着学习Jenkinsfile部署springboot项目。 一、前期准备 已经安装好centos,并且安装了jenkins和docker。本地新建springboot并上传到gitee上。 二、编辑…

使用ESM3蛋白质语言模型进行快速大规模结构预测

文章目录ESM3介绍ESM3在线使用本地使用api批量预测ESM相较于AlphaFold的优势ESM3介绍 ESM3是由EvolutionaryScale&#xff08;前Meta团队&#xff09;开发的一款蛋白质大语言模型&#xff0c;于2025年以《用语言模型模拟 5 亿年的进化》为题正式发表在Science上 文章链接: htt…

PostgreSQL 时间/日期管理详解

PostgreSQL 时间/日期管理详解 引言 PostgreSQL是一款功能强大的开源关系型数据库管理系统&#xff0c;在时间/日期管理方面具有独特的优势。本文将详细介绍PostgreSQL中时间/日期数据类型及其相关功能&#xff0c;帮助读者更好地理解和应用时间/日期管理。 时间/日期数据类型 …

Agent篇

Agent包含哪些模块&#xff0c;实现了什么功能Agent 就像一个多功能的接口&#xff0c;它能够接触并使用一套工具。根据用户的输入&#xff0c;Agent会规划出一条解决用户问题的路线&#xff0c;决定其中需要调用哪些工具&#xff0c;并调用这些工具。Agent 大语言模型规划记忆…

利用 MySQL 进行数据清洗

利用 MySQL 进行数据清洗是数据预处理的重要环节&#xff0c;以下是常见的数据清洗操作及对应 SQL 示例&#xff1a;1. 去除重复数据使用 ROW_NUMBER() 或 GROUP BY 识别并删除重复记录。-- 查找重复记录&#xff08;以 user_id 和 email 为例&#xff09; WITH Duplicates AS …

【MySQL笔记】事务的ACID特性与隔离级别

目录1. 什么是事务&#xff1f;2. 事务的ACID特性&#xff08;重要&#xff09;3. 事务控制语法4. 隔离级别与并发问题1. 什么是事务&#xff1f; 事务&#xff08;Transaction&#xff09;是由一组SQL语句组成的逻辑单元&#xff0c;这些操作要么全部成功&#xff0c;要么全部…

Mock 数据的生成与使用全景详解

Mock 数据的生成与使用全景详解 在后端开发过程中,真实数据往往受限于业务进度、隐私保护或接口未完成等因素,无法及时获取。这时,Mock数据(模拟数据)就成为开发、测试、联调不可或缺的利器。本文将从Mock数据的意义、常用场景、主流工具、实战案例到最佳实践,带你全面掌…

HTML 标题标签

需求&#xff1a;在网页显示六级标题标签。代码&#xff1a;//需求&#xff1a;在网页显示六级标题标签。 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title></head><body><h1>一级标题&l…

(限免!!!)全国青少年信息素养大赛-算法创意实践挑战赛小学组复赛(代码版)

选择题部分在 C 中&#xff0c;以下代表布尔类型的是&#xff08;  &#xff09;选项&#xff1a;A. double B. bool C. int D. char答案&#xff1a;B解析&#xff1a;C 中布尔类型的关键字为bool&#xff0c;用于存储逻辑值true或false。执行以下程序&#xff0c;输出的…