參考價: | 面議 |
- 6ES7431-1KF00-0A 產(chǎn)品型號
- 西門子/SIEMENS 品牌
- 經(jīng)銷商 廠商性質(zhì)
- 上海市 所在地
訪問次數(shù):224更新時間:2018-04-18 09:58:48
西門子SM431模擬量模塊
西門子SM431模擬量模塊
. 問題描述
在S7-400中使用功能完善的FC或FB,在更換調(diào)用OB塊后發(fā)生本地數(shù)據(jù)分配錯誤,如圖一所示。
圖 1
2. 故障原因
從診斷緩沖區(qū)故障描述可以看到該故障是由循環(huán)中斷OB34觸發(fā),打開項目交叉索引查看程序結(jié)構(gòu)如圖2,OB34和OB35中都調(diào)用了FC1,而FC1需要使用512字節(jié)的本地數(shù)據(jù)區(qū),這些本地數(shù)據(jù)區(qū)由調(diào)用OB動態(tài)分配。項目中OB34和OB35所需使用的zui大本地數(shù)據(jù)為534字節(jié)。
圖 2
在硬件組態(tài)中查看CPU屬性內(nèi)存頁面(圖3),可以看到CPU為各優(yōu)先級預(yù)分配的本地數(shù)據(jù)區(qū)大小。
圖 3
查看CPU屬性循環(huán)中斷頁面(圖4)中可查到OB34優(yōu)先級為11,OB35優(yōu)先級為12,所以O(shè)B35本地數(shù)據(jù)區(qū)大小默認為758字節(jié),OB34本地數(shù)據(jù)區(qū)大小默認為256字節(jié)。由此可得知故障原因是由于CPU為OB34預(yù)分配的本地數(shù)據(jù)區(qū)太小(256<534)。
圖 4
3. 解決方法
方法一:將FC1在本地數(shù)據(jù)區(qū)足夠大的OB中調(diào)用,例如OB33優(yōu)先級10,本地數(shù)據(jù)默認758字節(jié)。
方法二:將優(yōu)先級11的本地數(shù)據(jù)區(qū)增大。CPU的本地數(shù)據(jù)zui大值根據(jù)CPU型號不同而不同,具體參考《SIMATIC S7-400 S7-400自動化系統(tǒng),CPU規(guī)格》
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ù)說明
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é)的含義
注意事項:
關(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”