萬泉河
WX:ZHO6371995,歡迎+
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 130 個
工控威望: 246 點
下載積分: 831 分
在線時間: 11(小時)
注冊時間: 2021-06-11
最后登錄: 2024-11-07
查看萬泉河的 主題 / 回貼
樓主  發(fā)表于: 2022-10-10 12:50
1009 【萬泉河】設備參數(shù)值掉電保持實現(xiàn)

這個話題以前探討過多次。但都不徹底。

以前是因為面對的是西門子PORTAL ,F(xiàn)B的每個管腳都可以設置保持。 所以焦點主要在優(yōu)化塊和非優(yōu)化塊,在非優(yōu)化塊對掉電保持資源消耗量大的問題。

而最近在撰寫《三菱PLC標準化編程煙臺方法》的書,這個問題又逐漸抬到前臺來了。我在分發(fā)三菱的標準化示范項目資料的時候, 跟學員就直接坦誠, 這一塊的問題我沒有解決,留著等需要的時候再大家一起努力想辦法找到解決方案。

這都好幾年過去了,上周借著寫書的機會,溫習了一部分內容,就跟學員們做了一次講座。 講座之余,問起學員們這個問題,他們在實際項目中如何解決的。 有幾個老學員,自己標準化應用已經(jīng)很熟練了,回答我還是FB管腳綁鎖存區(qū)的軟元件數(shù)據(jù)來實現(xiàn)的。

這種是最原始的,工作量最大的方法。 等于他們也同樣對這個問題沒有解決,等于是暫時擱置了。面向未來,擱置爭議,這在政治上是政治智慧,在技術上也是一種智慧。

當然,也可能他們自身對這一點并不太重視,不覺得有痛點。百分之九十的痛點都解決了,都爽到了, 還有一點點固有的不爽, 也無足輕重了。

然而對我這種偏執(zhí)狂則不行的。 當然啦,我是煙臺方法的奠基者,我當然有責任盡可能把一切都做好,做到盡善盡美。 都能給出完美的解決方案。

于是,花了點時間重新研究了下,做了實現(xiàn)。 有近3年多的新技能的積累,理解力和方法又深了一層,實現(xiàn)起來就容易多了,方向也清晰多了。

從頭來描述這個問題。

對于一臺設備,一個設定參數(shù),在PLC中本質上是FB的一個管腳。 這個管腳會連接到HMI的變量,即可以對這個參數(shù)的設定修改。

那么這個數(shù)值會有多個側面,分別是當前值,存儲值和出廠初始值。

當前值即在線運行使用的參數(shù)值。 如果是稱重系統(tǒng), 則是稱重目標值,如果是溫度控制系統(tǒng), 會是溫度的給定值。 然而會要求這個數(shù)值在萬一系統(tǒng)掉電之后重新恢復后不要丟。要盡可能和掉電之前的運行值相同,至少不能全丟了,導致工廠要恢復生產(chǎn)還需要忙上大半天去逐個參數(shù)進行修改。

當然,如果HMI支持配方存儲功能,可以將所有參數(shù)儲存為配方,通過配方下發(fā)批量完成所有參數(shù)的恢復。 但這里講不依賴HMI,也不依賴人工操作,僅在PLC功能就能自動保存記憶的情況下。

另外還有一個值是出廠初始值,即如果恢復工廠設置, 比如換了CPU, 程序重新下載,那么將源程序重新下載到CPU之后,系統(tǒng)也應該有一套基本的接近靠譜的設定參數(shù),而不是全部參數(shù)都是0。即便需要針對當下的生產(chǎn)工藝對參數(shù)做一定的更新, 也不至于一上來系統(tǒng)就是癱瘓的,完全不能跑。

所以就是寫在程序中的,也必須有一套數(shù)值。

我以前有討論過INPUT管腳又要有固定數(shù)值,又要能修改,這是不可能實現(xiàn)的。 那么我們現(xiàn)在應該知道了, 最好的方式是設置兩套管腳,固定值用于賦值初始值,而與HMI接口的是另一套管腳,且單獨實現(xiàn)掉電保持的問題。

即便在S7-1500的FB中,其實也存在這個問題。 它的FB的管腳雖說有一個初始值,但這個初始值是專屬于FB的,即各實例的IDB得到的初始值都相同。而不會給每個實例都預留好不同的初始值。 如果要針對每個實例修改, 還需要逐個打開IDB進行修改。其實也很麻煩。

現(xiàn)在的解決思路是, 制作一個專用的SETSAVE的塊,在工藝塊內部來調用它, 工藝塊需要保存的參數(shù)有多少個,就調用多少次。SETSAVE塊內部,為這些參數(shù)分配存儲區(qū)域位置。分配后只實現(xiàn)數(shù)據(jù)保存和調用,但具體的位置在哪里, 不需要知道。

而在工藝塊FB的管腳就有2套同樣的管腳,分別用于存放初始值和運行設定值,運行設定值對接HMI,接受修改。

SETSAVE塊實現(xiàn)的功能:
1,    首次上電,將出廠值送給運行值和保存值。
2,    首次上電之外的每次掉電后的重新上電,將保存值恢復到運行值。
3,    每個周期隨時隨地,或判斷有修改后,將運行值存儲到保存值。

比如有一個WTING塊,給定參數(shù)打包放在UDT中, 分別為SP1, SP2, SP3:

標簽    數(shù)據(jù)類型        注釋
SP1    FLOAT (Single Precision)        
SP2    FLOAT (Single Precision)        
SP3    FLOAT (Single Precision)        
            

而出廠值則為3個單獨的管腳,分別為W1,W2,W3:

類    標簽    數(shù)據(jù)類型
VAR_INPUT    W1    FLOAT (Single Precision)
VAR_INPUT    W2    FLOAT (Single Precision)
VAR_INPUT    W3    FLOAT (Single Precision)
VAR_IN_OUT    UU    U01_RECP

  最后一個UDT則為上述打包的給定參數(shù)。
程序中開始部分的實現(xiàn)則為:
SETSAVE_1(DATA0:=W1 ,RUNDATA:= UU.SP1 );

SETSAVE_1(DATA0:=W2 ,RUNDATA:= UU.SP2 );

SETSAVE_1(DATA0:=W3 ,RUNDATA:= UU.SP3 );

其后為正式程序。

即實現(xiàn)了需要的功能。

把功能需求和實現(xiàn)思路梳理清楚后,實現(xiàn)過程其實是比較簡單的。 任何有一定功底的PLC工程師都可以自己完成。 就像我曾經(jīng)提出的中央報警指示燈的實現(xiàn)思路,同一天內, 有2個網(wǎng)友,非學員,來問我當初文章的題目。他們只是記得這回事,但文章題目不記得了。 我給了提示后他們找到了文章,也是不到半天,就紛紛告捷大功告成了。

這個函數(shù)塊,也是一樣, 只給思路, 不分發(fā)具體的程序邏輯實現(xiàn)方法。 我是為了完成書中的內容, 在三菱GX2系統(tǒng),F(xiàn)X3U下實現(xiàn)的。 三菱標準化學習營的學員如果需要,可以跟我索取。 未來可能可以在書中見到一部分源代碼。

其他的品牌平臺的學員, 以及只購買了打印版三菱源程序的非正式學員, 不提供。

S7-1500系統(tǒng)下,我還沒想清楚是否有必要這么做。 而SMART系統(tǒng),因為V區(qū)掉電本來就會保持7天,所以一直以來需求不強烈。但將來有需要的話我會考慮移植到SMART 200中同樣實現(xiàn)。

但三菱學員即便得到這個程序,也只是提供思路和實現(xiàn)途徑,本人并不負責代碼的完整正確。 真的要應用到工程中, 還需要每個人自己去把關驗證。

所以,我其實并不負責所有代碼的正確。我之所以不愿意隨意分享后開發(fā)的源代碼,也是出于這方面的考慮。 煙臺方法,給人的只是編程思想和架構。我給的有源代碼的項目程序,也只是保證用于我自己的工程現(xiàn)場,是原汁原味完整好用的,但并不保證可以直接拿去套用到學員自己的行業(yè)項目。

所以, 總有人在造謠宣揚煙臺方法的程序中有bug。 其實是很愚蠢可笑的。我都沒有這樣的責任和義務, 何來的bug? 有沒有bug是我跟我自己的客戶之間的事,我的設備在現(xiàn)場運行幾百套,即便有bug哭的是我自己,別人操的哪門子心?

不過真正的煙臺方法的學員,當然都是懂這些的。從來都是我催促他們往前走,而從沒有人在我后面挑出來什么所謂的bug。