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保留的块。· 不要通过“监测/控制变量”对安全程序的数据进行不合法的改变。· 删除所有从块容器中自动生成的F-FB,F-DB和所有的背景数据库,并重新生成安全程序。
共 1 个关于本帖的回复 最后回复于 2013-6-6 16:01