不管什麼品牌的PLC,使用下面的方式來進行邏輯控制順序控制,都是非常好的一種編程方法。既方便監控又可以随意跳轉到哪一步。請改變一下我們的編程思維好麼?我看那些人的所謂步進指令,還有大量的置位複位指令,非常不好閱讀,也不好檢查和更改。下面貼出利用三菱軟件的編程圖,其它品牌都一樣可以采用(西門子更是如此)。
其實這就是ST編程裡的ST語言的CASE語句的梯形圖轉換。
所以很多人說什麼ST語言隻适用于計算,不适用于邏輯控制什麼的,我就呵呵了。ST語言也一樣适用于邏輯控制,隻是看各位編程人員擅長于使用哪種編程語言了。下面再貼出上述編程方式的ST語言下的控制:
下面是監視的過程:
這和梯形圖下的順序控制方式是一樣的。
這種控制方式比那些所謂的置位複位要方便很多。建議從日系編程學習入門的朋友轉變一下思維,摒棄那種編程方式!
看看網友的讨論:
莫頭腦 said:
我看那些人的所謂步進指令,還有大量的置位複位指令,非常不好閱讀也不好檢查和更改 那他們的程序是否正常運行……
965528555 said:
正常運行是一回事,是否更具有閱讀性或者說,是否願意接受更好的表達方式那是另一回事。
1530694073 said:
我表示歐美系都是不步進順序邏輯,可讀性很強
cvlsam said:
真正的日系編程思維是這樣的,當然譯碼編碼指令其他PLC廠牌中也有。
D500就是顯示運行到哪一步,M寄存器還可以在人機界面上做個跑馬燈演示。
Good Luck~
gk_0 said:
我覺得置位複位挺好用的呀,也很直觀呢。
樓主例子中大量使用比較、運算指令,如果幾千步以上,那麼掃描時間是否會比位指令長很多呢?
965528555 said:
這裡首先我們明白一個問題,即不管你的程序是多少步,PLC的掃描永遠是從程序的首端掃描到END,這個過程是一樣的。
而PLC在掃描某一行時,通過你所說的比較運算指令即可判斷該行是否成立從而是否繼續掃描該行後面,反而可以節省時間,即該條件不滿足就可以跳到下一個。而置位複位則不一樣了,每行都得掃描完才能下一個。
其實是更節省PLC的掃描時間,比如CASE語句,第一行就會判斷Step等于幾,然後就直接跳到等于幾的那行去掃描了。假如是一萬步十萬步,這中間就節省了非常多的掃描時間,但是置位複位就沒這優勢了。必須逐行掃描以免錯過任何一個。
bnnyygy said:
一直都是這樣寫順序控制的。
歐姆龍ST語音寫的,E文不好,變量都是中文。
965528555 said:
非常好,也感謝分享。但是建議最好是使用CASE語句來寫你這個程序部分,而不是大量的IF語句。
273708367 said:
感覺越複雜可讀性越差,掃描周期也越長,每個人習慣不同改變也不是一朝一夕了。
chi1225 said:
每一步前面都要搞一個比較指令,感覺不好看,指令占的空間又大,發現還是用DECO(解碼指令)比較好。。
965528555 said:
那是因為三菱的軟件一顯示注釋就顯得大,而且一個比較指令占用的空間長,将近三四列,西門子根本不存在這個問題,人家的一個比較指令就占用一列。
MIC小賴 said:
這個模式從06年的台灣東捷的機台上就已經看到了,目前我們這動作部分管控基本都是這樣寫的。
965528555 said:
有一種論調很不好,即“我們都習慣那麼久了,改變不是容易的事,要麼就是你說的也不好用,雖然我沒用過但肯定不好用”。
這樣想法不太好,之前我也是從日系入門學習的。後來我一學習西門子的時候我也是内心抵制它,一點也不好學,思想轉不過彎來,不好用。後來我想我還是去熟悉它我才好判斷它到底是不是好用,如果我熟悉它了它确實不好用我就舍棄它,用我認為好用的。
結果經過我的比較,發現西門子的PLC确實好用,那麼我就接受它。
就文中所說的編程方法來說,我之前也是采用什麼置位複位的方式,後來我看到國外的人是這樣寫,包括西門子博途軟件的官方庫寫法,我覺得我可以先接受它然後運用一下,來寫個實例,看是不是更方便,如果是,我接受,如果不是,我就舍棄。
有一次有朋友說西門子的觸摸屏或WINCC的畫面編輯用面闆技術在某些場合非常方便。于是我就去了解它,當我學習并用面闆技術做了一個HMI面面(比如現場十套控制幾乎相同的過程畫面),我覺得确實不錯,那麼我就去接受它。
所以如果在工作中有一種别人推薦你而你沒有使用過的方式方法,請不要先拒絕,拿你那些老習慣來安慰自己來躲避。應該先嘗試一下,然後對比一下,也許你會有所收獲呢?或者說你可以試完了再罵人家這SB,不行啊,還是沒我之前的習慣用法好。
yinguiyao said:
有步進指令的用步進指令,沒有的就用你這個方法,如西門子200 200smart就沒有步進指令。
用步進指令好處是不用考慮時序的問題,同一時間段隻有指定步被掃描,而你這個方法要注意同一掃描周期相鄰兩步不被同時執行,例如在每步都加時間延時或者其它的辦法。
我發過一個貼子,參考:
http://bbs.gkong.com/archive.aspx?id=463847
cvlsam said:
200中有步進指令,隻是中文翻譯成順序繼電器指令了。
同一個掃描周期相鄰兩步并不會同時執行,因為PLC掃描機制決定了順序執行。
西門子中的Graph并不是步進指令,而是順序功能,也就是其他廠牌中的SFC,之所以使用Graph,是因為在西門子的PCS7系統中,還存在SFC編程方式,為了區别,就如同西門子的ST語言翻譯成SCL,因為和其語句表STL容易沖突。
Good Luck~
zhujilucj said:
我大部分用的還是置位複位指令,有少數幾個程序也在用這種方法。這個方法特别适合跳躍分支多的程序。
微信網友也加入讨論:
Electric epoch said:
本人很贊同作者的編程方法,如果是結構化用這種方式會更好
啟海 said:
不管作者的方式是否适合,但是有讨論有比較肯定能進步。
代奇偉said:
我一般寫時序是通過移位指令寫
William said:
我也是用這種方式寫的.CASE語句裡面寫定時器需要注意一些。
耿彪 said:
使用DECO指令完美解決順序控制
優态 said:
st局部運算用還可以,全用閱讀性不好自己都會忘更别說其他人,這東西和高級語言還是有太大差距,好的程序不是有多花裡胡哨,穩定,可閱讀性才是王道。高級語言也是如此。
上虞甯 said:
其實St挺好使,之前不習慣現在戒不掉
呂·D·Will said:
case寫流程很好,但是在日系個别plc裡資源消耗非常大
如果你也想加入讨論,鍊接在此 http://bbs.gkong.com/archive.aspx?id=470284
溫馨提示:本文來源于中華工控網工控論壇(本号)網友和讨論,轉載請注明出處。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!