摘要:利用S7 PLC程序库中的SFC51系统功能,诊断Profinet网络,分析网络节点状态,实现现场实时监控与诊断。
关键词:SFC51;PLC;现场总线;程序结构
1 Profinet网络
Profinet 由 Profibus 国际组织推出,是新一代基于工业以太网技术的自动化总线标准。Profinet 提供了一个优化的、基于以太网第二层(Layer 2)的实时通信通道,极大地减少了数据在通信栈中的处理时间。Profinet 实时通信(RT)的典型响应时间为5~10ms。
2 西门子S7 PLC程序架构
西门子S7 PLC用户程序和所需的数据放置在块中,使程序部件标准化、用户程序结构化,可以简化程序组织,使程序易于修改、查错和调试。块结构显著地增加了PLC程序的组织透明性、可理解性和易维护性。具体程序结构见表1。
表1 S7 PLC程序结构
块 | 简要描述 |
组织块(OB) | 操作系统与用户程序的接口,决定用户程序的结构。 |
系统功能块(SFB) | 集成在CPU模块中,通过SFB调用一些重要的系统功能,有存储区。 |
系统功能(SFC) | 集成在CPU模块中,通过SFC调用一些重要的系统功能,无存储区。 |
功能块(FB) | 用户编写的包含经常使用的功能的子程序,有存储区。 |
功能(FC) | 用户编写的包含经常使用的功能的子程序,无存储区。 |
背景数据块(DI) | 调用FB和SFB时用于传递参数的数据块,在编译中自动生成数据。 |
共享数据块(DB) | 存储用户数据的数据区域,供所有的块共用。 |
系统功能块和系统功能是为用户提供的已经编好程序的块,可以调用不能修改,不占用户程序空间。SFB有存储功能,其变量保存在指定给它的背景数据块中。
3 SFC51系统功能
SFC 51“RDSYSST”系统功能用于读取“系统状态列表”(SSL)、部分列表或CPU的SSL列表摘录。对于Profinet IO,这些SSL包含了I/O模块、Profinet IO主站系统或实际控制器的状态信息。在一个中断或启动OB中使用SSL ID时,必须注意SFC仅能同步执行。
PN通信部分列表是虚拟列表,只是在有请求时由CPU的操作系统创建。虚拟列表来自CPU内部的PN IO控制器的缓冲区,缓冲区由控制器的启动和ALARM信息进行维护和刷新。
SFC51的系统状态列表(SSL)用于描述可编程逻辑控制器的当前状态。SSL的内容只能通过系统功能进行读取,而不能修改。部分列表是虚拟列表,只是在有特殊请求时由CPU的操作系统所创建。常用在Profinei IO诊断上的SSL_ID如表2所示。
表2 SSL_ID内容
SSL_ID(w#16#) | 部分列表 (PROFINET) | INDEX (W#16# ) |
0C91 | PROFINET接口模块(集成的或外部的)上的模块状态信息 | 逻辑基地址,输出模块bit15=1 |
0D91 | PROFIENT中的所有模块的模块状态信息 | Bit0到10:站号,Bit11到14:PN IO系统总线号的后两位,Bit15:1 |
0094 | PROFINET接口模块(集成的或外部的)上的模块预期信息 | 100-115:PN IO系统总线号 |
0294 | 读取实际的站点是否存在 | 同上 |
0694 | 读取实际的站点是否出错 | 同上 |
0794 | 读取实际的站点维护状态 | 同上 |
0C96 | PROFINET中的所有模块的模块状态信息 | 逻辑基地址,输出模块Bit15=1 |
在调试中,根据具体需要,选择要用的SSL_ID。要注意的是,SFC 51只能获得设备的状态信息,但不能获得具体的故障原因信息。
4 编程与调试
在主程序OB1中调用SFC 51(程序如图1所示),设置好各个参数即可完成对PROFINET网络诊断的功能。
图1 在OB1中调用SFC51
各参数具体意义:
(1)REQ:使能位,为1时启动处理。
(2)SSL_ID:要读取的系统状态列表或部分列表的SSL_ID。程序中用的是0294,表示读取所有站点是否存在。SSL_ID的选择是诊断中的关键,根据不同的ID可以读取不同的信息。
(3)INDEX:部分列表中对象的类型或边号。程序中的16进制64表示十进制的100,为Profinet网络总线的序号。INDEX的值与选择的SSL_ID有关,具体的信息可以点
击帮助查询。
(4)RET_VAL:如果执行SFC出错,则RET_VAL参数将包含出错代码。可以根据其所报的错误代码,到帮助中查阅具体说明。
(5)BUSY:为“1”表示尚未完成读取。
(6)SSL_HEADER:一个结构体,在DB80里的定义如图2所示。其中,LENTHER是SSL列表或SSL部分列表的数据记录的长度。
图2 SSL_HEADER定义
(7)DR:SSL列表或SSL部分列表读取的目标区域(读出的系统状态存储的数据区域,
其大小为SSL_HEADER中LENTHER和N_DR的乘积大小)。
图3 测试结果
测试结果如图3所示,DB80.DBB6为2#1111_1111。其中Bit0表示组信息,如果
为1,表示至少有一个IO设备与IO控制器进行通信,如果为0,表示IO站点全部丢失。Bit1~Bit7表示设备号1~7的IO设备的状态,1表示IO设备存在,0表示IO设备丢站。其它Bit和高字节中的Bit依次类推,表示对应IO设备的状态。
参考文献
[1]宋德玉 可编程控制器原理及应用系统设计[M] . 北京:冶金工业出版社,1999
[2]廖常初.S7-30/400 PLC应用技术[M].北京:机械工业出版社,2005
[3] 陈忠华.编程控制器与工业自动化系统.机械工业出版社[北京].北京:2006
[4]许立梓,程良伦.工业控制机及其网络控制系统[北京].北京:机械工业出版社,2005
作者简介:
华闰祺(1984-)、硕士,西门子自动化认证工程师,研究方向为电气自动化及过程控制、电气设计、数据采集与监测系统等。
收稿日期:2013-12-16