歡迎光臨
每天分享高質量文章

西門子S7-1200程式設計概念(4)——資料一致性


點選 《福利來了!PLC的資料(免費),你要嗎?

點選第二波福利來了!PLC的資料(免費),你要嗎?

CPU 為所有基本資料型別(例如 Word 或 DWord)和所有系統定義的結構(例如IEC_TIMERS 或 DTL)保持資料一致性。 值的讀/寫操作無法中斷。

(例如,在讀寫四位元組的 DWord 之前,CPU 會防止對該 DWord 值進行訪問。)為確保程式迴圈 OB 和中斷 OB 無法同時寫入同一個儲存單元,在程式迴圈 OB中的讀/寫操作完成之前,CPU 不會執行中斷 OB。

如果使用者程式共享儲存器中在程式迴圈 OB 和中斷 OB之間生成的多個值,使用者程式還必須確保在修改或讀取這些值時保持一致性。
可以在程式迴圈 OB 中使用 DIS_AIRT(禁用報警中斷)和EN_AIRT(啟用報警中斷)指令,以防止對共享值進行訪問。
● 在程式碼塊中插入 DIS_AIRT 指令,以確保在讀/寫操作期間無法執行中斷OB。
● 插入讀/寫能夠被中斷 OB 更改的值的指令。
● 在順序結尾插入 EN_AIRT 指令,以取消 DIS_AIRT,並允許執行中斷 OB。

HMI 裝置或另一個 CPU 發出的通訊請求也能夠中斷程式迴圈 OB的執行。通訊請求也會導致與資料一致性相關的問題。 CPU確保基本資料型別始終由使用者程式指令執行一致地讀取和寫入。
由於通訊會週期性地中斷使用者程式,因而不能保證 HMI 能夠同時更新 CPU 中的多個值。例如,給定 HMI 畫面上顯示的值可能來自 CPU 的不同掃描週期。

PtP(Point-to-Point,點到點)指令、PROFINET 指令(例如,TSEND_C 和TRCV_C)和 PROFINETS 分散式 I/O 指令 和 PROFIBUS 分散式 I/O 指令可用於傳送被中斷的資料緩衝區。 透過避免對程式迴圈 OB 和中斷 OB中的緩衝區進行任何讀/寫操作,可以確保資料緩衝區的資料一致性。如果需要在中斷OB中修改這些指令的緩衝區值,請使用 DIS_AIRT 指令延遲所有中斷(中斷 OB或源自 HMI或另一個 CPU 的通訊中斷),直到執行了 EN_AIRT 指令。

說明
使用 DIS_AIRT 指令延遲中斷 OB 的處理,直到執行了 EN_AIRT指令,以此影響使用者程式的中斷等待時間(從事件發生到執行中斷 OB 的時間)。


尋找同路人

做自動化工業變革的踐行者


可透過選單查詢自己喜歡的文章彙總:

現場儀錶DCS部分PLC部分SIS部分通訊標準數字化問題解答】此處列出部分連結,更多文章透過選單獲取。




贊(0)

分享創造快樂