在生產(chǎn)控制中,通常需要對(duì)S7-400H系統(tǒng)的信息和狀態(tài)進(jìn)行監(jiān)控,例如監(jiān)控CPU的主從狀態(tài)、操作狀態(tài)、DP從站與主站的通信狀態(tài)等信息。在程序中可以通過對(duì)狀態(tài)的判斷進(jìn)行必要的操作,也可以將系統(tǒng)信息上傳到HMI,便于操作及維護(hù)人員監(jiān)控。通過功能塊可以將系統(tǒng)信息讀出,下面介紹讀取不同系統(tǒng)信息調(diào)用功能塊的方法。
5.1利用SFC51(SSL-ID W#16#xy71)讀出H系統(tǒng)信息
SSL-ID (SYSTEM STATUS LIST)系統(tǒng)狀態(tài)目錄,利用SFC51可以讀出在SSL-ID指定的PLC系統(tǒng)信息,當(dāng)SSL-ID 等于W#16#0071時(shí),表示需要讀出S7-400H系統(tǒng)當(dāng)前的狀態(tài),可以在OB1或循環(huán)中斷組織塊OB3X中調(diào)用,調(diào)用SFC51的例子如圖5-1所示:
圖5-1 調(diào)用SFC51(SSL-ID W#16#0071)例子程序
SFC51的參數(shù)解釋如下,
REQ :為1是讀取SZL_ID指定的系統(tǒng)信息,本例中M1.1為1時(shí)啟動(dòng)讀請(qǐng)求。
SZL_ID :指定需要讀取的系統(tǒng)信息,本例為W#16#71,H系統(tǒng)當(dāng)前狀態(tài)。
INDEX :本例中沒有意義。
RET_VAL :調(diào)用SFC51的狀態(tài)字。
BUSY : 為1時(shí)表示讀進(jìn)程沒有完成。
SZL_HEADER:輸出系統(tǒng)信息存儲(chǔ)的數(shù)據(jù)記錄區(qū)號(hào)及長(zhǎng)度,結(jié)構(gòu)數(shù)據(jù)類型。
DR :指定輸出系統(tǒng)信息存儲(chǔ)在CPU的地址區(qū)。
參數(shù)SZL_HEADER與DR的地址區(qū)在DB1中建立,如5-2所示:
圖5-2 參數(shù)SZL_HEADER與DR的地址區(qū)
參數(shù)SZL_HEADER為一個(gè)結(jié)構(gòu)數(shù)據(jù),包括兩個(gè)字,第一個(gè)字輸出系統(tǒng)信息長(zhǎng)度,例如W#16#10表示輸出16個(gè)字節(jié),第二個(gè)字輸出存儲(chǔ)系統(tǒng)信息的數(shù)據(jù)記錄區(qū),例如W#16#1表示數(shù)據(jù)記錄區(qū)為1。參數(shù)DR為存儲(chǔ)系統(tǒng)信息的地址區(qū),數(shù)據(jù)類型為指針,長(zhǎng)度必須大于參數(shù)SZL_HEADER第一個(gè)字輸出的信息長(zhǎng)度。本例中當(dāng)M1.1為時(shí),讀取的系統(tǒng)信息存儲(chǔ)在DB1.DBB4~DB1.DBB20 16個(gè)字節(jié)中。用戶可以對(duì)16個(gè)字節(jié)長(zhǎng)度的系統(tǒng)信息進(jìn)行分析和處理,系統(tǒng)信息內(nèi)容如下:
內(nèi)容 長(zhǎng)度 含義
Redinf 2 bytes 冗余信息
W#16#0011:?jiǎn)螜C(jī) H CPU運(yùn)行
W#16#0012:H系統(tǒng)2備1運(yùn)行
Mwstat1 1 byte 狀態(tài)字節(jié)1
Bit 0:保留
Bit 1:保留
Bit 2:保留
=1:主 CPU
Bit 5:機(jī)架1中CPU的狀態(tài)
=0:從 CPU
=1:主 CPU
Bit 6:保留
Bit 7:保留
Mwstat2 1 byte 狀態(tài)字節(jié)2
Bit 0:同步連接狀態(tài) 01:
CPU 0 和CPU 1同步
=0:不可能
=1:可能
Bit 1: 0
Bit 2::0
Bit 3:保留
Bit 4:=0:CPU沒有在機(jī)架0
=1:CPU在機(jī)架0上
(冗余模式: bit 4 = 0)
Bit 5:=0:CPU沒有在機(jī)架1
=1:CPU在機(jī)架1上
(冗余模式: bit 5 = 0)
Bit 6:保留
Bit 7:主從切換是否從新使能
=0:否
=1:是
Hsfcinfo 2 bytes SFC 90 "H_CTRL"狀態(tài)字
Bit 0:=0:從新使能沒有激活
=1:從新使能激活
Bit 1:=0:從站Updating使能
=1:從站Updating沒有使能
Bit 2:=0: bbbb-up 模式?jīng)]有使能
=1: bbbb-up 模式使能
Bit 3:保留
Bit 4:保留
Bit 5:保留
Bit 6:保留
Bit 7:保留
Bit 8:保留
Samfehl 2 bytes 保留
Bz_cpu_0 2 bytes CPU在機(jī)架0的模式
W#16#0001:停止 (update)
W#16#0002:停止 (reset memory)
W#16#0003:停止(self-initialization)
[NextPage]W#16#0004:停止(internal)
W#16#0005:?jiǎn)?dòng)(cold restart)
W#16#0006:?jiǎn)?dòng)(warm restart)
W#16#0007:?jiǎn)?dòng)(hot restart)
W#16#0008:運(yùn)行(solo mode)
W#16#0009:運(yùn)行(redundant mode)
W#16#000A:HOLD模式
W#16#000B:bbbb-UP模式
W#16#000C:UPDATE模式
W#16#000D:故障
W#16#000E:自檢測(cè)
W#16#000F:沒有開機(jī)
Bz_cpu_1 2 bytes CPU在機(jī)架1的模式
(與 bz_cpu_0相同)
Bz_cpu_2 2 bytes 保留
Cpu_valid 1 byte 信息變量 bz_cpu_0 和 bz_cpu_1有效性
B#16#01: bz_cpu_0 有效
B#16#02:bz_cpu_1 有效
B#16#03: bz_cpu_0 和 bz_cpu_1 有效
hsync_f 1 byte 連接質(zhì)量的狀態(tài) (只有mwstat2 bit 0為1時(shí)有效)
l Bit 0:上部插孔的同步模塊光纖連接質(zhì)量被限制
l Bit 1:下部插孔的同步模塊光纖連接質(zhì)量被限制
Bit 2 到 7: 0
5.2利用SFC51(SSL-ID W#16#xy75)讀出H系統(tǒng)可切換DP從站的信息
當(dāng)SSL-ID 等于W#16#0C75時(shí),表示需要讀出S7-400H系統(tǒng)可切換DP從站(ET200M)的狀態(tài),SFC51可以在OB1或循環(huán)中斷組織塊OB3X中調(diào)用,調(diào)用SFC51的例子如圖5-3所示:
圖5-3 調(diào)用SFC51(SSL-ID W#16#0C75)例子程序
與讀取SSL-ID W#16#xy71的方法相同,參數(shù)SZL_ID變成W#16#C75,參數(shù)INDEX為從站的診斷地址,例如從站診斷地址為8181,轉(zhuǎn)換十六進(jìn)制為W#16#1FF5。參數(shù)SZL_HEADER和DR結(jié)構(gòu)與上例相同,讀出的信息長(zhǎng)度同樣是16個(gè)字節(jié),本例中當(dāng)M1.1為時(shí),讀取的系統(tǒng)信息存儲(chǔ)在DB1.DBB4~DB1.DBB20 16個(gè)字節(jié)中。用戶可以對(duì)16個(gè)字節(jié)長(zhǎng)度的DP從站信息進(jìn)行分析和處理,信息內(nèi)容如下:
[NextPage]
內(nèi)容 長(zhǎng)度 含義
adr1_bgt0 1 word DP從站接口模塊第一個(gè)地址區(qū),它的主站接口模塊插在機(jī)架0上:
DP主站的PROFIBUS系統(tǒng)ID號(hào)和從站站號(hào)。
adr2_bgt0 1 word DP從站接口模塊第二個(gè)地址區(qū),它的主站接口模塊插在機(jī)架0上:
DP主站的槽號(hào)和子槽號(hào)(集成在CPU的主站模塊的接口號(hào))
adr1_bgt1 1 word DP從站接口模塊第一個(gè)地址區(qū),它的主站接口模塊插在機(jī)架1上:
DP主站的PROFIBUS系統(tǒng)ID號(hào)和從站站號(hào)。
adr2_bgt1 1 word DP從站接口模塊第二個(gè)地址區(qū),它的主站接口模塊插在機(jī)架1上:
DP主站的槽號(hào)和子槽號(hào)(集成在CPU的主站模塊的接口號(hào))
Res 2 words 保留
Logadr 1 word DP從站的診斷地址:
l Bits 0 到 14:診斷地址
l Bit 15: I/O標(biāo)識(shí)符 (0 = 輸入,1 = 輸出)
Slavestatus 1 word 通信狀態(tài):
l Bit 0 = 1:機(jī)架0的DP主站模塊不能訪問從站接口模塊
l Bit 1 = 1:機(jī)架1的DP主站模塊不能訪問從站接口模塊
l Bits 2 到 7:保留(每一個(gè)位為0)
5.3利用SFC87讀出冗余連接狀態(tài)信息
S7-400H之間可以建立冗余的連接,在單一網(wǎng)絡(luò)上,兩個(gè)站建立的連接可能為4個(gè),如圖5-4所示:
圖5-4 單一網(wǎng)絡(luò)建立連接
如果網(wǎng)卡分別為A、B、C、D,可能的連接為A-C、 A-D 、B-C 、B-D。如果在冗余的網(wǎng)絡(luò)上四個(gè)網(wǎng)卡的連接數(shù)只能為兩個(gè),以圖5-4為例,如果D網(wǎng)卡有故障,數(shù)據(jù)可以通過A-C、B-C的連接進(jìn)行通信,A-D、B-D通信故障,故障信息可以通過調(diào)用SFC87讀出,連接建立之后,可以查看到建立的四個(gè)S7連接,如圖5-5所示:
圖5-5 冗余的網(wǎng)絡(luò)連接
從上到下的連接數(shù)定義為0、1、2、3,通過SFC87的調(diào)用同時(shí)可以監(jiān)控主連接和備有的連接數(shù)。SFC87可以在OB1或循環(huán)中斷組織塊OB3X中調(diào)用,調(diào)用的例子如圖5-6所示:
[NextPage]
圖5-6 調(diào)用SFC87例子程序
SFC87的參數(shù)解釋如下,
REQ :為1時(shí),診斷任務(wù)激活。
MODE :操作模式。操作模式有四種:
W#16#0 不傳送連接狀態(tài)到數(shù)據(jù)接收區(qū),只傳送確認(rèn)信息到操作系統(tǒng)。
W#16#1 傳送連接狀態(tài)到數(shù)據(jù)接收區(qū),傳送確認(rèn)信息到操作系統(tǒng)。
W#16#2 只在連接狀態(tài)改變時(shí)傳送連接狀態(tài)到數(shù)據(jù)接收區(qū),傳送確認(rèn)信息到操作系統(tǒng)。
W#16#3 只傳送連接狀態(tài)到數(shù)據(jù)接收區(qū),不傳送確認(rèn)信息到操作系統(tǒng)。
RET_VAL :調(diào)用SFC87狀態(tài)返回值。
BUSY :任務(wù)沒有完成。
N-CON :指示上一次連接狀態(tài)(DIS_PCON)變化的連接數(shù)。冗余連接可以建立多個(gè),這里指其中一個(gè)連接。
CON_ARR:連接狀態(tài)接收區(qū)。以CPU最大的連接數(shù)計(jì)算,每一個(gè)連接占用八個(gè)字節(jié)。本例以CPU417-4H為例,CPU的連接數(shù)為64個(gè),每一個(gè)連接需要占用八個(gè)字節(jié),總共512個(gè)字節(jié)。如果連接狀態(tài)輸出區(qū)小,在RET_VAL值中將有錯(cuò)誤信息。
參數(shù)CON_ARR其實(shí)是一個(gè)數(shù)組變量,每一個(gè)數(shù)組單元對(duì)應(yīng)CPU的一個(gè)連接,數(shù)組的單元由一個(gè)八個(gè)字節(jié)的結(jié)構(gòu)變量組成,表示每一個(gè)連接的狀態(tài)。輸出八個(gè)字節(jié)的連接狀態(tài)含義如下:
內(nèi)容 長(zhǎng)度 含義
CON_ID WORD 在NETPRO中組態(tài)的連接號(hào),輸出W#16#FFFF表示連接沒有配置,CON_ARR[i].DIS_PCON被置位表示連接被從新配置或被刪除。
STAT_CON BYTE S7連接或S7冗余連接當(dāng)前狀態(tài),可能的輸出值:
B#16#00:S7連接沒有建立。
B#16#10:S7冗余連接沒有建立。
B#16#01:S7連接正在被建立。 B#16#11:S7冗余連接正在被建立。
B#16#02:S7連接被建立。
B#16#12:S7冗余連接被建立,但是連接沒有冗余(例如D通
信處理器故障,只能建立A-C、B-C連接)。
B#16#13:S7冗余連接被建立
PROD_CON BYTE 當(dāng)前正在運(yùn)行連接的子連接,可能的值為0、1、2、3。
STBY_CON BYTE 備用連接的子連接,可能的值為0、1、2、3。B#16#FF表示沒
有備份連接,只有S7冗余連接有備用連接。
DIS_PCON BOOL CON_ARR[i].STAT_CON輸出值由 W#16#12 -> W#16#13 或
W#16#13 -> W#16#12轉(zhuǎn)變后被置1。其他狀態(tài)的變化不作考慮。當(dāng) MODE=B#16#01 或 02時(shí),狀態(tài)輸出到接收區(qū)CON_ARR后該位被復(fù)位;當(dāng) MODE=B#16#03時(shí),該位不變化。
RES0 BYTE 保留(B#16#00)
RES1 BYTE 保留(B#16#00)
5.4利用SFC90控制H系統(tǒng)的連接狀態(tài)和檢測(cè)
當(dāng)冗余CPU其中一個(gè)出現(xiàn)故障,這時(shí)只有一個(gè)CPU工作,更換故障的CPU上電后,需要向主CPU發(fā)送bbbb-up請(qǐng)求,主CPU檢測(cè)到bbbb-up請(qǐng)求,Update從CPU,從CPU進(jìn)入工作狀態(tài)。bbbb-up和Update過程將影響主CPU對(duì)快速過程的處理,例如在Update過程中信號(hào)狀態(tài)的變化不能被識(shí)別(執(zhí)行bbbb-up和Update的時(shí)間參考H手冊(cè)),在這種情況下,通過SFC90可以終止bbbb-up和Update過程,快速過程執(zhí)行完成后再使能bbbb-up和Update過程,通過調(diào)用SFC90還可以使H-CPU執(zhí)行對(duì)數(shù)據(jù)存儲(chǔ)區(qū)的檢查,SFC90在OB1或循環(huán)中斷組織塊OB3X中調(diào)用,調(diào)用的例子如圖5-7所示:
圖5-7 調(diào)用SFC90例子程序
SFC90的參數(shù)解釋如下:
REQ :為1時(shí),控制任務(wù)激活。
MODE :操作模式。操作模式有七種:
B#16#3 取消bbbb-up過程。
B#16#4 使能bbbb-up過程。
B#16#1 取消Updating過程。
B#16#2 使能Updating過程。
B#16#20 取消在SUBMODE中指定的循環(huán)自檢測(cè)部分。一個(gè)自檢測(cè)部分只能取消一次。
B#16#21 添加在SUBMODE中指定的循環(huán)自檢測(cè)部分。一個(gè)自檢測(cè)部分在取消后才能添加。
B#16#22 立即執(zhí)行在SUBMODE中指定的自檢測(cè)部分。
SUBMODE :操作子模式。操作子模式有六種:
0 SP7 – ASIC – 檢測(cè)
1 Code 存儲(chǔ)器檢測(cè)
2 Data存儲(chǔ)器檢測(cè)
3 操作系統(tǒng)代碼校驗(yàn)和檢測(cè)
4 Code 塊校驗(yàn)和檢測(cè)
5 冗余操作中對(duì)數(shù)據(jù)塊、M區(qū)、計(jì)數(shù)器、計(jì)數(shù)器的比較
RET_VAL :調(diào)用SFC90狀態(tài)返回值。
BUSY :BUSY=1指示任務(wù)沒有完成。
5.5利用FC125監(jiān)控DP從站工作狀態(tài)
在程序中調(diào)用FC125可以判斷系統(tǒng)中DP從站和模塊的錯(cuò)誤。它可以檢測(cè)到丟失和故障的從站,S7-400H具有冗余的PROFIBUS總線,所以必須在CPU中調(diào)用2次,分別監(jiān)控兩條PROFIBUS(通過參數(shù)DP_MASTERSYSTEM識(shí)別)總線上的從站。FC125需要在OB1中調(diào)用,在OB1中調(diào)用的程序如圖5-8所示:
圖5-8調(diào)用FC 125例子程序
下面對(duì)每個(gè)參數(shù)進(jìn)行說明。
CHECK_ACTIVE :為1時(shí)開始檢測(cè)從站。
EXTERNAL_DP_INTERFACE :選擇DP主站的接口,0表示集成在CPU上的DP主站,1表示外部DP主站接口,如CP443-5等。DP_MASTERSYSTEM :PROFIBUS的ID號(hào),在硬件組態(tài)中可以查看到PROFIBUS的ID號(hào)。 H站有兩條PROFIBUS網(wǎng)絡(luò),需要調(diào)用FC125兩次,分別賦值兩個(gè)PROFIBUS的ID號(hào),數(shù)據(jù)類型為INT。
DATA_FIELD :50個(gè)字節(jié)的數(shù)據(jù)區(qū),僅供FC125內(nèi)部使用,數(shù)據(jù)類型為POINTER。
SUM_SLAVES_DIAG :從站診斷的總數(shù),數(shù)據(jù)類型為INT。
LIST_SLAVES_NOT_PRESENT:檢查到丟失的從站(軟件已經(jīng)組態(tài)但是現(xiàn)場(chǎng)沒有連接硬件),16個(gè)字節(jié)的數(shù)據(jù)區(qū),每一個(gè)數(shù)據(jù)位對(duì)應(yīng)一個(gè)從站,置1表示一個(gè)從站丟失,如果丟失的從站返回或維修好,相對(duì)應(yīng)的位復(fù)位。數(shù)據(jù)類型為POINTER。
LIST_SLAVES_ERROR : 故障的從站(部分模塊有故障,其他模塊可以連續(xù)運(yùn)行),16個(gè)字節(jié)的數(shù)據(jù)區(qū),每一個(gè)數(shù)據(jù)位對(duì)應(yīng)一個(gè)從站,置1表示一個(gè)從站故障,如果故障的從站返回或維修好,相對(duì)應(yīng)的位復(fù)位。數(shù)據(jù)類型為POINTER。
RETVAL :調(diào)用FC125時(shí)的狀態(tài)返回值,數(shù)據(jù)類型為INT。
BUSY :為1表示當(dāng)前正在執(zhí)行。
例如,本例中檢查到丟失的從站地址區(qū)為DBB52~DBB67 16個(gè)字節(jié),每一字節(jié)8個(gè)位,每一個(gè)位表示一個(gè)從站,如果位被置1,表示從站丟失。圖5-9為從站編號(hào)的分配表,注意字節(jié)與站號(hào)排列次序:
圖5-9從站編號(hào)的分配表
在編程界面下選擇菜單欄中PLC->Monitor/Modify Variables,如圖5-10所示:
圖5-10打開變量監(jiān)控表
點(diǎn)擊工具欄中的
,觀察在線診斷結(jié)果,如圖5-11所示:
[NextPage]
圖5-11監(jiān)控變量
在第1欄中,顯示ID1的PROFIBUS沒有檢測(cè)到的從站為3,4號(hào)從站。
在第3欄中,顯示ID2的PROFIBUS 沒有檢測(cè)到的從站為3,4號(hào)從站。
通過FC125可以獲得故障的從站,從而排除故障。同時(shí)數(shù)據(jù)存儲(chǔ)區(qū)可以作為接口被其它程序讀取和調(diào)用(如WINCC),更直觀地在界面中顯示故障從站和錯(cuò)誤信息。
調(diào)用版本不同的FB125塊可能會(huì)檢測(cè)不到故障的從站
5.6利用OB塊診斷S7-400H系統(tǒng)
通過組織塊OB70、OB72、OB73中的臨時(shí)變量可以對(duì)S7-400H系統(tǒng)進(jìn)行診斷,以O(shè)B70為例介紹診斷信息的讀取方法。OB70為I/O冗余錯(cuò)誤,當(dāng)DP主站錯(cuò)誤、從站接口模塊錯(cuò)誤以及主站連接從站I/O的更改都會(huì)調(diào)用OB70。在程序中建立OB70,打開OB70可以看到接口參數(shù),如圖5-12所示:
圖5-12 OB70接口參數(shù)
接口參數(shù)解釋如下:
變量 類型 描述
OB70_EV_CLASS BYTE 事件等級(jí)和ID:
·B#16#72: 離開事件(故障清除)
·B#16#73: 進(jìn)來事件(出現(xiàn)故障)
OB70_FLT_ID BYTE 故障代碼(可能的值:B#16#A2, B#16#A3)
OB70_PRIORITY BYTE 優(yōu)先級(jí);在STEP7硬件組態(tài)中可以分配
OB70_OB_NUMBR BYTE OB 號(hào)(70)
OB70_RESERVED_1 WORD 保留
OB70_INFO_1 WORD 與錯(cuò)誤代碼有關(guān)
OB70_INFO_2 WORD 與錯(cuò)誤代碼有關(guān)
OB70_INFO_3 WORD 與錯(cuò)誤代碼有關(guān)
OB70_DATE_TIME DATE_AND_TIME OB塊調(diào)用的時(shí)間
下列事件觸發(fā)OB70的調(diào)用:
OB70_EV_CLASS OB70_FLT_ID OB70開始事件
B#16#72 B#16#A2 DP主站故障
B#16#73/B#16#72 B#16#A3 冗余的DP從站故障/清除
故障代碼B#16#A2, B#16#A3的描述如下:
故障代碼 位 描述
·B#16#A2-
OB70_INFO_1: 有故障DP主站的邏輯地址
OB70_INFO_2: 保留
OB70_INFO_3: 0 to 7 保留
8 to 15 有故障DP主站的系統(tǒng)ID
·B#16#A3
OB70_INFO_1: DP主站的邏輯地址
OB70_INFO_2: 有故障DP從站:
0 to 14 S7從站的邏輯地址或其他DP從站的診斷地址
15 I/O識(shí)別,從站的數(shù)據(jù)類型
OB70_INFO_3: 有故障DP從站:
0 to 7 站號(hào)
8 to 15 主站的系統(tǒng)ID
如果觸發(fā)OB70調(diào)用的事件出現(xiàn),可以將事件信息傳送到全局變量(例如M數(shù)據(jù)區(qū))中進(jìn)行分析,OB70程序例子如圖5-13所示:
圖5-13 OB70程序示例
通過程序?qū)⒂|發(fā)OB70調(diào)用的事件信息記錄到MB20~MB27中,可以為后續(xù)的判斷及顯示使用。利用相同的方法,通過OB72、OB73可以讀取S7-400H系統(tǒng)其他的診斷信息,這里不作描述。










