PROFINET的基本通讯模型如下图:
Profinet 是基于标准以太网技术的应用层协议,支持4种类型的数据通道
标准通道:参数化及配置,读诊断数据,设备信息(I&M),资产信息 (AMR) ;(基于UDP、TCP)
RT通道:循环数据交换,报警 (直接第二层访问 )
IRT 通道: 周期的, 同步数据交换, 抖动<1μsec(直接第二层访问 )
TSN:循环数据交换和网络管理平面 (基于IEEE 802.x 和IEEE/IEC60802) (直接第二层访问 )
在控制应用中,主要使用的是循环数据交换,例如:通过输入数据(I)获得开关状态,获得驱动器的实时速度等;通过输出数据(Q)控制继电器输出,或者设定驱动器的速度。对于同步性能或通讯抖动的不同需求,周期/循环数据可以基于RT、IRT或者TSN。
PROFINET 使用生产者-消费者模型进行循环数据交换:
接下来的部分介绍如何基于ERTEC200P-2实现对周期数据(IO数据)的处理。
3.1连接PN控制器
这里以PLC S7-1511作为控制器,按照下图连接设备
PC的IP地址设为:192.168.1.100。用网线连接:PC的网口到PLC的X1-P1,PLC X1-P2 到EB200P-2的X1-P1。
由于默认的参考代码通过XHIF与单片机交换数据并更新输入数据,因此先把这部分代码屏蔽掉。按照如下方式修改usriod_main.c,屏蔽掉XHIF数据交换部分。
按照上一节的方式重新编译、调试运行。(注意:每次开始新的调试运行时,一定要把之前的调试彻底停止,点击stop)
确认新的固件运行起来之后( 串口调试终端输入‘?’),开始配置PLC。打开TIA Portal V16,并创建新项目“ERTEC_Test”
点击创建之后,打开项目视图
如果之前没有导入EB200P-2的GSDML文件,需要导入GSDML文件。在“选项”中选择“管理通用站描述文件”。
选择安装包源路径为\Devkit47\contributions\GSDML文件夹,安装V2.4版本的GSDML文件。
安装结束后进入“设备和网络”视图
在硬件目录中“Controllers”,双击添加相应型号的PLC CPU,这里用的是CPU1511-1 PN (订货号 6ES7 511-1AK01-0AB0),固件版本为V2.6。选择的PLC的订货号和固件版本号一定要与实际一致。如果不确定,对应的信息可以在“在线访问中”找到。
接着在目录中展开“其它现场设备” “PROFINET IO” “I/O” “SIEMENS AG” “DEVKIT” “ERTEC200P Evaluation Kit”,双击添加“Standard MRP,S2 redundancy,DR”。
添加后,点击“未分配”,选择“PLC_1”,为设备分配控制器。
点击PLC深色部分,选择下方属性标签,在“PROFINET 接口” “以太网地址” 中设置PLC的IP地址为“192.168.1.15”,这里可以看到为PLC自动生成的设备名称是“plc_1”
双击展开ERTEC-DEVKit的配置界面,在插槽1 中加入“64 byte I”,在插槽2中加入““64 byte O”。
选中ERTEC-DEVKIT深色部分,选择下方属性标签,在“PROFINET 接口” “以太网地址” 中设置IO设备的IP地址为“192.168.1.10”。这里可以看到自动生成的设备名称是“ertec-devkit”
为了PLC可以与设备建立连接,我们需要在线修改设备名称。在项目视图 “在线访问” “PC的LAN网卡” 下双击“更新可访问设备”(由于硬件不同,因此实际显示的网卡型号会与下图略有不同)。
可以找到PROFINET设备如下图所示:
其中,[08-00-06-02-01-10] 就是EB200P-2。双击打开“在线和诊断”,在“功能” “分配PROFINET设备名称” 中将设备的名称改为“ertec-devkit”。注意:在Profinet网络里,设备名称是设备的唯一标识,不是IP地址。
选中左侧栏的PLC_1[CPU 1511-1 PN],在工具栏中选择编译下载PLC程序。
PLC程序下载运行后,如果配置正确可以在MobaXterm中显示:
在“设备和网络”中选择“在线”,可以看到PLC和模块工作正常。
接下来我们测试一下过程数据是否正确。在项目视图中打开“PLC变量” “默认变量表”,
在变量表中按照下图添加Tag “InData0” 对应输入过程映像区地址 “%IB0”。需要注意的是模块的起始地址是由TIA软件自动分配的,可以在插槽配置中看到。如果用的S7-1200或者系统中已有其它I/O,模块对应的过程映像地址并不总是从‘0’开始。在工具栏中选择在线监视(眼镜形状的图标),可以看到第一个字节的值为0x11,这是协议栈默认的初始值。
在MobaXterm中,通过输入测试命令‘Q/q’,我们可以增加或者减小输入过程值。在这里输入‘Q’
回到TIA,可以看到监视值发生了相应的变化
通过参考命令‘Q/q’对应的代码,我们就可以实现自己的过程值,比如数字量输入输出,模拟量输入输出。
下一篇:周期读写的回调和API