回覆列表
  • 1 # 控制研究控

    這個問題有點意思,不知道你的目的是故意為了讓程式複雜化麼?還是有其他考量?

    梯形圖程式設計,就說完全不用指標定址這些,也不用迴圈指令,西門子300PLC中,遇到複雜的工況,比如說單個裝置的控制比較複雜,而且一個專案中有幾個以上的這樣的裝置,他們之間相互有聯鎖,相互有步驟限制的話,就可能使你的單個程式塊中的程式行,在幾百行以上。

    如果遇到這種單個塊都是幾百行的,且每行都不是簡單的重複功能的話,保證你完全看明白,要幾個小時。且不說一個專案中可能有多個這樣幾百行的程式塊。當然這種專案的點數一般都上點,所以說程式的複雜性,最終還是取決於工況的複雜性,以及控制要求的複雜性,當然點數多的話,計時簡單也會使得專案程式比較多。最終的結果就是程式塊,程式行都會比較多,這樣程式就比較複雜了。

    如果你想人為的設定一些複雜性,那麼就要多用SFC20這樣的批次資料的處理命令;或者將比如一個閥門的控制塊做成能夠適應各種閥門的功能塊,然後在不同的閥門使用時候給予不同的實際引數,甚至不同的閥門很多的功能塊的管腳都不被使用。比如閥門這個,如果某人想看明白你這個程式,那麼就需要將每個管腳都搞清楚,但是結果發現很多管腳其實是不是給這種閥門服務的,這樣就增加了閱讀者的難度。如果多遇到幾個這樣的塊,無心研究的人,也就會作罷了!

    來看一下我說的SFC20,在很多比較複雜的程式中,應該都會使用到這個塊!

    這個塊是實現把DB1中 DBB0-DBB1999這樣2000個位元組的內容複製到DBB3000-DBB4999中的2000個位元組中去,2000個位元組的資料內容,就這樣一個塊就複製過去了。比如你要查詢DB1.DBD3500這個變數的時候,你在程式中搜索的話,是不能搜尋到的,就只能透過交叉索引,看到原來這個DBD3500是被SFC20批次複製來的,然後就要去看DB1.DBD500中的值是從哪裡來的,如果DB1.DBD500中的值也是被整段傳送過來的,那麼就需要繼續向上尋找,有時候查詢一個點,開4-5個程式塊,也是很平常的事情。

    其實,程式設計還是越簡單越好的,這樣你自己後續維護起來也簡單,甲乙雙方都節約時間,因為有些工況本來就比較複雜了,你再故意的弄一些障礙,這個程式就可能變成只有你一個人看得懂的程式了,所以我個人不提倡,因為一個人一年能做多少專案,又有多少專案是你寫的程式別人去除錯的,所以大家都越簡單越好!

  • 中秋節和大豐收的關聯?
  • 有簡單點的辦法預防癌症嗎?