例如:
#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 系統中所有模塊的特定狀態信息,即:
PROFINET IO 系統中所有 IO 設備的狀態信息
或 DP 主站系統中所有 DP 從站的狀態信息
輸出的布爾值指示所選狀態適用于的模塊。例如,讀取當前 PROFINET IO 系統中禁用的 IO 設備。
此信息的顯示還依賴于要讀取的狀態信息是否適用于至少一個 IO 設備或 DP 從站。可在循環 OB 以及中斷 OB(例如,OB82 - 診斷中斷)中調用此指令。
LADDR | Input | HW_IOSYSTEM | PROFINET IO 或 DP 主站系統的硬件標識符 |
MODE | Input | UINT | 選擇要讀取的狀態信息 |
RET_VAL | Return | INT | 指令的狀態 |
STATE | InOut | VARIANT | IO 設備或 DP 從站的狀態緩沖區 |
參數 LADDR
使用 LADDR 參數通過硬件標識符選擇 PROFINET IO 或 DP 主站系統。
硬件標識符位于:
PROFINET IO 或 DP 主站系統屬性的網絡視圖中。
或數據類型為 HW_IOSYSTEM 的所列系統常量的 PLC 變量表中。
參數 MODE
使用 MODE 參數可讀取狀態信息??勺x取整個 PROFINET IO 或 DP 主站系統的下列一條狀態信息:
1:IO 設備/DP 從站已組態
2:IO 設備/DP 從站故障
3:IO 設備/DP 從站已禁用
4:IO 設備/DP 從站存在
5:出現問題的 IO 設備/DP 從站。例如:
維護要求或建議
不可訪問
不可用
出現錯誤
參數 STATE
通過 STATE 參數,輸出由 MODE 參數選擇的 IO 設備/DP 從站的狀態。
如果使用 MODE 選擇的狀態適用于 IO 設備/DP 從站,則在 STATE 參數中將下列位設置為“1”:
位 0 = 1:組顯示。至少有一個 IO 設備/DP 從站的第 n 位設置為“1”。
位 n = 1:通過 MODE 選擇的狀態將應用到 IO 設備/DP 從站。
對于 PROFINET IO 系統,第 n 位對應于相應 IO 設備的設備編號(請參見設備視圖和網絡視圖中的 PROFINET 接口屬性)。
對于 PROFINET DP 系統,第 n 位對應于 DP 從站的 PROFIBUS 地址(請參見設備視圖和網絡視圖中的 DP 從站屬性)。
使用“BOOL”或“Array of BOOL”作為數據類型:
要僅輸出狀態信息的組顯示位,可在 STATE 參數中使用 BOOL 數據類型。
要輸出所有 IO 設備/DP 從站的狀態信息,請使用下列長度的 Array of BOOL:
對于 PROFINET IO 系統:1024 位
對于 DP 主站系統:128 位
示例 - 讀取 PROFINET IO 主站系統中是否存在 IO 設備
在以下示例中,將在 IO 系統中查詢是否存在 IO 設備。該 IO 系統中包含兩個 S7-1500 系列的 CPU。“PLC_14”CPU 將包含程序,其中包括“DeviceStates”指令?!癙LC_13”CPU 將組態為一個 IO 設備。
在“PLC_14”CPU 中:在全局數據塊中創建三個變量和一個“mySTATE”結構(數據類型為 Array of BOOL),用于存儲數據。
在“PLC_14”CPU 中:在循環 OB 中調用該指令?;ミB該指令的參數,如下所示:
?
在“PLC_13”CPU 中:使用 CPU 屬性將此 CPU“PLC_13”設為 IO 設備。IO 設備接收設備編號 1。
?
IO 系統顯示在網絡視圖中。
在“PLC_14”CPU 中:通過參數 LADDR(“myLADDR”)使“DeviceStates”指令了解 IO 系統的硬件標識符。
根據參數 MODE(“myMODE”)的值“4”,在 IO 系統中搜索 IO 設備。
在參數 STATE(“mySTATE”)中,輸出 IO 設備是否存在(基于參數 MODE 的值)。位 0 作為組值,指示 IO 設備存在。位 1 指示存在設備編號為 1 的 IO 設備。
輸出參數 RET_VAL(“returnValue”)用于指示處理無錯誤。
示例 - 讀取 PROFINET IO 主站系統中發生故障的站
在一個 PROFINET IO 系統中,包含設備編號為 1、2、3 和 4 的 4 個 IO 設備。其中,編號為 2 的 IO 設備故障。
對于 MODE = 2(故障/無故障)的 PROFINET IO 系統,執行“DeviceStates”指令。
在 STATE 參數中設置了下列位:
位 0 = 1:至少有一個 IO 設備發生了故障。
位 1 = 0:設備編號為 1 的 IO 設備未發生故障。
位 2 = 1:設備編號為 2 的 IO 設備發生了故障。
位 3 = 0:設備編號為 3 的 IO 設備未發生故障。
位 4 = 0:設備編號為 4 的 IO 設備未發生故障。
位 5 = 0:不相關
位 6 = 0:不相關
審核編輯:劉清
-
plc
+關注
關注
5011文章
13297瀏覽量
463376 -
Profinet
+關注
關注
6文章
1183瀏覽量
23411
原文標題:VASS06使用的新系統函數:DeviceStates: 讀取 IO 系統的模塊狀態信息
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論