如果F-CPU進入STOP模式,並且在診斷緩衝區中出現“Data falsification in the safety program ...”消息時,應該怎麼辦?
描述:
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 保留的塊。
不要通過“監測/控制變量”對程序的數據進行不合法的改變。
關於這個主題,可以獲得更多的信息在“SIMATIC S7 Distributed Safety, Configuring and Programming, Edition: 10/2007”手冊中。條目號!