找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8202|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

【西門子系統(tǒng)診斷技術(shù)】SFC 51簡介

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:26188 發(fā)表于 2015-5-27 23:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1 SFC 51簡介

1.1 程序功能介紹
通過系統(tǒng)功能SFC 51 "RDSYSST" (讀取系統(tǒng)狀態(tài)),可以讀取系統(tǒng)狀態(tài)列表或部分系統(tǒng)狀態(tài)列表,例如指示燈狀態(tài),序列號,從站狀態(tài)等等。
調(diào)用SFC 51時,通過將值“1”賦給輸入?yún)?shù)REQ來啟動讀取。如果可以立即讀取系統(tǒng)狀態(tài),則SFC將在BUSY輸出參數(shù)中返回值0。如果BUSY包含值1,則尚未完成讀取功能。
表1 SFC51參數(shù)說明
參數(shù)
描述
REQ
輸入?yún)?shù)
REQ = 1:啟動處理
SSL_ID
輸入?yún)?shù)
將要讀取的系統(tǒng)狀態(tài)列表或部分列表的ID
INDEX
輸入?yún)?shù)
部分列表中對象的類型或編號。
RET_VAL
輸出參數(shù)
如果執(zhí)行SFC時出錯,則RET_VAL參數(shù)
將包含錯誤代碼。
BUSY
輸出參數(shù)
TRUE:尚未完成讀取。
SSL_HEADER
輸出參數(shù)
LENTHDRSSL列表或SSL部分列表的數(shù)據(jù)記錄的長度。
如果僅讀取了SSL列表的標(biāo)題信息,則N_DR包含屬于它的數(shù)據(jù)記錄數(shù)。
否則,N_DR包含傳送到目標(biāo)區(qū)域的數(shù)據(jù)記錄數(shù)。
DR
輸出參數(shù)
SSL列表讀取或SSL部分列表讀取的目標(biāo)區(qū)
域:
如果僅讀取了SSL列表的標(biāo)題信息,
則不能評估DR的值,
而只能評估SSL_HEADER的值。
否則,LENTHDRN_DR的乘積將指
示已在DR中輸入了多少字節(jié)。

2 讀取CPU指示燈
可以通過SFC 51讀取CPU的指示燈狀態(tài),使用的SSL_ID參數(shù)為16#74(16#19)讀取全部指示燈狀態(tài) 或者16#174(16#119)讀取單個指示燈狀態(tài)
2.1 編程
首先需要創(chuàng)建一個數(shù)據(jù)塊,用來存放讀取出來的指示燈狀態(tài)結(jié)果

圖1 創(chuàng)建DB1,存放讀取結(jié)果
打開OB1,在OB1的臨時變量區(qū)創(chuàng)建一個變量length,類型設(shè)置為Struct(結(jié)構(gòu))


圖2 創(chuàng)建名為length的結(jié)構(gòu)變量
雙擊length變量,進入結(jié)構(gòu)變量成員定義,創(chuàng)建兩個word類型的變量,本例中分別為size和number:


圖3 創(chuàng)建length的結(jié)構(gòu)變量的兩個word成員
編寫SFC51程序:
CALL "RDSYSST"
REQ :=TRUE
SZL_ID :=W#16#74 //讀取全部指示燈狀態(tài)
INDEX :=W#16#0
RET_VAL :=MW0
BUSY :=M2.0
SZL_HEADER:=#length
DR :=P#DB1.DBX0.0 BYTE 500 //結(jié)果輸出到DB1數(shù)據(jù)塊中
DB1存放的結(jié)果即為模塊的指示燈狀態(tài),每個指示燈有4個字節(jié)的長度來描述。
前兩個字節(jié)表示燈的類型(見表二),表示是SF燈還是BF燈等等。
第三個字節(jié)表示燈是亮還是滅,如果為1則燈亮,如果為0則燈的狀態(tài)是滅。
第四個字節(jié)表示燈是否閃爍,0表示不閃,1表示正常閃爍(2hz),2,表示慢閃(0.5hz)
燈的類型列表如下(不同的CPU會有不同數(shù)目的指示燈):
表2 前兩個字節(jié)的含義
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

注意事項:
關(guān)于系統(tǒng)功能SFC51的更多詳情請參閱STEP 7的在線幫助,或者通過Start > SIMATIC > DOCUMENTATION選擇手冊“System Software for S7-300/400 System and Standard Functions”
3 讀取Profibus DP從站 狀態(tài)
3.1 編程
首先需要創(chuàng)建一個數(shù)據(jù)塊,用來存放讀取出來的狀態(tài)結(jié)果

圖4 創(chuàng)建DB1,存放讀取結(jié)果
打開OB1,首先在OB1的臨時變量區(qū)創(chuàng)建一個變量length,類型設(shè)置為Struct(結(jié)構(gòu))


圖5 創(chuàng)建名為length的結(jié)構(gòu)變量
雙擊length變量,進入結(jié)構(gòu)變量成員定義,創(chuàng)建兩個word類型的變量,本例中分別為size和number:


圖6 創(chuàng)建length的結(jié)構(gòu)變量的兩個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 //結(jié)果輸出到DB1數(shù)據(jù)塊中
在本例中,P#DB1.DBX0.0 BYTE 500中為每個DP從站(16 x 8 = 128)保留一位,地址為Address 1的DP從站的狀態(tài)保存在第三個字節(jié)的Bit 1位中, 地址為Address 3的DP從站的狀態(tài)保存在第三個字節(jié)的Bit 3位中,依次類推。如果從站對應(yīng)的位未被置位,則表明那個DP從站沒有通信上或不存在。
舉例:從DB1.DBW2開始,每個位對應(yīng)一個bit,例如3號站對應(yīng)的位是DB1.DBX2.3 ,站點存在的位為1,不存在的為0。
注意事項:
關(guān)于系統(tǒng)功能SFC51的更多詳情請參閱STEP 7的在線幫助,或者通過Start > SIMATIC > DOCUMENTATION選擇手冊“System Software for S7-300/400 System and Standard Functions”

4讀取CPU的序列號
4.1 編程
說明:
通過 SFC 51“RDSYSST”可以從系統(tǒng)狀態(tài)列表(SSL)中讀取下列標(biāo)識數(shù)據(jù):
下面的表格指明了可以從不同型號和固件版本的 CPU 讀取其它哪些標(biāo)識數(shù)據(jù)。為此使用 SFC 51 和 SSL ID W#16#011C。
表3 INDEX說明
索引
名稱
S7-300/C7
S7-400
W#16#0001
自動化系統(tǒng)的名稱
從固件版本 V2.2
支持
W#16#0002
CPU 的名稱
從固件版本 V2.2
支持
W#16#0003
CPU 的設(shè)備 ID
從固件版本 V2.2
支持
W#16#0004
版權(quán)條目
從固件版本 V2.2
支持
W#16#0005
CPU 的序列號
從固件版本 V2.2
MLFB
6ES741x-xxx04-0AB0
W#16#0006
為操作系統(tǒng)保留
-
-
W#16#0007
CPU 型號名稱
-
支持
W#16#0008
MMC 或 MC 的序列號 (參見條目號:19215608)
從固件版本 V2.0
-
(CPU317:從 V2.1 開始)

需要注意,老CPU升級到上表版本也無法實現(xiàn)此功能。
首先需要創(chuàng)建一個數(shù)據(jù)塊,用來存放讀取出來的狀態(tài)結(jié)果

圖7 創(chuàng)建DB1,存放讀取結(jié)果
打開OB1,首先在OB1的臨時變量區(qū)創(chuàng)建一個變量length,類型設(shè)置為Struct(結(jié)構(gòu))


圖8 創(chuàng)建名為length的結(jié)構(gòu)變量
雙擊length變量,進入結(jié)構(gòu)變量成員定義,創(chuàng)建兩個word類型的變量,本例中分別為size和number:

圖9 創(chuàng)建length的結(jié)構(gòu)變量的兩個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 //結(jié)果輸出到DB1數(shù)據(jù)塊中
結(jié)果如下圖:

圖10 CPU序列號
注意事項:
關(guān)于系統(tǒng)功能SFC51的更多詳情請參閱STEP 7的在線幫助,或者通過Start > SIMATIC > DOCUMENTATION選擇手冊“System Software for S7-300/400 System and Standard Functions”
5 讀取存儲卡的序列號
5.1 編程
描述:
為了獲得 MMC 卡的序列號,必須使用 SFC 51 "RDSYSST" 讀出系統(tǒng)狀態(tài)列表 (SSL) :
• SSL ID W#16#011C "元件的標(biāo)識"
• Index W#16#0008 "存儲卡的序列號"
對于所有的帶有 MMC 卡的 S7-300 CPU 和 C7 從固件版本 V2.0 起都可以讀出存儲卡的序列號,(CPU 317: 從 V2.1 起)。
從S7-400的V5版本起,存儲卡上保存唯一的序列號。
首先需要創(chuàng)建一個數(shù)據(jù)塊,用來存放讀取出來的狀態(tài)結(jié)果

圖11 創(chuàng)建DB1,存放讀取結(jié)果
打開OB1,首先在OB1的臨時變量區(qū)創(chuàng)建一個變量length,類型設(shè)置為Struct(結(jié)構(gòu))

圖12 創(chuàng)建名為length的結(jié)構(gòu)變量
雙擊length變量,進入結(jié)構(gòu)變量成員定義,創(chuàng)建兩個word類型的變量,本例中分別為size和number:

圖13 創(chuàng)建length的結(jié)構(gòu)變量的兩個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 //結(jié)果輸出到DB1數(shù)據(jù)塊中
結(jié)果如下:

圖14 MMC序列號
注意事項:
關(guān)于系統(tǒng)功能SFC51的更多詳情請參閱STEP 7的在線幫助,或者通過Start > SIMATIC > DOCUMENTATION選擇手冊“System Software for S7-300/400 System and Standard Functions”




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表