• 電話: 010-64734946  64734947   64738638
  • 傳真: 010-64738090

當前位置:首頁 >> 行業(yè)資訊

如何讀取冗余控制器狀態(tài)燈

信息來源:      發(fā)布時間:2011-12-21 10:03:43      點擊次數:0

如果讀取冗余控制器狀態(tài)燈的狀態(tài)?
回答:本文將簡單介紹通過編程的方式如何讀取冗余控制器的狀態(tài)燈,并附錄相關源代碼。
控制器運行過程中,控制器內部的各種不同信息都被保存在 CPU 的內部存儲器中,并根 據運行情況由控制器內部的操作系統(tǒng)實時進行更新。在冗余控制器中,這些內部信息也包含 了冗余控制器的狀態(tài)燈信息。
在系統(tǒng)提供的系統(tǒng)功能 SFC 中,功能 SFC51(RDSYSST)專門用于讀取系統(tǒng)的狀態(tài)信 息。該功能塊提供的 SSL-ID 功能碼輸入管腳用于設置需要讀取的信息類型,例如, 16#0013 用于讀取控制器內部工作內存分配情況;16#00B1 用于讀取模塊的診斷信息;而 16#0074 則可以用于讀取控制器的狀態(tài)燈(包括單 CPU 和冗余 CPU)。
注意:功能碼 16#0019 僅僅支持單 CPU 和冗余 CPU 單機模式,不能用在普通的冗余 CPU 中。關于 SFC51 的詳細幫助請參考 Step7 在向幫助或有個系統(tǒng)提供的系統(tǒng)功能介紹。
參 數
聲 明
數據類型
描 述
REQ
INPUT
BOOL
REQ = 1:啟動處理
SSL-ID
INPUT
WORD
需要讀取的系統(tǒng)狀態(tài)功能碼
INDEX
INPUT
WORD
部分功能碼中對象的類型或編號
如果執(zhí)行 SFC 時出錯,則 RET_VAL
RET_VAL
OUTPUT
INT
將包含出錯代碼
BUSY
OUTPUT
BOOL
TRUE:尚未完成讀取
數據記錄信息:
SSL_HEADER
OUTPUT
STRUCT
LENTHDR:單條數據記錄長度
N_DR:DR中記錄的數據記錄的條數 讀取的數據記錄存儲區(qū)域:
• 如果僅讀取了SSL列表的單條信息, 則不能評估DR的值,而只能評估
DR
OUTPUT
ANY
SSL_HEADER的值。
• 否則,LENTHDR 和 N_DR 的乘積 為已在 DR 中存儲的字節(jié)數
表 1. SFC51 接口
\SFC51 的輸入/輸出接口如上表所示,其中 SSL-ID 用于指定需要讀取的信息類型(功能 碼);部分功能碼支持單條數據記錄的讀取,則此時可以通過 INDEX 管腳輸入;
SSL_HEADER 指示讀取的數據記錄的長度及數據記錄的條數;DR 中則為讀取的數據記錄的 存儲空間;
¾ 使用 SSL-ID=16#0074 讀取冗余 CPU 的狀態(tài)燈時,SSL_HEADER 數據結構中
LENTHDR= 16#0004,即每條數據記錄占用 4 個字節(jié),具體結構如下表所示:
表 2. DR 數據記錄結構
也就是說通過 SFC51(功能碼 16#0074)讀取的數據記錄存儲在 DR 中,每條數據記錄 都擁有上述的結構,每條數據記錄通過 CPU_LED_ID 字節(jié) 1(LED 標識符)來標識該記錄 對應的具體 LED,通過評估記錄的后兩字節(jié),即可判斷該 LED 的當前狀態(tài),LED 標識符如 下所示:
W#16#000A:USR1(用戶自定義)
W#16#0001:SF(組出錯)
W#16#000B:BUS1F(總線出錯接口1)
W#16#0002:INTF(內部出錯)
W#16#000C:BUS2F(總線出錯接口2)
W#16#0003:EXTF(外部出錯)
W#16#000D:REDF(冗余出錯)
W#16#0004:RUN
W#16#000E:MSTR(主站)
W#16#0005:STOP
W#16#000F:RACK0(機架號0)
W#16#0006:FRCE(強制)
W#16#0010:RACK1(機架號1)
W#16#0007:CRST(冷重啟)
W#16#0011:RACK2(機架號2)
W#16#0008:BAF(總線上的電池故障/超
載、電池電壓短路)
W#16#0012:IFM1F(接口出錯接口模塊1)
W#16#0009:USR(用戶自定義)
W#16#0013:IFM2F(接口出錯接口模塊2)
¾ 使用 SSL-ID=16#0074 讀取冗余 CPU 的狀態(tài)燈時,SSL_HEADER 數據結構中 N_DR=
16#001A,即每次讀取并存儲在 DR 中的數據記錄條數最大為 26 條。因此,設置接受 DR 的數據區(qū)間長度應該至少大于等于:
LENTHDR×N_DR=4×26=104 bytes 采用 Step7 編程時,手動構建如下 DB 塊結構:
\

 在相應的循環(huán) OB 中調用 SFC51,具體調用如下:

\

注意:由于調用 SFC51 將占用 CPU 系統(tǒng)資源,建議采用較慢循環(huán)周期的 OB 來調用該 SFC51,例如 OB32,1 秒鐘調用一次或更慢。

通過 SSL_74.REQ_S 來啟動讀取 LED 信息,所有信息將存儲在 SSL_74.DR。根據上述 的 DR 數據記錄結構表 2 來分析每條數據記錄,并將其顯示在 OS 上即可。
隨本文同時附錄的源代碼有:
♦ @SFC51_LED_H:采用 SCL 編寫的讀取 LED 的源代碼,支持冗余 CPU 和單
CPU 兩種類型的控制器,已經在 41x-H V4.0 CPU 測試通過;

@*.PDL 文件:專門為 PCS7 開發(fā)的上位顯示圖標和面板,需結合上述源代碼
一起使用;
在 CFC 中調用上述源代碼編寫的功能塊及面板,最終上位顯示效果如下圖所示:
\

?