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文章
11048瀏覽量
216119
原文標題:診斷緩沖區中出現“Data falsification in the safety program ...”
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論