例如:
#RetValue_konfiguriert := DeviceStates(LADDR := "Local~PROFINET_IO-System", MODE := 1, STATE := #State_konfiguriert);
#RetValue_stoerung := DeviceStates(LADDR := "Local~PROFINET_IO-System", MODE := 2, STATE := #State_stoerung);
#RetValue_deaktiviert := DeviceStates(LADDR := "Local~PROFINET_IO-System", MODE := 3, STATE := "DB_ARG".State_deaktiviert);
#RetValue_vorhanden := DeviceStates(LADDR := "Local~PROFINET_IO-System", MODE := 4, STATE := #State_vorhanden);
#RetValue_wartung := DeviceStates(LAD:= "Local~PROFINET_IO-System", MODE := 5, STATE := #State_wartung);
指令“DeviceStates”用于查詢 IO 系統(tǒng)中所有模塊的特定狀態(tài)信息,即:
PROFINET IO 系統(tǒng)中所有 IO 設(shè)備的狀態(tài)信息
或 DP 主站系統(tǒng)中所有 DP 從站的狀態(tài)信息
輸出的布爾值指示所選狀態(tài)適用于的模塊。例如,讀取當(dāng)前 PROFINET IO 系統(tǒng)中禁用的 IO 設(shè)備。
此信息的顯示還依賴于要讀取的狀態(tài)信息是否適用于至少一個(gè) IO 設(shè)備或 DP 從站??稍谘h(huán) OB 以及中斷 OB(例如,OB82 - 診斷中斷)中調(diào)用此指令。
LADDR | Input | HW_IOSYSTEM | PROFINET IO 或 DP 主站系統(tǒng)的硬件標(biāo)識(shí)符 |
MODE | Input | UINT | 選擇要讀取的狀態(tài)信息 |
RET_VAL | Return | INT | 指令的狀態(tài) |
STATE | InOut | VARIANT | IO 設(shè)備或 DP 從站的狀態(tài)緩沖區(qū) |
參數(shù) LADDR
使用 LADDR 參數(shù)通過(guò)硬件標(biāo)識(shí)符選擇 PROFINET IO 或 DP 主站系統(tǒng)。
硬件標(biāo)識(shí)符位于:
PROFINET IO 或 DP 主站系統(tǒng)屬性的網(wǎng)絡(luò)視圖中。
或數(shù)據(jù)類型為 HW_IOSYSTEM 的所列系統(tǒng)常量的 PLC 變量表中。
參數(shù) MODE
使用 MODE 參數(shù)可讀取狀態(tài)信息??勺x取整個(gè) PROFINET IO 或 DP 主站系統(tǒng)的下列一條狀態(tài)信息:
1:IO 設(shè)備/DP 從站已組態(tài)
2:IO 設(shè)備/DP 從站故障
3:IO 設(shè)備/DP 從站已禁用
4:IO 設(shè)備/DP 從站存在
5:出現(xiàn)問(wèn)題的 IO 設(shè)備/DP 從站。例如:
維護(hù)要求或建議
不可訪問(wèn)
不可用
出現(xiàn)錯(cuò)誤
參數(shù) STATE
通過(guò) STATE 參數(shù),輸出由 MODE 參數(shù)選擇的 IO 設(shè)備/DP 從站的狀態(tài)。
如果使用 MODE 選擇的狀態(tài)適用于 IO 設(shè)備/DP 從站,則在 STATE 參數(shù)中將下列位設(shè)置為“1”:
位 0 = 1:組顯示。至少有一個(gè) IO 設(shè)備/DP 從站的第 n 位設(shè)置為“1”。
位 n = 1:通過(guò) MODE 選擇的狀態(tài)將應(yīng)用到 IO 設(shè)備/DP 從站。
對(duì)于 PROFINET IO 系統(tǒng),第 n 位對(duì)應(yīng)于相應(yīng) IO 設(shè)備的設(shè)備編號(hào)(請(qǐng)參見(jiàn)設(shè)備視圖和網(wǎng)絡(luò)視圖中的 PROFINET 接口屬性)。
對(duì)于 PROFINET DP 系統(tǒng),第 n 位對(duì)應(yīng)于 DP 從站的 PROFIBUS 地址(請(qǐng)參見(jiàn)設(shè)備視圖和網(wǎng)絡(luò)視圖中的 DP 從站屬性)。
使用“BOOL”或“Array of BOOL”作為數(shù)據(jù)類型:
要僅輸出狀態(tài)信息的組顯示位,可在 STATE 參數(shù)中使用 BOOL 數(shù)據(jù)類型。
要輸出所有 IO 設(shè)備/DP 從站的狀態(tài)信息,請(qǐng)使用下列長(zhǎng)度的 Array of BOOL:
對(duì)于 PROFINET IO 系統(tǒng):1024 位
對(duì)于 DP 主站系統(tǒng):128 位
示例 - 讀取 PROFINET IO 主站系統(tǒng)中是否存在 IO 設(shè)備
在以下示例中,將在 IO 系統(tǒng)中查詢是否存在 IO 設(shè)備。該 IO 系統(tǒng)中包含兩個(gè) S7-1500 系列的 CPU。“PLC_14”CPU 將包含程序,其中包括“DeviceStates”指令?!癙LC_13”CPU 將組態(tài)為一個(gè) IO 設(shè)備。
在“PLC_14”CPU 中:在全局?jǐn)?shù)據(jù)塊中創(chuàng)建三個(gè)變量和一個(gè)“mySTATE”結(jié)構(gòu)(數(shù)據(jù)類型為 Array of BOOL),用于存儲(chǔ)數(shù)據(jù)。
在“PLC_14”CPU 中:在循環(huán) OB 中調(diào)用該指令。互連該指令的參數(shù),如下所示:
?
在“PLC_13”CPU 中:使用 CPU 屬性將此 CPU“PLC_13”設(shè)為 IO 設(shè)備。IO 設(shè)備接收設(shè)備編號(hào) 1。
?
IO 系統(tǒng)顯示在網(wǎng)絡(luò)視圖中。
在“PLC_14”CPU 中:通過(guò)參數(shù) LADDR(“myLADDR”)使“DeviceStates”指令了解 IO 系統(tǒng)的硬件標(biāo)識(shí)符。
根據(jù)參數(shù) MODE(“myMODE”)的值“4”,在 IO 系統(tǒng)中搜索 IO 設(shè)備。
在參數(shù) STATE(“mySTATE”)中,輸出 IO 設(shè)備是否存在(基于參數(shù) MODE 的值)。位 0 作為組值,指示 IO 設(shè)備存在。位 1 指示存在設(shè)備編號(hào)為 1 的 IO 設(shè)備。
輸出參數(shù) RET_VAL(“returnValue”)用于指示處理無(wú)錯(cuò)誤。
示例 - 讀取 PROFINET IO 主站系統(tǒng)中發(fā)生故障的站
在一個(gè) PROFINET IO 系統(tǒng)中,包含設(shè)備編號(hào)為 1、2、3 和 4 的 4 個(gè) IO 設(shè)備。其中,編號(hào)為 2 的 IO 設(shè)備故障。
對(duì)于 MODE = 2(故障/無(wú)故障)的 PROFINET IO 系統(tǒng),執(zhí)行“DeviceStates”指令。
在 STATE 參數(shù)中設(shè)置了下列位:
位 0 = 1:至少有一個(gè) IO 設(shè)備發(fā)生了故障。
位 1 = 0:設(shè)備編號(hào)為 1 的 IO 設(shè)備未發(fā)生故障。
位 2 = 1:設(shè)備編號(hào)為 2 的 IO 設(shè)備發(fā)生了故障。
位 3 = 0:設(shè)備編號(hào)為 3 的 IO 設(shè)備未發(fā)生故障。
位 4 = 0:設(shè)備編號(hào)為 4 的 IO 設(shè)備未發(fā)生故障。
位 5 = 0:不相關(guān)
位 6 = 0:不相關(guān)
審核編輯:劉清
-
plc
+關(guān)注
關(guān)注
5006文章
13107瀏覽量
461458 -
Profinet
+關(guān)注
關(guān)注
6文章
1035瀏覽量
23283
原文標(biāo)題:VASS06使用的新系統(tǒng)函數(shù):DeviceStates: 讀取 IO 系統(tǒng)的模塊狀態(tài)信息
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論