1 SFC 51簡介
1.1 程序功能介紹
通過系統功能SFC 51 "RDSYSST" (讀取系統狀態),可以讀取系統狀態列表或部分系統狀態列表,例如指示燈狀態,序列號,從站狀態等等。
調用SFC 51時,通過將值“1”賦給輸入參數REQ來啟動讀取。如果可以立即讀取系統狀態,則SFC將在BUSY輸出參數中返回值0。如果BUSY包含值1,則尚未完成讀取功能。 表1 SFC51參數說明 參數 | 描述 | | REQ | 輸入參數 | REQ = 1:啟動處理 | SSL_ID | 輸入參數 | 將要讀取的系統狀態列表或部分列表的ID號 | INDEX | 輸入參數 | 部分列表中對象的類型或編號。 | RET_VAL | 輸出參數 | 如果執行SFC時出錯,則RET_VAL參數 | 將包含錯誤代碼。 | BUSY | 輸出參數 | TRUE:尚未完成讀取。 | SSL_HEADER | 輸出參數 | LENTHDR是SSL列表或SSL部分列表的數據記錄的長度。 | • 如果僅讀取了SSL列表的標題信息,則N_DR包含屬于它的數據記錄數。 | • 否則,N_DR包含傳送到目標區域的數據記錄數。 | DR | 輸出參數 | SSL列表讀取或SSL部分列表讀取的目標區 | 域: | • 如果僅讀取了SSL列表的標題信息, | 則不能評估DR的值, | 而只能評估SSL_HEADER的值。 | • 否則,LENTHDR和N_DR的乘積將指 | 示已在DR中輸入了多少字節。 |
2 讀取CPU指示燈
可以通過SFC 51讀取CPU的指示燈狀態,使用的SSL_ID參數為16#74(16#19)讀取全部指示燈狀態 或者16#174(16#119)讀取單個指示燈狀態 2.1 編程
首先需要創建一個數據塊,用來存放讀取出來的指示燈狀態結果 
圖1 創建DB1,存放讀取結果 打開OB1,在OB1的臨時變量區創建一個變量length,類型設置為Struct(結構)
圖2 創建名為length的結構變量 雙擊length變量,進入結構變量成員定義,創建兩個word類型的變量,本例中分別為size和number:
圖3 創建length的結構變量的兩個word成員 編寫SFC51程序: CALL "RDSYSST"
REQ :=TRUE
SZL_ID :=W#16#74 //讀取全部指示燈狀態
INDEX :=W#16#0
RET_VAL :=MW0
BUSY :=M2.0
SZL_HEADER:=#length
DR :=P#DB1.DBX0.0 BYTE 500 //結果輸出到DB1數據塊中
DB1存放的結果即為模塊的指示燈狀態,每個指示燈有4個字節的長度來描述。
前兩個字節表示燈的類型(見表二),表示是SF燈還是BF燈等等。
第三個字節表示燈是亮還是滅,如果為1則燈亮,如果為0則燈的狀態是滅。
第四個字節表示燈是否閃爍,0表示不閃,1表示正常閃爍(2hz),2,表示慢閃(0.5hz)
燈的類型列表如下(不同的CPU會有不同數目的指示燈): 表2 前兩個字節的含義 16#1 | SF | 16#2 | INTF | 16#3 | EXTF | 16#4 | RUN | 16#5 | STOP | 16#6 | FORCE | 16#7 | CRST | 16#8 | BAF | 16#9 | USR | 16#A | USR1 | 16#B | BUS1F | 16#C | BUS2F | 16#D | REDF | 16#E | MSTR |
注意事項:
關于系統功能SFC51的更多詳情請參閱STEP 7的在線幫助,或者通過Start > SIMATIC > DOCUMENTATION選擇手冊“System Software for S7-300/400 System and Standard Functions” 3 讀取Profibus DP從站 狀態 3.1 編程
首先需要創建一個數據塊,用來存放讀取出來的狀態結果 
圖4 創建DB1,存放讀取結果 打開OB1,首先在OB1的臨時變量區創建一個變量length,類型設置為Struct(結構)
圖5 創建名為length的結構變量 雙擊length變量,進入結構變量成員定義,創建兩個word類型的變量,本例中分別為size和number:
圖6 創建length的結構變量的兩個word成員 編寫SFC51程序: CALL "RDSYSST"
REQ :=TRUE
SZL_ID :=W#16#294 //讀取從站是否存在
INDEX :=W#16#1
RET_VAL :=MW0
BUSY :=M2.0
SZL_HEADER:=#length
DR :=P#DB1.DBX0.0 BYTE 500 //結果輸出到DB1數據塊中
在本例中,P#DB1.DBX0.0 BYTE 500中為每個DP從站(16 x 8 = 128)保留一位,地址為Address 1的DP從站的狀態保存在第三個字節的Bit 1位中, 地址為Address 3的DP從站的狀態保存在第三個字節的Bit 3位中,依次類推。如果從站對應的位未被置位,則表明那個DP從站沒有通信上或不存在。
舉例:從DB1.DBW2開始,每個位對應一個bit,例如3號站對應的位是DB1.DBX2.3 ,站點存在的位為1,不存在的為0。 注意事項:
關于系統功能SFC51的更多詳情請參閱STEP 7的在線幫助,或者通過Start > SIMATIC > DOCUMENTATION選擇手冊“System Software for S7-300/400 System and Standard Functions”
4讀取CPU的序列號
4.1 編程
說明:
通過 SFC 51“RDSYSST”可以從系統狀態列表(SSL)中讀取下列標識數據:
下面的表格指明了可以從不同型號和固件版本的 CPU 讀取其它哪些標識數據。為此使用 SFC 51 和 SSL ID W#16#011C。 表3 INDEX說明 索引 | 名稱 | S7-300/C7 | S7-400 | W#16#0001 | 自動化系統的名稱 | 從固件版本 V2.2 起 | 支持 | W#16#0002 | CPU 的名稱 | 從固件版本 V2.2 起 | 支持 | W#16#0003 | CPU 的設備 ID | 從固件版本 V2.2 起 | 支持 | W#16#0004 | 版權條目 | 從固件版本 V2.2 起 | 支持 | W#16#0005 | CPU 的序列號 | 從固件版本 V2.2 起 | 從 MLFB | 6ES741x-xxx04-0AB0 起 | W#16#0006 | 為操作系統保留 | - | - | W#16#0007 | CPU 型號名稱 | - | 支持 | W#16#0008 | MMC 或 MC 的序列號 (參見條目號:19215608) | 從固件版本 V2.0 起 | - | (CPU317:從 V2.1 開始) |
需要注意,老CPU升級到上表版本也無法實現此功能。
首先需要創建一個數據塊,用來存放讀取出來的狀態結果 
圖7 創建DB1,存放讀取結果 打開OB1,首先在OB1的臨時變量區創建一個變量length,類型設置為Struct(結構)
圖8 創建名為length的結構變量 雙擊length變量,進入結構變量成員定義,創建兩個word類型的變量,本例中分別為size和number: 
圖9 創建length的結構變量的兩個word成員 編寫SFC51程序: CALL "RDSYSST"
REQ :=TRUE
SZL_ID :=W#16#11C //讀取CPU 的序列號
INDEX :=W#16#5
RET_VAL :=MW0
BUSY :=M2.0
SZL_HEADER:=#length
DR :=P#DB1.DBX0.0 BYTE 500 //結果輸出到DB1數據塊中
結果如下圖: 
圖10 CPU序列號 注意事項:
關于系統功能SFC51的更多詳情請參閱STEP 7的在線幫助,或者通過Start > SIMATIC > DOCUMENTATION選擇手冊“System Software for S7-300/400 System and Standard Functions” 5 讀取存儲卡的序列號 5.1 編程
描述:
為了獲得 MMC 卡的序列號,必須使用 SFC 51 "RDSYSST" 讀出系統狀態列表 (SSL) :
• SSL ID W#16#011C "元件的標識"
• Index W#16#0008 "存儲卡的序列號"
對于所有的帶有 MMC 卡的 S7-300 CPU 和 C7 從固件版本 V2.0 起都可以讀出存儲卡的序列號,(CPU 317: 從 V2.1 起)。
從S7-400的V5版本起,存儲卡上保存唯一的序列號。
首先需要創建一個數據塊,用來存放讀取出來的狀態結果 
圖11 創建DB1,存放讀取結果 打開OB1,首先在OB1的臨時變量區創建一個變量length,類型設置為Struct(結構) 
圖12 創建名為length的結構變量 雙擊length變量,進入結構變量成員定義,創建兩個word類型的變量,本例中分別為size和number: 
圖13 創建length的結構變量的兩個word成員 編寫SFC51程序:
CALL "RDSYSST"
REQ :=TRUE
SZL_ID :=W#16#11C //讀取MMC 的序列號
INDEX :=W#16#8
RET_VAL :=MW0
BUSY :=M2.0
SZL_HEADER:=#length
DR :=P#DB1.DBX0.0 BYTE 500 //結果輸出到DB1數據塊中 結果如下: 
圖14 MMC序列號 注意事項:
關于系統功能SFC51的更多詳情請參閱STEP 7的在線幫助,或者通過Start > SIMATIC > DOCUMENTATION選擇手冊“System Software for S7-300/400 System and Standard Functions”
|