如果F-CPU进入STOP模式,并且在诊断缓冲区中出现“Data falsification in the safety program …”消息时,应该怎么办?

n

描述:
F-CPU 进入 STOP 模式,在诊断缓冲区出现 “Data corruption in the safety program before output to F I/O” 消息或者 “Data corruption in the safety program before output to partner F CPU” 消息。n

由于不一致的安全程序存在,安全程序中的数据错误会经常出现。这种现象会发生,如果n

  • 在硬件配置中安全相关的参数有变化,变化的安全程序不能被编译和没有被装载,或者n
  • 在安全模式不使能时,安全程序已经变化,但是当时没有被编译和装载,或者n
  • 在标准用户程序中有对安全数据的写访问。

如果在安全程序中出现数据损坏或者希望避免此类问题,请按以下所述操作:n

  • 当对本地数据区操作时,在一个 F-PB/F-FB/F-FC 中,第一个对本地数据的访问必须一直是写访问。Flip-flop(SR, RS),Set output (S) 或者Reset output (R) 操作不能初始化本地数据位。为了初始化,本地数据需要转换为静态变量。
    请注意在 F-FB/F-FC 中,它的输入参数只有读访问权限,输出参数只有写访问权限。使用 in/out 参数进行读写访问。n
  • 数学运算的结果使得数值范围发生上溢或者下溢。因此应该确保在创建程序时,整数(16位)在允许的范围之内。这样可以对溢出错误位(状态字的 OV 位)进行评估。n
  • 对于故障安全接收块 F_RCVDP 的输出参数,不要使用在同一个 F_RCVDP 或者不同的 F_RCVDP 调用输入参数中已经使用过的参数。否则由于识别出数据有冲突,F CPU 将进入 STOP 模式,或者会得到错误消息:“F_Receive Block xxx can only be called at the begiing of the F program block”。n
  • 可以通过过程映像区(PII)使用来自标准用户程序的 M 区或者来自标准 I/O 的信号实现标准程序和 F 程序间的通信。禁止从标准程序到故障安全程序的数据块的写访问。此规则的唯一例外是当使用块 F_ACK_OP 进行故障安全用户确认时。n
  • 在安全程序中,如果希望从标准用户程序(M 区或者标准 I/O 的 PII)中读取数据,而该数据可以通过标准用户程序或者运行着的 F 系统中的HMI 所改变,例如由于标准用户程序要被更高优先级的时间中断处理,这就需要使用单独的 M 区地址。在进入 F 程序运行时间之前,必须立即将数据从标准用户程序写入到这些 M 区中。然后在安全程序中仅访问这些 M 区地址就可以了。
    还要注意,在组态 F CPU 时(在硬件配置中的 F CPU 的对象属性对话框中),所定义的时钟标记可以在 F 程序运行时间内改变,因为时钟标记与 F CPU 周期运行不同步。n
  • 自动产生的程序部分不可以被更改或者删除。在硬件配置中,不能更改或者删除在“F parameters”的“CPU Properties”对话框中为 F CPU 保留的块。n
  • 不要通过“监测/控制变量”对安全程序的数据进行不合法的改变。

关于这个主题,可以获得更多的信息在“SIMATIC S7 Distributed Safety, Configuring and Programming, Edition: 10/2007”手册中。条目号!22099875!

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc335916.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论