下面是XXX工程師的感受分享,可以作為參考!
1、指令分為單掃描周期指令和多掃描周期指令。對于多掃描周期指令,如果EN或者REQ只使能一個掃描周期,該指令不能成功執行;例如大多數的通信指令;
2、FB塊的輸入輸出形參存儲于背景數據塊中,在調用該FB時實參可選;而FC塊的輸入輸出是臨時內存,必須指定實參才能運行;
3、FB塊的輸入輸出雖不是靜態變量,但亦有保持功能,具體視程序而定;
4、注意變量被多次賦值時的先后順序!因為變量的值總會被最后執行動作更新,前面的值將被覆蓋;例如下圖:
程序初衷為當接受響應完成時ERR置位,或響應超時ERR置位。上述程序是可以完成正常功能的;但若二者互換,如下圖:
接收超時時,ERR不會置位,因為rev_done為0,ERR被復位!
5、STEP 7中的梯形圖操作數、能流的監控特征色(藍綠)、以及監控表中的布爾變量的刷新頻率有限,可能不能反映真實的實時運行狀況,可借助一個累加器來監視程序的運行狀態;例如下圖:
6、單個掃描周期中,一個布爾變量的上升/下降沿只能讀取一次;因為讀取一次之后,其Pre變量已被立即刷新,后續的讀取不能成功讀到該變量的狀態變化;
7、數組訪問越界將導致CPU錯誤,ERR燈閃爍;
8、單掃描周期指令的循環操作是在單掃描周期完成的;
9、多使用宏定義,可使程序易讀、方便修改;
10、關于能流:(1)能流流經某個具備EN和ENO的指令,并不一定代表該指令功能執行完成,只代表該掃描周期掃描完成;(2)算數運算、bool變量操作等單掃描周期指令的ENO輸出代表該指令執行完成。
11、FB/FC的EN端將為能流提供掃描通道,EN端斷路,能流無掃描通路,內部變量將不再刷新,即該函數不再執行;當FB/FC的EN端總是使能,Enable輸入斷開,塊內部仍有能流通路,相應變量會被掃描以致刷新;請注意二者區別;例見下圖:
前者FB12內部的變量總會被掃描,而后者在M3.0或DB_Valve.done為1時,內部變量不會被掃描;相應的,前者done變量將被下一掃描周期置0,而后者done置1后將因能流不通不能掃描而自行保持;
-
cpu
+關注
關注
68文章
10825瀏覽量
211150 -
西門子
+關注
關注
93文章
3008瀏覽量
115637 -
編程
+關注
關注
88文章
3592瀏覽量
93596
原文標題:關于西門子1200/1500PLC的一些編程技巧
文章出處:【微信號:xue_PLC,微信公眾號:PLC技術圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論