图5-5 冗余的网络连接
从上到下的连接数定义为0、1、2、3,通过SFC87的调用同时可以监控主连接和备有的连接数。SFC87可以在OB1或循环中断组织块OB3X中调用,调用的例子如图5-6所示:
图5-6 调用SFC87例子程序
SFC87的参数解释如下,
REQ :为1时,诊断任务激活。 MODE :操作模式。操作模式有四种:
W#16#0 不传送连接状态到数据接收区,只传送确认信息到操作系统。 W#16#1 传送连接状态到数据接收区,传送确认信息到操作系统。
W#16#2 只在连接状态改变时传送连接状态到数据接收区,传送确认信息到操作
系统。
W#16#3 只传送连接状态到数据接收区,不传送确认信息到操作系统。
RET_VAL :调用SFC87状态返回值。 BUSY :任务没有完成。
N-CON :指示上一次连接状态(DIS_PCON)变化的连接数。冗余连接可以建立多个,这
里指其中一个连接。
CON_ARR:连接状态接收区。以CPU最大的连接数计算,每一个连接占用八个字节。本例
以CPU417-4H为例,CPU的连接数为64个,每一个连接需要占用八个字节,总共512个字节。如果连接状态输出区小,在RET_VAL值中将有错误信息。
参数CON_ARR其实是一个数组变量,每一个数组单元对应CPU的一个连接,数组的单元由一个八个字节的结构变量组成,表示每一个连接的状态。输出八个字节的连接状态含义如下:
内容 长度 含义
CON_ID WORD 在NETPRO中组态的连接号,输出W#16#FFFF表示连接没有
配置,CON_ARR[i].DIS_PCON被置位表示连接被从新配置或被删除。
STAT_CON BYTE S7连接或S7冗余连接当前状态,可能的输出值: B#16#00:S7连接没有建立。
B#16#10:S7冗余连接没有建立。 B#16#01:S7连接正在被建立。 B#16#11:S7冗余连接正在被建立。 B#16#02:S7连接被建立。
B#16#12:S7冗余连接被建立,但是连接没有冗余(例如D通
信处理器故障,只能建立A-C、B-C连接)。
B#16#13:S7冗余连接被建立
PROD_CON BYTE 当前正在运行连接的子连接,可能的值为0、1、2、3。
STBY_CON BYTE 备用连接的子连接,可能的值为0、1、2、3。B#16#FF表示没
有备份连接,只有S7冗余连接有备用连接。
DIS_PCON BOOL CON_ARR[i].STAT_CON输出值由 W#16#12 -> W#16#13 或
W#16#13 -> W#16#12转变后被置1。其他状态的变化不作考虑。当 MODE=B#16#01 或 02时,状态输出到接收区
CON_ARR后该位被复位;当 MODE=B#16#03时,该位不变化。
RES0 BYTE 保留(B#16#00) RES1 BYTE 保留(B#16#00)
5.4利用SFC90控制H系统的连接状态和检测
当冗余CPU其中一个出现故障,这时只有一个CPU工作,更换故障的CPU上电后,需要向主CPU发送link-up请求,主CPU检测到link-up请求,Update从CPU,从CPU进入工作状态。link-up和Update过程将影响主CPU对快速过程的处理,例如在Update过程中信号状态的变化不能被识别(执行link-up和Update的时间参考H手册),在这种情况下,通过SFC90可以终止link-up和Update过程,快速过程执行完成后再使能link-up和Update过程,通过调用SFC90还可以使H-CPU执行对数据存储区的检查,SFC90在OB1或循环中断组织块OB3X中调用,调用的例子如图5-7所示:
图5-7 调用SFC90例子程序 SFC90的参数解释如下:
REQ :为1时,控制任务激活。 MODE :操作模式。操作模式有七种:
B#16#3 取消Link-up过程。
B#16#4 使能Link-up过程。
B#16#1 取消Updating过程。 B#16#2 使能Updating过程。
B#16#20 取消在SUBMODE中指定的循环自检测部分。一个自检测部分只能
取消一次。
B#16#21 添加在SUBMODE中指定的循环自检测部分。一个自检测部分在取
消后才能添加。
B#16#22 立即执行在SUBMODE中指定的自检测部分。
SUBMODE :操作子模式。操作子模式有六种:
0 SP7 – ASIC – 检测 1 Code 存储器检测 2 Data存储器检测 3 操作系统代码校验和检测 4 Code 块校验和检测 5 冗余操作中对数据块、M区、计数器、计数器的比较
RET_VAL :调用SFC90状态返回值。 BUSY :BUSY=1指示任务没有完成。
5.5利用FC125监控DP从站工作状态
在程序中调用FC125可以判断系统中DP从站和模块的错误。它可以检测到丢失和故障的从站,S7-400H具有冗余的PROFIBUS总线,所以必须在CPU中调用2次,分别监控两条PROFIBUS(通过参数DP_MASTERSYSTEM识别)总线上的从站。FC125需要在OB1中调用,在OB1中调用的程序如图5-8所示: 图5-8调用FC 125例子程序
下面对每个参数进行说明。
CHECK_ACTIVE :为1时开始检测从站。
EXTERNAL_DP_INTERFACE :选择DP主站的接口,0表示集成在CPU上的DP主站,1表示外部
DP主站接口,如CP443-5等。
DP_MASTERSYSTEM :PROFIBUS的ID号,在硬件组态中可以查看到PROFIBUS的ID号。
H站有两条PROFIBUS网络,需要调用FC125两次,分别赋值两个PROFIBUS的ID号,数据类型为INT。
DATA_FIELD :50个字节的数据区,仅供FC125内部使用,数据类型为POINTER。 SUM_SLAVES_DIAG :从站诊断的总数,数据类型为INT。
LIST_SLAVES_NOT_PRESENT:检查到丢失的从站(软件已经组态但是现场没有连接硬件),16
个字节的数据区,每一个数据位对应一个从站,置1表示一个从站
丢失,如果丢失的从站返回或维修好,相对应的位复位。数据类型为POINTER。
LIST_SLAVES_ERROR : 故障的从站(部分模块有故障,其他模块可以连续运行),16个
字节的数据区,每一个数据位对应一个从站,置1表示一个从站故障,如果故障的从站返回或维修好,相对应的位复位。数据类型为POINTER。
RETVAL :调用FC125时的状态返回值,数据类型为INT。 BUSY :为1表示当前正在执行。
例如,本例中检查到丢失的从站地址区为DBB52~DBB67 16个字节,每一字节8个位,每一个位表示一个从站,如果位被置1,表示从站丢失。图5-9为从站编号的分配表,注意字节与站号排列次序:
图5-9从站编号的分配表
在编程界面下选择菜单栏中PLC->Monitor/Modify Variables,如图5-10所示:
图5-10打开变量监控表
点击工具栏中的
,观察在线诊断结果,如图5-11所示: