系統非常穩定,所有程式碼“立正”不要亂動

工業控制涉及到訊號系統、控制系統、執行系統,控制系統裡又有各個控制器、HMI、通訊等,控制器裡還包括硬體配置、通訊、異常響應、使用者程式等多個部分,HMI裡可能有指令碼、報表等。這些就鑄就了控制系統的複雜性。當然,經過這麼多年的發展,工控系統也不斷在進行規範化、模組化,減少系統間的耦合,降低系統的難度,提高系統的可靠性。

系統非常穩定,所有程式碼“立正”不要亂動

但是,當一個系統(或裝置)有比較多的關聯裝置,並且相互關係較多時,其複雜性還是比較高的,控制系統軟硬體設計都不是容易的事情。

關於軋機的除錯

比如說,某軋機需要隨著軋件的前進而不斷改變軋機的速度,來控制不同部位的延伸量時,就要判斷軋件的位置,並根據預設好的邏輯和引數來計算軋機的速度,實時下發給傳動裝置進行執行。軋件的位置判斷需要一些感測器來進行初始計算,然後是根據軋製電流來進行理論推測。他們互相交織在一起,並且要考慮軋件咬入異常等情況,這種情況下,我們修改任何一點邏輯,都可能引起意想不到的不良反應,反映在現場就是軋製質量異常、堆鋼、甚至斷鋼等損失。

對於這樣的軋機程式,其

修改流程比較嚴格

:方案設計、專家審查、離線修改和確認、線上修改確認、生產跟蹤、備份等,一旦發現異常,還要馬上恢復原備份,維持生產。

有一次,我們

為了增加感測器訊號的可靠性

,為感測器增加了一點軟體濾波,卻

導致了跟蹤程式的不可靠

,進而導致了大量軋機的質量異常。

分析發現是改動造成,只好灰溜溜地改回去。

感想

所以,工業控制系統,有時候你看著裡面漏洞很多,但是,你又不能輕易修改,因為那些是經過很多專家修改、工業生產驗證過能用的東西(可能不是最優的東西),那些明顯的問題沒有被修改,很可能有原因,

要承認:他們不比我們笨,我們不一定比他們聰明。後來人的優勢是

:隨著技術的發展,原來沒有辦法解決的,可能現在能解決了。我們只要能把新技術應用進去,也許就能帶來系統性能的提升,當然,有時候也未必。

從這個角度看,

能把軋機系統順利調試出來的人,都值得工控人去膜拜,

上世紀九十年代,ABB的某外聘專家調出了某軋機的頭尾壁厚控制功能,他一直被我們尊重和惦記。某自動化公司的小姐姐某盈枚在某軋線改造中,創造了一次軋製成功的奇蹟,奠定了她在公司的地位。我聽聞後,也非常敬仰,見到她時,必須立即讓座!

大系統如此,小系統就可以隨意了嗎?

稍不注意,也會啪啪打臉,舉幾個小例子。

關於水系統的除錯

最近,某水系統的Profibus-DP網路不穩定,現場遠端站點頻繁故障,由於該水系統為某鍊鋼系統供水,因此,不允許隨時停機。

為了防止站點故障導致的停泵事故,原程式設計了一個液位連鎖切除的功能

,一旦檢測到站點故障,則立即切除液位連鎖,但是,操作人員需要及時發現該情況,並手動處理,在網路恢復後,手動投入液位連鎖,否則,也可能導致補水問題,而跳泵。不管怎樣,這種連鎖,確實能避免立即跳泵,贏得一些處理時間。

最近

由於故障頻發,為了減輕操作人員的負擔

,現場人員提出,如果是短時間的網路故障(前期看下來都是低於2s),

能否不切除連鎖?

這樣在站點恢復後,還是會自動恢復原狀態的。大家一想,好事呀,好像也沒有什麼不良反應,於是,欣欣然,

立即增加了3s的濾波

系統非常穩定,所有程式碼“立正”不要亂動

不曾想,後來,

竟然出現了兩次網路故障後的跳泵事故

,對於產線的影響著實不小。大家就傻掉了,怎麼都想不通,開始四處懷疑(系統有兩個液位訊號的連鎖,怎麼還會跳泵?)。

我仔細分析了泵的保護邏輯,發現

:在出現網路故障時,這兩個液位訊號(一個開關量,一個模擬量)都會出0,然後延時1s後跳泵。原來的設計裡,網路故障出現後,會在1s內切除液位連鎖,遮蔽掉跳泵訊號。但是,我們為切除連鎖增加3s的延時後,液位連鎖訊號就其了作用。最後,

將跳泵延時從1s修改為5s,才比較完美地解決該問題。

從下圖可以看出,訊號的變化與網路故障的變化是同步的,由於不同的泵組對於開關量的液位訊號採用了不同的邏輯,這也導致了有的泵組會跳,有的泵組沒有跳。至於為什麼會這樣設計?

大家也是面面相覷,不知道原設計的玄機

,而不敢亂改。

系統非常穩定,所有程式碼“立正”不要亂動

關於水系統的升級

再舉一個小例子,某水系統的PLC升級,對應的畫面也進行升級。由於是軟硬體都是同品牌,因此,相容性還是不錯的,只要照原來的程式進行修改,基本就可以執行。設計單位自認為沒有壓力,不可能出錯呀。但是,除錯時,

還是發現了一些問題:

某裝置不動作,一路查上來,發現PLC板卡沒有輸出到櫃內端子,仔細檢查,才發現轉換底座搞錯了,

把DI的底座用在DO上

(前面更換時,我們反覆提醒他們核實,他們堅持說,兩人核實過,不會錯);操作某變頻器時,在HMI上找不到輸入位置,設計人員堅持說,原畫面就是這樣,還好有個老師傅堅持說原來肯定有輸入子視窗的,於是開啟原來的系統,才真相大白:

設計人員認為那個子畫面沒有被引用,自信地刪除了

;某裝置的執行反饋在畫面上沒有變化,設計人員說沒有這個點,就準備用輸出命令來替代。我們找來圖紙,告訴他,肯定有這個點。翻出老程式,發現

原來這個點定義為備用,他也選擇性地忽略了

感想

在有完整參照的情況下,尚且會複製走樣,如果是新增一個新功能,不知道還會出多少紕漏呢。這一個個的例子都告訴我們:搞工控,不能過於自信,要低調,儘可能在繼承優秀做法的基礎上,多想想相關專業、多聽聽工藝、操作人員的意見,這樣的控制系統才會越來越完善。