如何讀取DP或PN總線上各站點的狀態?
可以使用 SFC51 'RDSYSST' 讀出 SSL 部分列表或SSL 部分列表的摘錄。
下面的配置在文中所附的例程中創建。下面的配置在文中所附的例程中創建:
圖01 在用戶程序(OB1)中,使用 SFC51 "RDSYSST" 讀出 CPU 的系統狀態列表。
REQ | INPUT? | BOOL | 啟動處理 |
SSL_ID | INPUT | WORD | 將要讀取的系統狀態列表或部分列表的SSL-ID。 |
INDEX | INPUT | WORD | 對象類型和編號 |
RET_VAL | OUTPUT | INT | 如果執行SFC時出錯,則RET_VAL參數將包含錯誤代碼。 |
BUSY | OUTPUT | BOOL | TRUE:尚未完成讀取 |
SSL_HEADER | OUTPUT | STRUCT | SSL_HEADER SSL_HEADER參數是一個如下定義的結構: SSL_HEADER: STRUCT LENTHDR:WORD N_DR:WORD END_STRUCT LENTHDR是SSL列表或SSL部分列表的數據記錄的長度。 如果僅讀取了SSL列表的標題信息,則N_DR包含屬于它的數據記錄數。 否則,N_DR包含傳送到目標區域的數據記錄數。 |
DR | OUTPUT | ANY | SSL列表讀取或SSL部分列表讀取的目標區域:?如果僅讀取了SSL列表的標題信息,則不能評估DR的值,而只能評估SSL_HEADER的值。?否則,LENTHDR和N_DR的乘積將指示已在DR中輸入了多少字節。 |
參數 SZL_HEADER
參數 SZL_HEADER 具有以下結構:
SZL_HEADER: | STRUCT | |
LENTHDR: | WORD | |
N_DR: | WORD | |
END_STRUCT |
LENTHDR 是 SZL 部分列表或 SZL 部分列表摘錄的數據記錄長度。
如果僅讀取了 SZL 部分列表的標頭信息,則 N_DR 包含屬于它的數據記錄數。
否則,N_DR 包含傳輸到目標區域的數據記錄數。
調用 SFC51 "RDSYSST" 時,通過輸入參數 SSL_ID 指定了用戶想讀取的系統狀態列表。使用此方法可讀出下列數據,例如:
模板標識。
模板 LED 指示燈狀態。
DP 主站系統或 PROFINET I/O 系統中,已經連接上 CPU 集成的 DP 或 PN 口的站點狀態。
所有有關 SSL_ID 的具體的可用信息請參看手冊 :“用于 S7300/400系統和 標準功能的系統軟件 卷1&2” 當調用 SFC51 "RDSYSST" 時,在輸入參數INDEX,要以16進制格式指定 PROFIBUS DP 主站系統或者PROFINET IO 系統的編號,PROFIBUS DP 主站系統的編號或者PROFINET IO 系統的編號可以在硬件配置中找到(見圖.01)。
SFC51 "RDSYSST" 的參數分配根據使用不同的 CPU 而不同:
CPU 有集成的 DP 接口但是沒有集成的以太網接口
在 PN/DP CPU 中調用 SFC51 "RDSYSST" 的例子參數
圖02
圖03 輸入 SSL_ID=694(HEX) 以確定 DP 主站系統或者 PROFINET IO 系統連接到 PN/DP CPU 站點的狀態。
指定所讀出的系統狀態列表數據(診斷數據)的存儲區域,診斷數據區大小為 258 字節。
SSL-ID為W#16#0x94的部分列表包含有關中央組態中的模塊機架及PROFIBUS DP主站系統/PROFINET IO控制系統的站的期望組態和實際組態的信息。
SSL-ID | 部分列表摘錄的SSL-ID:?W#16#0094: IO控制器系統的中央機架/站中的機架的期望狀態(狀態位 = 1:機架/站已組態)?W#16#0194: 已組態并已取消激活的IO控制器系統的站的激活狀態(狀態位 = 1)?W#16#0294: IO控制器系統的中央機架/站中的機架的實際狀態(狀態位 = 1:機架/站存在,處于激活狀態并且未出現故障)?W#16#0694: IO控制器系統的中央機架/站中的擴展單元的診斷狀態(狀態位 = 1:機架/站中至少有一個模塊出現故障或被取消激活) ?W#16#0794: IO控制器系統的中央機架/站的診斷/維護狀態(狀態位 = 0:無故障,無維護要求;狀態位 = 1:機架/站有問題,和/或有維護要求或維護請求)?W#16#0F94: 僅限報頭信息 |
INDEX | 0: 中央模塊 1-32:PROFIBUS DP上的分布式模塊 100-115:PROFINET IO上的分布式模塊 |
LENTHDR | 下列數據記錄的長度 |
N_DR | 下列數據記錄的長度 |
表 01 為 258 字節長的診斷數據結構:
內容 | 長度 | 解釋 |
index | 1 word |
0: 中央機架 1-31: 在 PROFIBUS DP 主站系統中的遠程模塊 100-115: 在 PROFINET IO 系統中的遠程模塊 |
status_0 | BOOL |
組信息 1: 下面狀態位最少有一個值為 1 0: 下面所有狀態位值為 0 |
status_1 | BOOL |
站 1 狀態 1: 站 1 故障(僅對 694 有效) |
status_2 | BOOL |
站2 狀態 1: 站2 故障(僅對 694 有效) |
... | ||
status_2047 | BOOL |
站2047 狀態 1: 站2047 故障(僅對 694 有效) |
表 01 最大可以確定 2047 個站的狀態。在診斷數據存儲區域中每個站需要 1 bit。
此外,需要另外 1 bit 作為組信息。
就是說在診斷數據存儲區域中,256 字節分配給每個站點的狀態,2 字節為索引(關于 DP 主站系統或者 PROFINET IO 系統的信息)。
下面的例程中包含一個完整的 S7 站硬件組態,用戶程序中有 SFC51 "RDSYSST" 的調用。 SSL_Status_PNDP.zip( 686 KB )
在沒有集成以太網口的 CPU 中調用 SFC51 "RDSYSST" 的例子參數
圖04 輸入 SSL_ID=292(HEX) 以確定連接到只有集成 DP 接口的 CPU 所帶的 DP 主站系統中的站點狀態。
指定所讀出的系統狀態列表數據(診斷數據)的存儲區域,診斷數據區大小為 16 字節。
表 02 為 16 字節長的診斷數據結構:
內容 | 長度 | 解釋 |
status_0 | 1 byte |
Bit 0:基本單元 (INDEX=0) 或站 1 Bit 1:擴展設備或站 2 ... Bit 7: 擴展設備或站 8 ... |
status_1 | 1 byte |
Bit 0: 擴展設備或站 9 Bit 1: 擴展設備或站 10 ... Bit 7: 擴展設備或站 16 ... |
status_2 | 1 byte |
Bit 0: 擴展設備或站 17 Bit 1: 擴展設備或站 18 ... Bit 7: 擴展設備或站 24 |
status_3 | 1 byte |
Bit 0: 擴展設備或站 25 Bit 1: 擴展設備或站 26 ... Bit 6: S5 區域中的擴展設備或站 31 Bit 7: S5 區域中的擴展設備或站 32 |
... | ||
status_15 | 1 byte |
Bit 0: S5 區域中的擴展設備或站 121 Bit 1: S5 區域中的擴展設備或站 122 ... Bit 7: S5 區域中的擴展設備或站 128 |
審核編輯:劉清
-
plc
+關注
關注
5010文章
13271瀏覽量
463056 -
西門子
+關注
關注
94文章
3034瀏覽量
115779 -
LED指示燈
+關注
關注
2文章
94瀏覽量
12654 -
以太網接口
+關注
關注
0文章
147瀏覽量
17092 -
SFC
+關注
關注
0文章
44瀏覽量
11289
原文標題:西門子PLC: 如何讀取DP或PN總線上各站點的狀態?V7.22
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論