0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通過相應的診斷指令去實現(xiàn)對S7-1200 CPU和擴展模塊的診斷操作

機器人及PLC自動化應用 ? 來源:機器人及PLC自動化應用 ? 作者:機器人及PLC自動化 ? 2022-12-02 10:00 ? 次閱讀

TIA STEP7 V16版本中,可以通過相應的診斷指令去實現(xiàn)對S7-1200 CPU(固件版本V4.4)和擴展模塊的診斷操作。

讀取LED狀態(tài)的操作。(LED)

讀取診斷信息的操作。(GET_DIAG)

讀取數(shù)據(jù)記錄的操作。(RDREC)

接收中斷的操作。 (RALRM)

生成用戶診斷報警的操作。 (Gen_UsrMsg)

常見問題

本文將詳細介紹上述各個指令的使用。

讀取LED狀態(tài)

1. 讀取LED狀態(tài)指令的調(diào)用,如圖1所示。

ec233866-716e-11ed-8abf-dac502259ad0.jpg

圖1. 讀取LED狀態(tài)指令

2. 讀取LED狀態(tài)指令的使用。

說明:可以使用“LED”指令,讀取CPU上面LED的狀態(tài)。

通過LADDR參數(shù),可以尋址CPU。

通過LED參數(shù),可以選擇要通過該指令讀取當前狀態(tài)的模塊LED指示燈。

調(diào)用該指令時,RET_VAL參數(shù)將輸出所選LED的狀態(tài)。根據(jù)所選的LED,將僅顯示指定的狀態(tài)信息。如表1所示:

表1 "LED"指令的參數(shù)

參數(shù) 聲明 數(shù)據(jù)類型 說明
LED Input UINT LED 的標識號:
1:STOP/RUN
2:ERROR
3:MAINT(維護)
5:Link(綠色)
6:Rx/Tx(黃色)
RET_VAL Return INT LED 的狀態(tài):
0 = LED 不存在或狀態(tài)信息不可用
1 = 永久關(guān)閉
2 = 顏色 1(例如,對于 LED STOP/RUN:綠色)永久點亮
3 = 顏色 2(例如,對于 LED STOP/RUN: 橙色) 永久點亮
4 = 顏色 1 將以 2 Hz 的頻率閃爍
5 = 顏色 2 將以 2 Hz 的頻率閃爍
6 = 顏色 1 和 2 將以 2 Hz 的頻率交替閃爍
7 = LED 正在運行,顏色 1
8 = LED 正在運行,顏色 2
9 = LED 不存在或狀態(tài)信息不可用

示例:下面的示例中,顯示了如何讀取CPU上面的LED狀態(tài)。

在全局DB中創(chuàng)建兩個變量,用來保存數(shù)據(jù),如圖2所示:

ec5587d0-716e-11ed-8abf-dac502259ad0.jpg

圖2. 在全局DB中創(chuàng)建變量

在OB1中調(diào)用"LED"指令,并連接參數(shù),其中參數(shù)LADDR指向CPU的硬件標識符(在"PLC變量->系統(tǒng)常量"中,名稱為"Local~Common"),如圖3所示:

ec7826fa-716e-11ed-8abf-dac502259ad0.jpg
圖3. 在OB1中調(diào)用"LED"指令

通過參數(shù)LED("LED")指向待監(jiān)視CPU的LED。示例一中參數(shù)LED("LED"=1)表示查詢CPU的LED(STOP/RUN)狀態(tài)。

如果CPU的操作模式從STOP轉(zhuǎn)入RUN,則在輸出參數(shù)RET_VAL("ReturnValue")中的值為"6"(綠色和橙色交替閃爍)。

如圖4所示:

ec8f2170-716e-11ed-8abf-dac502259ad0.jpg

圖4. "LED"指令執(zhí)行結(jié)果(示例一)

通過參數(shù)LED("LED")指向待監(jiān)視CPU的LED。示例二中參數(shù)LED("LED"=2)表示查詢CPU的LED(ERROR)狀態(tài)。

如果CPU中發(fā)生錯誤,則在輸出參數(shù)RET_VAL("ReturnValue")中的值為"4"(紅色閃爍)。如圖5所示:

ecaab732-716e-11ed-8abf-dac502259ad0.jpg

圖5. "LED"指令執(zhí)行結(jié)果(示例二)

讀取診斷信息

1. 讀取診斷信息指令的調(diào)用,如圖6所示。

ecc48e50-716e-11ed-8abf-dac502259ad0.jpg

圖6. 讀取診斷信息指令

2.讀取診斷信息指令的使用。

說明:GET_DIAG指令可以用來讀取硬件組件的診斷信息。例如:讀取S7-1200 CPU的診斷信息。

通過LADDR參數(shù),來選擇硬件組件。

通過MODE參數(shù),可以選擇要讀取的診斷信息。

通過DIAG參數(shù),根據(jù)不同的MODE參數(shù),輸出不同的診斷信息。如表2所示:

表2 GET_DIAG指令的MODE參數(shù)和DIAG參數(shù)對應關(guān)系

MODE 說明 DIAG CNT_DIAG
0 以 DWORD 格式輸出硬件組件所有支持的診斷信息,其中位 X=1 表示支持模式 X。 DWORD 數(shù)據(jù)類型的位:
位 0 = 1:支持 MODE 0。
位 1 = 1:支持 MODE 1。
位 2 = 1:支持 MODE 2。
位 3 到 31:不相關(guān)
MODE=0 時,S7-1200 CPU 將忽略參數(shù) LADDR。
0
1 輸出所尋址硬件組件的診斷狀態(tài)。 結(jié)構(gòu) DIS:
MaintenanceState
ComponentStateDetail
OwnState
IOState
OperatingState
0
2 輸出所尋址硬件對象中所有從屬組件的狀態(tài)。 結(jié)構(gòu) DNN:
SubordinateState
SubordinateIOState
DNNmode
0

當參數(shù)MODE=1時,參數(shù)DIAG以結(jié)構(gòu) DIS 輸出診斷信息。此時,在變量聲明中輸入系統(tǒng)數(shù)據(jù)類型“DIS”作為數(shù)據(jù)類型。結(jié)構(gòu)DIS的內(nèi)容如表3所示:

表3 結(jié)構(gòu)DIS中各參數(shù)的含義

參數(shù) 數(shù)據(jù)類型 說明 參數(shù)構(gòu)成規(guī)則
MaintenanceState DWORD 枚舉 MaintenanceState 取決于 ComponentStateDetail。
0 良好 ComponentStateDetail 的位 15 始終為 1。
ComponentStateDetail 的位 11 到 14 的值可以是 0 或 1。
ComponentStateDetail 的位 3 可以是 1。
ComponentStateDetail 的所有其它位均為 0。
1 硬件組件已禁用。 如果 ComponentStateDetail 的位 16 為 1
如果 ComponentStateDetail 的位 17 為 1
2 - -
3 - -
4 - -
5 需要維護 如果 ComponentStateDetail 的位 4 為 1
6 要求維護 如果 ComponentStateDetail 的位 5 為 1
7 錯誤 如果 ComponentStateDetail 的位 6 為 1
8 上一級硬件組件的狀態(tài)為“未知/錯誤” 如果 ComponentStateDetail 的位 11 到 14 的值為 3
如果 ComponentStateDetail 的位 7 到 10 的值為 3 或 4
9 - -
10 輸入/輸出不可用。 如果 ComponentStateDetail 的位 11 到 14 的值為 2
如果 ComponentStateDetail 的位 7 到 10 的值為 1 或 2
如果 ComponentStateDetail 的位 18 為 1
如果 ComponentStateDetail 的位 19 為 1
ComponentStateDetail DWORD 位數(shù)組 狀態(tài):
位 0 到 15:硬件組件的狀態(tài)
位 16 到 31:CPU 的狀態(tài)
-
0 到 2(枚舉) 其它信息:
0:無其它信息
1:不允許傳送
-
3 位 3 = 1:至少一個合格診斷可用 -
4 位 4 = 1:至少一個通道或組件需要維護 -
5 位 5 = 1:至少一個通道或組件需要維護 -
6 位 6 = 1:至少一個通道或組件錯誤 -
7 到 10(枚舉) 0:硬件組件可用
1:無 I/O 訪問
2:硬件組件不可訪問
3:硬件組件不可訪問
4:硬件組件不可訪問
-
11 到 14(枚舉) 0:元素正確。
1:該元素將替代為一個兼容元素。
2:該元素將替代為一個非兼容元素(該元素可訪問,但尚未就緒無法操作)。
3:該元素不存在。
-
15 預留(始終為“1”)。 -
16 到 31 CPU 生成的模塊狀態(tài)信息:
第 16 位 = 1:子模塊或模塊已禁用
第 17 位 = 1:激活 CiR 操作
第 18 位 = 1:輸入不可用
第 19 位 = 1:輸出不可用
第 20 位 = 1:診斷緩沖區(qū)溢出
第 21 位 = 1:診斷不可用
第 22 位 = 1: 部分設(shè)備故障(帶有 PNIO,可用于共享設(shè)備)
第 23 到 31 位 :預留(始終為 0)
-
OwnState UINT 枚舉 維護狀態(tài) OwnState 取決于 MaintenanceState。
0 良好 如果 MaintenanceState 的值為 0。
1 禁用 如果 MaintenanceState 的值為 1。
2 需要維護 如果 MaintenanceState 的值為 5。
3 要求維護 如果 MaintenanceState 的值為 6。
4 錯誤 如果 MaintenanceState 的值為 7。
5 不可訪問 如果 MaintenanceState 的值為 8。
6 診斷狀態(tài)未知 未返回診斷事件的組件的默認值。
7 輸入/輸出不可用。 如果 MaintenanceState 的值為 10。
IOState WORD 位數(shù)組 硬件組件的 I/O 狀態(tài) 可設(shè)置一個或多個位。
IOState 取決于 ComponentStateDetail。
位 0 = 1 良好 ComponentStateDetail 的位 15 始終為 1。
ComponentStateDetail 的位 11 到 14 的值可以是 0 或 1。
ComponentStateDetail 的位 3 可以是 1。
ComponentStateDetail 的所有其它位均為 0。
如果位 0 = 1,則位 1 到 5 和位 7 = 0。
位 1 = 1 禁用 如果 ComponentStateDetail 的位 16 為 1
如果 ComponentStateDetail 的位 17 為 1
如果位 1 = 1,則所有其它位均為 0。
位 2 = 1 需要維護 如果 ComponentStateDetail 的位 4 為 1
位 3 = 1 要求維護 如果 ComponentStateDetail 的位 5 為 1
位 4 = 1 錯誤 如果 ComponentStateDetail 的位 6 為 1
位 5 = 1 硬件組件無法訪問。 如果 ComponentStateDetail 的位 11 到 14 的值為 3
如果 ComponentStateDetail 的位 7 到 10 的值為 3 或 4
如果位 5 = 1,則所有其它位均為 0。
位 6 = 1: 至少一個合格診斷可用 如果 ComponentStateDetail 的位 3 為 1。
在這種情況下,將位 0、2 或 3 置位。
位 7 = 1: I/O 數(shù)據(jù)不可用 如果 ComponentStateDetail 的位 11 到 14 的值為 2
如果 ComponentStateDetail 的位 7 到 10 的值為 1 或 2
如果 ComponentStateDetail 的位 18 為 1
如果 ComponentStateDetail 的位 19 為 1
位 8 到 15 預留(始終為“0”) -
OperatingState UINT 枚舉 -
0 不支持 - 對于 I/O 模塊,OperatingState 的值始終為“0”。 -
1 STOP / 固件更新 -
2 STOP / 存儲器復位 -
3 STOP / 自啟動 -
4 STOP -
5 存儲器復位 -
6 啟動 -
7 - -
8 RUN -
9 RUN-Redundant -
10 HOLD -
11 - -
12 - -
13 DEFECT(注:僅在診斷緩沖區(qū)條目中可見) -
14 - -
15 斷電(注:僅在診斷緩沖區(qū)條目中可見) -
16 CiR -
17 STOP,且無 ODIS -
18 RUN ODIS -
19 PgmTest -
20 RunPgmTest(備用 CPU 處于測試模式時主 CPU 的狀態(tài)) -
21 Run-Syncup(只有主 CPU 處于SYNCUP 系統(tǒng)狀態(tài)) -
22 SYNCUP(僅備用 CPU 處于 SYNCUP 系統(tǒng)狀態(tài)) -
31 伙伴 CPU 的狀態(tài)未知(如,伙伴 CPU 不可用) -
32 - -
33 STOP 系統(tǒng)狀態(tài) -
34 預留 -
35 STARTUP 系統(tǒng)狀態(tài) -
36 預留 -
37 RUN-Solo 系統(tǒng)狀態(tài) -
38 SYNCUP 系統(tǒng)狀態(tài) -
39 預留 -
40 RUN-Redundant 系統(tǒng)狀態(tài) -

示例:在全局DB中創(chuàng)建三個變量和一個"Diag"結(jié)構(gòu)(數(shù)據(jù)類型為DIS),用來保存數(shù)據(jù),如圖7所示:

ece4c846-716e-11ed-8abf-dac502259ad0.jpg

圖7. 在全局DB中創(chuàng)建變量

在OB1中調(diào)用GET_DIAG指令,并連接參數(shù),其中參數(shù)LADDR指向CPU的硬件標識符(在"PLC變量->系統(tǒng)常量"中,名稱為"Local~Common"),如圖8所示:

ed04f03a-716e-11ed-8abf-dac502259ad0.jpg
圖8. 在OB1中調(diào)用GET_DIAG指令

根據(jù)參數(shù)MODE("Mode")的值"1",有以下幾點說明:

指令將讀取(CPU的)所尋址硬件對象的狀態(tài)。

在參數(shù)DIAG("Diag")中,診斷信息將在結(jié)構(gòu)(DIS數(shù)據(jù)類型)中輸出。

要了解診斷信息,必須將十六進制值轉(zhuǎn)換為二進制代碼。通過參數(shù)DIAG("Diag"),指示以下信息:

MaintenanceState:根據(jù)值"6",表示CPU要求維護。

ComponentStateDetail:根據(jù)十六進制值"0000_8020",位15已激活(預留,始終為"1"),位5已激活(至少一個通道或組件需要維護)。

OwnState:根據(jù)值"3",要求維護。

IOState:根據(jù)十六進制值"0008",要求維護。

OperatingState:輸出"0"。

輸出參數(shù)RET_VAL("ReturnValue")用于指示處理無錯誤。通過輸出參數(shù)CNT_DIAG("CNT_DIAG"),指示參數(shù)DETAIL的"0"診斷詳情已輸出。 如圖9所示:

ed22362c-716e-11ed-8abf-dac502259ad0.jpg

圖9. GET_DIAG指令執(zhí)行結(jié)果

讀取數(shù)據(jù)記錄

1. 讀取數(shù)據(jù)記錄指令的調(diào)用,如圖10所示。

ed445464-716e-11ed-8abf-dac502259ad0.jpg

圖10. 讀取數(shù)據(jù)記錄指令

2. 讀取數(shù)據(jù)記錄指令的使用。

說明:RDREC讀取數(shù)據(jù)記錄指令,可以從使用ID尋址的模塊中讀取編號為INDEX的數(shù)據(jù)記錄。模塊必須是位于分布式模塊(PROFIBUS DP、PROFINET IO、AS-i)。

使用參數(shù) ID 選擇從中讀取數(shù)據(jù)記錄的模塊,使用模塊的硬件標識符,在"PLC 變量 -> 系統(tǒng)常量“中。例如:ET200SP分布式IO 的 DQ模塊,將顯示為數(shù)據(jù)類型為"Hw_SubModule"的 IO_device_1~DQ_16x24VDC_0_5A_ST_1。

使用 INDEX 參數(shù),可選擇模塊待讀取的數(shù)據(jù)記錄。例如:”16#E00A“,表示讀取 IO 設(shè)備的診斷數(shù)據(jù)記錄。

使用 MLEN 指定要讀取的最大數(shù)據(jù)記錄字節(jié)數(shù)。如果參數(shù) MLEN 選擇了長度”0“,則會在參數(shù) RECORD 中寫入完整的數(shù)據(jù)記錄。

目標區(qū)域 RECORD用來保存數(shù)據(jù)記錄,在參數(shù) RECORD 中使用的結(jié)構(gòu)(例如:組態(tài)、數(shù)據(jù)類型和長度)取決于由哪個模塊讀取哪條數(shù)據(jù)記錄。

輸出參數(shù) VALID 的值為 TRUE,表示數(shù)據(jù)記錄已成功傳送到目標區(qū)域 RECORD 中。此時,輸出參數(shù) LEN 包含所讀取數(shù)據(jù)的字節(jié)長度。

如果在數(shù)據(jù)記錄的傳送過程中發(fā)生錯誤,輸出參數(shù) ERROR 置 ”1“。輸出參數(shù) STATUS 中包含錯誤信息。

示例:本例中,IO控制器為S7-1200 CPU1215C,帶有 DQ 模塊的 IO 設(shè)備 (ET 200SP IM 155-6 PN HF) 導致線路斷路。使用該 IO 設(shè)備前端模塊的硬件 ID,使用數(shù)據(jù)記錄16#E00A 進行通道診斷。

在全局DB中創(chuàng)建七個變量和一個數(shù)組,用來保存數(shù)據(jù)。 如圖11所示:

ed6ccd2c-716e-11ed-8abf-dac502259ad0.jpg

圖11. 在全局DB中創(chuàng)建變量

在OB1中調(diào)用RDREC指令,連接參數(shù),在"PLC變量->系統(tǒng)常量"中的 條目,讀取 IO 設(shè)備前端模塊的硬件 ID(數(shù)據(jù)類型為“Hw_SubModule”),使用數(shù)據(jù)記錄16#E00A 進行通道診斷,

如圖12所示:

ed8a4690-716e-11ed-8abf-dac502259ad0.jpg

圖12. 在OB1中調(diào)用RDREC指令

當RDREC指令出錯時要存儲錯誤狀態(tài),可連接MW100("Status")變量,如圖13所示:

edb26602-716e-11ed-8abf-dac502259ad0.jpg

圖13. 在OB1中調(diào)用MOVE指令

診斷數(shù)據(jù)記錄的結(jié)構(gòu)16#E00A,版本號BlockVersion=16#0100,如表4所示:

表4 數(shù)據(jù)記錄結(jié)構(gòu)一

名稱 長度
BlockType 2 bytes
BlockLength 2 bytes
BlockVersion 2 bytes
SlotNumber 2 bytes
SubslotNumber 2 bytes
ChannelNumber 2 bytes
ChannelProperties 2 bytes
USI 2 bytes
USI=16#8000
ChannelNumber 2 bytes
ChannelProperties 2 bytes
ChannelErrorType 2 bytes
USI=16#8002
ChannelNumber 2 bytes
ChannelProperties 2 bytes
ChannelErrorType 2 bytes
ExtChannelErrorType 2 bytes
ExtChannelAddValue 4 bytes
USI=16#0000-16#7FFF
vendor-specific X bytes

診斷數(shù)據(jù)記錄的結(jié)構(gòu)16#E00A,版本號BlockVersion=16#0101,如表5所示:

表5 數(shù)據(jù)記錄結(jié)構(gòu)二

名稱 長度
BlockType 2 bytes
BlockLength 2 bytes
BlockVersion 2 bytes
API 4 bytes
SlotNumber 2 bytes
SubslotNumber 2 bytes
ChannelNumber 2 bytes
ChannelProperties 2 bytes
USI 2 bytes
USI=16#8000
ChannelNumber 2 bytes
ChannelProperties 2 bytes
ChannelErrorType 2 bytes
USI=16#8002
ChannelNumber 2 bytes
ChannelProperties 2 bytes
ChannelErrorType 2 bytes
ExtChannelErrorType 2 bytes
ExtChannelAddValue 4 bytes
USI=16#0000-16#7FFF
vendor-specific X bytes

輸入?yún)?shù) REQ("Req")返回信號狀態(tài)"TRUE"時,啟動指令RDREC。RDREC指令將通過輸入?yún)?shù)ID(本例中為"283",表示 IO 設(shè)備前端模塊的硬件 ID),調(diào)用該模塊。通過輸入?yún)?shù)INDEX(本例中為"16#E00A"),

系統(tǒng)將使用數(shù)據(jù)記錄16#E00A 進行通道診斷,并通過參數(shù)RECORD("RecordDiag")進行保存。

通過輸出參數(shù)LEN("Len"),可存儲所讀取數(shù)據(jù)記錄的長度。根據(jù)輸入?yún)?shù)MLEN("Mlen")的值,值為"0"時,待讀取的數(shù)據(jù)記錄信息將不受限制。

在執(zhí)行過程中,輸出參數(shù)BUSY("Busy")將置位為"TRUE";VALID("Valid")將置位為"FALSE"。在執(zhí)行完成后,將輸出成功讀取的結(jié)果("Valid"到"TRUE")。并在輸出參數(shù)STATUS("Status")處,顯示該塊的狀態(tài),

如果值為"16#0000_0000",表示過程成功執(zhí)行且無任何錯誤。如圖14所示:

edd451c2-716e-11ed-8abf-dac502259ad0.jpg

圖14. RDREC指令執(zhí)行結(jié)果

此外,數(shù)據(jù)記錄16#E00A中包含以下信息:

BlockType("RecordDiag[0]"):16#0010,表示診斷記錄;

BlockLength("RecordDiag[1]"):16#0016,表示包含診斷記錄的連續(xù)字節(jié)數(shù)為22個字節(jié);

BlockVersion("RecordDiag[2]"):16#0101,表示版本號為16#0101;

API("RecordDiag[3]和RecordDiag[4]"):0,表示應用程序進程標識符,標準API為0;

SlotNumber("RecordDiag[5]"):16#0002,表示插槽號為2;

SubslotNumber("RecordDiag[6]"):16#0001,表示子模塊為1;

ChannelNumber("RecordDiag[7]"):16#8000,表示子模塊級別上的診斷;

ChannelProperties("RecordDiag[8]"):16#0800,表示診斷未決;

USI("RecordDiag[9]"):16#8000,表示用戶結(jié)構(gòu)標識符;

ChannelNumber("RecordDiag[10]"):16#0003,表示通道3發(fā)生故障。

ChannelProperties("RecordDiag[11]"):16#4801,表示輸出位信號診斷未決。

ChannelErrorType("RecordDiag[12]"):16#0006,表示斷路故障。

參數(shù)RECORD("RecordDiag")中顯示了數(shù)據(jù)記錄信息,如圖15所示:

edf8680a-716e-11ed-8abf-dac502259ad0.jpg

圖15. RDREC指令執(zhí)行結(jié)果(數(shù)據(jù)記錄信息"RecordDiag")

接收中斷

1. 接收中斷指令的調(diào)用,如圖16所示。

ee21d7d0-716e-11ed-8abf-dac502259ad0.jpg

圖16. 接收中斷指令

2. 接收中斷指令的使用。

說明:RALRM接收中斷指令,可以從I/O模塊(集中式組態(tài))或DP從站/PROFINET IO設(shè)備的模塊中接收帶有所有相關(guān)信息的中斷,并在輸出參數(shù)中輸出該信息。

輸出參數(shù)中的信息包括所調(diào)用 OB 的信息。例如:輸出信息包含診斷錯誤中斷OB82的啟動信息和管理信息。

目標范圍 AINFO 中的數(shù)據(jù)結(jié)構(gòu)包含標頭信息和附加中斷信息。附加中斷信息取決于格式標識符,例如:格式標識符16#8000表示通道診斷。

RALRM指令可以在三種操作模式中調(diào)用(MODE 參數(shù)),如表6所示:

表6 RALRM指令的參數(shù)MODE

MODE RALRM
0 表示輸出參數(shù) ID 中觸發(fā)中斷并將輸出參數(shù) NEW 設(shè)置為 TRUE 的組件。
1 寫入所有輸出參數(shù),而不考慮觸發(fā)中斷的組件。
2 檢查輸入?yún)?shù) F_ID 中指定的組件是否已觸發(fā)中斷。
如果沒有觸發(fā),則 NEW = FALSE
如果已觸發(fā),則 NEW = TRUE 且已寫入所有其它輸出參數(shù)。

示例:創(chuàng)建一個輸入模塊,在"PLC變量->系統(tǒng)常量"中,讀取輸入模塊的硬件標識符。并通過輸入?yún)?shù)F_ID("F_ID")存儲該硬件標識符。

為了產(chǎn)生一個中斷,該輸入通道需選擇"斷路"選項。該選項位于"模塊參數(shù)->通道模板->輸入"中。如圖17所示:

ee3ea932-716e-11ed-8abf-dac502259ad0.jpg

圖17 組態(tài)輸入模塊的診斷信息

在全局DB中創(chuàng)建七個變量,和結(jié)構(gòu)"Tinfo"和"Ainfo"進行數(shù)據(jù)存儲,創(chuàng)建數(shù)據(jù)類型為"TI_DiagnosticInterrupt"的結(jié)構(gòu)"Tinfo",如圖18所示:

ee516a72-716e-11ed-8abf-dac502259ad0.jpg

圖18. 在全局DB中創(chuàng)建變量

創(chuàng)建診斷錯誤中斷OB82,如圖19所示:

ee775a0c-716e-11ed-8abf-dac502259ad0.jpg

圖19. 創(chuàng)建OB82

在OB82中調(diào)用RALRM指令,并連接參數(shù),如圖20所示:

ee8d9d08-716e-11ed-8abf-dac502259ad0.jpg

圖20. 在OB82中調(diào)用RALRM指令

發(fā)生斷路故障時,輸入模塊將生成一個中斷。之后,將調(diào)用診斷錯誤中斷OB82,并啟動指令RALRM。

RALRM指令將通過輸入?yún)?shù)F_ID("F_ID")調(diào)用該輸入模塊。指令RALRM將根據(jù)輸入?yún)?shù)MODE("Mode")的值"2",檢查中斷是否由該輸入模塊產(chǎn)生。如果中斷來自該輸入模塊("F_ID"和"ID"相同),

則輸出參數(shù)NEW("New")將置位為"TRUE",并通過參數(shù)TINFO("Tinfo")和AINFO("Ainfo")保存該中斷信息。生成該中斷的模塊硬件標識符將顯示在輸出參數(shù)ID("ID")處。已接收到的中斷信息長度

將記錄在輸出參數(shù)LEN("Len")中。根據(jù)輸入?yún)?shù)MLEN("Mlen")的值,值為"0"時,待讀取AINFO("Ainfo")的信息將不受限制。并在輸出參數(shù)STATUS("Status")處,顯示該塊的狀態(tài),

如果值為"16#0000_0000",表示過程成功執(zhí)行且無任何錯誤。如圖21所示:

eea8c984-716e-11ed-8abf-dac502259ad0.jpg

圖21.RALRM指令執(zhí)行結(jié)果

OB82的啟動信息和管理信息均存儲在參數(shù)TINFO("Tinfo")中。生成的中斷包含以下信息:

OB82啟動信息:

OB82使用優(yōu)化啟動信息("SI_Format"和值"254")。

OB82管理信息:

讀取狀態(tài)為"錯誤"(參見"IO_State"的值)的輸入模塊(參見"LADDR")。

最近記錄的通道"0"的中斷(參見"Channel"的值)。

最近記錄的站"1"的中斷(參見"address"的值)。

從站的配置文件(參見"slv_prfl"的值)。

由組態(tài)的分布式模塊觸發(fā)的中斷(參見"intr_type"的值)。如圖22所示:

eec6d3e8-716e-11ed-8abf-dac502259ad0.jpg

圖22.TINFO參數(shù)的詳細信息

有關(guān)中斷的標頭信息和附加信息,均存儲在參數(shù)AINFO("Ainfo")中。生成的中斷包含以下信息:

所用OB是一個診斷中斷OB("InterruptType",值為"1")。

系統(tǒng)報告模塊在插槽"2"("SlotNumber")處和子模塊插槽"1"處發(fā)生中斷("SubSlotNumber")。

對于子模塊("InterruptSpecifier",值為"16#A89C"),為中斷指示符。

在本示例中,使用通道診斷的結(jié)構(gòu)("FormatIdentifier",值為"16#8000")。

觸發(fā)該中斷的組件通道編號將分配給該子模塊("ChannelNumber",值為"16#0000")。

診斷輸入通道的一個到達錯誤("ChannelErrorType",值為"16#28")。

所用的數(shù)據(jù)格式為一個位("DataFormat",值為"16#01")。

診斷一個斷路故障("ErrorCode",值為"16#0006")。如圖23所示:

eee6d684-716e-11ed-8abf-dac502259ad0.jpg

圖23.AINFO參數(shù)的詳細信息

注:AINFO變量建議使用非優(yōu)化數(shù)據(jù)塊,如使用優(yōu)化塊,需要使用BYTE類型的數(shù)組,以免數(shù)據(jù)發(fā)生錯亂。

生成用戶診斷報警

1. 生成用戶診斷報警指令的調(diào)用,如圖24所示。

ef10b198-716e-11ed-8abf-dac502259ad0.jpg

圖24. 生成用戶診斷報警指令

2. 生成用戶診斷報警指令的使用。

說明:Gen_UsrMsg生成用戶診斷報警指令,可以生成在診斷緩沖區(qū)中輸入的報警。

可以使用 Mode 參數(shù)選擇生成到達的報警還是離去的報警。

當 Mode = 1 時:創(chuàng)建到達的報警。

當 Mode = 2 時:創(chuàng)建離去的報警。

無論生成到達的報警還是離去的報警,報警始終具有”僅信息“屬性。

條目在診斷緩沖區(qū)中同時創(chuàng)建,而報警將進行異步傳送。

如果指令在執(zhí)行過程中出錯,則將在參數(shù) RET_VAL 處輸出錯誤信息。

示例:在全局DB中創(chuàng)建五個變量和一個"AssocValues"結(jié)構(gòu)(數(shù)據(jù)類型為AssocValues),用來保存數(shù)據(jù),如圖25所示:

ef33401e-716e-11ed-8abf-dac502259ad0.jpg

圖25. 在全局DB中創(chuàng)建變量

在OB1中調(diào)用Gen_UsrMsg指令,并連接參數(shù),如圖26所示:

ef55d3d6-716e-11ed-8abf-dac502259ad0.jpg

圖26. 在OB1中調(diào)用Gen_UsrMsg指令

使用"PLC報警文本列表->文本列表"條目為報警創(chuàng)建文本列表和文本列表條目。

在參數(shù)TextListID("TextListID")中應用文本列表的ID。

在參數(shù)TextID("TextID")中應用文本列表條目的ID(范圍...)。

分配報警參數(shù),如圖27所示:

ef657034-716e-11ed-8abf-dac502259ad0.jpg

圖27. 分配報警參數(shù)

如果常開觸點("En")的信號狀態(tài)為"TRUE",則執(zhí)行"Gen_UsrMsg"指令。

根據(jù)參數(shù)Mode("Mode")的值,生成到達的報警。使用參數(shù)TextListID("TextListID")和TextID("TextID")使指令指向待輸出的報警。使用參數(shù)

AssocValues("AssocValues")傳送報警的關(guān)聯(lián)值。

生成報警時,將按下列方式解釋報警文本中包含的字符串"@7I%5d@":

編號為"7"的關(guān)聯(lián)值以INT數(shù)據(jù)類型讀取。該編號對應于"AssocValues"結(jié)構(gòu)的參數(shù)Value[5]。

關(guān)聯(lián)值將作為一個十進制數(shù)輸出。十進制數(shù)被限制為五位數(shù)。

通過輸出參數(shù) Ret_Val("ReturnValue"),值為"0",指示該指令的處理無錯誤。如圖28所示:

ef856c22-716e-11ed-8abf-dac502259ad0.jpg

圖28. Gen_UsrMsg指令執(zhí)行結(jié)果

要輸出報警,對于S7-1200系列的CPU,請打開條目"在線與診斷->診斷緩沖區(qū)",如圖29所示:

ef9bd8fe-716e-11ed-8abf-dac502259ad0.jpg

圖29. 診斷緩沖區(qū)中輸入的報警

注:關(guān)于診斷指令的更多信息請參考TIA STEP7 V16軟件中的幫助文檔。

常見問題

通過"LED"指令讀取擴展模塊的指示燈狀態(tài)報錯?

在設(shè)備視圖中組態(tài)S7-1200的擴展模塊SM1231 AI4(訂貨號:6ES7 231-4HD32-0XB0),硬件標識符為279。通過"LED"指令診斷擴展模塊SM1231 AI4的DIAG指示燈的狀態(tài),輸出參數(shù)RET_VAL("ReturnValue")

為-32622,如圖30所示。該輸出對應16#8092,表示由參數(shù)LADDR尋址的硬件組件不會返回所需信息。因此,無法通過"LED"指令診斷擴展模塊SM1231 AI4。

efbdb5c8-716e-11ed-8abf-dac502259ad0.jpg

圖30. "LED"指令執(zhí)行結(jié)果

S7-1200 CPU可以同時激活多少個RDREC/WRREC指令?

最多可以同時使用四條RDREC指令和四條WRREC指令。

RALRM指令必須要在中斷OB中調(diào)用嗎?

由于要檢查的I/O中斷,因此僅在CPU操作系統(tǒng)啟動的中斷OB內(nèi)調(diào)用RALRM指令。如果在啟動事件不是I/O中斷的OB中調(diào)用RALRM指令,則該指令將在其輸出中提供相應精簡的信息。

需要確保在不同OB中調(diào)用RALRM指令時使用不同的背景數(shù)據(jù)塊。

使用Gen_UsrMsg指令如何定義文本列表中的相關(guān)值?

在文本列表條目中,可通過添加以下信息定義相關(guān)值:@<關(guān)聯(lián)值的數(shù)量><元素類型><格式規(guī)范>@,如圖31所示:

f008b4ce-716e-11ed-8abf-dac502259ad0.jpg

圖31. 文本列表中定義相關(guān)值

相關(guān)值中的<元素類型>可以通過下表定義,如圖32所示:

f024805a-716e-11ed-8abf-dac502259ad0.jpg

圖32. 相關(guān)值中的<元素類型>

相關(guān)值中的<格式規(guī)范>可以通過下表定義,如圖33所示:

f048c0fa-716e-11ed-8abf-dac502259ad0.jpg

圖33. 相關(guān)值中的<格式規(guī)范>






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • plc
    plc
    +關(guān)注

    關(guān)注

    5014

    文章

    13347

    瀏覽量

    464430
  • LED指示燈
    +關(guān)注

    關(guān)注

    2

    文章

    94

    瀏覽量

    12694
  • S7-1200
    +關(guān)注

    關(guān)注

    11

    文章

    331

    瀏覽量

    18028

原文標題:西門子: LED、GET_DIAG、RDREC、RALRM、Gen_UsrMsg診斷指令的使用

文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    S7-1200S7-1200/S7-1500不同項目下UDP通信

    S7-1200S7-1200 之間的以太網(wǎng)通信可以通過 UDP 協(xié)議來實現(xiàn)。本列中使用TSEND_C,TRCV_C指令建立雙方的UDP
    的頭像 發(fā)表于 01-10 09:19 ?6105次閱讀

    西門子PLC S7-1200診斷功能

    用戶帶來的便利,也更能體會到它的各項功能,如:通訊功能,擴展功能,集成功能等方面的強大。在西門子PLC S7-1200CPU中,用戶可以通過指示燈狀態(tài)來判斷故障并進行
    發(fā)表于 12-22 16:07

    基于S7-1200的PLC的編程及擴展

    集,這些特點使它成為控制各種應用的完美解決方案。S7-1200 型號和基于 Windows 的 STEP 7 編程工具。S7-1200 系列提供了各種模塊和插入式板,用于
    發(fā)表于 09-25 18:39 ?27次下載

    S7-1200運動控制的結(jié)構(gòu)及原理

    CPU S7-1200 兼具可編程邏輯控制器的功能和通過脈沖接口控制步進電機和伺服電機運行的運動控制功能。 運動控制功能負責對驅(qū)動器進行監(jiān)控。DC/DC/DC 型 CPU
    發(fā)表于 09-29 14:37 ?43次下載
    <b class='flag-5'>S7-1200</b>運動控制的結(jié)構(gòu)及原理

    你必須知道的S7-1200 PLC擴展模塊

    “如果有用過西門子S7-200 SMART系列 PLC的學員,應該會知道PLC提供了各種模塊和插入式板,用于擴展CPU 的功能,那么S7-1200
    的頭像 發(fā)表于 12-24 17:03 ?9692次閱讀

    使用DeviceStates指令對分布式IO子站進行診斷

    S7-1200 CPU V2.1 開始支持分布式 IO 設(shè)備的診斷功能,可使用 DeviceStates 和 ModuleStates 指令對分布式 IO 設(shè)備的站狀態(tài)和子
    的頭像 發(fā)表于 03-23 10:15 ?1.5w次閱讀
    使用DeviceStates<b class='flag-5'>指令</b>對分布式IO子站進行<b class='flag-5'>診斷</b>

    關(guān)于S7-1200S7-1200之間UDP的通信與仿真

    S7-1200S7-1200 之間的以太網(wǎng)通信可以通過 UDP 協(xié)議來實現(xiàn),使用的通信指令是在雙方
    的頭像 發(fā)表于 04-22 09:14 ?5672次閱讀
    關(guān)于<b class='flag-5'>S7-1200</b>和<b class='flag-5'>S7-1200</b>之間UDP的通信與仿真

    S7-1200 Modbus TCP通信指令塊編程教程

    S7-1200 Modbus TCP通信指令塊編程教程免費下載。
    發(fā)表于 03-28 16:08 ?10次下載

    如何利用指令讀取S7-1200 PLC的系統(tǒng)時間?

    在博圖TIA 軟件V16 版本中,可以通過相應的時鐘功能指令實現(xiàn)S7-1200
    發(fā)表于 03-07 10:37 ?3803次閱讀

    S7-1200 CPUS7-300 CP STEP7 UDP通信

    S7-1200S7-300 CP 之間的以太網(wǎng)通信可以通過 UDP 協(xié)議來實現(xiàn),使用的通信指令是在
    的頭像 發(fā)表于 04-08 10:48 ?2113次閱讀

    S7-1200 CPUS7-300 CP TIA UDP通信

    S7-1200S7-300 CP 之間的以太網(wǎng)通信可以通過 UDP 協(xié)議來實現(xiàn),使用的通信指令是在
    的頭像 發(fā)表于 04-08 10:49 ?2457次閱讀

    S7-1200S7-300的選型區(qū)別

    在硬件擴展方面,S7-300的主機架多支持八個擴展模塊,而S7-1200支持擴展多八個信號
    的頭像 發(fā)表于 05-04 15:18 ?1730次閱讀
    <b class='flag-5'>S7-1200</b>與<b class='flag-5'>S7</b>-300的選型區(qū)別

    S7-1200下載項目程序步驟詳解

    S7-1200CPU本體上集成了PROFINET通信口,通過這個通信口可以實現(xiàn)CPU與編程設(shè)備的通信。 此外,
    發(fā)表于 11-15 15:45 ?4609次閱讀
    <b class='flag-5'>S7-1200</b>下載項目程序步驟詳解

    西門子S7-1200S7-300PLC之間的區(qū)別有哪些?

    等方面。 一、硬件的區(qū)別 在硬件擴展方面,S7-300的主機架多支持八個擴展模塊,而S7-1200支持
    的頭像 發(fā)表于 01-10 10:54 ?1106次閱讀
    西門子<b class='flag-5'>S7-1200</b>與<b class='flag-5'>S7</b>-300PLC之間的區(qū)別有哪些?

    西門子S7-1200 PLC的指令介紹

    了最新的技術(shù),為用戶提供了更為高效、靈活的控制方案。本文將詳細介紹S7-1200 PLC的指令系統(tǒng),包括其指令分類、具體指令功能以及在實際應用中的優(yōu)勢。
    的頭像 發(fā)表于 06-18 14:52 ?3032次閱讀