在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

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

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

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

讀取LED狀態的操作。(LED)

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

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

接收中斷的操作。 (RALRM)

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

常見問題

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

讀取LED狀態

1. 讀取LED狀態指令的調用,如圖1所示。

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

圖1. 讀取LED狀態指令

2. 讀取LED狀態指令的使用。

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

通過LADDR參數,可以尋址CPU。

通過LED參數,可以選擇要通過該指令讀取當前狀態的模塊LED指示燈。

調用該指令時,RET_VAL參數將輸出所選LED的狀態。根據所選的LED,將僅顯示指定的狀態信息。如表1所示:

表1 "LED"指令的參數

參數 聲明 數據類型 說明
LED Input UINT LED 的標識號:
1:STOP/RUN
2:ERROR
3:MAINT(維護)
5:Link(綠色)
6:Rx/Tx(黃色)
RET_VAL Return INT LED 的狀態:
0 = LED 不存在或狀態信息不可用
1 = 永久關閉
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 不存在或狀態信息不可用

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

在全局DB中創建兩個變量,用來保存數據,如圖2所示:

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

圖2. 在全局DB中創建變量

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

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

通過參數LED("LED")指向待監視CPU的LED。示例一中參數LED("LED"=1)表示查詢CPU的LED(STOP/RUN)狀態。

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

如圖4所示:

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

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

通過參數LED("LED")指向待監視CPU的LED。示例二中參數LED("LED"=2)表示查詢CPU的LED(ERROR)狀態。

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

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

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

讀取診斷信息

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

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

圖6. 讀取診斷信息指令

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

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

通過LADDR參數,來選擇硬件組件。

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

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

表2 GET_DIAG指令的MODE參數和DIAG參數對應關系

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

當參數MODE=1時,參數DIAG以結構 DIS 輸出診斷信息。此時,在變量聲明中輸入系統數據類型“DIS”作為數據類型。結構DIS的內容如表3所示:

表3 結構DIS中各參數的含義

參數 數據類型 說明 參數構成規則
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 上一級硬件組件的狀態為“未知/錯誤” 如果 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 位數組 狀態:
位 0 到 15:硬件組件的狀態
位 16 到 31:CPU 的狀態
-
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 生成的模塊狀態信息:
第 16 位 = 1:子模塊或模塊已禁用
第 17 位 = 1:激活 CiR 操作
第 18 位 = 1:輸入不可用
第 19 位 = 1:輸出不可用
第 20 位 = 1:診斷緩沖區溢出
第 21 位 = 1:診斷不可用
第 22 位 = 1: 部分設備故障(帶有 PNIO,可用于共享設備)
第 23 到 31 位 :預留(始終為 0)
-
OwnState UINT 枚舉 維護狀態 OwnState 取決于 MaintenanceState。
0 良好 如果 MaintenanceState 的值為 0。
1 禁用 如果 MaintenanceState 的值為 1。
2 需要維護 如果 MaintenanceState 的值為 5。
3 要求維護 如果 MaintenanceState 的值為 6。
4 錯誤 如果 MaintenanceState 的值為 7。
5 不可訪問 如果 MaintenanceState 的值為 8。
6 診斷狀態未知 未返回診斷事件的組件的默認值。
7 輸入/輸出不可用。 如果 MaintenanceState 的值為 10。
IOState WORD 位數組 硬件組件的 I/O 狀態 可設置一個或多個位。
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 數據不可用 如果 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(注:僅在診斷緩沖區條目中可見) -
14 - -
15 斷電(注:僅在診斷緩沖區條目中可見) -
16 CiR -
17 STOP,且無 ODIS -
18 RUN ODIS -
19 PgmTest -
20 RunPgmTest(備用 CPU 處于測試模式時主 CPU 的狀態) -
21 Run-Syncup(只有主 CPU 處于SYNCUP 系統狀態) -
22 SYNCUP(僅備用 CPU 處于 SYNCUP 系統狀態) -
31 伙伴 CPU 的狀態未知(如,伙伴 CPU 不可用) -
32 - -
33 STOP 系統狀態 -
34 預留 -
35 STARTUP 系統狀態 -
36 預留 -
37 RUN-Solo 系統狀態 -
38 SYNCUP 系統狀態 -
39 預留 -
40 RUN-Redundant 系統狀態 -

示例:在全局DB中創建三個變量和一個"Diag"結構(數據類型為DIS),用來保存數據,如圖7所示:

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

圖7. 在全局DB中創建變量

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

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

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

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

在參數DIAG("Diag")中,診斷信息將在結構(DIS數據類型)中輸出。

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

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

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

OwnState:根據值"3",要求維護。

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

OperatingState:輸出"0"。

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

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

圖9. GET_DIAG指令執行結果

讀取數據記錄

1. 讀取數據記錄指令的調用,如圖10所示。

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

圖10. 讀取數據記錄指令

2. 讀取數據記錄指令的使用。

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

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

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

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

目標區域 RECORD用來保存數據記錄,在參數 RECORD 中使用的結構(例如:組態、數據類型和長度)取決于由哪個模塊讀取哪條數據記錄。

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

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

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

在全局DB中創建七個變量和一個數組,用來保存數據。 如圖11所示:

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

圖11. 在全局DB中創建變量

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

如圖12所示:

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

圖12. 在OB1中調用RDREC指令

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

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

圖13. 在OB1中調用MOVE指令

診斷數據記錄的結構16#E00A,版本號BlockVersion=16#0100,如表4所示:

表4 數據記錄結構一

名稱 長度
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

診斷數據記錄的結構16#E00A,版本號BlockVersion=16#0101,如表5所示:

表5 數據記錄結構二

名稱 長度
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

輸入參數 REQ("Req")返回信號狀態"TRUE"時,啟動指令RDREC。RDREC指令將通過輸入參數ID(本例中為"283",表示 IO 設備前端模塊的硬件 ID),調用該模塊。通過輸入參數INDEX(本例中為"16#E00A"),

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

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

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

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

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

圖14. RDREC指令執行結果

此外,數據記錄16#E00A中包含以下信息:

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

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

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,表示用戶結構標識符;

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

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

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

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

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

圖15. RDREC指令執行結果(數據記錄信息"RecordDiag")

接收中斷

1. 接收中斷指令的調用,如圖16所示。

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

圖16. 接收中斷指令

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

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

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

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

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

表6 RALRM指令的參數MODE

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

示例:創建一個輸入模塊,在"PLC變量->系統常量"中,讀取輸入模塊的硬件標識符。并通過輸入參數F_ID("F_ID")存儲該硬件標識符。

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

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

圖17 組態輸入模塊的診斷信息

在全局DB中創建七個變量,和結構"Tinfo"和"Ainfo"進行數據存儲,創建數據類型為"TI_DiagnosticInterrupt"的結構"Tinfo",如圖18所示:

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

圖18. 在全局DB中創建變量

創建診斷錯誤中斷OB82,如圖19所示:

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

圖19. 創建OB82

在OB82中調用RALRM指令,并連接參數,如圖20所示:

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

圖20. 在OB82中調用RALRM指令

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

RALRM指令將通過輸入參數F_ID("F_ID")調用該輸入模塊。指令RALRM將根據輸入參數MODE("Mode")的值"2",檢查中斷是否由該輸入模塊產生。如果中斷來自該輸入模塊("F_ID"和"ID"相同),

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

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

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

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

圖21.RALRM指令執行結果

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

OB82啟動信息:

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

OB82管理信息:

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

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

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

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

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

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

圖22.TINFO參數的詳細信息

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

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

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

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

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

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

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

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

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

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

圖23.AINFO參數的詳細信息

注:AINFO變量建議使用非優化數據塊,如使用優化塊,需要使用BYTE類型的數組,以免數據發生錯亂。

生成用戶診斷報警

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

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

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

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

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

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

當 Mode = 1 時:創建到達的報警。

當 Mode = 2 時:創建離去的報警。

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

條目在診斷緩沖區中同時創建,而報警將進行異步傳送。

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

示例:在全局DB中創建五個變量和一個"AssocValues"結構(數據類型為AssocValues),用來保存數據,如圖25所示:

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

圖25. 在全局DB中創建變量

在OB1中調用Gen_UsrMsg指令,并連接參數,如圖26所示:

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

圖26. 在OB1中調用Gen_UsrMsg指令

使用"PLC報警文本列表->文本列表"條目為報警創建文本列表和文本列表條目。

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

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

分配報警參數,如圖27所示:

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

圖27. 分配報警參數

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

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

AssocValues("AssocValues")傳送報警的關聯值。

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

編號為"7"的關聯值以INT數據類型讀取。該編號對應于"AssocValues"結構的參數Value[5]。

關聯值將作為一個十進制數輸出。十進制數被限制為五位數。

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

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

圖28. Gen_UsrMsg指令執行結果

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

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

圖29. 診斷緩沖區中輸入的報警

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

常見問題

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

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

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

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

圖30. "LED"指令執行結果

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

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

RALRM指令必須要在中斷OB中調用嗎?

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

需要確保在不同OB中調用RALRM指令時使用不同的背景數據塊。

使用Gen_UsrMsg指令如何定義文本列表中的相關值?

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

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

圖31. 文本列表中定義相關值

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

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

圖32. 相關值中的<元素類型>

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

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

圖33. 相關值中的<格式規范>






審核編輯:劉清

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

    關注

    5031

    文章

    13721

    瀏覽量

    472174
  • LED指示燈
    +關注

    關注

    2

    文章

    94

    瀏覽量

    13189
  • S7-1200
    +關注

    關注

    11

    文章

    333

    瀏覽量

    18455

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

    S7-1200S7-1200 之間的以太網通信可以通過 UDP 協議來實現。本列中使用TSEND_C,TRCV_C指令建立雙方的UDP
    的頭像 發表于 01-10 09:19 ?7124次閱讀

    西門子PLC S7-1200診斷功能

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

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

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

    S7-1200運動控制的結構及原理

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

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

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

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

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

    關于S7-1200S7-1200之間UDP的通信與仿真

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

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

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

    如何利用指令讀取S7-1200 PLC的系統時間?

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

    S7-1200 CPUS7-300 CP STEP7 UDP通信

    S7-1200S7-300 CP 之間的以太網通信可以通過 UDP 協議來實現,使用的通信指令是在
    的頭像 發表于 04-08 10:48 ?2671次閱讀

    S7-1200 CPUS7-300 CP TIA UDP通信

    S7-1200S7-300 CP 之間的以太網通信可以通過 UDP 協議來實現,使用的通信指令是在
    的頭像 發表于 04-08 10:49 ?2747次閱讀

    S7-1200S7-300的選型區別

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

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

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

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

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

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

    了最新的技術,為用戶提供了更為高效、靈活的控制方案。本文將詳細介紹S7-1200 PLC的指令系統,包括其指令分類、具體指令功能以及在實際應用中的優勢。
    的頭像 發表于 06-18 14:52 ?4616次閱讀
    主站蜘蛛池模板: 亚洲一区二区三区在线视频 | 久久九九国产精品怡红院 | 美女被免费视频的网站 | 日韩毛片免费视频一级特黄 | 精品免费福利视频 | 日本成本人三级在线观看2018 | 久久成人影视 | 成人av在线电影 | 国产破苞合集 magnet | 二级黄的全免费视频 | 精品国产乱子伦一区 | 成人a在线观看 | 天天干天天操天天干 | 色播在线永久免费视频网站 | 国产成人mv 在线播放 | 99热色| 色婷婷成人 | 久久国内精品视频 | 在线视频 亚洲 | 色老头免费视频 | 黄色小视频日本 | 97超频国产在线公开免费视频 | 日本高清不卡视频 | 扒开末成年粉嫩的小缝强文 | 影视精品网站入口 | 日本三级带日本三级带黄首页 | 69日本xxⅹxxxxx19 | 黑粗硬大欧美视频 | 国内一级特黄女人精品片 | 日日摸人人看97人人澡 | 99 久久99久久精品免观看 | asian极品呦女爱爱 | 躁天天躁中文字幕在线 | 三级精品视频在线播放 | 久久精品国产大片免费观看 | 亚洲成在人天堂一区二区 | 五月天毛片 | 27pao强力打造高清免费高 | 人人人人澡| 九色视频在线看 | 丁香婷婷啪啪 |