ERTEC200P-2 PROFINET设备完全开发手册(8-2)

news2024/11/14 14:48:51

8.2 IRT通讯原理及API

PROFINET RT通讯的特点:

典型的PROFINET网络如下图所示。

 

其中:

T1: 采样输入

T2: IO背板周期 

T3: Profinet I/O 通讯周期 

T4: CPU组织块OB1执行周期 

T5: Profinet I/O 通讯周期 

T6: IO背板周期 

T7: 建立输出

在PROFINET RT的系统下,Profinet I/O 通讯是以准确的时间间隔(IO更新时间)进行周期通讯。但是每个设备都有各自时钟,每个设备按照自己的周期采样输入或者建立输出。这样 T1-T7没有任何的同步对应关系。这样系统的响应时间(输入到输出)在最好的情况下为: (T1+T2+T3+T4+T5+T6+T7),在最坏的情况下为2X(T1+T2+T3+T4+T5+T6+T7)

PROFINET IRT通讯的特点:

在同步的应用下,所有一个同步域内的IO设备都通过PTCP报文会获得PLC的主时钟(master clock 或者 send clock),并且将自己的时钟同步到PLC的时钟上。目前 CPU1518 + ERTEC200P-2可以做到最小125 µs。

这样一个同步域内的所有设备会有一个全局的时钟基准。在全局的时钟基础上,组态软件(TIA)会给同步域内的所有IO设备规划统一的采样输入时刻Ti和建立输出时刻To。这样所有IO设备在同一时刻采样输入、建立输出。相对应,PLC需要定义专用的、优先级高的同步组织块("synchronous cycle" OB6x),统一读取同步输入数据;进行逻辑运算;统一更新同步输出数据。

 为了保证Ti、To、同步组织块的时序关系。IO数据通讯需要在准确的时间开始和结束,因此IRT通讯技术采用时间分片的模型:

 每个通讯周期被分割为时间片 ,通讯周期开始时刻的时间片预留给优先级最高的IRT报文(RT_Class3),剩余的时间片分配给RT, TCP/UDP,..。在IRT通讯时间片内,PN网络所有交换机和设备不允许转发和发送非IRT数据。这样,相当于为IRT通讯预留了快车道:

 因此我们常说IRT应用是指IRT通讯+同步应用

RT

IRT

同步

  • 实时通讯
  • IO更新周期 >=250µs

  • 带有预留带宽和同步周期的实时通讯
  • IO更新周期 >=125µs
  • 需要特殊硬件(CC-C,IRT交换机)支持
  • 由同步组织块(e.g. OB61)处理的IRT通讯
  • 用户程序、采样输入、建立输出同步到统一的周期上
  • 典型应用:运动控制精确测量

在我们TIA中设定IRT带宽预留(图中1),和查看实际使用的带宽(图中2)

 开启等时同步模式后,IO通讯周期Tdc (Time of Data Cycle)=发送时钟。如果同步组织块(e.g. OB61)在一个Tdc内无法完成计算任务,可以调整应用周期的时间为发送周期的整数倍,相当于多个通讯周期更新一次输出数据。这个整数倍被定义为Tcacf(control application cycle factor)。这样Tdc、Ti、To和Tcacf定义了IRT等式同步的基本时间参数。PLC在与设备建立连接时,会将这些参数通过索引号为0x8030数据记录写入到设备。如下图,左侧是协议栈打印输出的0x8030数据,右侧是TIA的等时同步配置。

PN设备需要在同步事件Ti、To更新输入、建立输出。200P既可以中断的形式响应同步事件,也可以将GPIO1-7设置为同步输出(PN-PLL)。协议栈已默认将GPIO0关联到Tdc。

同步GPIO输出初始化函数为:PNIO_IsoActivateGpioObj,即在发送周期开始时延时指定的时刻在GPIO上产生上升或下降沿触发信号。同步事件中断初始化函数为PNIO_IsoActivateIsrObj,即在发送周期开始时延时指定的时刻回调中断处理函数。

 在参考代码中,PLC通过0x8030写入Ti、To

 将GPIO7设置为Ti同步输出

 将GPIO5设置为To同步输出

 从示波器查看GPIO0,GPIO5,GPIO7可以看到输出脉冲

IRT通讯支持两种特殊的模式

1)快速转发模式(Fast Forwarding)

多口设备转发延时的时间可以从1440ns减少的320ns

 2)动态组包(DFP - Dynamic Frame Packing)

就是我们常说的火车模式,这样可以极大的提高IRT通讯的效率。

 目前,ERTEC200P-2对于上述两种增强模式提供了很好的支持。

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

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

相关文章

Java35-85

这里写目录标题 steam流collect超详解 方法引用静态方法中没有this!!!引用本类或者父类的成员方法 引用构造方法引用方法成员引用数组的构造方法转成自定义对象获取部分属性并收集到数组 异常异常中的常见方法抛出 处理自定义异常File的概述和…

实验8 梯度下降法

1. 实验目的 ① 掌握深度学习框架中的自动求导机制; ② 掌握梯度下降法的基本原理,能够使用梯度下降法求解一元和多元线性回归问题。 2. 实验内容 ① 使用TensorFlow的可训练变量和自动求导机制实现梯度下降法; ② 使用梯度下降法训练线性…

2023-04-23 算法面试中常见的动态规划问题

动态规划 1 什么是动态规划 以菲波那切数列求和为例,通过 1.普通的递归2.引入记忆数组memo3.自下而上地解决问题,即动态规划 动态规划的定义 dynamic programming (also known as dynamic optimization) is a method for solving a complex problem by…

Redis-cli Go代码

Redis-cli Go代码 安装 go get github.com/redis/go-redis/v9 建立连接 import ("context""fmt""github.com/redis/go-redis/v9" )client : redis.NewClient(&redis.Options{Addr: "localhost:6379",Password: "", …

支付宝 网站支付Demo 案例【沙箱环境】IDEA如何配置启动Eclipse项目

前言 在跑支付宝提供的支付案例Demo的时候,遇到了一些问题。支付宝提供的Demo是用Eclipse跑的JAVAEE项目。我想用IDEA来跑一下看看、结果使用习惯了Mavne管理jar包和SpringBoot项目。启动web项目的时候,还遇到一些问题。特此记录遇到的一些小问题。顺便回…

c++之常见函数

文章目录 一、inline函数二、函数重载三、函数模板 一、inline函数 1.当进行函数的调用时,系统要建立栈空间,保护现场,传递参数等等,这些工作都需要系统时间和空间得开销然而inline 函数是以空间换时间的做法,省去调用…

FL Studio 21最新发布的版本主要的新功能

FL Studio 21是最新发布的版本,其主要的新功能有: 1. 全新的UI设计:FL 21采用全新的 FLAT UI 设计风格,简洁而不简单,颜值大大提高。 2. 多窗口支持:可以将FL Studio窗口分别显示在不同的显示器上,实现屏幕间切换和多视图编辑。 3. 混音台增强:新增后置通道、多输入输入和多…

反垃圾邮件产品技术要求和测试评价方法

声明 本文是学习信息安全技术 反垃圾邮件产品技术要求和测试评价方法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 反垃圾邮件产品等级划分 根据产品功能要求和安全保证要求的不同,以及反垃圾邮件产品适用应用环境的不同,将…

ROS1学习笔记:常用可视化工具的使用(ubuntu20.04)

参考B站古月居ROS入门21讲:常用可视化工具的实现 基于VMware Ubuntu 20.04 Noetic版本的环境 文章目录 一、日志输出工具:rqt_console二、绘制数据曲线:rqt_plot三、 图像渲染工具:rqt_image_view四、图形界面总接口:r…

FE之TSNE:基于MNIST手写数字数据集利用T-SNE/TSNE方法实现高维数据集可视化应(二维可视化和三维可视化)应用案例之详细攻略

FE之TSNE:基于MNIST手写数字数据集利用T-SNE/TSNE方法实现高维数据集可视化应(二维可视化和三维可视化)应用案例之详细攻略 目录 基于MNIST手写数字数据集利用T-SNE/TSNE方法实现高维数据集可视化应(二维可视化和三维可视化)应用案例 # 1、定义数据集 # 2、数据预…

docker部署springboot(jar)项目的方式概括

1、docker挂载目录 实现原理:docker中只需要安装一个JDK镜像,把该镜像的目录挂载到外部的Linux中,如挂载到/usr/data/jar,我们只需要把Jenkins构建的jar文件传输到该目录中,在通过docker命令启动jar即可: …

【代码随想录】刷题Day5

1.链表重复节点删除 82. 删除排序链表中的重复元素 II 前后指针实现 1.做这道题最大的感受就是:不要觉得开辟空间浪费,多用临时变量去记录。越精确越容易成功 2.首先没有节点或者一个节点直接返回 3.因为头部会出现一样元素的情况,以至于我不…

C语言之详解静态变量static

在C语言中static是用来修饰变量和函数的,这篇文章详细介绍了static主要作用,文章中有详细的代码实例,需要的朋友可以参考阅读 在C语言中: static是用来修饰变量和函数的 static主要作用为: 1. 修饰局部变量 - 静态局部变量 2. …

linux软件安装指令---yum和rpm

这里写目录标题 一 yum指令1. yum install 软件名2. yum remove 软件名3 检查已经安装成功的软件 二 rpm指令1 rpm -q2 rpm -qa|less3 rpm -qa| grep python4 搜索文件的详细信息5 查询一个rpm中的包安装到哪里去了6 查询一个文件属于那个包7 软件包的卸载 三 总结四 示范安装 …

【面试系列】四种经典限流算法讲解

固定窗口限流算法 介绍 固定窗口限流算法(Fixed Window Rate Limiting Algorithm)是一种最简单的限流算法,其原理是在固定时间窗口(单位时间)内限制请求的数量。该算法将时间分成固定的窗口,并在每个窗口内限制请求的数量。具体来…

锦江展焕新演绎,憬黎公寓住造理想

2023年4月19-21日,“万物春生,赴锦程”锦江酒店(中国区)投资加盟品鉴会,在上海世博展览馆完美收官。这是一场迎着酒店行业复苏浪潮的年度盛会。 插图丨锦江酒店(中国区) 作为锦江酒店&#xff…

60 openEuler 22.03-LTS 搭建MySQL数据库服务器-安装、运行和卸载

文章目录 60 openEuler 22.03-LTS 搭建MySQL数据库服务器-安装、运行和卸载60.1 安装60.2 运行60.3 卸载 60 openEuler 22.03-LTS 搭建MySQL数据库服务器-安装、运行和卸载 60.1 安装 配置本地yum源,详细信息请参考《openEuler 22.03-LTS 搭建repo服务器》。 清除…

JavaWeb01(WEB环境的搭建)

目录 一.JDK 1.1 JDK是什么? 1.2 如何下载和安装jdk? 1.3 如何配置环境变量? 1.4 如何测试java环境变量是否配置成功? 二.Tomcat 2.1 Tomcat是什么? 2.2 为什么需要使用它? 2.3 如何下载? 2.4 了解Tomcat目录结构 2.5 如何修改Tomcat端口号(0-65535) 2.6 如何使…

Nginx的优化及防盗链

Nginx程序优化 模块 ngx_http_access_module模块 访问模块 ngx_http_auth_basic_module模块 用户访问控制 ngx_http_stub_status_module模块 查看http状态统计模块 ngx_http_gzip_module模块 压缩模块 ngx_http_ssl_module模块 设置http的连接模块 ngx_http_rewrite_mod…

Python selenium 模块使用find_element_by_id无效

一、发生异常: 二、原因 查询安装selenium的版本是4.5.0 这个版本不支持页面对象的定位find_element_by_id方法,以前版本支持这些进行元素定位: find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_elem…