tft每日頭條

 > 科技

 > 怎樣添加profinet模塊

怎樣添加profinet模塊

科技 更新时间:2025-01-22 12:59:48

前幾天讀書群中有小夥伴提出一個實際項目的客戶需求:在HMI屏幕上顯示當前系統的子站狀态,比如哪些站點已經組态?哪些站點在報錯?這涉及到如何對PROFINET子站進行診斷。今天這篇文章,我給出一種解決方案。

怎樣添加profinet模塊(怎樣編程實現對PROFINET子站的診斷)1

在西門子S7-1200/1500硬件條件下,我們可以使用診斷指令“DeviceStates”來實現對子站的診斷功能,具體方法如下:

在博途指令列表的“擴展指令”→“診斷”中找到DeviceSTATEs指令,其基本語法如下:

DeviceStates(LADDR:=_hw_iosystem_in_, MODE:=_uint_in_, STATE:=_variant_inout_)

指令中各參數含義如下表所示:

名稱

類别

數據類型

說明

LADDR

輸入

HW_IOSYSTEM

PROFINET IO硬件标識符

MODE

輸入

UInt

要讀取的狀态信息類别

STATE

輸入/輸出

Variant

狀态緩存區

參數MODE有如下幾種取值:

  • 1=已經組态的I/O設備;
  • 2=出現故障的I/O設備;
  • 3=被禁用的I/O設備;
  • 4=存在的I/O設備或者說找到的I/O設備;
  • 5=出問題的I/O設備,比如不可用,不可訪問的;

STATE是布爾型數組,其第0個元素表示組的狀态,若其值=1,則表示數組中至少有一個數據滿足查詢要求;從1個元素開始,表示相應編号的子站是否滿足查詢要求,1=滿足,0=不滿足。

回到文章開頭的問題,我們使用DeviceStates來查詢三種狀态:已經組态的子站(MODE=1)、成功找到的子站(MODE=4)及出現故障的子站(MODE=2),将指令執行的結果存放到全局數據塊中。

為了方便,新建用戶自定義數據類型:typeNetDiagnostic,它是布爾型數組,如下圖所示:

怎樣添加profinet模塊(怎樣編程實現對PROFINET子站的診斷)2

新建全局數據塊NetDiagnosticDB,其元素IODeviceState是有三個元素的數組,其數據類型為用戶自定義類型typeNetDiagnostic,如下圖所示:

怎樣添加profinet模塊(怎樣編程實現對PROFINET子站的診斷)3

新建函數塊FB5009_NetDiagnostic,其參數如下:

怎樣添加profinet模塊(怎樣編程實現對PROFINET子站的診斷)4

代碼如下:

怎樣添加profinet模塊(怎樣編程實現對PROFINET子站的診斷)5

在主程序中調用該函數塊,并對參數進行賦值,代碼如下:

怎樣添加profinet模塊(怎樣編程實現對PROFINET子站的診斷)6

說明:參數“270”是當前組态的PROFINET的硬件标識符。

編譯下載程序運行,在線查看運行結果。

在我的當前系統中組态了三個子站,站号分别是11,13和16,如下圖所示:

怎樣添加profinet模塊(怎樣編程實現對PROFINET子站的診斷)7

已經成功找到的站點也是11,13和16 ,如下圖所示:

怎樣添加profinet模塊(怎樣編程實現對PROFINET子站的診斷)8

出故障/在報錯的站點是11,如下圖所示:

怎樣添加profinet模塊(怎樣編程實現對PROFINET子站的診斷)9

這樣就可以通過觸摸屏(HMI)向外展現站點的診斷信息,可以通過動畫演示,讓人一目了然的看到所有站點的狀态。

好了,關于PROFINET子站的診斷就先介紹到這裡。我的書《西門子S7-1200/1500 PLC SCL語言編程 ——從入門到精通》的第11.5.3節也對這個指令有詳細的介紹,還配有相關的視頻。如果你感興趣的話,可以看看下面的鍊接:

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved