1.s7-pdiag軟件簡單介紹
診斷消息用于指示操作人員系統當前的運行狀態和故障的位置及原因。通常情況下取中的一個位信號作為觸發信號,在中設置相應的報警文本,當信號為1時,表示有故障,彈出設置的報警文本,當信號為0時,故障消除,報警文本顯示故障消除并歸檔,這樣的報警消息由hmi掃描plc中故障位的狀態,占用大量的通信負荷,同樣通過符號表產生的消息同樣由cpu掃描消息觸發位信號,如圖1所示,消息的類型為“scan”,掃描的間隔可以設定。

圖1 由符號表產生的消息
采用與程序塊調用等相關的報警消息由plc觸發(例如調用sfb34、35或sfc17、18、107、108等發送消息,s7-400 cpu支持sfb的調用)只有當故障觸發時才發送報警消息,由于plc與hmi集成在一個項目下,plc中定義文本消息存儲于hmi中,故障觸發時只發送位狀態而不發送整個文本消息,減少通信負荷,消息的類型為“alarm_x”(x:為s、8、8p等不同的子類型),如圖2所示:

圖2 塊調用產生的消息
s7-pdiag軟件通過內部調用系統函數sfc17、18、107、108完成消息的傳送(sfc107、108替代sfc17、18,與之相比帶有通信資源管理功能)。
2.s7-pdiag軟件診斷功能的種類
s7-pdiag包含三種診斷功能,分別是地址監控(address monitoring)、全局監控(bbbbbb monitoring或general monitoring)和運動監控(motion monitoring),下面分別介紹這三種診斷功能。
2.1 地址監控
地址監控功能監控一個位信號的狀態變化,可以設定一個沿信號和電平信號,設置界面如圖3所示:

圖3 地址監控功能設置界面
在“initial diagnostic address”設置監控的地址,如m1.1,然后選擇監控的信號,如沿信號和電平信號,如果激活“delay”功能,則需要設定相應的延遲時間,表示如果監控信號變化,將延遲設定的時間后觸發,s7-pdiag在程序內部調用sfc64,時間格式為iec標準,例如t#1h19m12s100ms 表示的時間值為1小時19分12秒100毫秒,配置的延時定時器的個數沒有限制。在“meassage”欄中設定信號觸發的消息和優先級,配置完成后點擊“ok”鍵確認。
2.2 全局監控
全局地址監控功能監控一個表達式,如果表達式結果為1則觸發消息,設置界面如圖4所示:

圖4 全局監控功能設置界面
在“initial diagnostic address”設置監控的初始地址,如m1.1,在“monitoring definition”中定義事件觸發的條件,觸發條件必須使用s7-pdiag語言編寫,s7-pdiag語言包含下列基本指令:
and 與操作,例如表達式為 m1.1 and m1.2,如果m1.1與m1.2為1,表達式結果為1;
ondt 執行信號on延時,例如表達式為ondt(m1.1,t#2s),如果m1.1為1并延時2秒后表達式結果為1;
en 存入下降沿結果,例如表達式為en(m1.1),m1.1產生下降沿時表達式結果為1,m1.1再次為1時,表達式結果為0;
ep存入上升沿結果,與en相反;
not 取反,例如表達式為not m1.1, 如果m1.1為0時表達式結果為1;
or 或操作,例如表達式為 m1.1 or m1.2,如果m1.1與m1.2其中一個為1,表達式結果為1;
srt置位復位延時,例如表達式為srt(m1.1,m1.2 t#2s),如果m1.1為1(沿信號)2秒后,表達式結果為1,如果如果m1.1再次為1,表達式結果為0,2秒后表達式結果為1,如果m1.2為1(沿信號),表達式結果為0。
xor異或,例如表達式為m1.1 xor m1.2,當m1.1與m1.2不相同時表達式結果為1。
如果在一個表達式中使用多個指令,指令的優先級參考表1
表1: s7-pdiag 指令優先級
| 指令 | 優先級 |
| () | 1 |
| ep, en, ondt, srt | 2 |
| not | 3 |
| and | 4 |
| xor | 5 |
| or | 6 |
在“meassage”欄中設定信號觸發的消息和優先級,配置完成后點擊“ok”鍵確認。
2.3 運動監控
運動監控對用戶編寫的定位過程進行監控,運動監控有下列幾種監控方式:
1)執行監控(bbbbbb monitoring)
當啟動命令執行后,在設定的時間內沒有到達定位的位置(限位信號),觸發消息的生成。執行監控的設置界面如圖5所示:

圖5 運動監控-執行監控功能設置界面
執行監控界面中使用s7-diag語言預先設定觸發條件并不可以修改,如圖5中,如果m1.2為1(執行),20秒后m1.1(限位開關)沒有到達,觸發報警消息。
2)啟動監控(startup monitoring)
如果啟動命令發出后,在設定的時間內沒有動作,則觸發消息,這與用戶生成的啟動失敗的報警過程相同,啟動監控的設置界面如圖6所示:

圖6 運動監控-啟動監控功能設置界面
啟動監控界面中使用s7-diag語言預先設定觸發條件并不可以修改,如圖6中,如果m1.2為1(執行),1秒后m1.1(限位開關)為1(物體沒有移動),觸發報警消息。
3)定位監控(rebbbbbb monitoring)
當定位任務完成后但是并沒有達到要求的位置,在設定的時間延時后觸發報警消息,滿足定位范圍需要附加的限位開關,定位監控的設置界面如圖7所示:

圖7 運動監控-定位監控功能設置界面
定位監控界面中使用s7-diag語言預先設定觸發條件并不可以修改,如圖7中,如果m1.2為1(定位完成),m1.1(限位開關)不為1(輔助限位開關),1秒后觸發報警消息。
4)連鎖監控(interlock monitoring)
檢測控制命令觸發后連鎖條件是否滿足,連鎖監控的設置界面如圖8所示:

圖8 運動監控-連鎖監控功能設置界面
連鎖監控界面中使用s7-diag語言預先設定觸發條件并不可以修改,如圖8中,如果m1.2為1(命令觸發)1秒后,m1.1(連鎖條件)不滿足(為0),觸發報警消息。
注意:
運動監控只適合用戶編寫的簡單位置控制,所有監視通過行程開關、接近開關等來實現,西門子所有定位模塊都包含上述故障監控,不需要使用s7-diag軟件實現。
3.替代功能
使用替代功能可以在消息文本中插入故障觸發時某一個過程值或在編譯時生成替代文本。
3.1 插入過程值
在消息文本中可以插入一個故障觸發時的過程值,如圖8所示,在“record associated value”定義一個過程值,如md12,在文本中使用@1x%顯示格式@替代md12,顯示格式可以參考s7_daig手冊,例如6d表示以十進制顯示,數值最大為6位,u表示無符號十進制數,沒有位數限制。例如輸入的消息文本為“bbbbbb failure,pressure value = @1x%6d@”,如果md12為123,在hmi顯示的文本為“bbbbbb failure,pressure value =123”。
3.2 文本替代值
如果監控一個fb塊的形參,這個fb塊又在其它的fb塊中作為形參多次調用,這樣在初始的fb塊定義的消息文本只能作為一個模板,無法表示其它多次嵌套調用該fb而生成的消息文本,在消息文本模板中使用$$替代符號$$,例如“u2”表示在編譯時使用作為形參的fb名稱替代u,2表示fb被調用2次(兩個單元),詳細替代符號參考s7_daig手冊。
4.配置一個消息
下面以例子的方式介紹消息的生成。
1)首先在lad/stl/fbd程序編輯器,點擊需要監控的地址,按鼠標右鍵,選擇“special bbbbbb properties”->;“monitoring”進入消息配置界面,如圖9所示:

圖9 監控設置界面
在“template”中選擇監控的類型,點擊“new”鍵進入消息配置界面(參考圖3~圖8),按照模板提供的選擇配置消息,配置完成后點擊“ok”鍵確認。按上述的方法配置所需的消息。
2)選擇block文件夾,點擊“options”->; “configure process diagnostics”命令進入過程診斷配置界面如圖10所示:

圖10 過程診斷配置界面
點擊菜單“options”->;“customize”設置編譯選項,如圖11所示:

圖11 過程診斷編譯設定界面
選擇“using auxiliary networks”配置附加程序段選項后,如觸發故障,可以在hmi中顯示引起故障的程序和原因,如果故障原因帶有m和q將會被輸入替代,參考如下程序:
a m1.1
a i1.1
= m1.2 //監控點
a i1.2
= m1.1
如果m1.2為1觸發報警消息,在hmi顯示故障程序為:
a i1.2
a i1.1
= m1.2
如果沒有選擇該選項,則在hmi顯示故障程序為:
a m1.1
a i1.1
= m1.2
在“default settings”欄中設定故障檢測和初始狀態檢測需要調用的功能塊和相應的報警數據塊,如圖12所示:

圖12 缺省設置界面
設置完成后點擊確認鍵推出。
3)點擊“options”->;“ exclusion addresses”或termination addresses配置排除地址(exclusion addresses)和終止地址(termination addresses)。
排除地址和終止地址都是作用于附加程序段(auxiliary networks)的,如果在排除地址設置中選擇某個地址,例如i1.1,如果故障觸發時,在hmi顯示故障程序中將不在顯示i1.1。
選擇生成附加程序段后,所有的故障程序在hmi中將直接顯示輸入地址,如果在某段程序中不需要顯示附加程序段,則可以使用終止地址,例如選擇m1.1,當m1.1為1時,同時故障觸發,在hmi顯示的故障程序為。
a m1.1
a i1.1
= m1.2
4)編譯過程診斷,選擇菜單命令“process diagnostics”->;“compile completely”,生成相應的診斷程序。
5)在ob1中調用fb44(按照缺省設置),fb44內部自動調用fb45,fb44的調用示例如下:
call fb 44 , db44
pdiagzyklus:=#ob1_scan_1 //ob1的開始信息。
5.顯示一個消息
在相同的項目中插入simatic op站 雙擊該站,打開protool項目。選擇面板類型后,點擊“ok”鍵完成項目的創建,然后在protool中的“controllers”中建立面板和plc的通訊連接。
點擊菜單命令“system”->;“proagent”將配置的診斷信息添加到hmi系統中,如圖13所示:(在protool中需要安裝proagent軟件,否則在菜單“system”下沒有“proagent”項。proagent軟件可在 protool/pro 歐洲版的cd中 找到)

圖13 hmi proagent設置界面
配置完成后點擊“ok”鍵確認。
在畫面中加入消息顯示窗口,如果觸發故障事件,用戶配置的消息文本將顯示在消息窗口中。
如果需要可以插入“detail view”窗口,在該窗口中可以顯示故障的觸發時間(故障程序);“unit view”顯示s7-pdiag提供的udt_unit和 udt_s_unit信息;“motion view”顯示s7-pdiag提供的udt _motion的信息,udt的數據格式不能修改,畫面的功能這里不再詳細介紹。










