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” 消息。
由于不一致的安全程序存在,安全程序中的数据错误会经常出现。这种现象会发生,如果 在硬件配置中安全相关的参数有变化,变化的安全程序不能被编译和没有被装载,或者在安全模式不使能时,安全程序已经变化,但是当时没有被编译和装载,或者在标准用户程序中有对安全数据的写访问。
如果在安全程序中出现数据损坏或者希望避免此类问题,请按以下所述操作:
当对本地数据区操作时,在一个 F-PB/F-FB/F-FC 中,第一个对本地数据的访问必须一直是写访问。Flip-flop(SR, RS),Set output (S) 或者Reset output (R) 操作不能初始化本地数据位。为了初始化,本地数据需要转换为静态变量。请注意在 F-FB/F-FC 中,它的输入参数只有读访问权限,输出参数只有写访问权限。使用 in/out 参数进行读写访问。
数学运算的结果使得数值范围发生上溢或者下溢。因此应该确保在创建程序时,整数(16位)在允许的范围之内。这样可以对溢出错误位(状态字的 OV 位)进行评估。
对于故障安全接收块 F_RCVDP 的输出参数,不要使用在同一个 F_RCVDP 或者不同的 F_RCVDP 调用输入参数中已经使用过的参数。否则由于识别出数据有冲突,F CPU 将进入 STOP 模式,或者会得到错误消息:“F_Receive Block xxx can only be called at the beginning of the F program block”。
可以通过过程映像区(PII)使用来自标准用户程序的 M 区或者来自标准 I/O 的信号实现标准程序和 F 程序间的通信。
禁止从标准程序到故障安全程序的数据块的写访问。此规则的唯一例外是当使用块 F_ACK_OP 进行故障安全用户确认时。
在安全程序中,如果希望从标准用户程序(M 区或者标准 I/O 的 PII)中读取数据,而该数据可以通过标准用户程序或者运行着的 F 系统中的HMI 所改变,例如由于标准用户程序要被更高优先级的时间中断处理,这就需要使用单独的 M 区地址。在进入 F 程序运行时间之前,必须立即将数据从标准用户程序写入到这些 M 区中。
然后在安全程序中仅访问这些 M 区地址就可以了。还要注意,在组态 F CPU 时(在硬件配置中的 F CPU 的对象属性对话框中),所定义的时钟标记可以在 F 程序运行时间内改变,因为时钟标记与 F CPU 周期运行不同步。
自动产生的程序部分不可以被更改或者删除。在硬件配置中,不能更改或者删除在“F parameters”的“CPU Properties”对话框中为 F CPU 保留的块。
不要通过“监测/控制变量”对安全程序的数据进行不合法的改变。
审核编辑:刘清
-
cpu
+关注
关注
68文章
10854浏览量
211589
原文标题:诊断缓冲区中出现“Data falsification in the safety program ...”
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论