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