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

news/2024/12/4 17:18:17/

7. 配置模块及自定义模块

7.1.1 PN设备的基本模型

初次接触PN的开发者,最容易出现的错误就是设备的实际配置与TIA的组态不一致。为了开发的过程更加顺利,非常有必要掌握PN设备的基础模型。PN设备的基本模型如下图描述:

 PN设备的基本构成是插槽slot,所有的设备均是由一个或多个插槽组成,每个插槽均由若干子插槽sub-slot组成。其中插槽0固定作为总线接口,也叫做设备访问点(DAP-device access point)。插槽1及之后的插槽(2 …) 作为输入输出,提供周期数据访问或非周期数据访问以及报警、诊断功能。在GSDML文件中,描述了每个槽上可用的模块,以及每个模块包含的可用子模块。在组态软件(TIA博图)中根据实际的设备配置,将模块、子模块分配到槽和子槽。

注意,这里的组态的配置必须与设备实际的配置相同。如果组态的配置与设备实际的配置的不相同,如下图所示,PLC不会建立与设备的控制关系(IOC-AR) 

 同时,PLC会为每个模块、子模块的IO数据在过程映像区内分配对应的地址。输入数据对应I过程映像区, 输出数据对应Q映像区。基于PN通讯,PLC通过指定的OB块(例如:OB0、OB30或OB61),将从PN设备接收的输入数据更新到I区,以及将Q区的数据发送至PN设备建立输出。PLC应用程序在OB块内通过地址访问过程映像区,处理输入设置输出。

7.1.2 协议栈中的模块配置

用户程序可以通过PNIO_sub_plug()在设备中添加一个模块,也通过PNIO_sub_plug_list设备中添加多个模块。以APP1参考代码为例,协议栈按照如下方式初始化设备的实际配置:

然后再初始化过程中,通过调用PNIO_sub_plug_list完成IO设备的实际配置:

 

这样就完成如下图的设备配置:

 

 

其中Slot1、Sub-slot1为64bytes 的输入模块,模块MOD-ID=0x30、子模块SUBMOD-ID=0x01; Slot2、Sub-slot1为64bytes 的输出模块,模块MOD-ID=0x31、子模块SUBMOD-ID=0x01

参考第2章,如果PLC需要与设备建立控制关系,在组态过程中就需要按照下图所示与实际设备的配置一致。

按照第2章的内容建立环境,以及对PLC进行组态。将协议栈的初始化配置列表改为如下形式:

即从配置中移除64bytes 的输出模块,如下图所示: 

 

如果PLC的组态保留原有配置,在串口的打印信息中可以看到:

 由于组态配置与实际插入模块不符,可以通过打印信息看到isWrong=1。同时,PLC的故障灯亮起,从PLC的诊断信息可以看出,Slot2 Subslot1 的子模块出现错误信息:

 

200P协议栈支持动态添加模块,通过API PNIO_sub_plug 可动态的添加模块、子模块到对应的插槽和子插槽上。在App1中可以通过输入‘S’调用PNIO_sub_plug添加模块“64bytes output” 到slot2 subslot1。终端的显示信息如下:

 由于添加模块后,设备的配置与TIA中的组态一致,可以看到PLC恢复正常工作:

 

 在某些情况下我们需要设备自动的适配TIA的组态,例如slot2 subslot1初始化为“64bytes output

 但是我们在TIA的组态中配置为“1byte out”

可以通过自动适配模块的方式将设备的配置自动替换为与PLC的组态一致的模块。具体方法如下:

PLC的发送连接请求到设备时,会触发PNIO_cbf_ar_ownership_ind回调函数,在回调函数中如果发现PLC组态与模块不一致,首先调用PNIO_sub_pull移除原有的模块(64bytes output),然后调用PNIO_sub_plug添加新的模块(1byte out)。代码片段如下

 编译后运行,可以看到设备已经自动适配到PLC的组态。

 

 

 


http://www.ppmy.cn/news/58085.html

相关文章

10. Docker——Containerd

本章讲解知识点 容器运行时(Container Runtime)ContainerdContainerd 与 Docker 命令对比1. 容器运行时(Container Runtime) 容器运行时(Container Runtime)是一种程序,用于管理和运行容器镜像。它可以在计算机上创建和运行容器,提供容器隔离的环境,以及与其他计算机…

MySQL——存储过程和函数从零基础到入门必学教程(涵盖基础实战)

目录 文章目录 前言 一、创建存储过程 二、在存储过程中使用变量 1.定义变量 2.为变量赋值 三、光标的使用 1.打开光标 2.打开光标 3.使用光标 4.关闭光标 四、流程控制的作用 1.IF语句 2.CASE语句 3.LOOP语句 4.LEAVE语句 5.ITERATE语句 6.REPEAT语句 7.WHIL…

「Codeforces」B. Odd Swap Sort

B. Odd Swap Sort https://codeforces.com/contest/1638/problem/B 题目描述 有一个数组A,遍历这个数组,若 a i a i 1 a_ia_{i1} ai​ai1​ 的和为奇数,则交换这两个数的位置 s w a p ( a i , a i 1 ) swap(a_i, a_{i1}) swap(ai​,ai1…

刷题4.28

1、 开闭原则软件实体(模块,类,方法等)应该对扩展开放,对修改关闭,即在设计一个软件系统模块(类,方法)的时候,应该可以在不修改原有的模块(修改关…

Ubuntu20.04 交叉编译Paddle-OCR

第一步:交叉编译Paddle-Lite 参考链接:https://blog.csdn.net/sz76211822/article/details/130466597?spm1001.2014.3001.5501 第二步:交叉编译opencv4.x 参考链接:https://blog.csdn.net/sz76211822/article/details/13046168…

不是那么快乐的五一

大家好,我是记得诚。 五一假期结束了,明天开始上班了。 这个假期没休息好,也没出去玩。 放假前一天,接到通知让加班。 第一天就去公司加班了,属实很难受,我心想如果别人有了出远门的安排,还…

mysql5.7以上的启动、停止、赋权命令

文章目录 1、启动mysql server2、查看初始密码3、本地登陆mysql4、修改本地root用户密码5、防火墙设置6、开启mysql的远程登录 1、启动mysql server systemctl start mysqld #启动程序 systemctl enable mysqld #开机自运行 systemctl status mysqld #查看状态…

CSS布局基础(网页图片 切图)

网页图片 网页图片图片格式 切图直接从 psd 图层导出切片工具切图插件切图其他设计工具 网页图片 图片格式 jpg/jpeg 高清图gif 小动画,支持透明背景png 结合jpg 和 gif 支持透明背景,高清psd ps专属格式,常用于设计稿,里面的素…