天天看點

西門子故障安全系統的程式架構

作者:北島李工

今天這篇文章來聊一聊西門子故障安全系統的程式架構。

西門子故障安全系統的程式架構

我們知道,PLC中其實運作着兩類程式:作業系統和使用者程式。作業系統預留各種接口,通過這些接口來調用使用者程式。對于西門子PLC而言,這些接口被稱為組織塊(Organization Block),簡稱為OB。組織塊有很多類型,大體上可以分為兩個大類:程式循環組織塊和中斷組織塊(後者又包括循環中斷、硬體中斷、日期時間中斷等等)。組織塊具有不同的優先級,程式循環組織塊的優先級最低。

對于西門子标準型CPU子產品,它的使用者程式被稱為标準程式。标準程式的稱謂是為了與故障安全型程式進行差別。使用者為了處理标準子產品的信号(通信等)而編寫的程式都屬于标準程式。标準程式必須直接或間接的被程式循環組織塊調用才能被執行(中斷程式除外)。對于S7-300/400系列CPU,程式循環組織塊就是指OB1;對于S7-1200/1500系列CPU,除了OB1外,使用者可以根據需要添加多個程式循環組織塊,作業系統會根據程式循環組織塊的編号從小到大依次調用。再說一遍,程式循環組織塊是一種優先級最低的組織塊,其它組織塊可以中斷它并優先執行。

故障安全程式是為了處理故障安全信号而編寫的程式,隻有故障安全型CPU才能執行故障安全程式。換句話說,西門子故障安全型CPU既可以執行标準程式,也可以執行故障安全程式。通常(注意是通常),使用者編寫的故障安全型程式是在另一種組織塊——循環中斷組織塊(Cyclic Interrupt OB)中調用的。雖然官方稱為“循環中斷組織塊”,但我覺得稱為“周期性中斷組織塊”更恰當一些。這種組織塊可以産生周期性中斷,中斷的周期可以根據需要自己設定。

在博途開發環境中,當你組态了故障安全型CPU時,預設情況下,左側項目樹中會有一個“安全管理(Safety Administration)”的選項,并自動添加了三個子產品:FOB_RTG1[OB123]、Main_Safety_RTG1[FB1]和Main_Safety_RTG1_DB[DB1],如下圖所示:

西門子故障安全系統的程式架構

安全管理可以檢視安全程式的狀态、安全簽名、安全功能塊、資料類型、Flexible F-Link通信等,不過最重要的功能是設定安全運作組,如下圖所示:

西門子故障安全系統的程式架構

安全運作組(F-runtime group)由安全組織塊(F-OB)、主安全程式塊(Main F-Block)和主安全程式塊的背景資料塊構成,如下圖所示:

西門子故障安全系統的程式架構

對于S7-1200的F-CPU,安全組織塊為循環中斷組織塊,可以根據需要設定其中斷時間及優先級。對于S7-1500的F-CPU,安全組織塊可以為循環中斷組織塊(預設)、程式循環組織塊或者等時同步中斷組織塊。預設情況下,等時同步中斷組織塊的優先級最高,其次是循環中斷組織塊。如果有必須可以修改其優先級,但不允許它們的優先級比程式循環組織塊低或相同。

安全組織塊調用主安全程式塊,使用者編寫的安全程式需要在主安全程式塊中調用才能被執行。

S7-1200的F-CPU隻支援一個安全運作組,S7-1500的F-CPU最多支援兩個安全運作組。F-CPU通過F-OB調用主安全程式塊,再通過主安全程式塊調用使用者編寫的其它安全程式是西門子故障安全程式的基本架構。

繼續閱讀