读取西门子S7-400H冗余PLC主/从CPU运行状态

文章目录

  • 前言
  • 判断主/从CPU
  • 总结


前言

在某些场景下,需要在程序中读取CPU的运行状态,尤其是冗余PLC,需要了解具体哪台CPU在运行,本文给出了一种基于SFC51功能块的读取方案。


判断主/从CPU

  1. 调用SFC51功能块,如图1、图2所示
    在这里插入图片描述
    图1
    在这里插入图片描述
    图2
  2. 新建DB块DB100,用来存放CPU状态位数组
    在这里插入图片描述
    图3
    已知,1个字节占用8个位存储区,为了方便理解,可将图3的15个byte类型变量,转换为120个bool类型变量,如图4所示。SysStatuArray[0]-SysStatuArray[7]表示BYTE[1],SysStatuArray[8]-SysStatuArray[115]表示BYTE[2],SysStatuArray[16]-SysStatuArray[23]表示BYTE[3],等等。
    在这里插入图片描述
    图4
  3. 鼠标单击SFC51功能块,按F1键,打开SFC51功能块帮助文件,查询帮助文件可知SFC51的参数释义。
    部分参数解释如下:
    REQ:使能;
    SZL_ID:指定需要读取的系统信息,本例为W#16#71,H系统当前状态;
    SZL_HEADER:为一个结构数据,包括两个字,第一个字输出系统信息长度,例如W#16#10表示输出16个字节,第二个字输出存储系统信息的数据记录区,例如W#16#1表示数据记录区为1;
    DR:为存储系统信息的地址区,数据类型为指针,长度必须大于参数SZL_HEADER第一个字输出的信息长度,本例为P#DB100.DBX0.0。
    读取的系统信息存储在DB100.DBB0~DB100.DBB16,这16个字节中。用户可以对16个字节长度的系统信息进行分析和处理,系统信息内容如下:
内容长度含义
Redinf2字节冗余信息,W#16#0011: 单 CPU运行,W#16#0012: 一用一备
Mwstat11字节状态字节,Bit0-Bit3:备用,Bit4:机架0中CPU的状态,Bit4:=0,从CPU,Bit4:=1,主CPU
Bit5:机架1中CPU的状态,Bit5:=0,从CPU,Bit5:=1,主CPU

表1
由表1可知,本例需要读取数组SysStatuArray中,Byte[3]的,Bit4和Bit5的状态信息。即DB100.DBX2.4和DB100.DBX2.5。

  1. 新建变量
    M21.1:在机架0上运行的是主CPU;
    M21.2:在机架1上运行的是主CPU。
  2. 编写如下程序,用于判断当前运行的是哪台CPU。
    在这里插入图片描述
    图5

总结

本文给出了一种判断冗余CPU运行状态的方法,应注意字节与位存储区的转换关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值