萬泉河
WX:ZHO6371995,歡迎+
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 129 個
工控威望: 245 點
下載積分: 829 分
在線時間: 11(小時)
注冊時間: 2021-06-11
最后登錄: 2024-09-08
查看萬泉河的 主題 / 回貼
樓主  發(fā)表于: 2023-03-14 15:52
0313 【萬泉河】萬老師手把手帶你抄PLC程序

前面寫了一篇文章《0304 【萬泉河】 我把LBP的功能塊解耦了》,講解了把LBP的一個MOTOR塊一分為二解耦成2個單獨的塊的過程方法和意義。

然后有人就在后面酸溜溜的評論道:情商高的說法把抄說成了解耦。

意思就是瞧不上我這種公然抄和借用別人的現(xiàn)成的庫函數(shù)方法,并大行其道的宣傳。

我簡直被這種價值觀給驚訝到了。 我這兒還巴拉巴拉地介紹開源,幻想工控行業(yè)也會有繁盛開源的那一天呢!哪想到同行之中還有另一派完全公然相反的價值觀在運行。

先這么說吧,我們現(xiàn)在的技術(shù)觀點,講究的是不自己重新發(fā)明輪子。所以,如果你在十幾年前從每一個工程項目都從啟保停開始寫PLC程序,WINCC程序每個人都要從頭研究窗口彈出,變量前綴,以實現(xiàn)子窗口功能的話, 還有情可原。 畢竟那個時候自動化行業(yè)的發(fā)展成熟程度還不夠。

而十幾年后的今天, 你仍然十幾年如一日做著同樣的工作,技術(shù)已經(jīng)發(fā)展到如此成熟,網(wǎng)絡(luò)資源如此唾手可得的情況下,還在沿用老的工作方式,那可想而知其中的工作效率有多低,做出來的效果有多土了。

十幾年前我們的工資幾千塊錢, 那么到今天,除卻物價增長因素,你的工資也還仍然應(yīng)該停留在幾千元。沒有創(chuàng)造更多的效益,憑什么就要拿到更高的收入呢?

所以,這個行業(yè)需要達成的一個基本的共識是, 要想效率高,收入高,就要學(xué)會如何充分利用已有輪子,免費或者付費,在已有的輪子的基礎(chǔ)上,快速實現(xiàn)應(yīng)用,以充分發(fā)揮自己的優(yōu)勢。

這也是隔壁IT行業(yè)早就在踐行的基礎(chǔ)。

也是我為啥明知這個行業(yè)的大多數(shù)人當(dāng)下并不理解和接受LBP, 明知道做了也不會產(chǎn)生什么效益,明知道其中的困難難度極大,卻仍然要獨自前行闖出一條路來把LBP的接口方法移植拓展到更多平臺的原因。

同時,有領(lǐng)導(dǎo)批評我做著西門子HMI版區(qū)的版主,近來對HMI和WINCC的技術(shù)卻關(guān)心很少,貌似精力全放到PLC去了。 通過本文通過LBP,可以看到,當(dāng)工控技術(shù)發(fā)展到一定的層級, PLC和HMI的工作一定是同步的,甚至在PLC中做的大量工作都是在給HMI做數(shù)據(jù)準(zhǔn)備。 離開了PLC工作的標(biāo)準(zhǔn)化,HMI上的標(biāo)準(zhǔn)化根本無從談起。

在對LBP_MTR解耦并實現(xiàn)移植應(yīng)用之后,我下一個庫函數(shù)的目標(biāo)便盯上了INTLK8函數(shù)。先用同樣的方法解耦成2個模塊,然后再一步步分別移植到SMART 200和KTP 觸摸屏以及將來更多的拓展方向。

先解釋下INTLK8這個庫函數(shù)的功能。我在做LBP移植五期講座的時候,這里只是隨口提了一下,就越過去了,相應(yīng)的功能因為比較復(fù)雜,而且用的場合不多,就建議簡單刪掉算事了。所以這里仔細講一下, 學(xué)員們通過看文章充分了解后,需要的話那部分功能還可以再拾起來。

我在前一本書《PLC標(biāo)準(zhǔn)化編程原理和方法》中P161頁提到過,BST庫中有一個可視化聯(lián)鎖功能,BST_ILOCK (FB651) 。然而在BST中時有時無,曾經(jīng)在S7-400的版本中有過,但到了PORTAL版本中給取消了。 所以我們在做PORTAL項目時,需要用到的時候,還是從S7-400中參考移植過來的。

邏輯其實很簡單,就是對多個管腳的取與AND或OR邏輯計算,得到的結(jié)果可以用于對電機閥門等設(shè)備的啟動條件連鎖等功能。

但通過一個專用的FB,實現(xiàn)了在上位機的可視化管理,操作人員可以在設(shè)備故障不能啟動時,通過上位界面,詳細了解運行條件的滿足和缺失情況。 所以可以認(rèn)為整個FB本質(zhì)上是為HMI顯示服務(wù)的。 否則僅僅為了邏輯功能,在PLC中做與(串聯(lián))、或(并聯(lián))的梯形圖邏輯都是一句話的事,不需要什么功能塊。

有一些行業(yè),要求觸摸屏和上位機有跳轉(zhuǎn)到PLC中查看梯形圖邏輯的功能。有極少數(shù)的控制系統(tǒng)搭配其自家的觸摸屏,通過一些特殊的插件,可以實現(xiàn)。 然而本質(zhì)上說,客戶要的并不是在觸摸屏上能翻閱所有控制邏輯,就是希望能可視化的看到重要設(shè)備的啟動條件而已。 所以這種連鎖功能的可視化就可以實現(xiàn)這樣的功能。

這個功能在蟄伏了數(shù)年之后,在LBP中重新出現(xiàn)了,名字叫做LBP_INTLK8,望文生義,可以最多控制8個輸入條件。如果再多,可以多次調(diào)用來實現(xiàn)。

而LBP_INTLK8比BST_ILOCK先進的地方在于,原本BST中的邏輯條件只能集體統(tǒng)一選擇AND 或者OR, 每個管腳之間并不能單獨選擇。而INTLK8實現(xiàn)了每個管腳都可以分配不同的邏輯,包括:
1=OR,2=AND , 3= OR NOT, 4=AND NOT。
以及0=無效。
由此,通過一個標(biāo)準(zhǔn)化的模塊可以實現(xiàn)更豐富的邏輯條件,及其可視化。

有了這樣的功能,一個系統(tǒng)中,最重要的主機部分的啟動條件前面都可以通過這樣的可視化條件接入。然后在觸摸屏上就可以實現(xiàn)可視化監(jiān)控管理了。比起設(shè)計的程序只能讓設(shè)備運轉(zhuǎn)起來,運轉(zhuǎn)不起來時則需要用戶翻說明書,或者打服務(wù)電話咨詢,都要友好和便捷的多了。那么同比之下,這樣的設(shè)備就更容易被客戶接受,也更容易賣上高價值。


在S7-1200和TP900觸摸屏中的實現(xiàn)毫無難度,與普通的LBP模塊基本相同。 解耦方法也相同。

然而在TP觸摸屏中,動畫的實現(xiàn)方法是通過腳本程序?qū)崿F(xiàn)的。 通過PLC送來的一個2S脈沖變量,變量的變化事件中執(zhí)行腳本,將FB的狀態(tài)字解碼后經(jīng)過邏輯計算,來設(shè)置畫面中邏輯結(jié)果的顯示和顏色切換。
Function LBP_Intlk8()


End Function

然而,我們的最終目標(biāo)是沒有腳本功能的如KTP這樣的觸摸屏,那么這些邏輯只能先在PLC中計算完成,得到畫面元素各自的狀態(tài)位數(shù)據(jù),然后觸摸屏方僅用于顯示。

所以對庫函數(shù)塊做了改造,增加了2個DWORD , VIS1和VIS2 , 不超過64個Bit可以完整表達。

在S7-1200的程序中增加的邏輯:
REGION 增加的觸摸屏顯示的邏輯圖

    
    
END_REGION
程序中注釋的部分是原本的觸摸屏中的腳本,為了對照移植,我把源程序復(fù)制過來了!
然后,觸摸屏畫面中,每一根線條和畫面元素,都增加了顏色切換和動態(tài)顯示的動畫功能,綁定增加的VIS變量的位。實現(xiàn)了同樣的功能。

得益于LBP原作者的細心,每一根線條都有精心起的名字, 如poly0To7On,poly2To0On等,盡管我并沒有完全讀懂其名稱含義,但在對照上面的程序基礎(chǔ)上,還是很順利實現(xiàn)了畫面的改進。只要自己不粗心的錯誤,功能總可以完整復(fù)制的。 這就是移植,也同樣是抄。

在完整實現(xiàn)功能后,把觸摸屏降格為KTP,仍舊連接S7-1200,然后發(fā)現(xiàn),KTP的畫面中除了不支持腳本,不支持模板對象之外,還不支持多線!所以畫面中的所有線條, 又重新用單線繪制。 原本的多線的顯示條件,復(fù)制到多個線段。工作量之大,導(dǎo)致我都暗自抱怨,如果早發(fā)現(xiàn)其不支持單線,就不做這個塊的移植了。但路走都走了,也還好沒有項目工期壓力,頂多多花點時間而已。

同樣的在PLC程序中,也先在SMART 200中實現(xiàn)同樣的邏輯,包括INTLK8完整的邏輯,解耦之后分為801和802。

也還好做了解耦,用2個塊來實現(xiàn),否則SMART 200的子程序塊的管腳數(shù)量和內(nèi)部TEMP變量全都不夠用。 這樣靠2個塊,共同協(xié)作,才算完成了所有需要的功能。當(dāng)然,前者801主要處理邏輯和狀態(tài)位顯示的計算。而802則是處理與多觸摸屏的數(shù)據(jù)交換管理。
摘錄一段801中的程序邏輯:

注釋中我把從觸摸屏到PORTAL的程序,又當(dāng)作注釋全部搬過來了,只為了方便抄和查錯驗證。

LBP原本的身份識別是在觸摸屏上拼接字符完成的,比如對MTR-0001的連鎖,則拼接成MTR-0001LockOn,PLC程序中相應(yīng)的連鎖對應(yīng)這樣的標(biāo)識,由此實現(xiàn)了ID身份識別。而同樣因為KTP不支持腳本功能,所以我又增加了EXT管腳,用于單獨識別觸摸屏數(shù)據(jù)管理。所以,即便是抄,也不是把腦子關(guān)上不動腦子就能抄成的。

INTLK塊的名稱雖然是為LOCK功能的,其實也還可以用于允許啟動的功能。 即在LOCK的結(jié)果為1的時候,設(shè)備禁止啟動,而倒過來當(dāng)用于允許啟動條件的時候,結(jié)果為1時,設(shè)備才允許啟動,對應(yīng)了MTR塊的RELEASE管腳。我現(xiàn)在才明白這個管腳的功能含義。其實相當(dāng)于我們國內(nèi)行業(yè)常對應(yīng)的備妥或者以前稱作READY的管腳。

即,符合了我在標(biāo)準(zhǔn)化書和講座中所要求的,設(shè)備的耦合邏輯要追求極致的簡化,允許啟動和互鎖,需要分到不同的管腳中。 而不要因為取反的邏輯很簡單,就混淆在一起。 煙臺方法的學(xué)員們對這一點會理解更深刻。

在可視化界面上, LOCK和RELEASE需要的顯示顏色是不同的。比如LOCK時顏色需要為黃色或者紅色,而允許啟動的顏色會是綠色。所以其庫功能還包含了對顏色的選擇設(shè)定。主要是由HMI腳本實現(xiàn)的。而這些如果同樣增加到PLC程序中,導(dǎo)致PLC中變量數(shù)量激增,邏輯也更為復(fù)雜,所以暫時就做了功能簡化。未來,需要的時候再另外想辦法實現(xiàn)。 比如黃和綠兩套顏色機制可以分在2套不同的畫面中實現(xiàn)。

另外,庫函數(shù)原始功能還包含了操作員的動態(tài)編程功能,可以在運行中修改邏輯和描述文本。也是出于PLC中資源限制的原因,做了刪減。 我還是認(rèn)為,顯示的意義比操作要大多了。
  
由此,總結(jié)下移植(手抄)這個INTLK8塊的實現(xiàn)路線:
1,    S7-1200 + TP900
2,    S7-1200 (加邏輯)   +  TP900(去邏輯)
3,    S7-1200    +  TP900 單線條
4,    S7-1200 + KTP900
5,    SMART 200 + TP900
6,    SMART 200 + KTP900
通過逐步實現(xiàn), 逐步對照比較,發(fā)現(xiàn)其中的錯誤和疏忽,逐步修訂,最終實現(xiàn)了想要的功能。 在移植過程中, 我甚至用兩臺電腦分別運行觸摸屏仿真,分別監(jiān)控S7-1200和SMART200, PLC之間的輸入信號為了同步一致,還做了通訊,最終調(diào)試成功。

這個過程證明了,在未完全讀懂原始邏輯的情況下通過漸進的每次僅一小步的移植,最終也可以實現(xiàn)功能移植。

雖然麻煩,總比自己從頭規(guī)劃設(shè)計一套完整的功能,要省力方便的多。

所以,哪怕迫不得已需要自己造輪子,也盡量參考已有的輪子。

這才是科技進步,這才是工業(yè)化。


附件: 0313 【萬泉河】萬老師手把手帶你抄PLC程序.pdf (341 K) 下載次數(shù):236
網(wǎng)站提示: 請不要用迅雷下載附件,容易出錯
本帖最近評分記錄:
  • 下載積分:+2(songyumosd) 好貼好貼!
    shhjs123
    級別: 探索解密
    精華主題: 0
    發(fā)帖數(shù)量: 20 個
    工控威望: 123 點
    下載積分: 2722 分
    在線時間: 7(小時)
    注冊時間: 2020-12-17
    最后登錄: 2023-09-26
    查看shhjs123的 主題 / 回貼
    1樓  發(fā)表于: 2023-03-14 18:08
    這東西不錯,下載學(xué)習(xí)學(xué)習(xí)!
    加勒比海帶
    級別: 論壇先鋒
    精華主題: 0
    發(fā)帖數(shù)量: 2272 個
    工控威望: 1837 點
    下載積分: 6902 分
    在線時間: 64(小時)
    注冊時間: 2021-07-19
    最后登錄: 2024-08-05
    查看加勒比海帶的 主題 / 回貼
    2樓  發(fā)表于: 2023-03-15 16:45
    下載學(xué)習(xí)